From 74472c9d22dddcb41383794caf0011043b20f817 Mon Sep 17 00:00:00 2001
From: kimi <kimi42345@gmail.com>
Date: 星期二, 31 三月 2020 13:25:47 +0800
Subject: [PATCH] fix  数据权限

---
 src/main/java/com/highdatas/mdm/service/impl/ActivitiServiceImpl.java |   47 ++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 44 insertions(+), 3 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..ffbb06f 100644
--- a/src/main/java/com/highdatas/mdm/service/impl/ActivitiServiceImpl.java
+++ b/src/main/java/com/highdatas/mdm/service/impl/ActivitiServiceImpl.java
@@ -53,10 +53,14 @@
 
     @Autowired
     RuntimeService runtimeService;
+    @Autowired
+    IMaintainFieldService maintainFieldService;
 
+    private TUser user;
 
     @Override
     public Flows start(String key, HttpSession session, String maintainId, ActivitiBusinessType type) {
+
         identityService.setSession( session);
         Flows flows = new Flows();
         String id = UUID.randomUUID().toString().replaceAll("-", "");
@@ -66,10 +70,20 @@
         flows.setStatus(ActivitiStatus.working);
         HashMap<String, Object> variableMap = new HashMap<>();
         variableMap.put("reasson", "鐢宠瀹℃壒");
+
         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);
@@ -88,16 +102,28 @@
             return Result.success(null);
         }
 
-        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);
@@ -137,4 +163,19 @@
         flowPages.setTotal(page.getRecordCount());
         return Result.success(flowPages);
     }
+
+    @Override
+    public void setUser(TUser user) {
+        this.user = user;
+        identityService.setUser(user);
+        taskService.setUser(user);
+        historyService.setUser(user);
+        runtimeService.setUser(user);
+        repositoryService.setUser(user);
+    }
+
+    @Override
+    public TUser getUser() {
+        return this.user;
+    }
 }

--
Gitblit v1.8.0