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 {
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

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(
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;

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;
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<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)) {
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());
}
}

Loading…
Cancel
Save