From 1451698d66be65939e07cc02b17f993c389dbdb6 Mon Sep 17 00:00:00 2001 From: MerCry Date: Mon, 16 Mar 2026 16:33:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=A1=E7=AE=97=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/wecom/helper/HandleAllData.java | 62 +------------------ .../excel/wecom/helper/HandleAllDataV2.java | 54 ++-------------- 2 files changed, 7 insertions(+), 109 deletions(-) diff --git a/excel-handle/src/main/java/com/ruoyi/excel/wecom/helper/HandleAllData.java b/excel-handle/src/main/java/com/ruoyi/excel/wecom/helper/HandleAllData.java index 3d22327..7f8485f 100644 --- a/excel-handle/src/main/java/com/ruoyi/excel/wecom/helper/HandleAllData.java +++ b/excel-handle/src/main/java/com/ruoyi/excel/wecom/helper/HandleAllData.java @@ -579,75 +579,19 @@ import java.util.concurrent.atomic.AtomicInteger; } private boolean matchesQValue(CustomerExportData data,Date curDate) { - String orderDate = data.getTagGroup4(); // Q列:成交日期 - - // 支持多种格式: - // 1. 2026/2/24周二 或 2026/2/24 周一 - // 2. 1.7-小雅初中公众号K 或 1.7 - // 3. 2.3 - if (orderDate == null || orderDate.trim().isEmpty()) { + Date finishDate = data.getFinishDate(); + if (finishDate == null) { return false; } try { - // 由于可能是多个逗号拼成的多个日期,任意一个日期符合都可以 - String[] dates = orderDate.trim().split(","); - String lastDateStr = dates[dates.length - 1].trim(); - Calendar orderCal = Calendar.getInstance(); - orderCal.setTime(curDate); + orderCal.setTime(finishDate); orderCal.set(Calendar.HOUR_OF_DAY, 0); orderCal.set(Calendar.MINUTE, 0); orderCal.set(Calendar.SECOND, 0); orderCal.set(Calendar.MILLISECOND, 0); - boolean parsed = false; - - // 格式1: 2026/2/24周二 或 2026/2/24 周一 (完整日期格式) - // 正则匹配: 年份/月份/日期 - java.util.regex.Pattern fullDatePattern = java.util.regex.Pattern.compile("(\\d{4})[/\\-](\\d{1,2})[/\\-](\\d{1,2})"); - java.util.regex.Matcher fullDateMatcher = fullDatePattern.matcher(lastDateStr); - if (fullDateMatcher.find()) { - int year = Integer.parseInt(fullDateMatcher.group(1)); - int month = Integer.parseInt(fullDateMatcher.group(2)); - int day = Integer.parseInt(fullDateMatcher.group(3)); - orderCal.set(Calendar.YEAR, year); - orderCal.set(Calendar.MONTH, month - 1); - orderCal.set(Calendar.DAY_OF_MONTH, day); - parsed = true; - } - - // 格式2和3: 1.7-小雅初中公众号K 或 2.3 (月.日格式) - if (!parsed) { - // 提取开头的月.日格式,忽略后面的文字 - java.util.regex.Pattern monthDayPattern = java.util.regex.Pattern.compile("^(\\d{1,2})[.\\-/](\\d{1,2})"); - java.util.regex.Matcher monthDayMatcher = monthDayPattern.matcher(lastDateStr); - if (monthDayMatcher.find()) { - int month = Integer.parseInt(monthDayMatcher.group(1)); - int day = Integer.parseInt(monthDayMatcher.group(2)); - orderCal.set(Calendar.MONTH, month - 1); - orderCal.set(Calendar.DAY_OF_MONTH, day); - // 跨年处理:如果成交日期早于当前日期,年份+1 - Calendar tempCal = Calendar.getInstance(); - tempCal.setTime(curDate); - tempCal.set(Calendar.MONTH, month - 1); - tempCal.set(Calendar.DAY_OF_MONTH, day); - tempCal.set(Calendar.HOUR_OF_DAY, 0); - tempCal.set(Calendar.MINUTE, 0); - tempCal.set(Calendar.SECOND, 0); - tempCal.set(Calendar.MILLISECOND, 0); - if (tempCal.getTime().before(curDate)) { - orderCal.add(Calendar.YEAR, 1); - } - parsed = true; - } - } - - if (!parsed) { - return false; - } - - // 标准化目标日期(清除时分秒) Calendar targetCal = Calendar.getInstance(); targetCal.setTime(curDate); targetCal.set(Calendar.HOUR_OF_DAY, 0); diff --git a/excel-handle/src/main/java/com/ruoyi/excel/wecom/helper/HandleAllDataV2.java b/excel-handle/src/main/java/com/ruoyi/excel/wecom/helper/HandleAllDataV2.java index ce528c0..4460a97 100644 --- a/excel-handle/src/main/java/com/ruoyi/excel/wecom/helper/HandleAllDataV2.java +++ b/excel-handle/src/main/java/com/ruoyi/excel/wecom/helper/HandleAllDataV2.java @@ -580,68 +580,22 @@ public class HandleAllDataV2 { } /** - * 检查成交日期是否匹配 + * 检查成交日期是否匹配(使用finishDate字段) */ private boolean matchesQValue(CustomerExportData data, Date curDate) { - String orderDate = data.getTagGroup4(); - if (orderDate == null || orderDate.trim().isEmpty()) { + Date finishDate = data.getFinishDate(); + if (finishDate == null) { return false; } try { - String[] dates = orderDate.trim().split(","); - String lastDateStr = dates[dates.length - 1].trim(); - Calendar orderCal = Calendar.getInstance(); - orderCal.setTime(curDate); + orderCal.setTime(finishDate); orderCal.set(Calendar.HOUR_OF_DAY, 0); orderCal.set(Calendar.MINUTE, 0); orderCal.set(Calendar.SECOND, 0); orderCal.set(Calendar.MILLISECOND, 0); - boolean parsed = false; - - // 格式1: 2026/2/24周二 - java.util.regex.Pattern fullDatePattern = java.util.regex.Pattern.compile("(\\d{4})[/\\-](\\d{1,2})[/\\-](\\d{1,2})"); - java.util.regex.Matcher fullDateMatcher = fullDatePattern.matcher(lastDateStr); - if (fullDateMatcher.find()) { - int year = Integer.parseInt(fullDateMatcher.group(1)); - int month = Integer.parseInt(fullDateMatcher.group(2)); - int day = Integer.parseInt(fullDateMatcher.group(3)); - orderCal.set(Calendar.YEAR, year); - orderCal.set(Calendar.MONTH, month - 1); - orderCal.set(Calendar.DAY_OF_MONTH, day); - parsed = true; - } - - // 格式2: 1.7-小雅初中公众号K 或 2.3 - if (!parsed) { - java.util.regex.Pattern monthDayPattern = java.util.regex.Pattern.compile("^(\\d{1,2})[.\\-/](\\d{1,2})"); - java.util.regex.Matcher monthDayMatcher = monthDayPattern.matcher(lastDateStr); - if (monthDayMatcher.find()) { - int month = Integer.parseInt(monthDayMatcher.group(1)); - int day = Integer.parseInt(monthDayMatcher.group(2)); - orderCal.set(Calendar.MONTH, month - 1); - orderCal.set(Calendar.DAY_OF_MONTH, day); - Calendar tempCal = Calendar.getInstance(); - tempCal.setTime(curDate); - tempCal.set(Calendar.MONTH, month - 1); - tempCal.set(Calendar.DAY_OF_MONTH, day); - tempCal.set(Calendar.HOUR_OF_DAY, 0); - tempCal.set(Calendar.MINUTE, 0); - tempCal.set(Calendar.SECOND, 0); - tempCal.set(Calendar.MILLISECOND, 0); - if (tempCal.getTime().before(curDate)) { - orderCal.add(Calendar.YEAR, 1); - } - parsed = true; - } - } - - if (!parsed) { - return false; - } - Calendar targetCal = Calendar.getInstance(); targetCal.setTime(curDate); targetCal.set(Calendar.HOUR_OF_DAY, 0);