From cf2598423ac971cdf05e262438863c6cd6234d3a Mon Sep 17 00:00:00 2001 From: "pref_mail@163.com" Date: Tue, 28 May 2024 00:00:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=A8=A1=E5=9D=97=E5=90=8D?= =?UTF-8?q?=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/ModuleNameConstant.java | 2 +- .../common/constant/RabbitConstant.java | 10 + .../trunkline/feign/IInComingClient.java | 21 ++ .../config/RabbitMqConfiguration.java | 17 ++ .../DistributionBusinessPreOrderMapper.java | 2 + .../DistributionBusinessPreOrderMapper.xml | 8 + .../BusinessInOrderDataQueueHandler.java | 31 ++ .../BusinessPreOrderDataQueueHandler.java | 146 +-------- .../service/IDistributionAsyncService.java | 3 + .../IDistributionBusinessPreOrderService.java | 7 + .../impl/DistributionAsyncServiceImpl.java | 90 +++++- ...stributionBusinessPreOrderServiceImpl.java | 283 ++++++++++-------- .../src/main/resources/application-prod.yml | 2 +- .../receiver/HwyOrderStatusHandler.java | 6 +- .../config/RabbitMqConfiguration.java | 4 + .../logpm/trunkline/feign/InComingClient.java | 22 ++ .../service/impl/InComingServiceImpl.java | 66 ++-- 17 files changed, 423 insertions(+), 297 deletions(-) create mode 100644 blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/IInComingClient.java create mode 100644 blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessInOrderDataQueueHandler.java create mode 100644 blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/InComingClient.java diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java b/blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java index c3cc1b12c..71fc125ac 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java +++ b/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"; /** * 工厂对接服务名称 diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java b/blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java index 822cc8771..cea0cb2c6 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java +++ b/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 *************************/ + } diff --git a/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/IInComingClient.java b/blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/feign/IInComingClient.java new file mode 100644 index 000000000..bb33a2ad9 --- /dev/null +++ b/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); + +} diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RabbitMqConfiguration.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RabbitMqConfiguration.java index 7d828539f..3975bc929 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/config/RabbitMqConfiguration.java +++ b/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 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(); + } + + + } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.java index 3c226cfd3..42835354c 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.java @@ -59,4 +59,6 @@ public interface DistributionBusinessPreOrderMapper extends BaseMapper deletedPackageList); List listByBusinessPreListDTO(@Param("queryrderDTO") BusinessPreListDTO queryrderDTO); + + Integer updateBusinessPreOrderByOrderPackageCode(@Param("orderPackageCode") String orderPackageCode); } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.xml index 58c491085..c0c32acde 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.xml +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionBusinessPreOrderMapper.xml @@ -1,6 +1,14 @@ + + + + update logpm_business_pre_order set in_warehouse=1 + + where order_package_code=#{orderPackageCode} and is_deleted=0 and in_warehouse=0 + + DELETE FROM logpm_business_pre_order WHERE reservation_code = #{reservationCode} AND order_package_code IN diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessInOrderDataQueueHandler.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessInOrderDataQueueHandler.java new file mode 100644 index 000000000..0f85fd8d8 --- /dev/null +++ b/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) { + + + + + + } +} diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessPreOrderDataQueueHandler.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessPreOrderDataQueueHandler.java index b9e8ca8c3..ced7a4aa6 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/receiver/BusinessPreOrderDataQueueHandler.java +++ b/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 dataResult, String maillName) { - - // 查询保存的对象在商场端是否存在 && 没有入库的 都i需要删除 执行新的 - List orderIdList = dataResult.stream() - .map(DistributionBusinessPreOrderEntity::getStockArticleId) - .collect(Collectors.toList()); - R 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 lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(DistributionBusinessPreOrderEntity::getInWarehouse, 0); - lambdaQueryWrapper.in(DistributionBusinessPreOrderEntity::getStockArticleId, orderIdList); - List list = distributionBusinessPreOrderService.list(lambdaQueryWrapper); - - - // 找到已经推送的包件信息 并将其标记为删除状态 - List 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 dataResult, String maillName) { -// String method = "########################saveOtherDataBase"; -// R 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> map = dataResult.stream().collect(Collectors.groupingBy(DistributionBusinessPreOrderEntity::getInWarehouse)); -// if (Func.isNotEmpty(map.get(1))) { -// //存在需要进行删除的数据 -// List deleteList = map.get(0); -// if (!deleteList.isEmpty()) { -// Map> deletedMap = deleteList.stream().collect(Collectors.groupingBy(DistributionBusinessPreOrderEntity::getReservationCode)); -// deletedMap.forEach((k, v) -> { -// List 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 mapList = map.get(0); -// Map> saveData = mapList.stream().collect(Collectors.groupingBy(DistributionBusinessPreOrderEntity::getReservationCode)); -// List existData = new ArrayList<>(); -// if (!saveData.isEmpty()) { -// //查询是否存在重复 -// saveData.forEach((k, v) -> { -// List list = distributionBusinessPreOrderService.list(Wrappers.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(); -// -// } -// -// -// } } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java index 0db27332d..9a00937c0 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionAsyncService.java +++ b/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 waybillBilllByWaybillNos, List trunklineAdvanceDetailEntities, List trunklineAdvanceEntities, List trunklineWaybillPackageEntities, List trunklineWaybillOrderEntities, List warehouseWayBillDetails, List distributionParcelListEntities, String mallName); + + void saveOtherDataBaseNew(String tenantId,List dataResult, String mallName); } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionBusinessPreOrderService.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionBusinessPreOrderService.java index 4a895ff91..811f86697 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionBusinessPreOrderService.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionBusinessPreOrderService.java @@ -25,6 +25,13 @@ public interface IDistributionBusinessPreOrderService extends BaseService listByAdvanceIds = trunklineAdvanceDetailClient.findListByAdvanceIds(ids); - for (TrunklineAdvanceDetailEntity trunklineAdvanceDetailEntity : t) { + List 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 dataResult, String mallName) { + + List orderIdList = dataResult.stream() + .map(DistributionBusinessPreOrderEntity::getStockArticleId) + .collect(Collectors.toList()); + R 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 lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(DistributionBusinessPreOrderEntity::getInWarehouse, 0); + lambdaQueryWrapper.in(DistributionBusinessPreOrderEntity::getStockArticleId, orderIdList); + List list = distributionBusinessPreOrderService.list(lambdaQueryWrapper); + + + // 找到已经推送的包件信息 并将其标记为删除状态 + List 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); + } + } } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/IDistributionBusinessPreOrderServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/IDistributionBusinessPreOrderServiceImpl.java index 931ce53bc..40e72cbed 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/IDistributionBusinessPreOrderServiceImpl.java +++ b/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 idArray = Arrays.asList(ids.split(",")); QueryWrapper wrapper = new QueryWrapper(); wrapper.in("id", idArray); + + InComingDTO inComingDTO = new InComingDTO(); + StringBuffer sb = new StringBuffer(); List list = baseMapper.selectList(wrapper); + + List 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 list = baseMapper.selectList(wrapper); +// +// for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : data) { +// +// distributionBusinessPreOrderEntity.setInWarehouse(1); +// baseMapper.updateById(distributionBusinessPreOrderEntity); +// } + } + + @Override public IPage pacgeList(Map distributionBusinessPreOrderDTO, IPage page) { DistributionBusinessPreOrderDTO param = JSONObject.parseObject(JSONObject.toJSONString(distributionBusinessPreOrderDTO), DistributionBusinessPreOrderDTO.class); @@ -137,80 +172,80 @@ public class IDistributionBusinessPreOrderServiceImpl extends BaseServiceImpl queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(DistributionBusinessPreOrderEntity::getReservationCode, reservationCode); - List 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 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 queryWrapper = new LambdaQueryWrapper<>(); +// queryWrapper.eq(DistributionBusinessPreOrderEntity::getReservationCode, reservationCode); +// List 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 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 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 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) { diff --git a/blade-service/logpm-factory-data/logpm-factory-data-base/src/main/resources/application-prod.yml b/blade-service/logpm-factory-data/logpm-factory-data-base/src/main/resources/application-prod.yml index 3bf1caa8b..924f6edba 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-base/src/main/resources/application-prod.yml +++ b/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: diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/HwyOrderStatusHandler.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/HwyOrderStatusHandler.java index 118d11573..d36c04c84 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/HwyOrderStatusHandler.java +++ b/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();//订单自编号 diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java index 886cbcfd9..c218a068a 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java @@ -114,4 +114,8 @@ public class RabbitMqConfiguration { + + + + } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/InComingClient.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/feign/InComingClient.java new file mode 100644 index 000000000..901f1822a --- /dev/null +++ b/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); + } +} diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/InComingServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/InComingServiceImpl.java index f0a7f33c1..746934df6 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/InComingServiceImpl.java +++ b/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 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 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 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); }