19 changed files with 392 additions and 5 deletions
@ -0,0 +1,178 @@
|
||||
package com.logpm.trunkline.mq; |
||||
|
||||
import cn.hutool.json.JSONArray; |
||||
import cn.hutool.json.JSONObject; |
||||
import cn.hutool.json.JSONUtil; |
||||
import com.logpm.basicdata.entity.BasicdataWarehouseEntity; |
||||
import com.logpm.basicdata.feign.IBasicdataWarehouseClient; |
||||
import com.logpm.distribution.entity.DistributionParcelListEntity; |
||||
import com.logpm.distribution.feign.IDistributionParcelListClient; |
||||
import com.logpm.trunkline.dto.InComingDTO; |
||||
import com.logpm.trunkline.entity.*; |
||||
import com.logpm.trunkline.service.*; |
||||
import lombok.AllArgsConstructor; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.springblade.common.constant.IncomingTypeEnum; |
||||
import org.springblade.common.constant.RabbitConstant; |
||||
import org.springblade.common.constant.TenantNum; |
||||
import org.springblade.common.utils.CommonUtil; |
||||
import org.springblade.core.tool.api.R; |
||||
import org.springblade.core.tool.utils.StringUtil; |
||||
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 java.util.*; |
||||
|
||||
@Slf4j |
||||
@Component |
||||
@AllArgsConstructor |
||||
public class AdvanceToLoadListener { |
||||
|
||||
private final IInComingService inComingService; |
||||
private final ITrunklineAdvanceDetailService advanceDetailService; |
||||
private final ITrunklineCarsLoadScanService carsLoadScanService; |
||||
private final IBasicdataWarehouseClient warehouseClient; |
||||
private final IDistributionParcelListClient distributionParcelListClient; |
||||
private final ITrunklineCarsLoadService carsLoadService; |
||||
private final ITrunklineCarsOrderService carsOrderService; |
||||
private final ITrunklineCarsLoadLineService carsLoadLineService; |
||||
private final ITrunklineWaybillOrderService waybillOrderService; |
||||
|
||||
@RabbitListener(bindings = @QueueBinding( |
||||
value = @Queue(name = RabbitConstant.INCOMING_TO_LOAD_QUEUE), |
||||
exchange = @Exchange(name = RabbitConstant.INCOMING_TO_LOAD_EXCHANGE, type = ExchangeTypes.TOPIC), |
||||
key = RabbitConstant.INCOMING_TO_LOAD_ROUTING |
||||
)) |
||||
@Transactional(rollbackFor = Exception.class) |
||||
public void advanceToLoad(String msg){ |
||||
if(StringUtil.isNotBlank(msg)){ |
||||
log.info("#############advanceToLoad: 暂存单包件入库并且绑定到对应车次上 {}", msg); |
||||
JSONObject jsonObject = JSONUtil.parseObj(msg); |
||||
TrunklineAdvanceEntity advanceEntity = JSONUtil.toBean(jsonObject, TrunklineAdvanceEntity.class); |
||||
if(Objects.isNull(advanceEntity)){ |
||||
return; |
||||
} |
||||
Long advanceId = advanceEntity.getId(); |
||||
String orderCode = advanceEntity.getOrderCode(); |
||||
Long warehouseId = advanceEntity.getWarehouseId(); |
||||
BasicdataWarehouseEntity warehouseEntity = warehouseClient.getEntityWarehouseId(warehouseId); |
||||
if(Objects.isNull(warehouseEntity)){ |
||||
log.warn("#############advanceToLoad: 仓库信息不存在 warehouseId={}",warehouseId); |
||||
return; |
||||
} |
||||
String warehouseName = warehouseEntity.getName(); |
||||
|
||||
//查询暂存单下所有包件
|
||||
Set<Long> loadIds = new HashSet<>(); |
||||
List<TrunklineAdvanceDetailEntity> advanceDetailEntities = advanceDetailService.findListByAdvanceId(advanceId); |
||||
for (TrunklineAdvanceDetailEntity advanceDetailEntity : advanceDetailEntities) { |
||||
String orderPackageCode = advanceDetailEntity.getOrderPackageCode(); |
||||
TrunklineCarsLoadScanEntity carsLoadScanEntity = carsLoadScanService.findEntityByOrderPackageCodeAndScanStatus(orderPackageCode, "1"); |
||||
if(Objects.isNull(carsLoadScanEntity)){ |
||||
continue; |
||||
} |
||||
InComingDTO inComingDTO = new InComingDTO(); |
||||
inComingDTO.setIncomingType(IncomingTypeEnum.FACTORY_TO_INCOMING.getCode()); |
||||
inComingDTO.setTenantId(TenantNum.HUITONGCODE); |
||||
inComingDTO.setOrderPackageCode(orderPackageCode); |
||||
inComingDTO.setWarehouseId(warehouseId); |
||||
inComingDTO.setWarehouseName(warehouseName); |
||||
R r = inComingService.incomingPackage(inComingDTO); |
||||
if(r.getCode() == 200){ |
||||
carsLoadScanEntity.setFromWarehouseId(warehouseId); |
||||
carsLoadScanEntity.setOrderCode(orderCode); |
||||
Date createTime = carsLoadScanEntity.getCreateTime(); |
||||
Long createUser = carsLoadScanEntity.getCreateUser(); |
||||
Long createDept = carsLoadScanEntity.getCreateDept(); |
||||
carsLoadScanService.updateById(carsLoadScanEntity); |
||||
loadIds.add(carsLoadScanEntity.getLoadId()); |
||||
DistributionParcelListEntity parcelListEntity = distributionParcelListClient.findByPacketBarCodeAndWarehouseId(orderPackageCode, warehouseId); |
||||
parcelListEntity.setWarehouseEntryTimeEnd(CommonUtil.addDate(createTime,-60)); |
||||
parcelListEntity.setUpdateUser(createUser); |
||||
parcelListEntity.setCreateUser(createUser); |
||||
parcelListEntity.setCreateDept(createDept); |
||||
parcelListEntity.setOrderPackageStatus("60"); |
||||
distributionParcelListClient.update(parcelListEntity); |
||||
} |
||||
} |
||||
for (Long loadId : loadIds) { |
||||
carsLoadService.updateNumByLoadId(loadId); |
||||
} |
||||
} |
||||
} |
||||
|
||||
@RabbitListener(bindings = @QueueBinding( |
||||
value = @Queue(name = RabbitConstant.OPEN_ORDER_LOAD_SCAN_QUEUE), |
||||
exchange = @Exchange(name = RabbitConstant.OPEN_ORDER_LOAD_SCAN_EXCHANGE, type = ExchangeTypes.TOPIC), |
||||
key = RabbitConstant.OPEN_ORDER_LOAD_SCAN_ROUTING |
||||
)) |
||||
@Transactional(rollbackFor = Exception.class) |
||||
public void openOrderToLoadScan(String msg){ |
||||
log.info("###########openOrderToLoadScan: 开单补录包件运单信息 msg={}",msg); |
||||
if(StringUtil.isNotBlank(msg)){ |
||||
JSONObject jsonObject = JSONUtil.parseObj(msg); |
||||
Long waybillId = jsonObject.getLong("waybillId"); |
||||
String waybillNo = jsonObject.getStr("waybillNo"); |
||||
JSONArray advanceIds = jsonObject.getJSONArray("advanceIds"); |
||||
Set<Long> loadIds = new HashSet<>(); |
||||
for (Object object : advanceIds) { |
||||
Long advanceId = JSONUtil.toBean((JSONObject) object, Long.class); |
||||
List<TrunklineAdvanceDetailEntity> advanceDetailEntityList = advanceDetailService.findListByAdvanceId(advanceId); |
||||
for (TrunklineAdvanceDetailEntity advanceDetailEntity : advanceDetailEntityList) { |
||||
String orderPackageCode = advanceDetailEntity.getOrderPackageCode(); |
||||
TrunklineCarsLoadScanEntity carsLoadScanEntity = carsLoadScanService.findEntityByOrderPackageCodeAndScanStatus(orderPackageCode, "1"); |
||||
if(Objects.isNull(carsLoadScanEntity)){ |
||||
continue; |
||||
} |
||||
carsLoadScanEntity.setWaybillId(waybillId); |
||||
carsLoadScanEntity.setWaybillNo(waybillNo); |
||||
carsLoadScanEntity.setIsData(1); |
||||
carsLoadScanEntity.setIsSupple(1); |
||||
carsLoadScanEntity.setLoadingAbnormal(0); |
||||
carsLoadScanEntity.setUnloadAbnormal(0); |
||||
carsLoadScanService.updateById(carsLoadScanEntity); |
||||
Long loadId = carsLoadScanEntity.getLoadId(); |
||||
Long warehouseId = carsLoadScanEntity.getWarehouseId(); |
||||
String warehouseName = carsLoadScanEntity.getWarehouseName(); |
||||
String orderCode = carsLoadScanEntity.getOrderCode(); |
||||
Long finalNodeId = carsLoadScanEntity.getFinalNodeId(); |
||||
TrunklineCarsLoadLineEntity carsLoadLineEntity = carsLoadLineService.findEntityByLoadIdAndNodeId(loadId, warehouseId); |
||||
if(Objects.isNull(carsLoadLineEntity)){ |
||||
continue; |
||||
} |
||||
TrunklineCarsOrderEntity trunklineCarsOrderEntity = carsOrderService.findEntityByLoadIdAndWarehouseIdAndOrderCodeAndWaybillNo(loadId, warehouseId, orderCode, waybillNo); |
||||
if(Objects.isNull(trunklineCarsOrderEntity)){ |
||||
trunklineCarsOrderEntity = new TrunklineCarsOrderEntity(); |
||||
trunklineCarsOrderEntity.setLoadId(loadId); |
||||
trunklineCarsOrderEntity.setNodeId(warehouseId); |
||||
trunklineCarsOrderEntity.setNodeName(warehouseName); |
||||
trunklineCarsOrderEntity.setLoadLineId(carsLoadLineEntity.getId()); |
||||
trunklineCarsOrderEntity.setOrderCode(orderCode); |
||||
trunklineCarsOrderEntity.setWaybillNo(waybillNo); |
||||
Integer totalNum = waybillOrderService.findTotalNumByWaybillNoAndOrderCode(waybillId,orderCode); |
||||
trunklineCarsOrderEntity.setTotalNum(totalNum); |
||||
trunklineCarsOrderEntity.setPlanNum(0); |
||||
trunklineCarsOrderEntity.setIsCustomer("0"); |
||||
trunklineCarsOrderEntity.setRealNum(0); |
||||
trunklineCarsOrderEntity.setType(1); |
||||
trunklineCarsOrderEntity.setFinalNodeId(finalNodeId); |
||||
trunklineCarsOrderEntity.setUnloadNum(0); |
||||
trunklineCarsOrderEntity.setStartNum(0); |
||||
} |
||||
trunklineCarsOrderEntity.setPlanNum(trunklineCarsOrderEntity.getPlanNum()+1); |
||||
carsOrderService.saveOrUpdate(trunklineCarsOrderEntity); |
||||
loadIds.add(loadId); |
||||
} |
||||
} |
||||
|
||||
for (Long loadId : loadIds) { |
||||
carsLoadService.updateNumByLoadId(loadId); |
||||
} |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue