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<PreventRiskDangerCheckLog> tasks = preventRiskDangerCheckLogService.listRectifyReportTask();
|
List<Long> taskIds = new ArrayList<>();
|
//获取上报数据对象
|
List<PreventCJReportCheckRecordFromTask> CJRecordFromTaskLists = new ArrayList<>();
|
int tag = 0;
|
// HandlerReportParam handlerReportParam = new HandlerReportParam();
|
// List<HandlerReportParam> handlerReportParamList = new ArrayList<>();
|
if (ObjectUtils.isNotEmpty(tasks)){
|
//获取信息
|
List<User> allUserList = trUserService.getAllUser();
|
List<PreventTaskType> allTaskTypeList = taskTypeService.getAllTaskTypeList();
|
//遍历,封装数据
|
for (PreventRiskDangerCheckLog task : tasks) {
|
//获取任务记录主表信息
|
HiddenDangerCheck hiddenDangerCheckById = trHiddenDangerCheckService.getHiddenDangerCheckById(task.getCheckId());
|
//如果已经执行过,进入方法
|
if (Integer.valueOf(hiddenDangerCheckById.getScheduleCheckStatus()) == 1){
|
|
List<HiddenDangerCheckPoint> hiddenDangerCheckPointList = trHiddenDangerCheckPointService.getHiddenDangerCheckPointByCheckId(task.getCheckId());
|
|
//避免个别任务无检查点的情况
|
if (ObjectUtils.isEmpty(hiddenDangerCheckPointList)) {
|
logger.info("【双重预防】排查任务记录CJ:异常,无检查点...");
|
}else {
|
|
int i = 0;
|
List<PreventRiskJobAndMeasure> 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("排查任务记录数据上报已关闭");
|
}
|
|
}
|
}
|