feat(mes): 添加定时同步可生产数量到WMS及BOM项相关标准字段
- 在main.go中添加定时任务每10分钟同步可生产数量到WMS系统 - 为BomItem实体添加relatedStandard字段及相关CRUD方法 - 为InspectionRecord实体添加reportNo、materialCode、materialName等字段 - 更新ent schema确保新字段的验证和默认值设置 - 添加必要的数据库迁移和字段映射逻辑
This commit is contained in:
@@ -117,6 +117,55 @@ func applyColumnPatches(ctx context.Context) {
|
||||
`ALTER TABLE materials ADD COLUMN IF NOT EXISTS safety_stock bigint NOT NULL DEFAULT 0`,
|
||||
// 备料台账:目标工位(备料送到哪个装配工位)
|
||||
`ALTER TABLE order_material_ledgers ADD COLUMN IF NOT EXISTS target_station text`,
|
||||
// 备料台账:完成时间(最后一笔出库时间,问题记录 六.10)
|
||||
`ALTER TABLE order_material_ledgers ADD COLUMN IF NOT EXISTS completed_at bigint`,
|
||||
// 通用出库:出库类别/归属/目标工位(问题记录 二.2/二.3/二.4)
|
||||
`ALTER TABLE outbound_orders ADD COLUMN IF NOT EXISTS outbound_category text`,
|
||||
`ALTER TABLE outbound_orders ADD COLUMN IF NOT EXISTS ownership_type text`,
|
||||
`ALTER TABLE outbound_orders ADD COLUMN IF NOT EXISTS ownership_no text`,
|
||||
`ALTER TABLE outbound_orders ADD COLUMN IF NOT EXISTS target_station text`,
|
||||
// 库存明细:库位贯通 货架/层/位置(问题记录 一.4)
|
||||
`ALTER TABLE inventories ADD COLUMN IF NOT EXISTS shelf_no text`,
|
||||
`ALTER TABLE inventories ADD COLUMN IF NOT EXISTS layer_no text`,
|
||||
`ALTER TABLE inventories ADD COLUMN IF NOT EXISTS position_no text`,
|
||||
// 半成品/成品入库扩展(问题记录 L218/L222/L224/L230)
|
||||
`ALTER TABLE inventories ADD COLUMN IF NOT EXISTS ownership_type text`,
|
||||
`ALTER TABLE inventories ADD COLUMN IF NOT EXISTS ownership_no text`,
|
||||
`ALTER TABLE inventories ADD COLUMN IF NOT EXISTS product_status text`,
|
||||
`ALTER TABLE inventories ADD COLUMN IF NOT EXISTS related_standard text`,
|
||||
`ALTER TABLE inventories ADD COLUMN IF NOT EXISTS test_record_no text`,
|
||||
`ALTER TABLE inventories ADD COLUMN IF NOT EXISTS recorded_by text`,
|
||||
`ALTER TABLE inventories ADD COLUMN IF NOT EXISTS recorded_at bigint`,
|
||||
`ALTER TABLE inventories ADD COLUMN IF NOT EXISTS outbound_reason text`,
|
||||
// 检验记录扩展(问题记录 L107/L149/L150/L494:归属/相关标准/生产厂家/名称冗余)
|
||||
`ALTER TABLE inspection_records ADD COLUMN IF NOT EXISTS material_name text`,
|
||||
`ALTER TABLE inspection_records ADD COLUMN IF NOT EXISTS ownership_type text`,
|
||||
`ALTER TABLE inspection_records ADD COLUMN IF NOT EXISTS ownership_no text`,
|
||||
`ALTER TABLE inspection_records ADD COLUMN IF NOT EXISTS related_standard text`,
|
||||
`ALTER TABLE inspection_records ADD COLUMN IF NOT EXISTS manufacturer text`,
|
||||
// 入库单质量状态(问题记录 L129:入库记录增加 合格/不合格 列)
|
||||
`ALTER TABLE inbound_orders ADD COLUMN IF NOT EXISTS quality_status text`,
|
||||
// 入库单库位四级贯通(方案 E):区域已有 zone_code,补货架/层/位置三列
|
||||
`ALTER TABLE inbound_orders ADD COLUMN IF NOT EXISTS shelf_no text`,
|
||||
`ALTER TABLE inbound_orders ADD COLUMN IF NOT EXISTS layer_no text`,
|
||||
`ALTER TABLE inbound_orders ADD COLUMN IF NOT EXISTS position_no text`,
|
||||
// 图号合并(问题记录 L18):drawing_no 已并入 code,存量库丢弃旧列
|
||||
`ALTER TABLE materials DROP COLUMN IF EXISTS drawing_no`,
|
||||
// 批次号/SN 唯一约束(P2-1/P2-2):并发导入防撞号。部分唯一索引只约束非空值——
|
||||
// 空串/NULL(电气件无批次、结构件无SN)不参与唯一性;batch_no 仅约束结构件(manage_mode=1)。
|
||||
// 注:存量若有重复数据会导致建索引失败(仅告警不阻断启动),上线前须先清理重复。
|
||||
`CREATE UNIQUE INDEX IF NOT EXISTS ux_inventories_batch_no ON inventories (batch_no) WHERE manage_mode = 1 AND batch_no IS NOT NULL AND batch_no <> ''`,
|
||||
`CREATE UNIQUE INDEX IF NOT EXISTS ux_inventories_sn_code ON inventories (sn_code) WHERE sn_code IS NOT NULL AND sn_code <> ''`,
|
||||
// U18 货位主数据 remodel:zone_code 从“单列唯一(大区时代)”降为“区域级(货位四级第一级)”,
|
||||
// 同一区域可登记多个货位;货位唯一性改由四级组合唯一索引保证,防止同一货位重复登记。
|
||||
// 先删 ent 旧生成的 zone_code 单列唯一索引,再建组合唯一索引(COALESCE 归一 NULL/空串,
|
||||
// 因 seed 的 Z01~Z04 三级明细为 NULL)。存量无重复四级组合(上线前已核实)。
|
||||
`DROP INDEX IF EXISTS zones_zone_code_key`,
|
||||
`CREATE UNIQUE INDEX IF NOT EXISTS ux_zones_location ON zones (zone_code, COALESCE(shelf_no, ''), COALESCE(layer_no, ''), COALESCE(position_no, ''))`,
|
||||
// U18 盘点四级贯通:盘点快照冻结货架/层/位置,盘点差异可精确定位到货位。
|
||||
`ALTER TABLE stocktake_items ADD COLUMN IF NOT EXISTS shelf_no text`,
|
||||
`ALTER TABLE stocktake_items ADD COLUMN IF NOT EXISTS layer_no text`,
|
||||
`ALTER TABLE stocktake_items ADD COLUMN IF NOT EXISTS position_no text`,
|
||||
}
|
||||
for _, s := range stmts {
|
||||
if _, err := rawDB.ExecContext(ctx, s); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user