修改计算逻辑
This commit is contained in:
parent
7e9422281b
commit
1451698d66
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue