Files
bj_power/bj_power_wms/schema/inbound_order.go
T
SunYF 62e45b7379 feat: 完成附件存储重构与磁盘监控功能,同步物料档案与入库单规则更新
1.  新增跨平台磁盘空间监控能力,每日7点自动检测附件目录剩余空间,触发阈值告警
2.  重构附件存储方案为年/月/日/文件类型分层结构,统一MES与WMS的附件管理逻辑
3.  对齐物料档案与入库单的质量状态校验规则,仅合格品计入库存与出库
4.  实现入库单作废功能与区域库位的多级父子结构管理
5.  删除物料简称字段,补充规格型号与单位必填项,统一系统数据口径
6.  新增附件中心与磁盘状态查询接口,完善权限控制与操作日志
2026-09-19 10:54:15 +08:00

59 lines
3.2 KiB
Go

package schema
import (
"entgo.io/ent"
"entgo.io/ent/schema/field"
"entgo.io/ent/schema/index"
)
// InboundOrder 入库单
type InboundOrder struct {
ent.Schema
}
func (InboundOrder) Fields() []ent.Field {
return []ent.Field{
field.String("inbound_no").Unique().Comment("入库单号"),
// 类型:purchase(采购/结构件) semi(半成品) finished(成品) return(退货) other(其他入库)
field.String("inbound_type").Default("purchase").Comment("入库类型 purchase/semi/finished/return/other"),
field.String("material_code").Comment("物料编码"),
field.String("material_name").Optional().Comment("物料名称(冗余)"),
// 管理粒度 1批次(结构件)/2序列号(电气件),冗余自物料档案,便于单单据直接判断
field.Int("manage_mode").Default(1).Comment("管理粒度 1批次/2序列号"),
field.String("batch_no").Optional().Comment("批次号(结构件)"),
field.String("zone_code").Optional().Comment("入库区域(大区)"),
// 库位四级贯通(客户诉求 问题记录 L32/L169 + D5):区域→货架号→第几层→位置号。
// 与 zones 表 shelf_no/layer_no/position_no 对齐,落位到具体货架/层/位置。
field.String("shelf_no").Optional().Comment("货架号(如 A)"),
field.String("layer_no").Optional().Comment("第几层(如 3)"),
field.String("position_no").Optional().Comment("位置号(如 12)"),
field.Int("quantity").Default(0).Comment("本次入库总数量(批次合计或SN条数)"),
field.String("operator").Optional().Comment("操作人"),
field.String("remark").Optional().Comment("备注"),
// 检测单号:入库检报告单号,必填以闭环质量追溯
field.String("inspection_no").Comment("检测单号(入库检报告单号)"),
// 归属(客户诉求 问题记录 L54:入库记录增加 工单号/科技项目号/无)
// ownership_type: workorder(工单号) / project(科技项目号) / none(无)
field.String("ownership_type").Default("none").Comment("归属类型 workorder/project/none"),
field.String("ownership_no").Optional().Comment("归属编号(工单号/科技项目号)"),
// 质量状态(客户诉求 问题记录 L129:入库记录增加 合格/不合格 列,提交检验后跳转入库自动关联)
// 空=未关联检验记录;合格/不合格/部分(部分入库)。入库时按检测单号自动带出最近一次检验结论。
field.String("quality_status").Optional().Comment("质量状态 合格/不合格/部分(空=未关联检验)"),
// 作废(客户诉求 2026-09-19):入库单可作废,填写作废原因并回滚对应库存
// (结构件回滚批次数量;电气件按 SN 精确回滚本单的 SN,不与其它单混)。
field.Bool("voided").Default(false).Comment("是否已作废"),
field.String("void_reason").Optional().Comment("作废原因"),
field.String("voided_by").Optional().Comment("作废人"),
field.Int64("voided_at").Optional().Comment("作废时间(unix秒)"),
field.Int64("created_at").DefaultFunc(nowUnix).Comment("创建时间"),
}
}
func (InboundOrder) Indexes() []ent.Index {
return []ent.Index{
index.Fields("material_code"),
index.Fields("inbound_type"),
index.Fields("operator"),
}
}