job
parent
e442af88b0
commit
6a84368ea0
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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", "重大隐患"),
|
||||
|
|
|
|||
Loading…
Reference in New Issue