From 49992551c9f8ef4b98cad6741910413c04296f29 Mon Sep 17 00:00:00 2001 From: PigBaoBei <2739175034@qq.com> Date: Thu, 16 May 2024 11:17:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=AE=B6=E7=AB=AF=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E5=92=8C=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessPreOrderDataQueueHandler.java | 38 +++++++++++++------ 1 file changed, 27 insertions(+), 11 deletions(-) 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 47eafaa34..8e3678f35 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 @@ -2,6 +2,7 @@ package com.logpm.distribution.receiver; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.logpm.business.entity.DistributionBusinessPreOrderEntity; import com.logpm.distribution.entity.DistributionDeliveryListEntity; import com.logpm.distribution.entity.DistributionParcelListEntity; @@ -128,6 +129,7 @@ public class BusinessPreOrderDataQueueHandler { 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))){ //存在需要进行删除的数据 @@ -148,19 +150,33 @@ public class BusinessPreOrderDataQueueHandler { if (Func.isNotEmpty(map.get(2))){ //存在可能变更的数据 List mapList = map.get(2); - for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : mapList) { - distributionBusinessPreOrderEntity.setTenantId(tenant.getTenantId()); - + 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.push(tenant.getTenantId()); - distributionBusinessPreOrderService.saveBatch(mapList); - DynamicDataSourceContextHolder.poll(); } - -// for (DistributionBusinessPreOrderEntity distributionBusinessPreOrderEntity : dataResult) { -// distributionBusinessPreOrderEntity.setTenantId(tenant.getTenantId()); -// } -// DynamicDataSourceContextHolder.push(tenant.getTenantId()); + DynamicDataSourceContextHolder.poll(); }