Browse Source

修复模块名称

master
pref_mail@163.com 9 months ago
parent
commit
cf2598423a
  1. 2
      blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java
  2. 10
      blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java
  3. 21
      blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/IInComingClient.java
  4. 17
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RabbitMqConfiguration.java
  5. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.java
  6. 8
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.xml
  7. 31
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessInOrderDataQueueHandler.java
  8. 146
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessPreOrderDataQueueHandler.java
  9. 3
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java
  10. 7
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionBusinessPreOrderService.java
  11. 90
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java
  12. 283
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/IDistributionBusinessPreOrderServiceImpl.java
  13. 2
      blade-service/logpm-factory-data/logpm-factory-data-base/src/main/resources/application-prod.yml
  14. 6
      blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/HwyOrderStatusHandler.java
  15. 4
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java
  16. 22
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/InComingClient.java
  17. 66
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/InComingServiceImpl.java

2
blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java

@ -9,7 +9,7 @@ public interface ModuleNameConstant {
/**
* 如果不需要 ""
*/
public static final String DEVAUTH ="";
public static final String DEVAUTH ="-pref";
/**
* 工厂对接服务名称

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

@ -192,4 +192,14 @@ public interface RabbitConstant {
String HWY_ORDER_STATUS_EXCHANGE = "hwy_order_status_exchange" + ModuleNameConstant.DEVAUTH;
String HWY_ORDER_STATUS_ROUTING = "hwy_order_status_routing" + ModuleNameConstant.DEVAUTH;
/****************商家入库完结 start *************************/
String BUSINESS_IN_CONVERSION_DATA_QUEUE = "business_in_conversion_data_queue" + ModuleNameConstant.DEVAUTH;
String BUSINESS_IN_CONVERSION_DATA_EXCHANGE = "business_in_conversion_data_exchange" + ModuleNameConstant.DEVAUTH;
String BUSINESS_IN_CONVERSION_DATA_ROUTING = "business_in_conversion_data_routing" + ModuleNameConstant.DEVAUTH;
/****************商家入库完结 end *************************/
}

21
blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/IInComingClient.java

@ -0,0 +1,21 @@
package com.logpm.trunkline.feign;
import com.logpm.trunkline.dto.InComingDTO;
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.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@FeignClient(
value = ModuleNameConstant.APPLICATION_TRUNKLINE_NAME
)
public interface IInComingClient {
String API_PREFIX = "inComing/client";
@PostMapping(API_PREFIX+"/incomingPackage")
R incomingPackage(@RequestBody InComingDTO inComingDTO);
}

17
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RabbitMqConfiguration.java

@ -188,4 +188,21 @@ public class RabbitMqConfiguration {
@Bean
public Queue businessInConversionQueue() {
return new Queue(RabbitConstant.BUSINESS_IN_CONVERSION_DATA_QUEUE, true);
}
@Bean
public CustomExchange businessInConversionExchange() {
Map<String, Object> args = Maps.newHashMap();
args.put("x-delayed-type", "direct");
return new CustomExchange(RabbitConstant.BUSINESS_IN_CONVERSION_DATA_EXCHANGE, "x-delayed-message", true, false, args);
}
@Bean
public Binding businessInConversionBinding(Queue businessInConversionQueue, CustomExchange businessInConversionExchange) {
return BindingBuilder.bind(businessInConversionQueue).to(businessInConversionExchange).with(RabbitConstant.BUSINESS_IN_CONVERSION_DATA_ROUTING).noargs();
}
}

2
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.java

@ -59,4 +59,6 @@ public interface DistributionBusinessPreOrderMapper extends BaseMapper<Distribut
*/
Integer deleteBusinessPreOrder(String reservationCode, List<String> deletedPackageList);
List<DistributionBusinessPreOrderEntity> listByBusinessPreListDTO(@Param("queryrderDTO") BusinessPreListDTO queryrderDTO);
Integer updateBusinessPreOrderByOrderPackageCode(@Param("orderPackageCode") String orderPackageCode);
}

8
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.xml

@ -1,6 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.logpm.distribution.mapper.DistributionBusinessPreOrderMapper">
<update id="updateBusinessPreOrderByOrderPackageCode">
update logpm_business_pre_order set in_warehouse=1
where order_package_code=#{orderPackageCode} and is_deleted=0 and in_warehouse=0
</update>
<delete id="deleteBusinessPreOrder">
DELETE FROM logpm_business_pre_order WHERE reservation_code = #{reservationCode}
AND order_package_code IN

31
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessInOrderDataQueueHandler.java

@ -0,0 +1,31 @@
package com.logpm.distribution.receiver;
import com.rabbitmq.client.Channel;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.RabbitConstant;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
* 商家完结订单
*/
@Slf4j
@RabbitListener(queues = RabbitConstant.BUSINESS_IN_CONVERSION_DATA_QUEUE)
@Component
@AllArgsConstructor
public class BusinessInOrderDataQueueHandler {
@RabbitHandler
public void businessInOrderDataHandler(Map map, Message message, Channel channel) {
}
}

