feat&refactor: 完成多模块功能迭代与配置优化
本次提交覆盖多个业务模块的功能完善与体验优化:
1. **鉴权与配置调整**:
- 统一JWT滑动续签逻辑,简化Token存储,移除RefreshToken相关冗余代码
- 调整多项目配置文件中JWT过期时间为3600秒,统一会话闲置窗口
- 工位配置放开1~12限制,改为仅校验大于0
2. **术语统一替换**:全链路将"精密件"替换为"电气件",修正物料管理描述
3. **功能新增**:
- 新增工位类型、工艺路线与产线点位台账模块
- 添加工艺PDF预览面板、工位终端代理转发接口
- 新增操作日志按操作人列表筛选、工位登出日志记录
- 新增PLC移料指令与产线点位状态管理
4. **业务流程优化**:
- 调整BOM物料删除校验逻辑,优化工单备料计算
- 补充物料图号、检测单号等追溯字段
- 完善工艺流程图与工位绑定关系说明
- 优化前端页面文案与交互细节
5. **代码规范与维护**:
- 新增通用工具函数与前端静态资源
- 整理路由权限与中间件逻辑
- 修复部分接口与配置的不兼容问题
This commit is contained in:
@@ -4,10 +4,7 @@ import (
|
||||
"context"
|
||||
"strconv"
|
||||
|
||||
"bj_power_mes/ent"
|
||||
"bj_power_mes/ent/permission"
|
||||
"bj_power_mes/ent/processflow"
|
||||
"bj_power_mes/ent/processstep"
|
||||
"bj_power_mes/ent/role"
|
||||
"bj_power_mes/ent/station"
|
||||
"bj_power_mes/ent/user"
|
||||
@@ -29,13 +26,14 @@ func (s *Service) Seed(ctx context.Context) error {
|
||||
codes = []string{
|
||||
"produce.workorder", "produce.dailyplan", "produce.bom", "produce.material", "produce.scan",
|
||||
"produce.trace", "produce.torque", "produce.plc", "produce.product",
|
||||
"produce.processflow", "produce.station", "produce.performance",
|
||||
"produce.processflow", "produce.station", "produce.performance", "produce.route",
|
||||
// 按钮级权限(块2)
|
||||
"produce.workorder:add", "produce.workorder:edit", "produce.workorder:delete",
|
||||
"produce.workorder:dailyplan", "produce.bom:edit", "produce.material:generate",
|
||||
"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.route:add", "produce.route:edit", "produce.route:delete",
|
||||
}
|
||||
} else if r.code == "INSPECTOR" {
|
||||
codes = []string{"produce.trace", "produce.torque", "produce.performance", "sys.eventlog",
|
||||
@@ -77,6 +75,7 @@ func (s *Service) Seed(ctx context.Context) error {
|
||||
{"produce.torque", "拧紧查询", "MENU", "/torque"},
|
||||
{"produce.processflow", "工艺流程", "MENU", "/process-flow"},
|
||||
{"produce.station", "关联工位", "MENU", "/station"},
|
||||
{"produce.route", "工艺路线", "MENU", "/process-route"},
|
||||
{"produce.performance", "绩效报表", "MENU", "/performance"},
|
||||
{"produce.scan", "手动报工", "MENU", "/scan"},
|
||||
{"produce.trace", "工件追溯", "MENU", "/trace"},
|
||||
@@ -114,6 +113,9 @@ func (s *Service) Seed(ctx context.Context) error {
|
||||
{"produce.processflow:delete", "工艺流程-删除", "BUTTON", "", "produce.processflow"},
|
||||
{"produce.processflow:upload", "工艺流程-上传图纸", "BUTTON", "", "produce.processflow"},
|
||||
{"produce.station:edit", "工位-绑定", "BUTTON", "", "produce.station"},
|
||||
{"produce.route:add", "工艺路线-新增", "BUTTON", "", "produce.route"},
|
||||
{"produce.route:edit", "工艺路线-编辑", "BUTTON", "", "produce.route"},
|
||||
{"produce.route:delete", "工艺路线-删除", "BUTTON", "", "produce.route"},
|
||||
{"sys.account:add", "账号-新增", "BUTTON", "", "sys.account"},
|
||||
{"sys.account:edit", "账号-编辑", "BUTTON", "", "sys.account"},
|
||||
{"sys.account:delete", "账号-删除", "BUTTON", "", "sys.account"},
|
||||
@@ -145,48 +147,34 @@ func (s *Service) Seed(ctx context.Context) error {
|
||||
// 3.2 旧版权限码迁移(sys.rbac 家族 → sys.account / sys.role,幂等)
|
||||
migrateLegacySysRbac(ctx, s)
|
||||
|
||||
// 4. 12 个工位默认工艺流程 + 工位绑定(流程挂 process_code,工位绑流程)
|
||||
// 4. 初始化工位与默认工艺流程(工位绑定流程,流程承载步骤)
|
||||
seedFlowsAndStations(ctx, s)
|
||||
return nil
|
||||
}
|
||||
|
||||
func seedFlowsAndStations(ctx context.Context, s *Service) {
|
||||
// 每个工位(1~12)若未配置工艺流程,则创建默认流程并绑定;已有流程则跳过
|
||||
// 初始数据:12 个工位(工位数量以数据库为准,这里只做首次初始化;要 13 个就往 station 表插一行)
|
||||
for i := 1; i <= 12; i++ {
|
||||
flow, err := s.ctx.EntClient.ProcessFlow.Query().
|
||||
Where(processflow.ProcessCode(i)).
|
||||
Order(ent.Asc(processflow.FieldID)).First(ctx)
|
||||
if err != nil {
|
||||
flow, _ = s.ctx.EntClient.ProcessFlow.Create().
|
||||
SetName("工位" + strconv.Itoa(i) + "_默认").
|
||||
SetProcessCode(i).SetStatus("ACTIVE").SetRemark("默认工艺流程").Save(ctx)
|
||||
}
|
||||
if flow == nil {
|
||||
continue
|
||||
}
|
||||
cnt, _ := s.ctx.EntClient.ProcessStep.Query().Where(processstep.FlowId(flow.ID)).Count(ctx)
|
||||
if cnt == 0 {
|
||||
stepID := 0
|
||||
if step, err := s.ctx.EntClient.ProcessStep.Create().
|
||||
SetFlowId(flow.ID).SetProcessCode(i).SetSeq(1).SetName("装配完成").
|
||||
SetCollectType("NONE").Save(ctx); err == nil {
|
||||
stepID = step.ID
|
||||
}
|
||||
if i == 3 && stepID > 0 {
|
||||
_, _ = s.ctx.EntClient.ProcessStep.Create().
|
||||
SetFlowId(flow.ID).SetProcessCode(i).SetSeq(2).SetName("拧紧扭矩").
|
||||
SetCollectType("AUTO").SetIsTorque(true).Save(ctx)
|
||||
}
|
||||
}
|
||||
// 工位 N 绑定工位 N 的默认流程
|
||||
st, err := s.ctx.EntClient.Station.Query().Where(station.StationNo(i)).First(ctx)
|
||||
if err != nil {
|
||||
_, _ = s.ctx.EntClient.Station.Create().
|
||||
SetStationNo(i).SetName("装配工位" + strconv.Itoa(i)).
|
||||
SetFlowId(flow.ID).SetStatus("ENABLED").Save(ctx)
|
||||
} else if st.FlowId == 0 {
|
||||
_, _ = s.ctx.EntClient.Station.UpdateOneID(st.ID).SetFlowId(flow.ID).Save(ctx)
|
||||
st, _ = s.ctx.EntClient.Station.Create().
|
||||
SetStationNo(i).SetName("装配工位" + strconv.Itoa(i)).SetStatus("ENABLED").Save(ctx)
|
||||
}
|
||||
if st == nil || st.FlowId > 0 {
|
||||
continue
|
||||
}
|
||||
flow, err := s.ctx.EntClient.ProcessFlow.Create().
|
||||
SetName("工位" + strconv.Itoa(i) + "_默认").
|
||||
SetStatus("ACTIVE").SetRemark("默认工艺流程").Save(ctx)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
if _, err := s.ctx.EntClient.ProcessStep.Create().
|
||||
SetFlowId(flow.ID).SetSeq(1).SetName("装配完成").SetCollectType("NONE").Save(ctx); err == nil && i == 3 {
|
||||
_, _ = s.ctx.EntClient.ProcessStep.Create().
|
||||
SetFlowId(flow.ID).SetSeq(2).SetName("拧紧扭矩").SetCollectType("AUTO").SetIsTorque(true).Save(ctx)
|
||||
}
|
||||
_, _ = s.ctx.EntClient.Station.UpdateOneID(st.ID).SetFlowId(flow.ID).Save(ctx)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user