From 200f9e99bab7dcab9360f34fa25f6fa97c33c167 Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Tue, 05 Mar 2024 14:59:15 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jtdev' into jtdev

---
 skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/feign/IFlowClientFallback.java      |    6 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolRecordMapper.java            |    2 
 skjcmanager/skjcmanager-ops/skjcmanager-flow/src/main/java/cn/gistack/flow/business/feign/FlowClient.java                   |    9 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/PatrolTaskVO.java                      |    5 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolRecordController.java    |   12 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/entity/PatrolTask.java                    |    3 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/BladeFlowTask.java                     |    9 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolRecordService.java         |    2 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolTaskService.java           |    9 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/PatrolRecordVO.java                    |    3 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolRecordServiceImpl.java |    5 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolTaskMapper.xml               |   10 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolTaskServiceImpl.java   |  295 ++++++++++++++++++++++++++----------
 skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/constant/ProcessConstant.java       |   10 +
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolTaskController.java      |   12 +
 skjcmanager/skjcmanager-ops-api/skjcmanager-flow-api/src/main/java/cn/gistack/flow/core/feign/IFlowClient.java              |    7 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolRecordMapper.xml             |   41 ++++
 17 files changed, 351 insertions(+), 89 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 7396cba..201c73b 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
@@ -64,6 +64,16 @@
 	String TOTECH_KEY = "toTech";
 
 	/**
+	 * 转送给主管部门负责人标识
+	 */
+	String TOSUPERVISOR_KEY = "toSupervisor";
+
+	/**
+	 * 转送给主管部门负责人标识
+	 */
+	String TOADMIN_KEY = "toAdmin";
+
+	/**
 	 * 同意代号
 	 */
 	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 8e6ba91..f602039 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
@@ -52,6 +52,8 @@
 	String DONE_LIST = "/done-list";
 	String GET_BLADEFLOW = "/getBladeFlow";
 
+	String HISTORY_FLOW_LIST = "/history-flow-list";
+
 	/**
 	 * 开启流程
 	 *
@@ -124,4 +126,9 @@
 
 	@PostMapping(DONE_LIST)
 	R<BladeFlowPage> getDoneBladeFlowList(@RequestParam("size") Integer size, @RequestParam("current") Integer current, @RequestParam("currentUserId") String currentUserId, @RequestBody BladeFlowVO bladeFlow);
+
+
+	@GetMapping(HISTORY_FLOW_LIST)
+	R<List<BladeFlow>> historyFlowList(@RequestParam("processInstanceId") String processInstanceId,@RequestParam("startActivityId") String startActivityId,@RequestParam("endActivityId") String endActivityId);
+
 }
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 ed52cf9..61fdfc6 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
@@ -74,4 +74,10 @@
 		return R.fail("远程调用失败");
 	}
 
+	@Override
+	public R<List<BladeFlow>> historyFlowList(String processInstanceId, String startActivityId, String endActivityId) {
+		return R.fail("远程调用失败");
+	}
+
+
 }
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 d264188..77e5861 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
@@ -21,6 +21,7 @@
 import cn.gistack.flow.core.feign.IFlowClient;
 import cn.gistack.flow.core.utils.TaskUtil;
 import cn.gistack.flow.core.vo.BladeFlowVO;
+import cn.gistack.flow.engine.service.FlowEngineService;
 import cn.gistack.sm.patrol.vo.BladeFlowPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import lombok.AllArgsConstructor;
@@ -54,6 +55,7 @@
 	private final IdentityService identityService;
 	private final TaskService taskService;
 	private final FlowBusinessService flowBusinessService;
+	private final FlowEngineService flowEngineService;
 
 	@Override
 	@PostMapping(START_PROCESS_INSTANCE_BY_ID)
@@ -148,5 +150,12 @@
 		return R.data(bladeFlowPage);
 	}
 
+	@Override
+	@GetMapping(HISTORY_FLOW_LIST)
+	public R<List<BladeFlow>> historyFlowList(String processInstanceId, String startActivityId, String endActivityId) {
+		List<BladeFlow> bladeFlows = flowEngineService.historyFlowList(processInstanceId, startActivityId, endActivityId);
+		return R.data(bladeFlows);
+	}
+
 
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolRecordController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolRecordController.java
index 778389d..651ba80 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolRecordController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/controller/PatrolRecordController.java
@@ -179,5 +179,17 @@
 		return R.data(detail);
 	}
 
+	/**
+	 * 获取处理情况
+	 * @param patrolRecord
+	 * @return
+	 */
+	@GetMapping("getHandleRecord")
+	public R getHandleRecord(PatrolRecord patrolRecord){
+
+		PatrolRecordVO res = patrolRecordService.getHandleRecord(patrolRecord);
+		return R.data(res);
+	}
+
 
 }
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 8509dcd..6edd991 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
@@ -208,6 +208,18 @@
 	}
 
 	/**
+	 * 汛期、白蚁、大坝 责任人完成任务
+	 */
+	@PostMapping("person-complete-task")
+	@ApiOperation(value = "完成任务", notes = "传入流程信息")
+	public R personCompleteTask(@RequestBody PatrolTaskVO patrolTaskVO) {
+		return R.status(patrolTaskService.personCompleteTask(patrolTaskVO, patrolTaskVO.getCurrentUserId(), patrolTaskVO.getTaskUser()));
+	}
+
+
+
+
+	/**
 	 * 查询待办
 	 *
 	 * @param patrolTask 任务
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 0a45e8f..f3f9d3d 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
@@ -154,6 +154,9 @@
 	 */
 	private String processInstanceId;
 
+	//处理状态,1、巡查;2、处理中;3已处理
+	private String handleStatus;
+
 	/**
 	 * 工作流标识 是否上报
 	 */
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolRecordMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolRecordMapper.java
index df73ac3..210d0ad 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolRecordMapper.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/mapper/PatrolRecordMapper.java
@@ -27,4 +27,6 @@
     List<PatrolGroupDTO> getHistoryRecord(@Param("vo") PatrolRecordVO patrolRecordVO);
 
 	RecordVO getRecordVO(@Param("vo") RecordVO recordVO);
+
+	PatrolRecordVO getHandleRecord(@Param("record") PatrolRecord patrolRecord);
 }
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 a331350..158e738 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
@@ -35,6 +35,8 @@
         <result column="city_name" property="cityName"/>
         <result column="county_name" property="countyName"/>
         <result column="town_name" property="townName"/>
+        <result property="handleUser" column="handleUser"/>
+        <result property="handleUserName" column="handleUserName"/>
 
     </resultMap>
 
@@ -81,6 +83,9 @@
           </if>
         <if test="patrolRecord.status !=null and patrolRecord.status != '' ">
             AND record.status = #{patrolRecord.status}
+        </if>
+        <if test="patrolRecord.solution !=null and patrolRecord.solution != '' ">
+            AND record.solution = #{patrolRecord.solution}
         </if>
         <if test="patrolRecord.patrolType !=null and patrolRecord.patrolType !=''">
             AND record.patrolType = #{patrolRecord.patrolType}
@@ -202,6 +207,9 @@
             <result property="taskId" column="taskId"/>
             <result property="solution" column="solution"/>
             <result property="content" column="content"/>
+            <result property="state" column="state"/>
+            <result property="recordType" column="recordType"/>
+            <result property="handleUserName" column="handleUserName"/>
         </collection>
     </resultMap>
 
@@ -217,11 +225,16 @@
                R.ITEM_ID  AS itemId,
                I.ITEMS_NAME AS itemsName,
                R.TASK_ID AS taskId ,
