From 7c6ec37ada797d825b4b6b2351924e80cc7c9529 Mon Sep 17 00:00:00 2001 From: "pref_mail@163.com" Date: Wed, 19 Jun 2024 17:00:21 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0=E5=B8=88=E5=82=85=E7=AD=BE?= =?UTF-8?q?=E6=94=B6=E6=8E=A8=E9=80=81=E5=95=86=E5=AE=B6=E7=AB=AF=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feign/IDistributionReservationClient.java | 2 + .../BusinessInOrderDataQueueHandler.java | 33 ++++- .../service/IBusinessPreOrderService.java | 8 +- .../impl/BusinessPreOrderServiceImpl.java | 45 +++++-- .../feign/DistributionReservationClient.java | 5 + .../impl/DistributionSignforServiceImpl.java | 124 ++++++++++++++---- 6 files changed, 179 insertions(+), 38 deletions(-) diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionReservationClient.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionReservationClient.java index e305b927f..78e767c3f 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionReservationClient.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionReservationClient.java @@ -61,6 +61,8 @@ public interface IDistributionReservationClient { */ @GetMapping(TOP+"/getReservationList") List getReservationList(@RequestParam("reservationIds") String reservationIds); + @GetMapping(TOP+"/getReservationByCodeAndWarehouseId") + DistributionReservationEntity getReservationByCodeAndWarehouseId(@RequestParam("reservationCode") String reservationCode,@RequestParam("warehouseId") String warehouseId); /** diff --git a/blade-service/logpm-business/src/main/java/com/logpm/business/receiver/BusinessInOrderDataQueueHandler.java b/blade-service/logpm-business/src/main/java/com/logpm/business/receiver/BusinessInOrderDataQueueHandler.java index fe7b021cc..7069eca34 100644 --- a/blade-service/logpm-business/src/main/java/com/logpm/business/receiver/BusinessInOrderDataQueueHandler.java +++ b/blade-service/logpm-business/src/main/java/com/logpm/business/receiver/BusinessInOrderDataQueueHandler.java @@ -1,16 +1,23 @@ package com.logpm.business.receiver; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.logpm.business.service.IBusinessPreOrderService; +import com.logpm.distribution.entity.DistributionReservationEntity; +import com.logpm.distribution.feign.IDistributionReservationClient; import com.rabbitmq.client.Channel; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.common.constant.RabbitConstant; +import org.springblade.core.tool.api.R; +import org.springblade.system.entity.Tenant; +import org.springblade.system.feign.ISysClient; 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.List; import java.util.Map; /** @@ -23,7 +30,8 @@ import java.util.Map; public class BusinessInOrderDataQueueHandler { private final IBusinessPreOrderService businessPreOrderService; - + private final IDistributionReservationClient distributionReservationClient; + private final ISysClient sysClient; @RabbitHandler public void businessInOrderDataHandler(Map map, Message message, Channel channel) { // 获取 @@ -35,7 +43,9 @@ public class BusinessInOrderDataQueueHandler { String vehicleName = o.getString("vehicleName"); String driverName = o.getString("driverName"); String userName = o.getString("userName"); + // 当前作业仓库 Long warehouseId = o.getLong("warehouseId"); + // 作业 String tenantId = o.getString("tenantId"); //验证参数是否为null或者空串 @@ -59,9 +69,26 @@ public class BusinessInOrderDataQueueHandler { log.error("driverName is null"); return; } + // 判断目标租户 + DistributionReservationEntity reservationByCodeAndWarehouseId = distributionReservationClient.getReservationByCodeAndWarehouseId(reservationCode, warehouseId.toString()); + + // 判断是否存在租户 + R> tenantList = sysClient.getTenantList(); + Tenant tenant = null; + if (tenantList.isSuccess()) { + List data = tenantList.getData(); + for (Tenant datum : data) { + if (datum.getTenantType() == 2 && datum.getTenantName().equals(reservationByCodeAndWarehouseId.getMallName().trim())) { + tenant = datum; + break; + } + } + } + if(!ObjectUtil.isEmpty(tenant)){ + // 如果师傅签收 以师傅签收的车次为准 + businessPreOrderService.scanOrderPackageCodeByMaster(orderPackageCode, reservationCode, distrCarNumber, vehicleName, driverName, userName, warehouseId,tenant.getTenantId(),tenant.getTenantName(),tenantId); + } - // 如果师傅签收 以师傅签收的车次为准 - businessPreOrderService.scanOrderPackageCodeByMaster(orderPackageCode, reservationCode, distrCarNumber, vehicleName, driverName, userName, warehouseId, tenantId); } diff --git a/blade-service/logpm-business/src/main/java/com/logpm/business/service/IBusinessPreOrderService.java b/blade-service/logpm-business/src/main/java/com/logpm/business/service/IBusinessPreOrderService.java index 2c314b7dd..202762810 100644 --- a/blade-service/logpm-business/src/main/java/com/logpm/business/service/IBusinessPreOrderService.java +++ b/blade-service/logpm-business/src/main/java/com/logpm/business/service/IBusinessPreOrderService.java @@ -10,6 +10,7 @@ import com.logpm.trunkline.dto.InComingDTO; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseService; import org.springblade.core.tool.api.R; +import org.springblade.system.entity.Tenant; import java.util.List; import java.util.Map; @@ -88,8 +89,9 @@ public interface IBusinessPreOrderService extends BaseService queryWrapper1 = new LambdaQueryWrapper<>(); @@ -484,14 +497,22 @@ public class BusinessPreOrderServiceImpl extends BaseServiceImpl>>>> 签收异常报错", e); @@ -2672,6 +2683,49 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl map = new HashMap<>(); + map.put("messageData", jsonObject); + rabbitTemplate.convertAndSend(RabbitConstant.BUSINESS_IN_CONVERSION_DATA_EXCHANGE, RabbitConstant.BUSINESS_IN_CONVERSION_DATA_ROUTING, map); + } catch (Exception e) { + log.error("签收商家推送:{}", e); + } + } + @Override @Transactional(rollbackFor = Exception.class) public R signforPC(DistrilbutionAppsignforDTO distrilbutionloadingscanDTO) { @@ -3704,8 +3758,10 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl getAppDeliveryorderListPage(DistributionAppDeliveryListDTO distributionDeliveryList) { + List orderVos = new ArrayList<>(); if (Func.isEmpty(distributionDeliveryList.getReservationId())) { log.error("参数缺失reservationId:{}", distributionDeliveryList.getReservationId()); + return orderVos; } //查询该客户装车 @@ -3731,32 +3787,40 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl> reservationOrderMap = reservationStockarticleEntityList.stream().collect(Collectors.groupingBy(DistributionReservationStockarticleEntity::getStockArticleId)); Map> loadingOrderMap = distributionLoadscanEntities.stream().collect(Collectors.groupingBy(DistributionLoadscanEntity::getOrderId)); - List orderVos = new ArrayList<>(); + if (Func.isNotEmpty(orderIds)) { orderIds = orderIds.stream().distinct().collect(Collectors.toList()); - for (Long orderId : orderIds) { - DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(orderId); - DistributionAppStockArticleVO distributionAppStockArticleVO = Func.copy(stockArticleEntity, DistributionAppStockArticleVO.class); - distributionAppStockArticleVO.setTotalNumber(stockArticleEntity.getTotalNumber()); - distributionAppStockArticleVO.setStockArticleId(stockArticleEntity.getId()); - distributionAppStockArticleVO.setLoadingNub(0); + + List distributionStockArticleEntities = distributionStockArticleService.listByIds(orderIds); + + + + List reservationOrders = distributionReservationStockarticleService.list(Wrappers.query().lambda() + .eq(DistributionReservationStockarticleEntity::getReservationId, distributionDeliveryList.getReservationId()) + .in(DistributionReservationStockarticleEntity::getStockArticleId, orderIds) + .ne(DistributionReservationStockarticleEntity::getStockArticleStatus, ReservationOrderStatusConstant.quxiao.getValue()) + ); + + for (DistributionStockArticleEntity distributionStockArticleEntity : distributionStockArticleEntities) { + + +// DistributionStockArticleEntity stockArticleEntity = distributionStockArticleService.getById(orderId); + DistributionAppStockArticleVO distributionAppStockArticleVO = Func.copy(distributionStockArticleEntity, DistributionAppStockArticleVO.class); + assert distributionAppStockArticleVO != null; + distributionAppStockArticleVO.setLoadingNub(0); distributionAppStockArticleVO.setSignforNub(0); distributionAppStockArticleVO.setReservationNum(0); //查询预约该订单计划数量 - DistributionReservationStockarticleEntity reservationOrder = distributionReservationStockarticleService.getOne(Wrappers.query().lambda() - .eq(DistributionReservationStockarticleEntity::getReservationId, distributionDeliveryList.getReservationId()) - .eq(DistributionReservationStockarticleEntity::getStockArticleId, orderId) - .ne(DistributionReservationStockarticleEntity::getStockArticleStatus, ReservationOrderStatusConstant.quxiao.getValue()) - ); + DistributionReservationStockarticleEntity reservationOrder = findReservationOrders(reservationOrders, distributionStockArticleEntity.getId()); if (Func.isNotEmpty(reservationOrder)) { distributionAppStockArticleVO.setReservationNum(reservationOrder.getReservationNum()); } - if (stockArticleEntity.getIsZero().equals(IsOrNoConstant.no.getValue())) { + if (distributionStockArticleEntity.getIsZero().equals(IsOrNoConstant.no.getValue())) { //判断此订单是是否是异常装车 - if (Func.isEmpty(reservationOrderMap.get(orderId))) { + if (Func.isEmpty(reservationOrderMap.get(distributionStockArticleEntity.getId()))) { //不存在计划之中的订单装车 - List loadscanEntityList = loadingOrderMap.get(orderId); + List loadscanEntityList = loadingOrderMap.get(distributionStockArticleEntity.getId()); List abnormalPackageIds = loadscanEntityList.stream().map(DistributionLoadscanEntity::getPackageId).collect(Collectors.toList()); List distributionParcelListEntities = distributionParcelListService.listByIds(abnormalPackageIds); List distributionAppParcelListVOS = DistributionParcelListAppWrapper.build().listVO(distributionParcelListEntities); @@ -3778,7 +3842,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl reservationPackage = distributionReservationPackageService.list(Wrappers.query().lambda() .eq(DistributionReservationPackageEntity::getReservationId, distributionDeliveryList.getReservationId()) - .eq(DistributionReservationPackageEntity::getStockArticleId, orderId) + .eq(DistributionReservationPackageEntity::getStockArticleId, distributionStockArticleEntity.getId()) .ne(DistributionReservationPackageEntity::getPacketBarStatus, ReservationPackageStatusConstant.quxiao.getValue()) ); List packageIds = new ArrayList<>(); @@ -3788,8 +3852,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl collect = null; - if (Func.isNotEmpty(loadingOrderMap.get(orderId))) { - List loadscanEntityList = loadingOrderMap.get(orderId); + if (Func.isNotEmpty(loadingOrderMap.get(distributionStockArticleEntity.getId()))) { + List loadscanEntityList = loadingOrderMap.get(distributionStockArticleEntity.getId()); List loadingPackageIds = loadscanEntityList.stream().map(DistributionLoadscanEntity::getPackageId).collect(Collectors.toList()); packageIds.addAll(loadingPackageIds); collect = loadscanEntityList.stream().collect(Collectors.toMap(DistributionLoadscanEntity::getPackageId, Function.identity(), (k1, k2) -> k2)); @@ -3801,11 +3865,13 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl packageVOS = new ArrayList<>(); if (Func.isNotEmpty(packageIds)) { packageIds = packageIds.stream().distinct().collect(Collectors.toList()); - for (Long packageId : packageIds) { - DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(packageId); + + List parcelListEntitys = distributionParcelListService.listByIds(packageIds); + for (DistributionParcelListEntity parcelListEntity : parcelListEntitys) { +// DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(packageId); DistributionAppParcelListVO distributionAppParcelListVO = DistributionParcelListAppWrapper.build().entityVO(parcelListEntity); if (Func.isNotEmpty(collect)) { - DistributionLoadscanEntity distributionLoadscanEntity = collect.get(packageId); + DistributionLoadscanEntity distributionLoadscanEntity = collect.get(parcelListEntity.getId()); if (Func.isNotEmpty(distributionLoadscanEntity)) { distributionAppParcelListVO.setMaterialName(parcelListEntity.getMaterialName()); if (distributionLoadscanEntity.getIsAbnormalLoading().equals(2)) { @@ -3832,16 +3898,16 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl reservationZeroPackageEntityList = distributionReservationZeroPackageService.list(Wrappers.query().lambda() .eq(DistributionReservationZeroPackageEntity::getReservationId, distributionDeliveryList.getReservationId()) - .eq(DistributionReservationZeroPackageEntity::getStockArticleId, orderId) + .eq(DistributionReservationZeroPackageEntity::getStockArticleId, distributionStockArticleEntity.getId()) .ne(DistributionReservationZeroPackageEntity::getZeroPackageStatus, ReservationPackageStatusConstant.quxiao.getValue())); if (Func.isNotEmpty(reservationZeroPackageEntityList)) { int reservationTotal = reservationZeroPackageEntityList.stream().mapToInt(DistributionReservationZeroPackageEntity::getQuantity).sum(); distributionAppStockArticleVO.setReservationNum(reservationTotal); - List parcelNumberVOS = distributionReservationMapper.selectReservationZeroOrderDetail(orderId, Long.parseLong(distributionDeliveryList.getReservationId())); + List parcelNumberVOS = distributionReservationMapper.selectReservationZeroOrderDetail(distributionStockArticleEntity.getId(), Long.parseLong(distributionDeliveryList.getReservationId())); distributionAppStockArticleVO.setSignforNub(0); if (Func.isNotEmpty(parcelNumberVOS)) { parcelNumberVOS.forEach(p -> { - DistributionLoadscanEntity loadscanEntity = distributionLoadscanService.getOne(Wrappers.query().lambda().eq(DistributionLoadscanEntity::getReservationId, distributionDeliveryList.getReservationId()).eq(DistributionLoadscanEntity::getOrderId, orderId).eq(DistributionLoadscanEntity::getPackageId, p.getParcelListId()).ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue())); + DistributionLoadscanEntity loadscanEntity = distributionLoadscanService.getOne(Wrappers.query().lambda().eq(DistributionLoadscanEntity::getReservationId, distributionDeliveryList.getReservationId()).eq(DistributionLoadscanEntity::getOrderId, distributionStockArticleEntity.getId()).eq(DistributionLoadscanEntity::getPackageId, p.getParcelListId()).ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue())); p.setLoadingNum(0); p.setSigningNum(0); if (Func.isNotEmpty(loadscanEntity)) { @@ -3866,6 +3932,16 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl reservationOrders , Long id) { + return reservationOrders.stream().filter(f -> f.getStockArticleId().equals(id)).findFirst().orElse(null); + } + // Map> orderMap = distributionLoadscanEntities.stream().collect(Collectors.groupingBy(DistributionLoadscanEntity::getOrderId)); // List distributionAppStockArticleVOS = new ArrayList<>();