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