Forráskód Böngészése

成渝定时任务
1、阶梯处理
2、去掉多余的信息
3、token只保留30分钟

LHB 1 hete
szülő
commit
211d06f94f

+ 3 - 3
blade-service/blade-business/src/main/java/org/springblade/business/scheduled/ChenYuTestScheduled.java

@@ -193,7 +193,7 @@ public class ChenYuTestScheduled {
             JSONObject data = (JSONObject) result.getData();
             String newToken = data.getString("token");
             long expire = data.getLong("expireSecond") - 60;
-            bladeRedis.setEx(TOKEN_REDIS_KEY, newToken, expire);
+            bladeRedis.setEx(TOKEN_REDIS_KEY, newToken, 1800L);
             return newToken;
         } catch (Exception e) {
             log.error("Login process failed", e);
@@ -271,7 +271,7 @@ public class ChenYuTestScheduled {
     /**
      * 获取已完成的检测报告
      */
-    @Scheduled(cron = "0 0 * * * ?")
+    @Scheduled(cron = "0 05 * * * ?")
     public void getFinishTestReport() {
         if (!SystemUtils.isLinux()) {
             return;
@@ -408,7 +408,7 @@ public class ChenYuTestScheduled {
     /**
      * 获取第三方报告
      */
-    @Scheduled(cron = "0 0 * * * ?")
+    @Scheduled(cron = "0 05 * * * ?")
     public void getThirdReport() {
         if (!SystemUtils.isLinux()) {
             return;

+ 462 - 462
blade-service/blade-business/src/main/java/org/springblade/business/scheduled/ChenYuTestScheduled01.java

@@ -1,462 +1,462 @@
-package org.springblade.business.scheduled;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.alibaba.nacos.common.utils.MD5Utils;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.springblade.business.entity.TrialCyFinishTestReport;
-import org.springblade.business.entity.TrialCyTestType;
-import org.springblade.business.entity.TrialCyThirdReport;
-import org.springblade.business.scheduled.vo.GetFinishTestReport;
-import org.springblade.business.scheduled.vo.GetThirdReport;
-import org.springblade.business.scheduled.vo.Result;
-import org.springblade.business.scheduled.vo.ThirdLogin;
-import org.springblade.business.service.TrialCyFinishTestReportService;
-import org.springblade.business.service.TrialCyTestTypeService;
-import org.springblade.business.service.TrialCyThirdReportService;
-import org.springblade.common.utils.SystemUtils;
-import org.springblade.core.redis.cache.BladeRedis;
-import org.springblade.core.tool.utils.CollectionUtil;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.manager.entity.ContractInfo;
-import org.springblade.manager.entity.ProjectInfo;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.Resource;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * 成渝试验第三方接口获取数据
- * 定时任务
- *
- * @author LHB
- */
-@Component
-@Slf4j
-public class ChenYuTestScheduled01 {
-
-    @Resource
-    private JdbcTemplate jdbcTemplate;
-
-    @Resource
-    private BladeRedis bladeRedis;
-    /**
-     * 成渝-获取标段已完成(已签章完成)的检测报告
-     */
-    @Resource
-    private TrialCyFinishTestReportService trialCyFinishTestReportService;
-    /**
-     * 成渝-试验检测树
-     */
-    @Resource
-    private TrialCyTestTypeService trialCyTestTypeService;
-    /**
-     * 成渝-已上传的外委检测报告/ 第三方检测报告/ 上传报告
-     */
-    @Resource
-    private TrialCyThirdReportService trialCyThirdReportService;
-
-    // HTTP客户端复用
-    private CloseableHttpClient httpClient;
-
-    @PostConstruct
-    public void init() {
-        this.httpClient = HttpClientBuilder.create().build();
-    }
-
-    //token缓存key
-    private static final String TOKEN_REDIS_KEY = "blade:cqcy:token";
-
-    //项目编码
-    private static final String PROJECT_CODE = "cqcyfx";
-
-    //项目id
-    private static Long PROJECT_ID = null;
-
-    //接口域名
-    private final String URL = "https://apicqcyfx.qdm123.com";
-
-    //合同编码缓存
-    private final Map<String, Long> contractCodeMap = new ConcurrentHashMap<>();
-
-    /**
-     * 登录 获取token
-     */
-
-    public String thirdLogin() {
-        //TODO 从后台管理的配置中心获取
-        String url = "/api/ThirdSystem/ThirdLogin";
-
-
-        //获取项目id
-        String sql = "select id from m_project_info where project_number = ? and is_deleted = 0 limit 1";
-        ProjectInfo projectInfo = jdbcTemplate.queryForObject(sql, ProjectInfo.class, PROJECT_CODE);
-        PROJECT_ID = projectInfo.getId();
-
-
-        String getAppKeySql = "select param_value from blade_param where param_key = 'cy.trial.appKey' and is_deleted = 0";
-        String getAppSecretSql = "select param_value from blade_param where param_key = 'cy.trial.appSecret' and is_deleted = 0";
-        //后管配置 appKey
-        String appKey = jdbcTemplate.queryForObject(getAppKeySql, String.class);
-        //后管配置 appSecret
-        String appSecret = jdbcTemplate.queryForObject(getAppSecretSql, String.class);
-        if (StringUtil.isBlank(appKey) || StringUtil.isBlank(appSecret)) {
-            log.error("---------#后管未配置成渝-试验-授权码或私钥");
-            return null;
-        }
-        //当前时间戳
-        Long time = System.currentTimeMillis();
-
-        //加密
-        String md5Hex = MD5Utils.md5Hex(time + appKey + appSecret, "UTF-8");
-
-        ThirdLogin thirdLogin = new ThirdLogin();
-        thirdLogin.setAppKey(appKey);
-        thirdLogin.setTimestamp(time);
-        thirdLogin.setSecret(md5Hex);
-
-
-        Result post = this.post(URL + url, thirdLogin);
-        if (post == null) {
-            log.error("---------#成渝第三方接口访问失败");
-            return null;
-        }
-        Integer state = post.getState();
-        //成功
-        if (state == 1) {
-            JSONObject data = (JSONObject) post.getData();
-            bladeRedis.setEx(TOKEN_REDIS_KEY, data.getString("token"), data.getLong("expireSecond") - 60);
-            return data.getString("token");
-        } else {
-            log.error("---------#成渝第三方接口访问失败:" + post.getMessage());
-            return null;
-        }
-    }
-
-
-    /**
-     * 获取合同段列表接口
-     */
-    @Scheduled(cron = "0 0 * * * ?")
-    public void getContractSectByProjCode()     {
-        if(!SystemUtils.isLinux()){
-            return;
-        }
-        //清空缓存
-        contractCodeMap.clear();
-
-        String url = "/api/CQHCZC/MesureSystem/GetContractSectByProjCode";
-
-        String token = bladeRedis.get(TOKEN_REDIS_KEY);
-        if (token == null) {
-            token = thirdLogin();
-        }
-        if (token == null) {
-            log.error("---------#成渝第三方接口访问失败:token为空");
-            return;
-        }
-        if (PROJECT_ID == null) {
-            log.error("---------#成渝第三方接口访问失败:项目不存在");
-            return;
-        }
-
-
-        JSONObject jsonObject = new JSONObject();
-        jsonObject.put("token", token);
-        jsonObject.put("ProjectCode", PROJECT_CODE);
-
-        Result post = this.post(URL + url, jsonObject);
-
-        if (post == null) {
-            log.error("---------#成渝第三方接口访问失败");
-            return;
-        }
-        Integer state = post.getState();
-        //成功
-        if (state == 1) {
-            //合同段列表数据
-            JSONArray data = (JSONArray) post.getData();
-
-            List<String> codes = new ArrayList<>();
-
-            //返回的数据不能为空
-            if (CollectionUtil.isNotEmpty(data)) {
-                for (Object datum : data) {
-                    JSONObject jsonObject1 = (JSONObject) datum;
-                    String code = jsonObject1.getString("Code");
-                    //编码不能为空
-                    if (StringUtil.isNotBlank(code)) {
-                        codes.add(code);
-                    }
-                }
-            }
-            //封装需要查询的合同段
-            if (CollectionUtil.isNotEmpty(codes)) {
-                //使用参数化查询防止SQL注入
-                StringBuilder sqlBuilder = new StringBuilder("select * from m_contract_info where contract_number in (");
-                for (int i = 0; i < codes.size(); i++) {
-                    sqlBuilder.append(i == 0 ? "?" : ",?");
-                }
-                sqlBuilder.append(")");
-
-                //查询数据
-                List<ContractInfo> contractInfoList = jdbcTemplate.queryForList(sqlBuilder.toString(), ContractInfo.class, codes.toArray());
-                contractInfoList.forEach(f -> {
-                    contractCodeMap.put(f.getContractNumber(), f.getId());
-                });
-            }
-        } else {
-            log.error("---------#成渝第三方接口访问失败:" + post.getMessage());
-        }
-    }
-
-    /**
-     * 获取标段已完成(已签章完成)的检测报告
-     */
-    @Scheduled(cron = "0 0 * * * ?")
-    public void getFinishTestReport() {
-        if(!SystemUtils.isLinux()){
-            return;
-        }
-        String url = "/open/TestReport/GetFinishTestReport";
-
-        String token = bladeRedis.get(TOKEN_REDIS_KEY);
-        if (token == null) {
-            token = thirdLogin();
-        }
-        if (token == null) {
-            log.error("---------#成渝第三方接口访问失败:token为空");
-            return;
-        }
-        if (PROJECT_ID == null) {
-            log.error("---------#成渝第三方接口访问失败:项目不存在");
-            return;
-        }
-        //获取需要同步的合同段信息
-        Set<String> contractCodes = contractCodeMap.keySet();
-        if (CollectionUtil.isEmpty(contractCodes)) {
-            log.error("---------#成渝第三方接口访问失败:合同段编码无数据");
-            return;
-        }
-        for (String contractCode : contractCodes) {
-            GetFinishTestReport getFinishTestReport = new GetFinishTestReport(token, PROJECT_CODE, contractCode);
-
-            Integer pageIndex = 0;
-            Integer pageSize = 100;
-
-            do {
-                getFinishTestReport.setPageIndex(pageIndex);
-                getFinishTestReport.setPageSize(pageSize);
-
-                Result post = this.post(URL + url, getFinishTestReport);
-                if (post == null) {
-                    log.error("---------#成渝第三方接口访问失败:接口访问失败, contractCode: {}", contractCode);
-                    break; // 继续处理下一个合同段
-                }
-                Integer state = post.getState();
-                //成功
-                if (state == 1) {
-                    //检测报告列表
-                    JSONArray data = (JSONArray) post.getData();
-                    List<TrialCyFinishTestReport> list = data.toJavaList(TrialCyFinishTestReport.class);
-                    //退出循环
-                    if (CollectionUtil.isEmpty(list)) {
-                        break;
-                    }
-                    list.forEach(f -> f.setContractId(contractCodeMap.get(contractCode)));
-                    //处理数据
-                    trialCyFinishTestReportService.saveBatch(list);
-                    if (list.size() < pageSize) {
-                        break;
-                    }
-                    pageIndex++;
-                } else {
-                    log.error("---------#成渝第三方接口访问失败:{}, contractCode: {}", post.getMessage(), contractCode);
-                    break; // 继续处理下一个合同段
-                }
-            } while (true);
-        }
-    }
-
-    /**
-     * 获取已上传的外委检测报告/第三方检测报告/上传报告
-     */
-    @Scheduled(cron = "0 0 * * * ?")
-    public void getThirdReport() {
-        if(!SystemUtils.isLinux()){
-            return;
-        }
-        String url = "/open/ThirdReport/GetThirdReport";
-
-        String token = bladeRedis.get(TOKEN_REDIS_KEY);
-        if (token == null) {
-            token = thirdLogin();
-        }
-        if (token == null) {
-            log.error("---------#成渝第三方接口访问失败:token为空");
-            return;
-        }
-        if (PROJECT_ID == null) {
-            log.error("---------#成渝第三方接口访问失败:项目不存在");
-            return;
-        }
-        //获取需要同步的合同段信息
-        Set<String> contractCodes = contractCodeMap.keySet();
-        if (CollectionUtil.isEmpty(contractCodes)) {
-            log.error("---------#成渝第三方接口访问失败:合同段编码无数据");
-            return;
-        }
-        for (String contractCode : contractCodes) {
-            GetThirdReport getThirdReport = new GetThirdReport(token, PROJECT_CODE, contractCode);
-
-            Integer pageIndex = 0;
-            int pageSize = 100;
-
-            do {
-                getThirdReport.setPageIndex(pageIndex);
-                getThirdReport.setPageSize(pageSize);
-
-                Result post = this.post(URL + url, getThirdReport);
-                if (post == null) {
-                    log.error("---------#成渝第三方接口访问失败:接口访问失败, contractCode: {}", contractCode);
-                    break; // 继续处理下一个合同段
-                }
-                Integer state = post.getState();
-                //成功
-                if (state == 1) {
-                    //已上传的外委检测报告/第三方检测报告/上传报告
-                    JSONArray data = (JSONArray) post.getData();
-                    List<TrialCyThirdReport> list = data.toJavaList(TrialCyThirdReport.class);
-                    //退出循环
-                    if (CollectionUtil.isEmpty(list)) {
-                        break;
-                    }
-                    list.forEach(f -> f.setContractId(contractCodeMap.get(contractCode)));
-                    //处理数据
-                    trialCyThirdReportService.saveBatch(list);
-
-                    if (list.size() < pageSize) {
-                        break;
-                    }
-
-                    pageIndex++;
-                } else {
-                    log.error("---------#成渝第三方接口访问失败:{}, contractCode: {}", post.getMessage(), contractCode);
-                    break; // 继续处理下一个合同段
-                }
-            } while (true);
-        }
-    }
-
-    /**
-     * 获取检测项目树(包括自建试验、外委、第三方、上传报告)
-     */
-    @Scheduled(cron = "0 0 * * * ?")
-    public void getAllTestType() {
-        if(!SystemUtils.isLinux()){
-            return;
-        }
-
-        String url = "/open/ThirdReport/GetAllTestType";
-        String token = bladeRedis.get(TOKEN_REDIS_KEY);
-        if (token == null) {
-            token = thirdLogin();
-        }
-        if (token == null) {
-            log.error("---------#成渝第三方接口访问失败:token为空");
-            return;
-        }
-        if (PROJECT_ID == null) {
-            log.error("---------#成渝第三方接口访问失败:项目不存在");
-            return;
-        }
-
-        JSONObject jsonObject = new JSONObject();
-        jsonObject.put("token", token);
-        jsonObject.put("ProjectCode", PROJECT_CODE);
-
-        Result post = this.post(URL + url, jsonObject);
-
-        if (post == null) {
-            log.error("---------#成渝第三方接口访问失败:接口访问失败");
-            return;
-        }
-
-
-        Integer state = post.getState();
-        //成功
-        if (state == 1) {
-            //合同段列表数据
-            JSONArray data = (JSONArray) post.getData();
-            List<TrialCyTestType> list = data.toJavaList(TrialCyTestType.class);
-            //退出循环
-            if (CollectionUtil.isEmpty(list)) {
-                return;
-            }
-            list.forEach(f -> f.setProjectId(PROJECT_ID));
-            //处理数据
-            trialCyTestTypeService.saveOrUpdateBatch(list);
-        } else {
-            log.error("---------#成渝第三方接口访问失败:" + post.getMessage());
-        }
-    }
-
-
-    /**
-     * 封装请求参数
-     */
-    public Result post(String url, Object object) {
-        HttpPost httpPost = new HttpPost(url);
-        httpPost.setHeader("Content-Type", "application/json");
-
-        // 对象转json
-        StringEntity json = new StringEntity(JSON.toJSONString(object), "utf-8");
-        httpPost.setEntity(json);
-
-        try {
-            HttpResponse httpResponse = httpClient.execute(httpPost);
-
-            // 检查响应状态码
-            int statusCode = httpResponse.getStatusLine().getStatusCode();
-            if (statusCode != 200) {
-                log.warn("HTTP request failed with status code: {}", statusCode);
-                // 可以根据具体业务需求调整错误处理方式
-                return null;
-            }
-
-            try (InputStream inputStream = httpResponse.getEntity().getContent();
-                 ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
-
-                byte[] buffer = new byte[1024];
-                int index = 0;
-                while ((index = inputStream.read(buffer)) != -1) {
-                    outputStream.write(buffer, 0, index);
-                }
-                // 响应参数 - 指定明确的字符编码
-                Result result = JSON.parseObject(outputStream.toString("utf-8"), Result.class);
-                return result;
-            }
-        } catch (IOException e) {
-            log.error("HTTP request failed: ", e);
-            // 返回错误结果或抛出异常,根据业务需求决定
-            return null;
-        }
-    }
-
-}
+//package org.springblade.business.scheduled;
+//
+//import com.alibaba.fastjson.JSON;
+//import com.alibaba.fastjson.JSONArray;
+//import com.alibaba.fastjson.JSONObject;
+//import com.alibaba.nacos.common.utils.MD5Utils;
+//import lombok.extern.slf4j.Slf4j;
+//import org.apache.http.HttpResponse;
+//import org.apache.http.client.methods.HttpPost;
+//import org.apache.http.entity.StringEntity;
+//import org.apache.http.impl.client.CloseableHttpClient;
+//import org.apache.http.impl.client.HttpClientBuilder;
+//import org.springblade.business.entity.TrialCyFinishTestReport;
+//import org.springblade.business.entity.TrialCyTestType;
+//import org.springblade.business.entity.TrialCyThirdReport;
+//import org.springblade.business.scheduled.vo.GetFinishTestReport;
+//import org.springblade.business.scheduled.vo.GetThirdReport;
+//import org.springblade.business.scheduled.vo.Result;
+//import org.springblade.business.scheduled.vo.ThirdLogin;
+//import org.springblade.business.service.TrialCyFinishTestReportService;
+//import org.springblade.business.service.TrialCyTestTypeService;
+//import org.springblade.business.service.TrialCyThirdReportService;
+//import org.springblade.common.utils.SystemUtils;
+//import org.springblade.core.redis.cache.BladeRedis;
+//import org.springblade.core.tool.utils.CollectionUtil;
+//import org.springblade.core.tool.utils.StringUtil;
+//import org.springblade.manager.entity.ContractInfo;
+//import org.springblade.manager.entity.ProjectInfo;
+//import org.springframework.jdbc.core.JdbcTemplate;
+//import org.springframework.scheduling.annotation.Scheduled;
+//import org.springframework.stereotype.Component;
+//
+//import javax.annotation.PostConstruct;
+//import javax.annotation.Resource;
+//import java.io.ByteArrayOutputStream;
+//import java.io.IOException;
+//import java.io.InputStream;
+//import java.util.ArrayList;
+//import java.util.List;
+//import java.util.Map;
+//import java.util.Set;
+//import java.util.concurrent.ConcurrentHashMap;
+//
+///**
+// * 成渝试验第三方接口获取数据
+// * 定时任务
+// *
+// * @author LHB
+// */
+////@Component
+//@Slf4j
+//public class ChenYuTestScheduled01 {
+//
+//    @Resource
+//    private JdbcTemplate jdbcTemplate;
+//
+//    @Resource
+//    private BladeRedis bladeRedis;
+//    /**
+//     * 成渝-获取标段已完成(已签章完成)的检测报告
+//     */
+//    @Resource
+//    private TrialCyFinishTestReportService trialCyFinishTestReportService;
+//    /**
+//     * 成渝-试验检测树
+//     */
+//    @Resource
+//    private TrialCyTestTypeService trialCyTestTypeService;
+//    /**
+//     * 成渝-已上传的外委检测报告/ 第三方检测报告/ 上传报告
+//     */
+//    @Resource
+//    private TrialCyThirdReportService trialCyThirdReportService;
+//
+//    // HTTP客户端复用
+//    private CloseableHttpClient httpClient;
+//
+//    @PostConstruct
+//    public void init() {
+//        this.httpClient = HttpClientBuilder.create().build();
+//    }
+//
+//    //token缓存key
+//    private static final String TOKEN_REDIS_KEY = "blade:cqcy:token";
+//
+//    //项目编码
+//    private static final String PROJECT_CODE = "cqcyfx";
+//
+//    //项目id
+//    private static Long PROJECT_ID = null;
+//
+//    //接口域名
+//    private final String URL = "https://apicqcyfx.qdm123.com";
+//
+//    //合同编码缓存
+//    private final Map<String, Long> contractCodeMap = new ConcurrentHashMap<>();
+//
+//    /**
+//     * 登录 获取token
+//     */
+//
+//    public String thirdLogin() {
+//        //TODO 从后台管理的配置中心获取
+//        String url = "/api/ThirdSystem/ThirdLogin";
+//
+//
+//        //获取项目id
+//        String sql = "select id from m_project_info where project_number = ? and is_deleted = 0 limit 1";
+//        ProjectInfo projectInfo = jdbcTemplate.queryForObject(sql, ProjectInfo.class, PROJECT_CODE);
+//        PROJECT_ID = projectInfo.getId();
+//
+//
+//        String getAppKeySql = "select param_value from blade_param where param_key = 'cy.trial.appKey' and is_deleted = 0";
+//        String getAppSecretSql = "select param_value from blade_param where param_key = 'cy.trial.appSecret' and is_deleted = 0";
+//        //后管配置 appKey
+//        String appKey = jdbcTemplate.queryForObject(getAppKeySql, String.class);
+//        //后管配置 appSecret
+//        String appSecret = jdbcTemplate.queryForObject(getAppSecretSql, String.class);
+//        if (StringUtil.isBlank(appKey) || StringUtil.isBlank(appSecret)) {
+//            log.error("---------#后管未配置成渝-试验-授权码或私钥");
+//            return null;
+//        }
+//        //当前时间戳
+//        Long time = System.currentTimeMillis();
+//
+//        //加密
+//        String md5Hex = MD5Utils.md5Hex(time + appKey + appSecret, "UTF-8");
+//
+//        ThirdLogin thirdLogin = new ThirdLogin();
+//        thirdLogin.setAppKey(appKey);
+//        thirdLogin.setTimestamp(time);
+//        thirdLogin.setSecret(md5Hex);
+//
+//
+//        Result post = this.post(URL + url, thirdLogin);
+//        if (post == null) {
+//            log.error("---------#成渝第三方接口访问失败");
+//            return null;
+//        }
+//        Integer state = post.getState();
+//        //成功
+//        if (state == 1) {
+//            JSONObject data = (JSONObject) post.getData();
+//            bladeRedis.setEx(TOKEN_REDIS_KEY, data.getString("token"), data.getLong("expireSecond") - 60);
+//            return data.getString("token");
+//        } else {
+//            log.error("---------#成渝第三方接口访问失败:" + post.getMessage());
+//            return null;
+//        }
+//    }
+//
+//
+//    /**
+//     * 获取合同段列表接口
+//     */
+//    @Scheduled(cron = "0 0 * * * ?")
+//    public void getContractSectByProjCode()     {
+//        if(!SystemUtils.isLinux()){
+//            return;
+//        }
+//        //清空缓存
+//        contractCodeMap.clear();
+//
+//        String url = "/api/CQHCZC/MesureSystem/GetContractSectByProjCode";
+//
+//        String token = bladeRedis.get(TOKEN_REDIS_KEY);
+//        if (token == null) {
+//            token = thirdLogin();
+//        }
+//        if (token == null) {
+//            log.error("---------#成渝第三方接口访问失败:token为空");
+//            return;
+//        }
+//        if (PROJECT_ID == null) {
+//            log.error("---------#成渝第三方接口访问失败:项目不存在");
+//            return;
+//        }
+//
+//
+//        JSONObject jsonObject = new JSONObject();
+//        jsonObject.put("token", token);
+//        jsonObject.put("ProjectCode", PROJECT_CODE);
+//
+//        Result post = this.post(URL + url, jsonObject);
+//
+//        if (post == null) {
+//            log.error("---------#成渝第三方接口访问失败");
+//            return;
+//        }
+//        Integer state = post.getState();
+//        //成功
+//        if (state == 1) {
+//            //合同段列表数据
+//            JSONArray data = (JSONArray) post.getData();
+//
+//            List<String> codes = new ArrayList<>();
+//
+//            //返回的数据不能为空
+//            if (CollectionUtil.isNotEmpty(data)) {
+//                for (Object datum : data) {
+//                    JSONObject jsonObject1 = (JSONObject) datum;
+//                    String code = jsonObject1.getString("Code");
+//                    //编码不能为空
+//                    if (StringUtil.isNotBlank(code)) {
+//                        codes.add(code);
+//                    }
+//                }
+//            }
+//            //封装需要查询的合同段
+//            if (CollectionUtil.isNotEmpty(codes)) {
+//                //使用参数化查询防止SQL注入
+//                StringBuilder sqlBuilder = new StringBuilder("select * from m_contract_info where contract_number in (");
+//                for (int i = 0; i < codes.size(); i++) {
+//                    sqlBuilder.append(i == 0 ? "?" : ",?");
+//                }
+//                sqlBuilder.append(")");
+//
+//                //查询数据
+//                List<ContractInfo> contractInfoList = jdbcTemplate.queryForList(sqlBuilder.toString(), ContractInfo.class, codes.toArray());
+//                contractInfoList.forEach(f -> {
+//                    contractCodeMap.put(f.getContractNumber(), f.getId());
+//                });
+//            }
+//        } else {
+//            log.error("---------#成渝第三方接口访问失败:" + post.getMessage());
+//        }
+//    }
+//
+//    /**
+//     * 获取标段已完成(已签章完成)的检测报告
+//     */
+//    @Scheduled(cron = "0 0 * * * ?")
+//    public void getFinishTestReport() {
+//        if(!SystemUtils.isLinux()){
+//            return;
+//        }
+//        String url = "/open/TestReport/GetFinishTestReport";
+//
+//        String token = bladeRedis.get(TOKEN_REDIS_KEY);
+//        if (token == null) {
+//            token = thirdLogin();
+//        }
+//        if (token == null) {
+//            log.error("---------#成渝第三方接口访问失败:token为空");
+//            return;
+//        }
+//        if (PROJECT_ID == null) {
+//            log.error("---------#成渝第三方接口访问失败:项目不存在");
+//            return;
+//        }
+//        //获取需要同步的合同段信息
+//        Set<String> contractCodes = contractCodeMap.keySet();
+//        if (CollectionUtil.isEmpty(contractCodes)) {
+//            log.error("---------#成渝第三方接口访问失败:合同段编码无数据");
+//            return;
+//        }
+//        for (String contractCode : contractCodes) {
+//            GetFinishTestReport getFinishTestReport = new GetFinishTestReport(token, PROJECT_CODE, contractCode);
+//
+//            Integer pageIndex = 0;
+//            Integer pageSize = 100;
+//
+//            do {
+//                getFinishTestReport.setPageIndex(pageIndex);
+//                getFinishTestReport.setPageSize(pageSize);
+//
+//                Result post = this.post(URL + url, getFinishTestReport);
+//                if (post == null) {
+//                    log.error("---------#成渝第三方接口访问失败:接口访问失败, contractCode: {}", contractCode);
+//                    break; // 继续处理下一个合同段
+//                }
+//                Integer state = post.getState();
+//                //成功
+//                if (state == 1) {
+//                    //检测报告列表
+//                    JSONArray data = (JSONArray) post.getData();
+//                    List<TrialCyFinishTestReport> list = data.toJavaList(TrialCyFinishTestReport.class);
+//                    //退出循环
+//                    if (CollectionUtil.isEmpty(list)) {
+//                        break;
+//                    }
+//                    list.forEach(f -> f.setContractId(contractCodeMap.get(contractCode)));
+//                    //处理数据
+//                    trialCyFinishTestReportService.saveBatch(list);
+//                    if (list.size() < pageSize) {
+//                        break;
+//                    }
+//                    pageIndex++;
+//                } else {
+//                    log.error("---------#成渝第三方接口访问失败:{}, contractCode: {}", post.getMessage(), contractCode);
+//                    break; // 继续处理下一个合同段
+//                }
+//            } while (true);
+//        }
+//    }
+//
+//    /**
+//     * 获取已上传的外委检测报告/第三方检测报告/上传报告
+//     */
+//    @Scheduled(cron = "0 0 * * * ?")
+//    public void getThirdReport() {
+//        if(!SystemUtils.isLinux()){
+//            return;
+//        }
+//        String url = "/open/ThirdReport/GetThirdReport";
+//
+//        String token = bladeRedis.get(TOKEN_REDIS_KEY);
+//        if (token == null) {
+//            token = thirdLogin();
+//        }
+//        if (token == null) {
+//            log.error("---------#成渝第三方接口访问失败:token为空");
+//            return;
+//        }
+//        if (PROJECT_ID == null) {
+//            log.error("---------#成渝第三方接口访问失败:项目不存在");
+//            return;
+//        }
+//        //获取需要同步的合同段信息
+//        Set<String> contractCodes = contractCodeMap.keySet();
+//        if (CollectionUtil.isEmpty(contractCodes)) {
+//            log.error("---------#成渝第三方接口访问失败:合同段编码无数据");
+//            return;
+//        }
+//        for (String contractCode : contractCodes) {
+//            GetThirdReport getThirdReport = new GetThirdReport(token, PROJECT_CODE, contractCode);
+//
+//            Integer pageIndex = 0;
+//            int pageSize = 100;
+//
+//            do {
+//                getThirdReport.setPageIndex(pageIndex);
+//                getThirdReport.setPageSize(pageSize);
+//
+//                Result post = this.post(URL + url, getThirdReport);
+//                if (post == null) {
+//                    log.error("---------#成渝第三方接口访问失败:接口访问失败, contractCode: {}", contractCode);
+//                    break; // 继续处理下一个合同段
+//                }
+//                Integer state = post.getState();
+//                //成功
+//                if (state == 1) {
+//                    //已上传的外委检测报告/第三方检测报告/上传报告
+//                    JSONArray data = (JSONArray) post.getData();
+//                    List<TrialCyThirdReport> list = data.toJavaList(TrialCyThirdReport.class);
+//                    //退出循环
+//                    if (CollectionUtil.isEmpty(list)) {
+//                        break;
+//                    }
+//                    list.forEach(f -> f.setContractId(contractCodeMap.get(contractCode)));
+//                    //处理数据
+//                    trialCyThirdReportService.saveBatch(list);
+//
+//                    if (list.size() < pageSize) {
+//                        break;
+//                    }
+//
+//                    pageIndex++;
+//                } else {
+//                    log.error("---------#成渝第三方接口访问失败:{}, contractCode: {}", post.getMessage(), contractCode);
+//                    break; // 继续处理下一个合同段
+//                }
+//            } while (true);
+//        }
+//    }
+//
+//    /**
+//     * 获取检测项目树(包括自建试验、外委、第三方、上传报告)
+//     */
+//    @Scheduled(cron = "0 0 * * * ?")
+//    public void getAllTestType() {
+//        if(!SystemUtils.isLinux()){
+//            return;
+//        }
+//
+//        String url = "/open/ThirdReport/GetAllTestType";
+//        String token = bladeRedis.get(TOKEN_REDIS_KEY);
+//        if (token == null) {
+//            token = thirdLogin();
+//        }
+//        if (token == null) {
+//            log.error("---------#成渝第三方接口访问失败:token为空");
+//            return;
+//        }
+//        if (PROJECT_ID == null) {
+//            log.error("---------#成渝第三方接口访问失败:项目不存在");
+//            return;
+//        }
+//
+//        JSONObject jsonObject = new JSONObject();
+//        jsonObject.put("token", token);
+//        jsonObject.put("ProjectCode", PROJECT_CODE);
+//
+//        Result post = this.post(URL + url, jsonObject);
+//
+//        if (post == null) {
+//            log.error("---------#成渝第三方接口访问失败:接口访问失败");
+//            return;
+//        }
+//
+//
+//        Integer state = post.getState();
+//        //成功
+//        if (state == 1) {
+//            //合同段列表数据
+//            JSONArray data = (JSONArray) post.getData();
+//            List<TrialCyTestType> list = data.toJavaList(TrialCyTestType.class);
+//            //退出循环
+//            if (CollectionUtil.isEmpty(list)) {
+//                return;
+//            }
+//            list.forEach(f -> f.setProjectId(PROJECT_ID));
+//            //处理数据
+//            trialCyTestTypeService.saveOrUpdateBatch(list);
+//        } else {
+//            log.error("---------#成渝第三方接口访问失败:" + post.getMessage());
+//        }
+//    }
+//
+//
+//    /**
+//     * 封装请求参数
+//     */
+//    public Result post(String url, Object object) {
+//        HttpPost httpPost = new HttpPost(url);
+//        httpPost.setHeader("Content-Type", "application/json");
+//
+//        // 对象转json
+//        StringEntity json = new StringEntity(JSON.toJSONString(object), "utf-8");
+//        httpPost.setEntity(json);
+//
+//        try {
+//            HttpResponse httpResponse = httpClient.execute(httpPost);
+//
+//            // 检查响应状态码
+//            int statusCode = httpResponse.getStatusLine().getStatusCode();
+//            if (statusCode != 200) {
+//                log.warn("HTTP request failed with status code: {}", statusCode);
+//                // 可以根据具体业务需求调整错误处理方式
+//                return null;
+//            }
+//
+//            try (InputStream inputStream = httpResponse.getEntity().getContent();
+//                 ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
+//
+//                byte[] buffer = new byte[1024];
+//                int index = 0;
+//                while ((index = inputStream.read(buffer)) != -1) {
+//                    outputStream.write(buffer, 0, index);
+//                }
+//                // 响应参数 - 指定明确的字符编码
+//                Result result = JSON.parseObject(outputStream.toString("utf-8"), Result.class);
+//                return result;
+//            }
+//        } catch (IOException e) {
+//            log.error("HTTP request failed: ", e);
+//            // 返回错误结果或抛出异常,根据业务需求决定
+//            return null;
+//        }
+//    }
+//
+//}