From fac29d5e2e87cd3f83f04326157eb88140cc7798 Mon Sep 17 00:00:00 2001 From: liyj <1617420630@qq.com> Date: Fri, 4 Jul 2025 18:10:35 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=94=B9item=5Fsrc=5Fid=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E4=B8=BAString?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/modules/order/ShopOrderItem.java | 2 +- .../modules/product/ShopProductItem.java | 2 +- .../service/impl/ShopOrderBaseServiceImpl.java | 18 +++++++++--------- .../impl/ShopOrderReturnServiceImpl.java | 2 +- .../impl/ShopProductBaseServiceImpl.java | 13 +++++++------ .../impl/ShopProductItemServiceImpl.java | 4 ++-- .../service/impl/SyncBaseThirdSxAbstract.java | 2 +- sql/shop/dev/20250704_ddl.sql | 1 + 8 files changed, 23 insertions(+), 21 deletions(-) create mode 100644 sql/shop/dev/20250704_ddl.sql diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/order/ShopOrderItem.java b/mall-common/src/main/java/com/suisung/mall/common/modules/order/ShopOrderItem.java index 2390e7d5..850aa92d 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/order/ShopOrderItem.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/order/ShopOrderItem.java @@ -161,7 +161,7 @@ public class ShopOrderItem implements Serializable { private Integer order_item_saler_id; @ApiModelProperty(value = "分销商品编号") - private Long item_src_id; + private String item_src_id; @ApiModelProperty(value = "拆单同步状态") private Integer order_item_supplier_sync; diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductItem.java b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductItem.java index 92593241..7fe99bc0 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductItem.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductItem.java @@ -126,7 +126,7 @@ public class ShopProductItem implements Serializable { private Integer item_freetime; @ApiModelProperty(value = "供应商SKU编号") - private Long item_src_id; + private String item_src_id; @ApiModelProperty(value = "商品分类") private Integer category_id; diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java index b8c6838b..fe1c5dee 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java @@ -2596,8 +2596,8 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl product_item_rows = shopProductItemService.find(productItemQueryWrapper); for (ShopProductItem product_item_row : product_item_rows) { - Long item_src_id = product_item_row.getItem_src_id(); + String item_src_id = product_item_row.getItem_src_id(); Optional orderItemOpl = order_item_rows.stream().filter(s -> ObjectUtil.equal(s.getItem_id(), item_src_id)).findFirst(); if (orderItemOpl.isPresent()) { ShopOrderItem shopOrderItem = orderItemOpl.get(); @@ -5548,7 +5548,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl item_src_ids = order_item_rows.stream().map(s -> s.getItem_src_id()).distinct().collect(Collectors.toList()); + List item_src_ids = order_item_rows.stream().map(s -> s.getItem_src_id()).distinct().collect(Collectors.toList()); if (CollUtil.isNotEmpty(item_src_ids)) { List item_rows = new ArrayList(); @@ -5580,7 +5580,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl orderItemQueryWrapper = new QueryWrapper<>(); orderItemQueryWrapper.eq("item_id", itemSrcId); orderItemQueryWrapper.eq("src_order_id", order_id); diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java index 5360a881..e03fe269 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java @@ -502,6 +502,7 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl oneProductItemMap = oneProductItems.stream().collect(Collectors.toMap(ShopProductItem::getItem_src_id, ShopProductItem -> ShopProductItem, (k1, k2) -> k1)); + Map oneProductItemMap = oneProductItems.stream().collect(Collectors.toMap(ShopProductItem::getItem_src_id, ShopProductItem -> ShopProductItem, (k1, k2) -> k1)); if ($productItemMap.size() != oneProductItemMap.size()) { putDown = true; } else { - for (Long item_src_id : oneProductItemMap.keySet()) { + for (String item_src_id : oneProductItemMap.keySet()) { ShopProductItem $productItem = $productItemMap.get(item_src_id); if ($productItem == null) { @@ -4877,9 +4878,9 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl productItemMap = shopProductItems.stream().collect(Collectors.toMap(ShopProductItem::getItem_src_id, ShopProductItem -> ShopProductItem, (k1, k2) -> k1)); + Map productItemMap = shopProductItems.stream().collect(Collectors.toMap(ShopProductItem::getItem_src_id, ShopProductItem -> ShopProductItem, (k1, k2) -> k1)); - for (Long item_src_id : productItemMap.keySet()) { + for (String item_src_id : productItemMap.keySet()) { ShopProductItem $productItem = $productItemMap.get(item_src_id); if ($productItem == null) { @@ -4897,7 +4898,7 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl item_src_rows = new ArrayList<>(); Boolean supplier_market_enable = accountBaseConfigService.getConfig("supplier_market_enable", false); if (supplier_market_enable) { - List item_src_ids = itemList.stream().map(ShopProductItem::getItem_src_id).distinct().collect(Collectors.toList()); + List item_src_ids = itemList.stream().map(ShopProductItem::getItem_src_id).distinct().collect(Collectors.toList()); if (CollUtil.isNotEmpty(item_src_ids)) { item_src_rows = gets(CollUtil.join(item_src_ids, ",")); } @@ -2126,7 +2126,7 @@ public class ShopProductItemServiceImpl extends BaseServiceImpl itemOpl = item_src_rows.stream().filter(s -> ObjectUtil.equal(item_src_id, s.getItem_id())).findFirst(); if (itemOpl.isPresent() && CheckUtil.isNotEmpty(item_src_id)) { diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncBaseThirdSxAbstract.java b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncBaseThirdSxAbstract.java index 16714710..9e369583 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncBaseThirdSxAbstract.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncBaseThirdSxAbstract.java @@ -788,7 +788,7 @@ public abstract class SyncBaseThirdSxAbstract{ ShopProductItem shopProductItem = new ShopProductItem(); shopProductItem.setStore_id(storeIdInt); shopProductItem.setCategory_id(categoryId); - shopProductItem.setItem_src_id(jsonObj.getLong("product_number")); + shopProductItem.setItem_src_id(jsonObj.getStr("product_number")); //零售价 shopProductItem.setItem_unit_price(BigDecimal.valueOf(jsonObj.getDouble("retail_price"))); shopProductItem.setItem_advice_price(BigDecimal.valueOf(jsonObj.getDouble("retail_price"))); diff --git a/sql/shop/dev/20250704_ddl.sql b/sql/shop/dev/20250704_ddl.sql new file mode 100644 index 00000000..cf9d1f9f --- /dev/null +++ b/sql/shop/dev/20250704_ddl.sql @@ -0,0 +1 @@ +alter table shop_product_item modify `item_src_id` varchar(50) NOT NULL DEFAULT '0' COMMENT '供应商SKU编号'; \ No newline at end of file From 7ae10a84d37ad54c88116053e107ea73ce352982 Mon Sep 17 00:00:00 2001 From: liyj <1617420630@qq.com> Date: Sat, 5 Jul 2025 11:51:14 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../suisung/mall/common/api/StateCode.java | 2 +- .../impl/ShopProductBaseServiceImpl.java | 89 ++++++++++++++++++- .../impl/ProductMappingServiceImpl.java | 2 +- 3 files changed, 90 insertions(+), 3 deletions(-) diff --git a/mall-common/src/main/java/com/suisung/mall/common/api/StateCode.java b/mall-common/src/main/java/com/suisung/mall/common/api/StateCode.java index 1508858a..375826cc 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/api/StateCode.java +++ b/mall-common/src/main/java/com/suisung/mall/common/api/StateCode.java @@ -42,7 +42,7 @@ public class StateCode { public static final int PRODUCT_STATE_NORMAL = 1001; //正常 public static final int PRODUCT_STATE_OFF_THE_SHELF = 1002; //下架 - public static final int PRODUCT_STATE_OFF_THE_SHELF_UNCHECK = 1003; //同步数据的状态,下架未分配商品 + public static final int PRODUCT_STATE_OFF_THE_SHELF_UNCHECK = 1003; //同步数据的状态,下架未分配商品,也叫待审核 public static final int DEMAND_STATE_CONDUCT = 1000; //采购中 public static final int DEMAND_STATE_REJECT = 1030; //被驳回 diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java index e03fe269..79fec83b 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java @@ -64,11 +64,11 @@ import com.suisung.mall.shop.product.pojo.vo.ProductVo; import com.suisung.mall.shop.product.service.*; import com.suisung.mall.shop.sixun.service.SxSyncGoodsService; import com.suisung.mall.shop.store.service.*; -import com.suisung.mall.shop.sync.keymanage.RedisKey; import com.suisung.mall.shop.sync.service.ProductMappingService; import com.suisung.mall.shop.sync.service.StoreDbConfigService; import com.suisung.mall.shop.user.service.*; import org.apache.commons.lang3.StringUtils; +import org.apache.http.client.utils.CloneUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -87,7 +87,10 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutionException; import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; import static com.suisung.mall.common.utils.ContextUtil.getCurrentUser; @@ -2973,6 +2976,18 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl count1 = CompletableFuture.supplyAsync(() -> { + QueryWrapper queryWrapper=new QueryWrapper<>(); + if(ObjectUtil.isNotEmpty(shopProductIndex.getCategory_id())){ + queryWrapper.eq("category_id",shopProductIndex.getCategory_id()); + } + queryWrapper.eq("store_id",shopProductIndex.getStore_id()); + return ((int) shopProductIndexService.count(queryWrapper)); + }); + CompletableFuture count2 = CompletableFuture.supplyAsync(() -> { + QueryWrapper queryWrapper=new QueryWrapper<>(); + if(ObjectUtil.isNotEmpty(shopProductIndex.getCategory_id())){ + queryWrapper.eq("category_id",shopProductIndex.getCategory_id()); + } + queryWrapper.eq("store_id",shopProductIndex.getStore_id()); + queryWrapper.eq("product_state_id",StateCode.PRODUCT_STATE_NORMAL); + return ((int) shopProductIndexService.count(queryWrapper)); + }); + CompletableFuture count3 = CompletableFuture.supplyAsync(() -> { + QueryWrapper queryWrapper=new QueryWrapper<>(); + if(ObjectUtil.isNotEmpty(shopProductIndex.getCategory_id())){ + queryWrapper.eq("category_id",shopProductIndex.getCategory_id()); + } + queryWrapper.eq("store_id",shopProductIndex.getStore_id()); + queryWrapper.eq("product_state_id",StateCode.PRODUCT_STATE_OFF_THE_SHELF); + return ((int) shopProductIndexService.count(queryWrapper)); + }); + CompletableFuture count4 = CompletableFuture.supplyAsync(() -> { + QueryWrapper queryWrapper=new QueryWrapper<>(); + if(ObjectUtil.isNotEmpty(shopProductIndex.getCategory_id())){ + queryWrapper.eq("category_id",shopProductIndex.getCategory_id()); + } + queryWrapper.eq("store_id",shopProductIndex.getStore_id()); + queryWrapper.eq("product_state_id",StateCode.PRODUCT_STATE_ILLEGAL); + return ((int) shopProductIndexService.count(queryWrapper)); + }); + CompletableFuture count5 = CompletableFuture.supplyAsync(() -> { + QueryWrapper queryWrapper=new QueryWrapper<>(); + if(ObjectUtil.isNotEmpty(shopProductIndex.getCategory_id())){ + queryWrapper.eq("category_id",shopProductIndex.getCategory_id()); + } + queryWrapper.eq("store_id",shopProductIndex.getStore_id()); + queryWrapper.eq("product_state_id",StateCode.PRODUCT_STATE_OFF_THE_SHELF_UNCHECK); + return ((int) shopProductIndexService.count(queryWrapper)); + }); + + // 等待所有任务完成 + CompletableFuture allFutures = CompletableFuture.allOf(count1, count2, count3,count4,count5); + allFutures.thenRun(() -> { + logger.info("所有统计任务完成"); + }); + Integer[] resultInt=new Integer[taskCount]; + try { + resultInt[0]=count1.get(); + resultInt[1]=count2.get(); + resultInt[2]=count3.get(); + resultInt[3]=count4.get(); + resultInt[4]=count5.get(); + } catch (Exception e) { + throw new RuntimeException(e); + } + return resultInt; + } + + public static void main(String[] args) { + AtomicInteger count1=new AtomicInteger(0);//全部 + System.out.println(count1.addAndGet(10)); + System.out.println(count1); + } } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/ProductMappingServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/ProductMappingServiceImpl.java index 030a99a1..f866487b 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/ProductMappingServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/ProductMappingServiceImpl.java @@ -382,7 +382,7 @@ public class ProductMappingServiceImpl extends BaseServiceImpl storeDbConfigQueryWrapper = new QueryWrapper<>(); storeDbConfigQueryWrapper.select("priority_mode"); storeDbConfigQueryWrapper.eq("store_id", storeId); - StoreDbConfig storeDbConfig= storeDbConfigService.getOne(storeDbConfigQueryWrapper); + StoreDbConfig storeDbConfig= storeDbConfigService.findOne(storeDbConfigQueryWrapper); if(null==storeDbConfig){ return CommonResult.failed("同步数据库配置不能为空"); }