diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialInventoryOmsParamDO.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialInventoryOmsParamDO.java index 242ad102f..05f165a1a 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialInventoryOmsParamDO.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialInventoryOmsParamDO.java @@ -83,6 +83,8 @@ public class MaterialInventoryOmsParamDO extends BaseVOEntity { private Date productionDate; //过期日期 private Date expiryDate; + //进货日期 + private Date purchaseDate; private String executioOrderNumber; diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationMaterialInventory/entity/ReservationMaterialInventory.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationMaterialInventory/entity/ReservationMaterialInventory.java index e75764b66..41d50c856 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationMaterialInventory/entity/ReservationMaterialInventory.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationMaterialInventory/entity/ReservationMaterialInventory.java @@ -210,6 +210,12 @@ public class ReservationMaterialInventory extends BaseVOEntity { @Excel(name = "存货日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date inventoryDate; + @ApiModelProperty("进货日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "进货日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date purchaseDate; + @ApiModelProperty("ExtAttr3") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationMaterialInventory/repository/persistence/ReservationMaterialInventoryImpl.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationMaterialInventory/repository/persistence/ReservationMaterialInventoryImpl.java index 508bf043b..d7840252b 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationMaterialInventory/repository/persistence/ReservationMaterialInventoryImpl.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationMaterialInventory/repository/persistence/ReservationMaterialInventoryImpl.java @@ -127,6 +127,9 @@ public class ReservationMaterialInventoryImpl extends ServiceImpl param = new LambdaQueryWrapper() // .eq(ReservationMaterialInventory::getInOrderNumber, inOrderNumber) //.eq(ReservationMaterialInventory::getLotNumber, lotNumber) @@ -148,6 +151,11 @@ public class ReservationMaterialInventoryImpl extends ServiceImpl reservationMaterialInventories = materialInventoryMapper.selectList(param); if (reservationMaterialInventories != null && reservationMaterialInventories.size() > 0) { ReservationMaterialInventory reservationMaterialInventory = reservationMaterialInventories.get(0); @@ -542,6 +550,7 @@ public class ReservationMaterialInventoryImpl extends ServiceImpl + @@ -138,7 +139,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" IFNULL (sum(a.GROSS_WEIGHT), 0) GROSS_WEIGHT, IFNULL (sum(a.VOLUME), 0) VOLUME, a.ext_attr_1, a.ext_attr_2, a.ext_attr_3, a.ext_attr_4, - a.production_date, a.expiry_date, a.inventory_date, + a.production_date, a.expiry_date, a.inventory_date, a.purchase_date, a.BATCH_REF_NO, a.SHEET_REF_NO, a.BOX_PALLET_NO,nvl(a.unit_name,b.unit_name) as unit_name, a.bar_code as inv_bar_code, a.in_order_number,a.lot_number @@ -280,6 +281,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and a.expiry_date DATEADD(DAY, 1, #{expiryDateEnd}) + + AND TO_CHAR(a.purchase_date, 'yyyy-MM-dd') = #{purchaseDateStr} + + + and a.purchase_date >= #{purchaseDateStart} + + + and a.purchase_date DATEADD(DAY, 1, #{purchaseDateEnd}) + @@ -534,6 +550,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" MAX(a.unit_name) AS unit_name, MAX(a.production_date) AS production_date, MAX(a.inventory_date) AS inventory_date, + MAX(a.purchase_date) AS purchase_date, MAX(a.batch_ref_no) AS batch_ref_no, MAX(a.sheet_ref_no) AS sheet_ref_no, MAX(a.box_pallet_no) AS box_pallet_no, MAX(a.bar_code) AS inv_bar_code, MAX(a.in_order_number) AS in_order_number, MAX(a.lot_number) AS lot_number, @@ -1195,6 +1212,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -1513,6 +1531,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND TRUNC(a.PRODUCTION_DATE) = TRUNC(#{productionDate}) + + AND TRUNC(a.purchase_date) = TRUNC(#{purchaseDate}) + AND a.EXT_ATTR_2 = #{extAttr2} @@ -1544,6 +1565,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND a.PRODUCTION_DATE is null + + AND a.purchase_date is null + AND a.EXT_ATTR_2 = #{extAttr2} diff --git a/sql/20260831_wms_oms_add_purchase_date.sql b/sql/20260831_wms_oms_add_purchase_date.sql new file mode 100644 index 000000000..a521b45c7 --- /dev/null +++ b/sql/20260831_wms_oms_add_purchase_date.sql @@ -0,0 +1,68 @@ +-- ============================================================================= +-- 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 会报错) +-- =============================================================================