guoshilong
2023-09-25 03b2e2034f73abfe5f865a72361fee9fa5c1feec
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/feign/PatrolTaskImplClient.java
@@ -1,23 +1,33 @@
package cn.gistack.sm.patrol.feign;
import cn.gistack.sm.intelligentCall.constant.ZtConstant;
import cn.gistack.sm.intelligentCall.service.CallService;
import cn.gistack.sm.patrol.entity.PatrolTask;
import cn.gistack.sm.patrol.service.IPatrolTaskService;
import cn.gistack.sm.sjztmd.entity.PatrolResponsiblePerson;
import cn.gistack.sm.sjztmd.service.IAttResManagePersonService;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.utils.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import springfox.documentation.annotations.ApiIgnore;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
/**
@@ -33,9 +43,25 @@
@Slf4j
public class PatrolTaskImplClient implements PatrolTaskClient {
   //本地测试
   private static final String LOCAL = "https://sk.hubeishuiyi.cn";
   //线上
   private static final String ONLINE = "http://10.42.6.192";
   private final IPatrolTaskService patrolTaskService;
   private final IAttResManagePersonService attResManagePersonService;
   @Autowired
   private RestTemplate restTemplate;
   /**
    * 超汛限(包含汛限值0)
    */
   private static final String GET_OVER_RZ =ONLINE +  "/services/1234567890ABCDEFGHIJKLMN/over_z_last/patr_person/api?start_over=0&pageNo=1&pageSize=2000";
   /**
    * 病险水库
    */
   private static final String GET_ILL_RESERVOIR =ONLINE +  "/services/1234567890ABCDEFGHIJKLMN/res/main_st/rsvr?eng_scal=&res_nm=&is_danger=true&res_cds=&is_video=&flag=&data_sta=&gate=&is_order=1&label=&bas_nm=&pageNo=1&pageSize=10000";
   /**
    * 给巡查责任人定时创建任务执行器
@@ -52,6 +78,111 @@
                                   String title,
                                   String content) {
      List<PatrolResponsiblePerson> patrolResponsiblePersonList =  attResManagePersonService.getPatrolResponsiblePersonAll();
      List<Integer> taskJob = createTaskJob(processDefinitionId, taskType, title, content, patrolResponsiblePersonList);
      return taskJob;
   }
   @Override
   @GetMapping(CREATE_TASK_JOB_BY_CONDITION_HANDLER)
   public List<Integer> createTaskJobByConditionHandler(String processDefinitionId, String taskType, String title, String content) {
      List<String> reservoirList = new ArrayList<>();
      //获取病险水库数据
      JSONArray overList = apiRequestResult(null, GET_OVER_RZ);
      for (int i = 0; i < overList.size(); i++) {
         JSONObject reservoir = overList.getJSONObject(i);
         reservoirList.add(reservoir.getString("res_cd"));
      }
      JSONArray illList = apiRequestData(null, GET_ILL_RESERVOIR);
      for (int i = 0; i < illList.size(); i++) {
         JSONObject reservoir = illList.getJSONObject(i);
         reservoirList.add(reservoir.getString("res_cd"));
      }
      List<PatrolResponsiblePerson> patrolResponsiblePersonList =  attResManagePersonService.getPatrolResponsiblePersonByResCdList(reservoirList);
      List<Integer> taskJob = createTaskJob(processDefinitionId, taskType, title, content, patrolResponsiblePersonList);
      return taskJob;
   }
   /**
    * 请求中台接口,返回resultList结果集
    * @param params
    * @return
    */
   private JSONArray apiRequestResult(Map<String, Object> params,String url) {
      //设置请求头
      HttpHeaders headers = new HttpHeaders();
      headers.add(ZtConstant.header_key, ZtConstant.header_value);
      //封装请求头
      HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<MultiValueMap<String, Object>>(headers);
      try {
         //有请求头,有参数请求
         ResponseEntity<String> responseEntity =
            restTemplate.exchange(url,
               HttpMethod.GET,
               formEntity,
               String.class);
         JSONObject jsonObject = JSON.parseObject(responseEntity.getBody());
         JSONArray jsonArray = JSONArray.parseArray(jsonObject.get("resultList").toString());
         // 返回
         return jsonArray;
      } catch (Exception e) {
         e.printStackTrace();
      }
      return null;
   }
   /**
    * 请求中台接口,返回data结果集
    * @param params
    * @return
    */
   private JSONArray apiRequestData(Map<String, Object> params,String url) {
      //设置请求头
      HttpHeaders headers = new HttpHeaders();
      headers.add(ZtConstant.header_key, ZtConstant.header_value);
      //封装请求头
      HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<MultiValueMap<String, Object>>(headers);
      try {
         //有请求头,有参数请求
         ResponseEntity<String> responseEntity =
            restTemplate.exchange(url,
               HttpMethod.GET,
               formEntity,
               String.class);
         JSONObject jsonObject = JSON.parseObject(responseEntity.getBody());
         JSONObject data = JSON.parseObject(jsonObject.get("data").toString());
         JSONArray dataList = data.getJSONArray("data");
         // 返回
         return dataList;
      } catch (Exception e) {
         e.printStackTrace();
      }
      return null;
   }
   /**
    * 创建任务的方法
    * @param processDefinitionId
    * @param taskType
    * @param title
    * @param content
    * @param patrolResponsiblePersonList
    * @return
    */
   public List<Integer> createTaskJob(String processDefinitionId,
                              String taskType,
                              String title,
                              String content,List<PatrolResponsiblePerson> patrolResponsiblePersonList){
      AtomicInteger failureCount = new AtomicInteger();
      patrolResponsiblePersonList.forEach(item -> {
         log.info("当前创建任务对象:" + JSON.toJSONString(item));
@@ -83,4 +214,6 @@
      // 返回
      return list;
   }
}