feat: 重构BOM架构,新增基础设置与虚拟工位管理功能
本次重构删除原有BOM物料清单表,改用工单工艺组合×工艺物料清单作为唯一用料来源;新增系统基础设置表支持WMS地址、日志保留天数等配置,新增虚拟工位作业管理后台接口与前端页签控制功能,同时优化工位号校验逻辑、事件日志自动清理与工单用料查询能力。
This commit is contained in:
@@ -25,12 +25,12 @@ func (s *Service) Seed(ctx context.Context) error {
|
||||
codes := []string{"*"}
|
||||
if r.code == "OPERATOR" {
|
||||
codes = []string{
|
||||
"produce.workorder", "produce.dailyplan", "produce.bom", "produce.material", "produce.producible",
|
||||
"produce.workorder", "produce.dailyplan", "produce.material", "produce.producible",
|
||||
"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.material:outbound",
|
||||
"produce.workorder:dailyplan", "produce.material:generate", "produce.material:outbound",
|
||||
"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",
|
||||
@@ -74,7 +74,6 @@ 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.producible", "排产支撑", "MENU", "/producible-support"},
|
||||
{"produce.material", "备料单", "MENU", "/material-request"},
|
||||
{"produce.qty", "数量不符处理", "MENU", "/qty-report"},
|
||||
@@ -84,6 +83,9 @@ func (s *Service) Seed(ctx context.Context) error {
|
||||
{"produce.station", "关联工位", "MENU", "/station"}, {"produce.performance", "绩效报表", "MENU", "/performance"},
|
||||
{"produce.dock", "接驳台维护", "MENU", "/dock"},
|
||||
{"produce.trace", "工件追溯", "MENU", "/trace"},
|
||||
// 虚拟工位作业:虚拟工位(如包装等无终端硬件的工位)由人工在 MES 后台(手机/电脑)完成报工,
|
||||
// 给对应账号开通本菜单权限即可使用
|
||||
{"produce.virtualstation", "虚拟工位作业", "MENU", "/virtual-station"},
|
||||
{"produce.wip", "在制品", "MENU", "/wip"},
|
||||
{"produce.processcard", "生产流程卡", "MENU", "/process-card"},
|
||||
{"produce.product", "物料档案", "MENU", "/product-type"},
|
||||
@@ -93,6 +95,8 @@ func (s *Service) Seed(ctx context.Context) error {
|
||||
// sys.rbac(角色权限管理) 已拆分:账号管理 + 角色管理(对齐 WMS 系统管理菜单)
|
||||
{"sys.account", "账号管理", "MENU", "/account"},
|
||||
{"sys.role", "角色管理", "MENU", "/role"},
|
||||
// 基础设置:WMS 地址(热切换)/需求窗口天数/外推参数/事件日志保留天数 + 本机信息展示
|
||||
{"sys.settings", "基础设置", "MENU", "/settings"},
|
||||
// 预警中心 / 附件中心此前只有前端菜单码(MainLayout menuGroups)、权限表未登记,
|
||||
// 导致这两个菜单无法授权给任何角色(只有 SUPER_ADMIN 靠 roleCode 旁路可见),2026-09-19 补齐。
|
||||
{"sys.alert", "预警中心", "MENU", "/alert-center"},
|
||||
@@ -106,6 +110,11 @@ func (s *Service) Seed(ctx context.Context) error {
|
||||
SetCode(m.code).SetName(m.name).SetType(m.typ).SetPath(m.path).Exec(ctx)
|
||||
}
|
||||
|
||||
// BOM 已删除(物料跟着工单走):清理历史「产品物料清单」菜单与按钮权限
|
||||
for _, dead := range []string{"produce.bom", "produce.bom:edit"} {
|
||||
_, _ = s.ctx.EntClient.Permission.Delete().Where(permission.Code(dead)).Exec(ctx)
|
||||
}
|
||||
|
||||
// 3.1 按钮级权限(块2):前端按钮 + 后端接口 双重校验
|
||||
// parent = 所属菜单权限码:每个按钮显式声明挂在哪个菜单下,前端据此组装权限树,
|
||||
// 不再用 code.startsWith(菜单+':') 这类前缀通配推断。
|
||||
@@ -114,7 +123,6 @@ func (s *Service) Seed(ctx context.Context) error {
|
||||
{"produce.workorder:edit", "工单-编辑", "BUTTON", "", "produce.workorder"},
|
||||
{"produce.workorder:delete", "工单-删除", "BUTTON", "", "produce.workorder"},
|
||||
{"produce.workorder:dailyplan", "工单-日排产", "BUTTON", "", "produce.workorder"},
|
||||
{"produce.bom:edit", "物料清单-维护", "BUTTON", "", "produce.bom"},
|
||||
{"produce.material:generate", "备料单-生成", "BUTTON", "", "produce.material"},
|
||||
{"produce.material:outbound", "备料单-自动出库", "BUTTON", "", "produce.material"},
|
||||
{"produce.qty:handle", "数量不符-处理", "BUTTON", "", "produce.qty"},
|
||||
@@ -145,6 +153,7 @@ func (s *Service) Seed(ctx context.Context) error {
|
||||
{"produce.quality:edit", "质量检验-录入/处置", "BUTTON", "", "produce.quality"},
|
||||
// 附件中心(对齐 WMS attachment:manage 口径):删除 + 归档清理
|
||||
{"sys.attachment:manage", "附件-删除/归档清理", "BUTTON", "", "sys.attachment"},
|
||||
{"sys.settings:edit", "基础设置-修改", "BUTTON", "", "sys.settings"},
|
||||
}
|
||||
for _, b := range buttons {
|
||||
exist, err := s.ctx.EntClient.Permission.Query().Where(permission.Code(b.code)).Only(ctx)
|
||||
|
||||
Reference in New Issue
Block a user