-               R.SOLUTION,
-               R.CONTENT
+               R.solution,
+               R.CONTENT,
+               R.STATE,
+               R.record_type as recordType,
+               R.UPDATE_USER as handleUser,
+               BU.real_name as handleUserName
         FROM SM_PATROL_GROUP G
                  LEFT JOIN SM_PATROL_GROUP_ITEM I ON I.GROUP_ID = G.ID
                  LEFT JOIN SM_PATROL_RECORD R ON R.ITEM_ID = I.ID
+                LEFT JOIN BLADE_USER BU ON BU.ID = R.UPDATE_USER
         WHERE G.IS_DELETED = 0
           <if test="vo.flowTaskId != null and vo.flowTaskId !='' ">
               AND R.FLOW_TASK_ID = #{vo.flowTaskId}
@@ -231,6 +244,15 @@
          </if>
         <if test="vo.recordType !=null and vo.recordType !=''">
             AND R.record_type = #{vo.recordType}
+        </if>
+        <if test="vo.status !=null and vo.status !=''">
+            AND R.status = #{vo.status}
+        </if>
+        <if test="vo.state !=null and vo.state !=''">
+            AND R.status = #{vo.state}
+        </if>
+        <if test="vo.solution !=null and vo.solution !=''">
+            AND R.status = #{vo.solution}
         </if>
 
     </select>
@@ -306,7 +328,20 @@
              LEFT JOIN YWXT.BLADE_USER BU ON BU.ID = handle.CREATE_USER
 
     </select>
-
+    <select id="getHandleRecord" resultMap="selectPatrolRecordList">
+        SELECT SPR.*,SPR.update_user as handleUser,BU.real_name as handleUserName FROM SM_PATROL_RECORD SPR
+        LEFT JOIN BLADE_USER BU ON BU.ID = SPR.UPDATE_USER
+        WHERE SPR.IS_DELETED = 0
+        <if test="record.taskId != null and record.taskId != ''">
+            AND task_id = #{record.taskId}
+        </if>
+        <if test="record.itemId != null and record.itemId !=''">
+            AND item_id = #{record.itemId}
+        </if>
+        <if test="record.recordType != null and record.recordType != ''">
+            AND record_type = #{record.recordType}
+        </if>
+    </select>
 
 
 </mapper>
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 778888e..a064cc8 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
@@ -61,11 +61,17 @@
                         <if test="patrolTask.title !=null and patrolTask.title!=''">
                             AND spt.title LIKE CONCAT('%',#{patrolTask.title},'%')
                         </if>
+<!--                        <if test="patrolTask.startTime !=null and patrolTask.startTime !=''">-->
+<!--                            AND spt.start_time &gt;= #{patrolTask.startTime}-->
+<!--                        </if>-->
+<!--                        <if test="patrolTask.endTime !=null and patrolTask.endTime !=''">-->
+<!--                            AND spt.end_time &lt;= #{patrolTask.endTime}-->
+<!--                        </if>-->
                         <if test="patrolTask.startTime !=null and patrolTask.startTime !=''">
-                            AND spt.start_time &gt;= #{patrolTask.startTime}
+                            AND spt.create_time &gt;= #{patrolTask.startTime}
                         </if>
                         <if test="patrolTask.endTime !=null and patrolTask.endTime !=''">
-                            AND spt.end_time &lt;= #{patrolTask.endTime}
+                            AND spt.create_time &lt;= #{patrolTask.endTime}
                         </if>
                         <if test="patrolTask.projectId !=null and patrolTask.projectId !='' ">
                             AND spt.project_id = #{patrolTask.projectId}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolRecordService.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolRecordService.java
index 6b14fff..48b0930 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolRecordService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/IPatrolRecordService.java
@@ -61,4 +61,6 @@
 	List<PatrolGroupDTO> getHistoryRecord(PatrolRecordVO patrolRecordVO);
 
 	RecordVO getRecordVO(RecordVO recordVO);
+
+	PatrolRecordVO getHandleRecord(PatrolRecord patrolRecord);
 }
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 8a9668b..f30f878 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
@@ -82,4 +82,13 @@
 	List<TaskStatusCount> getTaskStatusCountOptimize(PatrolTaskVO patrolTaskVO);
 
 	TaskStatus getTaskStatus(PatrolTaskVO patrolTaskVO);
