dev-tmp1
luotaiqian 2026-08-13 18:20:30 +08:00
parent 6a84368ea0
commit a2c476d5c3
1 changed files with 48 additions and 20 deletions

View File

@ -48,35 +48,60 @@ public class EvalProjectProcessWaringTaskJob implements Job {
param = XxlJobHelper.getJobParam();
log.info("机构项目风险预警-未归档检查开始");
// 1. 查询签字完成未归档的项目签字时间在3~210天前
List<EvalProcessControlDO> controlList = evalProcessControlMapper.selectList(
new LambdaQueryWrapper<EvalProcessControlDO>()
.between(EvalProcessControlDO::getControlTime,
LocalDateTime.now().minusDays(210),
LocalDateTime.now().minusDays(3))
.eq(EvalProcessControlDO::getArchiveFlag, 0)
.eq(EvalProcessControlDO::getDeleteEnum, BooleanQAEnum.FALSE.getValue()));
// 1. 查询签字完成未归档的项目
List<EvalProcessControlDO> controlList = findUnarchivedControls();
if (controlList.isEmpty()) {
log.info("机构项目风险预警-未归档检查完成,无待检查项目");
return ReturnT.SUCCESS;
}
// 2. 一次性查询已存在预警的 projectId
// 2. 查询已存在预警的 projectId
Set<Long> existingProjectIds = findExistingWarnedProjectIds(controlList);
// 3. 构建预警记录并批量保存
List<EvalProjectOrgWaringDO> toInsert = buildWarnings(controlList, existingProjectIds);
batchSave(toInsert);
log.info("机构项目风险预警-未归档检查完成,新增{}条(共{}条)", toInsert.size(), controlList.size());
return ReturnT.SUCCESS;
}
/**
* 3~180
*/
private List<EvalProcessControlDO> findUnarchivedControls() {
return evalProcessControlMapper.selectList(
new LambdaQueryWrapper<EvalProcessControlDO>()
.between(EvalProcessControlDO::getControlTime,
LocalDateTime.now().minusDays(180),
LocalDateTime.now().minusDays(3))
.eq(EvalProcessControlDO::getArchiveFlag, 0)
.eq(EvalProcessControlDO::getDeleteEnum, BooleanQAEnum.FALSE.getValue()));
}
/**
* projectId
*/
private Set<Long> findExistingWarnedProjectIds(List<EvalProcessControlDO> controlList) {
List<Long> projectIds = controlList.stream()
.map(EvalProcessControlDO::getProjectId)
.collect(Collectors.toList());
Set<Long> existingProjectIds = evalProjectOrgWaringMapper.selectList(
new LambdaQueryWrapper<EvalProjectOrgWaringDO>()
.select(EvalProjectOrgWaringDO::getProjectId)
.in(EvalProjectOrgWaringDO::getProjectId, projectIds)
.eq(EvalProjectOrgWaringDO::getWarningType,
OrgProjectWarningTypeEnum.NOT_ARCHIVED.getCode()))
return evalProjectOrgWaringMapper.selectList(
new LambdaQueryWrapper<EvalProjectOrgWaringDO>()
.select(EvalProjectOrgWaringDO::getProjectId)
.in(EvalProjectOrgWaringDO::getProjectId, projectIds)
.eq(EvalProjectOrgWaringDO::getWarningType,
OrgProjectWarningTypeEnum.NOT_ARCHIVED.getCode()))
.stream()
.map(EvalProjectOrgWaringDO::getProjectId)
.collect(Collectors.toSet());
}
// 3. 过滤并批量新增每批100条
/**
*
*/
private List<EvalProjectOrgWaringDO> buildWarnings(List<EvalProcessControlDO> controlList,
Set<Long> existingProjectIds) {
List<EvalProjectOrgWaringDO> toInsert = new ArrayList<>();
for (EvalProcessControlDO control : controlList) {
if (existingProjectIds.contains(control.getProjectId())) {
@ -91,12 +116,15 @@ public class EvalProjectProcessWaringTaskJob implements Job {
InsertFieldDefaults.applyIgnoreOrgId(waring);
toInsert.add(waring);
}
return toInsert;
}
/**
* 100
*/
private void batchSave(List<EvalProjectOrgWaringDO> toInsert) {
for (int i = 0; i < toInsert.size(); i += 100) {
Db.saveBatch(toInsert.subList(i, Math.min(i + 100, toInsert.size())), 100);
}
log.info("机构项目风险预警-未归档检查完成,新增{}条(共{}条)", toInsert.size(), controlList.size());
return ReturnT.SUCCESS;
}
}