Browse Source

1.干线无数据装车数据自动同步

pull/31/head
zhenghaoyu 10 months ago
parent
commit
198a34ef8b
  1. 3
      blade-biz-common/src/main/java/org/springblade/common/constant/IncomingTypeEnum.java
  2. 11
      blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java
  3. 9
      blade-biz-common/src/main/java/org/springblade/common/utils/CommonUtil.java
  4. 3
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java
  5. 16
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java
  6. 2
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.java
  7. 8
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml
  8. 2
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineWaybillOrderMapper.java
  9. 7
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineWaybillOrderMapper.xml
  10. 4
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/AdvanceOrderListener.java
  11. 178
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/AdvanceToLoadListener.java
  12. 2
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadScanService.java
  13. 3
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadService.java
  14. 3
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineWaybillOrderService.java
  15. 6
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java
  16. 5
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadScanServiceImpl.java
  17. 127
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java
  18. 5
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillOrderServiceImpl.java
  19. 3
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillPackageServiceImpl.java

3
blade-biz-common/src/main/java/org/springblade/common/constant/IncomingTypeEnum.java

@ -14,7 +14,8 @@ public enum IncomingTypeEnum {
BATCH_INCOMING(7, "批量卸车入库"),
UNLOAD_TRAY_INCOMING(8, "托盘卸车入库"),
UNLOAD_TRAY_ONE(9, "卸分一体"),
OPEN_TO_IN(10, "开单及入库");
OPEN_TO_IN(10, "开单及入库"),
FACTORY_TO_INCOMING(11, "工厂推送数据入库");
private Integer code;

11
blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java

@ -149,4 +149,15 @@ public interface RabbitConstant {
String SYNC_OLD_UPDOWN_DATA_EXCHANGE = "sync_old_updown_data_exchange" + ModuleNameConstant.DEVAUTH;
String SYNC_OLD_UPDOWN_DATA_ROUTING = "sync_old_updown_data_routing" + ModuleNameConstant.DEVAUTH;
/****************干线暂存单入库绑定装车记录队列******************/
String INCOMING_TO_LOAD_QUEUE = "incoming_to_load_queue" + ModuleNameConstant.DEVAUTH;
String INCOMING_TO_LOAD_EXCHANGE = "incoming_to_load_exchange" + ModuleNameConstant.DEVAUTH;
String INCOMING_TO_LOAD_ROUTING = "incoming_to_load_routing" + ModuleNameConstant.DEVAUTH;
/****************干线暂存单开单绑定装车记录队列******************/
String OPEN_ORDER_LOAD_SCAN_QUEUE = "open_order_load_scan_queue" + ModuleNameConstant.DEVAUTH;
String OPEN_ORDER_LOAD_SCAN_EXCHANGE = "open_order_load_scan_exchange" + ModuleNameConstant.DEVAUTH;
String OPEN_ORDER_LOAD_SCAN_ROUTING = "open_order_load_scan_routing" + ModuleNameConstant.DEVAUTH;
}

9
blade-biz-common/src/main/java/org/springblade/common/utils/CommonUtil.java

@ -258,4 +258,13 @@ public class CommonUtil {
return substring;
}
public static Date addDate(Date date, int second) {
if(Objects.isNull(date)){
return null;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.SECOND, second);
return calendar.getTime();
}
}

3
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java

@ -183,6 +183,9 @@ public class DistributionParcelListClient implements IDistributionParcelListClie
@PostMapping(API_PREFIX+"/update")
public void update(DistributionParcelListEntity distributionParcelListEntity) {
distributionParcelListService.updateById(distributionParcelListEntity);
String orderCode = distributionParcelListEntity.getOrderCode();
Long warehouseId = distributionParcelListEntity.getWarehouseId();
distributionStockArticleService.updateOrderInfo(orderCode,warehouseId);
}

16
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java

@ -58,5 +58,21 @@ public class RabbitMqConfiguration {
return BindingBuilder.bind(unloadConfirmQueue).to(unloadConfirmExchange).with(RabbitConstant.TRUNKLINE_UNLOAD_CONFIRM_ROUTING).noargs();
}
@Bean
public Queue incomingToLoadQueue() {
return new Queue(RabbitConstant.INCOMING_TO_LOAD_QUEUE, true);
}
@Bean
public CustomExchange incomingToLoadExchange() {
Map<String, Object> args = Maps.newHashMap();
args.put("x-delayed-type", "direct");
return new CustomExchange(RabbitConstant.INCOMING_TO_LOAD_EXCHANGE, "x-delayed-message", true, false, args);
}
@Bean
public Binding incomingToLoadBinding(Queue incomingToLoadQueue, CustomExchange incomingToLoadExchange) {
return BindingBuilder.bind(incomingToLoadQueue).to(incomingToLoadExchange).with(RabbitConstant.INCOMING_TO_LOAD_ROUTING).noargs();
}
}

