feat: 完成产线与仓储系统多模块迭代升级

本次迭代覆盖MES与WMS核心业务:
1. 新增接驳台托盘传感器读取与AGV对接能力
2. 完善工单排产、备料流程与权限体系拆分
3. 优化看板接口与前端路由、样式
4. 新增操作日志、库存盘点与角色保护逻辑
5. 修复代理地址、BOM保存等已知问题
This commit is contained in:
SunYF
2026-09-04 14:18:53 +08:00
parent c1fc6d32b2
commit b6799c9de4
138 changed files with 20613 additions and 2220 deletions
+48 -4
View File
@@ -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)
}
}