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