|
@@ -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<>();
|