| 
					
				 | 
			
			
				@@ -1,6 +1,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.flow.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.metadata.IPage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.baomidou.mybatisplus.core.toolkit.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fasterxml.jackson.core.JsonProcessingException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fasterxml.jackson.databind.ObjectMapper; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -19,6 +20,7 @@ import com.flow.enums.NotifyEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.flow.enums.ProcessStatus; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.flow.model.FlowInstanceQuery; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.flow.model.FormInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.flow.model.UrgeTaskForm; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.flow.model.spreadsheet.SpreadSheet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.flow.service.FlowDefineService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.flow.service.FlowInstanceService; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -29,16 +31,15 @@ import org.flowable.engine.RuntimeService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.flowable.engine.TaskService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.flowable.engine.history.HistoricProcessInstance; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.flowable.engine.runtime.ProcessInstance; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.flowable.task.api.Task; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.time.LocalDateTime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.time.format.DateTimeFormatter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.HashMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.Objects; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class FlowInstanceServiceImpl extends BaseServiceImpl<FlowInstanceDao, FlowInstance> implements FlowInstanceService { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -84,6 +85,39 @@ public class FlowInstanceServiceImpl extends BaseServiceImpl<FlowInstanceDao, Fl 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return flowInstanceDao.getInstance(instanceId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public Set<String> getTodoUsers(String instanceId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Task> list = taskService.createTaskQuery() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .processInstanceId(instanceId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .list(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return list.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .map(Task::getAssignee) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .collect(Collectors.toSet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void urge(UrgeTaskForm urgeTaskForm) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String instanceId = urgeTaskForm.getInstanceId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(instanceId).singleResult(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<String> assignees = urgeTaskForm.getAssignees(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String content = urgeTaskForm.getContent(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtils.isBlank(content)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            content = String.format("您好!【%s】目前尚未完成,请尽快处理。", processInstance.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (String assignee : assignees) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Notify notify = Notify.builder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .type(NotifyEnum.MESSAGE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .receivingTime(LocalDateTime.now()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .subject("催办") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .content(content) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .url("/flow/todo") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .receiver(assignee) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .sender(SecurityContextUtil.getUserId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            notifyService.notify(notify); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public Map<String, Object> getVariables(String instanceId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<String, Object> variables = new HashMap<>(); 
			 |