Files
bj_power/bj_power_wms/schema/material.go
T
SunYF 932700ca65 refactor: 清理MES端本地product_type冗余代码,对齐WMS主数据架构
1.  移除MES端本地product_type实体、schema及相关CRUD代码,改为通过WMS内部API代理获取物料主数据
2.  更新物料管理粒度逻辑,新增"其他"类型(3)支持,同步更新入库校验规则
3.  修复前端物料选择、库存筛选等页面的类型判断逻辑,统一使用manage_mode区分管理类型
4.  清理静态资源文件冗余的样式代码,调整前端页面展示逻辑
5.  更新帮助文档,修正物料类型的说明描述
2026-09-22 07:41:40 +08:00

62 lines
3.5 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"
)
// Material 物料档案(主数据)
// 全系统物料的唯一定义来源,入库/出库/库存/检验都通过 material_code 关联本表。
// 「类型」(manage_mode) 与「品类」(item_type) 是两个相互独立的维度:
// 类型(管理粒度,入库「结构件/电气件/其他」三个页签同源):
// - manage_mode=1 结构件:按"批次"管理,一次到货入一批,库存以 quantity 计数;
// - manage_mode=2 电气件:按"SN 序列号"逐件管理,库存以单件行计数,可单件追溯;
// - manage_mode=3 其他(辅料/工装/试验设备):按"批次数量"管理,不做 SN。
// 品类(与库存主表 inventories.category 对应,独立于类型):
// - item_type=1 原材料 / 2 半成品 / 3 成品 / 4 其他(成品即"产品型号"档案,MES 实时从本表拉取,
// 消除两系统双录——2026-09-08 并表定稿)。
// 注意:物料档案只描述"这个物料是什么、怎么管",不承载生命周期状态。
type Material struct {
ent.Schema
}
func (Material) Fields() []ent.Field {
return []ent.Field{
field.String("code").Unique().Comment("物料唯一编码"),
field.String("name").Comment("物料真实名称"),
// 「简称」字段已按 2026-09-19 用户裁决整体删除(新增/编辑表单不再出现)。
// 字段级必填口径:图号 code / 名称 name / 规格 spec / 单位 unit / 品类 item_type /
// 类型 manage_mode / 安全库存 safety_stock 均必填;仅「说明」description 可空。
// 必填在 handler 层校验(DB 列保持可空,避免存量行 NULL 扫描失败)。
field.String("spec").Optional().Comment("规格型号"),
field.String("unit").Optional().Comment("单位"),
field.String("description").Optional().Comment("描述"),
// 品类(独立于类型的维度):1=原材料 2=半成品 3=成品 4=其他
field.Int("item_type").Default(1).Comment("品类 1原材料/2半成品/3成品/4其他"),
// 类型(管理粒度,入库「结构件/电气件/其他」三页签同源):
// 1=结构件(批次) 2=电气件(序列号) 3=其他(辅料/工装/试验设备,按批次数量,不做 SN)
field.Int("manage_mode").Default(1).Comment("类型 1结构件(批次)/2电气件(序列号)/3其他"),
field.Bool("is_batch_managed").Default(false).Comment("是否批次管理"),
field.Bool("is_serial_managed").Default(false).Comment("是否序列号管理"),
// 所属物料模板(种类)
field.String("template_code").Optional().Comment("物料模板编码(物料种类)"),
// 图号已按客户裁决(问题记录 L18)与物料编码合并:code 即图号,界面统一显示「图号」,
// 不再保留独立 drawing_no 字段(避免两个「图号」并存造成混乱)。
// 安全库存:低于该值触发缺货预警(客户诉求 问题记录 L473:安全库存/缺货预警进 WMS 首页)
field.Int("safety_stock").Default(0).Comment("安全库存(低于则缺货预警,0=不预警)"),
// 启用状态:停用后不在新建工单/备料下拉出现(对齐 MES 产品型号 isActive
field.Bool("is_active").Default(true).Comment("是否启用"),
field.Int64("created_at").DefaultFunc(nowUnix).Comment("创建时间"),
field.Int64("updated_at").DefaultFunc(nowUnix).Comment("更新时间"),
}
}
func (Material) Indexes() []ent.Index {
return []ent.Index{
index.Fields("name"),
index.Fields("template_code"),
index.Fields("item_type"),
}
}