feat(mes): 添加定时同步可生产数量到WMS及BOM项相关标准字段
- 在main.go中添加定时任务每10分钟同步可生产数量到WMS系统 - 为BomItem实体添加relatedStandard字段及相关CRUD方法 - 为InspectionRecord实体添加reportNo、materialCode、materialName等字段 - 更新ent schema确保新字段的验证和默认值设置 - 添加必要的数据库迁移和字段映射逻辑
This commit is contained in:
@@ -25,20 +25,20 @@ func (s *Service) Seed(ctx context.Context) error {
|
||||
if r.code == "OPERATOR" {
|
||||
codes = []string{
|
||||
"produce.workorder", "produce.dailyplan", "produce.bom", "produce.material", "produce.scan",
|
||||
"produce.trace", "produce.torque", "produce.plc", "produce.product",
|
||||
"produce.trace", "produce.wip", "produce.torque", "produce.plc", "produce.product",
|
||||
"produce.processflow", "produce.station", "produce.performance", "produce.processcard",
|
||||
// 按钮级权限(块2)
|
||||
"produce.workorder:add", "produce.workorder:edit", "produce.workorder:delete",
|
||||
"produce.workorder:dailyplan", "produce.bom:edit", "produce.material:generate",
|
||||
"produce.qtyreport",
|
||||
"produce.qtyreport", "produce.quality", "produce.quality:edit",
|
||||
"produce.plc:send", "produce.product:add", "produce.product:edit", "produce.product:delete",
|
||||
"produce.processflow:add", "produce.processflow:edit", "produce.processflow:delete",
|
||||
"produce.processflow:upload", "produce.station:edit",
|
||||
"produce.processflow:add", "produce.processflow:edit", "produce.processflow:delete",
|
||||
"produce.processflow:upload", "produce.station:edit",
|
||||
}
|
||||
} else if r.code == "INSPECTOR" {
|
||||
codes = []string{"produce.trace", "produce.torque", "produce.performance", "sys.eventlog",
|
||||
codes = []string{"produce.trace", "produce.wip", "produce.torque", "produce.performance", "sys.eventlog",
|
||||
"sys.inspect", "sys.inspect:checkin", "sys.inspect:point", "sys.inspect:process",
|
||||
"sys.inspect:done", "sys.inspect:alarm", "sys.inspect:view"}
|
||||
"sys.inspect:done", "sys.inspect:alarm", "sys.inspect:view", "produce.quality", "produce.quality:edit"}
|
||||
}
|
||||
exist, err := s.ctx.EntClient.Role.Query().Where(role.Code(r.code)).First(ctx)
|
||||
if err != nil {
|
||||
@@ -69,7 +69,7 @@ func (s *Service) Seed(ctx context.Context) error {
|
||||
menus := []struct{ code, name, typ, path string }{
|
||||
{"produce.workorder", "工单管理", "MENU", "/work-order"},
|
||||
{"produce.dailyplan", "日排产", "MENU", "/daily-plan"},
|
||||
{"produce.bom", "物料清单", "MENU", "/bom"},
|
||||
{"produce.bom", "产品物料清单", "MENU", "/bom"},
|
||||
{"produce.material", "备料单", "MENU", "/material-request"},
|
||||
{"produce.plc", "工位组合下发", "MENU", "/plc-send"},
|
||||
{"produce.torque", "拧紧查询", "MENU", "/torque"},
|
||||
@@ -78,9 +78,11 @@ func (s *Service) Seed(ctx context.Context) error {
|
||||
{"produce.performance", "绩效报表", "MENU", "/performance"},
|
||||
{"produce.scan", "手动报工", "MENU", "/scan"},
|
||||
{"produce.trace", "工件追溯", "MENU", "/trace"},
|
||||
{"produce.wip", "在制品", "MENU", "/wip"},
|
||||
{"produce.processcard", "生产流程卡", "MENU", "/process-card"},
|
||||
{"produce.product", "产品型号", "MENU", "/product-type"},
|
||||
{"produce.qtyreport", "数量不符上报", "MENU", "/qty-report"},
|
||||
{"produce.quality", "质量检验", "MENU", "/quality"},
|
||||
{"sys.inspect", "巡检终端", "MENU", "/inspect"},
|
||||
{"sys.eventlog", "操作日志", "MENU", "/event-log"},
|
||||
// sys.rbac(角色权限管理) 已拆分:账号管理 + 角色管理(对齐 WMS 系统管理菜单)
|
||||
@@ -127,6 +129,7 @@ func (s *Service) Seed(ctx context.Context) error {
|
||||
{"sys.inspect:done", "巡检-完工确认", "BUTTON", "", "sys.inspect"},
|
||||
{"sys.inspect:alarm", "巡检-异常上报", "BUTTON", "", "sys.inspect"},
|
||||
{"sys.inspect:view", "巡检-记录查看", "BUTTON", "", "sys.inspect"},
|
||||
{"produce.quality:edit", "质量检验-录入/处置", "BUTTON", "", "produce.quality"},
|
||||
}
|
||||
for _, b := range buttons {
|
||||
exist, err := s.ctx.EntClient.Permission.Query().Where(permission.Code(b.code)).Only(ctx)
|
||||
@@ -177,6 +180,20 @@ func seedFlowsAndStations(ctx context.Context, s *Service) {
|
||||
}
|
||||
_, _ = s.ctx.EntClient.Station.UpdateOneID(st.ID).SetFlowId(flow.ID).Save(ctx)
|
||||
}
|
||||
// 0 号(上线位) / 13 号(下线位) 虚拟工位:OFFLINE 类型,用 PAD 操作,不连 PLC、
|
||||
// 不叫料、不进入产线组合排序;仅做上下线登记,不参与物理工位计数。
|
||||
for _, v := range []struct {
|
||||
no int
|
||||
name string
|
||||
}{
|
||||
{0, "上线位(虚拟)"},
|
||||
{13, "下线位(虚拟)"},
|
||||
} {
|
||||
if _, err := s.ctx.EntClient.Station.Query().Where(station.StationNo(v.no)).First(ctx); err != nil {
|
||||
_, _ = s.ctx.EntClient.Station.Create().
|
||||
SetStationNo(v.no).SetName(v.name).SetStationType("OFFLINE").SetStatus("ENABLED").Save(ctx)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// mergeCodes 合并两份权限码列表(去重、保序)
|
||||
|
||||
Reference in New Issue
Block a user