package com.ruoyi.doublePrevention.scheduls;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.doublePrevention.entity.ZDReport.HandlerZDReportParam;
|
import com.ruoyi.doublePrevention.entity.ZDReport.ZDTaskDangerLogDTO;
|
import com.ruoyi.doublePrevention.entity.ZDReport.ZDTaskLogDTO;
|
import com.ruoyi.doublePrevention.enums.SyncEnum;
|
import com.ruoyi.project.tr.specialCheck.domin.TbSpecialCheckScoreAndDangerLog;
|
import com.ruoyi.project.tr.specialCheck.domin.TbSpecialCheckTaskLog;
|
import com.ruoyi.project.tr.specialCheck.mapper.TbSpecialCheckScoreAndDangerLogMapper;
|
import com.ruoyi.project.tr.specialCheck.mapper.TbSpecialCheckTaskLogMapper;
|
import lombok.extern.slf4j.Slf4j;
|
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.io.BufferedReader;
|
import java.io.InputStream;
|
import java.io.InputStreamReader;
|
import java.io.OutputStream;
|
import java.net.HttpURLConnection;
|
import java.net.URL;
|
import java.nio.charset.StandardCharsets;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
import static com.ruoyi.common.utils.Threads.sleep;
|
|
@Component
|
@Slf4j
|
public class ZhunDongTaskLogSchedule {
|
|
private static final String TOKEN = "030B6744-EECB-4732-B679-280373E7E575";
|
private static final String URL = "http://218.31.50.112:8087";
|
// private static final String TOKEN_PRE = "token";
|
@Autowired
|
private TbSpecialCheckTaskLogMapper taskSpecialLogMapper;
|
|
@Autowired
|
private TbSpecialCheckScoreAndDangerLogMapper tbSpecialCheckScoreAndDangerLogMapper;
|
|
|
@Scheduled(cron = "15 11 0/2 * * ? ")
|
//@Scheduled(cron = "0 0/2 * * * ? ")
|
public void updateZhunDongTASkLogReportStatus() {
|
// 准东基础数据推送
|
|
log.info("【AA】开始推送准东专项数据..." + DateUtils.dateTimeNow());
|
//专项检查情况记录
|
ZDCheckRecordLogWork();
|
sleep(5000);
|
//专项隐患
|
ZDCheckDangerLogWork();
|
|
}
|
|
|
@Transactional
|
public void ZDCheckRecordLogWork() {
|
HttpURLConnection con = null;
|
BufferedReader buffer = null;
|
int responseCode = 200;
|
/**
|
* 1、专项检查情况记录数据
|
* */
|
log.info("【QQ】专项检查情况记录数据-处理数据...");
|
List<TbSpecialCheckTaskLog> taskLogLists = taskSpecialLogMapper.listZDCheckRecordLog();
|
|
if (ObjectUtils.isNotEmpty(taskLogLists)) {
|
List<ZDTaskLogDTO> zdTaskLogDTOS = new ArrayList<>();
|
for (TbSpecialCheckTaskLog specialCheckTaskLog : taskLogLists) {
|
ZDTaskLogDTO zdTaskLogDTO = new ZDTaskLogDTO();
|
zdTaskLogDTO.setId(specialCheckTaskLog.getId());
|
zdTaskLogDTO.setHazard_code(specialCheckTaskLog.getHazardCode());
|
zdTaskLogDTO.setTask_id(specialCheckTaskLog.getTaskId());
|
zdTaskLogDTO.setCheck_type(specialCheckTaskLog.getCheckType());
|
zdTaskLogDTO.setCheck_date(DateUtils.parseDateToStrLocal(DateUtils.YYYYMMDD, specialCheckTaskLog.getCheckDate()));
|
zdTaskLogDTO.setCreate_date(DateUtils.parseDateToStrLocal(DateUtils.YYYYMMDDHHMMSS, specialCheckTaskLog.getCreateDate()));
|
zdTaskLogDTO.setUpdate_date(DateUtils.parseDateToStr(DateUtils.YYYYMMDDHHMMSS, new Date()));
|
zdTaskLogDTO.setCreate_by(specialCheckTaskLog.getCreateBy());
|
zdTaskLogDTO.setUpdate_by(specialCheckTaskLog.getUpdateBy());
|
zdTaskLogDTO.setDeleted(specialCheckTaskLog.getDeleted().toString());
|
zdTaskLogDTOS.add(zdTaskLogDTO);
|
}
|
|
log.info("【【【QQ】专项检查情况记录数据】】" + JSONObject.toJSONString(zdTaskLogDTOS));
|
//加密数据
|
|
StringBuffer eventResultBuffer = null;
|
//上报数据
|
try {
|
URL url = new URL(URL + "/api/wwyt/tb_base_check_record_List");
|
//得到连接对象
|
con = (HttpURLConnection) url.openConnection();
|
// 设置请求方式和参数
|
con.setRequestMethod("POST");
|
con.setDoOutput(true);
|
con.setDoInput(true);
|
con.setUseCaches(false);
|
con.setRequestProperty("token", TOKEN);
|
con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
|
// 发送请求体
|
try (OutputStream os = con.getOutputStream()) {
|
os.write(JSON.toJSONString(zdTaskLogDTOS).getBytes(StandardCharsets.UTF_8));
|
}
|
//得到响应码
|
responseCode = con.getResponseCode();
|
//确认响应流不为空
|
if (responseCode == HttpURLConnection.HTTP_OK) {
|
//得到响应流
|
InputStream inputStream = con.getInputStream();
|
//将响应流转换成字符串
|
eventResultBuffer = new StringBuffer();
|
String line;
|
buffer = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
|
while ((line = buffer.readLine()) != null) {
|
eventResultBuffer.append(line);
|
}
|
log.info("【QQ】专项检查情况记录数据result:" + eventResultBuffer.toString());
|
|
JSONObject jsonObject = JSONObject.parseObject(eventResultBuffer.toString());
|
if (jsonObject.getInteger("status") == 200) {
|
String message = jsonObject.getString("message");
|
if (message.contains("失效0条")) {
|
for (TbSpecialCheckTaskLog tbSpecialCheckTaskLog : taskLogLists) {
|
HandlerZDReportParam handlerZDReportParam = new HandlerZDReportParam();
|
//封装数据
|
handlerZDReportParam.setId(tbSpecialCheckTaskLog.getId());
|
handlerZDReportParam.setZhunReportStatus(SyncEnum.SYNC_EXEC_SUCCESS.getCode());
|
handlerZDReportParam.setZhunReportTime(new Date());
|
taskSpecialLogMapper.updateEventReportStatusZhunDong(handlerZDReportParam);
|
}
|
}
|
|
} else {
|
log.info("【QQ】专项检查情况记录数据推送数据失败..." + eventResultBuffer);
|
}
|
|
}
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
log.info("【QQ】专项检查情况记录数据推送数据结束...");
|
} else {
|
log.info("【QQ】专项检查情况记录数据无可推数据");
|
}
|
}
|
|
|
@Transactional
|
public void ZDCheckDangerLogWork() {
|
HttpURLConnection con = null;
|
BufferedReader buffer = null;
|
int responseCode = 200;
|
/**
|
* 1、专项检查隐患信息
|
* */
|
log.info("【PP】专项检查隐患信息数据-处理数据...");
|
List<TbSpecialCheckScoreAndDangerLog> dangerLogs = tbSpecialCheckScoreAndDangerLogMapper.listCheckDangerList();
|
|
if (ObjectUtils.isNotEmpty(dangerLogs)) {
|
List<ZDTaskDangerLogDTO> zdTaskDangerLogDTOS = new ArrayList<>();
|
for (TbSpecialCheckScoreAndDangerLog dangerLog : dangerLogs) {
|
ZDTaskDangerLogDTO taskDangerLogDTO = new ZDTaskDangerLogDTO();
|
taskDangerLogDTO.setId(dangerLog.getId());
|
taskDangerLogDTO.setDanger_id(dangerLog.getDangerId());
|
taskDangerLogDTO.setTask_id(dangerLog.getTaskId());
|
taskDangerLogDTO.setCheck_type(dangerLog.getCheckType());
|
taskDangerLogDTO.setCheck_date(DateUtils.parseDateToStrLocal(DateUtils.YYYYMMDD, dangerLog.getCheckDate()));
|
taskDangerLogDTO.setCheck_pay(dangerLog.getCheckPay());
|
taskDangerLogDTO.setCheck_item_id(dangerLog.getCheckItemId());
|
taskDangerLogDTO.setCheck_score_id(dangerLog.getCheckScoreId());
|
taskDangerLogDTO.setHarm_type(dangerLog.getHarmType());
|
taskDangerLogDTO.setCreate_date(DateUtils.parseDateToStrLocal(DateUtils.YYYYMMDDHHMMSS, dangerLog.getCreateDate()));
|
taskDangerLogDTO.setUpdate_date(DateUtils.parseDateToStr(DateUtils.YYYYMMDDHHMMSS, new Date()));
|
taskDangerLogDTO.setCreate_by(dangerLog.getCreateBy());
|
taskDangerLogDTO.setUpdate_by(dangerLog.getUpdateBy());
|
taskDangerLogDTO.setDeleted(dangerLog.getDeleted().toString());
|
|
zdTaskDangerLogDTOS.add(taskDangerLogDTO);
|
}
|
|
log.info("【【【PP】专项检查隐患信息数据】】" + JSONObject.toJSONString(zdTaskDangerLogDTOS));
|
//加密数据
|
|
StringBuffer eventResultBuffer = null;
|
//上报数据
|
try {
|
URL url = new URL(URL + "/api/wwyt/tb_base_check_danger_List");
|
//得到连接对象
|
con = (HttpURLConnection) url.openConnection();
|
// 设置请求方式和参数
|
con.setRequestMethod("POST");
|
con.setDoOutput(true);
|
con.setDoInput(true);
|
con.setUseCaches(false);
|
con.setRequestProperty("token", TOKEN);
|
con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
|
// 发送请求体
|
try (OutputStream os = con.getOutputStream()) {
|
os.write(JSON.toJSONString(zdTaskDangerLogDTOS).getBytes(StandardCharsets.UTF_8));
|
}
|
//得到响应码
|
responseCode = con.getResponseCode();
|
//确认响应流不为空
|
if (responseCode == HttpURLConnection.HTTP_OK) {
|
//得到响应流
|
InputStream inputStream = con.getInputStream();
|
//将响应流转换成字符串
|
eventResultBuffer = new StringBuffer();
|
String line;
|
buffer = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
|
while ((line = buffer.readLine()) != null) {
|
eventResultBuffer.append(line);
|
}
|
log.info("【PP】专项检查隐患信息数据result:" + eventResultBuffer.toString());
|
|
JSONObject jsonObject = JSONObject.parseObject(eventResultBuffer.toString());
|
if (jsonObject.getInteger("status") == 200) {
|
String message = jsonObject.getString("message");
|
if (message.contains("失效0条")) {
|
for (TbSpecialCheckScoreAndDangerLog scoreAndDangerLog : dangerLogs) {
|
HandlerZDReportParam handlerZDReportParam = new HandlerZDReportParam();
|
//封装数据
|
handlerZDReportParam.setId(scoreAndDangerLog.getId());
|
handlerZDReportParam.setZhunReportStatus(SyncEnum.SYNC_EXEC_SUCCESS.getCode());
|
handlerZDReportParam.setZhunReportTime(new Date());
|
tbSpecialCheckScoreAndDangerLogMapper.updateEventReportStatusZhunDong(handlerZDReportParam);
|
}
|
}
|
|
} else if (jsonObject.getInteger("status") == 500) {
|
String message = jsonObject.getString("message");
|
if (message.contains("不存在danger_id为")) {
|
String s = extractDangerId(message);
|
if (ObjectUtils.isNotEmpty(s)) {
|
HandlerZDReportParam handlerZDReportParam = new HandlerZDReportParam();
|
//封装数据
|
handlerZDReportParam.setId(s);
|
handlerZDReportParam.setZhunReportStatus(SyncEnum.SYNC_EXEC_FAIL.getCode());
|
handlerZDReportParam.setZhunReportTime(new Date());
|
tbSpecialCheckScoreAndDangerLogMapper.updateEventReportStatusZhunDongSp(handlerZDReportParam);
|
}
|
}
|
|
|
log.info("【PP】专项检查隐患信息数据推送数据失败..." + eventResultBuffer);
|
} else {
|
log.info("【PP】专项检查隐患信息数据推送数据失败..." + eventResultBuffer);
|
}
|
|
}
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
log.info("【PP】专项检查隐患信息数据推送数据结束...");
|
} else {
|
log.info("【PP】专项检查隐患信息数据无可推数据");
|
}
|
}
|
|
|
public static String extractDangerId(String message) {
|
// 方法1: 使用substring方式提取
|
String prefix = "不存在danger_id为";
|
String suffix = "的隐患";
|
|
if (message.contains(prefix) && message.contains(suffix)) {
|
int startIndex = message.indexOf(prefix) + prefix.length();
|
int endIndex = message.indexOf(suffix);
|
return message.substring(startIndex, endIndex);
|
}
|
return null;
|
// int start = message.indexOf("不存在danger_id为") + "不存在danger_id为".length();
|
// int end = message.indexOf("的隐患");
|
// if (end > start) {
|
// return message.substring(start, end);
|
// }
|
// return null;
|
}
|
}
|