146
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessPreOrderDataQueueHandler.java

@ -81,7 +81,10 @@ public class BusinessPreOrderDataQueueHandler {
if(!ObjectUtil.isEmpty(tenant.getTenantType())){
if(2==tenant.getTenantType()){
String mallName = tenant.getTenantName();
// 插入暂存单
extracted(map, mallName);
// 插入预计表
plantA(map,mallName);
}
}
});
@ -184,8 +187,7 @@ public class BusinessPreOrderDataQueueHandler {
}
private void plantA(Map map) {
String mallName = "仁寿欧派大家居";
private void plantA(Map map,String mallName) {
if (StringUtil.isBlank(mallName)) {
return;
@ -243,18 +245,16 @@ public class BusinessPreOrderDataQueueHandler {
}
Tenant tenant = changeDataBase(mallName);
CompletableFuture.supplyAsync(() -> {
// saveOtherData(tenant.getTenantId(),waybillBilllByWaybillNos, trunklineAdvanceDetailEntities, trunklineAdvanceEntities, trunklineWaybillPackageEntities, trunklineWaybillOrderEntities, warehouseWayBillDetails, distributionParcelListEntities, mallName);
// distributionAsyncService.saveOtherData(tenant.getTenantId(),waybillBilllByWaybillNos, trunklineAdvanceDetailEntities, trunklineAdvanceEntities, trunklineWaybillPackageEntities, trunklineWaybillOrderEntities, warehouseWayBillDetails, distributionParcelListEntities, mallName);
distributionAsyncService.saveOtherDataBaseNew(tenant.getTenantId() ,dataResult, mallName);
return null;
});
// 查询包间列表
saveOtherDataBaseNew(dataResult, mallName);
// 查询配送单对应的司机
// 需要将查询出来的数据与 当前保存的数据进行比对 避免重复插入
// 通过商场名称找到租户中存在的商场名称
// 切换当前线程的数据源 插入到 租户对应的数据库中
log.info("businessPreOrderDataHandler:{}", map);
}
@ -271,130 +271,6 @@ public class BusinessPreOrderDataQueueHandler {
return null;
}
public void saveOtherDataBaseNew(List<DistributionBusinessPreOrderEntity> dataResult, String maillName) {
// 查询保存的对象在商场端是否存在 && 没有入库的 都i需要删除 执行新的
List<Long> orderIdList = dataResult.stream()
.map(DistributionBusinessPreOrderEntity::getStockArticleId)
.collect(Collectors.toList());
R<Tenant> tenantByName = sysClient.getTenantByName(maillName);
if (tenantByName.isSuccess()) {
Tenant tenant = tenantByName.getData();
if (ObjectUtil.isEmpty(tenant)) {
log.info(">>>>>>>>>>>>> saveOtherDataBaseNew 租户不存在");
return;
}
if (dataResult.isEmpty()) {
log.info(" saveOtherDataBaseNew dataResult 参数错误");
}
DynamicDataSourceContextHolder.push(tenant.getTenantId());
LambdaQueryWrapper<DistributionBusinessPreOrderEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(DistributionBusinessPreOrderEntity::getInWarehouse, 0);
lambdaQueryWrapper.in(DistributionBusinessPreOrderEntity::getStockArticleId, orderIdList);
List<DistributionBusinessPreOrderEntity> list = distributionBusinessPreOrderService.list(lambdaQueryWrapper);
// 找到已经推送的包件信息 并将其标记为删除状态
List<Long> temsp = new ArrayList<>();
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : list) {
for (DistributionBusinessPreOrderEntity businessPreOrderEntity : dataResult) {
businessPreOrderEntity.setTenantId(tenant.getTenantId());
if (businessPreOrderEntity.getStockArticleId().equals(distributionBusinessPreOrderEntity.getStockArticleId())) {
// 找到订单
if (businessPreOrderEntity.getOrderPackageCode().equals(distributionBusinessPreOrderEntity.getOrderPackageCode())) {
//找到包件 并标记为删除状态
temsp.add(distributionBusinessPreOrderEntity.getId());
}
}
}
}
if (!temsp.isEmpty()) {
// 更新删除状态
distributionBusinessPreOrderService.deleteLogic(temsp);
}
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : dataResult) {
distributionBusinessPreOrderEntity.setTenantId(tenant.getTenantId());
}
// 执行保存操作
distributionBusinessPreOrderService.saveBatch(dataResult);
DynamicDataSourceContextHolder.poll();
}
}
// public void saveOtherDataBase(List<DistributionBusinessPreOrderEntity> dataResult, String maillName) {
// String method = "########################saveOtherDataBase";
// R<Tenant> tenantByName = sysClient.getTenantByName(maillName);
// if (tenantByName.isSuccess()) {
// Tenant tenant = tenantByName.getData();
// if (ObjectUtil.isEmpty(tenant)) {
// log.info(">>>>>>>>>>>>> BusinessPreOrderDataQueueHandler 租户不存在");
// return;
// }
// if (dataResult.isEmpty()) {
// log.info(method + "dataResult 参数错误");
// }
// DynamicDataSourceContextHolder.push(tenant.getTenantId());
// Map<Integer, List<DistributionBusinessPreOrderEntity>> map = dataResult.stream().collect(Collectors.groupingBy(DistributionBusinessPreOrderEntity::getInWarehouse));
// if (Func.isNotEmpty(map.get(1))) {
// //存在需要进行删除的数据
// List<DistributionBusinessPreOrderEntity> deleteList = map.get(0);
// if (!deleteList.isEmpty()) {
// Map<String, List<DistributionBusinessPreOrderEntity>> deletedMap = deleteList.stream().collect(Collectors.groupingBy(DistributionBusinessPreOrderEntity::getReservationCode));
// deletedMap.forEach((k, v) -> {
// List<String> deletedPackageList = v.stream().map(DistributionBusinessPreOrderEntity::getOrderPackageCode).collect(Collectors.toList());
// log.info("删除商家端数据>>>>reservationCode:{}", deletedPackageList);
// if (!deletedPackageList.isEmpty()) {
// //进行删除
// Integer row = distributionBusinessPreOrderService.deleteBusinessPreOrder(k, deletedPackageList);
// log.info("删除商家端数据>>>>row:{}", row);
// }
// });
// }
// }
// if (Func.isNotEmpty(map.get(0))) {
// //存在可能变更的数据
// List<DistributionBusinessPreOrderEntity> mapList = map.get(0);
// Map<String, List<DistributionBusinessPreOrderEntity>> saveData = mapList.stream().collect(Collectors.groupingBy(DistributionBusinessPreOrderEntity::getReservationCode));
// List<DistributionBusinessPreOrderEntity> existData = new ArrayList<>();
// if (!saveData.isEmpty()) {
// //查询是否存在重复
// saveData.forEach((k, v) -> {
// List<DistributionBusinessPreOrderEntity> list = distributionBusinessPreOrderService.list(Wrappers.<DistributionBusinessPreOrderEntity>query().lambda()
// .eq(DistributionBusinessPreOrderEntity::getReservationCode, k)
// .in(DistributionBusinessPreOrderEntity::getOrderPackageCode, v.stream().map(DistributionBusinessPreOrderEntity::getOrderPackageCode).collect(Collectors.toList()))
// );
// if (!list.isEmpty()) {
// //已经存在数据
// existData.addAll(list);
// }
// });
// }
// if (!existData.isEmpty()) {
// //二者比较取差集
// mapList = mapList.stream().filter(m -> !existData.stream().map(DistributionBusinessPreOrderEntity::getOrderPackageCode).collect(Collectors.toList()).contains(m.getOrderPackageCode())).collect(Collectors.toList());
// }
// if (!mapList.isEmpty()) {
// for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : mapList) {
// distributionBusinessPreOrderEntity.setTenantId(tenant.getTenantId());
// }
// distributionBusinessPreOrderService.saveBatch(mapList);
// }
// }
// DynamicDataSourceContextHolder.poll();
//
// }
//
//
// }
}

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

