feat: 完成产线与仓储系统多模块迭代升级
本次迭代覆盖MES与WMS核心业务: 1. 新增接驳台托盘传感器读取与AGV对接能力 2. 完善工单排产、备料流程与权限体系拆分 3. 优化看板接口与前端路由、样式 4. 新增操作日志、库存盘点与角色保护逻辑 5. 修复代理地址、BOM保存等已知问题
This commit is contained in:
@@ -83,7 +83,9 @@ func (s *Service) Seed(ctx context.Context) error {
|
||||
{"produce.product", "产品类型", "MENU", "/product-type"},
|
||||
{"sys.inspect", "巡检终端", "MENU", "/inspect"},
|
||||
{"sys.eventlog", "操作日志", "MENU", "/event-log"},
|
||||
{"sys.rbac", "角色权限管理", "MENU", "/rbac"},
|
||||
// sys.rbac(角色权限管理) 已拆分:账号管理 + 角色管理(对齐 WMS 系统管理菜单)
|
||||
{"sys.account", "账号管理", "MENU", "/account"},
|
||||
{"sys.role", "角色管理", "MENU", "/role"},
|
||||
}
|
||||
for _, m := range menus {
|
||||
if s.ctx.EntClient.Permission.Query().Where(permission.Code(m.code)).ExistX(ctx) {
|
||||
@@ -110,9 +112,13 @@ func (s *Service) Seed(ctx context.Context) error {
|
||||
{"produce.processflow:delete", "工艺流程-删除", "BUTTON", ""},
|
||||
{"produce.processflow:upload", "工艺流程-上传图纸", "BUTTON", ""},
|
||||
{"produce.station:edit", "工位-绑定", "BUTTON", ""},
|
||||
{"sys.rbac:user", "权限-用户", "BUTTON", ""},
|
||||
{"sys.rbac:role", "权限-角色", "BUTTON", ""},
|
||||
{"sys.rbac:perm", "权限-权限码", "BUTTON", ""},
|
||||
{"sys.account:add", "账号-新增", "BUTTON", ""},
|
||||
{"sys.account:edit", "账号-编辑", "BUTTON", ""},
|
||||
{"sys.account:delete", "账号-删除", "BUTTON", ""},
|
||||
{"sys.role:add", "角色-新增", "BUTTON", ""},
|
||||
{"sys.role:edit", "角色-编辑", "BUTTON", ""},
|
||||
{"sys.role:delete", "角色-删除", "BUTTON", ""},
|
||||
{"sys.role:perm", "角色-权限定义", "BUTTON", ""},
|
||||
{"sys.inspect:checkin", "巡检-开工签到", "BUTTON", ""},
|
||||
{"sys.inspect:point", "巡检-工位点检", "BUTTON", ""},
|
||||
{"sys.inspect:process", "巡检-过程巡检", "BUTTON", ""},
|
||||
@@ -128,6 +134,9 @@ func (s *Service) Seed(ctx context.Context) error {
|
||||
SetCode(b.code).SetName(b.name).SetType(b.typ).SetPath(b.path).Exec(ctx)
|
||||
}
|
||||
|
||||
// 3.2 旧版权限码迁移(sys.rbac 家族 → sys.account / sys.role,幂等)
|
||||
migrateLegacySysRbac(ctx, s)
|
||||
|
||||
// 4. 12 个工位默认工艺流程 + 工位绑定(流程挂 process_code,工位绑流程)
|
||||
seedFlowsAndStations(ctx, s)
|
||||
return nil
|
||||
@@ -186,3 +195,38 @@ func mergeCodes(a, b []string) []string {
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
// migrateLegacySysRbac 迁移旧 sys.rbac 家族权限码(幂等,可重复执行):
|
||||
// sys.rbac(角色权限管理) 已拆分为 sys.account(账号管理)+sys.role(角色管理)。
|
||||
// 对存量角色 permissionCodes 做码替换,并删除已废弃的权限定义行。
|
||||
func migrateLegacySysRbac(ctx context.Context, s *Service) {
|
||||
legacyMap := map[string][]string{
|
||||
"sys.rbac": {"sys.account", "sys.role"},
|
||||
"sys.rbac:user": {"sys.account:add", "sys.account:edit", "sys.account:delete"},
|
||||
"sys.rbac:role": {"sys.role:add", "sys.role:edit", "sys.role:delete"},
|
||||
"sys.rbac:perm": {"sys.role:perm"},
|
||||
}
|
||||
// 1) 角色 permissionCodes 替换
|
||||
roleList, _ := s.ctx.EntClient.Role.Query().All(ctx)
|
||||
for _, rl := range roleList {
|
||||
changed := false
|
||||
out := make([]string, 0, len(rl.PermissionCodes))
|
||||
for _, c := range rl.PermissionCodes {
|
||||
if repl, ok := legacyMap[c]; ok {
|
||||
out = append(out, repl...)
|
||||
changed = true
|
||||
continue
|
||||
}
|
||||
out = append(out, c)
|
||||
}
|
||||
if changed {
|
||||
_ = s.ctx.EntClient.Role.UpdateOneID(rl.ID).
|
||||
SetPermissionCodes(mergeCodes(out, nil)).Exec(ctx)
|
||||
}
|
||||
}
|
||||
// 2) 删除旧权限定义行
|
||||
for oldCode := range legacyMap {
|
||||
_, _ = s.ctx.EntClient.Permission.Delete().
|
||||
Where(permission.Code(oldCode)).Exec(ctx)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user