From 97b9048ee7f3282576582d933629747d0b933fc1 Mon Sep 17 00:00:00 2001 From: cst61 Date: Tue, 12 May 2026 11:52:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E9=87=8D=E5=A4=8D=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/LbDailyUserTradeServiceImpl.java | 52 ++++++++----------- 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/src/main/java/com/rj/service/impl/LbDailyUserTradeServiceImpl.java b/src/main/java/com/rj/service/impl/LbDailyUserTradeServiceImpl.java index aec0895..18eebdb 100644 --- a/src/main/java/com/rj/service/impl/LbDailyUserTradeServiceImpl.java +++ b/src/main/java/com/rj/service/impl/LbDailyUserTradeServiceImpl.java @@ -43,6 +43,8 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.locks.ReentrantLock; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -70,6 +72,8 @@ public class LbDailyUserTradeServiceImpl extends ServiceImpl TENANT_LB_DAILY_TRADE_IMPORT_LOCKS = new ConcurrentHashMap<>(); @Autowired private ILbDailyUserTradeReportService lbDailyUserTradeReportService; @@ -197,6 +201,13 @@ public class LbDailyUserTradeServiceImpl extends ServiceImpl new ReentrantLock()); + if (!tenantImportLock.tryLock()) { + result.put("success", false); + result.put("message", "该租户已有导入任务正在执行,请等待完成后再试,避免重复写入数据"); + return result; + } String previousTenantId = TenantContextHolder.getTenantId(); TenantContextHolder.setTenantId(normalizedTenantId); try { @@ -223,6 +234,8 @@ public class LbDailyUserTradeServiceImpl extends ServiceImpl importList = new ArrayList<>(); List skippedRows = new ArrayList<>(); int skippedHiddenRows = 0; + /** 表头以下:非空行且非隐藏行,即参与解析的 Excel 行数(含解析失败/跳过的行) */ + int excelTableRowCount = 0; DataFormatter dataFormatter = new DataFormatter(); log.info("开始导入Excel,fileName={}, size={} bytes, defaultReportDate={}", originalFilename, file.getSize(), defaultReportDate); @@ -247,12 +260,12 @@ public class LbDailyUserTradeServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(LbDailyUserTrade::getTenantId, tenantId) - .eq(LbDailyUserTrade::getNickname, nickname.trim()) - .orderByDesc(LbDailyUserTrade::getUpdatedAt) - .last("limit 1"); - return this.getOne(wrapper, false); - } - private boolean isEmptyRow(Row row, DataFormatter formatter) { if (row == null) { return true;