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