From fc030d197a869d5fecab582d36ff17be7e67cc3f Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Mon, 24 Apr 2023 15:41:22 +0800
Subject: [PATCH] 巡查工作流接入
---
skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/feign/IFlowClientFallback.java | 12 +
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolGroupController.java | 16 +
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolTaskMapper.java | 2
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolReportServiceImpl.java | 17 +
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/PatrolReportVO.java | 28 ++
skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/utils/FlowUtil.java | 1
skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/feign/FlowClient.java | 28 ++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/PatrolTaskVO.java | 5
skjcmanager/skjcmanager-service-api/skjcmanager-user-api/src/main/java/cn/gistack/system/user/vo/UserVO.java | 5
skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/controller/UserController.java | 24 ++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/entity/PatrolReport.java | 49 +++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/BladeFlowTask.java | 23 +
skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/mapper/UserMapper.xml | 5
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolTaskMapper.xml | 8
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolTaskServiceImpl.java | 141 +++++++++++
skjcmanager/skjcmanager-service/skjcmanager-sm/pom.xml | 6
skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/mapper/UserMapper.java | 2
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/dto/PatrolGroupDTO.java | 15 +
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolRecordMapper.xml | 2
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolGroupService.java | 5
skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/IUserService.java | 2
skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserServiceImpl.java | 5
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolGroupServiceImpl.java | 11
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/entity/PatrolTask.java | 33 ++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolTaskService.java | 20 +
skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/service/FlowBusinessService.java | 11
skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/service/impl/FlowBusinessServiceImpl.java | 47 +++
skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/constant/ProcessConstant.java | 20 +
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolTaskController.java | 75 ++++++
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolGroupMapper.java | 5
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolGroupMapper.xml | 38 +++
skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/feign/IFlowClient.java | 21 +
32 files changed, 664 insertions(+), 18 deletions(-)
diff --git a/skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/constant/ProcessConstant.java b/skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/constant/ProcessConstant.java
index e7c028b..5e851c0 100644
--- a/skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/constant/ProcessConstant.java
+++ b/skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/constant/ProcessConstant.java
@@ -24,6 +24,11 @@
public interface ProcessConstant {
/**
+ * 巡查流程标识
+ */
+ String PATROL_KEY = "Patrol";
+
+ /**
* 请假流程标识
*/
String LEAVE_KEY = "Leave";
@@ -39,6 +44,21 @@
String PASS_KEY = "pass";
/**
+ * 上报标识
+ */
+ String REPORT_KEY = "report";
+
+ /**
+ * 上报至部门标识
+ */
+ String TODEPT_KEY = "toDept";
+
+ /**
+ * 转送给技术负责人标识
+ */
+ String TOTECH_KEY = "toTech";
+
+ /**
* 同意代号
*/
String PASS_ALIAS = "ok";
diff --git a/skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/feign/IFlowClient.java b/skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/feign/IFlowClient.java
index b5c0c89..baab1d8 100644
--- a/skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/feign/IFlowClient.java
+++ b/skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/feign/IFlowClient.java
@@ -16,6 +16,7 @@
*/
package cn.gistack.flow.core.feign;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.tool.api.R;
import cn.gistack.flow.core.entity.BladeFlow;
@@ -25,6 +26,7 @@
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
+import java.util.List;
import java.util.Map;
/**
@@ -44,6 +46,8 @@
String COMPLETE_TASK = API_PREFIX + "/complete-task";
String TASK_VARIABLE = API_PREFIX + "/task-variable";
String TASK_VARIABLES = API_PREFIX + "/task-variables";
+ String TODO_LIST = "/todo-list";
+ String GET_BLADEFLOW = "/getBladeFlow";
/**
* 开启流程
@@ -97,4 +101,21 @@
*/
@GetMapping(TASK_VARIABLES)
R<Map<String, Object>> taskVariables(@RequestParam("taskId") String taskId);
+
+ /**
+ * 获取流程变量集合
+ *
+ * @param businessId 业务id
+ * @return R
+ */
+ @GetMapping(GET_BLADEFLOW)
+ R<BladeFlow> getBladeFlow(@RequestParam("businessId") String businessId,@RequestParam("currentUserId") String currentUserId);
+
+ /**
+ * 获取待办业务
+ *
+ * @return R
+ */
+ @PostMapping(TODO_LIST)
+ R<List<BladeFlow>> getTodoBladeFlowList(@RequestParam("size") Integer size,@RequestParam("current") Integer current,@RequestParam("currentUserId") String currentUserId,@RequestBody BladeFlow bladeFlow);
}
diff --git a/skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/feign/IFlowClientFallback.java b/skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/feign/IFlowClientFallback.java
index a8149be..b3facad 100644
--- a/skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/feign/IFlowClientFallback.java
+++ b/skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/feign/IFlowClientFallback.java
@@ -16,10 +16,12 @@
*/
package cn.gistack.flow.core.feign;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.tool.api.R;
import cn.gistack.flow.core.entity.BladeFlow;
import org.springframework.stereotype.Component;
+import java.util.List;
import java.util.Map;
/**
@@ -55,4 +57,14 @@
return R.fail("远程调用失败");
}
+ @Override
+ public R<BladeFlow> getBladeFlow(String businessId,String currentUserId) {
+ return R.fail("远程调用失败");
+ }
+
+ @Override
+ public R<List<BladeFlow>> getTodoBladeFlowList(Integer size, Integer current, String currentUserId, BladeFlow bladeFlow) {
+ return R.fail("远程调用失败");
+ }
+
}
diff --git a/skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/utils/FlowUtil.java b/skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/utils/FlowUtil.java
index 05b9eb4..b547a47 100644
--- a/skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/utils/FlowUtil.java
+++ b/skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/utils/FlowUtil.java
@@ -37,6 +37,7 @@
static {
BUSINESS_TABLE.put(ProcessConstant.LEAVE_KEY, "blade_process_leave");
+ BUSINESS_TABLE.put(ProcessConstant.PATROL_KEY,"sm_patrol_task");
}
/**
diff --git a/skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/feign/FlowClient.java b/skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/feign/FlowClient.java
index 1960028..17edaa9 100644
--- a/skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/feign/FlowClient.java
+++ b/skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/feign/FlowClient.java
@@ -16,24 +16,26 @@
*/
package cn.gistack.flow.business.feign;
+import cn.gistack.flow.business.service.FlowBusinessService;
import cn.gistack.flow.core.entity.BladeFlow;
import cn.gistack.flow.core.feign.IFlowClient;
import cn.gistack.flow.core.utils.TaskUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
import org.flowable.engine.IdentityService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.runtime.ProcessInstance;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.support.Kv;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import java.util.List;
import java.util.Map;
/**
@@ -49,6 +51,7 @@
private final RuntimeService runtimeService;
private final IdentityService identityService;
private final TaskService taskService;
+ private final FlowBusinessService flowBusinessService;
@Override
@PostMapping(START_PROCESS_INSTANCE_BY_ID)
@@ -104,4 +107,21 @@
return R.data(taskService.getVariables(taskId));
}
+ @Override
+ @GetMapping(GET_BLADEFLOW)
+ public R<BladeFlow> getBladeFlow(String businessId,String currentUserId) {
+ return R.data(flowBusinessService.getBladeFlowByBusinessId(businessId,currentUserId));
+ }
+
+ @Override
+ @PostMapping(TODO_LIST)
+ public R<List<BladeFlow>> getTodoBladeFlowList(Integer size, Integer current, String currentUserId, BladeFlow bladeFlow) {
+ Query query = new Query();
+ query.setCurrent(current);
+ query.setSize(size);
+ IPage<BladeFlow> bladeFlowIPage = flowBusinessService.selectTodoPage(Condition.getPage(query), bladeFlow, currentUserId);
+ return R.data(bladeFlowIPage.getRecords());
+ }
+
+
}
diff --git a/skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/service/FlowBusinessService.java b/skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/service/FlowBusinessService.java
index e949540..f7a961d 100644
--- a/skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/service/FlowBusinessService.java
+++ b/skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/service/FlowBusinessService.java
@@ -45,6 +45,15 @@
IPage<BladeFlow> selectTodoPage(IPage<BladeFlow> page, BladeFlow bladeFlow);
/**
+ * 流程待办列表
+ *
+ * @param page 分页工具
+ * @param bladeFlow 流程类
+ * @return
+ */
+ IPage<BladeFlow> selectTodoPage(IPage<BladeFlow> page, BladeFlow bladeFlow,String currentUserId);
+
+ /**
* 流程已发列表
*
* @param page 分页工具
@@ -69,4 +78,6 @@
* @return boolean
*/
boolean completeTask(BladeFlow leave);
+
+ BladeFlow getBladeFlowByBusinessId(String businessId,String currentUserId);
}
diff --git a/skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/service/impl/FlowBusinessServiceImpl.java b/skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/service/impl/FlowBusinessServiceImpl.java
index 2fcaecb..cfc36ac 100644
--- a/skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/service/impl/FlowBusinessServiceImpl.java
+++ b/skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/service/impl/FlowBusinessServiceImpl.java
@@ -32,6 +32,7 @@
import org.flowable.task.api.TaskQuery;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.flowable.task.api.history.HistoricTaskInstanceQuery;
+import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.support.Kv;
import org.springblade.core.tool.utils.Func;
@@ -42,6 +43,8 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+
+import static org.springblade.core.launch.constant.FlowConstant.TASK_USR_PREFIX;
/**
* 流程业务实现类
@@ -90,6 +93,29 @@
@Override
public IPage<BladeFlow> selectTodoPage(IPage<BladeFlow> page, BladeFlow bladeFlow) {
String taskUser = TaskUtil.getTaskUser();
+ List<BladeFlow> flowList = new LinkedList<>();
+
+ // 已签收的任务
+ TaskQuery todoQuery = taskService.createTaskQuery().taskAssignee(taskUser).active()
+ .includeProcessVariables().orderByTaskCreateTime().desc();
+
+ // 构建列表数据
+ buildFlowTaskList(bladeFlow, flowList, todoQuery, FlowEngineConstant.STATUS_TODO);
+
+ // 计算总数
+ long count = todoQuery.count();
+ // 设置页数
+ page.setSize(count);
+ // 设置总数
+ page.setTotal(count);
+ // 设置数据
+ page.setRecords(flowList);
+ return page;
+ }
+
+ @Override
+ public IPage<BladeFlow> selectTodoPage(IPage<BladeFlow> page, BladeFlow bladeFlow,String currentUserId) {
+ String taskUser = StringUtil.format("{}{}", TASK_USR_PREFIX, currentUserId);
List<BladeFlow> flowList = new LinkedList<>();
// 已签收的任务
@@ -268,6 +294,27 @@
return true;
}
+ @Override
+ public BladeFlow getBladeFlowByBusinessId(String businessId,String target) {
+ String taskUser = StringUtil.format("{}{}", TASK_USR_PREFIX, target);
+ List<BladeFlow> flowList = new LinkedList<>();
+
+ // 已签收的任务
+ TaskQuery todoQuery = taskService.createTaskQuery().taskAssignee(taskUser).active()
+ .includeProcessVariables().orderByTaskCreateTime().desc();
+ BladeFlow bladeFlow = new BladeFlow();
+ // 构建列表数据
+ buildFlowTaskList(bladeFlow, flowList, todoQuery, FlowEngineConstant.STATUS_TODO);
+ BladeFlow flow = new BladeFlow();
+ flowList.forEach(e->{
+ if (Func.equals(e.getBusinessId(),businessId)){
+ flow.setTaskId(e.getTaskId());
+ }
+ });
+
+ return flow;
+ }
+
/**
* 构建流程
*
diff --git a/skjcmanager/skjcmanager-service-api/skjcmanager-user-api/src/main/java/cn/gistack/system/user/vo/UserVO.java b/skjcmanager/skjcmanager-service-api/skjcmanager-user-api/src/main/java/cn/gistack/system/user/vo/UserVO.java
index 906c926..aa2bc79 100644
--- a/skjcmanager/skjcmanager-service-api/skjcmanager-user-api/src/main/java/cn/gistack/system/user/vo/UserVO.java
+++ b/skjcmanager/skjcmanager-service-api/skjcmanager-user-api/src/main/java/cn/gistack/system/user/vo/UserVO.java
@@ -81,4 +81,9 @@
* 拓展信息
*/
private String userExt;
+
+ /**
+ * 行政区划编码
+ */
+ private String adCode;
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/pom.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/pom.xml
index 8feac3e..dcb42b2 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/pom.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/pom.xml
@@ -41,6 +41,12 @@
<artifactId>skjcmanager-sm-api</artifactId>
<version>3.0.1.RELEASE</version>
</dependency>
+ <dependency>
+ <groupId>cn.gistack</groupId>
+ <artifactId>skjcmanager-flow-api</artifactId>
+ <version>3.0.1.RELEASE</version>
+ <scope>compile</scope>
+ </dependency>
</dependencies>
<build>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolGroupController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolGroupController.java
index 688c1bb..7b98be2 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolGroupController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolGroupController.java
@@ -156,4 +156,20 @@
public R getAllPatrolGroupByTaskId(String taskId) {
return R.data(patrolGroupService.getAllPatrolGroupByTaskId(taskId));
}
+
+ /**
+ * 根据任务id获取巡查组,返回组下的record
+ */
+ @GetMapping(value = "/getPatrolGroupDTO")
+ public R getPatrolGroupDTO(String taskId) {
+ return R.data(patrolGroupService.getPatrolGroupDTO(taskId));
+ }
+
+ /**
+ * 根据任务id获取巡查组
+ */
+ @GetMapping(value = "/getPatrolGroupByTaskId")
+ public R getPatrolGroupByTaskId(String taskId) {
+ return R.data(patrolGroupService.getPatrolGroupByTaskId(taskId));
+ }
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolTaskController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolTaskController.java
index 8877bae..8c6dff3 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolTaskController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolTaskController.java
@@ -1,20 +1,33 @@
package cn.gistack.sm.patrol.controller;
+import cn.gistack.flow.core.entity.BladeFlow;
+import cn.gistack.flow.core.feign.IFlowClient;
+import cn.gistack.sm.patrol.entity.PatrolReport;
import cn.gistack.sm.patrol.entity.PatrolTask;
import cn.gistack.sm.patrol.entity.PatrolTask;
import cn.gistack.sm.patrol.service.IPatrolTaskService;
+import cn.gistack.sm.patrol.vo.BladeFlowTask;
import cn.gistack.sm.patrol.vo.PatrolTaskVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.annotations.Param;
+import org.redisson.executor.TasksService;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.*;
+import javax.sound.midi.Soundbank;
+import java.net.http.HttpRequest;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -28,6 +41,7 @@
@AllArgsConstructor
public class PatrolTaskController extends BladeController {
private IPatrolTaskService patrolTaskService;
+ private IFlowClient flowClient;
/**
* 分页列表查询
@@ -156,5 +170,66 @@
return R.data(patrolTaskService.getPatrolTaskStatistic(patrolTask));
}
+ /**====================工作流==========================**/
+ /**
+ * 新增或修改
+ *
+ * @param patrolTask 任务
+ */
+ @PostMapping("start-process")
+ public R startProcess(@RequestBody PatrolTask patrolTask) {
+ return R.status(patrolTaskService.startProcess(patrolTask));
+ }
+
+ /**
+ * 巡查人员完成任务
+ *
+ * @param patrolTask 任务
+ */
+ @PostMapping("patrol-complete-task")
+ @ApiOperation(value = "完成任务", notes = "传入流程信息")
+ public R completeTask(PatrolTask patrolTask, String currentUserId) {
+ return R.status(patrolTaskService.patrolCompleteTask(patrolTask,currentUserId));
+ }
+
+ /**
+ * 责任人完成任务
+ */
+ @PostMapping("charge-complete-task")
+ @ApiOperation(value = "完成任务", notes = "传入流程信息")
+ public R chargeCompletePerson(@RequestBody BladeFlowTask bladeFlowTask) {
+ return R.status(patrolTaskService.chargeCompletePerson(bladeFlowTask));
+ }
+
+ /**
+ * 查询待办
+ *
+ * @param patrolTask 任务
+ */
+ @PostMapping("patrol-todo-list")
+ @ApiOperation(value = "查询待办")
+ public R patrolTodoList(PatrolTaskVO patrolTask, Query query) {
+ BladeFlow bladeFlow2 = new BladeFlow();
+ R<List<BladeFlow>> res = flowClient.getTodoBladeFlowList(query.getSize(),query.getCurrent(),patrolTask.getCurrentUserId(), bladeFlow2);
+ IPage<PatrolTask> patrolTaskIPage = new Page<>();
+ List<PatrolTask> patrolTaskList = new ArrayList<>();
+
+ if (res.isSuccess()){
+ List<BladeFlow> data = res.getData();
+ data.forEach(bladeFlow -> {
+ PatrolTask byId = patrolTaskService.customizeGetById(bladeFlow.getBusinessId());
+ byId.setFlow(bladeFlow);
+ patrolTaskList.add(byId);
+ });
+ }
+ //设置数据集
+ patrolTaskIPage.setRecords(patrolTaskList);
+ //设置当前页
+ patrolTaskIPage.setCurrent(query.getCurrent());
+ //设置大小
+ patrolTaskIPage.setSize(query.getSize());
+
+ return R.data(patrolTaskIPage);
+ }
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/dto/PatrolGroupDTO.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/dto/PatrolGroupDTO.java
new file mode 100644
index 0000000..2e0826a
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/dto/PatrolGroupDTO.java
@@ -0,0 +1,15 @@
+package cn.gistack.sm.patrol.dto;
+
+import cn.gistack.sm.patrol.entity.PatrolGroup;
+import cn.gistack.sm.patrol.entity.PatrolRecord;
+import cn.gistack.sm.patrol.vo.PatrolRecordVO;
+import cn.gistack.sm.patrol.vo.PatrolReportVO;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PatrolGroupDTO extends PatrolGroup {
+
+ private List<PatrolReportVO> patrolReportList;
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/entity/PatrolReport.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/entity/PatrolReport.java
index c1b915f..a8393d7 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/entity/PatrolReport.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/entity/PatrolReport.java
@@ -1,6 +1,9 @@
package cn.gistack.sm.patrol.entity;
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -12,27 +15,53 @@
* @Description: 巡查类型
*/
@Data
-@TableName("sm_patrol_report")
+@TableName( value = "sm_patrol_report",autoResultMap = true)
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "sm_patrol_report", description = "巡查记录")
public class PatrolReport extends BaseEntity {
/**
- * 水库id
+ * 巡查现场图片
*/
- @ApiModelProperty("水库id")
- private String reservoirId;
+ @ApiModelProperty("处理图片")
+ @TableField(value = "images",typeHandler = FastjsonTypeHandler.class)
+ private Object[] images;
/**
- * 报告数量
+ * 巡查现场视频
*/
- @ApiModelProperty("报告数量")
- private Integer groupNum;
+ @ApiModelProperty("处理视频")
+ @TableField(value = "videos",typeHandler = FastjsonTypeHandler.class)
+ private Object[] videos;
/**
- * 异常数量
+ * 巡查内容
*/
- @ApiModelProperty("异常数量")
- private Integer errorNum;
+ @ApiModelProperty("处理内容")
+ private String content;
+
+ /**
+ * 巡查记录id
+ */
+ @ApiModelProperty("巡查记录id")
+ private String recordId;
+
+ /**
+ * 任务id
+ */
+ @ApiModelProperty("任务id")
+ private String taskId;
+
+ /**
+ * 解决方案
+ */
+ @ApiModelProperty("解决方案")
+ private String solution;
+
+ /**
+ * 指标项id
+ */
+ @ApiModelProperty("指标项id")
+ private String itemId;
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/entity/PatrolTask.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/entity/PatrolTask.java
index 2a16698..5ead2ed 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/entity/PatrolTask.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/entity/PatrolTask.java
@@ -1,5 +1,7 @@
package cn.gistack.sm.patrol.entity;
+import cn.gistack.flow.core.entity.FlowEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
@@ -12,14 +14,14 @@
import org.springframework.format.annotation.DateTimeFormat;
/**
- * @Description: 巡查类型
+ * @Description: 巡查任务
*/
@Data
@TableName("sm_patrol_task")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "sm_patrol_task对象", description = "巡查任务")
-public class PatrolTask extends TenantEntity {
+public class PatrolTask extends FlowEntity {
/**
* 标题
*/
@@ -124,4 +126,31 @@
*/
@ApiModelProperty(value = "问题数量")
private Integer problemCount;
+
+ /**
+ * 流程定义id
+ */
+ private String processDefinitionId;
+ /**
+ * 流程实例id
+ */
+ private String processInstanceId;
+
+ /**
+ * 工作流标识 是否上报
+ */
+ @TableField(exist = false)
+ private Boolean report;
+
+ /**
+ * 工作流标识 是否上报至部门
+ */
+ @TableField(exist = false)
+ private Boolean toDept;
+
+ /**
+ * 工作流标识 是否转送至技术负责人
+ */
+ @TableField(exist = false)
+ private Boolean toTech;
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolGroupMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolGroupMapper.java
index ff2e964..1ed71cd 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolGroupMapper.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolGroupMapper.java
@@ -1,6 +1,7 @@
package cn.gistack.sm.patrol.mapper;
import cn.gistack.common.node.TreeNode;
+import cn.gistack.sm.patrol.dto.PatrolGroupDTO;
import cn.gistack.sm.patrol.entity.PatrolGroup;
import cn.gistack.sm.patrol.vo.PatrolGroupVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -32,4 +33,8 @@
List<PatrolGroup> getPatrolGroupByItemId(@Param("itemIds") String itemIds);
List<PatrolGroupVO> getAllPatrolGroupByTaskId(@Param("taskId") String taskId);
+
+ List<PatrolGroupDTO> getPatrolGroupDTO(@Param("taskId") String taskId);
+
+ List<PatrolGroup> getPatrolGroupByTaskId(String taskId);
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolGroupMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolGroupMapper.xml
index 0650080..aabbe44 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolGroupMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolGroupMapper.xml
@@ -92,4 +92,42 @@
WHERE IS_DELETED = 0
ORDER BY G.CREATE_TIME
</select>
+
+ <resultMap id="patrolGroupDTO" type="cn.gistack.sm.patrol.dto.PatrolGroupDTO">
+ <id property="id" column="id"/>
+ <result property="name" column="gname"/>
+ <collection property="patrolReportList" javaType="java.util.List" ofType="cn.gistack.sm.patrol.vo.PatrolReportVO">
+ <result property="id" column="rId"/>
+ <result property="videos" column="videos" typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
+ <result property="images" column="images" typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
+ <result property="status" column="status"/>
+ <result property="isDeleted" column="isDeleted"/>
+ <result property="itemId" column="itemId"/>
+ <result property="itemsName" column="itemsName"/>
+ <result property="taskId" column="taskId"/>
+ <result property="solution" column="solution"/>
+ <result property="content" column="content"/>
+ <result property="recordId" column="recordId"/>
+ </collection>
+ </resultMap>
+
+
+ <select id="getPatrolGroupDTO" resultMap="patrolGroupDTO">
+ SELECT G.ID,G.NAME gname,
+ R.ID rId, R.VIDEOS,R.IMAGES,R.STATUS,R.IS_DELETED,R.ITEM_ID itemId,R.record_id recordId,
+ I.ITEMS_NAME itemsName,R.TASK_ID,R.SOLUTION,R.CONTENT FROM SM_PATROL_GROUP G
+ LEFT JOIN SM_PATROL_GROUP_ITEM I ON I.GROUP_ID = G.ID
+ LEFT JOIN SM_PATROL_REPORT R ON R.ITEM_ID = I.ID
+ WHERE G.IS_DELETED = 0
+ AND R.STATUS = 2
+ AND R.TASK_ID = #{taskId}
+ </select>
+ <select id="getPatrolGroupByTaskId" resultType="cn.gistack.sm.patrol.entity.PatrolGroup">
+ SELECT G.ID,G.NAME FROM SM_PATROL_GROUP G
+ LEFT JOIN SM_PATROL_GROUP_ITEM I ON I.GROUP_ID = G.ID
+ LEFT JOIN SM_PATROL_REPORT R ON R.ITEM_ID = I.ID
+ WHERE G.IS_DELETED = 0
+ AND R.STATUS = 2
+ AND R.TASK_ID = #{taskId}
+ </select>
</mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolRecordMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolRecordMapper.xml
index d624b74..7c64b14 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolRecordMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolRecordMapper.xml
@@ -34,7 +34,7 @@
<select id="selectPatrolRecord" resultMap="selectPatrolRecordList">
SELECT
- record.id,record.patrol_type,record.device_ids,record.images,record.videos,record.content,record.status,record.item_id,record.task_id,record.patrol_route,record.update_time,record.solution
+ record.id,record.patrol_type,record.device_ids,record.images,record.videos,record.content,record.status,record.item_id,record.task_id,record.patrol_route,record.update_time,record.solution,
task.route_coordinates taskRoute,item.items_name itemsName,item.description
FROM SM_PATROL_RECORD record
LEFT JOIN sm_patrol_type type ON type.id = record.patrol_type
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolTaskMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolTaskMapper.java
index 66356b6..443b04e 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolTaskMapper.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolTaskMapper.java
@@ -46,4 +46,6 @@
* @return
*/
PatrolTask getPatrolTaskById(@Param("id")String id);
+
+ PatrolTask customizeGetById(@Param("id") String id);
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolTaskMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolTaskMapper.xml
index 4270d4e..1e99b7f 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolTaskMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolTaskMapper.xml
@@ -127,4 +127,12 @@
FROM sm_patrol_task spt
where spt.id = #{id}
</select>
+ <select id="customizeGetById" resultType="cn.gistack.sm.patrol.entity.PatrolTask">
+ SELECT T.ID,T.TITLE,T.TO_USER_ID,A.PROBLEM_COUNT,T.PROJECT_ID FROM SM_PATROL_TASK T
+ LEFT JOIN (
+ SELECT COUNT(*) PROBLEM_COUNT,R.TASK_ID FROM SM_PATROL_REPORT R WHERE R.TASK_ID = #{id} AND R.STATUS = 2 GROUP BY R.TASK_ID
+ )A ON A.TASK_ID = T.ID
+ WHERE T.ID = #{id}
+ AND T.IS_DELETED = 0
+ </select>
</mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolGroupService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolGroupService.java
index 8f41d16..78de1a2 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolGroupService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolGroupService.java
@@ -1,5 +1,6 @@
package cn.gistack.sm.patrol.service;
+import cn.gistack.sm.patrol.dto.PatrolGroupDTO;
import cn.gistack.sm.patrol.entity.PatrolGroup;
import cn.gistack.sm.patrol.vo.PatrolGroupVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -36,4 +37,8 @@
List<PatrolGroup> getPatrolGroupByItemId(String itemIds);
List<PatrolGroupVO> getAllPatrolGroupByTaskId(String taskId);
+
+ List<PatrolGroupDTO> getPatrolGroupDTO(String taskId);
+
+ List<PatrolGroup> getPatrolGroupByTaskId(String taskId);
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolTaskService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolTaskService.java
index 43aa44f..26c2c29 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolTaskService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolTaskService.java
@@ -1,9 +1,15 @@
package cn.gistack.sm.patrol.service;
+import cn.gistack.flow.core.entity.BladeFlow;
+import cn.gistack.sm.patrol.entity.PatrolReport;
import cn.gistack.sm.patrol.entity.PatrolTask;
+import cn.gistack.sm.patrol.vo.BladeFlowTask;
import cn.gistack.sm.patrol.vo.PatrolTaskVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
+
+import java.net.http.HttpRequest;
+import java.util.List;
public interface IPatrolTaskService extends BaseService<PatrolTask> {
@@ -42,4 +48,18 @@
* @return
*/
PatrolTask getPatrolTaskById(String id);
+
+ /**
+ * 开启流程
+ *
+ * @param patrolTask 任务实体
+ * @return boolean
+ */
+ boolean startProcess(PatrolTask patrolTask);
+
+ boolean patrolCompleteTask(PatrolTask patrolTask,String currentUserId);
+
+ boolean chargeCompletePerson(BladeFlowTask bladeFlowTask);
+
+ PatrolTask customizeGetById(String businessId);
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolGroupServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolGroupServiceImpl.java
index ffd28f5..5233283 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolGroupServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolGroupServiceImpl.java
@@ -3,6 +3,7 @@
import cn.gistack.common.node.TreeNode;
import cn.gistack.common.utils.NodeTreeUtil;
+import cn.gistack.sm.patrol.dto.PatrolGroupDTO;
import cn.gistack.sm.patrol.entity.PatrolGroup;
import cn.gistack.sm.patrol.mapper.PatrolGroupMapper;
import cn.gistack.sm.patrol.service.IPatrolGroupService;
@@ -55,4 +56,14 @@
public List<PatrolGroupVO> getAllPatrolGroupByTaskId(String taskId) {
return baseMapper.getAllPatrolGroupByTaskId(taskId);
}
+
+ @Override
+ public List<PatrolGroupDTO> getPatrolGroupDTO(String taskId) {
+ return baseMapper.getPatrolGroupDTO(taskId);
+ }
+
+ @Override
+ public List<PatrolGroup> getPatrolGroupByTaskId(String taskId) {
+ return baseMapper.getPatrolGroupByTaskId(taskId);
+ }
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolReportServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolReportServiceImpl.java
index 665692a..667f30c 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolReportServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolReportServiceImpl.java
@@ -3,15 +3,32 @@
import cn.gistack.sm.patrol.entity.PatrolConfig;
import cn.gistack.sm.patrol.entity.PatrolReport;
import cn.gistack.sm.patrol.mapper.PatrolReportMapper;
+import cn.gistack.sm.patrol.service.IPatrolRecordService;
import cn.gistack.sm.patrol.service.IPatrolReportService;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.AllArgsConstructor;
import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.tool.utils.Func;
import org.springframework.stereotype.Service;
@Service
+@AllArgsConstructor
public class PatrolReportServiceImpl extends BaseServiceImpl<PatrolReportMapper, PatrolReport> implements IPatrolReportService {
+ private final IPatrolRecordService patrolRecordService;
+
@Override
public IPage<PatrolConfig> selectPatrolReport(IPage<PatrolReport> page, PatrolConfig patrolConfig) {
return null;
}
+
+ @Override
+ public boolean save(PatrolReport entity) {
+ if (Func.equals(entity.getStatus(),1)){
+
+ }
+
+
+
+ return super.save(entity);
+ }
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolTaskServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolTaskServiceImpl.java
index 031c5d5..ae73771 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolTaskServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolTaskServiceImpl.java
@@ -1,26 +1,51 @@
package cn.gistack.sm.patrol.service.impl;
+import cn.gistack.flow.core.constant.ProcessConstant;
+import cn.gistack.flow.core.entity.BladeFlow;
+import cn.gistack.flow.core.feign.IFlowClient;
+import cn.gistack.flow.core.utils.FlowUtil;
+import cn.gistack.flow.core.utils.TaskUtil;
+import cn.gistack.sm.patrol.entity.PatrolRecord;
+import cn.gistack.sm.patrol.entity.PatrolReport;
import cn.gistack.sm.patrol.entity.PatrolTask;
import cn.gistack.sm.patrol.mapper.PatrolTaskMapper;
+import cn.gistack.sm.patrol.service.IPatrolRecordService;
+import cn.gistack.sm.patrol.service.IPatrolReportService;
import cn.gistack.sm.patrol.service.IPatrolTaskService;
import cn.gistack.sm.patrol.util.EnhancementServicesTool;
import cn.gistack.sm.patrol.util.IdWorker;
+import cn.gistack.sm.patrol.vo.BladeFlowTask;
import cn.gistack.sm.patrol.vo.PatrolTaskVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
+import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.net.http.HttpRequest;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import static org.springblade.core.launch.constant.FlowConstant.TASK_USR_PREFIX;
@Service
@AllArgsConstructor
public class PatrolTaskServiceImpl extends BaseServiceImpl<PatrolTaskMapper, PatrolTask> implements IPatrolTaskService {
-
+ private final IFlowClient flowClient;
+ private final IPatrolRecordService patrolRecordService;
+ private final IPatrolReportService patrolReportService;
/**
* 自定义分页查询
@@ -85,4 +110,118 @@
public PatrolTask getPatrolTaskById(String id) {
return baseMapper.getPatrolTaskById(id);
}
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean startProcess(PatrolTask patrolTask) {
+ String businessTable = FlowUtil.getBusinessTable(ProcessConstant.PATROL_KEY);
+ if (Func.isEmpty(patrolTask.getId())) {
+ save(patrolTask);
+ // 启动流程
+ Kv variables = Kv.create()
+ .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, AuthUtil.getUserId())
+ .set("taskUser", TaskUtil.getTaskUser(patrolTask.getToUserId()));
+ R<BladeFlow> result = flowClient.startProcessInstanceById(patrolTask.getProcessDefinitionId(), FlowUtil.getBusinessKey(businessTable, String.valueOf(patrolTask.getId())), variables);
+ if (result.isSuccess()) {
+ log.debug("流程已启动,流程ID:" + result.getData().getProcessInstanceId());
+ // 返回流程id写入leave
+ patrolTask.setProcessInstanceId(result.getData().getProcessInstanceId());
+ updateById(patrolTask);
+ } else {
+ throw new ServiceException("开启流程失败");
+ }
+ } else {
+ updateById(patrolTask);
+ }
+ return true;
+ }
+
+ @Override
+ @Transactional
+ public boolean patrolCompleteTask(PatrolTask patrolTask,String currentUserId) {
+ R<BladeFlow> res = flowClient.getBladeFlow(patrolTask.getId().toString(),currentUserId);
+ if (res.isSuccess()){
+ BladeFlow flow = res.getData();
+ String taskId = flow.getTaskId();
+ String processInstanceId = patrolTask.getProcessInstanceId();
+// String comment = Func.toStr(flow.getComment(), ProcessConstant.PASS_COMMENT);
+ String comment = "完成";
+ // 创建变量
+ Map<String, Object> variables = flow.getVariables();
+ if (variables == null) {
+ variables = Kv.create();
+ }
+ variables.put(ProcessConstant.REPORT_KEY,patrolTask.getReport());
+ variables.put("taskUser",StringUtil.format("{}{}", TASK_USR_PREFIX, "1650048152667467777"));
+ // 完成任务
+ flowClient.completeTask(taskId,processInstanceId,comment,variables);
+ saveReport(patrolTask);
+ return baseMapper.updateById(patrolTask) >0;
+ }else {
+ return false;
+ }
+ }
+
+ @Override
+ public boolean chargeCompletePerson(BladeFlowTask bladeFlowTask) {
+ //判断是否上报
+ boolean isReport = false;
+ List<PatrolReport> collect = bladeFlowTask.getPatrolReportList().stream().filter(report -> Func.equals(report.getStatus(), 2)).collect(Collectors.toList());
+ if (collect.size()>0){
+ isReport = true;
+ }
+ //更新report表
+ boolean update = patrolReportService.updateBatchById(bladeFlowTask.getPatrolReportList());
+
+ String taskId = bladeFlowTask.getTaskId();
+ String processInstanceId = bladeFlowTask.getProcessInstanceId();
+ String comment = "完成";
+ // 创建变量
+ Map<String, Object> variables = new HashMap<>();
+ if (variables == null) {
+ variables = Kv.create();
+ }
+ //指定下一个人
+ variables.put("taskUser",StringUtil.format("{}{}", TASK_USR_PREFIX, bladeFlowTask.getTaskUser()));
+ //指定是否上报
+ variables.put(ProcessConstant.REPORT_KEY,isReport);
+ //指定是否上报给部门
+ variables.put(ProcessConstant.TODEPT_KEY,bladeFlowTask.getToDept());
+ //指定是否转交
+ variables.put(ProcessConstant.TOTECH_KEY,bladeFlowTask.getToTech());
+ //完成任务
+ flowClient.completeTask(taskId, processInstanceId, comment, variables);
+ return update;
+ }
+
+ @Override
+ public PatrolTask customizeGetById(String businessId) {
+ return baseMapper.customizeGetById(businessId);
+ }
+
+ public void saveReport(PatrolTask patrolTask){
+ //拿到当前任务下的异常巡查记录
+ PatrolRecord patrolRecord = new PatrolRecord();
+ patrolRecord.setTaskId(patrolTask.getId().toString());
+ patrolRecord.setStatus(2);
+ patrolRecord.setSolution("2");
+ List<PatrolRecord> list = patrolRecordService.list(Condition.getQueryWrapper(patrolRecord));
+
+ //向上报表中添加数据
+ list.forEach(record->{
+ PatrolReport patrolReport = new PatrolReport();
+ patrolReport.setContent(record.getContent());
+ patrolReport.setImages(record.getImages());
+ patrolReport.setVideos(record.getVideos());
+ patrolReport.setItemId(record.getItemId());
+ patrolReport.setSolution(record.getSolution());
+ patrolReport.setTaskId(record.getTaskId());
+ patrolReport.setRecordId(record.getId().toString());
+ patrolReport.setStatus(record.getStatus());
+
+ patrolReportService.save(patrolReport);
+ });
+ }
+
+
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/BladeFlowTask.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/BladeFlowTask.java
new file mode 100644
index 0000000..4437919
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/BladeFlowTask.java
@@ -0,0 +1,23 @@
+package cn.gistack.sm.patrol.vo;
+
+import cn.gistack.flow.core.entity.BladeFlow;
+import cn.gistack.sm.patrol.entity.PatrolReport;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class BladeFlowTask {
+
+ private List<PatrolReport> patrolReportList;
+
+ private String taskId;
+
+ private String processInstanceId;
+
+ private String taskUser;
+
+ private Boolean toDept;
+
+ private Boolean toTech;
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/PatrolReportVO.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/PatrolReportVO.java
new file mode 100644
index 0000000..a3ab4b7
--- /dev/null
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/PatrolReportVO.java
@@ -0,0 +1,28 @@
+package cn.gistack.sm.patrol.vo;
+
+import cn.gistack.sm.patrol.entity.PatrolReport;
+import lombok.Data;
+
+@Data
+public class PatrolReportVO extends PatrolReport {
+ /**
+ * 组名称
+ */
+ private String groupName;
+
+ /**
+ * 组id
+ */
+ private String groupId;
+
+ /**
+ * 项名称
+ */
+ private String itemsName;
+
+ /**
+ * 项描述
+ */
+ private String description;
+
+}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/PatrolTaskVO.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/PatrolTaskVO.java
index dc19ec2..f6dffa5 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/PatrolTaskVO.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/PatrolTaskVO.java
@@ -31,4 +31,9 @@
* 角色名
*/
private String roleName;
+
+ /**
+ * 当前用户id
+ */
+ private String currentUserId;
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/controller/UserController.java b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/controller/UserController.java
index f1792d4..820cce9 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/controller/UserController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/controller/UserController.java
@@ -98,6 +98,30 @@
return R.data(UserWrapper.build().entityVO(detail));
}
+
+
+ /**
+ * 查询单条
+ */
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "查看详情", notes = "传入id")
+ @GetMapping("/customizeGetDetail")
+ public R<User> customizeGetDetail(User user) {
+ User detail = userService.getOne(Condition.getQueryWrapper(user));
+ return R.data(UserWrapper.build().entityVO(detail));
+ }
+
+ /**
+ * 自定义查询用户列表
+ * @param user
+ * @return
+ */
+ @GetMapping("/customizeGetList")
+ public R<List<User>> customizeGetList(UserVO user){
+ List<User> userList = userService.customizeGetList(user);
+ return R.data(userList);
+ }
+
/**
* 用户列表
*/
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/mapper/UserMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/mapper/UserMapper.java
index 804f14f..8a2f9e3 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/mapper/UserMapper.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/mapper/UserMapper.java
@@ -18,6 +18,7 @@
import cn.gistack.system.user.entity.User;
import cn.gistack.system.user.excel.UserExcel;
+import cn.gistack.system.user.vo.UserVO;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -60,4 +61,5 @@
*/
List<UserExcel> exportUser(@Param("ew") Wrapper<User> queryWrapper);
+ List<User> customizeGetList(@Param("user") UserVO user);
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/mapper/UserMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/mapper/UserMapper.xml
index 8c85979..7bca0b4 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/mapper/UserMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/mapper/UserMapper.xml
@@ -72,5 +72,10 @@
<select id="exportUser" resultType="cn.gistack.system.user.excel.UserExcel">
SELECT id, tenant_id, user_type, account, name, real_name, email, phone, birthday, role_id, dept_id, post_id FROM blade_user ${ew.customSqlSegment}
</select>
+ <select id="customizeGetList" resultType="cn.gistack.system.user.entity.User">
+ select U.* from BLADE_USER U
+ left join BLADE_DEPT D on D.ID = U.DEPT_ID
+ where D.AD_CODE = #{user.adCode} and U.ROLE_ID like CONCAT('%',(select id from BLADE_ROLE where ROLE_ALIAS = 'qxgly'),'%')
+ </select>
</mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/IUserService.java b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/IUserService.java
index 872ed86..5b0bede 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/IUserService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/IUserService.java
@@ -205,4 +205,6 @@
* @return
*/
UserVO platformDetail(User user);
+
+ List<User> customizeGetList(UserVO user);
}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserServiceImpl.java
index 9df26ef..8d5523a 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserServiceImpl.java
@@ -430,4 +430,9 @@
return userVO;
}
+ @Override
+ public List<User> customizeGetList(UserVO user) {
+ return baseMapper.customizeGetList(user);
+ }
+
}
--
Gitblit v1.9.3