From 81a7eb43bd747aa73dfbfa36521293e7cd5baef9 Mon Sep 17 00:00:00 2001 From: zhaoqiaobo <583671871@qq.com> Date: Thu, 12 Sep 2024 17:32:31 +0800 Subject: [PATCH] =?UTF-8?q?feat(all):=20=E4=BF=AE=E6=94=B9=E9=85=8D?= =?UTF-8?q?=E9=80=81=E6=98=8E=E7=BB=86=E6=8A=A5=E8=A1=A8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constant/broadcast/FanoutConstants.java | 13 +- .../report/BillPlanReportListener.java | 139 ++++++++++++++++++ .../report/BillSignforReportListener.java | 113 ++++++++++++++ 3 files changed, 257 insertions(+), 8 deletions(-) create mode 100644 blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillPlanReportListener.java create mode 100644 blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillSignforReportListener.java diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java b/blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java index 89f9d137b..5112ee4c2 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java +++ b/blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java @@ -256,7 +256,6 @@ public abstract class FanoutConstants { } } - /** * 签收 * @@ -274,7 +273,6 @@ public abstract class FanoutConstants { } } - /** * 复核 * @@ -289,10 +287,6 @@ public abstract class FanoutConstants { } } - - - - } @@ -306,9 +300,10 @@ public abstract class FanoutConstants { */ interface BillPlan { - String EXCHANGE = "fanout.distribution.billPlan" + ModuleNameConstant.DEVAUTH; + String EXCHANGE = "fanout.DeliveryOfPickup.billPlan" + ModuleNameConstant.DEVAUTH; interface QUEUE { + String REPORT = "fanout.DeliveryOfPickup.BillPlan.report" + ModuleNameConstant.DEVAUTH; } } @@ -316,11 +311,13 @@ public abstract class FanoutConstants { /** * @see org.springblade.common.model.workNode.PickUpByScanVO */ + interface BillSign { - String EXCHANGE = "fanout.distribution.billscan" + ModuleNameConstant.DEVAUTH; + String EXCHANGE = "fanout.DeliveryOfPickup.billscan" + ModuleNameConstant.DEVAUTH; interface QUEUE { + String REPORT = "fanout.DeliveryOfPickup.BillSign.report" + ModuleNameConstant.DEVAUTH; } } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillPlanReportListener.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillPlanReportListener.java new file mode 100644 index 000000000..7505560c5 --- /dev/null +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillPlanReportListener.java @@ -0,0 +1,139 @@ +package com.logpm.distribution.receiver.report; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.logpm.distribution.dto.ReportQualityDeliverDTO; +import com.logpm.distribution.entity.QualityDeliverEntity; +import com.logpm.distribution.service.IQualityDeliverService; +import com.logpm.factorydata.feign.IFactoryDataClient; +import com.logpm.factorydata.vo.SendMsg; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.common.constant.broadcast.FanoutConstants; +import org.springblade.common.constant.report.ReportConstants; +import org.springblade.common.enums.BizOperationEnums; +import org.springblade.common.enums.PackageTypeEnums; +import org.springblade.common.model.NodeFanoutMsg; +import org.springblade.common.model.PackageData; +import org.springblade.common.model.workNode.DeliveryOfPickupPlanVO; +import org.springblade.core.tool.utils.BeanUtil; +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 javax.annotation.Resource; +import java.util.List; + +/** + * 自提任务生成明细报表 + * + * @author zhaoqiaobo + * @create 2024-03-18 0:02 + */ +@Slf4j +@Component +@AllArgsConstructor +public class BillPlanReportListener { + + @Resource + private IQualityDeliverService qualityDeliverService; + @Resource + private IFactoryDataClient factoryDataClient; + + @RabbitListener(bindings = @QueueBinding( + value = @Queue(name = FanoutConstants.DeliveryOfPickup.BillPlan.QUEUE.REPORT, durable = "true"), + exchange = @Exchange(name = FanoutConstants.DeliveryOfPickup.BillPlan.EXCHANGE, type = ExchangeTypes.FANOUT) + )) + @Transactional(rollbackFor = Exception.class) + public void buildReport(String msg) { + log.info("自提任务生成明细报表: {}", msg); + if (StrUtil.isEmpty(msg)) { + return; + } + NodeFanoutMsg bean = JSONUtil.toBean(msg, NodeFanoutMsg.class); + Object main = bean.getMain(); + JSONObject entries = JSONUtil.parseObj(main); + DeliveryOfPickupPlanVO vo = JSONUtil.toBean(entries, DeliveryOfPickupPlanVO.class); + Long warehouseId = bean.getWarehouseId(); + BizOperationEnums bizOperation = bean.getBizOperation(); + List details = vo.getPackageDataList(); + if (BizOperationEnums.MODIFY.equals(bizOperation) || BizOperationEnums.DELETE.equals(bizOperation)) { + // 根据预约单号查询出所有这个预约单下的数据 先置空 + LambdaUpdateWrapper wrapper = Wrappers.lambdaUpdate() + .set(QualityDeliverEntity::getPlanTrainNumber, null) + .set(QualityDeliverEntity::getDeliveryTime, null) + .set(QualityDeliverEntity::getDeliveryType, null) + .set(QualityDeliverEntity::getVehicleName, null) + .set(QualityDeliverEntity::getDriverName, null) + .set(QualityDeliverEntity::getDeliveryPlanTime, null) + .set(QualityDeliverEntity::getDeliveryCreateUserName, null) + .eq(QualityDeliverEntity::getPlanTrainNumber, vo.getPickupBatch()) + .ne(QualityDeliverEntity::getBizStatus, 110); + qualityDeliverService.update(wrapper); + } + if (CollUtil.isNotEmpty(details)) { + for (PackageData detail : details) { + QualityDeliverEntity qualityDeliverEntity = QualityDeliverEntity.builder() + .warehouseName(bean.getWarehouse()) + .warehouseId(warehouseId) + .orderPackageCode(detail.getPackageCode()) + .planTrainNumber(vo.getPickupBatch()) + .deliveryTime(vo.getPickUpTime()) + .deliveryType("自提") + .vehicleName(vo.getPickUpPlate()) + .driverName(vo.getConsignee()) + .deliveryPlanTime(bean.getOperatorTime()) + .deliveryCreateUserName(bean.getOperator()) + .build(); + if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.CMP)) { + qualityDeliverEntity.setConditions(1); + qualityDeliverEntity.setPlanNum(1); + sendReport(bizOperation, qualityDeliverEntity,BizOperationEnums.MODIFY); + } + if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.LTL)) { + qualityDeliverEntity.setOrderCode(detail.getOrderCode()); + qualityDeliverEntity.setCategory(detail.getProductName()); + qualityDeliverEntity.setConditions(2); + sendReport(bizOperation, qualityDeliverEntity,BizOperationEnums.MODIFY); + } + if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.INV)) { + qualityDeliverEntity.setIncomingBatch(detail.getPickupBatch()); + qualityDeliverEntity.setMallName(detail.getMallName()); + qualityDeliverEntity.setMaterielCode(detail.getMaterialCode()); + qualityDeliverEntity.setMaterielName(detail.getMaterialName()); + qualityDeliverEntity.setConditions(3); + Integer number = detail.getNumber(); + for (int i = 0; i < number; i++) { + QualityDeliverEntity entity = new QualityDeliverEntity(); + BeanUtil.copyProperties(qualityDeliverEntity, entity); + entity.setPlanNum(1); + sendReport(bizOperation, entity, BizOperationEnums.ADD); + } + } + + } + } + } + + private void sendReport(BizOperationEnums bizOperation, QualityDeliverEntity qualityDeliverEntity, BizOperationEnums bizOperationEnums) { + if (BizOperationEnums.ADD.equals(bizOperation) || BizOperationEnums.MODIFY.equals(bizOperation)) { + ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder().data(JSONUtil.toJsonStr(qualityDeliverEntity)).operation(bizOperationEnums).build(); + factoryDataClient.sendMessage(SendMsg.builder() + .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE) + .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY) + .message(JSONUtil.toJsonStr(dto)) + .delay(3000) + .build()); + } + } + +} diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillSignforReportListener.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillSignforReportListener.java new file mode 100644 index 000000000..f0983b3b9 --- /dev/null +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/BillSignforReportListener.java @@ -0,0 +1,113 @@ +package com.logpm.distribution.receiver.report; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.logpm.distribution.dto.ReportQualityDeliverDTO; +import com.logpm.distribution.entity.QualityDeliverEntity; +import com.logpm.distribution.service.IQualityDeliverService; +import com.logpm.factorydata.feign.IFactoryDataClient; +import com.logpm.factorydata.vo.SendMsg; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.common.constant.broadcast.FanoutConstants; +import org.springblade.common.constant.report.ReportConstants; +import org.springblade.common.enums.BizOperationEnums; +import org.springblade.common.enums.PackageTypeEnums; +import org.springblade.common.model.NodeFanoutMsg; +import org.springblade.common.model.PackageData; +import org.springblade.common.model.workNode.PickUpByScanVO; +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 javax.annotation.Resource; +import java.util.List; + +/** + * 自提签收扫描生成明细报表 + * + * @author zhaoqiaobo + * @create 2024-03-18 0:02 + */ +@Slf4j +@Component +@AllArgsConstructor +public class BillSignforReportListener { + + @Resource + private IQualityDeliverService qualityDeliverService; + @Resource + private IFactoryDataClient factoryDataClient; + + @RabbitListener(bindings = @QueueBinding( + value = @Queue(name = FanoutConstants.DeliveryOfPickup.BillSign.QUEUE.REPORT, durable = "true"), + exchange = @Exchange(name = FanoutConstants.DeliveryOfPickup.BillSign.EXCHANGE, type = ExchangeTypes.FANOUT) + )) + @Transactional(rollbackFor = Exception.class) + public void buildReport(String msg) { + log.info("自提签收扫描生成明细报表: {}", msg); + if (StrUtil.isEmpty(msg)) { + return; + } + NodeFanoutMsg bean = JSONUtil.toBean(msg, NodeFanoutMsg.class); + Object main = bean.getMain(); + JSONObject entries = JSONUtil.parseObj(main); + PickUpByScanVO vo = JSONUtil.toBean(entries, PickUpByScanVO.class); + Long warehouseId = bean.getWarehouseId(); + BizOperationEnums bizOperation = bean.getBizOperation(); + List details = vo.getPackageDataList(); + if (CollUtil.isNotEmpty(details)) { + for (PackageData detail : details) { + QualityDeliverEntity qualityDeliverEntity = QualityDeliverEntity.builder() + .warehouseName(bean.getWarehouse()) + .warehouseId(warehouseId) + .orderPackageCode(detail.getPackageCode()) + .signUserName(bean.getOperator()) + .signTime(bean.getOperatorTime()) + .signReservationCode(vo.getPickupBatch()) + .bizStatus(90) + .build(); + if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.CMP)) { + qualityDeliverEntity.setConditions(1); + qualityDeliverEntity.setSignNum(1); + sendReport(bizOperation, qualityDeliverEntity); + } else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.LTL)) { + qualityDeliverEntity.setPlanReservationCode(vo.getPickupBatch()); + qualityDeliverEntity.setOrderCode(detail.getOrderCode()); + qualityDeliverEntity.setCategory(detail.getProductName()); + qualityDeliverEntity.setSignNum(detail.getNumber()); + qualityDeliverEntity.setConditions(2); + sendReport(bizOperation, qualityDeliverEntity); + } else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.INV)) { + qualityDeliverEntity.setIncomingBatch(detail.getPickupBatch()); + qualityDeliverEntity.setMallName(detail.getMallName()); + qualityDeliverEntity.setMaterielCode(detail.getMaterialCode()); + qualityDeliverEntity.setMaterielName(detail.getMaterialName()); + qualityDeliverEntity.setSignNum(1); + qualityDeliverEntity.setConditions(3); + sendReport(bizOperation, qualityDeliverEntity); + } + } + } + } + + private void sendReport(BizOperationEnums bizOperation, QualityDeliverEntity qualityDeliverEntity) { + if (BizOperationEnums.ADD.equals(bizOperation) || BizOperationEnums.MODIFY.equals(bizOperation)) { + ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder().data(JSONUtil.toJsonStr(qualityDeliverEntity)).operation(BizOperationEnums.MODIFY).build(); + factoryDataClient.sendMessage(SendMsg.builder() + .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE) + .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY) + .message(JSONUtil.toJsonStr(dto)) + .delay(3000) + .build()); + } + } + +}