chore: 完成多系统功能迭代与优化

1. 通用优化:
   - 统一系统标题为"库房客户端"/"MES产线控制",移除北自所前缀
   - 调整内置账号密码为统一123456,优化密码校验逻辑
   - 新增数据库自动创建逻辑,简化部署流程
   - 修复日志时间格式配置,优化日志输出
   - 新增纯数字密码安全提示

2. MES系统优化:
   - 新增日排产管理功能,支持增删改查与自动算料生成备料单
   - 重构BOM模块,改为按产品编码维护而非工单维度
   - 新增工艺参数模板配置与手动报工页面
   - 新增产品类型自动编码功能
   - 优化菜单结构,调整工单管理、扫码报工等页面名称与路由
   - 新增删除日排产接口与权限保护
   - 修复物料清单查询逻辑,适配新BOM结构
   - 新增refreshToken支持,优化登录会话管理

3. WMS系统优化:
   - 新增基础数据维护页面,支持区域与物料档案管理
   - 新增工单列表下拉接口,对接MES获取未完成工单优先展示
   - 优化入库管理提示文案,替换英文提示为中文
   - 修复精密件入库校验逻辑,优化错误提示
   - 优化Excel导入功能,新增备注字段支持
   - 优化登录页面与菜单文案,统一备料台账名称
   - 新增自动打开浏览器功能,优化客户端启动体验
   - 修复备料出库页面查询提示文案
   - 新增WMS与MES对接配置,完善内部API调用逻辑

4. 其他优化:
   - 删除冗余的旧版静态资源文件,更新资源引用路径
   - 新增帮助文档,完善基础数据模块说明
   - 修复多处文案不统一、英文残留问题
This commit is contained in:
SunYF
2026-08-29 15:30:25 +08:00
parent e82b744bbd
commit ebf901ad16
124 changed files with 1815 additions and 480 deletions
@@ -13,14 +13,18 @@ import (
func SaveBomHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req struct {
WorkOrderNo string `json:"workOrderNo"`
Items []logic.BomItemReq `json:"items"`
ProductCode string `json:"productCode"`
Items []logic.BomItemReq `json:"items"`
}
if err := httpx.ParseJSON(r, &req); err != nil {
httpx.BadRequest(w, "请求体解析失败")
return
}
if err := logic.New(svcCtx).SaveBom(r.Context(), req.WorkOrderNo, req.Items, operator(r, "")); err != nil {
if req.ProductCode == "" {
httpx.BadRequest(w, "请选择产品编码")
return
}
if err := logic.New(svcCtx).SaveBom(r.Context(), req.ProductCode, req.Items, operator(r, "")); err != nil {
httpx.Fail(w, 3101, err.Error())
return
}
@@ -30,7 +34,7 @@ func SaveBomHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
func ListBomHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
data, err := logic.New(svcCtx).ListBom(r.Context(), r.URL.Query().Get("workOrderNo"))
data, err := logic.New(svcCtx).ListBom(r.Context(), r.URL.Query().Get("productCode"))
if err != nil {
httpx.Fail(w, 3102, err.Error())
return
@@ -102,4 +102,42 @@ func ScanRecordsHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
}
httpx.Ok(w, data)
}
}
}
// ProcessStepsHandler 查询工位工序的步骤模板(参数采集模板),供手动报工页动态渲染
func ProcessStepsHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
code := atoiDefault(r.URL.Query().Get("processCode"), 0)
if code <= 0 {
data, err := logic.New(svcCtx).AllProcessSteps(r.Context(), 0)
if err != nil {
httpx.Fail(w, 3207, err.Error())
return
}
httpx.Ok(w, data)
return
}
data, err := logic.New(svcCtx).ListProcessSteps(r.Context(), code)
if err != nil {
httpx.Fail(w, 3207, err.Error())
return
}
httpx.Ok(w, data)
}
}
// SaveProcessStepsHandler 覆盖式保存某工序的步骤模板及考核标准
func SaveProcessStepsHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req []logic.StepItemReq
if err := httpx.ParseJSON(r, &req); err != nil {
httpx.BadRequest(w, "请求体解析失败")
return
}
if err := logic.New(svcCtx).SaveProcessSteps(r.Context(), req, operator(r, "")); err != nil {
httpx.Fail(w, 3208, err.Error())
return
}
httpx.OkMessage(w, "工艺参数已保存", nil)
}
}
@@ -3,6 +3,7 @@ package production
import (
"net/http"
"strconv"
"strings"
"bj_power_mes/common/httpx"
"bj_power_mes/internal/logic"
@@ -155,3 +156,18 @@ func ListDailyPlansHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
httpx.Ok(w, data)
}
}
func DeleteDailyPlanHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
id, _ := strconv.Atoi(strings.TrimPrefix(r.URL.Path, "/api/v1/daily-plans/"))
if id == 0 {
httpx.Fail(w, 3010, "缺少排产 id")
return
}
if err := logic.New(svcCtx).DeleteDailyPlan(r.Context(), id); err != nil {
httpx.Fail(w, 3010, err.Error())
return
}
httpx.Ok(w, nil)
}
}