chore: 完成多系统功能迭代与优化
1. 通用优化: - 统一系统标题为"库房客户端"/"MES产线控制",移除北自所前缀 - 调整内置账号密码为统一123456,优化密码校验逻辑 - 新增数据库自动创建逻辑,简化部署流程 - 修复日志时间格式配置,优化日志输出 - 新增纯数字密码安全提示 2. MES系统优化: - 新增日排产管理功能,支持增删改查与自动算料生成备料单 - 重构BOM模块,改为按产品编码维护而非工单维度 - 新增工艺参数模板配置与手动报工页面 - 新增产品类型自动编码功能 - 优化菜单结构,调整工单管理、扫码报工等页面名称与路由 - 新增删除日排产接口与权限保护 - 修复物料清单查询逻辑,适配新BOM结构 - 新增refreshToken支持,优化登录会话管理 3. WMS系统优化: - 新增基础数据维护页面,支持区域与物料档案管理 - 新增工单列表下拉接口,对接MES获取未完成工单优先展示 - 优化入库管理提示文案,替换英文提示为中文 - 修复精密件入库校验逻辑,优化错误提示 - 优化Excel导入功能,新增备注字段支持 - 优化登录页面与菜单文案,统一备料台账名称 - 新增自动打开浏览器功能,优化客户端启动体验 - 修复备料出库页面查询提示文案 - 新增WMS与MES对接配置,完善内部API调用逻辑 4. 其他优化: - 删除冗余的旧版静态资源文件,更新资源引用路径 - 新增帮助文档,完善基础数据模块说明 - 修复多处文案不统一、英文残留问题
This commit is contained in:
@@ -8,26 +8,26 @@ import (
|
||||
)
|
||||
|
||||
type BomItemReq struct {
|
||||
WorkOrderNo string `json:"workOrderNo"`
|
||||
MaterialCode string `json:"materialCode"`
|
||||
MaterialName string `json:"materialName"`
|
||||
Spec string `json:"spec"`
|
||||
Unit string `json:"unit"`
|
||||
ManageMode string `json:"manageMode"`
|
||||
ProductCode string `json:"productCode"`
|
||||
MaterialCode string `json:"materialCode"`
|
||||
MaterialName string `json:"materialName"`
|
||||
Spec string `json:"spec"`
|
||||
Unit string `json:"unit"`
|
||||
ManageMode string `json:"manageMode"`
|
||||
UnitQty float64 `json:"unitQty"`
|
||||
LossRate float64 `json:"lossRate"`
|
||||
RequiredQty float64 `json:"requiredQty"`
|
||||
SerialSns []string `json:"serialSns"`
|
||||
}
|
||||
|
||||
// SaveBom 保存工单 BOM(覆盖式:按 工单号+物料编码 做作 upsert)
|
||||
func (s *Service) SaveBom(ctx context.Context, workOrderNo string, items []BomItemReq, operator string) error {
|
||||
// SaveBom 保存产品 BOM(覆盖式:按 产品编码+物料编码 做 upsert)
|
||||
func (s *Service) SaveBom(ctx context.Context, productCode string, items []BomItemReq, operator string) error {
|
||||
for _, it := range items {
|
||||
if it.ManageMode == "" {
|
||||
it.ManageMode = "2"
|
||||
}
|
||||
exist, err := s.ctx.EntClient.BomItem.Query().
|
||||
Where(bomitem.WorkOrderNo(workOrderNo), bomitem.MaterialCode(it.MaterialCode)).First(ctx)
|
||||
Where(bomitem.ProductCode(productCode), bomitem.MaterialCode(it.MaterialCode)).First(ctx)
|
||||
if err == nil && exist != nil {
|
||||
u := s.ctx.EntClient.BomItem.UpdateOneID(exist.ID).
|
||||
SetMaterialName(it.MaterialName).SetSpec(it.Spec).SetUnit(it.Unit).
|
||||
@@ -39,7 +39,7 @@ func (s *Service) SaveBom(ctx context.Context, workOrderNo string, items []BomIt
|
||||
_ = u.Exec(ctx)
|
||||
} else {
|
||||
b := s.ctx.EntClient.BomItem.Create().
|
||||
SetWorkOrderNo(workOrderNo).SetMaterialCode(it.MaterialCode).
|
||||
SetProductCode(productCode).SetMaterialCode(it.MaterialCode).
|
||||
SetMaterialName(it.MaterialName).SetSpec(it.Spec).SetUnit(it.Unit).
|
||||
SetManageMode(it.ManageMode).SetUnitQty(it.UnitQty).SetLossRate(it.LossRate).
|
||||
SetRequiredQty(it.RequiredQty)
|
||||
@@ -49,14 +49,14 @@ func (s *Service) SaveBom(ctx context.Context, workOrderNo string, items []BomIt
|
||||
_ = b.Exec(ctx)
|
||||
}
|
||||
}
|
||||
s.ctx.EventLog.Write(ctx, "bom.save", workOrderNo, operator, "work_order_bom", workOrderNo, "保存BOM", map[string]any{"count": len(items)})
|
||||
s.ctx.EventLog.Write(ctx, "bom.save", "", operator, "product_bom", productCode, "保存产品BOM", map[string]any{"count": len(items)})
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Service) ListBom(ctx context.Context, workOrderNo string) ([]*ent.BomItem, error) {
|
||||
func (s *Service) ListBom(ctx context.Context, productCode string) ([]*ent.BomItem, error) {
|
||||
q := s.ctx.EntClient.BomItem.Query()
|
||||
if workOrderNo != "" {
|
||||
q = q.Where(bomitem.WorkOrderNo(workOrderNo))
|
||||
if productCode != "" {
|
||||
q = q.Where(bomitem.ProductCode(productCode))
|
||||
}
|
||||
return q.Order(ent.Asc(bomitem.FieldID)).All(ctx)
|
||||
}
|
||||
Reference in New Issue
Block a user