job
parent
e442af88b0
commit
6a84368ea0
|
|
@ -1,5 +1,7 @@
|
||||||
package org.qinan.safetyeval.adapter.job;
|
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.Job;
|
||||||
import com.jjb.saas.framework.job.annotation.JobRegister;
|
import com.jjb.saas.framework.job.annotation.JobRegister;
|
||||||
import com.xxl.job.core.biz.model.ReturnT;
|
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 com.xxl.job.core.handler.annotation.XxlJob;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
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 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
|
* @author ltq
|
||||||
* @since 2026/08/13
|
* @since 2026/08/13
|
||||||
|
|
@ -19,6 +35,8 @@ import org.springframework.stereotype.Component;
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class EvalProjectProcessWaringTaskJob implements Job {
|
public class EvalProjectProcessWaringTaskJob implements Job {
|
||||||
|
|
||||||
|
private final EvalProcessControlMapper evalProcessControlMapper;
|
||||||
|
private final EvalProjectOrgWaringMapper evalProjectOrgWaringMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@XxlJob("org.qinan.safetyeval.adapter.job.EvalProjectProcessWaringTaskJob")
|
@XxlJob("org.qinan.safetyeval.adapter.job.EvalProjectProcessWaringTaskJob")
|
||||||
|
|
@ -28,7 +46,57 @@ public class EvalProjectProcessWaringTaskJob implements Job {
|
||||||
triggerStatus = 1)
|
triggerStatus = 1)
|
||||||
public ReturnT<String> execute(String param) {
|
public ReturnT<String> execute(String param) {
|
||||||
param = XxlJobHelper.getJobParam();
|
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;
|
return ReturnT.SUCCESS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import lombok.RequiredArgsConstructor;
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public enum OrgProjectWarningTypeEnum {
|
public enum OrgProjectWarningTypeEnum {
|
||||||
|
|
||||||
NOT_ARCHIVED("not_archived", "未归档"),
|
NOT_ARCHIVED("not_archived", "过程控制签字完成,超过3天未归档"),
|
||||||
REPORT_OVERDUE("report_overdue", "报告超期"),
|
REPORT_OVERDUE("report_overdue", "报告超期"),
|
||||||
CORPORATE_RECTIFICATION("CORPORATE_RECTIFICATION", "企业整改"),
|
CORPORATE_RECTIFICATION("CORPORATE_RECTIFICATION", "企业整改"),
|
||||||
MAJOR_HAZARD("MAJOR_HAZARD", "重大隐患"),
|
MAJOR_HAZARD("MAJOR_HAZARD", "重大隐患"),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue