Browse Source

一键签收时候欧派数据推送

single_db
Diss 1 year ago
parent
commit
d63cc59981
  1. 6
      blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java
  2. 3
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java
  3. 15
      blade-service-api/logpm-factory-api/src/main/java/com/logpm/factory/comfac/constant/FactoryConstant.java
  4. 114
      blade-service-api/logpm-factory-api/src/main/java/com/logpm/factory/comfac/dto/OrderStatusDTO.java
  5. 30
      blade-service-api/logpm-factory-api/src/main/java/com/logpm/factory/oupai/feign/IOuPaiFactoryClinet.java
  6. 11
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java
  7. 197
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java
  8. 87
      blade-service/logpm-distribution/src/test/java/com/logpm/distribution/TestService.java
  9. 19
      blade-service/logpm-factory/src/main/java/com/logpm/factory/config/RabbitMqConfiguration.java
  10. 14
      blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/controller/FactoryPackageController.java
  11. 34
      blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/feign/OuPaiFactoryClinet.java
  12. 2
      blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/service/IOuPaiFactoryService.java
  13. 118
      blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/service/impl/OuPaiFactoryServiceImpl.java
  14. 68
      blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/NewSystemReceiveInfoHandler.java
  15. 62
      blade-service/logpm-factory/src/test/java/com/logpm/factory/TestService.java

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

@ -30,6 +30,12 @@ public interface RabbitConstant {
String RECEIVE_INFO_QUEUE = "receive_info_queue" + ModuleNameConstant.DEVAUTH;
String RECEIVE_INFO_EXCHANGE = "receive_info_exchange" + ModuleNameConstant.DEVAUTH;
String RECEIVE_INFO_ROUTING = "receive_info_routing" + ModuleNameConstant.DEVAUTH;
/**
* 新系统推送信息
*/
String NEW_SYSTEM_RECEIVE_INFO_QUEUE = "new_system_receive_info_queue"+ ModuleNameConstant.DEVAUTH;
String NEW_SYSTEM_RECEIVE_INFO_EXCHANGE = "new_system_receive_info_exchange"+ ModuleNameConstant.DEVAUTH;
String NEW_SYSTEM_RECEIVE_INFO_ROUTING = "new_system_receive_info_routing"+ ModuleNameConstant.DEVAUTH;
/**
* 卸车完成确认
*/

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

@ -20,6 +20,7 @@ import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.vo.DistributionParcelListVO;
import org.springblade.common.constant.ModuleNameConstant;
import org.springblade.core.mp.support.BladePage;
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@ -129,4 +130,6 @@ public interface IDistributionParcelListClient {
@GetMapping(API_PREFIX+"/findByOrderInfoByOrderPackageCodeAndWarehouseId")
Map<String,Object> findByOrderInfoByOrderPackageCodeAndWarehouseId(@RequestParam String orderPackCode,@RequestParam Long warehouseId);
@GetMapping(API_PREFIX+"/queryOrderByOrderPackageCode")
R<DistributionParcelListEntity> queryOrderByOrderPackageCode( @RequestParam String orderPackageCode);
}

15
blade-service-api/logpm-factory-api/src/main/java/com/logpm/factory/comfac/constant/FactoryConstant.java

@ -0,0 +1,15 @@
package com.logpm.factory.comfac.constant;
/**
* 工厂名称常量池
*
* @author zhy
*/
public class FactoryConstant {
public static final String PIANO = "皮阿诺";
public static final String MENGT = "梦天";
public static final String ZHIBANG = "志邦";
public static final String OUPAI = "欧派";
}

114
blade-service-api/logpm-factory-api/src/main/java/com/logpm/factory/comfac/dto/OrderStatusDTO.java

@ -0,0 +1,114 @@
/*
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the dreamlu.net developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: Chill 庄骞 (smallchill@163.com)
*/
package com.logpm.factory.comfac.dto;
import lombok.Data;
import org.springblade.core.tool.utils.StringUtil;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
/**
* OrderStatus
*
* @author zhy
* @since 2023-06-12
*/
@Data
public class OrderStatusDTO implements Serializable {
private static final long serialVersionUID = 1L;
@NotEmpty(message = "派车单号不能为空")
private String dispatchNumber;//派车单号
@NotEmpty(message = "客户订单号不能为空")
private String orderNo;//客户订单号
@NotEmpty(message = "工厂ID不能为空")
private String plantId;//工厂ID
@NotEmpty(message = "物流单号不能为空")
private String logiBillNo;//物流单号
@NotEmpty(message = "包件码不能为空")
private String unitNo;//包件码
@NotEmpty(message = "操作时间不能为空")
private String operationTime;//操作时间
@NotEmpty(message = "当前仓库不能为空")
private String currentWarehouse;//当前仓库
@NotEmpty(message = "目的仓库不能为空")
private String destinationWarehouse;//目的仓库
@NotEmpty(message = "状态不能为空")
private String status;//状态
@NotEmpty(message = "送货任务ID不能为空")
private String distributionContactId;
@NotEmpty(message = "托盘id")
private Integer trayId;
@NotEmpty(message = "托盘编码")
private String trayNo;
@NotEmpty(message = "操作人名称")
private String username;
/**
* 验证参数是否都存在
* @return
*/
public boolean verifyData(){
if(StringUtil.isBlank(dispatchNumber)){
return false;
}
if(StringUtil.isBlank(orderNo)){
return false;
}
if(StringUtil.isBlank(plantId)){
return false;
}
if(StringUtil.isBlank(logiBillNo)){
return false;
}
if(StringUtil.isBlank(unitNo)){
return false;
}
if(StringUtil.isBlank(operationTime)){
return false;
}
if(StringUtil.isBlank(currentWarehouse)){
return false;
}
if(StringUtil.isBlank(destinationWarehouse)){
return false;
}
if(StringUtil.isBlank(status)){
return false;
}
if(StringUtil.isBlank(distributionContactId)){
return false;
}
return true;
}
}

30
blade-service-api/logpm-factory-api/src/main/java/com/logpm/factory/oupai/feign/IOuPaiFactoryClinet.java

@ -0,0 +1,30 @@
package com.logpm.factory.oupai.feign;
import com.logpm.factory.comfac.dto.OrderStatusDTO;
import org.springblade.common.constant.ModuleNameConstant;
import org.springblade.core.tool.api.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
/*
* logisticsplatform-service
* @Author Diss
* @Create 2024/1/2 22:15
*/
@FeignClient(
value = ModuleNameConstant.APPLICATION_FACTORY_NAME
)
public interface IOuPaiFactoryClinet {
String API_PREFIX = "/oupai/client";
String TOP = API_PREFIX + "/newSystemHandleStatusData";
String TEST = API_PREFIX + "/test";
@PostMapping(TOP)
R newSystemHandleStatusData(@RequestBody OrderStatusDTO orderStatusDTO);
}

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

@ -32,6 +32,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.support.BladePage;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
@ -259,4 +260,14 @@ public class DistributionParcelListClient implements IDistributionParcelListClie
}
@Override
public R<DistributionParcelListEntity> queryOrderByOrderPackageCode(String orderPackageCode) {
DistributionParcelListEntity distributionParcelList = new DistributionParcelListEntity();
distributionParcelList.setOrderPackageCode(orderPackageCode);
DistributionParcelListEntity detail = distributionParcelListService.getOne(Condition.getQueryWrapper(distributionParcelList));
return R.data(detail);
}
}

