Browse Source

feat(all): 配送成本明细

1 修改配送明细成本节点状态字段
dev
zhaoqiaobo 2 weeks ago
parent
commit
9fcb9475d5
  1. 19
      blade-biz-common/src/main/java/org/springblade/common/constant/broadcast/FanoutConstants.java
  2. 4
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReportListener.java
  3. 90
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReturnWarehouseReportListener.java

19
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 { interface DeliveryRetention {
String EXCHANGE = "fanout.distribution.retention" + ModuleNameConstant.DEVAUTH; 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 * @see org.springblade.common.model.workNode.FinishDistributionTrainVO

4
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReportListener.java

@ -334,8 +334,8 @@ public class ReportListener {
} }
@RabbitListener(bindings = @QueueBinding( @RabbitListener(bindings = @QueueBinding(
value = @Queue(name = FanoutConstants.distribution.DeliveryAndReturnWarehouse.QUEUE.REPORT, durable = "true"), value = @Queue(name = FanoutConstants.distribution.DeliveryRetention.QUEUE.REPORT, durable = "true"),
exchange = @Exchange(name = FanoutConstants.distribution.DeliveryAndReturnWarehouse.EXCHANGE, type = ExchangeTypes.FANOUT) exchange = @Exchange(name = FanoutConstants.distribution.DeliveryRetention.EXCHANGE, type = ExchangeTypes.FANOUT)
), ackMode = "MANUAL") ), ackMode = "MANUAL")
public void returnWarehouseReportListener(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) { public void returnWarehouseReportListener(String msg, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) {
Boolean flag = Boolean.TRUE; Boolean flag = Boolean.TRUE;

90
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/report/ReturnWarehouseReportListener.java

@ -1,9 +1,13 @@
package com.logpm.distribution.receiver.report; package com.logpm.distribution.receiver.report;
import cn.hutool.core.collection.CollUtil; 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.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.distribution.dto.ReportQualityDeliverDTO; import com.logpm.distribution.dto.ReportQualityDeliverDTO;
import com.logpm.distribution.entity.QualityDeliverEntity; import com.logpm.distribution.entity.QualityDeliverEntity;
import com.logpm.distribution.pros.DistributionProperties; import com.logpm.distribution.pros.DistributionProperties;
@ -12,17 +16,21 @@ import com.logpm.factorydata.feign.IFactoryDataClient;
import com.logpm.factorydata.vo.SendMsg; import com.logpm.factorydata.vo.SendMsg;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.WorkNodeEnums;
import org.springblade.common.constant.report.ReportConstants; import org.springblade.common.constant.report.ReportConstants;
import org.springblade.common.enums.BizOperationEnums; import org.springblade.common.enums.BizOperationEnums;
import org.springblade.common.enums.PackageTypeEnums; import org.springblade.common.enums.PackageTypeEnums;
import org.springblade.common.model.DistributionSignforVO;
import org.springblade.common.model.NodeFanoutMsg; import org.springblade.common.model.NodeFanoutMsg;
import org.springblade.common.model.PackageData; import org.springblade.common.model.PackageData;
import org.springblade.common.model.ReservationVO;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List; 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); NodeFanoutMsg bean = JSONUtil.toBean(msg, NodeFanoutMsg.class);
Object main = bean.getMain(); Object main = bean.getMain();
JSONObject entries = JSONUtil.parseObj(main); JSONObject entries = JSONUtil.parseObj(main);
DistributionSignforVO vo = JSONUtil.toBean(entries, DistributionSignforVO.class); ReservationVO vo = JSONUtil.toBean(entries, ReservationVO.class);
Long warehouseId = bean.getWarehouseId(); Long warehouseId = bean.getWarehouseId();
BizOperationEnums bizOperation = bean.getBizOperation();
List<PackageData> details = vo.getPackageDataList(); List<PackageData> details = vo.getPackageDataList();
String referenceCode = vo.getReservationCode();
Map<String, List<QualityDeliverEntity>> cmpMap = new HashMap<>();
Map<String, List<QualityDeliverEntity>> ltlMap = new HashMap<>();
Map<String, List<QualityDeliverEntity>> invMap = new HashMap<>();
if (StrUtil.isNotEmpty(referenceCode)) {
List<QualityDeliverEntity> qualityDeliverEntities = qualityDeliverService.list(Wrappers.<QualityDeliverEntity>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)) { if (CollUtil.isNotEmpty(details)) {
for (PackageData detail : details) { for (PackageData detail : details) {
QualityDeliverEntity qualityDeliverEntity = QualityDeliverEntity.builder() QualityDeliverEntity qualityDeliverEntity = QualityDeliverEntity.builder()
.warehouseName(bean.getWarehouse()) .warehouseName(bean.getWarehouse())
.warehouseId(warehouseId) .warehouseId(warehouseId)
.orderPackageCode(detail.getPackageCode()) .retentionUserName(bean.getOperator())
.reviewUserName(bean.getOperator()) .retentionTime(DateUtil.formatDateTime(bean.getOperatorTime()))
.reviewTime(bean.getOperatorTime()) .retentionNum(detail.getNumber())
.bizCode(vo.getReservationCode()) .bizCode(vo.getReservationCode())
.bizStatus(110) .bizStatus(110)
.build(); .build();
if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.CMP)) { if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.CMP)) {
qualityDeliverEntity.setConditions(1); qualityDeliverEntity.setRetentionNum(1);
sendReport(bizOperation, qualityDeliverEntity); // 装车包件是计划内的 更新
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)) { } else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.LTL)) {
qualityDeliverEntity.setOrderCode(detail.getOrderCode()); if (ltlMap.containsKey(detail.getProductName() + detail.getOrderCode())) {
qualityDeliverEntity.setCategory(detail.getProductName()); qualityDeliverEntity.setId(ltlMap.get(detail.getProductName() + detail.getOrderCode()).get(0).getId());
qualityDeliverEntity.setConditions(2); sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY);
sendReport(bizOperation, qualityDeliverEntity); }
} else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.INV)) { } else if (ObjectUtil.equals(detail.getPackageType(), PackageTypeEnums.INV)) {
qualityDeliverEntity.setIncomingBatch(detail.getPickupBatch()); qualityDeliverEntity.setRetentionNum(1);
qualityDeliverEntity.setMallName(detail.getMallName()); if (invMap.containsKey(detail.getPackageCode())) {
qualityDeliverEntity.setMaterielCode(detail.getMaterialCode()); qualityDeliverEntity.setId(invMap.get(detail.getPackageCode()).get(0).getId());
qualityDeliverEntity.setMaterielName(detail.getMaterialName()); sendReport(qualityDeliverEntity, BizOperationEnums.MODIFY);
qualityDeliverEntity.setConditions(3); }
sendReport(bizOperation, qualityDeliverEntity);
} }
} }
} }
} }
private void sendReport(BizOperationEnums bizOperation, QualityDeliverEntity qualityDeliverEntity) { private void sendReport(QualityDeliverEntity qualityDeliverEntity, BizOperationEnums operationEnums) {
if (BizOperationEnums.ADD.equals(bizOperation) || BizOperationEnums.MODIFY.equals(bizOperation)) { ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder()
ReportQualityDeliverDTO dto = ReportQualityDeliverDTO.builder().data(JSONUtil.toJsonStr(qualityDeliverEntity)).operation(BizOperationEnums.MODIFY).build(); .data(JSONUtil.toJsonStr(qualityDeliverEntity))
factoryDataClient.sendMessage(SendMsg.builder() .operation(operationEnums)
.exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE) .node(WorkNodeEnums.DISTRIBUTION_RETENTION.getValue())
.routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY) .build();
.message(JSONUtil.toJsonStr(dto)) factoryDataClient.sendMessage(SendMsg.builder()
.delay(3000) .exchange(ReportConstants.REPORT_QUALITY_DELIVER_EXCHANGE)
.build()); .routingKey(ReportConstants.REPORT_QUALITY_DELIVER_ROUTINGKEY)
} .message(JSONUtil.toJsonStr(dto))
.delay(3000)
.build());
} }
} }

Loading…
Cancel
Save