caixiaofeng 10 месяцев назад
Родитель
Сommit
4c6fe49be3

+ 2 - 0
flow-system/flow-system-api/src/main/java/com/flow/service/DeptService.java

@@ -32,4 +32,6 @@ public interface DeptService extends BaseService<Dept> {
     List<User> getUsers(String id);
 
     List<User> getUsers(List<String> ids);
+
+    List<User> getRoleUsers(List<String> ids,List<String> roleIds);
 }

+ 15 - 0
flow-system/flow-system-biz/src/main/java/com/flow/dao/DeptDao.java

@@ -36,4 +36,19 @@ public interface DeptDao extends BaseDao<Dept> {
             "</script>"
     })
     List<User> getUsers(@Param("ids") List<String> ids);
+
+
+    @Select({
+            "<script>",
+            "select * from sys_user where dept_id in",
+            "<foreach item='id' collection='ids' open='(' separator=',' close=')'>",
+            "#{id}",
+            "</foreach>",
+            "and username in",
+            "<foreach item='id' collection='roleIds' open='(' separator=',' close=')'>",
+            "#{id}",
+            "</foreach>",
+            "</script>"
+    })
+    List<User> getRoleUsers(@Param("ids") List<String> ids, @Param("roleIds") List<String> roleIds);
 }

+ 5 - 0
flow-system/flow-system-biz/src/main/java/com/flow/service/impl/DeptServiceImpl.java

@@ -137,4 +137,9 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptDao, Dept> implements D
     public List<User> getUsers(List<String> ids) {
         return deptDao.getUsers(ids);
     }
+
+    @Override
+    public List<User> getRoleUsers(List<String> ids,List<String> roleIds) {
+        return deptDao.getRoleUsers(ids,roleIds);
+    }
 }

+ 1 - 0
flow-workflow/flow-workflow-biz/src/main/java/com/flow/service/impl/FlowInstanceServiceImpl.java

@@ -103,6 +103,7 @@ public class FlowInstanceServiceImpl extends BaseServiceImpl<FlowInstanceDao, Fl
         formInfo.setFormName(instance.getName());
         formInfo.setStartUserId(instance.getStartUserId());
         formInfo.setStartTime(instance.getStartTime());
+        formInfo.setEndTime(instance.getEndTime());
         formInfo.setStatus(instance.getStatus());
         return formInfo;
     }

+ 15 - 3
flow-workflow/flow-workflow-biz/src/main/java/com/flow/service/impl/FlowTaskServiceImpl.java

@@ -108,6 +108,18 @@ public class FlowTaskServiceImpl extends BaseServiceImpl<FlowTaskDao, FlowTask>
         formInfo.setFormName(instance.getName());
         formInfo.setStartUserId(instance.getStartUserId());
         formInfo.setStartTime(instance.getStartTime());
+        if (task instanceof HistoricTaskInstance) {
+            HistoricTaskInstance historicTaskInstance = (HistoricTaskInstance) task;
+            Date endTime = historicTaskInstance.getEndTime();
+            if (Objects.nonNull(endTime)) {
+                formInfo.setEndTime(
+                        LocalDateTime.ofInstant(
+                                endTime.toInstant(),
+                                TimeZone.getDefault().toZoneId()
+                        )
+                );
+            }
+        }
         formInfo.setStatus(instance.getStatus());
         return formInfo;
     }
@@ -327,11 +339,11 @@ public class FlowTaskServiceImpl extends BaseServiceImpl<FlowTaskDao, FlowTask>
         Map<String, Object> transientVariables = new HashMap<>();
         Map<String, Object> variables = taskService.getVariables(task.getId());
         Map<String, Object> values = taskForm.getValues();
-        if(CollectionUtils.isNotEmpty(values)){
+        if (CollectionUtils.isNotEmpty(values)) {
             values.forEach((key, value) -> {
-                if (variables.containsKey(key)){
+                if (variables.containsKey(key)) {
                     Object obj = variables.get(key);
-                    if(Objects.nonNull(obj) && !obj.equals(value)){
+                    if (Objects.nonNull(obj) && !obj.equals(value)) {
                         transientVariables.put(key, value);
                     }
                 }

+ 8 - 0
flow-workflow/flow-workflow-entity/src/main/java/com/flow/entity/node/AssigneeNode.java

@@ -36,6 +36,8 @@ public abstract class AssigneeNode extends Node {
     private String formOrganization;
     // 组织办理类型
     private OrganizationTypeEnum organizationType;
+    // 组织内角色
+    private List<String> organizationRoles;
     // 主管
     private Integer leader;
     // 组织主管
@@ -113,6 +115,9 @@ public abstract class AssigneeNode extends Node {
                 if (organizationTypeEnum == OrganizationTypeEnum.ALL) {
                     leaderList = deptService.getUsers(this.getOrganizations());
                 }
+                if (organizationTypeEnum == OrganizationTypeEnum.ROLE) {
+                    leaderList =deptService.getRoleUsers(this.getOrganizations(), this.getOrganizationRoles());
+                }
                 if (CollectionUtils.isNotEmpty(leaderList)) {
                     List<String> userIds = leaderList.stream().map(User::getUsername).collect(Collectors.toList());
                     assignees.addAll(userIds);
@@ -135,6 +140,9 @@ public abstract class AssigneeNode extends Node {
                     if (organizationType == OrganizationTypeEnum.ALL) {
                         userList = deptService.getUsers(this.getOrganizations());
                     }
+                    if (organizationType == OrganizationTypeEnum.ROLE) {
+                        userList = deptService.getRoleUsers(this.getOrganizations(), this.getOrganizationRoles());
+                    }
                     if (CollectionUtils.isNotEmpty(userList)) {
                         List<String> userIds = userList.stream()
                                 .map(User::getUsername)

+ 2 - 1
flow-workflow/flow-workflow-entity/src/main/java/com/flow/enums/OrganizationTypeEnum.java

@@ -8,7 +8,8 @@ import lombok.Getter;
 @AllArgsConstructor
 public enum OrganizationTypeEnum {
     LEADER("leader", "组织主管"),
-    ALL("all", "组织内所有人");
+    ALL("all", "组织内所有人"),
+    ROLE("role", "组织内角色");
 
     @JsonValue
     final String organizationType;

+ 2 - 0
flow-workflow/flow-workflow-entity/src/main/java/com/flow/model/FormInfo.java

@@ -32,6 +32,8 @@ public class FormInfo {
     private String startUserId;
     // 发起时间
     private LocalDateTime startTime;
+    // 结束时间
+    private LocalDateTime endTime;
     // 操作权限
     private Map<String, Boolean> operations = new LinkedHashMap<>();