feat: 重构BOM架构,新增基础设置与虚拟工位管理功能

本次重构删除原有BOM物料清单表,改用工单工艺组合×工艺物料清单作为唯一用料来源;新增系统基础设置表支持WMS地址、日志保留天数等配置,新增虚拟工位作业管理后台接口与前端页签控制功能,同时优化工位号校验逻辑、事件日志自动清理与工单用料查询能力。
This commit is contained in:
SunYF
2026-09-23 11:41:28 +08:00
parent d3eda6b588
commit f274da044c
74 changed files with 3637 additions and 5586 deletions
+8 -12
View File
@@ -309,22 +309,18 @@ func (s *Service) BuildBindTrace(ctx context.Context, sn string) (*BindTraceVO,
if err != nil {
return nil, err
}
// 物料组成树:递归展开成品零部件到叶子(不依赖 WMS),让追溯页能展示完整物料组成,
// 避免成品作零部件被引用时只显示上层成品而漏下层料、追溯断链。
// 物料组成:按工单工艺组合×工艺物料清单平铺一层(BOM 已删除,无多级树)
var tree []BindNode
tree = s.expandBindBom(ctx, wo.ProductCode, "", 1, 0, map[string]bool{})
for _, it := range s.WorkOrderUnitUsage(ctx, wo) {
tree = append(tree, BindNode{
MaterialCode: it.MaterialCode, MaterialName: it.MaterialName,
Spec: it.Spec, Unit: it.Unit, ManageMode: it.ManageMode,
Qty: it.UnitQty, Level: 0,
})
}
return &BindTraceVO{Binds: binds, Complete: missing == "", Missing: missing, BomTree: tree}, nil
}
// expandBindBom 递归展开某产品的物料组成树(供追溯页/成品档案展示完整物料构成)。
//
// R12026-09-19):递归骨架统一到 bom_expand.go 的 expandBomTree,与备料算料共用同一份实现;
// 下钻判定由 localBomExistsResolver 注入(本地存在下级清单才继续展开)——不依赖 WMS,
// 保证 WMS 不可达时追溯仍能展示完整物料组成、不断链。
func (s *Service) expandBindBom(ctx context.Context, productCode, bomName string, qty float64, depth int, path map[string]bool) []BindNode {
return bomTreeToBindNodes(s.expandBomTree(ctx, productCode, bomNameOrDefault(bomName), qty, depth, path, s.localBomExistsResolver))
}
// BindRequiredItem 应绑清单条目(工位终端展示引导 + 前端齐套计算)
type BindRequiredItem struct {
MaterialCode string `json:"materialCode"`