From 7ee844962f050cfc548e5dd661a586a4993cbf89 Mon Sep 17 00:00:00 2001
From: heheng <475597332@qq.com>
Date: Thu, 25 Jun 2026 10:28:01 +0800
Subject: [PATCH] 优化问题

---
 src/main/java/com/ruoyi/project/tr/specialCheck/scheduleLogTask/SpecialCheckTaskDownload.java |  259 +++++++++++++++++++++++++++------------------------
 1 files changed, 139 insertions(+), 120 deletions(-)

diff --git a/src/main/java/com/ruoyi/project/tr/specialCheck/scheduleLogTask/SpecialCheckTaskDownload.java b/src/main/java/com/ruoyi/project/tr/specialCheck/scheduleLogTask/SpecialCheckTaskDownload.java
index c6aba98..aae91e9 100644
--- a/src/main/java/com/ruoyi/project/tr/specialCheck/scheduleLogTask/SpecialCheckTaskDownload.java
+++ b/src/main/java/com/ruoyi/project/tr/specialCheck/scheduleLogTask/SpecialCheckTaskDownload.java
@@ -31,6 +31,8 @@
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 
+import static com.ruoyi.common.utils.Threads.sleep;
+
 @Component
 public class SpecialCheckTaskDownload {
 
@@ -78,6 +80,7 @@
         }
         return sr;
     }