197
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java

@ -16,8 +16,8 @@
*/
package com.logpm.distribution.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@ -44,8 +44,9 @@ import com.logpm.distribution.wrapper.DistributionDisStockListWrapper;
import com.logpm.distribution.wrapper.DistributionParcelListAppWrapper;
import com.logpm.distribution.wrapper.DistributionParcelListWrapper;
import com.logpm.distribution.wrapper.DistributionStockArticleWrapper;
import com.logpm.factory.comfac.dto.OrderStatusDTO;
import com.logpm.factory.oupai.feign.IOuPaiFactoryClinet;
import com.logpm.warehouse.feign.IWarehouseUpdownTypeClient;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.jetbrains.annotations.NotNull;
@ -53,6 +54,7 @@ import org.springblade.common.constant.DictBizConstant;
import org.springblade.common.constant.DistributionTypeConstant;
import org.springblade.common.constant.Inventory.InventoryLoadingStatusConstant;
import org.springblade.common.constant.Inventory.InventorySigningStatusConstant;
import org.springblade.common.constant.ModuleNameConstant;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.common.constant.common.IsOrNoConstant;
import org.springblade.common.constant.delivery.DeliveryStatusConstant;
@ -70,6 +72,7 @@ import org.springblade.common.utils.CommonUtil;
import org.springblade.common.utils.FileUtil;
import org.springblade.common.utils.GaoDeApiUtil;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
@ -77,6 +80,8 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.system.cache.DictBizCache;
import org.springblade.system.feign.IDictBizClient;
import org.springframework.amqp.AmqpException;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -86,11 +91,13 @@ import org.springframework.transaction.annotation.Transactional;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -105,81 +112,84 @@ import java.util.stream.Collectors;
@Slf4j
public class DistributionSignforServiceImpl extends BaseServiceImpl<DistributionSignforMapper, DistributionSignforEntity> implements IDistributionSignforService {
@Autowired
private DistributionLoadscanServiceImpl distributionLoadscanService;
private DistributionLoadscanServiceImpl distributionLoadscanService;
@Autowired
private DistributionLoadscaninvnServiceImpl distributionLoadscaninvnService;
private DistributionLoadscaninvnServiceImpl distributionLoadscaninvnService;
@Autowired
private IDistributionParcelListService distributionParcelListService;
private IDistributionParcelListService distributionParcelListService;
@Autowired
private IDistributionStockArticleService distributionStockArticleService;
private IDistributionStockArticleService distributionStockArticleService;
@Autowired
private DistributionLoadscanMapper distributionLoadscanMapper;
private DistributionLoadscanMapper distributionLoadscanMapper;
@Autowired
private DistributionLoadscaninvnMapper distributionLoadscaninvnMapper;
private DistributionLoadscaninvnMapper distributionLoadscaninvnMapper;
@Autowired
private DistributionDeliveryListMapper distributionDeliveryListMapper;
private DistributionDeliveryListMapper distributionDeliveryListMapper;
@Autowired
private DistributionDeliverySelfMapper distributionDeliverySelfMapper;
private DistributionDeliverySelfMapper distributionDeliverySelfMapper;
@Autowired
private DistributionDeliveryTripartiteMapper distributionDeliveryTripartiteMapper;
private DistributionDeliveryTripartiteMapper distributionDeliveryTripartiteMapper;
@Autowired
private DistributionSignforMapper distributionSignforMapper;
private DistributionSignforMapper distributionSignforMapper;
@Autowired
private DistributionStockMapper distributionStockMapper;
private DistributionStockMapper distributionStockMapper;
@Autowired
private IDictBizClient dictBizClient;
private IDictBizClient dictBizClient;
@Autowired
private IBasicdataDriverArteryClient iBasicdataDriverArteryClient;
private IBasicdataDriverArteryClient iBasicdataDriverArteryClient;
@Autowired
private IDistributionReservationPackageService reservationPackageService;
private IDistributionReservationPackageService reservationPackageService;
@Autowired
private IDistributionAsyncService distributionAsyncService;
private IDistributionAsyncService distributionAsyncService;
@Autowired
private IBasicdataWarehouseClient basicdataWarehouseClient;
private IBasicdataWarehouseClient basicdataWarehouseClient;
@Autowired
private DistributionReservationMapper distributionReservationMapper;
private DistributionReservationMapper distributionReservationMapper;
@Autowired
private IDisStockListDetailService disStockListDetailService;
private IDisStockListDetailService disStockListDetailService;
@Autowired
private IDistributionStockListService distributionStockListService;
private IDistributionStockListService distributionStockListService;
@Autowired
private DistributionStockListMapper distributionStockListMapper;
private DistributionStockListMapper distributionStockListMapper;
@Autowired
private DistributionAddvalueMapper distributionAddvalueMapper;
private DistributionAddvalueMapper distributionAddvalueMapper;
@Autowired
private IDistributionAddvalueService distributionAddvalueService;
private IDistributionAddvalueService distributionAddvalueService;
@Autowired
private IDistributionAddvaluePackageService distributionAddvaluePackageService;
private IDistributionAddvaluePackageService distributionAddvaluePackageService;
@Autowired
private IDistributionLoadscanAbnormalService distributionLoadscanAbnormalService;
private IDistributionLoadscanAbnormalService distributionLoadscanAbnormalService;
@Autowired
private IDistributionReservationStockarticleService distributionReservationStockarticleService;
private IDistributionReservationStockarticleService distributionReservationStockarticleService;
@Autowired
private IDistributionReservationPackageService distributionReservationPackageService;
private IDistributionReservationPackageService distributionReservationPackageService;
@Autowired
private IDistributionReservationZeroPackageService distributionReservationZeroPackageService;
private IDistributionReservationZeroPackageService distributionReservationZeroPackageService;
@Autowired
private IDistributionSignPrintService iDistributionSignPrintService;
private IDistributionSignPrintService iDistributionSignPrintService;
@Autowired
private IDistributionParcelNumberService distributionParcelNumberService;
private IDistributionParcelNumberService distributionParcelNumberService;
@Autowired
private IWarehouseUpdownTypeClient warehouseUpdownTypeClient;
private IWarehouseUpdownTypeClient warehouseUpdownTypeClient;
@Autowired
private DistributionStockArticleMapper distributionStockArticleMapper;
private DistributionStockArticleMapper distributionStockArticleMapper;
@Autowired
private IBasicdataClientClient basicdataClientClient;
private IBasicdataClientClient basicdataClientClient;
@Autowired
private DistributionParcelListMapper distributionParcelListMapper;
private DistributionParcelListMapper distributionParcelListMapper;
@Autowired
@Lazy
private IDistributionDeliveryListService distributionDeliveryListService;
@Autowired
@Lazy
private IDistributionReservationService distributionReservationService;
@Autowired
private RabbitTemplate rabbitTemplate;
@Autowired
private RabbitTemplate rabbitTemplate;
// private IBasicdataWarehouseClient warehouseUpdownTypeClient;
@Autowired
private IOuPaiFactoryClinet ouPaiFactoryClinet;
// private IBasicdataWarehouseClient warehouseUpdownTypeClient;
@Override
public IPage<DistributionSignforVO> selectDistributionSignforPage(IPage<DistributionSignforVO> page, DistributionSignforVO distributionSignfor) {
@ -207,8 +217,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
int weiqianshoujianshu = 0;
int zhuangchejianshu = 0;
int qianshoujianshu = 0;
if (Func.isNotEmpty(distributionParcelListEntities)){
weizhuangchejianshu += distributionParcelListEntities.stream().filter(f -> f.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.weizhuancghe.getValue())).mapToInt(DistributionParcelListEntity::getQuantity).sum();
if (Func.isNotEmpty(distributionParcelListEntities)) {
weizhuangchejianshu += distributionParcelListEntities.stream().filter(f -> f.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.weizhuancghe.getValue())).mapToInt(DistributionParcelListEntity::getQuantity).sum();
zhuangchejianshu += distributionParcelListEntities.stream().filter(f -> f.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.yizhuangche.getValue())).mapToInt(DistributionParcelListEntity::getQuantity).sum();
weiqianshoujianshu += distributionParcelListEntities.stream().filter(f -> !f.getOrderPackageStatus().equals(OrderPackageStatusConstant.yiqianshou.getValue())).mapToInt(DistributionParcelListEntity::getQuantity).sum();
qianshoujianshu += distributionParcelListEntities.stream().filter(f -> f.getOrderPackageStatus().equals(OrderPackageStatusConstant.yiqianshou.getValue())).mapToInt(DistributionParcelListEntity::getQuantity).sum();
@ -221,9 +231,9 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
DistributionLoadingNumDTO reservationSigningNum = distributionReservationMapper.selectReservationSigningNum(d.getReservationId());
if (d.getDeliveryType().equals(DistributionTypeConstant.shipie.getValue())){
if (d.getDeliveryType().equals(DistributionTypeConstant.shipie.getValue())) {
List<DisStockListDetailEntity> disStockListDetailEntities = distributionReservationMapper.selectInventoryListByReservation(d.getReservationId());
if (Func.isNotEmpty(disStockListDetailEntities)){
if (Func.isNotEmpty(disStockListDetailEntities)) {
//查询库存品未装车数
int inventoryuweizhuancghe = disStockListDetailEntities.stream().filter(f -> f.getStockLockingStatus().equals(OrderPackageLoadingStatusConstant.weizhuancghe.getValue())).mapToInt(DisStockListDetailEntity::getNum).sum();
weizhuangchejianshu += inventoryuweizhuancghe;
@ -380,18 +390,18 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
.eq(DistributionLoadscanEntity::getIsAbnormalLoading, 2)
.ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue())
);
if (Func.isNotEmpty(loadscanEntities)){
if (Func.isNotEmpty(loadscanEntities)) {
Map<Long, DistributionLoadscanEntity> packageLoadingMap = loadscanEntities.stream().collect(Collectors.toMap(DistributionLoadscanEntity::getPackageId, Function.identity(), (k1, k2) -> k2));
List<Long> packageIds = loadscanEntities.stream().distinct().map(DistributionLoadscanEntity::getPackageId).collect(Collectors.toList());
List<DistributionParcelListEntity> distributionParcelListEntities = distributionParcelListService.listByIds(packageIds);
List<DistributionParcelListVO> distributionParcelListVOS = DistributionParcelListWrapper.build().listVO(distributionParcelListEntities);
distributionParcelListVOS.forEach(p->{
distributionParcelListVOS.forEach(p -> {
DistributionNumberDetailDTO detailDTO = Func.copy(p, DistributionNumberDetailDTO.class);
if (Func.isNotEmpty(packageLoadingMap.get(p.getId()))){
if (Func.isNotEmpty(packageLoadingMap.get(p.getId()))) {
DistributionLoadscanEntity distributionLoadscanEntity = packageLoadingMap.get(p.getId());
detailDTO.setLoadingTime(distributionLoadscanEntity.getScanTime());
detailDTO.setLoadingStatusName(OrderPackageLoadingStatusConstant.weizhuancghe.getName());
if (distributionLoadscanEntity.getSignforState().equals(LoadScanSigningStatusConstant.yiqianshou.getValue())){
if (distributionLoadscanEntity.getSignforState().equals(LoadScanSigningStatusConstant.yiqianshou.getValue())) {
//签收
detailDTO.setSigningTime(distributionLoadscanEntity.getSigningTime());
detailDTO.setSigningStatusName(OrderPackageStatusConstant.yiqianshou.getName());
@ -403,15 +413,15 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
.eq(DistributionStockEntity::getStockArticle, p.getStockArticleId())
.eq(DistributionStockEntity::getParcelListId, p.getId())
);
if (Func.isNotEmpty(distributionStockEntity)){
if (Func.isNotEmpty(distributionStockEntity)) {
detailDTO.setStockupTime(distributionStockEntity.getCreateTime());
}
detailDTO.setStockupStatusName(p.getOrderPackageStockupStatusName());
if (detailDTO.getConditions().equals(1)){
if (detailDTO.getConditions().equals(1)) {
detailDTO.setConditionsName("订制品");
}else if (detailDTO.getConditions().equals(2)){
} else if (detailDTO.getConditions().equals(2)) {
detailDTO.setConditionsName("库存品");
}else {
} else {
detailDTO.setConditionsName("零担");
}
detailDTOS.add(detailDTO);
@ -997,7 +1007,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
updatePackage.setOrderPackageStatus(OrderPackageStatusConstant.yiqianshou.getValue());
distributionParcelListService.updateById(updatePackage);
//维护签收包件状态
distributionStockArticleService.maintenanceOrderInfo(collect.get(0).getOrderCode(),myCurrentWarehouse.getId());
distributionStockArticleService.maintenanceOrderInfo(collect.get(0).getOrderCode(), myCurrentWarehouse.getId());
//推送信息至工厂
distributionAsyncService.sendFactory(collect.get(0), signingTime, distributionReservationEntity.getId(), distributionReservationEntity.getReservationCode(), myCurrentWarehouse.getName());
//TODO 这里就需要一个异步的包件状态维护方法
@ -1041,6 +1051,33 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionReservationService.maintenanceReservationInfo(distrilbutionloadingscanDTO.getReservationId());
//维护配送任务
distributionDeliveryListService.maintenanceDeliveryInfo(distrilbutionloadingscanDTO.getDeliveryId());
//TODO 在调用出库接口 通知欧派
DistributionSignforEntity distributionSignforEntity = distributionSignforMapper.getByReservationId(distrilbutionloadingscanDTO.getReservationId());
// Long reservationId = distributionSignfor.getReservationId();
// DistributionSignforEntity distributionSignforEntity1 = distributionSignforMapper.getByReservationId(reservationId);
BladeUser user = AuthUtil.getUser();
OrderStatusDTO orderStatusDTO = new OrderStatusDTO();
orderStatusDTO.setStatus("7");//状态
orderStatusDTO.setOperationTime(simpleDateFormat.format(new Date()));//操作时间
//orderStatusDTO.setUsername(distributionSignforEntity.getSigneeName()); //签收人(名称)
orderStatusDTO.setUsername(user.getUserName()); //签收人(名称)
orderStatusDTO.setUnitNo(distrilbutionloadingscanDTO.getBarcode()); //包条码
orderStatusDTO.setCurrentWarehouse(String.valueOf(myCurrentWarehouse.getWarehouseCode())); //当前仓库ID
DistributionStockArticleEntity distributionStockArticle = new DistributionStockArticleEntity();
Long stockArticleId = parcelListEntity.getStockArticleId();
distributionStockArticle.setId(stockArticleId); // 需要一个stock_article_id` bigint(20) DEFAULT NULL COMMENT '在库订单ID',
DistributionStockArticleEntity distributionStockArticleEntity = distributionStockArticleService.getOne(Condition.getQueryWrapper(distributionStockArticle));
String brand = distributionStockArticleEntity.getBrand();
Map<String, Object> mapState = new HashMap<>();
mapState.put("orderStatusDTO", orderStatusDTO);
mapState.put("brand", brand);
rabbitTemplate.convertAndSend(RabbitConstant.NEW_SYSTEM_RECEIVE_INFO_QUEUE, mapState);
return Resp.scanSuccess("签收成功", str);
}
@ -1385,10 +1422,10 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionLoadscanEntity.setScanUser(AuthUtil.getUser().getUserName());
distributionLoadscanEntity.setSigningUser(AuthUtil.getUser().getUserName());
distributionLoadscanEntity.setSigningUserId(AuthUtil.getUser().getUserId());
if (Func.isEmpty(loadscanEntity)){
if (Func.isEmpty(loadscanEntity)) {
distributionLoadscanService.save(distributionLoadscanEntity);
Integer j = distributionSignforMapper.updateSignforNum(distributionLoadscanEntity.getDeliveryId(), distributionLoadscanEntity.getReservationId(), distributionLoadscanEntity.getPackageNub());
}else {
} else {
distributionLoadscanService.updateById(distributionLoadscanEntity);
Integer j = distributionSignforMapper.updateSignforNum(distributionLoadscanEntity.getDeliveryId(), distributionLoadscanEntity.getReservationId(), distributionLoadscanEntity.getPackageNub());
}
@ -1405,7 +1442,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
parcelListEntity.setOrderPackageStatus(OrderPackageStatusConstant.yiqianshou.getValue());
distributionParcelListService.updateById(parcelListEntity);
//维护订单信息
distributionStockArticleService.maintenanceOrderInfo(parcelListEntity.getOrderCode(),parcelListEntity.getWarehouseId());
distributionStockArticleService.maintenanceOrderInfo(parcelListEntity.getOrderCode(), parcelListEntity.getWarehouseId());
break;
}
//查询一次是否进行了异常装车,如果没有进行异常装车数据进行审核
@ -1414,7 +1451,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
.eq(DistributionLoadscanAbnormalEntity::getDeliveryListId, distrilbutionloadingscanDTO.getDeliveryId())
.eq(DistributionLoadscanAbnormalEntity::getPackageCode, distrilbutionloadingscanDTO.getBarcode())
);
if (Func.isEmpty(list)){
if (Func.isEmpty(list)) {
BladeUser user = AuthUtil.getUser();
DistributionLoadscanAbnormalEntity distributionLoadscanAbnormalEntity = new DistributionLoadscanAbnormalEntity();
distributionLoadscanAbnormalEntity.setAuditingStatus(LoadingAbnormalAuditingStatusConstant.daishenhe.getValue());
@ -1438,9 +1475,9 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
signforEntity.setIsHaveAbnormalPackage(2);
this.updateById(signforEntity);
//修改包件的签收数量
distributionParcelListMapper.updateOrderPackageCodeById(parcelListEntity.getId(),OrderPackageStatusConstant.yiqianshou.getValue());
distributionParcelListMapper.updateOrderPackageCodeById(parcelListEntity.getId(), OrderPackageStatusConstant.yiqianshou.getValue());
//还需要维护包件状态
distributionAsyncService.maintenanceOrderStatus(parcelListEntity.getOrderCode(),parcelListEntity.getWarehouseId());
distributionAsyncService.maintenanceOrderStatus(parcelListEntity.getOrderCode(), parcelListEntity.getWarehouseId());
} else {
log.error("############出现相同的包件码:{}", distrilbutionloadingscanDTO.getBarcode());
return Resp.scanFail("操作失败", "包件信息有误");
@ -1596,7 +1633,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
@Override
public List<DistributionAppSignforVO> getAppDeliveryreservationListPage( DistributionAppDeliveryListDTO distributionDeliveryList) {
public List<DistributionAppSignforVO> getAppDeliveryreservationListPage(DistributionAppDeliveryListDTO distributionDeliveryList) {
//查询客户
List<DistributionAppSignforVO> customList = baseMapper.selectAppcustomListPage(distributionDeliveryList.getId());
@ -1909,7 +1946,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
int reservationTotal = reservationZeroPackageEntityList.stream().mapToInt(DistributionReservationZeroPackageEntity::getQuantity).sum();
distributionAppStockArticleVO.setReservationNum(reservationTotal);
List<DistributionParcelNumberVO> parcelNumberVOS = distributionReservationMapper.selectReservationZeroOrderDetail(orderId, Long.parseLong(distributionDeliveryList.getReservationId()));
parcelNumberVOS.forEach(p -> {
parcelNumberVOS.forEach(p -> {
DistributionLoadscanEntity loadscanEntity = distributionLoadscanService.getOne(Wrappers.<DistributionLoadscanEntity>query().lambda().eq(DistributionLoadscanEntity::getReservationId, distributionDeliveryList.getReservationId()).eq(DistributionLoadscanEntity::getOrderId, orderId).eq(DistributionLoadscanEntity::getPackageId, p.getParcelListId()).ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue()));
p.setLoadingNum(0);
p.setSigningNum(0);
@ -1923,13 +1960,13 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
}
orderVos.add(distributionAppStockArticleVO);
orderVos.add(distributionAppStockArticleVO);
}
}
}
return orderVos;
}
}
// Map<Long, List<DistributionLoadscanEntity>> orderMap = distributionLoadscanEntities.stream().collect(Collectors.groupingBy(DistributionLoadscanEntity::getOrderId));
@ -2305,7 +2342,6 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (Func.equals(distributionSignforEntity.getDriverSigning(), SignforDriverSigningStatusConstant.yiqianshou.getValue())) {
log.error("###############重复签收+{" + distributionSignforEntity + "}");
return R.fail("签收失败");
@ -2413,6 +2449,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
return R.fail("库存品未进行备货操作");
}
}
//查询出该签收任务下的客户对应的所有包件和库存品信息
List<DistributionParcelListEntity> parcelListEntityList = distributionReservationMapper.selectPackageListByReservationId(distributionSignforEntity.getReservationId());
//包件不需要考虑备货、装车直接可进行签收 过滤已装车的包件
@ -2656,9 +2694,9 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
//批量维护订单信息
if (Func.isNotEmpty(orderCodes)){
if (Func.isNotEmpty(orderCodes)) {
String orderCode = orderCodes.stream().distinct().collect(Collectors.joining(","));
distributionStockArticleService.maintenanceOrderInfo(orderCode,myCurrentWarehouse.getId());
distributionStockArticleService.maintenanceOrderInfo(orderCode, myCurrentWarehouse.getId());
}
@ -2668,6 +2706,28 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionAsyncService.sendReviewFactory(distributionSignforEntity.getId(),myCurrentWarehouse.getName() ,myCurrentWarehouse.getId());
}
}
//TODO 调用出库接口
for (DistributionParcelListEntity distributionParcelListEntity : parcelListEntityList) {
//根据ID获取品牌
DistributionStockArticleEntity distributionStockArticle = new DistributionStockArticleEntity();
distributionStockArticle.setId(distributionParcelListEntity.getStockArticleId());
DistributionStockArticleEntity distributionStockArticleEntity = distributionStockArticleService.getOne(Condition.getQueryWrapper(distributionStockArticle));
String brand = distributionStockArticleEntity.getBrand(); //获取品牌
OrderStatusDTO orderStatusDTO = new OrderStatusDTO();
orderStatusDTO.setStatus("7");//状态
orderStatusDTO.setOperationTime(simpleDateFormat.format(new Date()));//操作时间
orderStatusDTO.setUsername(user.getUserName()); //签收人(名称)
orderStatusDTO.setUnitNo(distributionParcelListEntity.getOrderPackageCode()); //包条码
orderStatusDTO.setCurrentWarehouse(String.valueOf(distributionParcelListEntity.getWarehouseId())); //当前仓库ID
Map<String, Object> mapState = new HashMap<>();
mapState.put("orderStatusDTO", orderStatusDTO);
mapState.put("brand", brand);
//rabbitTemplate.convertAndSend(RabbitConstant.NEW_SYSTEM_RECEIVE_INFO_QUEUE, mapState);
rabbitTemplate.convertAndSend(RabbitConstant.NEW_SYSTEM_RECEIVE_INFO_EXCHANGE, RabbitConstant.NEW_SYSTEM_RECEIVE_INFO_ROUTING, mapState);
System.out.println("发送消息成功");
}
//维护客户信息状态
reservationEntity.setLoadingStatus(ReservationLoadingStatusConstant.yizhuangche.getValue());
@ -2702,7 +2762,6 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
@Override
public R offline(String offlineJson) {
return null;
@ -3066,7 +3125,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
.eq(DistributionLoadscanEntity::getOrderPackageCode, distributionLoadscanAbnormalEntity.getPackageCode())
);
loadscanEntity.setIsAbnormalLoading(1);
if (loadscanEntity.getSignforState().equals(LoadScanSigningStatusConstant.yiqianshou.getValue())){
if (loadscanEntity.getSignforState().equals(LoadScanSigningStatusConstant.yiqianshou.getValue())) {
//已经进行签收了 这里就需要将异常签收的状态变更为正常
loadscanEntity.setIsAbnormalSigning(1);
}

87
blade-service/logpm-distribution/src/test/java/com/logpm/distribution/TestService.java

@ -1,14 +1,26 @@
package com.logpm.distribution;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.logpm.distribution.bean.Resp;
import com.logpm.distribution.dto.DistributionSignforDTO;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.entity.DistributionStockArticleEntity;
import com.logpm.distribution.feign.IDistributionParcelListClient;
import com.logpm.distribution.service.IDistributionDeliveryListService;
import com.logpm.distribution.service.IDistributionParcelListService;
import com.logpm.distribution.service.IDistributionSignforService;
import com.logpm.distribution.service.IDistributionStockArticleService;
import com.logpm.distribution.service.impl.DistributionSignforServiceImpl;
import com.logpm.distribution.vo.print.PrintPreviewVO;
import com.logpm.factory.comfac.dto.OrderStatusDTO;
import com.logpm.factory.oupai.entity.FactoryOrderEntity;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.test.BladeBootTest;
import org.springblade.core.test.BladeSpringExtension;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
@ -19,8 +31,8 @@ public class TestService {
@Autowired
private IDistributionDeliveryListService distributionDeliveryListService;
@Autowired
private IDistributionParcelListService distributionParcelListService;
@Autowired
private DistributionSignforServiceImpl iDistributionSignforService;
@ -65,5 +77,76 @@ public class TestService {
iDistributionSignforService.buildArgsToPushMq(dto);
}
@Test
public void test6(){
DistributionParcelListEntity distributionParcelList = new DistributionParcelListEntity();
distributionParcelList.setOrderPackageCode("P0099231005B608640");
DistributionParcelListEntity detail = distributionParcelListService.getOne(Condition.getQueryWrapper(distributionParcelList));
System.out.println(detail);
}
@Autowired
private IDistributionParcelListClient distributionParcelListClient;
// @Autowired
// private IFactoryOrderService factoryOrderService;
@Test
public void test19(){
OrderStatusDTO orderStatusDTO = new OrderStatusDTO();
orderStatusDTO.setStatus("7"); //状态
orderStatusDTO.setUnitNo("P0041231007B673609"); //包件码
orderStatusDTO.setOperationTime("2021-08-25 15:39:54"); //操作时间
orderStatusDTO.setCurrentWarehouse("17119930215609234689"); //收货仓 //1711993021509234689 荆门仓
orderStatusDTO.setUsername("liu"); //操作人
R<DistributionParcelListEntity> detail = distributionParcelListClient.queryOrderByOrderPackageCode("P0041231007B673609");
System.out.println(detail.getData());
// 推送数据
String status = orderStatusDTO.getStatus();
String unitNo = orderStatusDTO.getUnitNo();
String operationTime = orderStatusDTO.getOperationTime();
// || "7".equals(status) 增加签收状态推送
if ("2".equals(status) || "3".equals(status) || "5".equals(status) || "6".equals(status) || "8".equals(status) || "9".equals(status)) {
System.out.println("log.warn(\"#############oupai-handleStatusData: 当前数据的状态不推送 status={}\", status);");
// return Resp.fail(400, "当前数据的状态不推送");
}
//继续判断是否到达目的仓
String currentWarehouseId = orderStatusDTO.getCurrentWarehouse();//当前仓Id
//查询destinationWarehouse logiBillNo plantId数据
System.out.println("log.info(\"oupai-handleStatusData >>> unitNo={}\", );"+unitNo);
// Map<String, String> supplyData = advanceDetailClient.getSupplyData(unitNo);
DistributionParcelListEntity distributionParcelList = new DistributionParcelListEntity();
distributionParcelList.setOrderPackageCode(orderStatusDTO.getUnitNo());
R<DistributionParcelListEntity> distributionParcelListEntity = distributionParcelListClient.queryOrderByOrderPackageCode(orderStatusDTO.getUnitNo());
if (ObjectUtils.isEmpty(distributionParcelListEntity.getData())) {
System.out.println("//\treturn Resp.fail(400, \"未查询到该单据信息\");");
}
String destinationWarehouseId = String.valueOf(distributionParcelListEntity.getData().getAcceptWarehouseId());//目的仓id
if (StringUtil.isBlank(currentWarehouseId) || StringUtil.isBlank(destinationWarehouseId)) {
System.out.println("\t\t\tlog.warn(\"##############oupai-handleStatusData: 仓库数据有问题currentWarehouseId={} destinationWarehouseId={}"+currentWarehouseId+" destinationWarehouseId="+destinationWarehouseId);
// return Resp.fail(400, "仓库数据有误");
}
if (!currentWarehouseId.equals(destinationWarehouseId)) {
System.out.println("\t\t\tlog.info(\"##############oupai-handleStatusData: 不用处理的状态 currentWarehouseId={} destinationWarehouseId={}\", currentWarehouseId, destinationWarehouseId);\n");
System.out.println("//return Resp.fail(400, \"不是目的仓\");");
}
//FactoryOrderEntity factoryOrder = factoryOrderService.selectEntityByOrderPackageCode(unitNo);
// System.out.println(factoryOrder);
// return Resp.success("成功");
}
@Autowired
private IDistributionStockArticleService distributionStockArticleService;
@Test
public void test18(){
DistributionStockArticleEntity distributionStockArticle = new DistributionStockArticleEntity();
distributionStockArticle.setId(1739219471358267394L);
DistributionStockArticleEntity detail = distributionStockArticleService.getOne(Condition.getQueryWrapper(distributionStockArticle));
System.out.println(detail.getBrand());
}
}

19
blade-service/logpm-factory/src/main/java/com/logpm/factory/config/RabbitMqConfiguration.java

@ -2,6 +2,7 @@ package com.logpm.factory.config;
import com.alibaba.nacos.shaded.com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.ModuleNameConstant;
import org.springblade.common.constant.RabbitConstant;
import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
@ -182,6 +183,24 @@ public class RabbitMqConfiguration {
return BindingBuilder.bind(receiveInfoQueue).to(receiveInfoExchange).with(RabbitConstant.RECEIVE_INFO_ROUTING).noargs();
}
@Bean
public Queue newSystemReceiveInfoHandler() {
return new Queue(RabbitConstant.NEW_SYSTEM_RECEIVE_INFO_QUEUE, true);
}
@Bean
public CustomExchange newSystemReceiveInfoExchange() {
Map<String, Object> args = Maps.newHashMap();
args.put("x-delayed-type", "direct");
return new CustomExchange(RabbitConstant.NEW_SYSTEM_RECEIVE_INFO_EXCHANGE, "x-delayed-message", true, false, args);
}
@Bean
public Binding newSystemReceiveInfoBinding(Queue newSystemReceiveInfoHandler, CustomExchange newSystemReceiveInfoExchange) {
return BindingBuilder.bind(newSystemReceiveInfoHandler)
.to(newSystemReceiveInfoExchange)
.with(RabbitConstant.NEW_SYSTEM_RECEIVE_INFO_ROUTING)
.noargs();
}
/***/

14
blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/controller/FactoryPackageController.java

@ -18,8 +18,10 @@ package com.logpm.factory.oupai.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.logpm.factory.comfac.dto.OrderStatusDTO;
import com.logpm.factory.oupai.entity.FactoryPackageEntity;
import com.logpm.factory.oupai.service.IFactoryPackageService;
import com.logpm.factory.oupai.service.IOuPaiFactoryService;
import com.logpm.factory.oupai.vo.FactoryPackageVO;
import com.logpm.factory.oupai.wrapper.FactoryPackageWrapper;
import io.swagger.annotations.Api;
@ -50,7 +52,7 @@ import java.util.Map;
public class FactoryPackageController extends BladeController {
private final IFactoryPackageService factoryPackageService;
private IOuPaiFactoryService ouPaiFactoryService;
/**
* 欧派工厂包件 详情
*/
@ -123,7 +125,15 @@ public class FactoryPackageController extends BladeController {
return R.status(factoryPackageService.deleteLogic(Func.toLongList(ids)));
}
/**
* 欧派工厂订单 欧派推送包件状态
*/
@PostMapping("/pushPckage")
@ApiOperationSupport(order = 8)
@ApiOperation(value = "传入订单信息", notes = "传入orderStatusDTO")
public R outbound(@RequestBody OrderStatusDTO orderStatusDTO) {
return ouPaiFactoryService.newSystemHandleStatusData(orderStatusDTO);
}
}

34
blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/feign/OuPaiFactoryClinet.java

@ -0,0 +1,34 @@
package com.logpm.factory.oupai.feign;
import com.logpm.factory.comfac.dto.OrderStatusDTO;
import com.logpm.factory.oupai.service.IOuPaiFactoryService;
import lombok.AllArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
/*
* logisticsplatform-service
* @Author Diss
* @Create 2024/1/2 22:13
*/
@NonDS
@ApiIgnore
@RestController
@AllArgsConstructor
public class OuPaiFactoryClinet implements IOuPaiFactoryClinet{
private IOuPaiFactoryService ouPaiFactoryService;
@Override
@PostMapping(TOP)
public R newSystemHandleStatusData(OrderStatusDTO orderStatusDTO) {
return ouPaiFactoryService.newSystemHandleStatusData(orderStatusDTO);
}
}

2
blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/service/IOuPaiFactoryService.java

@ -39,4 +39,6 @@ public interface IOuPaiFactoryService {
* @return
*/
R handleStatusData(OrderStatusDTO orderStatusDTO);
R newSystemHandleStatusData(OrderStatusDTO orderStatusDTO);
}

118
blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/service/impl/OuPaiFactoryServiceImpl.java

@ -8,6 +8,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.feign.IDistributionParcelListClient;
import com.logpm.factory.comfac.constant.FactoryConstant;
import com.logpm.factory.comfac.dto.OrderStatusDTO;
import com.logpm.factory.comfac.service.IAsyncDataService;
import com.logpm.factory.oupai.entity.*;
@ -88,7 +91,8 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService {
@Autowired
private BladeRedis bladeRedis;
@Autowired
private IDistributionParcelListClient distributionParcelListClient;
@Override
public String saveOuPaiFactoryOrderDTOByCarCarNumber(String code) {
@ -402,7 +406,6 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService {
@Override
public R handleStatusData(OrderStatusDTO orderStatusDTO) {
// 推送数据
String status = orderStatusDTO.getStatus();
String unitNo = orderStatusDTO.getUnitNo();
@ -539,6 +542,117 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService {
log.info("包件推送记录未null 包条码{}", factoryPackageEntity.getCode());
}
// return Resp.success("物流状态传递成功");
}
@Override
public R newSystemHandleStatusData(OrderStatusDTO orderStatusDTO) {
// 推送数据
String status = orderStatusDTO.getStatus();
String unitNo = orderStatusDTO.getUnitNo();
String operationTime = orderStatusDTO.getOperationTime();
// || "7".equals(status) 增加签收状态推送
if ("2".equals(status) || "3".equals(status) || "5".equals(status) || "6".equals(status) || "8".equals(status) || "9".equals(status)) {
log.warn("#############oupai-handleStatusData: 当前数据的状态不推送 status={}", status);
return Resp.fail(400, "当前数据的状态不推送");
}
//继续判断是否到达目的仓
String currentWarehouseId = orderStatusDTO.getCurrentWarehouse();//当前仓Id
//查询destinationWarehouse logiBillNo plantId数据
log.info("oupai-handleStatusData >>> unitNo={}", unitNo);
R<DistributionParcelListEntity> distributionParcelListEntity = distributionParcelListClient.queryOrderByOrderPackageCode(unitNo);
if (ObjectUtils.isEmpty(distributionParcelListEntity.getData())) {
return Resp.fail(400, "未查询到该单据信息");
}
String destinationWarehouseId = String.valueOf(distributionParcelListEntity.getData().getAcceptWarehouseId());//目的仓id
if (StringUtil.isBlank(currentWarehouseId) || StringUtil.isBlank(destinationWarehouseId)) {
log.warn("##############oupai-handleStatusData: 仓库数据有问题currentWarehouseId={} destinationWarehouseId={}", currentWarehouseId, destinationWarehouseId);
return Resp.fail(400, "仓库数据有误");
}
if (!currentWarehouseId.equals(destinationWarehouseId)) {
log.info("##############oupai-handleStatusData: 不用处理的状态 currentWarehouseId={} destinationWarehouseId={}", currentWarehouseId, destinationWarehouseId);
return Resp.fail(400, "不是目的仓");
}
// 查询这个包件对应到新系统的订单
FactoryOrderEntity factoryOrder = factoryOrderService.selectEntityByOrderPackageCode(unitNo);
if (Objects.isNull(factoryOrder)) {
return Resp.fail(400, "未查询到该单据推送订单信息");
}
// 如何判断这个包间是非干仓配的数据
if (!"经销商".equals(factoryOrder.getBusinessModel())) {
log.info("oupai- 该包条为干仓配的数据类型 不进行推送 >>> unitNo={} businessModel:{}", unitNo, factoryOrder.getBusinessModel());
return Resp.fail(400, "包条为干仓配的数据类型");
}
boolean isPushHtNomal = checkOpfactoryOrderBusinessModel(factoryOrder);
if (isPushHtNomal) {
log.info("oupai- 该包条为汇通使用欧派系统进行作业类型型 不进行推送 >>> unitNo={} businessModel:{}", unitNo, factoryOrder.getBusinessModel());
return Resp.fail(400, "该包条为汇通使用欧派系统进行作业类型");
}
// 通过仓库编码查询
ReceivingOrderEntity receivingOrderEntity = receivingOrderMapper.selectById(factoryOrder.getReceivingId());
if (Objects.isNull(receivingOrderEntity)) {
log.info(" 该订单为没有收货单 不进行推送 >>> receivingId={} ", factoryOrder.getReceivingId());
return Resp.fail(400, "未查询到该单据推送收货单信息");
}
if (StringUtil.isBlank(receivingOrderEntity.getCurrentWarehouseOid())) {
log.info(" 该订单为没有收货仓 不进行推送 >>> getCurrentWarehouseOid={} ", receivingOrderEntity.getCurrentWarehouseOid());
return Resp.fail(400, "收货仓信息不能为null");
}
if (!receivingOrderEntity.getCurrentWarehouseName().contains("仓")) {
log.info(" 该订单为没有收货仓信息不正确 getCurrentWarehouseName={} ", receivingOrderEntity.getCurrentWarehouseName());
return Resp.fail(400, "该订单为没有收货仓信息不正确");
}
JSONObject detailObject = new JSONObject();
detailObject.put("WarehouseOid", receivingOrderEntity.getCurrentWarehouseOid());
detailObject.put("WarehouseBelong", "oppein");
detailObject.put("Creator", orderStatusDTO.getUsername());
detailObject.put("PackageCode", unitNo);
// 增加当仓直接入库的 就没有卸车收货的状态 直接 进行入库 入库就表示货物进入当前仓库
if ("4".equals(status) || "1".equals(status)) {
detailObject.put("Operate", "收货");
} else if ("7".equals(status)) {
detailObject.put("Operate", "发货");
} else {
log.info(" 该包件的状态不正确 status={} ", status);
return Resp.fail(400, "该包件的状态不正确");
}
// 查询系统的包件对象
LambdaQueryWrapper<FactoryPackageEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(FactoryPackageEntity::getCode, unitNo);
FactoryPackageEntity factoryPackageEntity = factoryPackageService.getOne(lambdaQueryWrapper);
if (ObjectUtils.isNotNull(factoryPackageEntity)) {
// 推送数据
String url = ouPaiProperties.getUri() + "tims_odata_api/api/odata/PackageFeedbackRecord";
OpPackagePushLogEntity opPackagePushLogEntity = sendPushOuPaiData(factoryPackageEntity.getId(), url, 1, detailObject);
if (opPackagePushLogEntity == null) {
log.info(" >>>>>>>>>>>>>>>>>>>>>>> 包件 {} 已推送欧派 状态 {}", unitNo, detailObject.get("Operate"));
} else {
// 需要盘点这个对象的
String resp = opPackagePushLogEntity.getResp();
// 转换为json
// JSONObject respJson = JSONObject.parseObject(resp);
log.info(" >>>>>>>>>>>>>>>>>>>>>>> 推送欧派返回数据 {}", resp);
// TODO: 2023/10/25 不知道返回成功的状态是多少
// 需要修改包件对应的状态
factoryPackageEntity.setPushStatus(1);
factoryPackageService.updateById(factoryPackageEntity);
}
}
System.out.println("物流状态传递成功");
return Resp.success("物流状态传递成功");
}
/**

68
blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/NewSystemReceiveInfoHandler.java

@ -0,0 +1,68 @@
package com.logpm.factory.receiver;
/*
* logisticsplatform-service
* @Author Diss
* @Create 2024/1/4 17:41
*/
import com.logpm.factory.comfac.constant.FactoryConstant;
import com.logpm.factory.comfac.dto.OrderStatusDTO;
import com.logpm.factory.oupai.service.IOuPaiFactoryService;
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.ModuleNameConstant;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.common.exception.CustomerException;
import org.springblade.core.tool.api.R;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.util.Map;
import java.util.Objects;
@Slf4j
@RabbitListener(queues = RabbitConstant.NEW_SYSTEM_RECEIVE_INFO_QUEUE)
@Component
public class NewSystemReceiveInfoHandler {
@Autowired
private IOuPaiFactoryService ouPaiFactoryService;
@RabbitHandler
public void newSystemReceiveInfoHandler(Map map, Message message, Channel channel) throws IOException, NoSuchAlgorithmException {
System.out.println(map);
OrderStatusDTO orderStatusDTO = (OrderStatusDTO) map.get("orderStatusDTO");
log.info("##################receiveInfoHandler:处理签收信息数据");
String brand = (String) map.get("brand"); //品牌
//根据品牌进行处理
if (Objects.isNull(brand)) {
log.info("##################receiveInfoHandler: 未找到对应订单 orderSelfNum={}", orderStatusDTO.getOrderNo());
return;
}
R r = null;
switch (brand) {
case FactoryConstant.OUPAI:
try {
r = ouPaiFactoryService.newSystemHandleStatusData(orderStatusDTO);
log.info("################出库接口返回结果+{}" + r.getMsg());
} catch (Exception e) {
log.error(">>> 欧派异常报错 ", e);
}
int code = r.getCode();
if (code == 400 || code == 200) {
log.info("##################receiveInfoHandler: 该条数据不用处理 orderNo={}", orderStatusDTO.getUnitNo());
} else {
throw new CustomerException(code, r.getMsg());
}
break;
default:
log.info("##################receiveInfoHandler: 未知品牌 type={}", brand);
}
}
}

62
blade-service/logpm-factory/src/test/java/com/logpm/factory/TestService.java

@ -12,14 +12,20 @@ import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.common.utils.MD5Utils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.feign.IDistributionParcelListClient;
import com.logpm.factory.comfac.dto.OrderStatusDTO;
import com.logpm.factory.excel.ExcelMode14;
import com.logpm.factory.excel.JpDataMode;
import com.logpm.factory.excel.OrderStatusLogMode;
import com.logpm.factory.listener.ExcelListener;
import com.logpm.factory.listener.OrderStatusLogListener;
import com.logpm.factory.mt.feign.IMtOrderMainClinet;
import com.logpm.factory.oupai.entity.FactoryOrderEntity;
import com.logpm.factory.oupai.entity.FactoryPackageEntity;
import com.logpm.factory.oupai.entity.OpOrderStatusLogEntity;
import com.logpm.factory.oupai.service.IFactoryOrderService;
import com.logpm.factory.oupai.service.IFactoryPackageService;
import com.logpm.factory.oupai.service.IOuPaiFactoryDataService;
import com.logpm.factory.oupai.service.impl.OuPaiFactoryServiceImpl;
@ -816,17 +822,65 @@ public class TestService {
}
@Autowired
private IDistributionParcelListClient distributionParcelListClient;
@Autowired
private IFactoryOrderService factoryOrderService;
@Test
public void test19() throws NoSuchAlgorithmException, JsonProcessingException {
public void test19(){
OrderStatusDTO orderStatusDTO = new OrderStatusDTO();
orderStatusDTO.setStatus("7"); //状态
orderStatusDTO.setUnitNo("P0041231007B673609"); //包件码
orderStatusDTO.setOperationTime("2021-08-25 15:39:54"); //操作时间
orderStatusDTO.setCurrentWarehouse("17119930215609234689"); //收货仓 //1711993021509234689 荆门仓
orderStatusDTO.setUsername("liu"); //操作人
R<DistributionParcelListEntity> detail = distributionParcelListClient.queryOrderByOrderPackageCode("P0041231007B673609");
System.out.println(detail.getData());
// 推送数据
String status = orderStatusDTO.getStatus();
String unitNo = orderStatusDTO.getUnitNo();
String operationTime = orderStatusDTO.getOperationTime();
// || "7".equals(status) 增加签收状态推送
if ("2".equals(status) || "3".equals(status) || "5".equals(status) || "6".equals(status) || "8".equals(status) || "9".equals(status)) {
System.out.println("log.warn(\"#############oupai-handleStatusData: 当前数据的状态不推送 status={}\", status);");
// return Resp.fail(400, "当前数据的状态不推送");
}
mtOrderMainClinet.sendOrderPackageScan("0","1","2","3","4");
}
//继续判断是否到达目的仓
String currentWarehouseId = orderStatusDTO.getCurrentWarehouse();//当前仓Id
//查询destinationWarehouse logiBillNo plantId数据
System.out.println("log.info(\"oupai-handleStatusData >>> unitNo={}\", );"+unitNo);
// Map<String, String> supplyData = advanceDetailClient.getSupplyData(unitNo);
DistributionParcelListEntity distributionParcelList = new DistributionParcelListEntity();
distributionParcelList.setOrderPackageCode(orderStatusDTO.getUnitNo());
R<DistributionParcelListEntity> distributionParcelListEntity = distributionParcelListClient.queryOrderByOrderPackageCode(orderStatusDTO.getUnitNo());
if (ObjectUtils.isEmpty(distributionParcelListEntity.getData())) {
System.out.println("//\treturn Resp.fail(400, \"未查询到该单据信息\");");
}
String destinationWarehouseId = String.valueOf(distributionParcelListEntity.getData().getAcceptWarehouseId());//目的仓id
if (StringUtil.isBlank(currentWarehouseId) || StringUtil.isBlank(destinationWarehouseId)) {
System.out.println("\t\t\tlog.warn(\"##############oupai-handleStatusData: 仓库数据有问题currentWarehouseId={} destinationWarehouseId={}"+currentWarehouseId+" destinationWarehouseId="+destinationWarehouseId);
// return Resp.fail(400, "仓库数据有误");
}
if (!currentWarehouseId.equals(destinationWarehouseId)) {
System.out.println("\t\t\tlog.info(\"##############oupai-handleStatusData: 不用处理的状态 currentWarehouseId={} destinationWarehouseId={}\", currentWarehouseId, destinationWarehouseId);\n");
System.out.println("//return Resp.fail(400, \"不是目的仓\");");
}
FactoryOrderEntity factoryOrder = factoryOrderService.selectEntityByOrderPackageCode(unitNo);
System.out.println(factoryOrder);
// return Resp.success("成功");
}
}

Loading…
Cancel
Save