package com.ruoyi.doublePrevention.scheduls;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.ruoyi.common.utils.BeanCopyUtils;
|
import com.ruoyi.doublePrevention.entity.CJReport.*;
|
import com.ruoyi.doublePrevention.entity.CJReport.CJdto.CJReportResultData;
|
import com.ruoyi.doublePrevention.entity.CJReport.CJdto.Data;
|
import com.ruoyi.doublePrevention.entity.CJReport.CJdto.ErrorMsgDetails;
|
import com.ruoyi.doublePrevention.entity.CJReport.CJdto.HandlerDO.*;
|
import com.ruoyi.doublePrevention.enums.CJReportEnum;
|
import com.ruoyi.doublePrevention.enums.SyncEnum;
|
import com.ruoyi.doublePrevention.repository.param.HandlerCJReportParam;
|
import com.ruoyi.doublePrevention.service.baseService.*;
|
import com.ruoyi.project.tr.report.service.ReportService;
|
import org.apache.commons.lang3.ObjectUtils;
|
import org.bouncycastle.crypto.engines.AESFastEngine;
|
import org.bouncycastle.crypto.modes.GCMBlockCipher;
|
import org.bouncycastle.crypto.params.AEADParameters;
|
import org.bouncycastle.crypto.params.KeyParameter;
|
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.io.*;
|
import java.net.HttpURLConnection;
|
import java.net.URL;
|
import java.nio.charset.StandardCharsets;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
|
@Component
|
public class ExecCJReportDateSchedule {
|
|
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
|
@Autowired
|
private ReportService reportService;
|
|
@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;
|
|
String token = "GT6gGJV7JV";
|
String key = "Bv+NeBolwqg2Pbc1yVwrZA==";
|
String iv = "4QC9V8eAiB7tdlgBkMsTAw==";
|
|
public static final int MAC_BIT_SIZE = 128;
|
|
public static String encrypt(String plainText, byte[] key, byte[] iv) {
|
String sr;
|
try {
|
byte[] plainBytes = plainText.getBytes(StandardCharsets.UTF_8);
|
GCMBlockCipher cipher = new GCMBlockCipher(new
|
AESFastEngine());
|
AEADParameters parameters =
|
new AEADParameters(new KeyParameter(key),
|
MAC_BIT_SIZE, iv, null);
|
cipher.init(true, parameters);
|
byte[] encryptedBytes = new
|
byte[cipher.getOutputSize(plainBytes.length)];
|
int retLen = cipher.processBytes(plainBytes, 0, plainBytes.length,
|
encryptedBytes, 0);
|
cipher.doFinal(encryptedBytes, retLen);
|
sr = Base64.getEncoder().encodeToString(encryptedBytes);
|
} catch (Exception ex) {
|
throw new RuntimeException(ex.getMessage());
|
}
|
return sr;
|
}
|
|
|
@Transactional
|
// @Scheduled(cron = "0 0/1 * * * ?")
|
//@Scheduled(cron = "0/30 * * * * ?")
|
public void execReportDateSchedule() throws UnsupportedEncodingException {
|
logger.info("【####】上报数据开始...");
|
|
HttpURLConnection con = null;
|
BufferedReader buffer = null;
|
int responseCode = 200;
|
|
SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd HH:MM:ss");
|
|
Date date = new Date();
|
//格式化时间,作为token的时间戳
|
SimpleDateFormat tokenDate= new SimpleDateFormat("yyyyMMddHHmmssSSS");
|
String formatDate = tokenDate.format(date);
|
|
logger.info("【token时间】" + formatDate);
|
|
/**
|
* 1、处理安全风险分析单元数据
|
* */
|
|
logger.info("【1】安全风险分析单元-处理数据...");
|
List<PreventCJReportRiskAnaUnit> CJRiskAnaUnits = CJRiskAnaUnitService.listReportUnitDate();
|
if (ObjectUtils.isNotEmpty(CJRiskAnaUnits)){
|
//封装上报数据,时间格式化
|
List<CJReportRiskAnaUnitDTO> list = new ArrayList<>();
|
for (PreventCJReportRiskAnaUnit cjRiskAnaUnit : CJRiskAnaUnits) {
|
CJReportRiskAnaUnitDTO riskAnaUnit = BeanCopyUtils.copyBean(cjRiskAnaUnit, CJReportRiskAnaUnitDTO.class);
|
riskAnaUnit.setCreateDate(dateFormat.format(cjRiskAnaUnit.getCreateDate()));
|
riskAnaUnit.setUpdateDate(dateFormat.format(cjRiskAnaUnit.getUpdateDate()));
|
list.add(riskAnaUnit);
|
}
|
// logger.info("【【原始数据】】" + JSONObject.toJSONString(list));
|
String AESReportUnitDate = encrypt(JSONObject.toJSONString(list), key.getBytes(), iv.getBytes());
|
// logger.info("【【AES加密结果】】"+ AESReportUnitDate);{0JRK`$6X.jpg)min/Desktop/所有桌面文件存放/9}AM56M10$6WX){0JRK`$6X.jpg)
|
StringBuffer unitResultBuffer = null;
|
//上报数据
|
try {
|
URL url = new URL("http://120.71.182.198:9999/v1/data/receive/unitMsg");
|
//得到连接对象
|
con = (HttpURLConnection) url.openConnection();
|
//设置请求类型
|
con.setRequestMethod("POST");
|
//允许写出
|
con.setDoOutput(true);
|
//允许读入
|
con.setDoInput(true);
|
//不使用缓存
|
con.setUseCaches(false);
|
con.setInstanceFollowRedirects(true);
|
//设置请求头
|
con.setRequestProperty("X-Access-Token",token+formatDate.toString());
|
//设置Content-Type,此处根据实际情况确定
|
con.setRequestProperty("Content-Type", "application/json;charset=utf8");
|
|
OutputStream os = con.getOutputStream();
|
Map paraMap = new HashMap();
|
paraMap.put("data", AESReportUnitDate); /**封装数据*/
|
logger.info("【【加密请求体】】" + JSONArray.toJSON(paraMap).toString());
|
//组装入参,设置请求体
|
os.write(JSON.toJSONString(paraMap).getBytes());
|
|
//本段日志,测试成功后,可注释掉
|
if (responseCode == HttpURLConnection.HTTP_OK) {
|
//得到响应流
|
InputStream inputStream = con.getInputStream();
|
//将响应流转换成字符串
|
unitResultBuffer = new StringBuffer();
|
String line;
|
buffer = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
|
while ((line = buffer.readLine()) != null) {
|
unitResultBuffer.append(line);
|
}
|
logger.info("result:" + unitResultBuffer.toString());
|
}
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
//接收返回值,保存返回值
|
List<String> errorIdList= new ArrayList<>();
|
//接收参数,转为对象
|
CJReportResultData CJUnitResult = JSONObject.parseObject(unitResultBuffer.toString(), CJReportResultData.class);
|
// Object parse = JSON.parse(CJUnitResult.getData());
|
//取出需要的data部分,再次转换为对象
|
Data data = JSONObject.parseObject(CJUnitResult.getData(), Data.class);
|
if (ObjectUtils.isNotEmpty(data)){
|
for (ErrorMsgDetails errorMsgDetail : data.getErrorMsgDetails()) {
|
errorIdList.add(errorMsgDetail.getId());
|
}
|
}
|
if (CJUnitResult.getCode().equals(CJReportEnum.SUCCESS.getCode())){
|
logger.info("【#】RiskAnaUnit所有数据全部入库成功");
|
for (PreventCJReportRiskAnaUnit CJRiskAnaUnit : CJRiskAnaUnits) {
|
HandlerCJReportParam handlerCJReportParam = new HandlerCJReportParam();
|
//封装数据
|
handlerCJReportParam.setId(CJRiskAnaUnit.getId());
|
handlerCJReportParam.setReportStatus(SyncEnum.SYNC_EXEC_SUCCESS.getCode());
|
handlerCJReportParam.setReportTime(date);
|
CJRiskAnaUnitService.updateCJReportStatusById(handlerCJReportParam);
|
}
|
}else if (CJUnitResult.getCode().equals(CJReportEnum.SUCESS_AND_FAIL.getCode())){
|
logger.info("【#】RiskAnaUnit部分数据上传失败原因" + CJUnitResult.getErrorMsg());
|
|
CJUnitResult.getData();
|
//遍历数据,设置数据上报成功
|
for (PreventCJReportRiskAnaUnit CJRiskAnaUnit : CJRiskAnaUnits) {
|
HandlerCJReportParam handlerCJReportParam = new HandlerCJReportParam();
|
//封装数据
|
handlerCJReportParam.setId(CJRiskAnaUnit.getId());
|
handlerCJReportParam.setReportStatus(SyncEnum.SYNC_EXEC_SUCCESS.getCode());
|
handlerCJReportParam.setReportTime(date);
|
CJRiskAnaUnitService.updateCJReportStatusById(handlerCJReportParam);
|
}
|
//遍历失败数据,设置数据上报失败
|
for (String failId : errorIdList) {
|
//上报失败
|
HandlerCJReportParam handlerCJReportParam = new HandlerCJReportParam();
|
//封装数据
|
handlerCJReportParam.setId(failId);
|
handlerCJReportParam.setReportStatus(SyncEnum.SYNC_EXEC_FAIL.getCode());
|
handlerCJReportParam.setReportTime(date);
|
CJRiskAnaUnitService.updateCJReportStatusById(handlerCJReportParam);
|
}
|
}
|
else if (CJUnitResult.getCode().equals(CJReportEnum.FAIL.getCode())){
|
logger.info("【#】RiskAnaUnit所有数据全部入库失败");
|
for (String failId : errorIdList) {
|
//上报失败
|
HandlerCJReportParam handlerCJReportParam = new HandlerCJReportParam();
|
//封装数据
|
handlerCJReportParam.setId(failId);
|
handlerCJReportParam.setReportStatus(SyncEnum.SYNC_EXEC_FAIL.getCode());
|
handlerCJReportParam.setReportTime(date);
|
CJRiskAnaUnitService.updateCJReportStatusById(handlerCJReportParam);
|
}
|
}
|
logger.info("【1】安全风险分析单元-数据处理完成");
|
}else {
|
logger.info("【1】风险分析单元-无数据上报昌吉州");
|
}
|
|
|
/**
|
* 2、处理安全风险事件数据
|
* */
|
logger.info("【2】安全风险事件-处理数据...");
|
List<PreventCJReportRiskEvent> CJEvents = CJEventService.listReportEventDate();
|
if (ObjectUtils.isNotEmpty(CJEvents)){
|
//封装上报数据
|
List<CJReportRiskEventDTO> eventList = new ArrayList<>();
|
|
for (PreventCJReportRiskEvent cjEvent : CJEvents) {
|
CJReportRiskEventDTO CJReportRiskEvent = BeanCopyUtils.copyBean(cjEvent, CJReportRiskEventDTO.class);
|
CJReportRiskEvent.setCreateDate(dateFormat.format(cjEvent.getCreateDate()));
|
CJReportRiskEvent.setUpdateDate(dateFormat.format(cjEvent.getUpdateDate()));
|
eventList.add(CJReportRiskEvent);
|
}
|
logger.info("【【风险事件原始数据】】" + JSONObject.toJSONString(eventList));
|
//加密数据
|
String AESReportUnitDate = encrypt(JSONObject.toJSONString(eventList), key.getBytes(), iv.getBytes());
|
|
StringBuffer eventResultBuffer = null;
|
//上报数据
|
try {
|
URL url = new URL("http://120.71.182.198:9999/v1/data/receive/eventMsg");
|
//得到连接对象
|
con = (HttpURLConnection) url.openConnection();
|
//设置请求类型
|
con.setRequestMethod("POST");
|
//设置Content-Type,此处根据实际情况确定
|
con.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
|
//允许写出
|
con.setDoOutput(true);
|
//允许读入
|
con.setDoInput(true);
|
//不使用缓存
|
con.setUseCaches(false);
|
//设置请求头
|
con.setRequestProperty("X-Access-Token",token+formatDate.toString());
|
con.setInstanceFollowRedirects(true);
|
OutputStream os = con.getOutputStream();
|
Map paraMap = new HashMap();
|
paraMap.put("data", AESReportUnitDate); /**封装数据*/
|
//组装入参,设置请求体
|
os.write(JSON.toJSONString(paraMap).getBytes());
|
//得到响应码
|
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);
|
}
|
logger.info("result:" + eventResultBuffer.toString());
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
//接收返回值,保存返回值
|
CJReportResultData CJEventResult = JSONObject.parseObject(eventResultBuffer.toString(), CJReportResultData.class);
|
|
//接收返回值,保存返回值
|
List<String> errorIdList= new ArrayList<>();
|
Data data = JSONObject.parseObject(CJEventResult.getData(), Data.class);
|
if (ObjectUtils.isNotEmpty(data)){
|
for (ErrorMsgDetails errorMsgDetail : data.getErrorMsgDetails()) {
|
errorIdList.add(errorMsgDetail.getId());
|
}
|
}
|
if (CJEventResult.getCode().equals(CJReportEnum.SUCCESS.getCode())){
|
logger.info("【#】Event所有数据全部入库成功");
|
for (PreventCJReportRiskEvent CJEvent : CJEvents) {
|
HandlerCJReportParam handlerCJReportParam = new HandlerCJReportParam();
|
//封装数据
|
handlerCJReportParam.setId(CJEvent.getId());
|
handlerCJReportParam.setReportStatus(SyncEnum.SYNC_EXEC_SUCCESS.getCode());
|
handlerCJReportParam.setReportTime(date);
|
CJEventService.updateCJReportStatusById(handlerCJReportParam);
|
}
|
}else if (CJEventResult.getCode().equals(CJReportEnum.SUCESS_AND_FAIL.getCode())){
|
logger.info("【#】Event部分数据上传失败原因" + CJEventResult.getErrorMsg());
|
//遍历数据,上报数据设置为成功状态
|
for (PreventCJReportRiskEvent CJEvent : CJEvents) {
|
HandlerCJReportParam handlerCJReportParam = new HandlerCJReportParam();
|
//封装数据
|
handlerCJReportParam.setId(CJEvent.getId());
|
handlerCJReportParam.setReportStatus(SyncEnum.SYNC_EXEC_SUCCESS.getCode());
|
handlerCJReportParam.setReportTime(date);
|
CJEventService.updateCJReportStatusById(handlerCJReportParam);
|
}
|
//遍历失败数据,设置为失败状态
|
for (String failId : errorIdList) {
|
//上报失败
|
HandlerCJReportParam handlerCJReportParam = new HandlerCJReportParam();
|
//封装数据
|
handlerCJReportParam.setId(failId);
|
handlerCJReportParam.setReportStatus(SyncEnum.SYNC_EXEC_FAIL.getCode());
|
handlerCJReportParam.setReportTime(date);
|
CJEventService.updateCJReportStatusById(handlerCJReportParam);
|
}
|
} else if (CJEventResult.getCode().equals(CJReportEnum.FAIL.getCode())){
|
logger.info("【#】Event所有数据全部入库失败");
|
for (String failId : errorIdList) {
|
//上报失败
|
HandlerCJReportParam handlerCJReportParam = new HandlerCJReportParam();
|
//封装数据
|
handlerCJReportParam.setId(failId);
|
handlerCJReportParam.setReportStatus(SyncEnum.SYNC_EXEC_FAIL.getCode());
|
handlerCJReportParam.setReportTime(date);
|
CJEventService.updateCJReportStatusById(handlerCJReportParam);
|
}
|
}
|
logger.info("【2】安全风险事件-数据处理完成");
|
}else {
|
logger.info("【2】风险事件-无数据上报昌吉州");
|
}
|
|
|
/**
|
* 3、处理风险管控措施数据
|
* */
|
logger.info("【3】风险管控措施-处理数据...");
|
List<PreventCJReportRiskControlMeasure> CJMeasures = CJMeasureService.listReportMeasureDate();
|
//封装上报数据
|
List<CJReportRiskControlMeasureDTO> reportMeasureList = new ArrayList<>();
|
if (ObjectUtils.isNotEmpty(CJMeasures)){
|
for (PreventCJReportRiskControlMeasure cjMeasure : CJMeasures) {
|
CJReportRiskControlMeasureDTO cjReportRiskControlMeasureDTO = BeanCopyUtils.copyBean(cjMeasure, CJReportRiskControlMeasureDTO.class);
|
cjReportRiskControlMeasureDTO.setCreateDate(dateFormat.format(cjMeasure.getCreateDate()));
|
cjReportRiskControlMeasureDTO.setUpdateDate(dateFormat.format(cjMeasure.getUpdateDate()));
|
reportMeasureList.add(cjReportRiskControlMeasureDTO);
|
}
|
//数据上报
|
String AESReportMeasure = encrypt(JSONObject.toJSONString(reportMeasureList), key.getBytes(), iv.getBytes());
|
|
logger.info("【原始数据】" + JSONObject.toJSONString(reportMeasureList));
|
|
StringBuffer measureResultBuffer = null;
|
//上报数据
|
try {
|
URL url = new URL("http://120.71.182.198:9999/v1/data/receive/controlMeasuresMsg");
|
//得到连接对象
|
con = (HttpURLConnection) url.openConnection();
|
//设置请求类型
|
con.setRequestMethod("POST");
|
//设置Content-Type,此处根据实际情况确定
|
con.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
|
//允许写出
|
con.setDoOutput(true);
|
//允许读入
|
con.setDoInput(true);
|
//不使用缓存
|
con.setUseCaches(false);
|
//设置请求头
|
con.setRequestProperty("X-Access-Token",token+formatDate.toString());
|
OutputStream os = con.getOutputStream();
|
Map paraMap = new HashMap();
|
paraMap.put("data", AESReportMeasure); /**封装数据*/
|
//组装入参,设置请求体
|
os.write(JSON.toJSONString(paraMap).getBytes());
|
//得到响应码
|
responseCode = con.getResponseCode();
|
//本段日志,测试成功后,可注释掉
|
if (responseCode == HttpURLConnection.HTTP_OK) {
|
//得到响应流
|
InputStream inputStream = con.getInputStream();
|
//将响应流转换成字符串
|
measureResultBuffer = new StringBuffer();
|
String line;
|
buffer = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
|
while ((line = buffer.readLine()) != null) {
|
measureResultBuffer.append(line);
|
}
|
logger.info("result:" + measureResultBuffer.toString());
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
//接收返回值,保存返回值
|
CJReportResultData CJMeasureResult = JSONObject.parseObject(measureResultBuffer.toString(), CJReportResultData.class);
|
//接收返回值,保存返回值
|
List<String> errorIdList= new ArrayList<>();
|
Data data = JSONObject.parseObject(CJMeasureResult.getData(), Data.class);
|
//保存失败结果
|
if (ObjectUtils.isNotEmpty(data)){
|
for (ErrorMsgDetails errorMsgDetail : data.getErrorMsgDetails()) {
|
errorIdList.add(errorMsgDetail.getId());
|
}
|
}
|
logger.info("【】管控措施-数据上报结果:" + CJMeasureResult.getCode());
|
//设置所有数据上报成功
|
if (CJMeasureResult.getCode().equals(CJReportEnum.SUCCESS.getCode()) || CJMeasureResult.getCode().equals(CJReportEnum.SUCESS_AND_FAIL.getCode())){
|
for (PreventCJReportRiskControlMeasure CJMeasure : CJMeasures) {
|
HandlerCJReportParam handlerCJReportParam = new HandlerCJReportParam();
|
//封装数据
|
handlerCJReportParam.setId(CJMeasure.getId());
|
handlerCJReportParam.setReportStatus(SyncEnum.SYNC_EXEC_SUCCESS.getCode());
|
handlerCJReportParam.setReportTime(date);
|
CJMeasureService.updateCJReportStatusById(handlerCJReportParam);
|
}
|
}
|
//设置上报失败的数据,上报失败
|
if (CJMeasureResult.getCode().equals(CJReportEnum.FAIL.getCode()) || CJMeasureResult.getCode().equals(CJReportEnum.SUCESS_AND_FAIL.getCode())){
|
for (String failId : errorIdList) {
|
//上报失败
|
HandlerCJReportParam handlerCJReportParam = new HandlerCJReportParam();
|
//封装数据
|
handlerCJReportParam.setId(failId);
|
handlerCJReportParam.setReportStatus(SyncEnum.SYNC_EXEC_FAIL.getCode());
|
handlerCJReportParam.setReportTime(date);
|
CJMeasureService.updateCJReportStatusById(handlerCJReportParam);
|
}
|
}
|
logger.info("【3】风险管控措施-数据处理完成");
|
}else {
|
logger.info("【3】风险管控措施-无数据上报昌吉州");
|
}
|
|
|
/**
|
* 4、处理 任务-配置 数据
|
* */
|
logger.info("【4】任务-处理数据...");
|
List<PreventCJReportCheckTaskFromWork> CJTaskFromWorks = CJTaskFromWorkService.listReportTaskFromWorkDate();
|
if(ObjectUtils.isNotEmpty(CJTaskFromWorks)){
|
//封装上报数据
|
List<CJReportCheckTaskFromWorkDTO> reportCheckTaskFromWorkList = new ArrayList<>();
|
for (PreventCJReportCheckTaskFromWork cjTaskFromWork : CJTaskFromWorks) {
|
CJReportCheckTaskFromWorkDTO cjReportCheckTaskFromWorkDTO = BeanCopyUtils.copyBean(cjTaskFromWork, CJReportCheckTaskFromWorkDTO.class);
|
cjReportCheckTaskFromWorkDTO.setCreateDate(dateFormat.format(cjTaskFromWork.getCreateDate()));
|
cjReportCheckTaskFromWorkDTO.setUpdateDate(dateFormat.format(cjTaskFromWork.getUpdateDate()));
|
reportCheckTaskFromWorkList.add(cjReportCheckTaskFromWorkDTO);
|
}
|
//数据上报
|
String AESReportTaskFromWork = encrypt(JSONObject.toJSONString(reportCheckTaskFromWorkList), key.getBytes(), iv.getBytes());
|
StringBuffer taskFromWorkResultBuffer = null;
|
//上报数据
|
try {
|
URL url = new URL("http://120.71.182.198:9999/v1/data/receive/measuresTaskMsg");
|
//得到连接对象
|
con = (HttpURLConnection) url.openConnection();
|
//设置请求类型
|
con.setRequestMethod("POST");
|
//设置Content-Type,此处根据实际情况确定
|
con.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
|
//允许写出
|
con.setDoOutput(true);
|
//允许读入
|
con.setDoInput(true);
|
//不使用缓存
|
con.setUseCaches(false);
|
//设置请求头
|
con.setRequestProperty("X-Access-Token",token+formatDate.toString());
|
OutputStream os = con.getOutputStream();
|
Map paraMap = new HashMap();
|
paraMap.put("data", AESReportTaskFromWork); /**封装数据*/
|
//组装入参,设置请求体
|
os.write(JSON.toJSONString(paraMap).getBytes());
|
//得到响应码
|
responseCode = con.getResponseCode();
|
//本段日志,测试成功后,可注释掉
|
if (responseCode == HttpURLConnection.HTTP_OK) {
|
//得到响应流
|
InputStream inputStream = con.getInputStream();
|
//将响应流转换成字符串
|
taskFromWorkResultBuffer = new StringBuffer();
|
String line;
|
buffer = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
|
while ((line = buffer.readLine()) != null) {
|
taskFromWorkResultBuffer.append(line);
|
}
|
logger.info("result:" + taskFromWorkResultBuffer.toString());
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
//接收返回值,保存返回值
|
CJReportResultData CJTaskFromWorkResult = JSONObject.parseObject(taskFromWorkResultBuffer.toString(), CJReportResultData.class);
|
//接收返回值,保存返回值
|
List<String> errorIdList= new ArrayList<>();
|
Data data = JSONObject.parseObject(CJTaskFromWorkResult.getData(), Data.class);
|
//保存失败结果
|
if (ObjectUtils.isNotEmpty(data)){
|
for (ErrorMsgDetails errorMsgDetail : data.getErrorMsgDetails()) {
|
errorIdList.add(errorMsgDetail.getId());
|
}
|
}
|
logger.info("【】任务:数据上报结果:" + CJTaskFromWorkResult.getCode());
|
//设置所有数据上报成功
|
if (CJTaskFromWorkResult.getCode().equals(CJReportEnum.SUCCESS.getCode()) || CJTaskFromWorkResult.getCode().equals(CJReportEnum.SUCESS_AND_FAIL.getCode())){
|
for (PreventCJReportCheckTaskFromWork CJTaskFromWork : CJTaskFromWorks) {
|
HandlerCJReportParam handlerCJReportParam = new HandlerCJReportParam();
|
//封装数据
|
handlerCJReportParam.setId(CJTaskFromWork.getId());
|
handlerCJReportParam.setReportStatus(SyncEnum.SYNC_EXEC_SUCCESS.getCode());
|
handlerCJReportParam.setReportTime(date);
|
CJTaskFromWorkService.updateCJReportStatusById(handlerCJReportParam);
|
}
|
}
|
//设置上报失败的数据,上报失败
|
if (CJTaskFromWorkResult.getCode().equals(CJReportEnum.FAIL.getCode()) || CJTaskFromWorkResult.getCode().equals(CJReportEnum.SUCESS_AND_FAIL.getCode())){
|
for (String failId : errorIdList) {
|
//上报失败
|
HandlerCJReportParam handlerCJReportParam = new HandlerCJReportParam();
|
//封装数据
|
handlerCJReportParam.setId(failId);
|
handlerCJReportParam.setReportStatus(SyncEnum.SYNC_EXEC_FAIL.getCode());
|
handlerCJReportParam.setReportTime(date);
|
CJTaskFromWorkService.updateCJReportStatusById(handlerCJReportParam);
|
}
|
}
|
logger.info("【4】任务-数据处理完成");
|
}else {
|
logger.info("【4】任务-无数据上报昌吉州");
|
}
|
|
/**
|
* 5、处理 任务-记录 数据
|
* */
|
logger.info("【5】任务记录-处理数据...");
|
List<PreventCJReportCheckRecordFromTask> CJRecordFromTasks = CJTaskRecordService.listReportTaskRecordDate();
|
if (ObjectUtils.isNotEmpty(CJRecordFromTasks)){
|
//封装上报数据
|
List<CJReportCheckRecordFromTaskDTO> reportRecordFromTaskList = new ArrayList<>();
|
for (PreventCJReportCheckRecordFromTask cjRecordFromTask : CJRecordFromTasks) {
|
CJReportCheckRecordFromTaskDTO cjReportCheckRecordFromTaskDTO = BeanCopyUtils.copyBean(cjRecordFromTask, CJReportCheckRecordFromTaskDTO.class);
|
cjReportCheckRecordFromTaskDTO.setCreateDate(dateFormat.format(cjRecordFromTask.getCreateDate()));
|
cjReportCheckRecordFromTaskDTO.setUpdateDate(dateFormat.format(cjRecordFromTask.getUpdateDate()));
|
cjReportCheckRecordFromTaskDTO.setCheckTime(dateFormat.format(cjRecordFromTask.getCheckTime()));
|
reportRecordFromTaskList.add(cjReportCheckRecordFromTaskDTO);
|
}
|
//数据加密
|
String AESReportRecordFromTask = encrypt(JSONObject.toJSONString(reportRecordFromTaskList), key.getBytes(), iv.getBytes());
|
|
StringBuffer recordFromTaskResultBuffer = null;
|
//上报数据
|
try {
|
URL url = new URL("http://120.71.182.198:9999/v1/data/receive/measuresTaskRecordMsg");
|
//得到连接对象
|
con = (HttpURLConnection) url.openConnection();
|
//设置请求类型
|
con.setRequestMethod("POST");
|
//设置Content-Type,此处根据实际情况确定
|
con.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
|
//允许写出
|
con.setDoOutput(true);
|
//允许读入
|
con.setDoInput(true);
|
//不使用缓存
|
con.setUseCaches(false);
|
//设置请求头
|
con.setRequestProperty("X-Access-Token",token+formatDate.toString());
|
OutputStream os = con.getOutputStream();
|
Map paraMap = new HashMap();
|
paraMap.put("data", AESReportRecordFromTask);/**封装数据*/
|
//组装入参,设置请求体
|
os.write(JSON.toJSONString(paraMap).getBytes());
|
//得到响应码
|
responseCode = con.getResponseCode();
|
//本段日志,测试成功后,可注释掉
|
if (responseCode == HttpURLConnection.HTTP_OK) {
|
//得到响应流
|
InputStream inputStream = con.getInputStream();
|
//将响应流转换成字符串
|
recordFromTaskResultBuffer = new StringBuffer();
|
String line;
|
buffer = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
|
while ((line = buffer.readLine()) != null) {
|
recordFromTaskResultBuffer.append(line);
|
}
|
logger.info("result:" + recordFromTaskResultBuffer.toString());
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
//接收返回值,保存返回值
|
CJReportResultData CJRecordFromTaskResult = JSONObject.parseObject(recordFromTaskResultBuffer.toString(), CJReportResultData.class);
|
//接收返回值,保存返回值
|
List<String> errorIdList= new ArrayList<>();
|
Data data = JSONObject.parseObject(CJRecordFromTaskResult.getData(), Data.class);
|
//保存失败结果
|
if (ObjectUtils.isNotEmpty(data)){
|
for (ErrorMsgDetails errorMsgDetail : data.getErrorMsgDetails()) {
|
errorIdList.add(errorMsgDetail.getId());
|
}
|
}
|
logger.info("【】CJRecordFromTask数据上报结果:" + CJRecordFromTaskResult.getCode());
|
//设置所有数据上报成功
|
if (CJRecordFromTaskResult.getCode().equals(CJReportEnum.SUCCESS.getCode()) || CJRecordFromTaskResult.getCode().equals(CJReportEnum.SUCESS_AND_FAIL.getCode())){
|
for (PreventCJReportCheckRecordFromTask CJRecordFromTask : CJRecordFromTasks) {
|
HandlerCJReportParam handlerCJReportParam = new HandlerCJReportParam();
|
//封装数据
|
handlerCJReportParam.setId(CJRecordFromTask.getId());
|
handlerCJReportParam.setReportStatus(SyncEnum.SYNC_EXEC_SUCCESS.getCode());
|
handlerCJReportParam.setReportTime(date);
|
CJTaskRecordService.updateCJReportStatusById(handlerCJReportParam);
|
}
|
}
|
//设置上报失败的数据,上报失败
|
if (CJRecordFromTaskResult.getCode().equals(CJReportEnum.FAIL.getCode()) || CJRecordFromTaskResult.getCode().equals(CJReportEnum.SUCESS_AND_FAIL.getCode())){
|
for (String failId : errorIdList) {
|
//上报失败
|
HandlerCJReportParam handlerCJReportParam = new HandlerCJReportParam();
|
//封装数据
|
handlerCJReportParam.setId(failId);
|
handlerCJReportParam.setReportStatus(SyncEnum.SYNC_EXEC_FAIL.getCode());
|
handlerCJReportParam.setReportTime(date);
|
CJTaskRecordService.updateCJReportStatusById(handlerCJReportParam);
|
}
|
}
|
logger.info("【5】任务记录-数据处理完成");
|
}else {
|
logger.info("【5】任务记录-无数据上报昌吉州");
|
}
|
|
/**
|
* 6、处理隐患信息数据
|
* */
|
logger.info("【6】隐患信息-处理数据...");
|
List<PreventCJReportDangerInfo> CJDangerInfos = CJDangerInfoService.listReportDangerDate();
|
if (ObjectUtils.isNotEmpty(CJDangerInfos)){
|
//封装上报数据
|
List<CJReportDangerInfoDTO> reportDangerInfoLists = new ArrayList<>();
|
for (PreventCJReportDangerInfo cjDangerInfo : CJDangerInfos) {
|
CJReportDangerInfoDTO cjReportDangerInfoDTO = BeanCopyUtils.copyBean(cjDangerInfo, CJReportDangerInfoDTO.class);
|
cjReportDangerInfoDTO.setCreateDate(dateFormat.format(cjDangerInfo.getCreateDate()));
|
cjReportDangerInfoDTO.setUpdateDate(dateFormat.format(cjDangerInfo.getUpdateDate()));
|
if (ObjectUtils.isNotEmpty(cjDangerInfo.getCheckAcceptTime())){
|
cjReportDangerInfoDTO.setCheckAcceptTime(dateFormat.format(cjDangerInfo.getCheckAcceptTime()));
|
}else {
|
cjReportDangerInfoDTO.setCheckAcceptTime(null);
|
}
|
cjReportDangerInfoDTO.setRegistTime(dateFormat.format(cjDangerInfo.getRegistTime()));
|
cjReportDangerInfoDTO.setDangerManageDeadline(dateFormat.format(cjDangerInfo.getDangerManageDeadline()));
|
reportDangerInfoLists.add(cjReportDangerInfoDTO);
|
}
|
//数据上报
|
logger.info("【原始数据】" + JSONObject.toJSONString(reportDangerInfoLists));
|
String AESReportDangerInfo = encrypt(JSONObject.toJSONString(reportDangerInfoLists), key.getBytes(), iv.getBytes());
|
StringBuffer dangerInfoResultBuffer = null;
|
//上报数据
|
try {
|
URL url = new URL("http://120.71.182.198:9999/v1/data/receive/dangerInvestigationMsg");
|
//得到连接对象
|
con = (HttpURLConnection) url.openConnection();
|
//设置请求类型
|
con.setRequestMethod("POST");
|
//设置Content-Type,此处根据实际情况确定
|
con.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
|
//允许写出
|
con.setDoOutput(true);
|
//允许读入
|
con.setDoInput(true);
|
//不使用缓存
|
con.setUseCaches(false);
|
//设置请求头
|
con.setRequestProperty("X-Access-Token",token + formatDate.toString());
|
OutputStream os = con.getOutputStream();
|
Map paraMap = new HashMap();
|
paraMap.put("data", AESReportDangerInfo);/**封装数据*/
|
//组装入参,设置请求体
|
os.write(JSON.toJSONString(paraMap).getBytes());
|
//得到响应码
|
responseCode = con.getResponseCode();
|
//本段日志,测试成功后,可注释掉
|
if (responseCode == HttpURLConnection.HTTP_OK) {
|
//得到响应流
|
InputStream inputStream = con.getInputStream();
|
//将响应流转换成字符串
|
dangerInfoResultBuffer = new StringBuffer();
|
String line;
|
buffer = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
|
while ((line = buffer.readLine()) != null) {
|
dangerInfoResultBuffer.append(line);
|
}
|
logger.info("result:" + dangerInfoResultBuffer.toString());
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
//接收返回值,保存返回值
|
CJReportResultData CJDangerInfoResult = JSONObject.parseObject(dangerInfoResultBuffer.toString(), CJReportResultData.class);
|
//接收返回值,保存返回值
|
List<String> errorIdList= new ArrayList<>();
|
Data data = JSONObject.parseObject(CJDangerInfoResult.getData(), Data.class);
|
//保存失败结果
|
if (ObjectUtils.isNotEmpty(data)){
|
for (ErrorMsgDetails errorMsgDetail : data.getErrorMsgDetails()) {
|
errorIdList.add(errorMsgDetail.getId());
|
}
|
}
|
logger.info("【】CJDangerInfo数据上报结果:" + CJDangerInfoResult.getCode());
|
//设置所有数据上报成功
|
if (CJDangerInfoResult.getCode().equals(CJReportEnum.SUCCESS.getCode()) || CJDangerInfoResult.getCode().equals(CJReportEnum.SUCESS_AND_FAIL.getCode())){
|
for (PreventCJReportDangerInfo CJDangerInfo : CJDangerInfos) {
|
HandlerCJReportParam handlerCJReportParam = new HandlerCJReportParam();
|
//封装数据
|
handlerCJReportParam.setId(CJDangerInfo.getId());
|
handlerCJReportParam.setReportStatus(SyncEnum.SYNC_EXEC_SUCCESS.getCode());
|
handlerCJReportParam.setReportTime(date);
|
CJDangerInfoService.updateCJReportStatusById(handlerCJReportParam);
|
}
|
}
|
//设置上报失败的数据,上报失败
|
if (CJDangerInfoResult.getCode().equals(CJReportEnum.FAIL.getCode()) || CJDangerInfoResult.getCode().equals(CJReportEnum.SUCESS_AND_FAIL.getCode())){
|
for (String failId : errorIdList) {
|
//上报失败
|
HandlerCJReportParam handlerCJReportParam = new HandlerCJReportParam();
|
//封装数据
|
handlerCJReportParam.setId(failId);
|
handlerCJReportParam.setReportStatus(SyncEnum.SYNC_EXEC_FAIL.getCode());
|
handlerCJReportParam.setReportTime(date);
|
CJDangerInfoService.updateCJReportStatusById(handlerCJReportParam);
|
}
|
}
|
logger.info("【6】隐患信息-数据处理完成");
|
}else {
|
logger.info("【6】隐患信息-无数据上报昌吉州");
|
}
|
|
}
|
|
}
|