From a2c476d5c383f3529848d63b080b250f178dca9b Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Thu, 13 Aug 2026 18:20:30 +0800 Subject: [PATCH] job --- .../job/EvalProjectProcessWaringTaskJob.java | 68 +++++++++++++------ 1 file changed, 48 insertions(+), 20 deletions(-) diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/job/EvalProjectProcessWaringTaskJob.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/job/EvalProjectProcessWaringTaskJob.java index b9f2b3ad..d91171f2 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/job/EvalProjectProcessWaringTaskJob.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/job/EvalProjectProcessWaringTaskJob.java @@ -48,35 +48,60 @@ public class EvalProjectProcessWaringTaskJob implements Job { param = XxlJobHelper.getJobParam(); log.info("机构项目风险预警-未归档检查开始"); - // 1. 查询签字完成未归档的项目(签字时间在3~210天前) - List controlList = evalProcessControlMapper.selectList( - new LambdaQueryWrapper() - .between(EvalProcessControlDO::getControlTime, - LocalDateTime.now().minusDays(210), - LocalDateTime.now().minusDays(3)) - .eq(EvalProcessControlDO::getArchiveFlag, 0) - .eq(EvalProcessControlDO::getDeleteEnum, BooleanQAEnum.FALSE.getValue())); - + // 1. 查询签字完成未归档的项目 + List controlList = findUnarchivedControls(); if (controlList.isEmpty()) { log.info("机构项目风险预警-未归档检查完成,无待检查项目"); return ReturnT.SUCCESS; } - // 2. 一次性查询已存在预警的 projectId + // 2. 查询已存在预警的 projectId + Set existingProjectIds = findExistingWarnedProjectIds(controlList); + + // 3. 构建预警记录并批量保存 + List toInsert = buildWarnings(controlList, existingProjectIds); + batchSave(toInsert); + + log.info("机构项目风险预警-未归档检查完成,新增{}条(共{}条)", toInsert.size(), controlList.size()); + return ReturnT.SUCCESS; + } + + /** + * 查询签字完成未归档的项目(签字时间在3~180天前) + */ + private List findUnarchivedControls() { + return evalProcessControlMapper.selectList( + new LambdaQueryWrapper() + .between(EvalProcessControlDO::getControlTime, + LocalDateTime.now().minusDays(180), + LocalDateTime.now().minusDays(3)) + .eq(EvalProcessControlDO::getArchiveFlag, 0) + .eq(EvalProcessControlDO::getDeleteEnum, BooleanQAEnum.FALSE.getValue())); + } + + /** + * 查询已存在未归档预警的 projectId 集合 + */ + private Set findExistingWarnedProjectIds(List controlList) { List projectIds = controlList.stream() .map(EvalProcessControlDO::getProjectId) .collect(Collectors.toList()); - Set existingProjectIds = evalProjectOrgWaringMapper.selectList( - new LambdaQueryWrapper() - .select(EvalProjectOrgWaringDO::getProjectId) - .in(EvalProjectOrgWaringDO::getProjectId, projectIds) - .eq(EvalProjectOrgWaringDO::getWarningType, - OrgProjectWarningTypeEnum.NOT_ARCHIVED.getCode())) + return evalProjectOrgWaringMapper.selectList( + new LambdaQueryWrapper() + .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 buildWarnings(List controlList, + Set existingProjectIds) { List 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 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; } }