+
     public static String decrypt(String encryptedText, byte[] key, byte[] iv) {
         String sr;
         try {
@@ -96,7 +99,7 @@
     }
 
 
-    @Transactional
+  //  @Transactional
 //    @Scheduled(cron = "0 0 23 * * ?")    //每天晚上23点执行一次0 0 22,23 * * ?
 //    @Scheduled(cron = "0 0 22,23 * * ?")    //每天晚上22、23点执行一次
 //    @Scheduled(cron = "0 0/1 * * * ? ")    // 分钟
@@ -114,7 +117,7 @@
 
         Date date = new Date();
         //格式化时间,作为token的时间戳
-        SimpleDateFormat tokenDate= new SimpleDateFormat("yyyyMMddHHmmssSSS");
+        SimpleDateFormat tokenDate = new SimpleDateFormat("yyyyMMddHHmmssSSS");
         String formatDate = tokenDate.format(date);
 
         logger.info("【token时间】" + formatDate);
@@ -128,53 +131,56 @@
 
         //String taskId = "84766708-9b18-4133-8acf-08aba67792c7";
 
-        String taskId = "a8de03f0-4c3e-43fe-a139-0e4ed34edd35";
+        String taskId = "47da41f5-c747-4bd3-b4ab-d4d496e31e93";
+
+
+        int count = 0;
         /**
          * 1
          * */
-//        logger.info("【####】拉取专项任务数据开始...");
+        logger.info("【####】拉取专项任务数据开始...");
         TbCheckConfig specialCheckConfig = configMapper.getSpecialCheckConfig();
-        if (specialCheckConfig.getStatus() == 2){
+        if (specialCheckConfig.getStatus() == 2) {
 
             StringBuffer specialCheckBuffer = null;
 
             //上报数据
-             try {
-             URL url = new URL("http://120.71.182.198:9999/v1/data/receive/getCheckTask");
-             //得到连接对象
-             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");
+            try {
+                URL url = new URL("http://120.71.182.198:9999/v1/data/receive/getCheckTask");
+                //得到连接对象
+                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();
+                OutputStream os = con.getOutputStream();
 
-                 System.out.println("token:"+token+formatDate.toString());
+                System.out.println("token:" + token + formatDate.toString());
 
-            //本段日志,测试成功后,可注释掉
-            if (responseCode == HttpURLConnection.HTTP_OK) {
-                //得到响应流
-                InputStream inputStream = con.getInputStream();
-                //将响应流转换成字符串
-                specialCheckBuffer = new StringBuffer();
-                String line;
-                buffer = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
-                while ((line = buffer.readLine()) != null) {
-                    specialCheckBuffer.append(line);
-                }
+                //本段日志,测试成功后,可注释掉
+                if (responseCode == HttpURLConnection.HTTP_OK) {
+                    //得到响应流
+                    InputStream inputStream = con.getInputStream();
+                    //将响应流转换成字符串
+                    specialCheckBuffer = new StringBuffer();
+                    String line;
+                    buffer = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
+                    while ((line = buffer.readLine()) != null) {
+                        specialCheckBuffer.append(line);
+                    }
 //                    logger.info("result:" + unitResultBuffer.toString());
-                System.out.println("result:" + specialCheckBuffer.toString());
-            }
+                    System.out.println("result:" + specialCheckBuffer.toString());
+                }
 
             } catch (Exception e) {
                 e.printStackTrace();
@@ -184,7 +190,7 @@
             TbBaseCheckTaskDownloadBO checkTaskDownloadDTO = JSONObject.parseObject(specialCheckBuffer.toString(), TbBaseCheckTaskDownloadBO.class);
             //接收返回值,保存返回值
             List<TbBaseCheckTask> tbBaseCheckTasks = JSONArray.parseArray(checkTaskDownloadDTO.getData(), TbBaseCheckTask.class);
-            if (tbBaseCheckTasks.size() > 0){
+            if (tbBaseCheckTasks.size() > 0) {
                 for (TbBaseCheckTask tbBaseCheckTask : tbBaseCheckTasks) {
                     LocalDateTime taskStartTime = tbBaseCheckTask.getTaskStartTime();
                     LocalDate localDate = taskStartTime.toLocalDate();
@@ -202,7 +208,7 @@
 
             logger.info("【专项检查任务】-读取任务结果:" + checkTaskDownloadDTO.getCode());
             System.out.println("【专项检查任务】-读取任务完成");
-        }else {
+        } else {
             System.out.println("【专项检查任务】- 不读取任务");
         }
 
@@ -210,7 +216,7 @@
          * 2
          * */
         logger.info("【####】拉取检查项数据开始...");
-        if (specialCheckConfig.getStatus() == 2){
+        if (specialCheckConfig.getStatus() == 2) {
 
             StringBuffer specialCheckBuffer = null;
 
@@ -225,8 +231,8 @@
             System.out.println("请求参数:" + JSONObject.toJSONString(itemDownloadRespDTO));
 
             JSONObject itemDownloadRespDTOJson = new JSONObject();
-            itemDownloadRespDTOJson.put("taskId",taskId);
-            itemDownloadRespDTOJson.put("page",page);
+            itemDownloadRespDTOJson.put("taskId", taskId);
+            itemDownloadRespDTOJson.put("page", page);
             System.out.println("【【原始数据2】】" + JSONObject.toJSONString(itemDownloadRespDTOJson));
             String encrypted = encrypt(JSONObject.toJSONString(itemDownloadRespDTOJson), key.getBytes(), iv.getBytes());
             System.out.println("【【加密数据2】】" + encrypted);
@@ -248,14 +254,14 @@
                 con.setUseCaches(false);
                 con.setInstanceFollowRedirects(true);
                 //设置请求头
-                con.setRequestProperty("X-Access-Token",token+formatDate.toString());
+                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", encrypted); /**封装数据*/
-               // System.out.println("【【加密请求体】】" +  JSONArray.toJSON(paraMap).toString());
+                // System.out.println("【【加密请求体】】" +  JSONArray.toJSON(paraMap).toString());
                 //组装入参,设置请求体
                 os.write(JSON.toJSONString(itemDownloadRespDTOJson).getBytes());
 
@@ -282,25 +288,25 @@
             ItemDownloadRespBO itemDownloadRespBO = JSONObject.parseObject(specialCheckBuffer.toString(), ItemDownloadRespBO.class);
             //接收返回值,保存返回值
             String data = itemDownloadRespBO.getData();
-            if (ObjectUtils.isNotEmpty(data)){
+            if (ObjectUtils.isNotEmpty(data)) {
                 JSONObject jsonObject = JSON.parseObject(data);
                 String data1 = jsonObject.get("data").toString();
                 List<TbBaseCheckItem> tbBaseCheckItems = JSONObject.parseArray(data1, TbBaseCheckItem.class);
-                    if (ObjectUtils.isNotEmpty(tbBaseCheckItems)){
-                        for (TbBaseCheckItem item : tbBaseCheckItems) {
-                            item.setStatus(1);
-                            item.setId(item.getCheckItemId());
-                            int insert = itemTbRepository.insertBatch(item);
-                        }
-
+                if (ObjectUtils.isNotEmpty(tbBaseCheckItems)) {
+                    for (TbBaseCheckItem item : tbBaseCheckItems) {
+                        item.setStatus(1);
+                        item.setId(item.getCheckItemId());
+                        int insert = itemTbRepository.insertBatch(item);
                     }
+                    count = tbBaseCheckItems.size();
+                }
             }
 
             taskTbRepository.updateStatusById(baseCheckTask.getTaskId());
 
             logger.info("【专项任务检查项】-读取检查项结果:" + itemDownloadRespBO.getCode());
             System.out.println("【专项任务检查项】-读取检查项完成");
-        }else {
+        } else {
             System.out.println("【专项任务检查项】- 不读取检查项");
         }
 
@@ -308,92 +314,105 @@
          * 3
          * */
         logger.info("【####】拉取评分细则开始...");
-        if (specialCheckConfig.getStatus() == 2){
+        if (specialCheckConfig.getStatus() == 2) {
+            if (count <= 0) {
+                logger.info("【拉取评分细则开始】-无检查项数据");
+                return;
+            }
+            for (int i = 0; i < count + 20; i++) {
 
-            StringBuffer specialCheckBuffer = null;
 
-            ScoreDownloadRespDTO scoreDownloadRespDTO = new ScoreDownloadRespDTO();
-            TbBaseCheckItem baseItemByStatus = itemTbRepository.getBaseItemByStatus(date);
-            Page page = new Page();
-            page.setCurrent(String.valueOf(1));
-            page.setSize(String.valueOf(1000));
+                StringBuffer specialCheckBuffer = null;
 
-            scoreDownloadRespDTO.setTaskId(baseItemByStatus.getTaskId());
-            scoreDownloadRespDTO.setCheckItemId(baseItemByStatus.getId());
-            scoreDownloadRespDTO.setPage(page);
-            System.out.println("【【加密前请求体】】" +JSON.toJSONString(scoreDownloadRespDTO));
-            //加密请求数据
-            String AESReportUnitDate = encrypt(JSON.toJSONString(scoreDownloadRespDTO), key.getBytes(), iv.getBytes());
-            System.out.println("【【加密请求体】】" +AESReportUnitDate);
-            String decrypt = decrypt(AESReportUnitDate, key.getBytes(), iv.getBytes());
-            System.out.println("【【解密请求体】】" +decrypt);
-            //上报数据
-            try {
-                URL url = new URL("http://120.71.182.198:9999/v1/data/receive/getCheckScore");
-                //得到连接对象
-                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();
+                TbBaseCheckItem baseItemByStatus = itemTbRepository.getBaseItemByStatus(date);
+
+                ScoreDownloadRespDTO scoreDownloadRespDTO = new ScoreDownloadRespDTO();
+
+                Page page = new Page();
+                page.setCurrent(String.valueOf(1));
+                page.setSize(String.valueOf(1000));
+
+                scoreDownloadRespDTO.setTaskId(baseItemByStatus.getTaskId());
+                scoreDownloadRespDTO.setCheckItemId(baseItemByStatus.getId());
+                scoreDownloadRespDTO.setPage(page);
+                System.out.println("【【加密前请求体】】" + JSON.toJSONString(scoreDownloadRespDTO));
+                //加密请求数据
+                String AESReportUnitDate = encrypt(JSON.toJSONString(scoreDownloadRespDTO), key.getBytes(), iv.getBytes());
+                System.out.println("【【加密请求体】】" + AESReportUnitDate);
+                String decrypt = decrypt(AESReportUnitDate, key.getBytes(), iv.getBytes());
+                System.out.println("【【解密请求体】】" + decrypt);
+                //上报数据
+                try {
+                    URL url = new URL("http://120.71.182.198:9999/v1/data/receive/getCheckScore");
+                    //得到连接对象
+                    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); /**封装数据*/
 //                System.out.println("【【加密请求体】】" +  JSONArray.toJSON(paraMap).toString());
-                //组装入参,设置请求体
-                os.write(JSON.toJSONString(scoreDownloadRespDTO).getBytes());
+                    //组装入参,设置请求体
+                    os.write(JSON.toJSONString(scoreDownloadRespDTO).getBytes());
 
-                //本段日志,测试成功后,可注释掉
-                if (responseCode == HttpURLConnection.HTTP_OK) {
-                    //得到响应流
-                    InputStream inputStream = con.getInputStream();
-                    //将响应流转换成字符串
-                    specialCheckBuffer = new StringBuffer();
-                    String line;
-                    buffer = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
-                    while ((line = buffer.readLine()) != null) {
-                        specialCheckBuffer.append(line);
-                    }
+                    //本段日志,测试成功后,可注释掉
+                    if (responseCode == HttpURLConnection.HTTP_OK) {
+                        //得到响应流
+                        InputStream inputStream = con.getInputStream();
+                        //将响应流转换成字符串
+                        specialCheckBuffer = new StringBuffer();
+                        String line;
+                        buffer = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
+                        while ((line = buffer.readLine()) != null) {
+                            specialCheckBuffer.append(line);
+                        }
 //                    logger.info("result:" + unitResultBuffer.toString());
-                    System.out.println("result:" + specialCheckBuffer.toString());
+                        System.out.println("result:" + specialCheckBuffer.toString());
+                    }
+
+                } catch (Exception e) {
+                    e.printStackTrace();
                 }
 
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
+                //接收返回值,保存返回值
+                ScoreDownloadRespBO scoreDownloadRespBO = JSONObject.parseObject(specialCheckBuffer.toString(), ScoreDownloadRespBO.class);
 
-            //接收返回值,保存返回值
-            ScoreDownloadRespBO scoreDownloadRespBO = JSONObject.parseObject(specialCheckBuffer.toString(), ScoreDownloadRespBO.class);
-
-            String data = scoreDownloadRespBO.getData();
-            if (ObjectUtils.isNotEmpty(data)){
-                JSONObject jsonObject = JSON.parseObject(data);
-                String data1 = jsonObject.get("data").toString();
-                List<TbBaseCheckScore> tbBaseCheckScores = JSONObject.parseArray(data1, TbBaseCheckScore.class);
-                    if (ObjectUtils.isNotEmpty(tbBaseCheckScores)){
+                String data = scoreDownloadRespBO.getData();
+                if (ObjectUtils.isNotEmpty(data)) {
+                    JSONObject jsonObject = JSON.parseObject(data);
+                    String data1 = jsonObject.get("data").toString();
+                    List<TbBaseCheckScore> tbBaseCheckScores = JSONObject.parseArray(data1, TbBaseCheckScore.class);
+                    if (ObjectUtils.isNotEmpty(tbBaseCheckScores)) {
                         for (TbBaseCheckScore item : tbBaseCheckScores) {
                             item.setId(item.getScoreId());
                             int insert = scoreTbRepository.save(item);
                         }
 
                     }
+
+                }
+
+                itemTbRepository.updateStatusById(baseItemByStatus.getId());
+
+                logger.info("【评分细则】-读取结果:" + scoreDownloadRespBO.getCode());
+                System.out.println("【评分细则】-读取完成");
+
+                sleep(6000);
             }
-
-            itemTbRepository.updateStatusById(baseItemByStatus.getId());
-
-            logger.info("【评分细则】-读取结果:" + scoreDownloadRespBO.getCode());
-            System.out.println("【评分细则】-读取完成");
-        }else {
+        } else {
             System.out.println("【评分细则】- 不读取");
         }
 

--
Gitblit v1.9.2