chore: 批量完成项目多模块迭代优化

1. 废弃半成品库存表并统一库存主表
2. 修复列表排序与搜索大小写不敏感问题
3. 新增用户最近登录时间、工单BOM名称字段
4. 完善角色管理、工位选择器功能
5. 增加拧紧数据补录、成品自动回流WMS能力
6. 统一导出时间范围校验规则
7. 丰富物料/备料单筛选条件
8. 调整菜单与权限命名适配产品型号业务
This commit is contained in:
SunYF
2026-09-08 11:44:04 +08:00
parent 06689970e2
commit e852c7cd37
96 changed files with 4528 additions and 542 deletions
+25 -4
View File
@@ -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().