package com.ruoyi.doublePrevention.scheduls; import com.ruoyi.doublePrevention.entity.CJReport.PreventCJReportCheckRecordFromTask; import com.ruoyi.doublePrevention.entity.CJReport.PreventCJReportCheckTaskFromWork; import com.ruoyi.doublePrevention.entity.CJReport.PreventCJReportDangerInfo; import com.ruoyi.doublePrevention.entity.*; import com.ruoyi.doublePrevention.enums.E; import com.ruoyi.doublePrevention.enums.SyncEnum; import com.ruoyi.doublePrevention.exception.AusinessException; import com.ruoyi.doublePrevention.repository.param.HandlerReportParam; import com.ruoyi.doublePrevention.service.baseService.*; import com.ruoyi.project.system.dept.service.IDeptService; import com.ruoyi.project.system.user.domain.User; import com.ruoyi.project.system.user.service.IUserService; import com.ruoyi.project.tr.HiddenDangerCheckJob.domain.HiddenDangerCheckJob; import com.ruoyi.project.tr.HiddenDangerCheckJob.service.IHiddenDangerCheckJobService; import com.ruoyi.project.tr.hiddenDangerCheck.domain.HiddenDangerCheck; import com.ruoyi.project.tr.hiddenDangerCheck.service.IHiddenDangerCheckService; import com.ruoyi.project.tr.hiddenDangerCheckPoint.domain.HiddenDangerCheckPoint; import com.ruoyi.project.tr.hiddenDangerCheckPoint.service.IHiddenDangerCheckPointService; import com.ruoyi.project.tr.riskList.service.IRiskListService; import org.apache.commons.lang3.ObjectUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.UUID; @Component public class RectifyDateSchedule { private final Logger logger = LoggerFactory.getLogger(this.getClass()); public static SimpleDateFormat startFormat = new SimpleDateFormat("yyyy-MM-dd 06:30:00"); public static SimpleDateFormat endFormat = new SimpleDateFormat("yyyy-MM-dd 23:59:59"); public static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Autowired private PreventReportConfigService preventReportConfigService; @Autowired private PreventCJReportRiskAnaUnitService CJRiskAnaUnitService; @Autowired private PreventCJReportRiskEventService CJEventService; @Autowired private PreventCJReportRiskControlMeasureService CJMeasureService; @Autowired private PreventCJReportCheckTaskFromWorkService CJTaskFromWorkService; @Autowired private PreventCJReportCheckRecordFromTaskService CJTaskRecordService; @Autowired private PreventCJReportDangerInfoService CJDangerInfoService; @Autowired private PreventCJReportPointService CJPointService; @Autowired private IDeptService trDeptService; //部门服务 @Autowired private IUserService trUserService; //用户服务 @Autowired private IRiskListService trRiskAnaUnitService; //风险设备、分析单元 @Autowired private PreventRiskUnitUuidService preventRiskUnitUuidService; //风险设备、分析单元附属表 @Autowired private PreventRiskEventService preventRiskEventService; @Autowired private PreventRiskControlMeasureService preventRiskControlMeasureService; @Autowired private PreventRiskControlTemplateService preventRiskControlTemplateService; @Autowired private IHiddenDangerCheckJobService trHiddenDangerCheckJobService;//排查任务job @Autowired private PreventRiskJobAndMeasureService preventRiskJobAndMeasureService;//排查任务附属表 @Autowired private IHiddenDangerCheckService trHiddenDangerCheckService;//排查任务记录 @Autowired private PreventRiskDangerCheckLogService preventRiskDangerCheckLogService;//排查任务记录附属表 @Autowired private IHiddenDangerCheckPointService trHiddenDangerCheckPointService;//隐患信息上报、整改、验收 @Autowired private PreventRiskDangerInfoService preventRiskDangerInfoService;//隐患信息附属表 @Autowired private PreventRiskCheckUnitService preventRiskCheckUnitService;//管控措施,任务清单对应关系。基础排查点附属表 @Autowired private PreventRiskDangerCheckAndMeasureService riskDangerCheckAndMeasureService;//管控措施,任务清单对应关系。基础排查点附属表 @Autowired private PreventTaskTypeService taskTypeService;//管控措施,任务清单对应关系。基础排查点附属表 @Autowired private PreventOverhaulLogService overhaulLogService; @Autowired private PreventCJReportOverhaulLogService reportOverhaulLogService; @Transactional // @Scheduled(cron = "0/10 * * * * ?") // 30秒 @Scheduled(cron = "0 0 0/3 * * ? ") public void searchReportDate(){ logger.info("【双重预防】纠正..."); int step = 1; String companyCode = "652310082"; /** * 5、排查任务记录数据 PreventReportCheckRecordFromTask * */ //读取安全风险管控措施数据上报主配置信息 PreventReportConfig recordReportConfig = preventReportConfigService.getReportConfigById(SyncEnum.REPORT_CONFIG__CHECK_RECORD.getCode()); //如果安全风险管控措施主配置开启上报 if (recordReportConfig.getReportState().equals(SyncEnum.REPORT_ON.getCode())){ //查询所有 选择上报的数据 && (reportTime == null 或者 reportTime < updateReportDataTime) List tasks = preventRiskDangerCheckLogService.listRectifyReportTask(); List taskIds = new ArrayList<>(); //获取上报数据对象 List CJRecordFromTaskLists = new ArrayList<>(); int tag = 0; // HandlerReportParam handlerReportParam = new HandlerReportParam(); // List handlerReportParamList = new ArrayList<>(); if (ObjectUtils.isNotEmpty(tasks)){ //获取信息 List allUserList = trUserService.getAllUser(); List allTaskTypeList = taskTypeService.getAllTaskTypeList(); //遍历,封装数据 for (PreventRiskDangerCheckLog task : tasks) { //获取任务记录主表信息 HiddenDangerCheck hiddenDangerCheckById = trHiddenDangerCheckService.getHiddenDangerCheckById(task.getCheckId()); //如果已经执行过,进入方法 if (Integer.valueOf(hiddenDangerCheckById.getScheduleCheckStatus()) == 1){ List hiddenDangerCheckPointList = trHiddenDangerCheckPointService.getHiddenDangerCheckPointByCheckId(task.getCheckId()); //避免个别任务无检查点的情况 if (ObjectUtils.isEmpty(hiddenDangerCheckPointList)) { logger.info("【双重预防】排查任务记录CJ:异常,无检查点..."); }else { int i = 0; List rectifyJobDataList = preventRiskJobAndMeasureService.getRectifyJobData(task.getJobId()); HiddenDangerCheckJob jobById = trHiddenDangerCheckJobService.getJobById(task.getJobId()); for (HiddenDangerCheckPoint hiddenDangerCheckPoint : hiddenDangerCheckPointList) { //获取上报数据对象 PreventCJReportCheckRecordFromTask CJRecordFromTask = new PreventCJReportCheckRecordFromTask(); CJRecordFromTask.setCheckStatus("0");// 0-正常;1-存在隐患;2-未处理;3-其他 if (Integer.valueOf(hiddenDangerCheckPoint.getWhetherDanger()) == 1){ CJRecordFromTask.setCheckStatus("1");// 0-正常;1-存在隐患;2-未处理;3-其他 } User createUser = new User(); User updateUser = new User(); // todo 取出所有用户信息,再循环在匹配 for (User user : allUserList) { if (hiddenDangerCheckById.getCreateBy().equals(user.getLoginName())){ createUser = user; } if (hiddenDangerCheckById.getUpdateBy().equals(user.getLoginName())){ updateUser = user; } } if(ObjectUtils.isEmpty(createUser)){ for (User user : allUserList) { if (hiddenDangerCheckById.getCreateBy().equals(user.getUserName())){ createUser = user; } } } //封装上报昌吉州的任务数据 CJRecordFromTask.setId(UUID.randomUUID().toString()); CJRecordFromTask.setCompanyCode(companyCode); CJRecordFromTask.setCreateBy(createUser.getUserName()); CJRecordFromTask.setCreateDate(hiddenDangerCheckById.getCreateTime()); CJRecordFromTask.setCreateByMobile(createUser.getPhonenumber()); if (ObjectUtils.isEmpty(updateUser)){ CJRecordFromTask.setUpdateBy(createUser.getUserName()); CJRecordFromTask.setUpdateDate(hiddenDangerCheckById.getCreateTime()); CJRecordFromTask.setUpdateByMobile(createUser.getPhonenumber()); }else { CJRecordFromTask.setUpdateBy(updateUser.getUserName()); CJRecordFromTask.setUpdateDate(hiddenDangerCheckById.getUpdateTime()); CJRecordFromTask.setUpdateByMobile(updateUser.getPhonenumber()); } if (task.getReportStatus().equals(SyncEnum.SYNC_EXEC_SUCCESS.getCode())){ CJRecordFromTask.setDeleted("2");//数据更新状态标识,目前仅昌吉州需要 2022-08-10 }else { CJRecordFromTask.setDeleted("0"); } CJRecordFromTask.setReportStatus(SyncEnum.SYNC_WAIT_EXEC.getCode()); CJRecordFromTask.setReportTime(null); CJRecordFromTask.setZhunReportStatus(SyncEnum.SYNC_WAIT_EXEC.getCode()); CJRecordFromTask.setZhunReportTime(null); CJRecordFromTask.setDataSource((byte) 1); CJRecordFromTask.setCheckTaskId(rectifyJobDataList.get(i).getJobUuid()); CJRecordFromTask.setCheckTime(hiddenDangerCheckById.getCheckTime()); CJRecordFromTask.setTaskId(task.getCheckId()); //第二版标准新增 CJRecordFromTask.setMobileCode(task.getMobileCode().toString()); int typeTag = 0; // // todo 取出所有任务信息表,再循环在匹配 for (PreventTaskType taskType : allTaskTypeList) { if (taskType.getJobId().equals(task.getJobId())){ if (taskType.getType()!= 0) { typeTag = 1; } } } CJRecordFromTask.setDefend(String.valueOf(typeTag)); //封装数据 CJRecordFromTaskLists.add(CJRecordFromTask); i++; } } int i = 1; taskIds.add(task.getId()); tag ++; } System.out.println("【##】5.数据封装完成..."); } }else { logger.info("【双重预防】当前无纠正记录需要处理"); } if (CJRecordFromTaskLists.size() > 0){ logger.info("【双重预防】纠正记录CJ:数据处理..."); //设置原始数据状态 int taskUpdateResult = preventRiskDangerCheckLogService.updateTaskReportStatusByList(taskIds); if (taskUpdateResult < taskIds.size()){ throw new AusinessException(E.ADD_FAIL.getCode(), "排查任务记录原始数据更新失败, 取消操作"); } int result = CJTaskRecordService.insertRecordList(CJRecordFromTaskLists); if (result < CJRecordFromTaskLists.size()){ throw new AusinessException(E.ADD_FAIL.getCode(), "排查任务记录插入失败, 取消操作"); } } step = 6; }else { step = 6; logger.info("排查任务记录数据上报已关闭"); } } }