| | |
| | | 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.entity.PreventReportConfig;
|
| | | import com.ruoyi.doublePrevention.enums.CJReportEnum;
|
| | | import com.ruoyi.doublePrevention.enums.SyncEnum;
|
| | | import com.ruoyi.doublePrevention.repository.param.HandlerCJReportParam;
|
| | |
| | | import org.springframework.transaction.annotation.Transactional;
|
| | |
|
| | | import java.io.*;
|
| | | import java.lang.reflect.Array;
|
| | | import java.net.HttpURLConnection;
|
| | | import java.net.URL;
|
| | | import java.nio.charset.StandardCharsets;
|
| | |
| | | private PreventCJReportDangerInfoService CJDangerInfoService;
|
| | | @Autowired
|
| | | private PreventCJReportPointService CJPointService;
|
| | | @Autowired
|
| | | private PreventCJReportOverhaulLogService CJOverhaulLogService;
|
| | | @Autowired
|
| | | private PreventReportConfigService preventReportConfigService;
|
| | |
|
| | | String token = "GT6gGJV7JV";
|
| | | String key = "Bv+NeBolwqg2Pbc1yVwrZA==";
|
| | |
| | |
|
| | |
|
| | | @Transactional
|
| | | // @Scheduled(cron = "0 0 23 * * ?") //每天晚上23点执行一次
|
| | | // @Scheduled(cron = "0 0/2 * * * ? ") // 分钟
|
| | | //@Scheduled(cron = "0/30 * * * * ?")
|
| | | // @Scheduled(cron = "0 0 23 * * ?") //每天晚上23点执行一次0 0 22,23 * * ?
|
| | | // @Scheduled(cron = "0 0 22,23 * * ?") //每天晚上22、23点执行一次
|
| | | @Scheduled(cron = "0 0/10 * * * ? ") // 分钟
|
| | | // @Scheduled(cron = "0/30 * * * * ?")
|
| | | public void execReportDateSchedule() throws UnsupportedEncodingException {
|
| | | logger.info("【####】上报数据开始...");
|
| | |
|
| | |
| | |
|
| | | logger.info("【token时间】" + formatDate);
|
| | |
|
| | | //使用风险分析单元数据上报主配置,作为自动上报开关
|
| | | PreventReportConfig reportConfig = preventReportConfigService.getReportConfigById(SyncEnum.REPORT_CONFIG_RISK_ANA_UNIT.getCode());
|
| | | if (reportConfig.getReportType() == 0){
|
| | | return;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 1、处理安全风险分析单元数据
|
| | | * */
|
| | |
|
| | | logger.info("【1】安全风险分析单元-处理数据...");
|
| | | List<PreventCJReportRiskAnaUnit> CJRiskAnaUnits = CJRiskAnaUnitService.listReportUnitDate();
|
| | | if (ObjectUtils.isNotEmpty(CJRiskAnaUnits)){
|
| | |
| | | os.write(JSON.toJSONString(paraMap).getBytes());
|
| | | //得到响应码
|
| | | responseCode = con.getResponseCode();
|
| | | //本段日志,测试成功后,可注释掉
|
| | | //确认响应流不为空
|
| | | if (responseCode == HttpURLConnection.HTTP_OK) {
|
| | | //得到响应流
|
| | | InputStream inputStream = con.getInputStream();
|
| | |
| | | CJReportCheckTaskFromWorkDTO cjReportCheckTaskFromWorkDTO = BeanCopyUtils.copyBean(cjTaskFromWork, CJReportCheckTaskFromWorkDTO.class);
|
| | | cjReportCheckTaskFromWorkDTO.setCreateDate(dateFormat.format(cjTaskFromWork.getCreateDate()));
|
| | | cjReportCheckTaskFromWorkDTO.setUpdateDate(dateFormat.format(cjTaskFromWork.getUpdateDate()));
|
| | | cjReportCheckTaskFromWorkDTO.setTaskStartTime(dateFormat.format(cjTaskFromWork.getCreateDate()));
|
| | | reportCheckTaskFromWorkList.add(cjReportCheckTaskFromWorkDTO);
|
| | | }
|
| | | System.out.println(Arrays.toString(reportCheckTaskFromWorkList.toArray()));
|
| | | //数据上报
|
| | | String AESReportTaskFromWork = encrypt(JSONObject.toJSONString(reportCheckTaskFromWorkList), key.getBytes(), iv.getBytes());
|
| | | StringBuffer taskFromWorkResultBuffer = null;
|
| | |
| | | con.setRequestProperty("X-Access-Token",token+formatDate.toString());
|
| | | OutputStream os = con.getOutputStream();
|
| | | Map paraMap = new HashMap();
|
| | | paraMap.put("data", AESReportTaskFromWork); /**封装数据*/
|
| | | paraMap.put("data", AESReportTaskFromWork);
|
| | | //组装入参,设置请求体
|
| | | os.write(JSON.toJSONString(paraMap).getBytes());
|
| | | //得到响应码
|
| | |
| | | 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.setCreateDate(dateFormat.format(cjRecordFromTask.getCreateDate()));
|
| | | // cjReportCheckRecordFromTaskDTO.setUpdateDate(dateFormat.format(cjRecordFromTask.getUpdateDate()));
|
| | | cjReportCheckRecordFromTaskDTO.setCheckTime(dateFormat.format(cjRecordFromTask.getCheckTime()));
|
| | | cjReportCheckRecordFromTaskDTO.setMobileMe(cjRecordFromTask.getMobileCode());
|
| | | cjReportCheckRecordFromTaskDTO.setIsDefend(cjRecordFromTask.getDefend());
|
| | | reportRecordFromTaskList.add(cjReportCheckRecordFromTaskDTO);
|
| | | }
|
| | | // System.out.println(Arrays.toString(reportRecordFromTaskList.toArray()));
|
| | | //数据加密
|
| | | String AESReportRecordFromTask = encrypt(JSONObject.toJSONString(reportRecordFromTaskList), key.getBytes(), iv.getBytes());
|
| | |
|
| | | logger.info("【test】数据加密完成,开始上报数据");
|
| | | StringBuffer recordFromTaskResultBuffer = null;
|
| | | //上报数据
|
| | | try {
|
| | |
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | logger.info("【test】接收返回值");
|
| | | CJReportResultData CJRecordFromTaskResult = new CJReportResultData();
|
| | | try {
|
| | | CJRecordFromTaskResult = JSONObject.parseObject(recordFromTaskResultBuffer.toString(), CJReportResultData.class);
|
| | | if (ObjectUtils.isEmpty(CJRecordFromTaskResult)){
|
| | | throw new RuntimeException("返回值为空");
|
| | | }
|
| | | }catch (Exception e){
|
| | | e.printStackTrace();
|
| | | logger.info("【test】接收返回值异常");
|
| | | }
|
| | |
|
| | | //接收返回值,保存返回值
|
| | | CJReportResultData CJRecordFromTaskResult = JSONObject.parseObject(recordFromTaskResultBuffer.toString(), CJReportResultData.class);
|
| | | // CJReportResultData CJRecordFromTaskResult = JSONObject.parseObject(recordFromTaskResultBuffer.toString(), CJReportResultData.class);
|
| | | //接收返回值,保存返回值
|
| | | logger.info("【test】保存上报结果");
|
| | | List<String> errorIdList= new ArrayList<>();
|
| | | Data data = JSONObject.parseObject(CJRecordFromTaskResult.getData(), Data.class);
|
| | | //保存失败结果
|
| | |
| | | logger.info("【6】隐患信息-无数据上报昌吉州");
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | /**
|
| | | * 7、检修停用记录信息数据
|
| | | * */
|
| | | logger.info("【7】检修停用记录-处理数据...");
|
| | | List<PreventCJReportOverhaulLog> CJOverhaulLogs = CJOverhaulLogService.listReportOverhaulDate();
|
| | | if (ObjectUtils.isNotEmpty(CJOverhaulLogs)){
|
| | | //封装上报数据
|
| | | List<CJReportOverhaulLogDTO> reportOverhaulLogDTOS = new ArrayList<>();
|
| | | for (PreventCJReportOverhaulLog cjOverhaulLog : CJOverhaulLogs) {
|
| | | CJReportOverhaulLogDTO cjReportOverhaulLogDTO = BeanCopyUtils.copyBean(cjOverhaulLog, CJReportOverhaulLogDTO.class);
|
| | |
|
| | | cjReportOverhaulLogDTO.setCreateDate(dateFormat.format(cjOverhaulLog.getCreateDate()));
|
| | | cjReportOverhaulLogDTO.setUpdateDate(dateFormat.format(cjOverhaulLog.getUpdateDate()));
|
| | | cjReportOverhaulLogDTO.setStopStartTime(dateFormat.format(cjOverhaulLog.getStopStartTime()));
|
| | | if (ObjectUtils.isNotEmpty(cjOverhaulLog.getStopEndTime())){
|
| | | cjReportOverhaulLogDTO.setStopEndTime(dateFormat.format(cjOverhaulLog.getStopEndTime()));
|
| | | }else {
|
| | | cjReportOverhaulLogDTO.setStopEndTime(null);
|
| | | }
|
| | | reportOverhaulLogDTOS.add(cjReportOverhaulLogDTO);
|
| | | }
|
| | |
|
| | | //数据上报
|
| | | logger.info("【原始数据】" + JSONObject.toJSONString(reportOverhaulLogDTOS));
|
| | | String AESReportDangerInfo = encrypt(JSONObject.toJSONString(reportOverhaulLogDTOS), key.getBytes(), iv.getBytes());
|
| | | StringBuffer dangerInfoResultBuffer = null;
|
| | | //上报数据
|
| | | try {
|
| | | URL url = new URL("http://v1/data/receive/receiveUnitStop");
|
| | | //得到连接对象
|
| | | 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 CJOverhaulLogResult = JSONObject.parseObject(dangerInfoResultBuffer.toString(), CJReportResultData.class);
|
| | | //接收返回值,保存返回值
|
| | | List<String> errorIdList= new ArrayList<>();
|
| | | Data data = JSONObject.parseObject(CJOverhaulLogResult.getData(), Data.class);
|
| | | //保存失败结果
|
| | | if (ObjectUtils.isNotEmpty(data)){
|
| | | for (ErrorMsgDetails errorMsgDetail : data.getErrorMsgDetails()) {
|
| | | errorIdList.add(errorMsgDetail.getId());
|
| | | }
|
| | | }
|
| | | logger.info("【】CJOverhaulLog数据上报结果:" + CJOverhaulLogResult.getCode());
|
| | | //设置所有数据上报成功
|
| | |
|
| | | if (CJOverhaulLogResult.getCode().equals(CJReportEnum.SUCCESS.getCode()) || CJOverhaulLogResult.getCode().equals(CJReportEnum.SUCESS_AND_FAIL.getCode())){
|
| | | for (PreventCJReportOverhaulLog cjOverhaulLog : CJOverhaulLogs) {
|
| | | HandlerCJReportParam handlerCJReportParam = new HandlerCJReportParam();
|
| | | //封装数据
|
| | | handlerCJReportParam.setId(cjOverhaulLog.getId());
|
| | | handlerCJReportParam.setReportStatus(SyncEnum.SYNC_EXEC_SUCCESS.getCode());
|
| | | handlerCJReportParam.setReportTime(date);
|
| | | CJOverhaulLogService.updateCJReportStatusById(handlerCJReportParam);
|
| | | }
|
| | | }
|
| | | //设置上报失败的数据,上报失败
|
| | | if (CJOverhaulLogResult.getCode().equals(CJReportEnum.FAIL.getCode()) || CJOverhaulLogResult.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);
|
| | | CJOverhaulLogService.updateCJReportStatusById(handlerCJReportParam);
|
| | | }
|
| | | }
|
| | | logger.info("【7】检修停用记录-数据处理完成");
|
| | | }else {
|
| | | logger.info("【7】检修停用记录-无数据上报昌吉州");
|
| | | }
|
| | |
|
| | | }
|
| | | }
|