From 3d196b6b24dd7f60941b2d7f2dd4b72ff983489a Mon Sep 17 00:00:00 2001
From: zjf <1799650030@qq.com>
Date: Tue, 10 Jun 2025 16:19:59 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=BC=E5=85=A5=E5=90=8C?=
=?UTF-8?q?=E4=B8=80=E6=89=B9=E6=95=B0=E6=8D=AE=E5=88=A4=E6=96=AD=E6=98=AF?=
=?UTF-8?q?=E5=90=A6=E7=BA=AF=E6=AD=A3=E7=9B=B8=E5=90=8C=E8=B4=A7=E5=8F=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../pjcloud-supermarket-biz/pom.xml | 7 +++
.../controller/SmErpSpuController.java | 2 +
.../service/impl/SmErpSpuServiceImpl.java | 46 +++++++++++++++----
3 files changed, 46 insertions(+), 9 deletions(-)
diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/pom.xml b/pjcloud-supermarket/pjcloud-supermarket-biz/pom.xml
index 5792285a1..6dded74c2 100644
--- a/pjcloud-supermarket/pjcloud-supermarket-biz/pom.xml
+++ b/pjcloud-supermarket/pjcloud-supermarket-biz/pom.xml
@@ -13,6 +13,13 @@
pjcloud-supermarket-biz
+
+
+
+ com.bsd
+ pjcloud-common-idempotent
+
+
org.springframework.boot
diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpSpuController.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpSpuController.java
index a5fda12b3..7d3165347 100644
--- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpSpuController.java
+++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/controller/SmErpSpuController.java
@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.common.core.util.BeanUtils;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.excel.annotation.RequestExcel;
+import com.bsd.pjcloud.common.idempotent.annotation.Idempotent;
import com.bsd.pjcloud.common.log.annotation.SysLog;
import com.bsd.pjcloud.common.security.util.SecurityUtils;
import com.bsd.pjcloud.supermarket.dto.SupermarketSpuAppQueryDTO;
@@ -228,6 +229,7 @@ public class SmErpSpuController {
*/
@PostMapping("/import")
@PreAuthorize("@pms.hasPermission('supermarket_supermarketSpu_import')" )
+ @Idempotent(key = "#key", expireTime = 10, info = "请勿重复导入,10秒后再重新尝试")
public R importErpSpu(@RequestExcel List dtos, BindingResult bindingResult) {
List collect = dtos.stream().filter(smErpSpuImportDto -> smErpSpuImportDto.getProductCode() != null).collect(Collectors.toList());
if (CollectionUtils.isEmpty(collect)) {
diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuServiceImpl.java
index 482db88fc..82231c9ba 100644
--- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuServiceImpl.java
+++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpSpuServiceImpl.java
@@ -519,6 +519,19 @@ public class SmErpSpuServiceImpl extends ServiceImpl> errorList = new ArrayList<>();
+
+
+ //查询这一批导入的数据是否纯在货号相同,存在标记出行数
+ // 1. 收集本次导入的所有货号及行号映射
+ Map> importProductCodeMap = new HashMap<>();
+ for (int i = 0; i < smErpSpuImportDtos.size(); i++) {
+ SmErpSpuImportDto dto = smErpSpuImportDtos.get(i);
+ int row = i + 1;
+ String code = dto.getProductCode();
+ importProductCodeMap.computeIfAbsent(code, k -> new ArrayList<>()).add(row);
+ }
+
+
//货号-商品映射
Map productCodeToSpuMap = new HashMap<>();
@@ -545,6 +558,19 @@ public class SmErpSpuServiceImpl extends ServiceImpl duplicateRows = importProductCodeMap.get(productCode);
+ if (duplicateRows.size() > 1) {
+ String duplicateInfo = duplicateRows.stream()
+ .filter(r -> r < rowNumber) // 只显示之前的重复行
+ .map(r -> "第" + r + "行")
+ .collect(Collectors.joining(","));
+ if (!duplicateInfo.isEmpty()) {
+ errorReasons.add("货号在本批导入数据中重复,重复行号:" + duplicateInfo);
+ }
+ }
+
// 数据校验
List validationErrors = ErpSpuValidator.validate(dto, rowNumber);
//添加验证错误记录
@@ -586,17 +612,19 @@ public class SmErpSpuServiceImpl extends ServiceImpl