修改计算逻辑
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) {
|
private boolean matchesQValue(CustomerExportData data,Date curDate) {
|
||||||
String orderDate = data.getTagGroup4(); // Q列:成交日期
|
Date finishDate = data.getFinishDate();
|
||||||
|
if (finishDate == null) {
|
||||||
// 支持多种格式:
|
|
||||||
// 1. 2026/2/24周二 或 2026/2/24 周一
|
|
||||||
// 2. 1.7-小雅初中公众号K 或 1.7
|
|
||||||
// 3. 2.3
|
|
||||||
if (orderDate == null || orderDate.trim().isEmpty()) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// 由于可能是多个逗号拼成的多个日期,任意一个日期符合都可以
|
|
||||||
String[] dates = orderDate.trim().split(",");
|
|
||||||
String lastDateStr = dates[dates.length - 1].trim();
|
|
||||||
|
|
||||||
Calendar orderCal = Calendar.getInstance();
|
Calendar orderCal = Calendar.getInstance();
|
||||||
orderCal.setTime(curDate);
|
orderCal.setTime(finishDate);
|
||||||
orderCal.set(Calendar.HOUR_OF_DAY, 0);
|
orderCal.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
orderCal.set(Calendar.MINUTE, 0);
|
orderCal.set(Calendar.MINUTE, 0);
|
||||||
orderCal.set(Calendar.SECOND, 0);
|
orderCal.set(Calendar.SECOND, 0);
|
||||||
orderCal.set(Calendar.MILLISECOND, 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();
|
Calendar targetCal = Calendar.getInstance();
|
||||||
targetCal.setTime(curDate);
|
targetCal.setTime(curDate);
|
||||||
targetCal.set(Calendar.HOUR_OF_DAY, 0);
|
targetCal.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
|
|
|
||||||
|
|
@ -580,68 +580,22 @@ public class HandleAllDataV2 {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检查成交日期是否匹配
|
* 检查成交日期是否匹配(使用finishDate字段)
|
||||||
*/
|
*/
|
||||||
private boolean matchesQValue(CustomerExportData data, Date curDate) {
|
private boolean matchesQValue(CustomerExportData data, Date curDate) {
|
||||||
String orderDate = data.getTagGroup4();
|
Date finishDate = data.getFinishDate();
|
||||||
if (orderDate == null || orderDate.trim().isEmpty()) {
|
if (finishDate == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
String[] dates = orderDate.trim().split(",");
|
|
||||||
String lastDateStr = dates[dates.length - 1].trim();
|
|
||||||
|
|
||||||
Calendar orderCal = Calendar.getInstance();
|
Calendar orderCal = Calendar.getInstance();
|
||||||
orderCal.setTime(curDate);
|
orderCal.setTime(finishDate);
|
||||||
orderCal.set(Calendar.HOUR_OF_DAY, 0);
|
orderCal.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
orderCal.set(Calendar.MINUTE, 0);
|
orderCal.set(Calendar.MINUTE, 0);
|
||||||
orderCal.set(Calendar.SECOND, 0);
|
orderCal.set(Calendar.SECOND, 0);
|
||||||
orderCal.set(Calendar.MILLISECOND, 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();
|
Calendar targetCal = Calendar.getInstance();
|
||||||
targetCal.setTime(curDate);
|
targetCal.setTime(curDate);
|
||||||
targetCal.set(Calendar.HOUR_OF_DAY, 0);
|
targetCal.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue