From 8114bf79e22473ccdc00efc570ceb575e002cdf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Fri, 6 Feb 2026 10:19:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E6=9E=B6=E5=AD=90=E9=A1=B9=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StockShelfOrderApplicationService.java | 44 ++++++++++++------- .../persistence/ShelfMaterialDetailImpl.java | 5 ++- 2 files changed, 32 insertions(+), 17 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java index a9cfafa41..a88586bbd 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java @@ -398,7 +398,7 @@ public class StockShelfOrderApplicationService { //设置容器信息 // setContainerInfo(returnShelfMaterialDetailDOChild); //上架后 设置该记录不允许被修改 - shelfMaterialDetailDO.setAllowModify(2); + returnShelfMaterialDetailDOChild.setAllowModify(2); returnShelfMaterialDetailDOChild.setMaterialDetailSerialNumberList(shelfMaterialDetailDOChild.getMaterialDetailSerialNumberList()); returnShelfMaterialDetailDOChild.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); returnShelfMaterialDetailDOChild.setLevel(2); @@ -410,6 +410,8 @@ public class StockShelfOrderApplicationService { } } returnShelfMaterialDetailDOChild.setMaterialDetailSerialNumberList(shelfMaterialDetailDO.getMaterialDetailSerialNumberList()); + //设置子项的实际数量(等于上架数量) + returnShelfMaterialDetailDOChild.setActualQuantity(returnShelfMaterialDetailDOChild.getShelvesQuantity()); returnShelfMaterialDetailDOChildList.add(returnShelfMaterialDetailDOChild); actualQuantity = actualQuantity.add(returnShelfMaterialDetailDOChild.getShelvesQuantity()); } @@ -455,8 +457,8 @@ public class StockShelfOrderApplicationService { * @param shelfMaterialDetailDO */ private void setStorageLocationInfo(ShelfMaterialDetailDO shelfMaterialDetailDO){ - if (shelfMaterialDetailDO.getStorageLocationId() == null) { - throw new ServiceException("库位ID不能为空"); + if (shelfMaterialDetailDO.getStorageLocationId() == null || shelfMaterialDetailDO.getStorageLocationId() == 0) { + throw new ServiceException("库位ID不能为空或0"); } AjaxResult storageLocationResult = systemServiceFeign.getStorageLocationInfoByStorageLocationId(shelfMaterialDetailDO.getStorageLocationId()); if (storageLocationResult == null) { @@ -471,19 +473,31 @@ public class StockShelfOrderApplicationService { if (dataObj == null) { throw new ServiceException("获取上架库位信息失败:返回数据为空,库位ID:" + shelfMaterialDetailDO.getStorageLocationId()); } - StorageLocationFeignPO storageLocationFeignPO = JSON.parseObject(JSONObject.toJSONString(dataObj), StorageLocationFeignPO.class); - if (storageLocationFeignPO == null) { - throw new ServiceException("获取上架库位信息失败:数据解析失败,库位ID:" + shelfMaterialDetailDO.getStorageLocationId()); + try { + String jsonString = JSONObject.toJSONString(dataObj); + if (jsonString == null || jsonString.trim().isEmpty() || "null".equals(jsonString)) { + throw new ServiceException("获取上架库位信息失败:数据序列化失败,库位ID:" + shelfMaterialDetailDO.getStorageLocationId()); + } + StorageLocationFeignPO storageLocationFeignPO = JSON.parseObject(jsonString, StorageLocationFeignPO.class); + if (storageLocationFeignPO == null) { + throw new ServiceException("获取上架库位信息失败:数据解析失败,库位ID:" + shelfMaterialDetailDO.getStorageLocationId()); + } + shelfMaterialDetailDO.setWarehouseId(storageLocationFeignPO.getWarehouseId()); + shelfMaterialDetailDO.setWarehouseCode(storageLocationFeignPO.getWarehouseCode()); + shelfMaterialDetailDO.setWarehouseName(storageLocationFeignPO.getWarehouseName()); + shelfMaterialDetailDO.setStorageSectionId(storageLocationFeignPO.getStorageSectionId()); + shelfMaterialDetailDO.setStorageCode(storageLocationFeignPO.getStorageCode()); + shelfMaterialDetailDO.setStorageName(storageLocationFeignPO.getStorageName()); + shelfMaterialDetailDO.setStorageLocationId(storageLocationFeignPO.getStorageLocationId()); + shelfMaterialDetailDO.setStorageLocationCode(storageLocationFeignPO.getStorageLocationCode()); + shelfMaterialDetailDO.setStorageLocationName(storageLocationFeignPO.getStorageLocationName()); + } catch (Exception e) { + log.error("解析库位信息失败,库位ID:{},错误:{}", shelfMaterialDetailDO.getStorageLocationId(), e.getMessage(), e); + if (e instanceof ServiceException) { + throw e; + } + throw new ServiceException("获取上架库位信息失败:数据解析异常,库位ID:" + shelfMaterialDetailDO.getStorageLocationId() + ",错误信息:" + e.getMessage()); } - shelfMaterialDetailDO.setWarehouseId(storageLocationFeignPO.getWarehouseId()); - shelfMaterialDetailDO.setWarehouseCode(storageLocationFeignPO.getWarehouseCode()); - shelfMaterialDetailDO.setWarehouseName(storageLocationFeignPO.getWarehouseName()); - shelfMaterialDetailDO.setStorageSectionId(storageLocationFeignPO.getStorageSectionId()); - shelfMaterialDetailDO.setStorageCode(storageLocationFeignPO.getStorageCode()); - shelfMaterialDetailDO.setStorageName(storageLocationFeignPO.getStorageName()); - shelfMaterialDetailDO.setStorageLocationId(storageLocationFeignPO.getStorageLocationId()); - shelfMaterialDetailDO.setStorageLocationCode(storageLocationFeignPO.getStorageLocationCode()); - shelfMaterialDetailDO.setStorageLocationName(storageLocationFeignPO.getStorageLocationName()); } /** diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/persistence/ShelfMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/persistence/ShelfMaterialDetailImpl.java index 1f01a0d16..d10b0a559 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/persistence/ShelfMaterialDetailImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/persistence/ShelfMaterialDetailImpl.java @@ -192,7 +192,7 @@ public class ShelfMaterialDetailImpl extends ServiceImpl inMaterialDetailDOChildList = shelfMaterialDetailDO.getChildren(); List shelfMaterialDetailChildList = new ArrayList<>(); @@ -212,7 +212,8 @@ public class ShelfMaterialDetailImpl extends ServiceImpl