Browse Source

1.干线测试环境mq配置增加

pull/31/head
zhenghaoyu 10 months ago
parent
commit
c10c1dff0b
  1. 15
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java
  2. 91
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/AdvanceToLoadListener.java
  3. 106
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/OpenOrderToLoadListener.java
  4. 37
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java

15
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<String, Object> 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();
}
} }

91
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/AdvanceToLoadListener.java

@ -1,6 +1,5 @@
package com.logpm.trunkline.mq; package com.logpm.trunkline.mq;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity; 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.entity.DistributionParcelListEntity;
import com.logpm.distribution.feign.IDistributionParcelListClient; import com.logpm.distribution.feign.IDistributionParcelListClient;
import com.logpm.trunkline.dto.InComingDTO; 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.logpm.trunkline.service.*;
import com.rabbitmq.client.Channel;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.IncomingTypeEnum; 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.common.utils.CommonUtil;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.StringUtil; import org.springblade.core.tool.utils.StringUtil;
import org.springframework.amqp.core.ExchangeTypes; import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.Exchange; import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -31,6 +31,7 @@ import java.util.*;
@Slf4j @Slf4j
@Component @Component
@AllArgsConstructor @AllArgsConstructor
@RabbitListener(queues = RabbitConstant.INCOMING_TO_LOAD_QUEUE)
public class AdvanceToLoadListener { public class AdvanceToLoadListener {
private final IInComingService inComingService; private final IInComingService inComingService;
@ -43,13 +44,10 @@ public class AdvanceToLoadListener {
private final ITrunklineCarsLoadLineService carsLoadLineService; private final ITrunklineCarsLoadLineService carsLoadLineService;
private final ITrunklineWaybillOrderService waybillOrderService; private final ITrunklineWaybillOrderService waybillOrderService;
@RabbitListener(bindings = @QueueBinding( @RabbitHandler
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) @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)){ if(StringUtil.isNotBlank(msg)){
log.info("#############advanceToLoad: 暂存单包件入库并且绑定到对应车次上 {}", msg); log.info("#############advanceToLoad: 暂存单包件入库并且绑定到对应车次上 {}", msg);
JSONObject jsonObject = JSONUtil.parseObj(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<Long> loadIds = new HashSet<>();
for (Object object : advanceIds) {
Long advanceId = JSONUtil.toBean((JSONObject) object, Long.class);
List<TrunklineAdvanceDetailEntity> 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);
}
}
}
} }

106
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<Long> loadIds = new HashSet<>();
for (Object object : advanceIds) {
Long advanceId = JSONUtil.toBean((JSONObject) object, Long.class);
List<TrunklineAdvanceDetailEntity> 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);
}
}
}
}

37
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.collection.CollUtil;
import cn.hutool.core.exceptions.ExceptionUtil; import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; 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.core.tool.utils.StringUtil;
import org.springblade.system.cache.DictBizCache; import org.springblade.system.cache.DictBizCache;
import org.springblade.system.entity.DictBiz; 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.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -4296,11 +4292,18 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
} }
); );
// 4.构造消息对象 // 4.构造消息对象
Message message = MessageBuilder.withBody(StrUtil.bytes(jsonMsg, CharsetUtil.CHARSET_UTF_8)) // Message message = MessageBuilder.withBody(StrUtil.bytes(jsonMsg, CharsetUtil.CHARSET_UTF_8))
.setDeliveryMode(MessageDeliveryMode.PERSISTENT) //持久化 // .setDeliveryMode(MessageDeliveryMode.PERSISTENT) //持久化
.build(); // .build();
rabbitTemplate.convertAndSend(exchange, routing, message, correlationData); Map<String, Object> 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 @Override
@ -4354,11 +4357,21 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
} }
); );
// 4.构造消息对象 // 4.构造消息对象
Message message = MessageBuilder.withBody(StrUtil.bytes(jsonMsg, CharsetUtil.CHARSET_UTF_8)) // Message message = MessageBuilder.withBody(StrUtil.bytes(jsonMsg, CharsetUtil.CHARSET_UTF_8))
.setDeliveryMode(MessageDeliveryMode.PERSISTENT) //持久化 // .setDeliveryMode(MessageDeliveryMode.PERSISTENT) //持久化
.build(); // .build();
//
// rabbitTemplate.convertAndSend(exchange, routing, message, correlationData);
rabbitTemplate.convertAndSend(exchange, routing, message, correlationData);
Map<String, Object> 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 @Override

Loading…
Cancel
Save