+
+	/**
+	 * 汛期、白蚁、大坝 责任人完成任务
+	 * @param patrolTaskVO
+	 * @param currentUserId
+	 * @param taskUser
+	 * @return
+	 */
+	boolean personCompleteTask(PatrolTaskVO patrolTaskVO, String currentUserId, String taskUser);
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolRecordServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolRecordServiceImpl.java
index 0173b9e..ee3c7d2 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolRecordServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/service/impl/PatrolRecordServiceImpl.java
@@ -110,4 +110,9 @@
 	public RecordVO getRecordVO(RecordVO recordVO) {
 		return baseMapper.getRecordVO(recordVO);
 	}
+
+	@Override
+	public PatrolRecordVO getHandleRecord(PatrolRecord patrolRecord) {
+		return baseMapper.getHandleRecord(patrolRecord);
+	}
 }
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 0db7c54..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
@@ -44,8 +44,15 @@
 	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
@@ -54,7 +61,7 @@
 	public IPage<PatrolTaskVO> selectPatrolTask(IPage<PatrolTaskVO> page, PatrolTaskVO patrolTask) {
 //		List<PatrolTaskVO> patrolTaskList = baseMapper.selectPatrolTask(page, patrolTask);
 
-		List<PatrolTaskVO> patrolTaskList = baseMapper.selectPatrolTaskPage(page.getCurrent()-1,page.getSize(),patrolTask);
+		List<PatrolTaskVO> patrolTaskList = baseMapper.selectPatrolTaskPage(page.getCurrent() - 1, page.getSize(), patrolTask);
 		long total = baseMapper.getPatrolTaskTotal(patrolTask);
 		page.setRecords(patrolTaskList);
 		page.setTotal(total);
@@ -64,6 +71,7 @@
 
 	/**
 	 * 查询巡查人员统计数据信息
+	 *
 	 * @param patrolTask
 	 * @return
 	 */
@@ -74,6 +82,7 @@
 
 	/**
 	 * 自定义编辑(空间坐标编辑)
+	 *
 	 * @param patrolTask
 	 * @return
 	 */
@@ -84,11 +93,12 @@
 		enhancementServicesTool.resolveEntity(patrolTask);
 		Integer update = baseMapper.updatePatrolTask(patrolTask);
 		//返回
-		return update>0?true:false;
+		return update > 0 ? true : false;
 	}
 
 	/**
 	 * 自定义添加
+	 *
 	 * @param patrolTask
 	 * @return
 	 */
@@ -101,11 +111,12 @@
 		// 新增
 		Integer save = baseMapper.savePatrolTask(patrolTask);
 		//返回
-		return save>0?true:false;
+		return save > 0 ? true : false;
 	}
 
 	/**
 	 * 自定义通过id查询
+	 *
 	 * @param id
 	 * @return
 	 */
@@ -120,11 +131,24 @@
 		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
@@ -139,80 +163,190 @@
 		return patrolTask;
 	}
 
-	@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);
-			//保存巡查记录
-			patrolRecordService.saveBatch(patrolTask.getPatrolRecordList());
-			//保存上报
-			//停用
-//			saveReport(patrolTask);
-
-
-			//查监测预警表,看是否有这个任务,有的话修改任务状态
-			Boolean finishDamTask = nkyClient.finishTask(patrolTask.getId().toString());
-			if (!finishDamTask){
-				//查白蚁表,看是否有这个任务,有的话修改任务状态
-				Boolean finishTermitesTask = waterDataTermitesService.finishTask(patrolTask.getId().toString());
-			}
-
-			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) {
 
-		boolean isReport = false;
-		if (StringUtil.isNoneBlank(bladeFlowTask.getTaskUser())){
-			isReport = true;
+		String taskId = patrolTaskVO.getFlowTaskId();
+		String processInstanceId = patrolTaskVO.getProcessInstanceId();
+		String comment = patrolTaskVO.getComment();
+
+		//保存巡查记录
+		if (patrolTaskVO.getPatrolRecordList() != null && patrolTaskVO.getPatrolRecordList().size()>0){
+			patrolRecordService.saveBatch(patrolTaskVO.getPatrolRecordList());
 		}
 
-		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());
-		//完成任务
+
+		//指定了人就是上报,没指定就表示已经处理了
+		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);
+	}
+
+
+	@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 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
@@ -226,15 +360,15 @@
 	}
 
 	@Override