2
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.java

@ -120,4 +120,6 @@ public interface TrunklineCarsLoadScanMapper extends BaseMapper<TrunklineCarsLoa
List<String> findSignListOrderPackageCodesByIds(@Param("list") List<Long> loadScanIds);
List<Long> findAllIdListByLoadId(@Param("loadId") Long loadId);
TrunklineCarsLoadScanEntity findEntityByOrderPackageCodeAndScanStatus(@Param("orderPackageCode") String orderPackageCode, @Param("scanStatus") String scanStatus);
}

8
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml

@ -545,4 +545,12 @@
and scan_status = '1'
</select>
<select id="findEntityByOrderPackageCodeAndScanStatus" resultType="com.logpm.trunkline.entity.TrunklineCarsLoadScanEntity">
select *
from logpm_trunkline_cars_load_scan
where scan_code = #{orderPackageCode}
and scan_status = #{scanStatus}
</select>
</mapper>

2
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineWaybillOrderMapper.java

@ -18,4 +18,6 @@ public interface TrunklineWaybillOrderMapper extends BaseMapper<TrunklineWaybill
List<TrunklineAdvanceEntity> findListByWaybillId(@Param("waybillId") Long waybillId);
Long findWaybillIdByAdvanceId(@Param("advanceId") Long advanceId);
Integer findTotalNumByWaybillNoAndOrderCode(@Param("waybillId") Long waybillId, @Param("orderCode") String orderCode);
}

7
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineWaybillOrderMapper.xml

@ -29,4 +29,11 @@
where ltwo.advance_id = #{advanceId}
</select>
<select id="findTotalNumByWaybillNoAndOrderCode" resultType="int">
select IFNULL(sum(ltwo.total_number),0)
from logpm_trunkline_waybill_order ltwo
where ltwo.waybill_id = #{waybillId}
and ltwo.order_code = #{orderCode}
</select>
</mapper>

4
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/AdvanceOrderListener.java

@ -11,6 +11,7 @@ import com.logpm.trunkline.entity.TrunklineAdvanceEntity;
import com.logpm.trunkline.entity.TrunklineDetailProductEntity;
import com.logpm.trunkline.service.ITrunklineAdvanceDetailService;
import com.logpm.trunkline.service.ITrunklineAdvanceService;
import com.logpm.trunkline.service.ITrunklineCarsLoadService;
import com.logpm.trunkline.service.ITrunklineDetailProductService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -42,6 +43,7 @@ public class AdvanceOrderListener {
private final ITrunklineAdvanceService advanceService;
private final ITrunklineAdvanceDetailService advanceDetailService;
private final ITrunklineDetailProductService detailProductService;
private final ITrunklineCarsLoadService trunklineCarsLoadService;
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = FactoryDataConstants.Mq.Queues.ADVANCE_ORDER),
@ -111,6 +113,8 @@ public class AdvanceOrderListener {
}
advanceDetailService.saveBatch(advanceDetailEntityList);
//发送入库包件处理无数据装车数据
trunklineCarsLoadService.sendRabbitMessageLoadScanData(JSONUtil.toJsonStr(advanceEntity));
detailProductService.saveBatch(detailProductEntityList);
}
}

178
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/AdvanceToLoadListener.java

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

2
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadScanService.java

@ -115,4 +115,6 @@ public interface ITrunklineCarsLoadScanService extends BaseService<TrunklineCars
List<String> findSignListOrderPackageCodesByIds(List<Long> loadScanIds);
List<Long> findAllIdListByLoadId(Long loadId);
TrunklineCarsLoadScanEntity findEntityByOrderPackageCodeAndScanStatus(String orderPackageCode, String scanStatus);
}

3
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadService.java

@ -197,4 +197,7 @@ public interface ITrunklineCarsLoadService extends BaseService<TrunklineCarsLoad
R uploadSignPhoto(LoadCarsDTO loadCarsDTO);
void sendRabbitMessageLoadScanData(String jsonMsg);
void sendRabbitMessageOpenOrder(List<Long> advanceIds, Long waybillId);
}

3
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineWaybillOrderService.java

@ -16,4 +16,7 @@ public interface ITrunklineWaybillOrderService extends BaseService<TrunklineWayb
List<TrunklineAdvanceEntity> findListByWaybillId(Long waybillId);
Long findWaybillIdByAdvanceId(Long advanceId);
Integer findTotalNumByWaybillNoAndOrderCode(Long waybillId, String orderCode);
}

6
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java

