修改计算逻辑

This commit is contained in:
MerCry 2026-03-16 16:33:07 +08:00
parent 7e9422281b
commit 1451698d66
2 changed files with 7 additions and 109 deletions

View File

@ -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);

View File

@ -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);