From e25630083c3afe7b615e32d99eef0cf0cb905c74 Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Tue, 14 Nov 2023 16:02:23 +0800
Subject: [PATCH] 新增周任务
---
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/feign/PatrolTaskImplClient.java | 192 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 190 insertions(+), 2 deletions(-)
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/feign/PatrolTaskImplClient.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/feign/PatrolTaskImplClient.java
index 62e617c..1470f82 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/feign/PatrolTaskImplClient.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/feign/PatrolTaskImplClient.java
@@ -1,23 +1,36 @@
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.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoField;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
/**
@@ -33,9 +46,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";
+
/**
* 给巡查责任人定时创建任务执行器
@@ -50,8 +79,113 @@
public List<Integer> createTaskJobHandler(String processDefinitionId,
String taskType,
String title,
- String content) {
+ String content, int type) {
List<PatrolResponsiblePerson> patrolResponsiblePersonList = attResManagePersonService.getPatrolResponsiblePersonAll();
+ List<Integer> taskJob = createTaskJob(processDefinitionId, taskType, title, content, type, 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));
@@ -71,6 +205,7 @@
// 创建任务
patrolTaskService.startProcess(patrolTask);
} catch (Exception e) {
+ log.error("创建任务失败:" + e.getMessage());
log.error("创建任务失败对象:" + JSON.toJSONString(item));
failureCount.getAndIncrement();
}
@@ -82,4 +217,57 @@
// 返回
return list;
}
+
+ public List<Integer> createTaskJob(String processDefinitionId,
+ String taskType,
+ String title,
+ String content,
+ int type,
+ List<PatrolResponsiblePerson> patrolResponsiblePersonList){
+ AtomicInteger failureCount = new AtomicInteger();
+ patrolResponsiblePersonList.forEach(item -> {
+ log.info("当前创建任务对象:" + JSON.toJSONString(item));
+ try {
+ PatrolTask patrolTask = new PatrolTask();
+ patrolTask.setProcessDefinitionId(processDefinitionId);
+ patrolTask.setToUserId(item.getUserId());
+ patrolTask.setProjectId(item.getResGuid());
+ patrolTask.setReservoirName(item.getName());
+ // 开始时间-结束时间
+ if (type == 1) { //周任务
+ LocalDate today = LocalDate.now();
+ LocalDate firstDayOfWeek = today.with(ChronoField.DAY_OF_WEEK, 1);
+ LocalDate lastDayOfWeek = today.with(ChronoField.DAY_OF_WEEK, 7);
+
+ String firstDayOfWeekString = firstDayOfWeek.format(DateTimeFormatter.ofPattern("yyyy-MM-dd 00:00:00"));
+ String lastDayOfWeekString = lastDayOfWeek.format(DateTimeFormatter.ofPattern("yyyy-MM-dd 23:59:59"));
+
+ patrolTask.setStartTime(firstDayOfWeekString);
+ patrolTask.setEndTime(lastDayOfWeekString);
+ } else { // 默认天任务
+ patrolTask.setStartTime(DateUtil.format(new Date(),"yyyy-MM-dd 00:00:00"));
+ patrolTask.setEndTime(DateUtil.format(new Date(),"yyyy-MM-dd 23:59:59"));
+ }
+
+ // 标题格式 月-日 水库名称 每日巡检任务
+ patrolTask.setTitle(DateUtil.format(new Date(),"MM-dd") + item.getName() + "-" + title);
+ patrolTask.setContent(DateUtil.format(new Date(),"yyyyMMdd") +content);
+ patrolTask.setTaskType(taskType);
+ // 创建任务
+ patrolTaskService.startProcess(patrolTask);
+ } catch (Exception e) {
+ log.error("创建任务失败:" + e.getMessage());
+ log.error("创建任务失败对象:" + JSON.toJSONString(item));
+ failureCount.getAndIncrement();
+ }
+
+ });
+ List<Integer> list = new ArrayList<>();
+ list.add(patrolResponsiblePersonList.size());
+ list.add(failureCount.get());
+ // 返回
+ return list;
+ }
+
+
}
--
Gitblit v1.9.3