From 6cd2da8eb7d7aefecd96a19ebbfe9caba59ea88c Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Thu, 18 May 2023 14:25:58 +0800
Subject: [PATCH] 巡查任务巡查责任人完成任务逻辑修改
---
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolTaskServiceImpl.java | 206 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 205 insertions(+), 1 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 99d7f2e..00a5245 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,15 +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;
/**
* 自定义分页查询
@@ -19,7 +55,8 @@
*/
@Override
public IPage<PatrolTaskVO> selectPatrolTask(IPage<PatrolTaskVO> page, PatrolTaskVO patrolTask) {
- return page.setRecords(baseMapper.selectPatrolTask(patrolTask));
+ List<PatrolTaskVO> patrolTaskList = baseMapper.selectPatrolTask(page, patrolTask);
+ return page.setRecords(patrolTaskList);
}
/**
@@ -31,4 +68,171 @@
public Object getPatrolTaskStatistic(PatrolTaskVO patrolTask) {
return baseMapper.getPatrolTaskStatistic(patrolTask);
}
+
+ /**
+ * 自定义编辑(空间坐标编辑)
+ * @param patrolTask
+ * @return
+ */
+ @Override
+ public Boolean updatePatrolTask(PatrolTask patrolTask) {
+ // 设置基础信息
+ EnhancementServicesTool enhancementServicesTool = new EnhancementServicesTool();
+ enhancementServicesTool.resolveEntity(patrolTask);
+ Integer update = baseMapper.updatePatrolTask(patrolTask);
+ //返回
+ return update>0?true:false;
+ }
+
+ /**
+ * 自定义添加
+ * @param patrolTask
+ * @return
+ */
+ @Override
+ public Boolean savePatrolTask(PatrolTask patrolTask) {
+ // 设置基础信息
+ EnhancementServicesTool enhancementServicesTool = new EnhancementServicesTool();
+ enhancementServicesTool.resolveEntity(patrolTask);
+ patrolTask.setId(IdWorker.getId());
+ // 新增
+ Integer save = baseMapper.savePatrolTask(patrolTask);
+ //返回
+ return save>0?true:false;
+ }
+
+ /**
+ * 自定义通过id查询
+ * @param id
+ * @return
+ */
+ @Override
+ 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(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 = 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, taskUser));
+ // 完成任务
+ flowClient.completeTask(taskId,processInstanceId,comment,variables);
+ saveReport(patrolTask);
+ patrolRecordService.saveBatch(patrolTask.getPatrolRecordList());
+ 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());
+
+ 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;
+ }
+
+ @Override
+ public PatrolTask customizeGetById(String businessId) {
+ return baseMapper.customizeGetById(businessId);
+ }
+
+ @Override
+ public List<PatrolTask> getAll(PatrolTaskVO patrolTaskVO) {
+ return baseMapper.getAll(patrolTaskVO);
+ }
+
+ 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);
+ });
+ }
+
+
}
--
Gitblit v1.9.3