-- ============================================================================= -- OMS/WMS 库存查询新增「进货日期」查询条件 —— 新增 PURCHASE_DATE 列 -- 日期: 2026-08-31 -- 数据库: 达梦(DM8), 兼容 Oracle 语法, 表名/字段名统一大写 -- 模式: NGWL_TEST_WMS (mhd_wms) / NGWL_TEST_OMS (mhd_oms) -- 需求: -- OMS-库存管理-库存查询 / WMS-库存管理-库存查询 增加查询条件: -- 物料分类(后端已支持, 无需改表)、进货日期(本脚本, 新字段)、入库日期(复用 -- create_time, 无需改表)。 -- 说明: -- 1. 进货日期录入入口为「收货批次属性」(batch_detail 配置标签「进货日期」), -- 链路: 收货明细 -> 上架明细 -> WMS 物料库存 -> Feign -> OMS 预留库存。 -- 2. 列追加在表尾(DM 不支持 AFTER 定位); 历史数据该列为空, 按进货日期查询 -- 查不到存量库存(无来源可回填)。 -- 3. DATE 类型与同表现有 PRODUCTION_DATE/EXPIRY_DATE/INVENTORY_DATE 保持一致。 -- ============================================================================= -- WMS 收货明细 ALTER TABLE "NGWL_TEST_WMS"."RECEIPT_MATERIAL_DETAIL" ADD COLUMN PURCHASE_DATE DATE; COMMENT ON COLUMN "NGWL_TEST_WMS"."RECEIPT_MATERIAL_DETAIL".PURCHASE_DATE IS '进货日期'; -- WMS 上架明细 ALTER TABLE "NGWL_TEST_WMS"."SHELF_MATERIAL_DETAIL" ADD COLUMN PURCHASE_DATE DATE; COMMENT ON COLUMN "NGWL_TEST_WMS"."SHELF_MATERIAL_DETAIL".PURCHASE_DATE IS '进货日期'; -- WMS 物料库存 ALTER TABLE "NGWL_TEST_WMS"."MATERIAL_INVENTORY" ADD COLUMN PURCHASE_DATE DATE; COMMENT ON COLUMN "NGWL_TEST_WMS"."MATERIAL_INVENTORY".PURCHASE_DATE IS '进货日期'; -- OMS 预留库存 ALTER TABLE "NGWL_TEST_OMS"."RESERVATION_MATERIAL_INVENTORY" ADD COLUMN PURCHASE_DATE DATE; COMMENT ON COLUMN "NGWL_TEST_OMS"."RESERVATION_MATERIAL_INVENTORY".PURCHASE_DATE IS '进货日期'; -- ============================================================================= -- 批次明细配置(可选, 数据操作): 需要按进货日期录入/分行的物料, 在其批次规则中 -- 新增一条明细。BATCH_LABELS 必须一字不差为「进货日期」(后端 setMore() 按标签 -- 精确匹配解析); IS_DISPLAY=1 时同时参与库存行合并键(不同进货日期分库存行)。 -- -- 参考现有「生产日期」配置行(格式/控件取值对齐): -- SELECT * FROM "NGWL_TEST_SYSTEM"."BATCH_DETAIL" WHERE BATCH_LABELS = '生产日期'; -- -- 配置模板(BATCH_ID 等按实际批次规则替换, 建议直接在 系统-批次管理 界面新增): -- INSERT INTO "NGWL_TEST_SYSTEM"."BATCH_DETAIL" -- (BATCH_DETAIL_ID, ORGANIZATION_ID, TOP_ORGANIZATION_ID, BATCH_ID, -- BATCH_LABELS, FIELD_NAME, INPUT_CONTROL, ATTRIBUTE_FORMAT, IS_DISPLAY) -- VALUES -- (<主键>, <组织ID>, <顶级组织ID>, <批次规则ID>, -- '进货日期', 'purchase_date', <同生产日期行>, '2', 1); -- -- ATTRIBUTE_FORMAT: 2-日期 -- ============================================================================= -- ============================================================================= -- 执行前检查(确认列不存在, 避免重复执行报错; DM 数据字典标识符按大写存储) -- SELECT OWNER, TABLE_NAME, COLUMN_NAME -- FROM ALL_TAB_COLUMNS -- WHERE COLUMN_NAME = 'PURCHASE_DATE' -- AND OWNER IN ('NGWL_TEST_WMS', 'NGWL_TEST_OMS') -- AND TABLE_NAME IN ('RECEIPT_MATERIAL_DETAIL', 'SHELF_MATERIAL_DETAIL', -- 'MATERIAL_INVENTORY', 'RESERVATION_MATERIAL_INVENTORY'); -- -- 回滚(发布前执行了本脚本需回退时) -- ALTER TABLE "NGWL_TEST_WMS"."RECEIPT_MATERIAL_DETAIL" DROP COLUMN PURCHASE_DATE; -- ALTER TABLE "NGWL_TEST_WMS"."SHELF_MATERIAL_DETAIL" DROP COLUMN PURCHASE_DATE; -- ALTER TABLE "NGWL_TEST_WMS"."MATERIAL_INVENTORY" DROP COLUMN PURCHASE_DATE; -- ALTER TABLE "NGWL_TEST_OMS"."RESERVATION_MATERIAL_INVENTORY" DROP COLUMN PURCHASE_DATE; -- -- 发布顺序: 先执行本 DDL 再发布服务(实体带新字段而表无列, MyBatis-Plus insert 会报错) -- =============================================================================