Browse Source

将整个包件和订单的状态变更切换到队列中来进行实现

single_db
pref_mail@163.com 1 year ago
parent
commit
134592434a
  1. 11
      blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java
  2. 16
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RabbitMqConfiguration.java
  3. 93
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/OrderPackageStatusDataHandler.java
  4. 64
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionParcelListServiceImpl.java

11
blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java

@ -100,6 +100,17 @@ public interface RabbitConstant {
/****************包件状态变化 start*************************************************/
String ORDER_PACKAGE_STATUS_INFO_QUEUE = "order_package_status_info_queue";
String ORDER_PACKAGE_STATUS_INFO_EXCHANGE = "order_package_status_info_exchange";
String ORDER_PACKAGE_STATUS_INFO_ROUTING = "order_package_status_info_routing";
/****************包件状态变化 end*************************************************/
/****************test队列******************/
String TEST_RECEIVE_INFO_QUEUE = "test_receive_info_queue";
String TEST_RECEIVE_INFO_EXCHANGE = "test_receive_info_exchange";

16
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RabbitMqConfiguration.java

@ -132,5 +132,21 @@ public class RabbitMqConfiguration {
@Bean
public Queue orderPackageStatusInfoQueue() {
return new Queue(RabbitConstant.ORDER_PACKAGE_STATUS_INFO_QUEUE, true);
}
@Bean
public CustomExchange orderPackageStatusInfoExchange() {
Map<String, Object> args = Maps.newHashMap();
args.put("x-delayed-type", "direct");
return new CustomExchange(RabbitConstant.ORDER_PACKAGE_STATUS_INFO_EXCHANGE, "x-delayed-message", true, false, args);
}
@Bean
public Binding orderPackageStatusInfoBinding(Queue orderPackageStatusInfoQueue, CustomExchange orderPackageStatusInfoExchange) {
return BindingBuilder.bind(orderPackageStatusInfoQueue).to(orderPackageStatusInfoExchange).with(RabbitConstant.ORDER_PACKAGE_STATUS_INFO_ROUTING).noargs();
}
}

93
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/OrderPackageStatusDataHandler.java

@ -0,0 +1,93 @@
package com.logpm.distribution.receiver;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.entity.DistributionStockArticleEntity;
import com.logpm.distribution.mapper.DistributionParcelListMapper;
import com.logpm.distribution.mapper.DistributionStockArticleMapper;
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.RabbitConstant;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
@Slf4j
@RabbitListener(queues = RabbitConstant.ORDER_PACKAGE_STATUS_INFO_QUEUE)
@Component
public class OrderPackageStatusDataHandler {
@Autowired
private DistributionParcelListMapper baseMapper;
@Autowired
private DistributionStockArticleMapper distributionStockArticleMapper;
@RabbitHandler
public void orderPackageStatusChange(Map map, Message message, Channel channel){
Object orderPackageCode1 = map.get("orderPackageCode");
String orderPackageCode= (String) orderPackageCode1;
String groundingStatus=(String)map.get("groundingStatus");
Long warehouseId = (Long)map.get("warehouseId");
// 处理包件状态
QueryWrapper<DistributionParcelListEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("order_package_code",orderPackageCode)
.eq("warehouse_id",warehouseId)
.eq("is_deleted",0);
DistributionParcelListEntity parcelListEntity = baseMapper.selectOne(queryWrapper);
parcelListEntity.setOrderPackageGroundingStatus(groundingStatus);
// int i = baseMapper.updateById(parcelListEntity);
try{
// 更新状态
baseMapper.updateOrderPackageCodeById(parcelListEntity.getId(),groundingStatus);
// log.info(">>>> 更新包间状态 >> 包件ID {} 状态 {}",parcelListEntity.getId(),groundingStatus);
String orderCode = parcelListEntity.getOrderCode();
QueryWrapper<DistributionStockArticleEntity> stockArticleEntityQueryWrapper = new QueryWrapper<>();
stockArticleEntityQueryWrapper.eq("order_code",orderCode)
.eq("is_deleted",0);
DistributionStockArticleEntity one = distributionStockArticleMapper.selectOne(stockArticleEntityQueryWrapper);
Integer totalNumber = one.getTotalNumber();
QueryWrapper<DistributionParcelListEntity> queryWrapperList = new QueryWrapper<>();
queryWrapperList.eq("order_code",orderCode)
.eq("order_package_grounding_status","20")
.eq("warehouse_id",warehouseId)
.eq("is_deleted",0);
List<DistributionParcelListEntity> listEntityList = baseMapper.selectList(queryWrapperList);
int size = listEntityList.size();
if(size == 0){
//更新订单上架状态
baseMapper.updateOrderGroundingStatus(orderCode,"10",warehouseId);
}else if(size >= totalNumber){
//更新订单上架状态
baseMapper.updateOrderGroundingStatus(orderCode,"30",warehouseId);
}else{
//更新订单上架状态
baseMapper.updateOrderGroundingStatus(orderCode,"20",warehouseId);
}
}catch (Exception e){
// 更新状态报错
log.error(">>>>>> updateGroundingStatus 异常信息",e);
}
}
}

64
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionParcelListServiceImpl.java

@ -42,7 +42,9 @@ import com.logpm.warehouse.entity.WarehouseUpdownGoodsEntity;
import com.logpm.warehouse.feign.IWarehouseTrayGoodsClient;
import com.logpm.warehouse.feign.IWarehouseUpdownGoodsClient;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.DictBizConstant;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.common.constant.order.OrderStockupStatusConstant;
import org.springblade.common.utils.CommonUtil;
import org.springblade.core.log.exception.ServiceException;
@ -53,6 +55,7 @@ import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.system.cache.DictBizCache;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -68,6 +71,7 @@ import java.util.stream.Collectors;
*/
@Service
@AllArgsConstructor
@Slf4j
public class DistributionParcelListServiceImpl extends BaseServiceImpl<DistributionParcelListMapper, DistributionParcelListEntity> implements IDistributionParcelListService {
private final IBasicdataWarehouseClient basicdataWarehouseClient;
@ -88,7 +92,10 @@ public class DistributionParcelListServiceImpl extends BaseServiceImpl<Distribut
private final IDistributionReservationZeroPackageService reservationZeroPackageService;
private final IDistrilbutionBillPackageService distrilbutionBillPackageService;
private IBasicdataWarehouseClient warehouseClient;
private final IBasicdataWarehouseClient warehouseClient;
private final RabbitTemplate rabbitTemplate;
@Override
@ -177,49 +184,22 @@ public class DistributionParcelListServiceImpl extends BaseServiceImpl<Distribut
@Override
public void updateGroundingStatus(String orderPackageCode, String groundingStatus,Long warehouseId) {
QueryWrapper<DistributionParcelListEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("order_package_code",orderPackageCode)
.eq("warehouse_id",warehouseId)
.eq("is_deleted",0);
DistributionParcelListEntity parcelListEntity = baseMapper.selectOne(queryWrapper);
parcelListEntity.setOrderPackageGroundingStatus(groundingStatus);
// int i = baseMapper.updateById(parcelListEntity);
try{
// 更新状态
baseMapper.updateOrderPackageCodeById(parcelListEntity.getId(),groundingStatus);
String orderCode = parcelListEntity.getOrderCode();
QueryWrapper<DistributionStockArticleEntity> stockArticleEntityQueryWrapper = new QueryWrapper<>();
stockArticleEntityQueryWrapper.eq("order_code",orderCode)
.eq("is_deleted",0);
DistributionStockArticleEntity one = distributionStockArticleMapper.selectOne(stockArticleEntityQueryWrapper);
Integer totalNumber = one.getTotalNumber();
QueryWrapper<DistributionParcelListEntity> queryWrapperList = new QueryWrapper<>();
queryWrapperList.eq("order_code",orderCode)
.eq("order_package_grounding_status","20")
.eq("warehouse_id",warehouseId)
.eq("is_deleted",0);
List<DistributionParcelListEntity> listEntityList = baseMapper.selectList(queryWrapperList);
int size = listEntityList.size();
if(size == 0){
//更新订单上架状态
baseMapper.updateOrderGroundingStatus(orderCode,"10",warehouseId);
}else if(size >= totalNumber){
//更新订单上架状态
baseMapper.updateOrderGroundingStatus(orderCode,"30",warehouseId);
}else{
//更新订单上架状态
baseMapper.updateOrderGroundingStatus(orderCode,"20",warehouseId);
}
}catch (Exception e){
// 更新状态报错
log.error(">>>>>> updateGroundingStatus 异常信息",e);
}
log.info(">>>>> 发送消息给MQ start 包件{}",orderPackageCode);
Map<String,Object> map = new HashMap();
map.put("messageId", CommonUtil.getUUID());
map.put("orderPackageCode", orderPackageCode);
map.put("groundingStatus", groundingStatus);
map.put("warehouseId", warehouseId);
//将消息携带绑定键值
rabbitTemplate.convertAndSend(RabbitConstant.ORDER_PACKAGE_STATUS_INFO_EXCHANGE, RabbitConstant.ORDER_PACKAGE_STATUS_INFO_ROUTING, map);
log.info(">>>>> 发送消息给MQ end 包件{}",orderPackageCode);

Loading…
Cancel
Save