From 9fcb9475d5c3d1a6e7490f5d66a0d47f0d77a01d Mon Sep 17 00:00:00 2001 From: zhaoqiaobo <583671871@qq.com> Date: Thu, 6 Feb 2025 17:20:00 +0800 Subject: [PATCH] =?UTF-8?q?feat(all):=20=E9=85=8D=E9=80=81=E6=88=90?= =?UTF-8?q?=E6=9C=AC=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1 修改配送明细成本节点状态字段 --- .../constant/broadcast/FanoutConstants.java | 19 ++-- .../receiver/report/ReportListener.java | 4 +- .../report/ReturnWarehouseReportListener.java | 90 +++++++++++++------ 3 files changed, 69 insertions(+), 44 deletions(-) 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 b52eb31cc..6a041b053 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 @@ -286,6 +286,11 @@ public abstract class FanoutConstants { } } + /** + * 配送回库 + * + * @see org.springblade.common.model.ReservationVO + **/ interface DeliveryRetention { String EXCHANGE = "fanout.distribution.retention" + ModuleNameConstant.DEVAUTH; @@ -388,20 +393,6 @@ public abstract class FanoutConstants { } } - /** - * 配送回库 - * - * @see org.springblade.common.model.workNode.RetentionDataByScanVO - */ - interface DeliveryAndReturnWarehouse { - - String EXCHANGE = "fanout.distribution.ReturnWarehouse" + ModuleNameConstant.DEVAUTH; - interface QUEUE { - String REPORT = "fanout.distribution.DeliveryAndReturnWarehouse.report" + ModuleNameConstant.DEVAUTH; - } - } - - /** * 车次完成 * @see org.springblade.common.model.workNode.FinishDistributionTrainVO diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReportListener.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReportListener.java index 35b542b81..b4f4f3511 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReportListener.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReportListener.java @@ -334,8 +334,8 @@ public class ReportListener { } @RabbitListener(bindings = @QueueBinding( - value = @Queue(name = FanoutConstants.distribution.DeliveryAndReturnWarehouse.QUEUE.REPORT, durable = "true"), - exchange = @Exchange(name = FanoutConstants.distribution.DeliveryAndReturnWarehouse.EXCHANGE, type = ExchangeTypes.FANOUT) + value = @Queue(name = FanoutConstants.distribution.DeliveryRetention.QUEUE.REPORT, durable = "true"), + exchange = @Exchange(name = FanoutConstants.distribution.DeliveryRetention.EXCHANGE, type = ExchangeTypes.FANOUT) ), ackMode = "MANUAL") public void returnWarehouseReportListener(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) { Boolean flag = Boolean.TRUE; diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReturnWarehouseReportListener.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReturnWarehouseReportListener.java index bacfce642..0b4b2057e 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReturnWarehouseReportListener.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReturnWarehouseReportListener.java @@ -1,9 +1,13 @@ package com.logpm.distribution.receiver.report; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; 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.toolkit.Wrappers; import com.logpm.distribution.dto.ReportQualityDeliverDTO; import com.logpm.distribution.entity.QualityDeliverEntity; import com.logpm.distribution.pros.DistributionProperties; @@ -12,17 +16,21 @@ 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.WorkNodeEnums; import org.springblade.common.constant.report.ReportConstants; import org.springblade.common.enums.BizOperationEnums; import org.springblade.common.enums.PackageTypeEnums; -import org.springblade.common.model.DistributionSignforVO; import org.springblade.common.model.NodeFanoutMsg; import org.springblade.common.model.PackageData; +import org.springblade.common.model.ReservationVO; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 回库生成明细报表 @@ -47,51 +55,77 @@ public class ReturnWarehouseReportListener implements ReportService { NodeFanoutMsg bean = JSONUtil.toBean(msg, NodeFanoutMsg.class); Object main = bean.getMain(); JSONObject entries = JSONUtil.parseObj(main); - DistributionSignforVO vo = JSONUtil.toBean(entries, DistributionSignforVO.class); + ReservationVO vo = JSONUtil.toBean(entries, ReservationVO.class); Long warehouseId = bean.getWarehouseId(); - BizOperationEnums bizOperation = bean.getBizOperation(); List details = vo.getPackageDataList(); + String referenceCode = vo.getReservationCode(); + Map> cmpMap = new HashMap<>(); + Map> ltlMap = new HashMap<>(); + Map> invMap = new HashMap<>(); + if (StrUtil.isNotEmpty(referenceCode)) { + List qualityDeliverEntities = qualityDeliverService.list(Wrappers.lambdaQuery() + .eq(QualityDeliverEntity::getPlanReservationCode, referenceCode)); + if (CollUtil.isNotEmpty(qualityDeliverEntities)) { + cmpMap = qualityDeliverEntities.stream() + .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.CMP.getCode())) + .filter(item -> StrUtil.isNotEmpty(item.getOrderPackageCode())) + .collect(Collectors.groupingBy(item -> item.getOrderPackageCode())); + ltlMap = qualityDeliverEntities.stream() + .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.LTL.getCode())) + .filter(item -> StrUtil.isNotEmpty(item.getCategory()) && StrUtil.isNotEmpty(item.getOrderCode())) + .collect(Collectors.groupingBy(item -> item.getCategory() + item.getOrderCode())); + invMap = qualityDeliverEntities.stream() + .filter(item -> NumberUtil.equals(item.getConditions(), PackageTypeEnums.INV.getCode())) + .filter(item -> StrUtil.isNotEmpty(item.getOrderPackageCode())) + .collect(Collectors.groupingBy(item -> item.getOrderPackageCode())); + } + } if (CollUtil.isNotEmpty(details)) { for (PackageData detail : details) { QualityDeliverEntity qualityDeliverEntity = QualityDeliverEntity.builder() .warehouseName(bean.getWarehouse()) .warehouseId(warehouseId) - .orderPackageCode(detail.getPackageCode()) - .reviewUserName(bean.getOperator()) - .reviewTime(bean.getOperatorTime()) + .retentionUserName(bean.getOperator()) + .retentionTime(DateUtil.formatDateTime(bean.getOperatorTime())) + .retentionNum(detail.getNumber()) .bizCode(vo.getReservationCode()) .bizStatus(110) .build(); if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.CMP)) { - qualityDeliverEntity.setConditions(1); - sendReport(bizOperation, qualityDeliverEntity); + qualityDeliverEntity.setRetentionNum(1); + // 装车包件是计划内的 更新 + if (cmpMap.containsKey(detail.getPackageCode())) { + qualityDeliverEntity.setId(cmpMap.get(detail.getPackageCode()).get(0).getId()); + sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY); + } } else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.LTL)) { - qualityDeliverEntity.setOrderCode(detail.getOrderCode()); - qualityDeliverEntity.setCategory(detail.getProductName()); - qualityDeliverEntity.setConditions(2); - sendReport(bizOperation, qualityDeliverEntity); + if (ltlMap.containsKey(detail.getProductName() + detail.getOrderCode())) { + qualityDeliverEntity.setId(ltlMap.get(detail.getProductName() + detail.getOrderCode()).get(0).getId()); + sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY); + } } 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.setConditions(3); - sendReport(bizOperation, qualityDeliverEntity); + qualityDeliverEntity.setRetentionNum(1); + if (invMap.containsKey(detail.getPackageCode())) { + qualityDeliverEntity.setId(invMap.get(detail.getPackageCode()).get(0).getId()); + sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY); + } } } } } - 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()); - } + private void sendReport(QualityDeliverEntity qualityDeliverEntity, BizOperationEnums operationEnums) { + ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder() + .data(JSONUtil.toJsonStr(qualityDeliverEntity)) + .operation(operationEnums) + .node(WorkNodeEnums.DISTRIBUTION_RETENTION.getValue()) + .build(); + factoryDataClient.sendMessage(SendMsg.builder() + .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE) + .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY) + .message(JSONUtil.toJsonStr(dto)) + .delay(3000) + .build()); } }