From 134592434ac2588251d4364e81478fe1d971abe5 Mon Sep 17 00:00:00 2001 From: "pref_mail@163.com" Date: Sun, 24 Dec 2023 09:54:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E6=95=B4=E4=B8=AA=E5=8C=85=E4=BB=B6?= =?UTF-8?q?=E5=92=8C=E8=AE=A2=E5=8D=95=E7=9A=84=E7=8A=B6=E6=80=81=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=E5=88=87=E6=8D=A2=E5=88=B0=E9=98=9F=E5=88=97=E4=B8=AD?= =?UTF-8?q?=E6=9D=A5=E8=BF=9B=E8=A1=8C=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/RabbitConstant.java | 11 +++ .../config/RabbitMqConfiguration.java | 16 ++++ .../OrderPackageStatusDataHandler.java | 93 +++++++++++++++++++ .../DistributionParcelListServiceImpl.java | 64 +++++-------- 4 files changed, 142 insertions(+), 42 deletions(-) create mode 100644 blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/OrderPackageStatusDataHandler.java 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 f95380ae4..d23d35e11 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 @@ -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"; diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RabbitMqConfiguration.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RabbitMqConfiguration.java index d3bdbee3e..4e7c30da7 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RabbitMqConfiguration.java +++ b/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 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(); + } + + } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/OrderPackageStatusDataHandler.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/OrderPackageStatusDataHandler.java new file mode 100644 index 000000000..787fc2583 --- /dev/null +++ b/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 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 stockArticleEntityQueryWrapper = new QueryWrapper<>(); + stockArticleEntityQueryWrapper.eq("order_code",orderCode) + .eq("is_deleted",0); + DistributionStockArticleEntity one = distributionStockArticleMapper.selectOne(stockArticleEntityQueryWrapper); + Integer totalNumber = one.getTotalNumber(); + + QueryWrapper queryWrapperList = new QueryWrapper<>(); + queryWrapperList.eq("order_code",orderCode) + .eq("order_package_grounding_status","20") + .eq("warehouse_id",warehouseId) + .eq("is_deleted",0); + List 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); + } + + + + } +} diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionParcelListServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionParcelListServiceImpl.java index af7adcbb2..9067fedee 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionParcelListServiceImpl.java +++ b/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 implements IDistributionParcelListService { private final IBasicdataWarehouseClient basicdataWarehouseClient; @@ -88,7 +92,10 @@ public class DistributionParcelListServiceImpl extends BaseServiceImpl 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 stockArticleEntityQueryWrapper = new QueryWrapper<>(); - stockArticleEntityQueryWrapper.eq("order_code",orderCode) - .eq("is_deleted",0); - DistributionStockArticleEntity one = distributionStockArticleMapper.selectOne(stockArticleEntityQueryWrapper); - Integer totalNumber = one.getTotalNumber(); - - QueryWrapper queryWrapperList = new QueryWrapper<>(); - queryWrapperList.eq("order_code",orderCode) - .eq("order_package_grounding_status","20") - .eq("warehouse_id",warehouseId) - .eq("is_deleted",0); - List 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 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); + +