计算当日报表数据
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
package com.rj.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.rj.entity.LbDailyUserTradeReport;
|
||||
import com.rj.mapper.LbDailyUserTradeReportMapper;
|
||||
import com.rj.service.ILbDailyUserTradeReportService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 当天用户交易报表 服务实现类
|
||||
* </p>
|
||||
*/
|
||||
@Service
|
||||
public class LbDailyUserTradeReportServiceImpl extends ServiceImpl<LbDailyUserTradeReportMapper, LbDailyUserTradeReport>
|
||||
implements ILbDailyUserTradeReportService {
|
||||
}
|
||||
@@ -35,6 +35,8 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -75,6 +77,15 @@ public class LbDailyUserTradeServiceImpl extends ServiceImpl<LbDailyUserTradeMap
|
||||
result.put("message", "defaultReportDate 格式错误,请使用 yyyy-MM-dd");
|
||||
return result;
|
||||
}
|
||||
} else {
|
||||
// 未传导入日期时,尝试从文件名中提取 yyyy-MM-dd 作为导入日期
|
||||
fallbackReportDate = extractDateFromFilename(originalFilename);
|
||||
if (fallbackReportDate != null) {
|
||||
log.info("未提供 defaultReportDate,已从文件名解析报表日期,fileName={}, reportDate={}",
|
||||
originalFilename, fallbackReportDate);
|
||||
} else {
|
||||
log.info("未提供 defaultReportDate,且文件名未包含日期,将使用当前日期作为报表日期,fileName={}", originalFilename);
|
||||
}
|
||||
}
|
||||
|
||||
List<LbDailyUserTrade> importList = new ArrayList<>();
|
||||
@@ -488,4 +499,32 @@ public class LbDailyUserTradeServiceImpl extends ServiceImpl<LbDailyUserTradeMap
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 从文件名中提取 yyyy-MM-dd 格式的日期,例如:
|
||||
* 用户下单统计表_2026-04-23.xlsx -> 2026-04-23
|
||||
*/
|
||||
private LocalDate extractDateFromFilename(String fileName) {
|
||||
if (fileName == null) {
|
||||
return null;
|
||||
}
|
||||
// 只看文件名本身,去掉路径
|
||||
String simpleName = fileName;
|
||||
int slashIdx = Math.max(simpleName.lastIndexOf('/'), simpleName.lastIndexOf('\\'));
|
||||
if (slashIdx >= 0 && slashIdx + 1 < simpleName.length()) {
|
||||
simpleName = simpleName.substring(slashIdx + 1);
|
||||
}
|
||||
// 匹配第一个 yyyy-MM-dd
|
||||
Pattern pattern = Pattern.compile("(\\d{4}-\\d{2}-\\d{2})");
|
||||
Matcher matcher = pattern.matcher(simpleName);
|
||||
if (matcher.find()) {
|
||||
String dateStr = matcher.group(1);
|
||||
try {
|
||||
return LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
||||
} catch (Exception ignore) {
|
||||
// 忽略解析异常,返回 null 走默认逻辑
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user