feat: 完成客户第12条需求+多系统改造

1. 新增预警表添加工单号字段,支持按工单号检索预警
2. 添加工单过滤在制品/绩效报表/预警中心查询
3. 补全WMS台账字段口径与权限配置
4. 修复备料单与数量不符处理流程
5. 新增配送进度/库位联动/自动出库功能
6. 修复AGV配送状态更新逻辑
7. 优化退料与库存管理细节
This commit is contained in:
SunYF
2026-09-19 17:04:58 +08:00
parent 62e45b7379
commit 05b0b8a909
89 changed files with 7912 additions and 429 deletions
+58 -3
View File
@@ -35,8 +35,18 @@ type MaterialQtyReport struct {
DiffQty int `json:"diffQty,omitempty"`
// 差异原因
Cause string `json:"cause,omitempty"`
// PENDING/RESOLVED
// PENDING/PROCESSING/REPLENISHED/RETURNED/ADJUSTED/CLOSED
Status string `json:"status,omitempty"`
// 处理方式 REPLENISH补发/RETURN退库/ADJUST调整
HandleType string `json:"handleType,omitempty"`
// 处理生成的单据号(补料单号/退库单号)
HandleDocNo string `json:"handleDocNo,omitempty"`
// 处理说明
HandleNote string `json:"handleNote,omitempty"`
// 处理人
HandledBy string `json:"handledBy,omitempty"`
// 处理时间(unix 秒)
HandledAt int64 `json:"handledAt,omitempty"`
// 上报人
Operator string `json:"operator,omitempty"`
// CreatedAt holds the value of the "createdAt" field.
@@ -51,9 +61,9 @@ func (*MaterialQtyReport) scanValues(columns []string) ([]any, error) {
values := make([]any, len(columns))
for i := range columns {
switch columns[i] {
case materialqtyreport.FieldID, materialqtyreport.FieldStationNo, materialqtyreport.FieldPlanQty, materialqtyreport.FieldActualQty, materialqtyreport.FieldDiffQty:
case materialqtyreport.FieldID, materialqtyreport.FieldStationNo, materialqtyreport.FieldPlanQty, materialqtyreport.FieldActualQty, materialqtyreport.FieldDiffQty, materialqtyreport.FieldHandledAt:
values[i] = new(sql.NullInt64)
case materialqtyreport.FieldOrderNo, materialqtyreport.FieldSn, materialqtyreport.FieldMaterialCode, materialqtyreport.FieldMaterialName, materialqtyreport.FieldCause, materialqtyreport.FieldStatus, materialqtyreport.FieldOperator:
case materialqtyreport.FieldOrderNo, materialqtyreport.FieldSn, materialqtyreport.FieldMaterialCode, materialqtyreport.FieldMaterialName, materialqtyreport.FieldCause, materialqtyreport.FieldStatus, materialqtyreport.FieldHandleType, materialqtyreport.FieldHandleDocNo, materialqtyreport.FieldHandleNote, materialqtyreport.FieldHandledBy, materialqtyreport.FieldOperator:
values[i] = new(sql.NullString)
case materialqtyreport.FieldCreatedAt, materialqtyreport.FieldResolvedAt:
values[i] = new(sql.NullTime)
@@ -138,6 +148,36 @@ func (_m *MaterialQtyReport) assignValues(columns []string, values []any) error
} else if value.Valid {
_m.Status = value.String
}
case materialqtyreport.FieldHandleType:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field handleType", values[i])
} else if value.Valid {
_m.HandleType = value.String
}
case materialqtyreport.FieldHandleDocNo:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field handleDocNo", values[i])
} else if value.Valid {
_m.HandleDocNo = value.String
}
case materialqtyreport.FieldHandleNote:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field handleNote", values[i])
} else if value.Valid {
_m.HandleNote = value.String
}
case materialqtyreport.FieldHandledBy:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field handledBy", values[i])
} else if value.Valid {
_m.HandledBy = value.String
}
case materialqtyreport.FieldHandledAt:
if value, ok := values[i].(*sql.NullInt64); !ok {
return fmt.Errorf("unexpected type %T for field handledAt", values[i])
} else if value.Valid {
_m.HandledAt = value.Int64
}
case materialqtyreport.FieldOperator:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field operator", values[i])
@@ -223,6 +263,21 @@ func (_m *MaterialQtyReport) String() string {
builder.WriteString("status=")
builder.WriteString(_m.Status)
builder.WriteString(", ")
builder.WriteString("handleType=")
builder.WriteString(_m.HandleType)
builder.WriteString(", ")
builder.WriteString("handleDocNo=")
builder.WriteString(_m.HandleDocNo)
builder.WriteString(", ")
builder.WriteString("handleNote=")
builder.WriteString(_m.HandleNote)
builder.WriteString(", ")
builder.WriteString("handledBy=")
builder.WriteString(_m.HandledBy)
builder.WriteString(", ")
builder.WriteString("handledAt=")
builder.WriteString(fmt.Sprintf("%v", _m.HandledAt))
builder.WriteString(", ")
builder.WriteString("operator=")
builder.WriteString(_m.Operator)
builder.WriteString(", ")