@ -1,6 +1,7 @@
package com.logpm.distribution.service;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.business.entity.DistributionBusinessPreOrderEntity;
import com.logpm.distribution.dto.DistributionStockArticleDTO;
import com.logpm.distribution.dto.app.DistrilbutionloadingscanDTO;
import com.logpm.distribution.dto.app.StockupDTO;
@ -333,4 +334,6 @@ public interface IDistributionAsyncService {
DistributionStockArticleEntity findDistributionStockArticleEntityByIdForAsync(String tenantId, Long id);
void saveOtherData(String tenantId, List<WarehouseWaybillEntity> waybillBilllByWaybillNos, List<TrunklineAdvanceDetailVO> trunklineAdvanceDetailEntities, List<TrunklineAdvanceEntity> trunklineAdvanceEntities, List<TrunklineWaybillPackageEntity> trunklineWaybillPackageEntities, List<TrunklineWaybillOrderEntity> trunklineWaybillOrderEntities, List<WarehouseWayBillDetail> warehouseWayBillDetails, List<DistributionParcelListEntity> distributionParcelListEntities, String mallName);
void saveOtherDataBaseNew(String tenantId,List<DistributionBusinessPreOrderEntity> dataResult, String mallName);
}

7
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionBusinessPreOrderService.java