-	public IPage<PatrolTaskReport> getTaskReportPage(IPage<PatrolTaskReport> page,PatrolTaskReport patrolTaskReport) {
-		List<PatrolTaskReport> list  = new ArrayList<>();
+	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 {
+		if (patrolTaskReport.getRegionFlag().equals("1")) {
+			list = baseMapper.getRegionReportPage(page, patrolTaskReport);
+		} else {
 			//获取水库巡查报表
-			list = baseMapper.getReservoirReportPage(page,patrolTaskReport);
+			list = baseMapper.getReservoirReportPage(page, patrolTaskReport);
 		}
 		return page.setRecords(list);
 	}
@@ -244,9 +378,9 @@
 		List<PatrolTaskReport> list = new ArrayList();
 
 		//获取行政区划统计报表
-		if (patrolTaskReport.getRegionFlag().equals("1")){
+		if (patrolTaskReport.getRegionFlag().equals("1")) {
 			list = baseMapper.getRegionReportList(patrolTaskReport);
-		}else {
+		} else {
 			//获取水库巡查报表
 			list = baseMapper.getReservoirReportList(patrolTaskReport);
 		}
@@ -274,10 +408,10 @@
 
 		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());
+		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);
@@ -294,6 +428,7 @@
 		return taskStatus;
 	}
 
+
 	@Override
 	public List<TaskStatusCount> getTaskTypeCount(PatrolTaskVO patrolTaskVO) {
 		return baseMapper.getTaskTypeCount(patrolTaskVO);
@@ -304,14 +439,14 @@
 
 		List<PatrolTaskReport> list = new ArrayList();
 
-		list = baseMapper.getTaskReportDetailRegion(page,patrolTaskReport);
+		list = baseMapper.getTaskReportDetailRegion(page, patrolTaskReport);
 
 		return page.setRecords(list);
 	}
 
 
 	@Transactional(rollbackFor = Exception.class)
-	public void saveReport(PatrolTask patrolTask){
+	public void saveReport(PatrolTask patrolTask) {
 		//拿到当前任务下的异常巡查记录
 		PatrolRecord patrolRecord = new PatrolRecord();
 		patrolRecord.setTaskId(patrolTask.getId().toString());
@@ -320,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());
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
index 4437919..425f24c 100644
--- 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
@@ -8,16 +8,17 @@
 
 @Data
 public class BladeFlowTask {
-
-	private List<PatrolReport> patrolReportList;
-
+	//流程任务id
 	private String taskId;
 
+	//实例id
 	private String processInstanceId;
 
+	//指定人
 	private String taskUser;
 
+	//上报给水行政部门
 	private Boolean toDept;
 
-	private Boolean toTech;
+	private String comment;
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/PatrolRecordVO.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/PatrolRecordVO.java
index 55e3d81..c4ef601 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/PatrolRecordVO.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/patrol/vo/PatrolRecordVO.java
@@ -79,4 +79,7 @@
 	private String endTime;
 
 	private String adCode;
+
+	private String handleUser;
+	private String handleUserName;
 }
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 910eaed..7bc5825 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
@@ -70,4 +70,9 @@
 	private String lon;
 
 	private String lat;
+
+	private String comment;
+
+	//工作流taskId
+	private String flowTaskId;
 }

--
Gitblit v1.9.3