refactor: 重构工艺工序相关命名与数据模型
1. 全局替换"工序"为"工艺"统一术语,包括页面文案、枚举、注释
2. 重构工单与工件工艺数据模型:
- 新增工艺组合表flow_material作为备料/齐套唯一源头
- 新增工位状态表station_state支持自主停单/恢复接单
- 移除station_process派工表,改用工单工艺组合作为路线唯一源头
- 替换processCode为flowId作为工艺关联标识
- 重构工件当前进度字段为currentStationNo
3. 删除冗余的静态备份资源文件
4. 调整物料选择组件默认启用仅显示激活物料
5. 优化工单创建/编辑逻辑,新增工艺组合校验与保存
This commit is contained in:
@@ -62,6 +62,7 @@ func createMaterialHandler(ctx *svc.ServiceContext) http.HandlerFunc {
|
||||
TemplateCode string `json:"templateCode"`
|
||||
ItemType int `json:"itemType"` // 1原材料/2半成品/3成品/4其他
|
||||
SafetyStock int `json:"safetyStock"` // 安全库存(低于触发缺货预警)
|
||||
IsActive *bool `json:"isActive"` // 启用状态(nil 视为启用)
|
||||
}
|
||||
if err := parseJSON(r, &req); err != nil {
|
||||
fail(w, http.StatusBadRequest, "参数错误")
|
||||
@@ -106,6 +107,7 @@ func createMaterialHandler(ctx *svc.ServiceContext) http.HandlerFunc {
|
||||
SetNillableTemplateCode(strPtr(req.TemplateCode)).
|
||||
SetItemType(itemType).
|
||||
SetSafetyStock(req.SafetyStock).
|
||||
SetIsActive(req.IsActive == nil || *req.IsActive).
|
||||
Save(ctx0())
|
||||
if err != nil {
|
||||
logx.Errorf("create material failed: %v", err)
|
||||
@@ -131,6 +133,7 @@ func updateMaterialHandler(ctx *svc.ServiceContext) http.HandlerFunc {
|
||||
ManageMode int `json:"manageMode"`
|
||||
ItemType int `json:"itemType"`
|
||||
SafetyStock int `json:"safetyStock"`
|
||||
IsActive *bool `json:"isActive"`
|
||||
}
|
||||
if err := parseJSON(r, &req); err != nil || req.ID <= 0 {
|
||||
fail(w, http.StatusBadRequest, "参数错误")
|
||||
@@ -155,6 +158,7 @@ func updateMaterialHandler(ctx *svc.ServiceContext) http.HandlerFunc {
|
||||
SetDescription(req.Description).
|
||||
SetItemType(req.ItemType).
|
||||
SetSafetyStock(req.SafetyStock).
|
||||
SetIsActive(req.IsActive == nil || *req.IsActive).
|
||||
SetManageMode(manageMode).
|
||||
SetIsBatchManaged(manageMode == 1 || manageMode == invManageOther).
|
||||
SetIsSerialManaged(manageMode == 2).
|
||||
@@ -243,6 +247,11 @@ func queryMaterialsHandler(ctx *svc.ServiceContext) http.HandlerFunc {
|
||||
),
|
||||
)
|
||||
}
|
||||
// 启用过滤:下拉选择(新建入库/备料等)传 isActive=true 仅显示启用物料;
|
||||
// 物料档案管理页不传,显示全部以便重新启用。
|
||||
if isActiveStr := r.URL.Query().Get("isActive"); isActiveStr != "" {
|
||||
q = q.Where(material.IsActiveEQ(isActiveStr == "true" || isActiveStr == "1"))
|
||||
}
|
||||
if startDate != "" {
|
||||
if t, err := time.ParseInLocation("2006-01-02", startDate, time.Local); err == nil {
|
||||
q = q.Where(material.CreatedAtGTE(t.Unix()))
|
||||
|
||||
@@ -85,15 +85,16 @@ func listProductTypesInternalHandler(ctx *svc.ServiceContext) http.HandlerFunc {
|
||||
}
|
||||
|
||||
type productTypeRow struct {
|
||||
ID int `json:"id"`
|
||||
Code string `json:"code"`
|
||||
Name string `json:"name"`
|
||||
Spec string `json:"spec"`
|
||||
Unit string `json:"unit"`
|
||||
Category string `json:"category"`
|
||||
IsActive bool `json:"isActive"`
|
||||
CreatedAt int64 `json:"createdAt"`
|
||||
UpdatedAt int64 `json:"updatedAt"`
|
||||
ID int `json:"id"`
|
||||
Code string `json:"code"`
|
||||
Name string `json:"name"`
|
||||
Spec string `json:"spec"`
|
||||
Unit string `json:"unit"`
|
||||
Category string `json:"category"`
|
||||
ManageMode int `json:"manageMode"` // 1结构件(批次)/2电气件(SN)
|
||||
IsActive bool `json:"isActive"`
|
||||
CreatedAt int64 `json:"createdAt"`
|
||||
UpdatedAt int64 `json:"updatedAt"`
|
||||
}
|
||||
|
||||
func productTypeRows(list []*ent.Material) []*productTypeRow {
|
||||
@@ -105,8 +106,9 @@ func productTypeRows(list []*ent.Material) []*productTypeRow {
|
||||
Name: m.Name,
|
||||
Spec: m.Spec,
|
||||
Unit: m.Unit,
|
||||
Category: m.Description, // MES 迁移时 category 存于 description
|
||||
IsActive: m.IsActive,
|
||||
Category: m.Description, // MES 迁移时 category 存于 description
|
||||
ManageMode: m.ManageMode,
|
||||
IsActive: m.IsActive,
|
||||
CreatedAt: m.CreatedAt,
|
||||
UpdatedAt: m.UpdatedAt,
|
||||
})
|
||||
@@ -140,14 +142,15 @@ func genProductTypeCode(ctx *svc.ServiceContext) (string, error) {
|
||||
// WMS 物料档案共用一张表,必填口径一致(图号/名称/规格/单位/品类/类型)。
|
||||
func createProductTypeInternalHandler(ctx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var req struct {
|
||||
Code string `json:"code"`
|
||||
Name string `json:"name"`
|
||||
Spec string `json:"spec"`
|
||||
Unit string `json:"unit"`
|
||||
Category string `json:"category"`
|
||||
IsActive *bool `json:"isActive"`
|
||||
}
|
||||
var req struct {
|
||||
Code string `json:"code"`
|
||||
Name string `json:"name"`
|
||||
Spec string `json:"spec"`
|
||||
Unit string `json:"unit"`
|
||||
Category string `json:"category"`
|
||||
ManageMode int `json:"manageMode"` // 1结构件批次/2电气件SN,0=默认电气件
|
||||
IsActive *bool `json:"isActive"`
|
||||
}
|
||||
if err := parseJSON(r, &req); err != nil {
|
||||
fail(w, http.StatusBadRequest, "参数错误")
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user