From 27b27564be25fd92edfe328a0e989ee8f4c4e7d3 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Mon, 04 Mar 2024 15:23:28 +0800
Subject: [PATCH] 任务查询,按创建时间查询;白蚁大坝汛前巡查流程
---
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolTaskServiceImpl.java | 379 ++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 313 insertions(+), 66 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 ae73771..c426771 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
@@ -5,6 +5,7 @@
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.entity.PatrolRecord;
import cn.gistack.sm.patrol.entity.PatrolReport;
import cn.gistack.sm.patrol.entity.PatrolTask;
@@ -14,8 +15,8 @@
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 cn.gistack.sm.patrol.vo.*;
+import cn.gistack.sm.sjztmd.service.IYwTermitesTaskService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
import org.springblade.core.log.exception.ServiceException;
@@ -24,43 +25,53 @@
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 java.util.*;
import static org.springblade.core.launch.constant.FlowConstant.TASK_USR_PREFIX;
@Service
@AllArgsConstructor
+@Transactional(rollbackFor = Exception.class)
public class PatrolTaskServiceImpl extends BaseServiceImpl<PatrolTaskMapper, PatrolTask> implements IPatrolTaskService {
private final IFlowClient flowClient;
private final IPatrolRecordService patrolRecordService;
private final IPatrolReportService patrolReportService;
+ private final INkyClient nkyClient;
+ private final IYwTermitesTaskService waterDataTermitesService;
+
+ private final String PATROL_USER = "patrolUser";
+ private final String TECH_USER = "techUser";
+ private final String SUPERVISOR_USER = "supervisorUser";
+ private final String ADMIN_USER = "adminUser";
+ private final String DEPT_USER = "deptUser";
/**
* 自定义分页查询
+ *
* @param page
* @param patrolTask
* @return
*/
@Override
public IPage<PatrolTaskVO> selectPatrolTask(IPage<PatrolTaskVO> page, PatrolTaskVO patrolTask) {
- List<PatrolTaskVO> patrolTaskList = baseMapper.selectPatrolTask(page, patrolTask);
- return page.setRecords(patrolTaskList);
+// 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);
+
+ return page;
}
/**
* 查询巡查人员统计数据信息
+ *
* @param patrolTask
* @return
*/
@@ -71,6 +82,7 @@
/**
* 自定义编辑(空间坐标编辑)
+ *
* @param patrolTask
* @return
*/
@@ -81,11 +93,12 @@
enhancementServicesTool.resolveEntity(patrolTask);
Integer update = baseMapper.updatePatrolTask(patrolTask);
//返回
- return update>0?true:false;
+ return update > 0 ? true : false;
}
/**
* 自定义添加
+ *
* @param patrolTask
* @return
*/
@@ -98,11 +111,12 @@
// 新增
Integer save = baseMapper.savePatrolTask(patrolTask);
//返回
- return save>0?true:false;
+ return save > 0 ? true : false;
}
/**
* 自定义通过id查询
+ *
* @param id
* @return
*/
@@ -113,15 +127,28 @@
@Override
@Transactional(rollbackFor = Exception.class)
- public boolean startProcess(PatrolTask patrolTask) {
+ public PatrolTask 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);
+
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
@@ -133,73 +160,293 @@
} else {
updateById(patrolTask);
}
- return true;
+ return patrolTask;
}
- @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());
+ public boolean personCompleteTask(PatrolTaskVO patrolTaskVO, String currentUserId, String taskUser) {
- String taskId = bladeFlowTask.getTaskId();
- String processInstanceId = bladeFlowTask.getProcessInstanceId();
- String comment = "完成";
+ 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();
}
- //指定下一个人
- 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());
- //完成任务
+
+ //指定了人就是上报,没指定就表示已经处理了
+ 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 update;
+ 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;
+ }
}
@Override
- public PatrolTask customizeGetById(String businessId) {
+ public boolean chargeCompletePerson(BladeFlowTask bladeFlowTask) {
+// boolean isReport = false;
+// if (StringUtil.isNoneBlank(bladeFlowTask.getTaskUser())){
+// isReport = true;
+// }
+//
+// 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 true;
+
+
+
+
+
+ String taskId = bladeFlowTask.getTaskId();
+ String processInstanceId = bladeFlowTask.getProcessInstanceId();
+ String comment = bladeFlowTask.getComment();
+
+ // 创建变量
+ Map<String, Object> variables = new HashMap<>();
+ if (variables == null) {
+ variables = Kv.create();
+ }
+
+ //默认不上报
+ boolean isReport = false;
+ if (StringUtil.isNoneBlank(bladeFlowTask.getTaskUser())) {
+ //指定了下一个人,修改状态为上报
+ isReport = true;
+ }
+
+ //techPerson supervisorPerson adminPerson department
+ //获取当前节点
+ BladeFlow currentNode = getFlowNode(processInstanceId, 1);
+
+ switch (currentNode.getHistoryActivityId()) {
+ case "techPerson":
+ 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()));
+ break;
+ case "adminPerson":
+ variables.put(DEPT_USER,TaskUtil.getTaskUser(bladeFlowTask.getTaskUser()));
+ break;
+ case "department":
+ //当前节点为水行政部门,需要指定回复给谁
+ //获取前一个节点
+ BladeFlow beforeNode = getFlowNode(processInstanceId, 2);
+ String beforeId = beforeNode.getHistoryActivityId();
+ if (beforeId.equals("techPerson")) {
+ //前一个节点是技术责任人
+ variables.put(ProcessConstant.TOTECH_KEY, true);
+ }else if (beforeId.equals("supervisorPerson")){
+ variables.put(ProcessConstant.TOSUPERVISOR_KEY, true);
+ }else if (beforeId.equals("adminPerson")){
+ variables.put(ProcessConstant.TOADMIN_KEY, true);
+ }
+ break;
+ default:
+ break;
+ }
+
+ variables.put(ProcessConstant.REPORT_KEY, isReport);
+ variables.put(ProcessConstant.TODEPT_KEY, bladeFlowTask.getToDept());
+ flowClient.completeTask(taskId, processInstanceId, comment, variables);
+ return true;
+ }
+
+ /**
+ * 获取节点信息,倒数第一个是自己,第二个是上一节点
+ *
+ * @param processInstanceId
+ * @param i 倒数第几
+ * @return
+ */
+ private BladeFlow getFlowNode(String processInstanceId, int i) {
+ R<List<BladeFlow>> res = flowClient.historyFlowList(processInstanceId, "start", "finish");
+
+ if (res.isSuccess()) {
+ //历史流程
+ List<BladeFlow> data = res.getData();
+
+ //size减1为当前节点,-2为上一节点
+ BladeFlow bladeFlow = data.get(data.size() - i);
+ return bladeFlow;
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public PatrolTaskVO customizeGetById(String businessId) {
return baseMapper.customizeGetById(businessId);
}
- public void saveReport(PatrolTask patrolTask){
+ @Override
+ public List<PatrolTask> getAll(PatrolTaskVO patrolTaskVO) {
+ return baseMapper.getAll(patrolTaskVO);
+ }
+
+ @Override
+ public IPage<PatrolTaskReport> getTaskReportPage(IPage<PatrolTaskReport> page, PatrolTaskReport patrolTaskReport) {
+ List<PatrolTaskReport> list = new ArrayList<>();
+
+ //获取行政区划统计报表
+ if (patrolTaskReport.getRegionFlag().equals("1")) {
+ list = baseMapper.getRegionReportPage(page, patrolTaskReport);
+ } else {
+ //获取水库巡查报表
+ list = baseMapper.getReservoirReportPage(page, patrolTaskReport);
+ }
+ return page.setRecords(list);
+ }
+
+ @Override
+ public List<PatrolTaskReport> getTaskReportList(PatrolTaskReport patrolTaskReport) {
+ List<PatrolTaskReport> list = new ArrayList();
+
+ //获取行政区划统计报表
+ if (patrolTaskReport.getRegionFlag().equals("1")) {
+ list = baseMapper.getRegionReportList(patrolTaskReport);
+ } else {
+ //获取水库巡查报表
+ list = baseMapper.getReservoirReportList(patrolTaskReport);
+ }
+ return list;
+ }
+
+ @Override
+ public List<TaskStatusCount> getTaskStatusCount(PatrolTaskVO patrolTaskVO) {
+ return baseMapper.getTaskStatusCount(patrolTaskVO);
+ }
+
+ @Override
+ public List<TaskStatusCount> getTaskStatusCountOptimize(PatrolTaskVO patrolTaskVO) {
+ List<TaskStatusCount> list = new ArrayList<>();
+// TaskStatusCount all = baseMapper.getTaskStatusCountAll(patrolTaskVO);
+//
+// TaskStatusCount unfinished = baseMapper.getTaskStatusCountByType(patrolTaskVO,"1");
+// TaskStatusCount processing = baseMapper.getTaskStatusCountByType(patrolTaskVO,"2");
+// TaskStatusCount finished = baseMapper.getTaskStatusCountByType(patrolTaskVO,"3");
+//
+// list.add(unfinished);
+// list.add(processing);
+// list.add(finished);
+// list.add(all);
+
+ TaskStatus taskStatus = baseMapper.getTaskStatus(patrolTaskVO);
+
+ TaskStatusCount unfinished = new TaskStatusCount("未完成", "1", taskStatus.getUnfinished());
+ TaskStatusCount processing = new TaskStatusCount("进行中", "2", taskStatus.getProcessing());
+ TaskStatusCount finished = new TaskStatusCount("已完成", "3", taskStatus.getFinished());
+ TaskStatusCount all = new TaskStatusCount("全部", "", taskStatus.getTotal());
+
+ list.add(unfinished);
+ list.add(processing);
+ list.add(finished);
+ list.add(all);
+ return list;
+ }
+
+ @Override
+ public TaskStatus getTaskStatus(PatrolTaskVO patrolTaskVO) {
+
+ TaskStatus taskStatus = baseMapper.getTaskStatus(patrolTaskVO);
+
+ return taskStatus;
+ }
+
+
+ @Override
+ public List<TaskStatusCount> getTaskTypeCount(PatrolTaskVO patrolTaskVO) {
+ return baseMapper.getTaskTypeCount(patrolTaskVO);
+ }
+
+ @Override
+ public IPage<PatrolTaskReport> getTaskReportDetail(IPage<PatrolTaskReport> page, PatrolTaskReport patrolTaskReport) {
+
+ List<PatrolTaskReport> list = new ArrayList();
+
+ list = baseMapper.getTaskReportDetailRegion(page, patrolTaskReport);
+
+ return page.setRecords(list);
+ }
+
+
+ @Transactional(rollbackFor = Exception.class)
+ public void saveReport(PatrolTask patrolTask) {
//拿到当前任务下的异常巡查记录
PatrolRecord patrolRecord = new PatrolRecord();
patrolRecord.setTaskId(patrolTask.getId().toString());
@@ -208,7 +455,7 @@
List<PatrolRecord> list = patrolRecordService.list(Condition.getQueryWrapper(patrolRecord));
//向上报表中添加数据
- list.forEach(record->{
+ list.forEach(record -> {
PatrolReport patrolReport = new PatrolReport();
patrolReport.setContent(record.getContent());
patrolReport.setImages(record.getImages());
--
Gitblit v1.9.3