diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/IncomingTypeEnum.java b/blade-biz-common/src/main/java/org/springblade/common/constant/IncomingTypeEnum.java index 463b5ed4c..eafc906c4 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/IncomingTypeEnum.java +++ b/blade-biz-common/src/main/java/org/springblade/common/constant/IncomingTypeEnum.java @@ -14,7 +14,8 @@ public enum IncomingTypeEnum { BATCH_INCOMING(7, "批量卸车入库"), UNLOAD_TRAY_INCOMING(8, "托盘卸车入库"), UNLOAD_TRAY_ONE(9, "卸分一体"), - OPEN_TO_IN(10, "开单及入库"); + OPEN_TO_IN(10, "开单及入库"), + FACTORY_TO_INCOMING(11, "工厂推送数据入库"); private Integer code; diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java b/blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java index 8cc0836fd..aae05e352 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java +++ b/blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java @@ -149,4 +149,15 @@ public interface RabbitConstant { String SYNC_OLD_UPDOWN_DATA_EXCHANGE = "sync_old_updown_data_exchange" + ModuleNameConstant.DEVAUTH; String SYNC_OLD_UPDOWN_DATA_ROUTING = "sync_old_updown_data_routing" + ModuleNameConstant.DEVAUTH; + /****************干线暂存单入库绑定装车记录队列******************/ + String INCOMING_TO_LOAD_QUEUE = "incoming_to_load_queue" + ModuleNameConstant.DEVAUTH; + String INCOMING_TO_LOAD_EXCHANGE = "incoming_to_load_exchange" + ModuleNameConstant.DEVAUTH; + String INCOMING_TO_LOAD_ROUTING = "incoming_to_load_routing" + ModuleNameConstant.DEVAUTH; + + /****************干线暂存单开单绑定装车记录队列******************/ + String OPEN_ORDER_LOAD_SCAN_QUEUE = "open_order_load_scan_queue" + ModuleNameConstant.DEVAUTH; + String OPEN_ORDER_LOAD_SCAN_EXCHANGE = "open_order_load_scan_exchange" + ModuleNameConstant.DEVAUTH; + String OPEN_ORDER_LOAD_SCAN_ROUTING = "open_order_load_scan_routing" + ModuleNameConstant.DEVAUTH; + + } diff --git a/blade-biz-common/src/main/java/org/springblade/common/utils/CommonUtil.java b/blade-biz-common/src/main/java/org/springblade/common/utils/CommonUtil.java index 9d349943f..0d61ecfc8 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/utils/CommonUtil.java +++ b/blade-biz-common/src/main/java/org/springblade/common/utils/CommonUtil.java @@ -258,4 +258,13 @@ public class CommonUtil { return substring; } + public static Date addDate(Date date, int second) { + if(Objects.isNull(date)){ + return null; + } + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.SECOND, second); + return calendar.getTime(); + } } 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 055e35f8c..a22d5dd78 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 @@ -183,6 +183,9 @@ public class DistributionParcelListClient implements IDistributionParcelListClie @PostMapping(API_PREFIX+"/update") public void update(DistributionParcelListEntity distributionParcelListEntity) { distributionParcelListService.updateById(distributionParcelListEntity); + String orderCode = distributionParcelListEntity.getOrderCode(); + Long warehouseId = distributionParcelListEntity.getWarehouseId(); + distributionStockArticleService.updateOrderInfo(orderCode,warehouseId); } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java index a8a297501..b403dd2ff 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java @@ -58,5 +58,21 @@ public class RabbitMqConfiguration { return BindingBuilder.bind(unloadConfirmQueue).to(unloadConfirmExchange).with(RabbitConstant.TRUNKLINE_UNLOAD_CONFIRM_ROUTING).noargs(); } + @Bean + public Queue incomingToLoadQueue() { + return new Queue(RabbitConstant.INCOMING_TO_LOAD_QUEUE, true); + } + @Bean + public CustomExchange incomingToLoadExchange() { + Map args = Maps.newHashMap(); + args.put("x-delayed-type", "direct"); + return new CustomExchange(RabbitConstant.INCOMING_TO_LOAD_EXCHANGE, "x-delayed-message", true, false, args); + } + @Bean + public Binding incomingToLoadBinding(Queue incomingToLoadQueue, CustomExchange incomingToLoadExchange) { + return BindingBuilder.bind(incomingToLoadQueue).to(incomingToLoadExchange).with(RabbitConstant.INCOMING_TO_LOAD_ROUTING).noargs(); + } + + } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.java index d339abe7a..e81004ce1 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.java @@ -120,4 +120,6 @@ public interface TrunklineCarsLoadScanMapper extends BaseMapper findSignListOrderPackageCodesByIds(@Param("list") List loadScanIds); List findAllIdListByLoadId(@Param("loadId") Long loadId); + + TrunklineCarsLoadScanEntity findEntityByOrderPackageCodeAndScanStatus(@Param("orderPackageCode") String orderPackageCode, @Param("scanStatus") String scanStatus); } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml index b3f82c6d3..b28596b0c 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml @@ -545,4 +545,12 @@ and scan_status = '1' + + + diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineWaybillOrderMapper.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineWaybillOrderMapper.java index 2fb24eebd..57696d095 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineWaybillOrderMapper.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineWaybillOrderMapper.java @@ -18,4 +18,6 @@ public interface TrunklineWaybillOrderMapper extends BaseMapper findListByWaybillId(@Param("waybillId") Long waybillId); Long findWaybillIdByAdvanceId(@Param("advanceId") Long advanceId); + + Integer findTotalNumByWaybillNoAndOrderCode(@Param("waybillId") Long waybillId, @Param("orderCode") String orderCode); } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineWaybillOrderMapper.xml b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineWaybillOrderMapper.xml index fcc5ee91d..cf13328b0 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineWaybillOrderMapper.xml +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineWaybillOrderMapper.xml @@ -29,4 +29,11 @@ where ltwo.advance_id = #{advanceId} + + diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/AdvanceOrderListener.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/AdvanceOrderListener.java index 3ae1af344..b88d8de49 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/AdvanceOrderListener.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/AdvanceOrderListener.java @@ -11,6 +11,7 @@ import com.logpm.trunkline.entity.TrunklineAdvanceEntity; import com.logpm.trunkline.entity.TrunklineDetailProductEntity; import com.logpm.trunkline.service.ITrunklineAdvanceDetailService; import com.logpm.trunkline.service.ITrunklineAdvanceService; +import com.logpm.trunkline.service.ITrunklineCarsLoadService; import com.logpm.trunkline.service.ITrunklineDetailProductService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -42,6 +43,7 @@ public class AdvanceOrderListener { private final ITrunklineAdvanceService advanceService; private final ITrunklineAdvanceDetailService advanceDetailService; private final ITrunklineDetailProductService detailProductService; + private final ITrunklineCarsLoadService trunklineCarsLoadService; @RabbitListener(bindings = @QueueBinding( value = @Queue(name = FactoryDataConstants.Mq.Queues.ADVANCE_ORDER), @@ -111,6 +113,8 @@ public class AdvanceOrderListener { } advanceDetailService.saveBatch(advanceDetailEntityList); + //发送入库包件处理无数据装车数据 + trunklineCarsLoadService.sendRabbitMessageLoadScanData(JSONUtil.toJsonStr(advanceEntity)); detailProductService.saveBatch(detailProductEntityList); } } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/AdvanceToLoadListener.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/AdvanceToLoadListener.java new file mode 100644 index 000000000..be526da43 --- /dev/null +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/AdvanceToLoadListener.java @@ -0,0 +1,178 @@ +package com.logpm.trunkline.mq; + +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.logpm.basicdata.entity.BasicdataWarehouseEntity; +import com.logpm.basicdata.feign.IBasicdataWarehouseClient; +import com.logpm.distribution.entity.DistributionParcelListEntity; +import com.logpm.distribution.feign.IDistributionParcelListClient; +import com.logpm.trunkline.dto.InComingDTO; +import com.logpm.trunkline.entity.*; +import com.logpm.trunkline.service.*; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.common.constant.IncomingTypeEnum; +import org.springblade.common.constant.RabbitConstant; +import org.springblade.common.constant.TenantNum; +import org.springblade.common.utils.CommonUtil; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.StringUtil; +import org.springframework.amqp.core.ExchangeTypes; +import org.springframework.amqp.rabbit.annotation.Exchange; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.QueueBinding; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +@Slf4j +@Component +@AllArgsConstructor +public class AdvanceToLoadListener { + + private final IInComingService inComingService; + private final ITrunklineAdvanceDetailService advanceDetailService; + private final ITrunklineCarsLoadScanService carsLoadScanService; + private final IBasicdataWarehouseClient warehouseClient; + private final IDistributionParcelListClient distributionParcelListClient; + private final ITrunklineCarsLoadService carsLoadService; + private final ITrunklineCarsOrderService carsOrderService; + private final ITrunklineCarsLoadLineService carsLoadLineService; + private final ITrunklineWaybillOrderService waybillOrderService; + + @RabbitListener(bindings = @QueueBinding( + value = @Queue(name = RabbitConstant.INCOMING_TO_LOAD_QUEUE), + exchange = @Exchange(name = RabbitConstant.INCOMING_TO_LOAD_EXCHANGE, type = ExchangeTypes.TOPIC), + key = RabbitConstant.INCOMING_TO_LOAD_ROUTING + )) + @Transactional(rollbackFor = Exception.class) + public void advanceToLoad(String msg){ + if(StringUtil.isNotBlank(msg)){ + log.info("#############advanceToLoad: 暂存单包件入库并且绑定到对应车次上 {}", msg); + JSONObject jsonObject = JSONUtil.parseObj(msg); + TrunklineAdvanceEntity advanceEntity = JSONUtil.toBean(jsonObject, TrunklineAdvanceEntity.class); + if(Objects.isNull(advanceEntity)){ + return; + } + Long advanceId = advanceEntity.getId(); + String orderCode = advanceEntity.getOrderCode(); + Long warehouseId = advanceEntity.getWarehouseId(); + BasicdataWarehouseEntity warehouseEntity = warehouseClient.getEntityWarehouseId(warehouseId); + if(Objects.isNull(warehouseEntity)){ + log.warn("#############advanceToLoad: 仓库信息不存在 warehouseId={}",warehouseId); + return; + } + String warehouseName = warehouseEntity.getName(); + + //查询暂存单下所有包件 + Set loadIds = new HashSet<>(); + List advanceDetailEntities = advanceDetailService.findListByAdvanceId(advanceId); + for (TrunklineAdvanceDetailEntity advanceDetailEntity : advanceDetailEntities) { + String orderPackageCode = advanceDetailEntity.getOrderPackageCode(); + TrunklineCarsLoadScanEntity carsLoadScanEntity = carsLoadScanService.findEntityByOrderPackageCodeAndScanStatus(orderPackageCode, "1"); + if(Objects.isNull(carsLoadScanEntity)){ + continue; + } + InComingDTO inComingDTO = new InComingDTO(); + inComingDTO.setIncomingType(IncomingTypeEnum.FACTORY_TO_INCOMING.getCode()); + inComingDTO.setTenantId(TenantNum.HUITONGCODE); + inComingDTO.setOrderPackageCode(orderPackageCode); + inComingDTO.setWarehouseId(warehouseId); + inComingDTO.setWarehouseName(warehouseName); + R r = inComingService.incomingPackage(inComingDTO); + if(r.getCode() == 200){ + carsLoadScanEntity.setFromWarehouseId(warehouseId); + carsLoadScanEntity.setOrderCode(orderCode); + Date createTime = carsLoadScanEntity.getCreateTime(); + Long createUser = carsLoadScanEntity.getCreateUser(); + Long createDept = carsLoadScanEntity.getCreateDept(); + carsLoadScanService.updateById(carsLoadScanEntity); + loadIds.add(carsLoadScanEntity.getLoadId()); + DistributionParcelListEntity parcelListEntity = distributionParcelListClient.findByPacketBarCodeAndWarehouseId(orderPackageCode, warehouseId); + parcelListEntity.setWarehouseEntryTimeEnd(CommonUtil.addDate(createTime,-60)); + parcelListEntity.setUpdateUser(createUser); + parcelListEntity.setCreateUser(createUser); + parcelListEntity.setCreateDept(createDept); + parcelListEntity.setOrderPackageStatus("60"); + distributionParcelListClient.update(parcelListEntity); + } + } + for (Long loadId : loadIds) { + carsLoadService.updateNumByLoadId(loadId); + } + } + } + + @RabbitListener(bindings = @QueueBinding( + value = @Queue(name = RabbitConstant.OPEN_ORDER_LOAD_SCAN_QUEUE), + exchange = @Exchange(name = RabbitConstant.OPEN_ORDER_LOAD_SCAN_EXCHANGE, type = ExchangeTypes.TOPIC), + key = RabbitConstant.OPEN_ORDER_LOAD_SCAN_ROUTING + )) + @Transactional(rollbackFor = Exception.class) + public void openOrderToLoadScan(String msg){ + log.info("###########openOrderToLoadScan: 开单补录包件运单信息 msg={}",msg); + if(StringUtil.isNotBlank(msg)){ + JSONObject jsonObject = JSONUtil.parseObj(msg); + Long waybillId = jsonObject.getLong("waybillId"); + String waybillNo = jsonObject.getStr("waybillNo"); + JSONArray advanceIds = jsonObject.getJSONArray("advanceIds"); + Set loadIds = new HashSet<>(); + for (Object object : advanceIds) { + Long advanceId = JSONUtil.toBean((JSONObject) object, Long.class); + List advanceDetailEntityList = advanceDetailService.findListByAdvanceId(advanceId); + for (TrunklineAdvanceDetailEntity advanceDetailEntity : advanceDetailEntityList) { + String orderPackageCode = advanceDetailEntity.getOrderPackageCode(); + TrunklineCarsLoadScanEntity carsLoadScanEntity = carsLoadScanService.findEntityByOrderPackageCodeAndScanStatus(orderPackageCode, "1"); + if(Objects.isNull(carsLoadScanEntity)){ + continue; + } + carsLoadScanEntity.setWaybillId(waybillId); + carsLoadScanEntity.setWaybillNo(waybillNo); + carsLoadScanEntity.setIsData(1); + carsLoadScanEntity.setIsSupple(1); + carsLoadScanEntity.setLoadingAbnormal(0); + carsLoadScanEntity.setUnloadAbnormal(0); + carsLoadScanService.updateById(carsLoadScanEntity); + Long loadId = carsLoadScanEntity.getLoadId(); + Long warehouseId = carsLoadScanEntity.getWarehouseId(); + String warehouseName = carsLoadScanEntity.getWarehouseName(); + String orderCode = carsLoadScanEntity.getOrderCode(); + Long finalNodeId = carsLoadScanEntity.getFinalNodeId(); + TrunklineCarsLoadLineEntity carsLoadLineEntity = carsLoadLineService.findEntityByLoadIdAndNodeId(loadId, warehouseId); + if(Objects.isNull(carsLoadLineEntity)){ + continue; + } + TrunklineCarsOrderEntity trunklineCarsOrderEntity = carsOrderService.findEntityByLoadIdAndWarehouseIdAndOrderCodeAndWaybillNo(loadId, warehouseId, orderCode, waybillNo); + if(Objects.isNull(trunklineCarsOrderEntity)){ + trunklineCarsOrderEntity = new TrunklineCarsOrderEntity(); + trunklineCarsOrderEntity.setLoadId(loadId); + trunklineCarsOrderEntity.setNodeId(warehouseId); + trunklineCarsOrderEntity.setNodeName(warehouseName); + trunklineCarsOrderEntity.setLoadLineId(carsLoadLineEntity.getId()); + trunklineCarsOrderEntity.setOrderCode(orderCode); + trunklineCarsOrderEntity.setWaybillNo(waybillNo); + Integer totalNum = waybillOrderService.findTotalNumByWaybillNoAndOrderCode(waybillId,orderCode); + trunklineCarsOrderEntity.setTotalNum(totalNum); + trunklineCarsOrderEntity.setPlanNum(0); + trunklineCarsOrderEntity.setIsCustomer("0"); + trunklineCarsOrderEntity.setRealNum(0); + trunklineCarsOrderEntity.setType(1); + trunklineCarsOrderEntity.setFinalNodeId(finalNodeId); + trunklineCarsOrderEntity.setUnloadNum(0); + trunklineCarsOrderEntity.setStartNum(0); + } + trunklineCarsOrderEntity.setPlanNum(trunklineCarsOrderEntity.getPlanNum()+1); + carsOrderService.saveOrUpdate(trunklineCarsOrderEntity); + loadIds.add(loadId); + } + } + + for (Long loadId : loadIds) { + carsLoadService.updateNumByLoadId(loadId); + } + } + } +} diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadScanService.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadScanService.java index 4143b84c6..25fbdbfea 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadScanService.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadScanService.java @@ -115,4 +115,6 @@ public interface ITrunklineCarsLoadScanService extends BaseService findSignListOrderPackageCodesByIds(List loadScanIds); List findAllIdListByLoadId(Long loadId); + + TrunklineCarsLoadScanEntity findEntityByOrderPackageCodeAndScanStatus(String orderPackageCode, String scanStatus); } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadService.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadService.java index a4df747fc..bd3a0d562 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadService.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadService.java @@ -197,4 +197,7 @@ public interface ITrunklineCarsLoadService extends BaseService advanceIds, Long waybillId); } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineWaybillOrderService.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineWaybillOrderService.java index fbeaa6913..c1e0a47fb 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineWaybillOrderService.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineWaybillOrderService.java @@ -16,4 +16,7 @@ public interface ITrunklineWaybillOrderService extends BaseService findListByWaybillId(Long waybillId); Long findWaybillIdByAdvanceId(Long advanceId); + + Integer findTotalNumByWaybillNoAndOrderCode(Long waybillId, String orderCode); + } 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 448edf32b..23009258f 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 @@ -86,6 +86,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService { private final IOpenOrderAsyncService openOrderAsyncService; private final ITrunklineWaybillReturnService trunklineWaybillReturnService; private final IBasicdataOpenIncomingClient basicdataOpenIncomingClient; + private final ITrunklineCarsLoadService carsLoadService; @Override public IPage advancePageList(AdvanceDTO advanceDTO) { @@ -543,6 +544,11 @@ public class OpenOrderServiceImpl implements IOpenOrderService { openOrderAsyncService.saveLog(waybillId,waybillNo,"20","已入库",createOperationRemark,nickName,userId,warehouseId,warehouseName); } + //队列处理包件补数据 + +// sendRabbitMessageLoadScanData(JSONUtil.parseArray(advanceIds)); + carsLoadService.sendRabbitMessageOpenOrder(advanceIds,waybillId); + return R.success("开单成功"); } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadScanServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadScanServiceImpl.java index bdf7f24db..ffc2302dc 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadScanServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadScanServiceImpl.java @@ -283,4 +283,9 @@ public class TrunklineCarsLoadScanServiceImpl extends BaseServiceImpl { + if (result.isAck()) { + // 3.1.ack,消息成功 + log.debug("消息发送成功, ID:{}", correlationData.getId()); + } else { + // 3.2.nack,消息失败 + log.error("消息发送失败, ID:{}, 原因:{}", correlationData.getId(), result.getReason()); +// FailMsgEntity failMsgEntity = FailMsgEntity.builder() +// .exchange(exchange) +// .msgId(correlationData.getId()) +// .msg(jsonMsg) +// .reason(result.getReason()).build(); +// this.failMsgService.save(failMsgEntity); + } + }, + ex -> { + //出现此异常情况,可能是发送消息后无法连接到发送者或其他一些未知的异常情况 + String exceptionInfo = ExceptionUtil.getMessage(ex); + log.error("消息发送异常, ID:{}, 原因:{}", correlationData.getId(), exceptionInfo); +// FailMsgEntity failMsgEntity = FailMsgEntity.builder() +// .exchange(exchange) +// .msgId(correlationData.getId()) +// .msg(jsonMsg) +// .reason(exceptionInfo).build(); +// this.failMsgService.save(failMsgEntity); + } + ); + // 4.构造消息对象 + Message message = MessageBuilder.withBody(StrUtil.bytes(jsonMsg, CharsetUtil.CHARSET_UTF_8)) + .setDeliveryMode(MessageDeliveryMode.PERSISTENT) //持久化 + .build(); + + rabbitTemplate.convertAndSend(exchange, routing, message, correlationData); + } + + @Override + public void sendRabbitMessageOpenOrder(List advanceIds, Long waybillId) { + String queue = RabbitConstant.OPEN_ORDER_LOAD_SCAN_QUEUE; + String exchange = RabbitConstant.OPEN_ORDER_LOAD_SCAN_EXCHANGE; + String routing = RabbitConstant.OPEN_ORDER_LOAD_SCAN_ROUTING; + + WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillId(waybillId); + if(Objects.isNull(waybillEntity)){ + log.warn("#############sendRabbitMessageOpenOrder: 运单信息不存在 waybillId={}",waybillId); + return; + } + JSONObject jsonObject = new JSONObject(); + jsonObject.put("waybillId",waybillId); + jsonObject.put("waybillNo",waybillEntity.getWaybillNo()); + jsonObject.put("advanceIds",advanceIds); + String jsonMsg = jsonObject.toJSONString(); + + String msgId = IdUtil.simpleUUID(); + log.info("消息发送!exchange = {}, routingKey = {}, msg = {}, msgId = {}", exchange, routing, jsonMsg, msgId); + // 2.全局唯一的消息ID,需要封装到CorrelationData中 + CorrelationData correlationData = new CorrelationData(msgId); + // 3.添加callback + correlationData.getFuture().addCallback( + result -> { + if (result.isAck()) { + // 3.1.ack,消息成功 + log.debug("消息发送成功, ID:{}", correlationData.getId()); + } else { + // 3.2.nack,消息失败 + log.error("消息发送失败, ID:{}, 原因:{}", correlationData.getId(), result.getReason()); +// FailMsgEntity failMsgEntity = FailMsgEntity.builder() +// .exchange(exchange) +// .msgId(correlationData.getId()) +// .msg(jsonMsg) +// .reason(result.getReason()).build(); +// this.failMsgService.save(failMsgEntity); + } + }, + ex -> { + //出现此异常情况,可能是发送消息后无法连接到发送者或其他一些未知的异常情况 + String exceptionInfo = ExceptionUtil.getMessage(ex); + log.error("消息发送异常, ID:{}, 原因:{}", correlationData.getId(), exceptionInfo); +// FailMsgEntity failMsgEntity = FailMsgEntity.builder() +// .exchange(exchange) +// .msgId(correlationData.getId()) +// .msg(jsonMsg) +// .reason(exceptionInfo).build(); +// this.failMsgService.save(failMsgEntity); + } + ); + // 4.构造消息对象 + Message message = MessageBuilder.withBody(StrUtil.bytes(jsonMsg, CharsetUtil.CHARSET_UTF_8)) + .setDeliveryMode(MessageDeliveryMode.PERSISTENT) //持久化 + .build(); + + rabbitTemplate.convertAndSend(exchange, routing, message, correlationData); + } + @Override public R loadingTrayInfo(LoadCarsDTO loadCarsDTO) { log.info("##############loadingTrayInfo: 查询托盘的货物信息"); diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillOrderServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillOrderServiceImpl.java index a2aaf6f9a..dffb1bd6b 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillOrderServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillOrderServiceImpl.java @@ -34,4 +34,9 @@ public class TrunklineWaybillOrderServiceImpl extends BaseServiceImpl