@ -86,6 +86,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
private final IOpenOrderAsyncService openOrderAsyncService;
private final ITrunklineWaybillReturnService trunklineWaybillReturnService;
private final IBasicdataOpenIncomingClient basicdataOpenIncomingClient;
private final ITrunklineCarsLoadService carsLoadService;
@Override
public IPage<TrunklineAdvanceVO> advancePageList(AdvanceDTO advanceDTO) {
@ -543,6 +544,11 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
openOrderAsyncService.saveLog(waybillId,waybillNo,"20","已入库",createOperationRemark,nickName,userId,warehouseId,warehouseName);
}
//队列处理包件补数据
// sendRabbitMessageLoadScanData(JSONUtil.parseArray(advanceIds));
carsLoadService.sendRabbitMessageOpenOrder(advanceIds,waybillId);
return R.success("开单成功");
}

5
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadScanServiceImpl.java

@ -283,4 +283,9 @@ public class TrunklineCarsLoadScanServiceImpl extends BaseServiceImpl<TrunklineC
return baseMapper.findAllIdListByLoadId(loadId);
}
@Override
public TrunklineCarsLoadScanEntity findEntityByOrderPackageCodeAndScanStatus(String orderPackageCode, String scanStatus) {
return baseMapper.findEntityByOrderPackageCodeAndScanStatus(orderPackageCode,scanStatus);
}
}

127
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java

