job
parent
6a84368ea0
commit
a2c476d5c3
|
|
@ -48,25 +48,45 @@ 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(
|
||||
return evalProjectOrgWaringMapper.selectList(
|
||||
new LambdaQueryWrapper<EvalProjectOrgWaringDO>()
|
||||
.select(EvalProjectOrgWaringDO::getProjectId)
|
||||
.in(EvalProjectOrgWaringDO::getProjectId, projectIds)
|
||||
|
|
@ -75,8 +95,13 @@ public class EvalProjectProcessWaringTaskJob implements Job {
|
|||
.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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue