双重预防项目-国泰新华二开定制版
kongzy
2024-08-14 135a322f44708b1187d37ea4b6859b5d82113e89
src/main/java/com/ruoyi/project/tr/HiddenDangerCheckJob/util/AbstractQuartzJob.java
@@ -10,12 +10,15 @@
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.security.ShiroUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.doublePrevention.entity.PreventRiskJobAndMeasure;
import com.ruoyi.doublePrevention.service.RiskService;
import com.ruoyi.framework.web.service.JpushService;
import com.ruoyi.project.enumerate.TrRiskTypeEnum;
import com.ruoyi.project.monitor.job.domain.JobLog;
import com.ruoyi.project.monitor.job.service.IJobLogService;
import com.ruoyi.project.tr.HiddenDangerCheckJob.domain.HiddenDangerCheckJob;
import com.ruoyi.project.tr.baseCheckPoint.domain.BaseCheckPoint;
import com.ruoyi.project.tr.baseCheckPoint.mapper.BaseCheckPointMapper;
import com.ruoyi.project.tr.baseCheckPoint.service.IBaseCheckPointService;
import com.ruoyi.project.tr.hiddenDangerCheck.domain.HiddenDangerCheck;
import com.ruoyi.project.tr.hiddenDangerCheck.service.IHiddenDangerCheckService;
@@ -25,11 +28,14 @@
import com.ruoyi.project.tr.riskCheckPoint.service.IRiskCheckPointService;
import com.ruoyi.project.tr.riskEvaluationPlan.domain.RiskEvaluationPlan;
import com.ruoyi.project.tr.riskEvaluationPlan.service.IRiskEvaluationPlanService;
import com.ruoyi.project.tr.riskList.domain.RiskList;
import com.ruoyi.project.tr.riskList.service.IRiskListService;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
import java.util.Date;
@@ -48,11 +54,16 @@
    JpushService jpushService;
    RiskService riskService;
    IRiskListService iRiskListService;
    /**
     * 线程本地变量
     */
    private static ThreadLocal<Date> threadLocal = new ThreadLocal<>();
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
@@ -62,9 +73,8 @@
            before(context, job);
            if (job != null) {
                doExecute(context, job);
            }
            createData(context, job);//生成数据
            createData(context, job);//生成数据  // todo-2022 调用方法  定时隐患排查任务生成
            after(context, job, null);
        } catch (Exception e) {
            log.error("任务执行异常  - :", e);
@@ -98,7 +108,11 @@
        jobLog.setInvokeTarget(job.getInvokeTarget());
        jobLog.setStartTime(startTime);
        jobLog.setEndTime(new Date());
        long runMs = jobLog.getEndTime().getTime() - jobLog.getStartTime().getTime();
        System.out.println(startTime);
        System.out.println(jobLog.getEndTime());
        long runMs = jobLog.getEndTime().getTime() - jobLog.getStartTime().getTime(); // todo -2022 检查此处异常来源
        jobLog.setJobMessage(jobLog.getJobName() + " 总共耗时:" + runMs + "毫秒");
        if (e != null) {
            jobLog.setStatus(Constants.FAIL);
@@ -114,9 +128,12 @@
    /**
     * todo-2022 定时隐患排查任务生成
     * */
    //生成定时隐患排查数据
    protected void createData(JobExecutionContext context, HiddenDangerCheckJob job) {
    @Transactional
    public void createData(JobExecutionContext context, HiddenDangerCheckJob job) {
        Date startTime = threadLocal.get();
        //比较当前时间与执行开始时间
@@ -148,20 +165,38 @@
                hdc.setCheckType(job.getCheckType());//设置排查方式
                if ("1".equals(job.getCheckType())) {
                    hdc.setRiskId(job.getRiskId() != null ? Long.valueOf(job.getRiskId()) : -1);//风险单元ID
                    // todo-2022 , 基础排除清单名称-》改用基础清单表中信息    “需要改动”(现在的情况是,清单调整后,依然使用第一次新建时读取的job的名字)
//                    RiskList infoByRiskId = iRiskListService.getInfoByRiskId(job.getRiskId());
                    hdc.setRiskName(job.getRiskName());//风险单元名称
                    hdc.setDangerPlaceId(job.getRiskPlaceId());//风险单元地点ID
                    hdc.setDangerPlaceName(job.getRiskPlaceName());//风险单元地点名称
                    hdc.setDangerDeptId(job.getRiskDeptId());//隐患责任部门ID
                    hdc.setDangerDeptName(job.getRiskDeptName());//隐患责任部门名称
                    hdc.setRiskType(job.getRiskType());//风险单元类型
//                    //1、校验是否有管控措施
//                    PreventRiskJobAndMeasure jobAndMeasure = riskService.getJobAndMeasure(job.getJobId());
//                    if (jobAndMeasure == null ){
//                        throw new RuntimeException("空任务,不调度");
//                    }
                    // HiddenDangerCheck(隐患排查)写入数据库当中
                    SpringUtils.getBean(IHiddenDangerCheckService.class).insertHiddenDangerCheck(hdc);
                    //HiddenDangerCheckPoint(隐患排查检查点)写入数据库当中
                    hdc.setCompanyId(job.getCompanyId());
                    insertHiddenDangerCheckPoint(hdc);
                    System.out.println("【-】开始调用方法,处理任务附属表");
                    // todo-2022 插入 任务附属表  写到此处
                     hdc.getCheckId();
                    int result = SpringUtils.getBean(RiskService.class).insertDangerCheckLog(hdc.getCheckId(), hdc);
//                    int result = riskService.insertDangerCheckLog(hdc.getCheckId(), hdc);
                    if (result < 1){
                        throw new RuntimeException("定时任务生产失败");
                    }
                    System.out.println("【-】开始调用方法,任务附属表处理完成");
                } else if ("2".equals(job.getCheckType())) {
                    String[] riskIdArray = job.getRiskId().split(",");
@@ -191,6 +226,15 @@
                        hdc.setCompanyId(job.getCompanyId());
                        insertHiddenDangerCheckPoint(hdc);
                        System.out.println("【-】开始调用方法,处理任务附属表");
                        // todo-2022 插入 任务附属表  写到此处
                        hdc.getCheckId();
                        int result = SpringUtils.getBean(RiskService.class).insertDangerCheckLog(hdc.getCheckId(), hdc);
//                    int result = riskService.insertDangerCheckLog(hdc.getCheckId(), hdc);
                        if (result < 1){
                            throw new RuntimeException("定时任务生产失败");
                        }
                        System.out.println("【-】开始调用方法,任务附属表处理完成");
                    }
                }
                scheduleJPush(hdc);//定时任务 推送
@@ -198,8 +242,11 @@
        }
    }
    /**
     * todo-2022 生成核查任务时,添加任务的核查点信息
     * */
    //生成检查点信息
    @Transactional
    public void insertHiddenDangerCheckPoint(HiddenDangerCheck job) {
        if(!StringUtils.isEmpty(job.getRiskType())) {
            //风险单元类型为基础清单
@@ -222,6 +269,16 @@
//                hdcp.setDangerSources(TrHiddenDangerCheckConstants.DANGER_SOURCES_SCHEDULE_PRODUCE);//隐患来源(定时器任务生成)
                        // 写入数据库当中
                        SpringUtils.getBean(IHiddenDangerCheckPointService.class).insertHiddenDangerCheckPoint(hdcp);
                        hdcp.getId();
                        // todo-2022 现场核查清单对应的核查点信息
                        System.out.println("【***】开始调用方法,处理核查点附属表");
                        int result = SpringUtils.getBean(RiskService.class).insertCheckAndMeasure(hdcp.getId(), hdcp);
//                        int result = riskService.insertCheckAndMeasure(hdcp.getId(), hdcp);
                        if (result < 1){
                            throw new RuntimeException("【***】保存核查点关联信息失败");
                        }
                    }
                });
@@ -232,7 +289,6 @@
                RiskCheckPoint rcpQuery = new RiskCheckPoint();
                rcpQuery.setPlanId(plan.getPlanId());
                List<RiskCheckPoint> riskCheckPointList = SpringUtils.getBean(IRiskCheckPointService.class).selectRiskCheckPointList(rcpQuery);
                riskCheckPointList.forEach(rcp -> {
                    if (rcp != null) {
@@ -249,6 +305,14 @@
//                hdcp.setDangerSources(TrHiddenDangerCheckConstants.DANGER_SOURCES_SCHEDULE_PRODUCE);//隐患来源(定时器任务生成)
                        // 写入数据库当中
                        SpringUtils.getBean(IHiddenDangerCheckPointService.class).insertHiddenDangerCheckPoint(hdcp);
                        // todo-2022 现场核查清单对应的核查点信息
                        System.out.println("【***】开始调用方法,处理核查点附属表");
                        int result = SpringUtils.getBean(RiskService.class).insertCheckAndMeasure(hdcp.getId(), hdcp);
//                        int result = riskService.insertCheckAndMeasure(hdcp.getId(), hdcp);
                        if (result < 1){
                            throw new RuntimeException("【***】保存核查点关联信息失败");
                        }
                    }
                });
            }