3 changed files with 257 additions and 8 deletions
@ -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<PackageData> details = vo.getPackageDataList(); |
||||
if (BizOperationEnums.MODIFY.equals(bizOperation) || BizOperationEnums.DELETE.equals(bizOperation)) { |
||||
// 根据预约单号查询出所有这个预约单下的数据 先置空
|
||||
LambdaUpdateWrapper<QualityDeliverEntity> wrapper = Wrappers.<QualityDeliverEntity>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()); |
||||
} |
||||
} |
||||
|
||||
} |
@ -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<PackageData> 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()); |
||||
} |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue