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 b403dd2ff..b4f10143c 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 @@ -74,5 +74,20 @@ public class RabbitMqConfiguration { } + @Bean + public Queue openOrderLoadScanQueue() { + return new Queue(RabbitConstant.OPEN_ORDER_LOAD_SCAN_QUEUE, true); + } + @Bean + public CustomExchange openOrderLoadScanExchange() { + Map args = Maps.newHashMap(); + args.put("x-delayed-type", "direct"); + return new CustomExchange(RabbitConstant.OPEN_ORDER_LOAD_SCAN_EXCHANGE, "x-delayed-message", true, false, args); + } + @Bean + public Binding openOrderLoadScanBinding(Queue openOrderLoadScanQueue, CustomExchange openOrderLoadScanExchange) { + return BindingBuilder.bind(openOrderLoadScanQueue).to(openOrderLoadScanExchange).with(RabbitConstant.OPEN_ORDER_LOAD_SCAN_ROUTING).noargs(); + } + } 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 index be526da43..c4ee7da44 100644 --- 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 @@ -1,6 +1,5 @@ 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; @@ -8,8 +7,11 @@ 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.entity.TrunklineAdvanceDetailEntity; +import com.logpm.trunkline.entity.TrunklineAdvanceEntity; +import com.logpm.trunkline.entity.TrunklineCarsLoadScanEntity; import com.logpm.trunkline.service.*; +import com.rabbitmq.client.Channel; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.common.constant.IncomingTypeEnum; @@ -18,10 +20,8 @@ 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.core.Message; +import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -31,6 +31,7 @@ import java.util.*; @Slf4j @Component @AllArgsConstructor +@RabbitListener(queues = RabbitConstant.INCOMING_TO_LOAD_QUEUE) public class AdvanceToLoadListener { private final IInComingService inComingService; @@ -43,13 +44,10 @@ public class AdvanceToLoadListener { 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 - )) + @RabbitHandler @Transactional(rollbackFor = Exception.class) - public void advanceToLoad(String msg){ + public void advanceToLoad(Map map, Message message, Channel channel){ + String msg = (String) map.get("messageData"); if(StringUtil.isNotBlank(msg)){ log.info("#############advanceToLoad: 暂存单包件入库并且绑定到对应车次上 {}", msg); JSONObject jsonObject = JSONUtil.parseObj(msg); @@ -106,73 +104,4 @@ public class AdvanceToLoadListener { } } - @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/mq/OpenOrderToLoadListener.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/OpenOrderToLoadListener.java new file mode 100644 index 000000000..bda3e3f9b --- /dev/null +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/OpenOrderToLoadListener.java @@ -0,0 +1,106 @@ +package com.logpm.trunkline.mq; + +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.logpm.trunkline.entity.TrunklineAdvanceDetailEntity; +import com.logpm.trunkline.entity.TrunklineCarsLoadLineEntity; +import com.logpm.trunkline.entity.TrunklineCarsLoadScanEntity; +import com.logpm.trunkline.entity.TrunklineCarsOrderEntity; +import com.logpm.trunkline.service.*; +import com.rabbitmq.client.Channel; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.common.constant.RabbitConstant; +import org.springblade.core.tool.utils.StringUtil; +import org.springframework.amqp.core.Message; +import org.springframework.amqp.rabbit.annotation.RabbitHandler; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +@Slf4j +@AllArgsConstructor +@Component +@RabbitListener(queues = RabbitConstant.OPEN_ORDER_LOAD_SCAN_QUEUE) +public class OpenOrderToLoadListener { + + private final ITrunklineAdvanceDetailService advanceDetailService; + private final ITrunklineCarsLoadScanService carsLoadScanService; + private final ITrunklineCarsLoadService carsLoadService; + private final ITrunklineCarsOrderService carsOrderService; + private final ITrunklineCarsLoadLineService carsLoadLineService; + private final ITrunklineWaybillOrderService waybillOrderService; + + + @RabbitHandler + @Transactional(rollbackFor = Exception.class) + public void openOrderToLoadScan(Map map, Message message, Channel channel){ + String msg = (String) map.get("messageData"); + 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/impl/TrunklineCarsLoadServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java index b5747701c..95adfb6c5 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 @@ -2,7 +2,6 @@ package com.logpm.trunkline.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.exceptions.ExceptionUtil; -import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -57,9 +56,6 @@ import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringUtil; import org.springblade.system.cache.DictBizCache; import org.springblade.system.entity.DictBiz; -import org.springframework.amqp.core.Message; -import org.springframework.amqp.core.MessageBuilder; -import org.springframework.amqp.core.MessageDeliveryMode; import org.springframework.amqp.rabbit.connection.CorrelationData; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.stereotype.Service; @@ -4296,11 +4292,18 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl map = new HashMap<>(); + map.put("messageId", CommonUtil.getUUID()); + map.put("logId", msgId); + map.put("messageData", jsonMsg); + map.put("createTime", new Date().getTime()); + map.put("flagType", "OrderStatusLog"); + //将消息携带绑定键值 + rabbitTemplate.convertAndSend(exchange, routing, map, new CorrelationData(msgId)); } @Override @@ -4354,11 +4357,21 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl map = new HashMap<>(); + map.put("messageId", CommonUtil.getUUID()); + map.put("logId", msgId); + map.put("messageData", jsonMsg); + map.put("createTime", new Date().getTime()); + map.put("flagType", "OrderStatusLog"); + //将消息携带绑定键值 + rabbitTemplate.convertAndSend(exchange, routing, map, new CorrelationData(msgId)); } @Override