dev-tmp1
luotaiqian 2026-08-13 18:18:20 +08:00
parent e442af88b0
commit 6a84368ea0
2 changed files with 70 additions and 2 deletions

View File

@ -1,5 +1,7 @@
package org.qinan.safetyeval.adapter.job;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.toolkit.Db;
import com.jjb.saas.framework.job.Job;
import com.jjb.saas.framework.job.annotation.JobRegister;
import com.xxl.job.core.biz.model.ReturnT;
@ -7,9 +9,23 @@ import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.qinan.safetyeval.domain.constant.BooleanQAEnum;
import org.qinan.safetyeval.domain.constant.OrgProjectWarningTypeEnum;
import org.qinan.safetyeval.infrastructure.dataobject.EvalProcessControlDO;
import org.qinan.safetyeval.infrastructure.mapper.EvalProcessControlMapper;
import org.qinan.safetyeval.infrastructure.persistence.domainobject.EvalProjectOrgWaringDO;
import org.qinan.safetyeval.infrastructure.persistence.mapper.EvalProjectOrgWaringMapper;
import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
*
*
* @author ltq
* @since 2026/08/13
@ -19,6 +35,8 @@ import org.springframework.stereotype.Component;
@RequiredArgsConstructor
public class EvalProjectProcessWaringTaskJob implements Job {
private final EvalProcessControlMapper evalProcessControlMapper;
private final EvalProjectOrgWaringMapper evalProjectOrgWaringMapper;
@Override
@XxlJob("org.qinan.safetyeval.adapter.job.EvalProjectProcessWaringTaskJob")
@ -28,7 +46,57 @@ public class EvalProjectProcessWaringTaskJob implements Job {
triggerStatus = 1)
public ReturnT<String> execute(String param) {
param = XxlJobHelper.getJobParam();
log.info("机构项目风险预警");
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()));
if (controlList.isEmpty()) {
log.info("机构项目风险预警-未归档检查完成,无待检查项目");
return ReturnT.SUCCESS;
}
// 2. 一次性查询已存在预警的 projectId
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()))
.stream()
.map(EvalProjectOrgWaringDO::getProjectId)
.collect(Collectors.toSet());
// 3. 过滤并批量新增每批100条
List<EvalProjectOrgWaringDO> toInsert = new ArrayList<>();
for (EvalProcessControlDO control : controlList) {
if (existingProjectIds.contains(control.getProjectId())) {
continue;
}
EvalProjectOrgWaringDO waring = new EvalProjectOrgWaringDO();
waring.setProjectId(control.getProjectId());
waring.setOrgId(control.getOrgId());
waring.setTenantId(control.getTenantId());
waring.setWarningType(OrgProjectWarningTypeEnum.NOT_ARCHIVED.getCode());
waring.setTriggerCondition(OrgProjectWarningTypeEnum.NOT_ARCHIVED.getValue());
InsertFieldDefaults.applyIgnoreOrgId(waring);
toInsert.add(waring);
}
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;
}
}

View File

@ -10,7 +10,7 @@ import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public enum OrgProjectWarningTypeEnum {
NOT_ARCHIVED("not_archived", "未归档"),
NOT_ARCHIVED("not_archived", "过程控制签字完成超过3天未归档"),
REPORT_OVERDUE("report_overdue", "报告超期"),
CORPORATE_RECTIFICATION("CORPORATE_RECTIFICATION", "企业整改"),
MAJOR_HAZARD("MAJOR_HAZARD", "重大隐患"),