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
+24 -2
View File
@@ -24,8 +24,12 @@ type OrderMaterialLedger struct {
MaterialName string `json:"materialName,omitempty"`
// 物料总需求数量
TotalQty int `json:"totalQty,omitempty"`
// 累计已出库数量
// 累计已发出数量(仅出库写入)
OutQty int `json:"outQty,omitempty"`
// 累计已退回数量(仅退库收货写入)
ReturnedQty int `json:"returnedQty,omitempty"`
// 累计已消耗数量(仅报工反冲核销写入;不动库存)
ConsumedQty int `json:"consumedQty,omitempty"`
// 进行中/领料完结
Status string `json:"status,omitempty"`
// 目标工位(装配工位号)
@@ -46,7 +50,7 @@ func (*OrderMaterialLedger) scanValues(columns []string) ([]any, error) {
values := make([]any, len(columns))
for i := range columns {
switch columns[i] {
case ordermaterialledger.FieldID, ordermaterialledger.FieldTotalQty, ordermaterialledger.FieldOutQty, ordermaterialledger.FieldCompletedAt, ordermaterialledger.FieldCreatedAt, ordermaterialledger.FieldUpdatedAt:
case ordermaterialledger.FieldID, ordermaterialledger.FieldTotalQty, ordermaterialledger.FieldOutQty, ordermaterialledger.FieldReturnedQty, ordermaterialledger.FieldConsumedQty, ordermaterialledger.FieldCompletedAt, ordermaterialledger.FieldCreatedAt, ordermaterialledger.FieldUpdatedAt:
values[i] = new(sql.NullInt64)
case ordermaterialledger.FieldOrderNo, ordermaterialledger.FieldMaterialCode, ordermaterialledger.FieldMaterialName, ordermaterialledger.FieldStatus, ordermaterialledger.FieldTargetStation, ordermaterialledger.FieldRemark:
values[i] = new(sql.NullString)
@@ -101,6 +105,18 @@ func (_m *OrderMaterialLedger) assignValues(columns []string, values []any) erro
} else if value.Valid {
_m.OutQty = int(value.Int64)
}
case ordermaterialledger.FieldReturnedQty:
if value, ok := values[i].(*sql.NullInt64); !ok {
return fmt.Errorf("unexpected type %T for field returned_qty", values[i])
} else if value.Valid {
_m.ReturnedQty = int(value.Int64)
}
case ordermaterialledger.FieldConsumedQty:
if value, ok := values[i].(*sql.NullInt64); !ok {
return fmt.Errorf("unexpected type %T for field consumed_qty", values[i])
} else if value.Valid {
_m.ConsumedQty = int(value.Int64)
}
case ordermaterialledger.FieldStatus:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field status", values[i])
@@ -188,6 +204,12 @@ func (_m *OrderMaterialLedger) String() string {
builder.WriteString("out_qty=")
builder.WriteString(fmt.Sprintf("%v", _m.OutQty))
builder.WriteString(", ")
builder.WriteString("returned_qty=")
builder.WriteString(fmt.Sprintf("%v", _m.ReturnedQty))
builder.WriteString(", ")
builder.WriteString("consumed_qty=")
builder.WriteString(fmt.Sprintf("%v", _m.ConsumedQty))
builder.WriteString(", ")
builder.WriteString("status=")
builder.WriteString(_m.Status)
builder.WriteString(", ")