guoshilong
2023-09-25 03b2e2034f73abfe5f865a72361fee9fa5c1feec
根据超汛限和病险对水库下发巡查任务
8 files modified
220 ■■■■■ changed files
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/patrol/feign/PatrolTaskClient.java 16 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/patrol/feign/PatrolTaskClientFallback.java 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/feign/PatrolTaskImplClient.java 135 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.java 2 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.xml 27 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResManagePersonService.java 7 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResManagePersonServiceImpl.java 6 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/PatrolXxlJob.java 22 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/patrol/feign/PatrolTaskClient.java
@@ -20,6 +20,8 @@
    String API_PREFIX = "/client";
    String CREATE_TASK_JOB_HANDLER = API_PREFIX + "/createTaskJobHandler";
    String CREATE_TASK_JOB_BY_CONDITION_HANDLER = API_PREFIX+"/createTaskJobByConditionHandler";
    /**
     * 给巡查责任人定时创建任务执行器
     * @param processDefinitionId
@@ -33,4 +35,18 @@
                                       @RequestParam("taskType") String taskType,
                                       @RequestParam("title") String title,
                                       @RequestParam("content") String content);
    /**
     * 给巡查责任人定时创建任务执行器
     * @param processDefinitionId
     * @param taskType
     * @param title
     * @param content
     * @return
     */
    @GetMapping(CREATE_TASK_JOB_BY_CONDITION_HANDLER)
    List<Integer> createTaskJobByConditionHandler(@RequestParam("processDefinitionId") String processDefinitionId,
                                       @RequestParam("taskType") String taskType,
                                       @RequestParam("title") String title,
                                       @RequestParam("content") String content);
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/patrol/feign/PatrolTaskClientFallback.java
@@ -16,4 +16,9 @@
    public List<Integer> createTaskJobHandler(String processDefinitionId, String taskType, String title, String content) {
        return null;
    }
    @Override
    public List<Integer> createTaskJobByConditionHandler(String processDefinitionId, String taskType, String title, String content) {
        return null;
    }
}
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;
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.java
@@ -61,4 +61,6 @@
    List<PersonVO> getCityCountyPersonListByResGuid(@Param("adCode") String res_cd,
                                                    @Param("roleAlias") String roleAlias,
                                                    @Param("type") String type);
    List<PatrolResponsiblePerson> getPatrolResponsiblePersonByResCdList(@Param("ids") List<String> reservoirList);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResManagePersonMapper.xml
@@ -185,5 +185,32 @@
        and bd.ad_code = #{adCode}
        limit 3
    </select>
    <select id="getPatrolResponsiblePersonByResCdList"
            resultType="cn.gistack.sm.sjztmd.entity.PatrolResponsiblePerson">
        select DISTINCT a."res_guid", c."name", b.id as user_id
        from "SJZT_MD"."att_res_manage_person" a,
             "BLADE_USER" b,
             "SJZT_MD"."att_res_base" c
        WHERE a."user_phone" = b.PHONE
          and a."res_guid" = c."guid"
          and a."type" = 5
        <choose>
            <when test="ids!=null and ids.size()>0">
                and "res_guid" in
                <foreach collection="ids" item="id" open="(" close=")" separator=",">
                    #{id}
                </foreach>
            </when>
            <otherwise>
                and "res_guid" in ('')
            </otherwise>
        </choose>
    </select>
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResManagePersonService.java
@@ -69,4 +69,11 @@
     * @return
     */
    List<PersonVO> getCityCountyPersonListByResGuid(String res_cd);
    /**
     * 根据水库id集合查询巡查责任人
     * @param reservoirList
     * @return
     */
    List<PatrolResponsiblePerson> getPatrolResponsiblePersonByResCdList(List<String> reservoirList);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResManagePersonServiceImpl.java
@@ -172,4 +172,10 @@
        // 返回
        return personVOList;
    }
    @DS("master")
    @Override
    public List<PatrolResponsiblePerson> getPatrolResponsiblePersonByResCdList(List<String> reservoirList) {
        return baseMapper.getPatrolResponsiblePersonByResCdList(reservoirList);
    }
}
skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/PatrolXxlJob.java
@@ -44,4 +44,26 @@
        XxlJobLogger.log("总数量:<span style='color:red'>" + taskJobHandler.get(0) + "</span> ... 失败数量:<span style='color:red'>" + taskJobHandler.get(1)  + "</span> ");
        return ReturnT.SUCCESS;
    }
    /**
     * 给巡查责任人定时创建任务执行器
     * @param param
     * @return
     * @throws Exception
     */
    @XxlJob("createTaskJobByConditionHandler")
    public ReturnT<String> createTaskJobByConditionHandler(String param){
        XxlJobLogger.log("开始自动创建任务...");
        JSONObject jsonParam = JSON.parseObject(param);
        String processDefinitionId = jsonParam.getString("processDefinitionId");
        String taskType = jsonParam.getString("taskType");
        String title = jsonParam.getString("title");
        String content = jsonParam.getString("content");
        // 远程调用
        List<Integer> taskJobHandler = patrolTasClient.createTaskJobByConditionHandler(processDefinitionId, taskType, title, content);
        // 打印响应数据
        XxlJobLogger.log("结束自动创建任务...");
        XxlJobLogger.log("总数量:<span style='color:red'>" + taskJobHandler.get(0) + "</span> ... 失败数量:<span style='color:red'>" + taskJobHandler.get(1)  + "</span> ");
        return ReturnT.SUCCESS;
    }
}