From c007f0ca1785db093d48f4846cda82fe8e955765 Mon Sep 17 00:00:00 2001
From: kimi <kimi42345@gmail.com>
Date: 星期三, 27 五月 2020 09:59:29 +0800
Subject: [PATCH] merage

---
 src/main/java/com/highdatas/mdm/service/impl/FlowsServiceImpl.java |  103 ++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 80 insertions(+), 23 deletions(-)

diff --git a/src/main/java/com/highdatas/mdm/service/impl/FlowsServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/FlowsServiceImpl.java
index 87fb86e..1ed36ab 100644
--- a/src/main/java/com/highdatas/mdm/service/impl/FlowsServiceImpl.java
+++ b/src/main/java/com/highdatas/mdm/service/impl/FlowsServiceImpl.java
@@ -1,18 +1,19 @@
 package com.highdatas.mdm.service.impl;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.highdatas.mdm.entity.Flows;
 import com.highdatas.mdm.entity.MaintainField;
-import com.highdatas.mdm.entity.TUserRole;
 import com.highdatas.mdm.mapper.FlowsMapper;
 import com.highdatas.mdm.mapper.SysFieldMapper;
 import com.highdatas.mdm.pojo.ActivitiBusinessType;
 import com.highdatas.mdm.pojo.ActivitiStatus;
 import com.highdatas.mdm.pojo.NextTaskUserInfo;
 import com.highdatas.mdm.service.*;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.highdatas.mdm.service.act.IdentityService;
 import com.highdatas.mdm.service.act.TaskService;
 import com.highdatas.mdm.util.DbUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -28,6 +29,7 @@
  * @since 2019-12-19
  */
 @Service
+@Slf4j
 public class FlowsServiceImpl extends ServiceImpl<FlowsMapper, Flows> implements IFlowsService {
     @Autowired
     IMaintainFieldService maintainFieldService;
@@ -36,12 +38,28 @@
     @Autowired
     SysFieldMapper fieldMapper;
     @Autowired
-    ITUserRoleService userRoleService;
-    @Autowired
     IMasterModifiedService masterModifiedService;
     @Autowired
     IMaintainService maintainService;
+    @Autowired
+    IdentityService identityService;
+    @Autowired
+    ISysViewService viewService;
+    @Autowired
+    IMasterAuthorSubscribeService subscribeService;
+    @Autowired
+    ISysMenuService menuService;
 
+    /**
+     *
+     * @description:  鍒涘缓鏂板瓧娈电増鏈�
+     * @param userId 鐢ㄦ埛id
+     * @param maintainId 鏁版嵁鐗堟湰id
+     * @param tableName 琛ㄥ悕
+     *
+     * @return: maintainfielid 瀛楁鐗堟湰瀵硅薄
+     *
+     */
     @Override
     public MaintainField createNowVerion(String tableName, String maintainId, String userId) {
         MaintainField nowMaintain = maintainFieldService.getNextMaintain(tableName, userId);
@@ -60,32 +78,50 @@
 
         return nowMaintain;
     }
-
+    /**
+     *
+     * @description:  閫氳繃涓氬姟id鑾峰彇瀹℃壒鐘舵��
+     * @param businessId 涓氬姟id
+     * @return: status
+     *
+     */
     @Override
     public ActivitiStatus getStatusByBusinessId(String businessId) {
-        Flows flows = selectOne(new EntityWrapper<Flows>().eq("business_id", businessId));
+        Flows flows = selectOne(new EntityWrapper<Flows>().eq("business_id", businessId).orderBy("create_time desc"));
         if (flows == null){
             return null;
         }
         return flows.getStatus();
     }
-
+    /**
+     *
+     * @description:  鍒ゆ柇鏄惁涓轰笅涓�鑺傜偣瀹℃壒浜�
+     * @param flows 娴佺▼
+     * @param userId 鐢ㄦ埛id
+     * @return: status
+     *
+     */
     @Override
     public boolean isNextAudit(Flows flows, String userId) {
         NextTaskUserInfo nestTaskAssignee = taskService.getNestTaskAssignee(flows.getWorkflowId());
         if (nestTaskAssignee == null){
             return false;
         }
-        String taskAssigneeUserId = nestTaskAssignee.getUserId();
-        if (!StringUtils.isEmpty(taskAssigneeUserId)){
-            return taskAssigneeUserId.equalsIgnoreCase(userId);
+        List<String> userIdList = nestTaskAssignee.getUserIdList();
+        if (userIdList.contains(userId)) {
+            return true;
         }
-        String roleId = nestTaskAssignee.getRoleId();
-        if (StringUtils.isEmpty(roleId)) {
+
+        List<String> roleIdList = nestTaskAssignee.getRoleIdList();
+        if (roleIdList == null || roleIdList.isEmpty()) {
             return false;
         }
-        List<TUserRole> userRoles = userRoleService.selectList(new EntityWrapper<TUserRole>().eq("role_id", roleId));
-        long count = userRoles.stream().map(tUserRole -> tUserRole.getUserId()).filter(s -> s.equalsIgnoreCase(userId)).count();
+
+        List<String> roleByUser = identityService.getRoleByUser(userId);
+        if (roleByUser == null || roleByUser.isEmpty()) {
+            return false;
+        }
+        long count = roleByUser.stream().filter(roleId -> roleIdList.contains(roleId)).count();
         if (count == 0) {
             return false;
         }else {
@@ -93,16 +129,37 @@
         }
     }
 
+    /**
+     *
+     * @description:  娴佺▼瀹屾垚鍚庣殑鎿嶄綔
+     * @param flows 娴佺▼瀹炰緥
+     *
+     */
+
     @Override
     public void aduitFinish(Flows flows) {
-        if (flows.getBusinessType().equals(ActivitiBusinessType.maintain)){
-            String maintainId = flows.getBusinessId();
-            masterModifiedService.dealFlow(maintainId, flows.getStatus());
-            maintainService.dealFlow(maintainId, flows.getStatus());
-        }
-        if (flows.getBusinessType().equals(ActivitiBusinessType.field)){
-            String maintainId = flows.getBusinessId();
-            maintainFieldService.dealFlow(maintainId, flows.getStatus());
-        }
+        // 鏂板绾跨▼
+        new Thread(() -> {
+            log.info("澶勭悊 鐢熸垚鐗堟湰鍚庣殑鎿嶄綔");
+            if (flows.getBusinessType().equals(ActivitiBusinessType.maintain)){
+                String maintainId = flows.getBusinessId();
+                log.info("flow-maintain:" + maintainId);
+                masterModifiedService.dealFlow(maintainId, flows.getStatus());
+                log.info("flow-masterModifiedService end");
+                maintainService.dealFlow(maintainId, flows.getStatus());
+                log.info("flow-maintainService end");
+                viewService.dealFlow(maintainId, flows.getStatus());
+                log.info("flow-viewService end");
+                subscribeService.dealFlow(maintainId, flows.getStatus());
+                log.info("flow-subscribeService end");
+                menuService.dealFlow(maintainId, flows.getStatus(), flows.getUserId());
+                log.info("flow-menuService end");
+            }
+            if (flows.getBusinessType().equals(ActivitiBusinessType.field)){
+                String maintainId = flows.getBusinessId();
+                maintainFieldService.dealFlow(maintainId, flows.getStatus());
+
+            }
+        }).start();
     }
 }

--
Gitblit v1.8.0