Files
bj_power/bj_power_wms/schema/order_material_ledger.go
T
SunYF 05b0b8a909 feat: 完成客户第12条需求+多系统改造
1. 新增预警表添加工单号字段,支持按工单号检索预警
2. 添加工单过滤在制品/绩效报表/预警中心查询
3. 补全WMS台账字段口径与权限配置
4. 修复备料单与数量不符处理流程
5. 新增配送进度/库位联动/自动出库功能
6. 修复AGV配送状态更新逻辑
7. 优化退料与库存管理细节
2026-09-19 17:04:58 +08:00

49 lines
2.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package schema
import (
"entgo.io/ent"
"entgo.io/ent/schema/field"
"entgo.io/ent/schema/index"
)
// OrderMaterialLedger 工单物料台账(WMS 侧)
//
// 字段口径(2026-09-19 定稿,一个字段只有一个写者;详见 临时.md §2):
// - total_qty 需求总量 [写者:MES 同步台账]
// - out_qty 累计已发出 [写者:出库]
// - returned_qty 累计已退回 [写者:退库收货]
// - consumed_qty 累计已消耗 [写者:报工反冲核销]
//
// 派生量:net_out_qty = out_qty returned_qty(净领用,用于超量拦截与「领料完结」判定)。
// 强约束:net_out_qty ≤ total_qty;等于时领料完结。退料后净额回落,可再次补料。
type OrderMaterialLedger struct {
ent.Schema
}
func (OrderMaterialLedger) Fields() []ent.Field {
return []ent.Field{
field.String("order_no").Comment("工单号"),
field.String("material_code").Comment("物料编码"),
field.String("material_name").Optional().Comment("物料名称(冗余)"),
field.Int("total_qty").Default(0).Comment("物料总需求数量"),
field.Int("out_qty").Default(0).Comment("累计已发出数量(仅出库写入)"),
field.Int("returned_qty").Default(0).Comment("累计已退回数量(仅退库收货写入)"),
field.Int("consumed_qty").Default(0).Comment("累计已消耗数量(仅报工反冲核销写入;不动库存)"),
field.String("status").Default("进行中").Comment("进行中/领料完结"),
// 目标工位:备料送到哪个装配工位(客户诉求 L297-300;MES 同步台账时传入)
field.String("target_station").Optional().Comment("目标工位(装配工位号)"),
// 完成时间(客户诉求 问题记录 L242-258):领料完结时刻,用于"完成时间"范围查询。
field.Int64("completed_at").Optional().Comment("领料完结时间(unix 秒)"),
field.String("remark").Optional().Comment("备注"),
field.Int64("created_at").DefaultFunc(nowUnix),
field.Int64("updated_at").DefaultFunc(nowUnix),
}
}
func (OrderMaterialLedger) Indexes() []ent.Index {
return []ent.Index{
index.Fields("order_no"),
index.Fields("material_code"),
}
}