From f04487fef5ac47380dfa9670156743c9d273966b Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Sat, 23 Mar 2024 15:54:40 +0800
Subject: [PATCH] 巡查修改
---
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolTaskServiceImpl.java | 372 ++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 272 insertions(+), 100 deletions(-)
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 c426771..677c780 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
@@ -3,9 +3,10 @@
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.nky.fegin.INkyClient;
+import cn.gistack.sm.patrol.params.PersonHandleParams;
+import cn.gistack.sm.patrol.dto.PatrolTaskDTO;
import cn.gistack.sm.patrol.entity.PatrolRecord;
import cn.gistack.sm.patrol.entity.PatrolReport;
import cn.gistack.sm.patrol.entity.PatrolTask;
@@ -16,23 +17,22 @@
import cn.gistack.sm.patrol.util.EnhancementServicesTool;
import cn.gistack.sm.patrol.util.IdWorker;
import cn.gistack.sm.patrol.vo.*;
+import cn.gistack.sm.sjztmd.service.IAttResManagePersonService;
import cn.gistack.sm.sjztmd.service.IYwTermitesTaskService;
+import cn.gistack.sm.sjztmd.vo.ChargePersonVO;
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.Func;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
-
-import static org.springblade.core.launch.constant.FlowConstant.TASK_USR_PREFIX;
+import java.util.stream.Collectors;
@Service
@AllArgsConstructor
@@ -43,6 +43,7 @@
private final IPatrolReportService patrolReportService;
private final INkyClient nkyClient;
private final IYwTermitesTaskService waterDataTermitesService;
+ private final IAttResManagePersonService attResManagePersonService;
private final String PATROL_USER = "patrolUser";
private final String TECH_USER = "techUser";
@@ -59,14 +60,14 @@
*/
@Override
public IPage<PatrolTaskVO> selectPatrolTask(IPage<PatrolTaskVO> page, PatrolTaskVO patrolTask) {
-// List<PatrolTaskVO> patrolTaskList = baseMapper.selectPatrolTask(page, patrolTask);
+ List<PatrolTaskVO> patrolTaskList = baseMapper.selectPatrolTask(page, patrolTask);
- List<PatrolTaskVO> patrolTaskList = baseMapper.selectPatrolTaskPage(page.getCurrent() - 1, page.getSize(), patrolTask);
- long total = baseMapper.getPatrolTaskTotal(patrolTask);
- page.setRecords(patrolTaskList);
- page.setTotal(total);
+// List<PatrolTaskVO> patrolTaskList = baseMapper.selectPatrolTaskPage(page.getCurrent() - 1, page.getSize(), patrolTask);
+// long total = baseMapper.getPatrolTaskTotal(patrolTask);
+// page.setRecords(patrolTaskList);
+// page.setTotal(total);
- return page;
+ return page.setRecords(patrolTaskList);
}
/**
@@ -128,53 +129,231 @@
@Override
@Transactional(rollbackFor = Exception.class)
public PatrolTask startProcess(PatrolTask patrolTask) {
- String businessTable = FlowUtil.getBusinessTable(ProcessConstant.PATROL_KEY);
- if (Func.isEmpty(patrolTask.getId())) {
- save(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);
+//
// Kv variables = Kv.create()
// //设置创建人
// .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, AuthUtil.getUserId())
-// //指定任务处理人
+// //指定巡查责任人
+// .set(PATROL_USER, TaskUtil.getTaskUser(patrolTask.getToUserId()))
// .set("taskUser", TaskUtil.getTaskUser(patrolTask.getToUserId()));
// R<BladeFlow> result = flowClient.startProcessInstanceById(patrolTask.getProcessDefinitionId(), FlowUtil.getBusinessKey(businessTable, String.valueOf(patrolTask.getId())), variables);
-
- Kv variables = Kv.create()
- //设置创建人
- .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, AuthUtil.getUserId())
- //指定巡查责任人
- .set(PATROL_USER, TaskUtil.getTaskUser(patrolTask.getToUserId()))
- .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 patrolTask;
+//
+// 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 patrolTask;
+ return null;
}
@Override
public boolean personCompleteTask(PatrolTaskVO patrolTaskVO, String currentUserId, String taskUser) {
- String taskId = patrolTaskVO.getFlowTaskId();
- String processInstanceId = patrolTaskVO.getProcessInstanceId();
- String comment = patrolTaskVO.getComment();
+// String taskId = patrolTaskVO.getFlowTaskId();
+// String processInstanceId = patrolTaskVO.getProcessInstanceId();
+// String comment = patrolTaskVO.getComment();
+//
+// //保存巡查记录
+// if (patrolTaskVO.getPatrolRecordList() != null && patrolTaskVO.getPatrolRecordList().size()>0){
+// patrolRecordService.saveBatch(patrolTaskVO.getPatrolRecordList());
+// }
+//
+// // 创建变量
+// Map<String, Object> variables = new HashMap<>();
+// if (variables == null) {
+// variables = Kv.create();
+// }
+//
+// //指定了人就是上报,没指定就表示已经处理了
+// if (StringUtil.isNotBlank(taskUser)){
+// variables.put("taskUser",TaskUtil.getTaskUser(taskUser));
+// variables.put(ProcessConstant.REPORT_KEY,true);
+// }else{
+// variables.put(ProcessConstant.REPORT_KEY,false);
+//
+// //查监测预警表,看是否有这个任务,有的话修改任务状态
+// Boolean finishDamTask = nkyClient.finishTask(patrolTaskVO.getId().toString());
+// if (!finishDamTask){
+// //查白蚁表,看是否有这个任务,有的话修改任务状态
+// Boolean finishTermitesTask = waterDataTermitesService.finishTask(patrolTaskVO.getId().toString());
+// }
+// }
+//
+//
+//
+//
+// flowClient.completeTask(taskId, processInstanceId, comment, variables);
+// return updateById(patrolTaskVO);
+ return false;
+ }
- //保存巡查记录
- if (patrolTaskVO.getPatrolRecordList() != null && patrolTaskVO.getPatrolRecordList().size()>0){
- patrolRecordService.saveBatch(patrolTaskVO.getPatrolRecordList());
+ @Override
+ public List<PatrolTask> deliverTask(PatrolTask patrolTask) {
+
+ String projectIds = patrolTask.getProjectId();
+ String patrolRole = patrolTask.getPatrolRole();
+ String reservoirName = patrolTask.getReservoirName();
+
+ List<String> resList = Arrays.asList(projectIds.split(","));
+ List<String> roleList = Arrays.asList(patrolRole.split(","));
+ List<String> reservoirNameList = Arrays.asList(reservoirName.split(","));
+
+ List<PatrolTask> saveList = new ArrayList<>();
+ //循环水库
+ for (int i = 0; i < resList.size(); i++) {
+ String resId = resList.get(i);
+
+ for (int j = 0; j < roleList.size(); j++) {
+ String role = roleList.get(j);
+
+ //获取该类型责任人
+ List<ChargePersonVO> managePersonList = attResManagePersonService.getManagePersonList(resId, role);
+
+ PatrolTask saveTask = new PatrolTask();
+ saveTask.setTitle(patrolTask.getTitle());
+ saveTask.setStartTime(patrolTask.getStartTime());
+ saveTask.setEndTime(patrolTask.getEndTime());
+ saveTask.setContent(patrolTask.getContent());
+
+ List<String> collect = managePersonList.stream().map(p -> p.getUserId()).collect(Collectors.toList());
+
+ if (StringUtil.isBlank(patrolTask.getToUserId())) {
+ //没传就自己找
+ //有几个就有几个
+ saveTask.setToUserId(StringUtil.join(collect, ","));
+ } else {
+ saveTask.setToUserId(patrolTask.getToUserId());
+ }
+ saveTask.setProjectId(resId);
+ saveTask.setReservoirName(reservoirNameList.get(i));
+
+ saveTask.setTaskType(patrolTask.getTaskType());
+ saveTask.setPatrolGroupItemId(patrolTask.getPatrolGroupItemId());
+ saveTask.setPatrolRole(role);
+
+ saveList.add(saveTask);
+ }
}
+
+ boolean saveBatch = saveBatch(saveList);
+ return saveList;
+ }
+
+ @Override
+ public PatrolTask saveTask(PatrolTask patrolTask) {
+ save(patrolTask);
+ return patrolTask;
+ }
+
+ @Override
+ public PatrolTaskDTO getTaskDTO(String taskId) {
+ return baseMapper.getTaskDTO(taskId);
+ }
+
+ @Override
+ public Object getMyTask(PatrolTaskVO patrolTask, IPage<PatrolTask> page) {
+ if (patrolTask.getIsPage()) {
+ return page.setRecords(baseMapper.getMyTask(patrolTask, page));
+ }
+
+ return baseMapper.getMyTask(patrolTask, null);
+ }
+
+ @Override
+ public Boolean finishPatrolTask(PatrolTaskVO patrolTaskVO) {
+
+ //更新任务信息
+ boolean updateTask = updateById(patrolTaskVO);
+
+// 查监测预警表,看是否有这个任务,有的话修改任务状态
+ Boolean finishDamTask = nkyClient.finishTask(patrolTaskVO.getId().toString());
+ if (!finishDamTask) {
+ //查白蚁表,看是否有这个任务,有的话修改任务状态
+ Boolean finishTermitesTask = waterDataTermitesService.finishTask(patrolTaskVO.getId().toString());
+ }
+
+ List<PatrolRecordVO> patrolRecordList = patrolTaskVO.getPatrolRecordList();
+
+ if (patrolRecordList != null && patrolRecordList.size() > 0) {
+ patrolRecordList.forEach(record -> {
+ patrolRecordService.startProcess(record, patrolTaskVO.getProjectId());
+ });
+ }
+
+ return updateTask;
+ }
+
+ @Override
+ public Boolean personHandle(PersonHandleParams personHandleParams) {
+
+ PatrolRecord patrolRecord = personHandleParams.getPatrolRecord();
+ String recordId = personHandleParams.getRecordId();
+ String taskId = personHandleParams.getTaskId();
+ String flowTaskId = personHandleParams.getFlowTaskId();
+ String taskUser = personHandleParams.getTaskUser();
+ String comment = personHandleParams.getComment();
+ String processInstanceId = personHandleParams.getProcessInstanceId();
+
+
+ if (StringUtil.isBlank(recordId)) {
+ throw new ServiceException("recordId为空");
+ }
+
+ if (StringUtil.isBlank(taskId)) {
+ throw new ServiceException("taskId为空");
+ }
+
+ if (StringUtil.isBlank(flowTaskId)) {
+ throw new ServiceException("flowTaskId为空");
+ }
+
+ if (StringUtil.isBlank(processInstanceId)) {
+ throw new ServiceException("processInstanceId为空");
+ }
+
+
+ //说明处理了问题
+ if (patrolRecord != null) {
+ //保存处理记录
+ patrolRecordService.save(patrolRecord);
+
+ //修改该任务的处理状态
+ PatrolRecord upRecord = new PatrolRecord();
+ upRecord.setId(Long.parseLong(recordId));
+ upRecord.setState("1");
+ patrolRecordService.updateById(upRecord);
+
+ //修改任务的问题数量
+ PatrolTask byId = getById(taskId);
+
+ Integer problemCount = byId.getProblemCount();
+ PatrolTask upTask = new PatrolTask();
+ upTask.setId(byId.getId());
+ upTask.setProblemCount(problemCount - 1);
+ updateById(upTask);
+
+ }
+
// 创建变量
Map<String, Object> variables = new HashMap<>();
@@ -183,62 +362,58 @@
}
//指定了人就是上报,没指定就表示已经处理了
- if (StringUtil.isNotBlank(taskUser)){
- variables.put("taskUser",TaskUtil.getTaskUser(taskUser));
- variables.put(ProcessConstant.REPORT_KEY,true);
- }else{
- variables.put(ProcessConstant.REPORT_KEY,false);
-
- //查监测预警表,看是否有这个任务,有的话修改任务状态
- Boolean finishDamTask = nkyClient.finishTask(patrolTaskVO.getId().toString());
- if (!finishDamTask){
- //查白蚁表,看是否有这个任务,有的话修改任务状态
- Boolean finishTermitesTask = waterDataTermitesService.finishTask(patrolTaskVO.getId().toString());
- }
-
-
+ if (StringUtil.isNotBlank(taskUser)) {
+ variables.put("taskUser", TaskUtil.getTaskUser(taskUser));
+ variables.put(ProcessConstant.REPORT_KEY, true);
+ } else {
+ variables.put(ProcessConstant.REPORT_KEY, false);
+// //查监测预警表,看是否有这个任务,有的话修改任务状态
+// Boolean finishDamTask = nkyClient.finishTask(patrolTaskVO.getId().toString());
+// if (!finishDamTask){
+// //查白蚁表,看是否有这个任务,有的话修改任务状态
+// Boolean finishTermitesTask = waterDataTermitesService.finishTask(patrolTaskVO.getId().toString());
+// }
}
+ flowClient.completeTask(flowTaskId, processInstanceId, comment, variables);
+ return true;
-
-
- flowClient.completeTask(taskId, processInstanceId, comment, variables);
- return updateById(patrolTaskVO);
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean patrolCompleteTask(PatrolTaskVO patrolTask, String currentUserId, String taskUser) {
- 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 = patrolTask.getReport() ? "巡查任务发现问题" : "巡查任务完成,未发现问题";
- String comment = patrolTask.getComment();
- // 创建变量
- 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, taskUser));
- variables.put(TECH_USER, TaskUtil.getTaskUser(taskUser));
- // 完成任务
- flowClient.completeTask(taskId, processInstanceId, comment, variables);
- //保存巡查记录
- if (patrolTask.getPatrolRecordList() != null && patrolTask.getPatrolRecordList().size() > 0){
- patrolRecordService.saveBatch(patrolTask.getPatrolRecordList());
- }
-
-
-
- return baseMapper.updateById(patrolTask) > 0;
- } else {
- return false;
- }
+// 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 = patrolTask.getReport() ? "巡查任务发现问题" : "巡查任务完成,未发现问题";
+// String comment = patrolTask.getComment();
+// // 创建变量
+// 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, taskUser));
+// variables.put(TECH_USER, TaskUtil.getTaskUser(taskUser));
+// // 完成任务
+// flowClient.completeTask(taskId, processInstanceId, comment, variables);
+// //保存巡查记录
+// if (patrolTask.getPatrolRecordList() != null && patrolTask.getPatrolRecordList().size() > 0){
+// patrolRecordService.saveBatch(patrolTask.getPatrolRecordList());
+// }
+//
+//
+//
+// return baseMapper.updateById(patrolTask) > 0;
+// } else {
+// return false;
+// }
+ return false;
}
@Override
@@ -269,9 +444,6 @@
// return true;
-
-
-
String taskId = bladeFlowTask.getTaskId();
String processInstanceId = bladeFlowTask.getProcessInstanceId();
String comment = bladeFlowTask.getComment();
@@ -295,13 +467,13 @@
switch (currentNode.getHistoryActivityId()) {
case "techPerson":
- variables.put(bladeFlowTask.getToDept()?DEPT_USER:SUPERVISOR_USER,TaskUtil.getTaskUser(bladeFlowTask.getTaskUser()));
+ variables.put(bladeFlowTask.getToDept() ? DEPT_USER : SUPERVISOR_USER, TaskUtil.getTaskUser(bladeFlowTask.getTaskUser()));
break;
case "supervisorPerson":
- variables.put(bladeFlowTask.getToDept()?DEPT_USER:ADMIN_USER,TaskUtil.getTaskUser(bladeFlowTask.getTaskUser()));
+ variables.put(bladeFlowTask.getToDept() ? DEPT_USER : ADMIN_USER, TaskUtil.getTaskUser(bladeFlowTask.getTaskUser()));
break;
case "adminPerson":
- variables.put(DEPT_USER,TaskUtil.getTaskUser(bladeFlowTask.getTaskUser()));
+ variables.put(DEPT_USER, TaskUtil.getTaskUser(bladeFlowTask.getTaskUser()));
break;
case "department":
//当前节点为水行政部门,需要指定回复给谁
@@ -311,9 +483,9 @@
if (beforeId.equals("techPerson")) {
//前一个节点是技术责任人
variables.put(ProcessConstant.TOTECH_KEY, true);
- }else if (beforeId.equals("supervisorPerson")){
+ } else if (beforeId.equals("supervisorPerson")) {
variables.put(ProcessConstant.TOSUPERVISOR_KEY, true);
- }else if (beforeId.equals("adminPerson")){
+ } else if (beforeId.equals("adminPerson")) {
variables.put(ProcessConstant.TOADMIN_KEY, true);
}
break;
--
Gitblit v1.9.3