@ -1,6 +1,9 @@
package com.logpm.trunkline.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
@ -24,7 +27,6 @@ import com.logpm.distribution.feign.IDistributionParcelListClient;
import com.logpm.distribution.feign.IDistributionParcelNumberClient;
import com.logpm.distribution.feign.IDistributionStockArticleClient;
import com.logpm.factorydata.enums.BrandEnums;
import org.springblade.common.constant.WorkNodeEnums;
import com.logpm.factorydata.util.FactoryDataMessageSender;
import com.logpm.factorydata.vo.NodePushMsg;
import com.logpm.trunkline.bean.Resp;
@ -55,6 +57,10 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.system.cache.DictBizCache;
import org.springblade.system.entity.DictBiz;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.core.MessageDeliveryMode;
import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -2015,10 +2021,17 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
String warehouseName = basicdataWarehouseEntity.getName();
//判断包条是不是已经装车
TrunklineCarsLoadScanEntity isExit = trunklineCarsLoadScanService.findEntityByLoadIdAndOrderPackageCode(loadId, orderPackageCode);
if (!Objects.isNull(isExit)) {
// TrunklineCarsLoadScanEntity isExit = trunklineCarsLoadScanService.findEntityByLoadIdAndOrderPackageCode(loadId, orderPackageCode);
// if (!Objects.isNull(isExit)) {
// log.warn("##################loadingScan: 包件已经装车 orderPackageCode={}", orderPackageCode);
// return R.fail(405, "包件已经装车");
// }
TrunklineCarsLoadScanEntity isExit = trunklineCarsLoadScanService.findEntityByOrderPackageCodeAndScanStatus(orderPackageCode, "1");
if(!Objects.isNull(isExit)){
String loadCode = isExit.getLoadCode();
log.warn("##################loadingScan: 包件已经装车 orderPackageCode={}", orderPackageCode);
return R.fail(405, "包件已经装车");
return R.fail(405, "包件已经装车"+loadCode);
}
String loadCode = carsLoadEntity.getCarsNo();
@ -4242,6 +4255,112 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
return R.success("添加成功");
}
// @Retryable(value = CustomerException.class, maxAttempts = 3, backoff = @Backoff(value = 3000, multiplier = 1.5))
@Override
public void sendRabbitMessageLoadScanData(String jsonMsg) {
String queue = RabbitConstant.INCOMING_TO_LOAD_QUEUE;
String exchange = RabbitConstant.INCOMING_TO_LOAD_EXCHANGE;
String routing = RabbitConstant.INCOMING_TO_LOAD_ROUTING;
String msgId = IdUtil.simpleUUID();
log.info("消息发送!exchange = {}, routingKey = {}, msg = {}, msgId = {}", exchange, routing, jsonMsg, msgId);
// 2.全局唯一的消息ID,需要封装到CorrelationData中
CorrelationData correlationData = new CorrelationData(msgId);
// 3.添加callback
correlationData.getFuture().addCallback(
result -> {
if (result.isAck()) {
// 3.1.ack,消息成功
log.debug("消息发送成功, ID:{}", correlationData.getId());
} else {
// 3.2.nack,消息失败
log.error("消息发送失败, ID:{}, 原因:{}", correlationData.getId(), result.getReason());
// FailMsgEntity failMsgEntity = FailMsgEntity.builder()
// .exchange(exchange)
// .msgId(correlationData.getId())
// .msg(jsonMsg)
// .reason(result.getReason()).build();
// this.failMsgService.save(failMsgEntity);
}
},
ex -> {
//出现此异常情况,可能是发送消息后无法连接到发送者或其他一些未知的异常情况
String exceptionInfo = ExceptionUtil.getMessage(ex);
log.error("消息发送异常, ID:{}, 原因:{}", correlationData.getId(), exceptionInfo);
// FailMsgEntity failMsgEntity = FailMsgEntity.builder()
// .exchange(exchange)
// .msgId(correlationData.getId())
// .msg(jsonMsg)
// .reason(exceptionInfo).build();
// this.failMsgService.save(failMsgEntity);
}
);
// 4.构造消息对象
Message message = MessageBuilder.withBody(StrUtil.bytes(jsonMsg, CharsetUtil.CHARSET_UTF_8))
.setDeliveryMode(MessageDeliveryMode.PERSISTENT) //持久化
.build();
rabbitTemplate.convertAndSend(exchange, routing, message, correlationData);
}
@Override
public void sendRabbitMessageOpenOrder(List<Long> advanceIds, Long waybillId) {
String queue = RabbitConstant.OPEN_ORDER_LOAD_SCAN_QUEUE;
String exchange = RabbitConstant.OPEN_ORDER_LOAD_SCAN_EXCHANGE;
String routing = RabbitConstant.OPEN_ORDER_LOAD_SCAN_ROUTING;
WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillId(waybillId);
if(Objects.isNull(waybillEntity)){
log.warn("#############sendRabbitMessageOpenOrder: 运单信息不存在 waybillId={}",waybillId);
return;
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("waybillId",waybillId);
jsonObject.put("waybillNo",waybillEntity.getWaybillNo());
jsonObject.put("advanceIds",advanceIds);
String jsonMsg = jsonObject.toJSONString();
String msgId = IdUtil.simpleUUID();
log.info("消息发送!exchange = {}, routingKey = {}, msg = {}, msgId = {}", exchange, routing, jsonMsg, msgId);
// 2.全局唯一的消息ID,需要封装到CorrelationData中
CorrelationData correlationData = new CorrelationData(msgId);
// 3.添加callback
correlationData.getFuture().addCallback(
result -> {
if (result.isAck()) {
// 3.1.ack,消息成功
log.debug("消息发送成功, ID:{}", correlationData.getId());
} else {
// 3.2.nack,消息失败
log.error("消息发送失败, ID:{}, 原因:{}", correlationData.getId(), result.getReason());
// FailMsgEntity failMsgEntity = FailMsgEntity.builder()
// .exchange(exchange)
// .msgId(correlationData.getId())
// .msg(jsonMsg)
// .reason(result.getReason()).build();
// this.failMsgService.save(failMsgEntity);
}
},
ex -> {
//出现此异常情况,可能是发送消息后无法连接到发送者或其他一些未知的异常情况
String exceptionInfo = ExceptionUtil.getMessage(ex);
log.error("消息发送异常, ID:{}, 原因:{}", correlationData.getId(), exceptionInfo);
// FailMsgEntity failMsgEntity = FailMsgEntity.builder()
// .exchange(exchange)
// .msgId(correlationData.getId())
// .msg(jsonMsg)
// .reason(exceptionInfo).build();
// this.failMsgService.save(failMsgEntity);
}
);
// 4.构造消息对象
Message message = MessageBuilder.withBody(StrUtil.bytes(jsonMsg, CharsetUtil.CHARSET_UTF_8))
.setDeliveryMode(MessageDeliveryMode.PERSISTENT) //持久化
.build();
rabbitTemplate.convertAndSend(exchange, routing, message, correlationData);
}
@Override
public R loadingTrayInfo(LoadCarsDTO loadCarsDTO) {
log.info("##############loadingTrayInfo: 查询托盘的货物信息");

5
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillOrderServiceImpl.java

@ -34,4 +34,9 @@ public class TrunklineWaybillOrderServiceImpl extends BaseServiceImpl<TrunklineW
public Long findWaybillIdByAdvanceId(Long advanceId) {
return baseMapper.findWaybillIdByAdvanceId(advanceId);
}
@Override
public Integer findTotalNumByWaybillNoAndOrderCode(Long waybillId, String orderCode) {
return baseMapper.findTotalNumByWaybillNoAndOrderCode(waybillId,orderCode);
}
}

3
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillPackageServiceImpl.java

@ -55,5 +55,8 @@ public class TrunklineWaybillPackageServiceImpl extends BaseServiceImpl<Trunklin
saveBatch(ls);
packageTrackLogAsyncService.addPackageTrackLog(AuthUtil.getTenantId(),AuthUtil.getUserId(), Func.firstLong(AuthUtil.getDeptId()),AuthUtil.getNickName(),orderPackageCodes,departureWarehouseId,departureWarehouseName, WorkNodeEnums.BILLING.getCode(),content );
}
}

Loading…
Cancel
Save