From 3167ae62080eed2b2b1a976d3a0ef8650e79f02f Mon Sep 17 00:00:00 2001 From: zhaoqiaobo <583671871@qq.com> Date: Wed, 6 Nov 2024 14:01:30 +0800 Subject: [PATCH] =?UTF-8?q?feat(all):=20=E5=B9=B2=E7=BA=BF=E5=A7=8B?= =?UTF-8?q?=E5=8F=91=E4=BB=93=E5=85=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1 修改干线始发仓入库时,增加发站到站信息 --- .../service/impl/InComingServiceImpl.java | 131 +++++++++++++++--- 1 file changed, 108 insertions(+), 23 deletions(-) diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/InComingServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/InComingServiceImpl.java index 8e2cde668..ccc2b48bd 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/InComingServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/InComingServiceImpl.java @@ -2,6 +2,7 @@ package com.logpm.trunkline.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -11,6 +12,8 @@ import com.logpm.basicdata.entity.BasicdataWarehouseEntity; import com.logpm.basicdata.feign.IBasicdataStorageServicesClient; import com.logpm.basicdata.feign.IBasicdataTripartiteMallClient; import com.logpm.basicdata.feign.IBasicdataWarehouseClient; +import com.logpm.distribution.entity.DistributionParcelListEntity; +import com.logpm.distribution.feign.IDistributionParcelListClient; import com.logpm.factorydata.enums.BrandEnums; import com.logpm.factorydata.util.FactoryDataMessageSender; import com.logpm.factorydata.vo.NodePushMsg; @@ -21,7 +24,12 @@ import com.logpm.trunkline.dto.OrderStatusDTO; import com.logpm.trunkline.entity.TrunklineAdvanceDetailEntity; import com.logpm.trunkline.entity.TrunklineAdvanceEntity; import com.logpm.trunkline.entity.TrunklineBillladingPackageEntity; -import com.logpm.trunkline.service.*; +import com.logpm.trunkline.service.IInComingService; +import com.logpm.trunkline.service.IOpenOrderAsyncService; +import com.logpm.trunkline.service.IPackageTrackLogAsyncService; +import com.logpm.trunkline.service.ITrunklineAdvanceDetailService; +import com.logpm.trunkline.service.ITrunklineAdvanceService; +import com.logpm.trunkline.service.ITrunklineBillladingPackageServicie; import com.logpm.trunkline.vo.TrunklineAdvanceVO; import com.logpm.warehouse.entity.WarehouseWaybillEntity; import com.logpm.warehouse.feign.IWarehouseTrayTypeClient; @@ -36,6 +44,7 @@ import org.springblade.common.utils.CommonUtil; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; +import org.springblade.core.tool.utils.ObjectUtil; import org.springblade.core.tool.utils.StringUtil; import org.springblade.system.entity.Tenant; import org.springblade.system.feign.ISysClient; @@ -43,7 +52,16 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; import java.util.stream.Collectors; @@ -66,6 +84,7 @@ public class InComingServiceImpl implements IInComingService { private final IOpenOrderAsyncService openOrderAsyncService; private final IBasicdataTripartiteMallClient tripartiteMallClient; private final IBasicdataStorageServicesClient storageServicesClient; + private final IDistributionParcelListClient parcelListClient; @Override @@ -170,16 +189,36 @@ public class InComingServiceImpl implements IInComingService { Map map = new HashMap<>(); map.put("messageData", JSONUtil.toJsonStr(orderStatusDTO)); rabbitTemplate.convertAndSend(RabbitConstant.HWY_ORDER_STATUS_EXCHANGE, RabbitConstant.HWY_ORDER_STATUS_ROUTING, map); - + // 获取运单发站仓,到站仓 + String sendWarehouse = null; + String endWarehouse = null; + List byPacketBarCode = parcelListClient.findByPacketBarCode(packageCode); + if(CollUtil.isNotEmpty(byPacketBarCode)){ + DistributionParcelListEntity parcelListEntity = byPacketBarCode.get(0); + if(ObjectUtil.isNotEmpty(parcelListEntity)){ + if(StrUtil.isNotEmpty(parcelListEntity.getSendWarehouseName())){ + sendWarehouse = parcelListEntity.getSendWarehouseName(); + } + if(StrUtil.isNotEmpty(parcelListEntity.getAcceptWarehouseName())){ + endWarehouse = parcelListEntity.getAcceptWarehouseName(); + } + } + } + com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject(); + jsonObject.put("departureWarehouseName", sendWarehouse); + jsonObject.put("destinationWarehouseName", endWarehouse); NodePushMsg nodePushMsg = NodePushMsg.builder() .operator(AuthUtil.getNickName()) .operatorTime(new Date()) .address("在【" + warehouseName + "】入库") .brand(BrandEnums.getByValue(advanceDetailEntity.getBrand())) .node(WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY) + .main(jsonObject) .content(Collections.singletonList(PushData.builder() .packageCode(packageCode) + .waybillStartWarehouse(sendWarehouse) .warehouseName(warehouseName) + .destinationWarehouse(endWarehouse) .orderCode(advanceDetailEntity.getOrderCode()) .build())) .build(); @@ -379,17 +418,36 @@ public class InComingServiceImpl implements IInComingService { Map map = new HashMap<>(); map.put("messageData", JSONUtil.toJsonStr(orderStatusDTO)); rabbitTemplate.convertAndSend(RabbitConstant.HWY_ORDER_STATUS_EXCHANGE, RabbitConstant.HWY_ORDER_STATUS_ROUTING, map); - + String sendWarehouse = null; + String endWarehouse = null; + List byPacketBarCode = parcelListClient.findByPacketBarCode(advanceDetailEntity.getOrderPackageCode()); + if(CollUtil.isNotEmpty(byPacketBarCode)){ + DistributionParcelListEntity parcelListEntity = byPacketBarCode.get(0); + if(ObjectUtil.isNotEmpty(parcelListEntity)){ + if(StrUtil.isNotEmpty(parcelListEntity.getSendWarehouseName())){ + sendWarehouse = parcelListEntity.getSendWarehouseName(); + } + if(StrUtil.isNotEmpty(parcelListEntity.getAcceptWarehouseName())){ + endWarehouse = parcelListEntity.getAcceptWarehouseName(); + } + } + } + com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject(); + jsonObject.put("departureWarehouseName", sendWarehouse); + jsonObject.put("destinationWarehouseName", endWarehouse); NodePushMsg nodePushMsg = NodePushMsg.builder() .operator(AuthUtil.getNickName()) .operatorTime(new Date()) .address("在【" + finalWarehouseName + "】入库") .brand(BrandEnums.getByValue(advanceDetailEntity.getBrand())) .node(WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY) + .main(jsonObject) .content(Collections.singletonList(PushData.builder() .packageCode(advanceDetailEntity.getOrderPackageCode()) .orderCode(advanceDetailEntity.getOrderCode()) + .waybillStartWarehouse(sendWarehouse) .warehouseName(finalWarehouseName) + .destinationWarehouse(endWarehouse) .build())) .build(); factoryDataMessageSender.sendNodeDataByBrand(nodePushMsg); @@ -796,39 +854,66 @@ public class InComingServiceImpl implements IInComingService { //存入日志 packageTrackLogAsyncService.addPackageTrackLog(tenantId, userId, deptId, nickName, orderPackageCodes, warehouseId, warehouseName, WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY.getCode(), "包件" + IncomingTypeEnum.getValue(incomingType)); total = total + detailList.size(); - if (CollUtil.isNotEmpty(detailList)) { - for (TrunklineAdvanceDetailEntity advanceDetailEntity : detailList) { - NodePushMsg nodePushMsg = NodePushMsg.builder() - .operator(AuthUtil.getNickName()) - .operatorTime(new Date()) - .warehouse(warehouseName) - .address("在【" + warehouseName + "】入库") - .brand(BrandEnums.getByValue(advanceDetailEntity.getBrand())) - .node(WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY) - .content(Collections.singletonList(PushData.builder() - .packageCode(advanceDetailEntity.getOrderPackageCode()) - .orderCode(advanceDetailEntity.getOrderCode()) - .warehouseName(warehouseName) - .build())) - .build(); - factoryDataMessageSender.sendNodeDataByBrand(nodePushMsg); - } - } } - + Map waybillEntityMap = new HashMap<>(); if (CollUtil.isNotEmpty(waybillIdSet)) { List waybillEntityList = warehouseWaybillClient.findListByWaybillIds(new ArrayList<>(waybillIdSet)); waybillEntityList.forEach(wb -> { Integer totalCount = wb.getTotalCount(); Integer stockCount = wb.getStockCount(); openOrderAsyncService.saveLog(wb.getId(), wb.getWaybillNo(), "20", "已入库", "运单入库:" + stockCount + "/" + totalCount + ",入库类型:【" + IncomingTypeEnum.getValue(incomingType) + "】,入库时间:" + CommonUtil.dateToStringGeneral(new Date()), AuthUtil.getNickName(), AuthUtil.getUserId(), warehouseId, warehouseName); + waybillEntityMap.put(wb.getWaybillNo(), wb); }); } if(CollUtil.isNotEmpty(sendAdvanceDetailEntityList)){ + try { + if (CollUtil.isNotEmpty(sendAdvanceDetailEntityList)) { + for (TrunklineAdvanceDetailEntity advanceDetailEntity : sendAdvanceDetailEntityList) { + String waybillNo = advanceDetailEntity.getWaybillNo(); + String sendWarehouse = null; + String endWarehouse = null; + if(StrUtil.isNotEmpty(waybillNo)){ + if(waybillEntityMap.containsKey(waybillNo)){ + WarehouseWaybillEntity warehouseWaybillEntity = waybillEntityMap.get(waybillNo); + if(ObjectUtil.isNotEmpty(warehouseWaybillEntity)){ + if(StrUtil.isNotEmpty(warehouseWaybillEntity.getDepartureWarehouseName())){ + sendWarehouse = warehouseWaybillEntity.getDepartureWarehouseName(); + } + if(StrUtil.isNotEmpty(warehouseWaybillEntity.getDestinationWarehouseName())){ + endWarehouse = warehouseWaybillEntity.getDestinationWarehouseName(); + } + } + } + } + com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject(); + jsonObject.put("departureWarehouseName", sendWarehouse); + jsonObject.put("destinationWarehouseName", endWarehouse); + NodePushMsg nodePushMsg = NodePushMsg.builder() + .operator(AuthUtil.getNickName()) + .operatorTime(new Date()) + .warehouse(warehouseName) + .address("在【" + warehouseName + "】入库") + .brand(BrandEnums.getByValue(advanceDetailEntity.getBrand())) + .node(WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY) + .main(jsonObject) + .content(Collections.singletonList(PushData.builder() + .packageCode(advanceDetailEntity.getOrderPackageCode()) + .orderCode(advanceDetailEntity.getOrderCode()) + .waybillStartWarehouse(sendWarehouse) + .warehouseName(warehouseName) + .destinationWarehouse(endWarehouse) + .build())) + .build(); + factoryDataMessageSender.sendNodeDataByBrand(nodePushMsg); + } + } + }catch (Exception e){ + log.error("始发仓入库推送工厂消息异常",e); + } advanceDetailService.sendReportIncomingData(AuthUtil.getUserId(),AuthUtil.getNickName(),sendAdvanceDetailEntityList,warehouseId,warehouseName,incomingType); }