@ -25,6 +25,13 @@ public interface IDistributionBusinessPreOrderService extends BaseService<Distri
Boolean inOrder(String ids) throws ServiceException;
/**
* 更新预入库状态
* @param orderPackageCode
* @return
*/
Integer inOrderByOrderPackageCode(String orderPackageCode);
/**
* 查询DistributionBusinessPreOrder列表
* @param distributionBusinessPreOrderDTO

90
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java

@ -6,12 +6,14 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.business.entity.DistributionBusinessPreOrderEntity;
import com.logpm.distribution.dto.DistributionLoadingNumDTO;
import com.logpm.distribution.dto.DistributionParcelNumberDTO;
import com.logpm.distribution.dto.DistributionStockArticleDTO;
@ -146,6 +148,9 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
private final IWarehouseWaybillClient warehouseWaybillClient;
private final IWarehouseWaybillDetailClient warehouseWaybillDetailClient;
private final IDistributionBusinessPreOrderService distributionBusinessPreOrderService;
private final ISysClient sysClient;
private final BladeRedis bladeRedis;
@ -3002,32 +3007,35 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
List<TrunklineAdvanceDetailVO> listByAdvanceIds = trunklineAdvanceDetailClient.findListByAdvanceIds(ids);
for (TrunklineAdvanceDetailEntity trunklineAdvanceDetailEntity : t) {
List<TrunklineAdvanceDetailEntity> saveObjs = new ArrayList<>();
for (TrunklineAdvanceDetailEntity trunklineAdvanceDetailEntity : t) {
trunklineAdvanceDetailEntity.setId(null);
// 检测 保存的对象是否已经存在
for (TrunklineAdvanceDetailVO listByAdvanceId : listByAdvanceIds) {
if(listByAdvanceId.getOrderPackageCode().equals(trunklineAdvanceDetailEntity.getOrderPackageCode())){
trunklineAdvanceDetailEntity.setId(listByAdvanceId.getId());
break;
}
}
trunklineAdvanceDetailEntity.setPackageStatus("0");
trunklineAdvanceDetailEntity.setAdvanceId(trunklineAdvanceEntity.getId());
trunklineAdvanceDetailEntity.setTenantId(tenant.getTenantId());
trunklineAdvanceDetailEntity.setIncomingWarehouseId(null);
trunklineAdvanceDetailEntity.setIncomingWarehouseName(null);
BasicdataWarehouseEntity basicdataWarehouseEntity = getBasicdataWarehouseEntity(mallName);
if(basicdataWarehouseEntity!=null){
trunklineAdvanceDetailEntity.setWarehouseId(basicdataWarehouseEntity.getId());
trunklineAdvanceDetailEntity.setWarehouseName(basicdataWarehouseEntity.getName());
}
if(trunklineAdvanceDetailEntity.getId()==null){
trunklineAdvanceDetailEntity.setPackageStatus("0");
trunklineAdvanceDetailEntity.setAdvanceId(trunklineAdvanceEntity.getId());
trunklineAdvanceDetailEntity.setTenantId(tenant.getTenantId());
trunklineAdvanceDetailEntity.setIncomingWarehouseId(null);
trunklineAdvanceDetailEntity.setIncomingWarehouseName(null);
BasicdataWarehouseEntity basicdataWarehouseEntity = getBasicdataWarehouseEntity(mallName);
if(basicdataWarehouseEntity!=null){
trunklineAdvanceDetailEntity.setWarehouseId(basicdataWarehouseEntity.getId());
trunklineAdvanceDetailEntity.setWarehouseName(basicdataWarehouseEntity.getName());
}
saveObjs.add(trunklineAdvanceDetailEntity);
}
}
trunklineAdvanceDetailClient.addAdvanceBatch(t);
trunklineAdvanceDetailClient.addAdvanceBatch(saveObjs);
}
@ -3053,5 +3061,59 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
}
}
@ChangeAsync()
@Override
public void saveOtherDataBaseNew(String tenantId,List<DistributionBusinessPreOrderEntity> dataResult, String mallName) {
List<Long> orderIdList = dataResult.stream()
.map(DistributionBusinessPreOrderEntity::getStockArticleId)
.collect(Collectors.toList());
R<Tenant> tenantByName = sysClient.getTenantByName(mallName);
if (tenantByName.isSuccess()) {
Tenant tenant = tenantByName.getData();
if (ObjectUtil.isEmpty(tenant)) {
log.info(">>>>>>>>>>>>> saveOtherDataBaseNew 租户不存在");
return;
}
if (dataResult.isEmpty()) {
log.info(" saveOtherDataBaseNew dataResult 参数错误");
}
LambdaQueryWrapper<DistributionBusinessPreOrderEntity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(DistributionBusinessPreOrderEntity::getInWarehouse, 0);
lambdaQueryWrapper.in(DistributionBusinessPreOrderEntity::getStockArticleId, orderIdList);
List<DistributionBusinessPreOrderEntity> list = distributionBusinessPreOrderService.list(lambdaQueryWrapper);
// 找到已经推送的包件信息 并将其标记为删除状态
List<Long> temsp = new ArrayList<>();
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : list) {
for (DistributionBusinessPreOrderEntity businessPreOrderEntity : dataResult) {
businessPreOrderEntity.setTenantId(tenant.getTenantId());
if (businessPreOrderEntity.getStockArticleId().equals(distributionBusinessPreOrderEntity.getStockArticleId())) {
// 找到订单
if (businessPreOrderEntity.getOrderPackageCode().equals(distributionBusinessPreOrderEntity.getOrderPackageCode())) {
//找到包件 并标记为删除状态
temsp.add(distributionBusinessPreOrderEntity.getId());
}
}
}
}
if (!temsp.isEmpty()) {
// 更新删除状态
distributionBusinessPreOrderService.deleteLogic(temsp);
}
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : dataResult) {
distributionBusinessPreOrderEntity.setTenantId(tenant.getTenantId());
}
// 执行保存操作
distributionBusinessPreOrderService.saveBatch(dataResult);
}
}
}

283
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/IDistributionBusinessPreOrderServiceImpl.java

@ -1,13 +1,11 @@
package com.logpm.distribution.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataClientClient;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.business.dto.BusinessPreListDTO;
import com.logpm.business.entity.DistributionBusinessPreOrderEntity;
@ -15,31 +13,27 @@ import com.logpm.business.vo.DistributionBusinessPreOrderListVO;
import com.logpm.business.vo.DistributionBusinessPreOrderVO;
import com.logpm.distribution.bean.Resp;
import com.logpm.distribution.dto.DistributionBusinessPreOrderDTO;
import com.logpm.distribution.dto.DistributionStockArticleOweDTO;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.entity.DistributionStockArticleEntity;
import com.logpm.distribution.mapper.DistributionBusinessPreOrderMapper;
import com.logpm.distribution.service.IDistributionAsyncService;
import com.logpm.distribution.service.IDistributionBusinessPreOrderService;
import com.logpm.distribution.service.IDistributionParcelListService;
import com.logpm.distribution.service.IDistributionStockArticleService;
import com.logpm.trunkline.dto.InComingDTO;
import com.logpm.trunkline.feign.IInComingClient;
import lombok.AllArgsConstructor;
import org.springblade.common.annotations.ChangeAsync;
import org.springblade.common.annotations.LogpmAsync;
import org.springblade.common.exception.CustomerException;
import org.springblade.common.constant.IncomingTypeEnum;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors;
@Service
@ -50,7 +44,9 @@ public class IDistributionBusinessPreOrderServiceImpl extends BaseServiceImpl<Di
private final IBasicdataWarehouseClient basicdataWarehouseClient;
private final IDistributionParcelListService distributionParcelListService;
private final IDistributionAsyncService distributionAsyncService;
// private final IDistributionAsyncService distributionAsyncService;
private final IInComingClient inComingClient;
@Override
public Boolean inOrder(String ids) throws ServiceException {
@ -59,31 +55,70 @@ public class IDistributionBusinessPreOrderServiceImpl extends BaseServiceImpl<Di
List<String> idArray = Arrays.asList(ids.split(","));
QueryWrapper wrapper = new QueryWrapper();
wrapper.in("id", idArray);
InComingDTO inComingDTO = new InComingDTO();
StringBuffer sb = new StringBuffer();
List<DistributionBusinessPreOrderEntity> list = baseMapper.selectList(wrapper);
List<DistributionBusinessPreOrderEntity> data = new ArrayList<>();
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : list) {
if (distributionBusinessPreOrderEntity.getInWarehouse() == 1) {
throw new ServiceException("存在已入库的包件");
}
//调用方法 执行批量入库
DistributionStockArticleEntity stockArticleEntity = buildDistributionStockArticleEntity(distributionBusinessPreOrderEntity);
if (stockArticleEntity == null) {
throw new ServiceException("订单信息错误,请联系管理员!");
if(!sb.toString().isEmpty()){
sb.append(",");
}
// 保存包件
distributionBusinessPreOrderEntity.setWarehouseId(stockArticleEntity.getWarehouseId());
distributionBusinessPreOrderEntity.setWarehouse(stockArticleEntity.getWarehouse());
distributionBusinessPreOrderEntity.setStockArticleId(stockArticleEntity.getId());
buildDistributionParcelListEntity(distributionBusinessPreOrderEntity);
sb.append(distributionBusinessPreOrderEntity.getOrderPackageCode());
data.add(distributionBusinessPreOrderEntity);
}
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
inComingDTO.setOrderPackageCode(sb.toString());
inComingDTO.setIncomingType(IncomingTypeEnum.LINE_INCOMING.getCode());
inComingDTO.setWarehouseId(myCurrentWarehouse.getId());
inComingDTO.setWarehouseName(myCurrentWarehouse.getName());
R r = inComingClient.incomingPackage(inComingDTO);
if(r.isSuccess()){
// 更新成功
// 更新入库状态
// 调用入库方法
distributionBusinessPreOrderEntity.setInWarehouse(1);
baseMapper.updateById(distributionBusinessPreOrderEntity);
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : data) {
distributionBusinessPreOrderEntity.setInWarehouse(1);
baseMapper.updateById(distributionBusinessPreOrderEntity);
}
}
return true;
}
@Override
public Integer inOrderByOrderPackageCode(String orderPackageCode) {
int a =baseMapper.updateBusinessPreOrderByOrderPackageCode(orderPackageCode);
return a;
// QueryWrapper wrapper = new QueryWrapper();
// wrapper.eq("order_package_code", orderPackageCode);
// wrapper.eq("in_warehouse",0);
// wrapper.eq("is_deleted","0");
// List<DistributionBusinessPreOrderEntity> list = baseMapper.selectList(wrapper);
//
// for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : data) {
//
// distributionBusinessPreOrderEntity.setInWarehouse(1);
// baseMapper.updateById(distributionBusinessPreOrderEntity);
// }
}
@Override
public IPage<DistributionBusinessPreOrderVO> pacgeList(Map<String, Object> distributionBusinessPreOrderDTO, IPage<DistributionBusinessPreOrderVO> page) {
DistributionBusinessPreOrderDTO param = JSONObject.parseObject(JSONObject.toJSONString(distributionBusinessPreOrderDTO), DistributionBusinessPreOrderDTO.class);
@ -137,80 +172,80 @@ public class IDistributionBusinessPreOrderServiceImpl extends BaseServiceImpl<Di
public Resp inOrderWarehourse(String orderPackageCode, String reservationCode) {
// 查询当前预约单所有的包件
LambdaQueryWrapper<DistributionBusinessPreOrderEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DistributionBusinessPreOrderEntity::getReservationCode, reservationCode);
List<DistributionBusinessPreOrderEntity> list = baseMapper.selectList(queryWrapper);
// 寻找 当前匹配的包条
DistributionBusinessPreOrderEntity t = null;
DistributionBusinessPreOrderEntity t1 = null;
for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : list) {
if (distributionBusinessPreOrderEntity.getOrderPackageCode().equals(orderPackageCode)) {
// 找到匹配的包条码
if (distributionBusinessPreOrderEntity.getInWarehouse() == 1) {
return Resp.scanSuccess("扫描成功", "包件已入库");
} else {
t = distributionBusinessPreOrderEntity;
}
}
if (t1 == null) {
t1 = distributionBusinessPreOrderEntity;
}
}
if (t == null) {
try {
DistributionBusinessPreOrderEntity finalT = t1;
CompletableFuture<DistributionParcelListEntity> distributionParcelListEntityCompletableFuture = CompletableFuture.supplyAsync(() -> this.selectByOrderPackageCode(orderPackageCode, finalT.getAcceptWarehouseId()));
DistributionParcelListEntity distributionParcelListEntity = distributionParcelListEntityCompletableFuture.get();
// 如找到了 保存在当前的这个配送计划任务中
if (distributionParcelListEntity != null) {
// 保存包件
t = BeanUtil.copy(distributionParcelListEntity, DistributionBusinessPreOrderEntity.class);
t.setDriverName(finalT.getDriverName());
t.setVehicleName(finalT.getVehicleName());
t.setDistrCarNumber(finalT.getTrainNumber());
t.setOperationStatus(1);
t.setInWarehouse(0);
this.save(t);
list.add(t);
}
} catch (InterruptedException | ExecutionException e) {
log.error("inOrderWarehourse:", e);
throw new ServiceException("包件信息不存在!");
}
}
// 保存订单
DistributionStockArticleEntity stockArticleEntity = buildDistributionStockArticleEntity(t);
if (stockArticleEntity == null) {
return Resp.scanFail("操作失败", "包件数据不存在");
}
// 保存包件
t.setWarehouseId(stockArticleEntity.getWarehouseId());
t.setWarehouse(stockArticleEntity.getWarehouse());
t.setStockArticleId(stockArticleEntity.getId());
buildDistributionParcelListEntity(t);
// 调用入库方法
t.setInWarehouse(1);
baseMapper.updateById(t);
queryWrapper.eq(DistributionBusinessPreOrderEntity::getInWarehouse, 1);
Long l = baseMapper.selectCount(queryWrapper);
return Resp.scanSuccess("扫描成功", l + "件");
// // 查询当前预约单所有的包件
//
// LambdaQueryWrapper<DistributionBusinessPreOrderEntity> queryWrapper = new LambdaQueryWrapper<>();
// queryWrapper.eq(DistributionBusinessPreOrderEntity::getReservationCode, reservationCode);
// List<DistributionBusinessPreOrderEntity> list = baseMapper.selectList(queryWrapper);
//
// // 寻找 当前匹配的包条
// DistributionBusinessPreOrderEntity t = null;
// DistributionBusinessPreOrderEntity t1 = null;
// for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : list) {
// if (distributionBusinessPreOrderEntity.getOrderPackageCode().equals(orderPackageCode)) {
// // 找到匹配的包条码
// if (distributionBusinessPreOrderEntity.getInWarehouse() == 1) {
// return Resp.scanSuccess("扫描成功", "包件已入库");
// } else {
// t = distributionBusinessPreOrderEntity;
// }
// }
// if (t1 == null) {
// t1 = distributionBusinessPreOrderEntity;
// }
// }
// if (t == null) {
// try {
// DistributionBusinessPreOrderEntity finalT = t1;
// CompletableFuture<DistributionParcelListEntity> distributionParcelListEntityCompletableFuture = CompletableFuture.supplyAsync(() -> this.selectByOrderPackageCode(orderPackageCode, finalT.getAcceptWarehouseId()));
//
// DistributionParcelListEntity distributionParcelListEntity = distributionParcelListEntityCompletableFuture.get();
//
// // 如找到了 保存在当前的这个配送计划任务中
// if (distributionParcelListEntity != null) {
// // 保存包件
// t = BeanUtil.copy(distributionParcelListEntity, DistributionBusinessPreOrderEntity.class);
// t.setDriverName(finalT.getDriverName());
// t.setVehicleName(finalT.getVehicleName());
// t.setDistrCarNumber(finalT.getTrainNumber());
// t.setOperationStatus(1);
// t.setInWarehouse(0);
// this.save(t);
// list.add(t);
//
// }
// } catch (InterruptedException | ExecutionException e) {
// log.error("inOrderWarehourse:", e);
// throw new ServiceException("包件信息不存在!");
// }
//
//
// }
//
// // 保存订单
// DistributionStockArticleEntity stockArticleEntity = buildDistributionStockArticleEntity(t);
// if (stockArticleEntity == null) {
// return Resp.scanFail("操作失败", "包件数据不存在");
// }
// // 保存包件
// t.setWarehouseId(stockArticleEntity.getWarehouseId());
// t.setWarehouse(stockArticleEntity.getWarehouse());
// t.setStockArticleId(stockArticleEntity.getId());
// buildDistributionParcelListEntity(t);
//
// // 调用入库方法
// t.setInWarehouse(1);
// baseMapper.updateById(t);
//
// queryWrapper.eq(DistributionBusinessPreOrderEntity::getInWarehouse, 1);
// Long l = baseMapper.selectCount(queryWrapper);
return Resp.scanSuccess("扫描成功", "请前往码板打托进行入库!");
}
private void buildDistributionParcelListEntity(DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity) {
@ -238,33 +273,33 @@ public class IDistributionBusinessPreOrderServiceImpl extends BaseServiceImpl<Di
}
private DistributionStockArticleEntity buildDistributionStockArticleEntity(DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity) {
DistributionStockArticleEntity stockArticleEntity = null;
try {
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
stockArticleEntity = distributionStockArticleService.findStockArticleByOrderCodeAndWarehouseId(distributionBusinessPreOrderEntity.getOrderCode(),
myCurrentWarehouse.getId());
if (stockArticleEntity == null) {
// 需要保存这个对象
CompletableFuture<DistributionStockArticleEntity> distributionStockArticleEntityCompletableFuture = CompletableFuture.supplyAsync(() -> distributionAsyncService.findDistributionStockArticleEntityByIdForAsync(distributionBusinessPreOrderEntity.getFromTenantId(), distributionBusinessPreOrderEntity.getStockArticleId()));
stockArticleEntity = distributionStockArticleEntityCompletableFuture.get();
if (stockArticleEntity == null) {
return null;
}
// 获取当前登录人的仓库信息
stockArticleEntity.setId(null);
stockArticleEntity.setTenantId(null);
stockArticleEntity.setWarehouseId(myCurrentWarehouse.getId());
stockArticleEntity.setWarehouse(myCurrentWarehouse.getName());
stockArticleEntity.setHandQuantity(0);
distributionStockArticleService.save(stockArticleEntity);
}
} catch (InterruptedException | ExecutionException e) {
log.error("buildDistributionStockArticleEntity :", e);
throw new CustomerException("系统异常,请联系管理员");
}
return stockArticleEntity;
}
// private DistributionStockArticleEntity buildDistributionStockArticleEntity(DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity) {
// DistributionStockArticleEntity stockArticleEntity = null;
// try {
// BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
// stockArticleEntity = distributionStockArticleService.findStockArticleByOrderCodeAndWarehouseId(distributionBusinessPreOrderEntity.getOrderCode(),
// myCurrentWarehouse.getId());
// if (stockArticleEntity == null) {
// // 需要保存这个对象
// CompletableFuture<DistributionStockArticleEntity> distributionStockArticleEntityCompletableFuture = CompletableFuture.supplyAsync(() -> distributionAsyncService.findDistributionStockArticleEntityByIdForAsync(distributionBusinessPreOrderEntity.getFromTenantId(), distributionBusinessPreOrderEntity.getStockArticleId()));
// stockArticleEntity = distributionStockArticleEntityCompletableFuture.get();
// if (stockArticleEntity == null) {
// return null;
// }
// // 获取当前登录人的仓库信息
// stockArticleEntity.setId(null);
// stockArticleEntity.setTenantId(null);
// stockArticleEntity.setWarehouseId(myCurrentWarehouse.getId());
// stockArticleEntity.setWarehouse(myCurrentWarehouse.getName());
// stockArticleEntity.setHandQuantity(0);
// distributionStockArticleService.save(stockArticleEntity);
// }
// } catch (InterruptedException | ExecutionException e) {
// log.error("buildDistributionStockArticleEntity :", e);
// throw new CustomerException("系统异常,请联系管理员");
// }
// return stockArticleEntity;
// }
@ChangeAsync()
public DistributionParcelListEntity selectByOrderPackageCode(String orderPackageCode, Long warehouseId) {

2
blade-service/logpm-factory-data/logpm-factory-data-base/src/main/resources/application-prod.yml

@ -1,6 +1,6 @@
#服务器端口
server:
port: 8900
port: 18900
#数据源配置
#spring:

6
blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/HwyOrderStatusHandler.java

@ -22,7 +22,10 @@ import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.common.exception.CustomerException;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
@ -54,8 +57,7 @@ public class HwyOrderStatusHandler {
@RabbitHandler
public void hwyOrderStatusHandler(Map map, Message message, Channel channel) throws IOException, NoSuchAlgorithmException {
// 如果手动ACK,消息会被监听消费,但是消息在队列中依旧存在,如果 未配置 acknowledge-mode 默认是会在消费完毕后自动ACK掉
final long deliveryTag = message.getMessageProperties().getDeliveryTag();
String msg = new String(message.getBody());
log.info("##################hwyOrderStatusHandler: 处理扫码作业数据");
OrderStatusDTO orderStatusDTO = JSONUtil.toBean((String) map.get("messageData"), OrderStatusDTO.class);
String orderSelfNum = orderStatusDTO.getOrderNo();//订单自编号

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

@ -114,4 +114,8 @@ public class RabbitMqConfiguration {
}

22
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/InComingClient.java

@ -0,0 +1,22 @@
package com.logpm.trunkline.feign;
import com.logpm.trunkline.dto.InComingDTO;
import com.logpm.trunkline.service.IInComingService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
@Slf4j
@ApiIgnore()
@RestController
@AllArgsConstructor
public class InComingClient implements IInComingClient{
private final IInComingService inComingService;
@Override
public R incomingPackage(InComingDTO inComingDTO) {
return inComingService.incomingPackage(inComingDTO);
}
}

66
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/InComingServiceImpl.java

@ -32,6 +32,8 @@ import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.system.entity.Tenant;
import org.springblade.system.feign.ISysClient;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;
@ -57,6 +59,7 @@ public class InComingServiceImpl implements IInComingService {
// private final DynamicDataSourceProvider dynamicDataSourceProvider;
private final RabbitTemplate rabbitTemplate;
private final FactoryDataMessageSender factoryDataMessageSender;
private ISysClient sysClient;
@Override
@ -150,27 +153,50 @@ public class InComingServiceImpl implements IInComingService {
}
}
try {
// 发送入库消息
OrderStatusDTO orderStatusDTO = new OrderStatusDTO();
// 通过包件id 查询包件
orderStatusDTO.setUnitNo(packageCode);
orderStatusDTO.setOrderNo(advanceDetailEntity.getOrderCode());
orderStatusDTO.setStatus("1");
orderStatusDTO.setOperationTime(DateUtil.now());
orderStatusDTO.setCurrentWarehouse(warehouseId.toString());
Map<String, Object> map = new HashMap<>();
map.put("messageData", JSONUtil.toJsonStr(orderStatusDTO));
rabbitTemplate.convertAndSend(RabbitConstant.HWY_ORDER_STATUS_EXCHANGE, RabbitConstant.HWY_ORDER_STATUS_ROUTING, map);
NodePushMsg nodePushMsg = NodePushMsg.builder()
.operator(AuthUtil.getNickName())
.operatorTime(new Date())
.address("在【"+ warehouseName +"】入库")
.brand(BrandEnums.getByValue(advanceDetailEntity.getBrand()))
.node(WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY)
.content(Arrays.asList(PushData.builder().packageCode(packageCode).build()))
.build();
factoryDataMessageSender.sendNodeDataByBrand(nodePushMsg);
R<Tenant> result = sysClient.getTenant(AuthUtil.getTenantId());
if(result.isSuccess()){
Tenant tenant = result.getData();
if(tenant.getTenantType()==1){
// 发送入库消息
OrderStatusDTO orderStatusDTO = new OrderStatusDTO();
// 通过包件id 查询包件
orderStatusDTO.setUnitNo(packageCode);
orderStatusDTO.setOrderNo(advanceDetailEntity.getOrderCode());
orderStatusDTO.setStatus("1");
orderStatusDTO.setOperationTime(DateUtil.now());
orderStatusDTO.setCurrentWarehouse(warehouseId.toString());
Map<String, Object> map = new HashMap<>();
map.put("messageData", JSONUtil.toJsonStr(orderStatusDTO));
rabbitTemplate.convertAndSend(RabbitConstant.HWY_ORDER_STATUS_EXCHANGE, RabbitConstant.HWY_ORDER_STATUS_ROUTING, map);
NodePushMsg nodePushMsg = NodePushMsg.builder()
.operator(AuthUtil.getNickName())
.operatorTime(new Date())
.address("在【"+ warehouseName +"】入库")
.brand(BrandEnums.getByValue(advanceDetailEntity.getBrand()))
.node(WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY)
.content(Arrays.asList(PushData.builder().packageCode(packageCode).build()))
.build();
factoryDataMessageSender.sendNodeDataByBrand(nodePushMsg);
}else if (tenant.getTenantType()==2){
// 完结预入库数据状态
}else{
log.warn("未知的租户类型");
}
}
} catch (Exception e) {
log.error("入库推送失败:{}", e);
}

Loading…
Cancel
Save