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/ActivitiServiceImpl.java |  115 ++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 101 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/highdatas/mdm/service/impl/ActivitiServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/ActivitiServiceImpl.java
index 20468b3..2ac4fb1 100644
--- a/src/main/java/com/highdatas/mdm/service/impl/ActivitiServiceImpl.java
+++ b/src/main/java/com/highdatas/mdm/service/impl/ActivitiServiceImpl.java
@@ -6,12 +6,10 @@
 import com.highdatas.mdm.entity.Maintain;
 import com.highdatas.mdm.entity.MaintainDetail;
 import com.highdatas.mdm.entity.TUser;
-import com.highdatas.mdm.pojo.ActivitiBusinessType;
-import com.highdatas.mdm.pojo.ActivitiStatus;
-import com.highdatas.mdm.pojo.Page;
-import com.highdatas.mdm.pojo.Result;
+import com.highdatas.mdm.pojo.*;
 import com.highdatas.mdm.service.*;
 import com.highdatas.mdm.service.act.*;
+import com.highdatas.mdm.util.DbUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -42,8 +40,6 @@
     @Autowired
     IFlowsService flowsService;
 
-    @Autowired
-    ITUserService userService;
 
     @Autowired
     HistoryService historyService;
@@ -53,10 +49,39 @@
 
     @Autowired
     RuntimeService runtimeService;
+    @Autowired
+    IMaintainFieldService maintainFieldService;
 
-
+    private TUser user;
+    /**
+     *
+     * @description:  鍚姩娴佺▼
+     * @param  key 娴佺▼key
+     * @param  session 璇锋眰session
+     * @param  maintainId 鐗堟湰id
+     * @param  type 涓氬姟绫诲瀷
+     * @return: flows 娴佺▼瀹炰緥
+     *
+     */
     @Override
     public Flows start(String key, HttpSession session, String maintainId, ActivitiBusinessType type) {
+        return start(key, session, maintainId, type, null);
+    }
+
+    /**
+     *
+     * @description:  鍚姩娴佺▼
+     * @param  key 娴佺▼key
+     * @param  session 璇锋眰session
+     * @param  maintainId 鐗堟湰id
+     * @param  type 涓氬姟绫诲瀷
+     * @param  params 鍙傛暟绫诲瀷
+     * @return: flows 娴佺▼瀹炰緥
+     *
+     */
+    @Override
+    public Flows start(String key, HttpSession session, String maintainId, ActivitiBusinessType type, Map<String, Object> params) {
+
         identityService.setSession( session);
         Flows flows = new Flows();
         String id = UUID.randomUUID().toString().replaceAll("-", "");
@@ -65,11 +90,24 @@
         flows.setBusinessType(type);
         flows.setStatus(ActivitiStatus.working);
         HashMap<String, Object> variableMap = new HashMap<>();
-        variableMap.put("reasson", "鐢宠瀹℃壒");
+        if (params != null) {
+            variableMap.putAll(params);
+        }
+        variableMap.put("reason", "鐢宠瀹℃壒");
+
         String workflowId = identityService.startProcess(id, key, null, variableMap);
         flows.setWorkflowId(workflowId);
         flows.setCreateTime(new Date());
-        TUser user = (TUser) session.getAttribute("user");
+        TUser user = null;
+        if (session != null) {
+            user = (TUser) session.getAttribute("user");
+        }else  {
+            user = this.user;
+        }
+        if (user == null) {
+            return null;
+        }
+
         String user_id = user.getUserId();
         flows.setUserId(user_id);
         boolean inserted = flowsService.insert(flows);
@@ -79,25 +117,46 @@
             return null;
         }
     }
-
+    /**
+     *
+     * @description:  鑾峰彇寰呭鎵瑰垪琛�
+     * @param  tableName 琛ㄥ悕
+     * @param  session 璇锋眰session
+     * @param  pageNo 椤垫暟
+     * @param  pageSize 姣忛〉鏉℃暟
+     * @return: result 寰呭鐞嗘祦绋媗ist
+     *
+     */
     @Override
     public Result todoTask(HttpSession session, String tableName, Integer pageNo, Integer pageSize) {
         taskService.setSession(session);
         List<String> todoTask = taskService.getTodoTask();
         if (todoTask.size() == 0) {
-            return Result.success(null);
+            return Result.success(CodeMsg.SUCCESS);
         }
 
-        Wrapper<Flows> flowsWrapper = new EntityWrapper<Flows>().in("workflow_id", todoTask).eq("business_type", ActivitiBusinessType.maintain);
+        Wrapper<Flows> flowsWrapper = new EntityWrapper<Flows>().in("workflow_id", todoTask).ne("business_type", ActivitiBusinessType.exists);
         flowsWrapper.orderBy("create_time desc");
         List<Flows> records = flowsService.selectList(flowsWrapper);
 
         List<Flows> result = new ArrayList<>();
 
         if (!StringUtils.isEmpty(tableName)) {
-            records = records.stream()
+
+            List<Flows> maintainList = records.stream()
+                    .filter(flows -> flows.getBusinessType().equals(ActivitiBusinessType.maintain))
+                    .filter(flows -> (!flows.getStatus().equals(ActivitiStatus.open) || !flows.getStatus().equals(ActivitiStatus.close)))
                     .filter(flows -> maintainService.selectById(flows.getBusinessId()) != null)
                     .filter(flows -> maintainService.selectById(flows.getBusinessId()).getTableName().equalsIgnoreCase(tableName)).collect(Collectors.toList());
+            List<Flows> collect = records.stream()
+                    .filter(flows -> flows.getBusinessType().equals(ActivitiBusinessType.field))
+                    .filter(flows -> (!flows.getStatus().equals(ActivitiStatus.open) || !flows.getStatus().equals(ActivitiStatus.close)))
+                    .filter(flows -> maintainFieldService.selectById(flows.getBusinessId()) != null)
+                    .filter(flows -> maintainFieldService.selectById(flows.getBusinessId()).getTableName().equalsIgnoreCase(tableName)).collect(Collectors.toList());
+            records = new ArrayList<>();
+
+            records.addAll(maintainList);
+            records.addAll(collect);
         }
         Page page = new Page(records.size());
         page.setPageNo(pageNo);
@@ -108,7 +167,7 @@
 
         for (Flows flow : records) {
             String userId = flow.getUserId();
-            TUser user = userService.selectOne(new EntityWrapper<TUser>().eq("user_id", userId));
+            TUser user = DbUtils.getUserById(userId);
             if (user == null) {
                 continue;
             }
@@ -137,4 +196,32 @@
         flowPages.setTotal(page.getRecordCount());
         return Result.success(flowPages);
     }
+
+    /**
+     *
+     * @description:  淇濆瓨鐢ㄦ埛淇℃伅鍒版祦绋嬫湇鍔¢噷
+     * @param  user 鐢ㄦ埛淇℃伅
+     * @return: void
+     *
+     */
+
+    @Override
+    public void setUser(TUser user) {
+        this.user = user;
+        identityService.setUser(user);
+        taskService.setUser(user);
+        historyService.setUser(user);
+        runtimeService.setUser(user);
+        repositoryService.setUser(user);
+    }
+    /**
+     *
+     * @description:  鑾峰彇鐢ㄦ埛淇℃伅鍒版祦绋嬫湇鍔¢噷
+     * @return: void
+     *
+     */
+    @Override
+    public TUser getUser() {
+        return this.user;
+    }
 }

--
Gitblit v1.8.0