From aa2051a2327c079105110f5424f3a44ffaa0c7bb Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期五, 25 八月 2023 10:11:08 +0800
Subject: [PATCH] 延期整改

---
 src/main/java/com/ruoyi/doublePrevention/scheduls/ExecCJReportDateSchedule.java |  142 ++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 134 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/ruoyi/doublePrevention/scheduls/ExecCJReportDateSchedule.java b/src/main/java/com/ruoyi/doublePrevention/scheduls/ExecCJReportDateSchedule.java
index a465e18..0f3be9e 100644
--- a/src/main/java/com/ruoyi/doublePrevention/scheduls/ExecCJReportDateSchedule.java
+++ b/src/main/java/com/ruoyi/doublePrevention/scheduls/ExecCJReportDateSchedule.java
@@ -10,6 +10,7 @@
 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;
@@ -28,6 +29,7 @@
 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;
@@ -56,6 +58,10 @@
     private PreventCJReportDangerInfoService CJDangerInfoService;
     @Autowired
     private PreventCJReportPointService CJPointService;
+    @Autowired
+    private PreventCJReportOverhaulLogService CJOverhaulLogService;
+    @Autowired
+    private PreventReportConfigService preventReportConfigService;
 
     String token = "GT6gGJV7JV";
     String key = "Bv+NeBolwqg2Pbc1yVwrZA==";
@@ -87,8 +93,10 @@
 
 
     @Transactional
-//    @Scheduled(cron = "0 0 23 * * ?")    //每天晚上23点执行一次
-//    @Scheduled(cron = "0 0/2 * * * ? ")    // 分钟
+//    @Scheduled(cron = "0 0 23 * * ?")    //每天晚上23点执行一次0 0 22,23 * * ?
+//    @Scheduled(cron = "0 0 22,23 * * ?")    //每天晚上22、23点执行一次
+//    @Scheduled(cron = "0 0/1 * * * ? ")    // 分钟
+    @Scheduled(cron = "0 0/20 * * * ? ")    // 分钟
     //@Scheduled(cron = "0/30 * * * * ?")
     public void execReportDateSchedule() throws UnsupportedEncodingException {
         logger.info("【####】上报数据开始...");
@@ -106,10 +114,15 @@
 
         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)){
@@ -277,7 +290,7 @@
                 os.write(JSON.toJSONString(paraMap).getBytes());
                 //得到响应码
                 responseCode = con.getResponseCode();
-                //本段日志,测试成功后,可注释掉
+                //确认响应流不为空
                 if (responseCode == HttpURLConnection.HTTP_OK) {
                     //得到响应流
                     InputStream inputStream = con.getInputStream();
@@ -468,8 +481,10 @@
                 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;
@@ -492,7 +507,7 @@
                 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());
                 //得到响应码
@@ -564,11 +579,14 @@
             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());
 
@@ -760,6 +778,114 @@
            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】检修停用记录-无数据上报昌吉州");
+        }
+
+    }
 }

--
Gitblit v1.9.2