From 3b15d99659becbf56185a750e030a873e09b6dd2 Mon Sep 17 00:00:00 2001 From: zhenghaoyu Date: Tue, 13 Aug 2024 16:24:42 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=B9=B2=E7=BA=BFbug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feign/IDistributionParcelListClient.java | 9 + .../IDistributionStockArticleClient.java | 8 + .../feign/DistributionParcelListClient.java | 10 + .../feign/DistributionStockArticleClient.java | 10 + .../IDistributionParcelListService.java | 1 + .../impl/PanFactoryDataServiceImpl.java | 4 + .../impl/SyncOrderInfoServiceImpl.java | 7 + .../listener/mq/PackageFanoutListener.java | 3 +- .../service/impl/OpenOrderServiceImpl.java | 20 +- .../impl/TrunklineCarsLoadServiceImpl.java | 24 ++ .../impl/WarehouseTrayGoodsServiceImpl.java | 5 +- .../impl/WarehouseTrayTypeServiceImpl.java | 209 +++++++++++++++++- 12 files changed, 295 insertions(+), 15 deletions(-) diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java index 30fe2601b..b4d2e6835 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java @@ -204,4 +204,13 @@ public interface IDistributionParcelListClient { @PostMapping(API_PREFIX + "/addZeroParcelList") void addZeroParcelList(@RequestBody List addParcelListEntityList); + + @PostMapping(API_PREFIX + "/findListByIds") + List findListByIds(@RequestBody List orderPackageIdList); + + @PostMapping(API_PREFIX + "/clearPallet") + void clearPallet(@RequestBody List orderPackageIdList); + + + } diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionStockArticleClient.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionStockArticleClient.java index 72f9194f1..344e7c3a9 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionStockArticleClient.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionStockArticleClient.java @@ -33,6 +33,7 @@ import org.springframework.web.bind.annotation.RequestParam; import java.util.List; import java.util.Map; +import java.util.Set; /** * 配送在库订单 Feign接口类 @@ -194,4 +195,11 @@ public interface IDistributionStockArticleClient { @GetMapping(API_PREFIX + "/addHandQuantityAndIncomingNum") void addHandQuantityAndIncomingNum(@RequestParam Long stockId, @RequestParam Integer enterNum); + + @GetMapping(API_PREFIX + "/findListByIds") + List findListByIds(@RequestBody Set stockArticleIdSet); + + @GetMapping(API_PREFIX + "/clearTraysByIds") + void clearTraysByIds(@RequestBody List clearStockArticleIdList); + } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java index 55e3c569a..816f5d8bc 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java @@ -492,4 +492,14 @@ public class DistributionParcelListClient implements IDistributionParcelListClie distributionParcelNumberService.saveBatch(addList); } + + @Override + public List findListByIds(List orderPackageIdList) { + return distributionParcelListService.listByIds(orderPackageIdList); + } + + @Override + public void clearPallet(List orderPackageIdList) { + distributionParcelListService.clearPalletByIds(orderPackageIdList); + } } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionStockArticleClient.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionStockArticleClient.java index fc6fe492f..9be71d31c 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionStockArticleClient.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionStockArticleClient.java @@ -389,4 +389,14 @@ public class DistributionStockArticleClient implements IDistributionStockArticle distributionStockArticleService.addHandQuantityAndIncomingNum(stockId,enterNum); } + @Override + public List findListByIds(Set stockArticleIdSet) { + return distributionStockArticleService.listByIds(stockArticleIdSet); + } + + @Override + public void clearTraysByIds(List clearStockArticleIdList) { + distributionStockArticleService.clearTraysByIds(clearStockArticleIdList); + } + } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionParcelListService.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionParcelListService.java index ea2c3d3c5..3f363a7e2 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionParcelListService.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionParcelListService.java @@ -254,4 +254,5 @@ public interface IDistributionParcelListService extends BaseService parcelListIdList, String orderCode); void clearAllocationByIds(List clearTrayList); + } diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/pan/service/impl/PanFactoryDataServiceImpl.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/pan/service/impl/PanFactoryDataServiceImpl.java index ae60e6b22..66a4a45ce 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/pan/service/impl/PanFactoryDataServiceImpl.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/pan/service/impl/PanFactoryDataServiceImpl.java @@ -660,6 +660,10 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService { }else{ distributionStockArticleEntity.setTotalNumber(total); distributionStockArticleEntity.setGenre(1); + String reservationStatus = distributionStockArticleEntity.getReservationStatus(); + if("30".equals(reservationStatus)){ + distributionStockArticleEntity.setReservationStatus("20"); + } distributionStockArticleClient.saveOrUpdate(distributionStockArticleEntity); } diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/SyncOrderInfoServiceImpl.java b/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/SyncOrderInfoServiceImpl.java index c10c530be..5efe2dab1 100644 --- a/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/SyncOrderInfoServiceImpl.java +++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/SyncOrderInfoServiceImpl.java @@ -1613,6 +1613,7 @@ public class SyncOrderInfoServiceImpl implements ISyncOrderInfoService { private void saveOrderPackage(DistributionStockArticleEntity distributionStockArticleEntity, BasicdataWarehouseEntity basicdataWarehouseEntity, String waybillNo,String operationTime,Integer oldWarehouseId,Integer inventoryId) { String orderCode = distributionStockArticleEntity.getOrderCode(); + String reservationStatus = distributionStockArticleEntity.getReservationStatus(); Long warehouseId = basicdataWarehouseEntity.getId(); //查询订单下的所有包件 @@ -1771,6 +1772,12 @@ public class SyncOrderInfoServiceImpl implements ISyncOrderInfoService { log.warn("#################handleDataToPlatform: 保存包件信息失败 orderCode={}", entity.getOrderCode()); }else{ log.info("################handleDataToPlatform: 保存包件成功 OrderPackageCode={}",vo.getPacketBarCode()); + if("30".equals(reservationStatus)){ + distributionStockArticleEntity.setReservationStatus("20"); + distributionStockArticleClient.saveOrUpdate(distributionStockArticleEntity); + } + + // distributionStockArticleClient.updateOrderInfo(orderCode,distributionStockArticleEntity.getWarehouseId()); // Integer handQuantity = distributionStockArticleEntity.getHandQuantity(); // Integer totalNumber = distributionStockArticleEntity.getTotalNumber(); diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/PackageFanoutListener.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/PackageFanoutListener.java index 984a8bc4d..5c5eccb20 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/PackageFanoutListener.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/PackageFanoutListener.java @@ -54,7 +54,8 @@ public class PackageFanoutListener { Integer workNode = jsonObject.getInt("workNode"); if (WorkNodeEnums.SIGN_DIRECT_SHIPPER.getCode().equals(workNode) || WorkNodeEnums.SIGN_TRIPARTITE_TRANSFER_DEPART.getCode().equals(workNode) - || WorkNodeEnums.DISTRIBUTION_SIGN_FOR.getCode().equals(workNode)) { + || WorkNodeEnums.DISTRIBUTION_SIGN_FOR.getCode().equals(workNode) + || WorkNodeEnums.DISTRIBUTION_ABNORMAL_SIGN_FOR.getCode().equals(workNode)) { JSONArray orderPackageCodes = jsonObject.getJSONArray("orderPackageCodes"); List orderPackageCodeList = orderPackageCodes.toList(String.class); diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java index 91921cb14..3cfa6a2c9 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java @@ -190,24 +190,26 @@ public class OpenOrderServiceImpl implements IOpenOrderService { } + TrunklineAdvanceEntity advanceEntity = list.get(0); + if(!Objects.isNull(advanceEntity)){ + String consigneePerson = advanceEntity.getConsigneePerson(); + if(!StringUtil.isBlank(consigneePerson)){ + openOrderVO.setConsigneeName(consigneePerson); + openOrderVO.setConsigneeMobile(advanceEntity.getConsigneeMobile()); + openOrderVO.setConsigneeAddress(advanceEntity.getConsigneeAddress()); + } + } + //收货单位-----根据三方商场找到对应的clientId Long clientId = basicdataTripartiteMallClient.getClientIdByNameAndBrandAndCode(dealerName,StringUtil.isBlank(dealerCode)?"":dealerCode, brand); BasicdataClientVO basicdataClientEntity = basicdataClientClient.findEntityVoById(clientId); if (!Objects.isNull(basicdataClientEntity)) { openOrderVO.setConsigneeClientId(clientId); - TrunklineAdvanceEntity advanceEntity = list.get(0); openOrderVO.setConsignee(basicdataClientEntity.getClientName()); openOrderVO.setConsigneeName(basicdataClientEntity.getLinkman()); openOrderVO.setConsigneeMobile(basicdataClientEntity.getPhone()); openOrderVO.setConsigneeAddress(basicdataClientEntity.getDetailedly()); - if(!Objects.isNull(advanceEntity)){ - String consigneePerson = advanceEntity.getConsigneePerson(); - if(!StringUtil.isBlank(consigneePerson)){ - openOrderVO.setConsigneeName(consigneePerson); - openOrderVO.setConsigneeMobile(advanceEntity.getConsigneeMobile()); - openOrderVO.setConsigneeAddress(advanceEntity.getConsigneeAddress()); - } - } + List destinationArray = new ArrayList<>(); String badeRegionAreaId = basicdataClientEntity.getBladeRegionAreaId(); diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java index 4cebefb91..c77040f3a 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java @@ -1142,6 +1142,8 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.eq("tray_code",trayCode) .eq("is_deleted",0); WarehouseTrayTypeEntity trayTypeEntity = baseMapper.selectOne(queryWrapper); trayTypeEntity.setWarehouseId(warehouseId); updateById(trayTypeEntity); - Long trayTypeId = trayTypeEntity.getId(); warehouseTrayGoodsService.updeteWarehouseIdByTrayTypeId(trayTypeId,warehouseId); + + + + QueryWrapper trayGoodsEntityQueryWrapper = new QueryWrapper<>(); + trayGoodsEntityQueryWrapper.eq("tray_type_id",trayTypeId); + List trayGoodsEntities = warehouseTrayGoodsService.list(trayGoodsEntityQueryWrapper); + + List updateStockArticleList = new ArrayList<>(); + List clearStockArticleIdList = new ArrayList<>(); + List updateParceList = new ArrayList<>(); + + + //把trayGoodsEntities中所有元素的associationType进行分组 + Map> map = trayGoodsEntities.stream().collect(Collectors.groupingBy(WarehouseTrayGoodsEntity::getAssociationType)); + map.keySet().forEach(associationType -> { + List warehouseTrayGoodsEntities = map.get(associationType); + if("1".equals(associationType)){ + //把warehouseTrayGoodsEntities中所有的associationId放入一个Set + Set orderIdSet = warehouseTrayGoodsEntities.stream().map(WarehouseTrayGoodsEntity::getAssociationId).collect(Collectors.toSet()); + List stockArticleEntityList = distributionStockArticleClient.findListByIds(orderIdSet); + stockArticleEntityList.forEach(stockArticleEntity -> { + String trays = stockArticleEntity.getTrays(); + if(!StringUtil.isBlank(trays)){ + if(trays.contains(palletName)){ + List list = Arrays.asList(trays.split(trays)); + List trayList = new ArrayList<>(list); + trayList.remove(palletName); + if(CollUtil.isNotEmpty(trayList)){ + DistributionStockArticleEntity updateStockArticle = new DistributionStockArticleEntity(); + updateStockArticle.setId(stockArticleEntity.getId()); + updateStockArticle.setTrays(StringUtil.join(trayList.toArray(),",")); + updateStockArticleList.add(updateStockArticle); + }else{ + clearStockArticleIdList.add(stockArticleEntity.getId()); + } + } + } + }); + + }else if ("3".equals(associationType)){ + //把trayGoodsEntities中的所有元素的associationId放入一个List + List orderPackageIdList = warehouseTrayGoodsEntities.stream().map(WarehouseTrayGoodsEntity::getAssociationId).collect(Collectors.toList()); + + //清除原来仓库的包件上的托盘信息 + distributionParcelListClient.clearPallet(orderPackageIdList); + + //查询原仓库有哪些包件 + List oldParceList = distributionParcelListClient.findListByIds(orderPackageIdList); + //把oldParceList中的所有元素的stockArticleId放入一个set + Set stockArticleIdSet = oldParceList.stream().map(DistributionParcelListEntity::getStockArticleId).collect(Collectors.toSet()); + List oldStockArticleList = distributionStockArticleClient.findListByIds(stockArticleIdSet); + oldStockArticleList.forEach(stockArticleEntity -> { + String trays = stockArticleEntity.getTrays(); + if(!StringUtil.isBlank(trays)){ + if(trays.contains(palletName)){ + List list = Arrays.asList(trays.split(trays)); + List trayList = new ArrayList<>(list); + trayList.remove(palletName); + if(CollUtil.isNotEmpty(trayList)){ + DistributionStockArticleEntity updateStockArticle = new DistributionStockArticleEntity(); + updateStockArticle.setId(stockArticleEntity.getId()); + updateStockArticle.setTrays(StringUtil.join(trayList.toArray(),",")); + updateStockArticleList.add(updateStockArticle); + }else{ + clearStockArticleIdList.add(stockArticleEntity.getId()); + } + } + } + }); + } + }); + +// if(CollUtil.isNotEmpty(updateStockArticleList)){ +// distributionStockArticleClient.updateByBatchId(updateStockArticleList); +// } +// +// if(CollUtil.isNotEmpty(clearStockArticleIdList)){ +// distributionStockArticleClient.clearTraysByIds(clearStockArticleIdList); +// } + + + List updateTrayGoodsList = new ArrayList<>(); + + //处理新的 + map.keySet().forEach(associationType -> { + List warehouseTrayGoodsEntities = map.get(associationType); + //把warehouseTrayGoodsEntities转化成以associationValue为key的Map + Map warehouseTrayGoodsMap = warehouseTrayGoodsEntities.stream() + .collect(Collectors.toMap( + WarehouseTrayGoodsEntity::getAssociationValue, // key + entity -> entity, // value + (existing, replacement) -> existing // 如果key重复,保留第一个值 + )); + + + if("1".equals(associationType)){ + //把warehouseTrayGoodsEntities中所有元素的associationValue放入一个Set + Set orderCodeSet = warehouseTrayGoodsEntities.stream().map(WarehouseTrayGoodsEntity::getAssociationValue).collect(Collectors.toSet()); + FindParamterDTO findParamterDTO = new FindParamterDTO(); + findParamterDTO.setOrderCodeSet(orderCodeSet); + findParamterDTO.setWarehouseId(warehouseId); + List stockArticleEntityList = distributionStockArticleClient.findListByOrderCodesAndWarehouseId(findParamterDTO); + stockArticleEntityList.forEach(stockArticleEntity -> { + WarehouseTrayGoodsEntity warehouseTrayGoodsEntity = warehouseTrayGoodsMap.get(stockArticleEntity.getOrderCode()); + if(!Objects.isNull(warehouseTrayGoodsEntity)){ + warehouseTrayGoodsEntity.setAssociationId(stockArticleEntity.getId()); + warehouseTrayGoodsEntity.setWarehouseId(warehouseId); + updateTrayGoodsList.add(warehouseTrayGoodsEntity); + } + String trays = stockArticleEntity.getTrays(); + if(!StringUtil.isBlank(trays)){ + if(!trays.contains(palletName)){ + List list = Arrays.asList(trays.split(trays)); + List trayList = new ArrayList<>(list); + trayList.add(palletName); + DistributionStockArticleEntity updateStockArticle = new DistributionStockArticleEntity(); + updateStockArticle.setId(stockArticleEntity.getId()); + updateStockArticle.setTrays(StringUtil.join(trayList.toArray(),",")); + updateStockArticleList.add(updateStockArticle); + } + }else{ + DistributionStockArticleEntity updateStockArticle = new DistributionStockArticleEntity(); + updateStockArticle.setId(stockArticleEntity.getId()); + updateStockArticle.setTrays(palletName); + updateStockArticleList.add(updateStockArticle); + } + }); + + }else if ("3".equals(associationType)){ + + //把warehouseTrayGoodsEntities中所有元素的associationValue放入一个Set + Set orderPackageCodeSet = warehouseTrayGoodsEntities.stream().map(WarehouseTrayGoodsEntity::getAssociationValue).collect(Collectors.toSet()); + FindParamterDTO findParamterDTO = new FindParamterDTO(); + findParamterDTO.setOrderPackageCodeList(new ArrayList<>(orderPackageCodeSet)); + findParamterDTO.setWarehouseId(warehouseId); + List parcelListEntityList = distributionParcelListClient.findListByOrderPackageCodeList(findParamterDTO); + + //把parcelListEntityList转化成以orderPackageCode为key的Map + Map parcelListEntityMap = parcelListEntityList.stream() + .collect(Collectors.toMap( + DistributionParcelListEntity::getOrderPackageCode, // key + entity -> entity, // value + (existing, replacement) -> existing // 如果key重复,保留第一个值 + )); + + warehouseTrayGoodsEntities.forEach(warehouseTrayGoodsEntity -> { + DistributionParcelListEntity parcelList = parcelListEntityMap.get(warehouseTrayGoodsEntity.getAssociationValue()); + if(!Objects.isNull(parcelList)){ + warehouseTrayGoodsEntity.setAssociationId(parcelList.getId()); + warehouseTrayGoodsEntity.setWarehouseId(warehouseId); + updateTrayGoodsList.add(warehouseTrayGoodsEntity); + + DistributionParcelListEntity updateParceEntity = new DistributionParcelListEntity(); + updateParceEntity.setId(parcelList.getId()); + updateParceEntity.setPallet(palletName); + updateParceList.add(updateParceEntity); + } + }); + + + //把parcelListEntityList中所有元素的orderCode放入一个Set + Set orderCodeSet = parcelListEntityList.stream().map(DistributionParcelListEntity::getOrderCode).collect(Collectors.toSet()); + + findParamterDTO.setOrderCodeSet(orderCodeSet); + findParamterDTO.setWarehouseId(warehouseId); + List stockArticleEntityList = distributionStockArticleClient.findListByOrderCodesAndWarehouseId(findParamterDTO); + stockArticleEntityList.forEach(stockArticleEntity -> { + String trays = stockArticleEntity.getTrays(); + if(!StringUtil.isBlank(trays)){ + if(trays.contains(palletName)){ + List list = Arrays.asList(trays.split(trays)); + List trayList = new ArrayList<>(list); + trayList.remove(palletName); + if(CollUtil.isNotEmpty(trayList)){ + DistributionStockArticleEntity updateStockArticle = new DistributionStockArticleEntity(); + updateStockArticle.setId(stockArticleEntity.getId()); + updateStockArticle.setTrays(StringUtil.join(trayList.toArray(),",")); + updateStockArticleList.add(updateStockArticle); + }else{ + clearStockArticleIdList.add(stockArticleEntity.getId()); + } + } + } + }); + } + }); + + if(CollUtil.isNotEmpty(updateParceList)){ + distributionParcelListClient.updateList(updateParceList); + } + + + if(CollUtil.isNotEmpty(updateStockArticleList)){ + distributionStockArticleClient.updateByBatchId(updateStockArticleList); + } + + if(CollUtil.isNotEmpty(clearStockArticleIdList)){ + distributionStockArticleClient.clearTraysByIds(clearStockArticleIdList); + } + } @Override