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