chore: 批量完成项目多模块迭代优化
1. 废弃半成品库存表并统一库存主表 2. 修复列表排序与搜索大小写不敏感问题 3. 新增用户最近登录时间、工单BOM名称字段 4. 完善角色管理、工位选择器功能 5. 增加拧紧数据补录、成品自动回流WMS能力 6. 统一导出时间范围校验规则 7. 丰富物料/备料单筛选条件 8. 调整菜单与权限命名适配产品型号业务
This commit is contained in:
@@ -36,13 +36,13 @@ func (s *Service) GenerateMaterialRequest(ctx context.Context, planDate string,
|
||||
if plan.Status == "CANCELLED" || plan.Status == "DONE" {
|
||||
continue // 已取消/已完成的排产不再算料
|
||||
}
|
||||
// 解析工单 → 产品编码 → 该产品 BOM
|
||||
// 解析工单 → 产品编码 → 该工单锁定的 BOM(建单时选定的 bomName)
|
||||
wo, err := s.ctx.EntClient.WorkOrder.Query().
|
||||
Where(workorder.WorkOrderNo(plan.OrderNo)).Only(ctx)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
bom, err := s.ListBom(ctx, wo.ProductCode)
|
||||
bom, err := s.ListBom(ctx, wo.ProductCode, bomNameOrDefault(wo.BomName))
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
@@ -103,9 +103,20 @@ func (s *Service) GenerateMaterialRequest(ctx context.Context, planDate string,
|
||||
|
||||
// ListMaterialRequests 查询备料单
|
||||
func (s *Service) ListMaterialRequests(ctx context.Context, orderNo, planDate, status string) ([]*ent.MaterialRequest, error) {
|
||||
return s.listMaterialRequests(ctx, orderNo, planDate, status, "", "", "")
|
||||
}
|
||||
|
||||
// ListMaterialRequestsFiltered 管理页丰富筛选入口
|
||||
func (s *Service) ListMaterialRequestsFiltered(ctx context.Context, orderNo, planDate, status, materialCode, materialName, targetDock string) ([]*ent.MaterialRequest, error) {
|
||||
return s.listMaterialRequests(ctx, orderNo, planDate, status, materialCode, materialName, targetDock)
|
||||
}
|
||||
|
||||
// listMaterialRequests 备料单查询(2026-09-08 丰富筛选+大小写不敏感)
|
||||
// materialCode/materialName/targetDock 可空;keyword 兜底匹配 备料单号/工单号/物料编码
|
||||
func (s *Service) listMaterialRequests(ctx context.Context, orderNo, planDate, status, materialCode, materialName, targetDock string) ([]*ent.MaterialRequest, error) {
|
||||
q := s.ctx.EntClient.MaterialRequest.Query()
|
||||
if orderNo != "" {
|
||||
q = q.Where(materialrequest.OrderNo(orderNo))
|
||||
q = q.Where(materialrequest.OrderNoEqualFold(orderNo))
|
||||
}
|
||||
if planDate != "" {
|
||||
q = q.Where(materialrequest.PlanDate(planDate))
|
||||
@@ -113,9 +124,19 @@ func (s *Service) ListMaterialRequests(ctx context.Context, orderNo, planDate, s
|
||||
if status != "" {
|
||||
q = q.Where(materialrequest.Status(status))
|
||||
}
|
||||
return q.Order(materialrequest.ByID()).All(ctx)
|
||||
if materialCode != "" {
|
||||
q = q.Where(materialrequest.MaterialCodeContainsFold(materialCode))
|
||||
}
|
||||
if materialName != "" {
|
||||
q = q.Where(materialrequest.MaterialNameContainsFold(materialName))
|
||||
}
|
||||
if targetDock != "" {
|
||||
q = q.Where(materialrequest.TargetDockEqualFold(targetDock))
|
||||
}
|
||||
return q.Order(ent.Desc(materialrequest.FieldCreatedAt), ent.Desc(materialrequest.FieldID)).All(ctx)
|
||||
}
|
||||
|
||||
|
||||
// SetMaterialRequestStatus 推进备料单状态(WMS 下发 AGV DELIVERING / 到位 DONE)
|
||||
func (s *Service) SetMaterialRequestStatus(ctx context.Context, requestNo, status string) error {
|
||||
n, err := s.ctx.EntClient.MaterialRequest.Update().
|
||||
|
||||
Reference in New Issue
Block a user