diff --git a/mhd-modules/mhd-system/src/main/resources/mapper/basic/storageLocation/StorageLocationMapper.xml b/mhd-modules/mhd-system/src/main/resources/mapper/basic/storageLocation/StorageLocationMapper.xml index e2915658e..e9aa41514 100644 --- a/mhd-modules/mhd-system/src/main/resources/mapper/basic/storageLocation/StorageLocationMapper.xml +++ b/mhd-modules/mhd-system/src/main/resources/mapper/basic/storageLocation/StorageLocationMapper.xml @@ -185,8 +185,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - order by a.create_time desc + order by a.storage_name asc, a.create_time desc \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/reviewOrder/ReviewOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/reviewOrder/ReviewOrderApplicationService.java index 0329feb68..8b805a8e7 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/reviewOrder/ReviewOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/reviewOrder/ReviewOrderApplicationService.java @@ -234,7 +234,7 @@ public class ReviewOrderApplicationService { } db.setPendingReviewQty(pending.subtract(qty)); db.setReviewedQty(reviewed.add(qty)); - // 同步页面传入的重量/体积/面积 + // 同步页面传入的重量/体积/面积/尺寸 if (i.getNetWeightKg() != null) { db.setNetWeightKg(i.getNetWeightKg()); } @@ -247,6 +247,9 @@ public class ReviewOrderApplicationService { if (i.getAreaSqm() != null) { db.setAreaSqm(i.getAreaSqm()); } + if (i.getSize() != null) { + db.setSize(i.getSize()); + } fillOperator(db); reviewMaterialDetailMapper.updateById(db); } @@ -288,7 +291,7 @@ public class ReviewOrderApplicationService { db.setReviewedQty(reviewed.subtract(qty)); db.setPendingReviewQty(pending.add(qty)); db.setCancelQty(cancel.add(qty)); - // 同步页面传入的重量/体积/面积 + // 同步页面传入的重量/体积/面积/尺寸 if (i.getNetWeightKg() != null) { db.setNetWeightKg(i.getNetWeightKg()); } @@ -301,6 +304,9 @@ public class ReviewOrderApplicationService { if (i.getAreaSqm() != null) { db.setAreaSqm(i.getAreaSqm()); } + if (i.getSize() != null) { + db.setSize(i.getSize()); + } fillOperator(db); reviewMaterialDetailMapper.updateById(db); } @@ -337,16 +343,16 @@ public class ReviewOrderApplicationService { // 与出库单「复核确认」一致:复核数量与拣货数量不一致时生成复核异常单(FHYC) genOutOrderAbnormalAfterReviewConfirm(reviewOrderId); // 校验:复核确认前,已复核数量必须等于计划数量 - List details = reviewOrderMapper.queryDetailByReviewOrderId(reviewOrderId); - if (!CollectionUtils.isEmpty(details)) { - for (ReviewMaterialDetailPO detail : details) { - BigDecimal reviewed = nz(detail.getReviewedQty()); - BigDecimal plan = nz(detail.getMaterialPlanQty()); - if (reviewed.compareTo(plan) != 0) { - throw new ServiceException("该物料已复核数量不等于计划数量"); - } - } - } +// List details = reviewOrderMapper.queryDetailByReviewOrderId(reviewOrderId); +// if (!CollectionUtils.isEmpty(details)) { +// for (ReviewMaterialDetailPO detail : details) { +// BigDecimal reviewed = nz(detail.getReviewedQty()); +// BigDecimal plan = nz(detail.getMaterialPlanQty()); +// if (reviewed.compareTo(plan) != 0) { +// throw new ServiceException("该物料已复核数量不等于计划数量"); +// } +// } +// } ReviewOrder order = reviewOrderMapper.selectById(reviewOrderId); if (order == null) { continue; @@ -751,8 +757,11 @@ public class ReviewOrderApplicationService { if (i.getAreaSqm() != null) { db.setAreaSqm(i.getAreaSqm()); } + if (i.getSize() != null) { + db.setSize(i.getSize()); + } if (qtyTouched || i.getNetWeightKg() != null || i.getGrossWeightKg() != null - || i.getVolumeCbm() != null || i.getAreaSqm() != null) { + || i.getVolumeCbm() != null || i.getAreaSqm() != null || i.getSize() != null) { fillOperator(db); reviewMaterialDetailMapper.updateById(db); } @@ -792,11 +801,18 @@ public class ReviewOrderApplicationService { private void refreshReviewOrderStatus(Long reviewOrderId) { List rows = reviewOrderMapper.queryDetailByReviewOrderId(reviewOrderId); - // 业务口径:只有全部明细待复核=0 时,状态才置为 2;部分复核仍保持 1。 - // 状态 3 仅在 checkConfirm 中设置。 - boolean allReviewed = !CollectionUtils.isEmpty(rows) - && rows.stream().allMatch(r -> nz(r.getPendingReviewQty()).compareTo(BigDecimal.ZERO) == 0); - Integer targetStatus = allReviewed ? 2 : 1; + // ================== 旧口径:全部明细待复核=0 置 2,部分复核保持 1 ================== +// // 业务口径:只有全部明细待复核=0 时,状态才置为 2;部分复核仍保持 1。 +// // 状态 3 仅在 checkConfirm 中设置。 +// boolean allReviewed = !CollectionUtils.isEmpty(rows) +// && rows.stream().allMatch(r -> nz(r.getPendingReviewQty()).compareTo(BigDecimal.ZERO) == 0); +// Integer targetStatus = allReviewed ? 2 : 1; + // ================== 新口径:部分复核/全部复核完未确认均置 复核中(2),完全未复核保持 待复核(1) ================== + // 只要有任意明细已复核数量>0(部分复核 / 全部复核完未确认)即为复核中(2); + // 完全未复核(全部已复核=0)保持待复核(1)。状态 3 仅在 checkConfirm 中设置。 + boolean anyReviewed = !CollectionUtils.isEmpty(rows) + && rows.stream().anyMatch(r -> nz(r.getReviewedQty()).compareTo(BigDecimal.ZERO) > 0); + Integer targetStatus = anyReviewed ? 2 : 1; ReviewOrder order = reviewOrderMapper.selectById(reviewOrderId); if (order == null) { diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/service/InventoryAdjustmentRecordDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/service/InventoryAdjustmentRecordDomainService.java index 2f0fe6053..51ad599be 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/service/InventoryAdjustmentRecordDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/service/InventoryAdjustmentRecordDomainService.java @@ -292,7 +292,7 @@ public class InventoryAdjustmentRecordDomainService { //推送oms库存调整记录 try{ // 当仓库启用 oms 才进行推送 - if (warehousePO.getIsEnable() == 1) { + if (ObjectUtil.isNotNull(warehousePO) && warehousePO.getIsEnable() == 1) { Boolean pushSuccess = pushOms(materialInventory, inventoryAdjustmentRecordDO); if (!pushSuccess) { throw new ServiceException("库存调整推送OMS失败,请稍后重试"); diff --git a/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml b/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml index 8656e711d..25a2173a3 100644 --- a/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml +++ b/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml @@ -458,8 +458,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" @@ -531,28 +531,37 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - a.shipper_id, a.shipper_code, a.shipper_name, - b.material_base_info_id, b.material_code, b.material_name, b.SPECIFICATION_MODEL, - a.warehouse_id, a.warehouse_code, a.warehouse_name, - a.organization_id, a.organization_name, a.top_organization_id, - MAX(b.material_type) AS material_type, - MAX(b.material_type_name) AS material_type_name, - MAX(b.bar_code) AS bar_code, - MAX(nvl(a.unit_name, b.unit_name)) AS unit_name, - MAX(b.pack_id) AS pack_id, - MAX(b.pack_code) AS pack_code, - MAX(b.pack_name) AS pack_name, - MAX(a.unit) AS unit, - IFNULL(SUM(a.freeze_quantity), 0) AS freeze_quantity, - IFNULL(SUM(a.inventory_quantity), 0) AS inventory_quantity, - IFNULL(SUM(a.allocation_quantity), 0) AS allocation_quantity, - IFNULL(SUM(a.area), 0) AS area, - IFNULL(SUM(a.NET_WEIGHT), 0) AS NET_WEIGHT, - IFNULL(SUM(a.GROSS_WEIGHT), 0) AS GROSS_WEIGHT, - IFNULL(SUM(a.VOLUME), 0) AS VOLUME, - MIN(a.create_time) AS create_time, -- 新增:首次入库时间 - MAX(a.update_time) AS update_time, - CASE WHEN IFNULL(SUM(a.inventory_quantity), 0) = 0 THEN 1 ELSE 0 END AS sort_order + a.shipper_id, + MAX(a.shipper_code) AS shipper_code, + MAX(a.shipper_name) AS shipper_name, + b.material_base_info_id, + MAX(b.material_code) AS material_code, + MAX(b.material_name) AS material_name, + MAX(b.SPECIFICATION_MODEL) AS SPECIFICATION_MODEL, + a.warehouse_id, + MAX(a.warehouse_code) AS warehouse_code, + MAX(a.warehouse_name) AS warehouse_name, + a.organization_id, + MAX(a.organization_name) AS organization_name, + a.top_organization_id, + MAX(b.material_type) AS material_type, + MAX(b.material_type_name) AS material_type_name, + MAX(b.bar_code) AS bar_code, + MAX(nvl(a.unit_name, b.unit_name)) AS unit_name, + MAX(b.pack_id) AS pack_id, + MAX(b.pack_code) AS pack_code, + MAX(b.pack_name) AS pack_name, + MAX(a.unit) AS unit, + IFNULL(SUM(a.freeze_quantity), 0) AS freeze_quantity, + IFNULL(SUM(a.inventory_quantity), 0) AS inventory_quantity, + IFNULL(SUM(a.allocation_quantity), 0) AS allocation_quantity, + IFNULL(SUM(a.area), 0) AS area, + IFNULL(SUM(a.NET_WEIGHT), 0) AS NET_WEIGHT, + IFNULL(SUM(a.GROSS_WEIGHT), 0) AS GROSS_WEIGHT, + IFNULL(SUM(a.VOLUME), 0) AS VOLUME, + MIN(a.create_time) AS create_time, + MAX(a.update_time) AS update_time, + CASE WHEN IFNULL(SUM(a.inventory_quantity), 0) = 0 THEN 1 ELSE 0 END AS sort_order