计算当日报表数据

This commit is contained in:
2026-04-25 16:27:57 +08:00
parent bdaca758c2
commit 46dec3fadb
10 changed files with 497 additions and 2 deletions

View File

@@ -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 {
}

View File

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