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/controller/MasterDataController.java |   54 +++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 45 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/highdatas/mdm/controller/MasterDataController.java b/src/main/java/com/highdatas/mdm/controller/MasterDataController.java
index 2f2186b..a0e09ad 100644
--- a/src/main/java/com/highdatas/mdm/controller/MasterDataController.java
+++ b/src/main/java/com/highdatas/mdm/controller/MasterDataController.java
@@ -13,7 +13,6 @@
 import com.highdatas.mdm.util.Constant;
 import com.highdatas.mdm.util.DbUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.pentaho.reporting.libraries.formula.function.text.StringCountFunction;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -40,7 +39,8 @@
     IMaintainService maintainService;
     @Autowired
     IMaintainDetailService maintainDetailService;
-
+    @Autowired
+    IMaintainFieldService maintainFieldService;
     @Autowired
     IMenuMappingService menuMappingService;
 
@@ -49,6 +49,8 @@
 
     @Autowired
     IMasterModifiedService masterModifiedService;
+    @Autowired
+    IMasterAuthorService masterAuthorService;
 
     @RequestMapping(value = "{tableName}/uploaded",  method = RequestMethod.GET)
     public Result get(@PathVariable String tableName, HttpServletRequest request) {
@@ -76,6 +78,7 @@
 
     @RequestMapping(value = "{tableName}/all/{pageNo}",  method = RequestMethod.GET)
     public Result getByPage(@PathVariable String tableName, @PathVariable Integer pageNo, HttpServletRequest request) throws UnsupportedEncodingException {
+        TUser user = DbUtils.getUser(request);
         String pageSizeStr = request.getParameter("pageSize");
         String whereSegment = request.getParameter(Constant.WHERE_SEGMENT);
         String fields = request.getParameter(Constant.FIELDS);
@@ -99,35 +102,50 @@
             version = String.valueOf(nowVersion.getVersion());
         }else if(version.equalsIgnoreCase(Constant.MAX)){
             findMax = true;
-            version = String.valueOf(maintainService.getMaxVersion(tableName).getVersion());
+            Maintain maxVersion = maintainService.getMaxVersion(tableName);
+            if (maxVersion == null)  {
+                return Result.success(null);
+            }
+            version = String.valueOf(maxVersion.getVersion());
         }
+        Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version);
+        if (maintainFromVersion == null) {
+            return null;
+        }
+        //ADD Filter
+        String filter = masterAuthorService.getFilter(user.getUserId(), maintainFromVersion.getId());
+        if (!StringUtils.isEmpty(filter)) {
+            whereSegment = DbUtils.StrJoin(whereSegment, Constant.AND, filter);
+        }
+
 
         if (StringUtils.isEmpty(fields)) {
             if (StringUtils.isEmpty(pageSizeStr)) {
-                return masterDataService.selectListByPageByVersion(tableName, whereSegment,pageNo,version, findMax);
+                return masterDataService.selectListByPageByVersion(user, tableName, whereSegment,pageNo,version, findMax);
             }
-            return masterDataService.selectListByPageByVersion(tableName, null, whereSegment,pageNo, Integer.valueOf(pageSizeStr),version,findMax);
+            return masterDataService.selectListByPageByVersion(user, tableName, null, whereSegment,pageNo, Integer.valueOf(pageSizeStr),version,findMax);
         }else {
             String[] split = fields.split(Constant.COMMA_TRIM);
             List<String> fieldList = Arrays.stream(split).collect(Collectors.toList());
             if (StringUtils.isEmpty(pageSizeStr)) {
-                return masterDataService.selectListByPageByVersion(tableName, fieldList, whereSegment,pageNo, null,version, findMax);
+                return masterDataService.selectListByPageByVersion(user, tableName, fieldList, whereSegment,pageNo, null,version, findMax);
             }
-            return masterDataService.selectListByPageByVersion(tableName, fieldList, whereSegment,pageNo, Integer.valueOf(pageSizeStr), findMax);
+            return masterDataService.selectListByPageByVersion(user, tableName, fieldList, whereSegment,pageNo, Integer.valueOf(pageSizeStr), findMax);
 
         }
     }
     @RequestMapping(value = "{tableName}/all",  method = RequestMethod.GET)
     public Result<MenuMapping> getAll(@PathVariable String tableName,HttpServletRequest request) {
+        TUser user = DbUtils.getUser(request);
         String whereSegment = request.getParameter(Constant.WHERE_SEGMENT);
         String version = request.getParameter(Constant.VERSION);
         if (StringUtils.isEmpty(version)) {
             version = String.valueOf(maintainService.getNowVersion(tableName).getVersion());
         }
         if (StringUtils.isEmpty(whereSegment)) {
-            return masterDataService.selectList(tableName);
+            return masterDataService.selectList(user, tableName,Constant.WHERE_DEFAULT, version);
         }
-        return masterDataService.selectList(tableName,whereSegment);
+        return masterDataService.selectList(user, tableName,whereSegment, version);
     }
 
     @RequestMapping(value = "{maintainId}/modify/{operateStr}", method = RequestMethod.POST)
@@ -328,4 +346,22 @@
             return masterDataService.delete(tableName, whereSegment);
         }
     }
+
+    @RequestMapping(value = "/getValByMaintainFieldId/{maintainFieldId}", method = RequestMethod.GET)
+    public Result getValByMaintainFieldId(@PathVariable String maintainFieldId,@RequestParam String menuId, @RequestParam String field, HttpServletRequest request) {
+        String tableName = menuMappingService.getTableNameByMenu(menuId);
+        if (StringUtils.isEmpty(tableName)) {
+            return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED);
+        }
+        if (maintainFieldId.equalsIgnoreCase(Constant.All)) {
+            Set<String> fieldValList =  masterDataService.getFieldValByTable(tableName, field);
+            return Result.success(fieldValList);
+        }
+
+        Set<String> fieldValByMaintainField = masterDataService.getFieldValByMaintainField(maintainFieldId, field, tableName);
+
+        return Result.success(fieldValByMaintainField);
+    }
+
+
 }

--
Gitblit v1.8.0