From 57c62dd3e7d398e253c2db549b819d020040b1a5 Mon Sep 17 00:00:00 2001
From: kimi42345 <kimi42345@outlook.com>
Date: 星期日, 29 三月 2020 20:49:17 +0800
Subject: [PATCH] no message

---
 src/main/java/com/highdatas/mdm/controller/MasterDataController.java       |   23 +
 src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java    |  183 +++++++++++--------
 src/main/java/com/highdatas/mdm/entity/MasterAuthor.java                   |   12 +
 src/main/java/com/highdatas/mdm/service/IMaintainService.java              |    7 
 src/main/java/com/highdatas/mdm/service/IMaintainFieldService.java         |    1 
 src/main/java/com/highdatas/mdm/service/impl/MasterAuthorServiceImpl.java  |   99 ++++++++--
 src/main/java/com/highdatas/mdm/controller/MaintainController.java         |   15 +
 src/main/java/com/highdatas/mdm/service/MasterDataService.java             |   49 ++--
 src/main/java/com/highdatas/mdm/util/DbUtils.java                          |    7 
 src/main/java/com/highdatas/mdm/service/IMasterAuthorService.java          |    4 
 src/main/java/com/highdatas/mdm/service/impl/MenuMappingServiceImpl.java   |   14 +
 src/main/java/com/highdatas/mdm/service/impl/SysFieldServiceImpl.java      |   16 +
 src/main/java/com/highdatas/mdm/service/impl/TQualityRuleServiceImpl.java  |    2 
 src/main/java/com/highdatas/mdm/util/Constant.java                         |    1 
 src/main/java/com/highdatas/mdm/service/impl/MaintainServiceImpl.java      |   15 
 src/main/java/com/highdatas/mdm/controller/MaintainFieldController.java    |   11 
 src/main/resources/application.yml                                         |    2 
 src/main/java/com/highdatas/mdm/service/impl/MaintainFieldServiceImpl.java |   37 +++
 18 files changed, 332 insertions(+), 166 deletions(-)

diff --git a/src/main/java/com/highdatas/mdm/controller/MaintainController.java b/src/main/java/com/highdatas/mdm/controller/MaintainController.java
index 0c3ba44..662d38c 100644
--- a/src/main/java/com/highdatas/mdm/controller/MaintainController.java
+++ b/src/main/java/com/highdatas/mdm/controller/MaintainController.java
@@ -15,6 +15,7 @@
 import com.highdatas.mdm.pojo.Result;
 import com.highdatas.mdm.service.*;
 import com.highdatas.mdm.util.Constant;
+import com.highdatas.mdm.util.DbUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -63,19 +64,20 @@
     public Result unSubmit(@PathVariable String tableName, @PathVariable Integer pageNo, HttpServletRequest request) throws UnsupportedEncodingException {
         String pageSize = request.getParameter("pageSize");
         String whereSegment = request.getParameter("whereSegment");
-
+        TUser user = DbUtils.getUser(request);
         if (StringUtils.isEmpty(whereSegment)) {
             whereSegment = Constant.WHERE_DEFAULT;
         }else  {
             whereSegment = URLDecoder.decode(whereSegment, "UTF-8");
         }
-        return maintainService.getUnSubmitData(tableName, pageNo, pageSize, whereSegment);
+        return maintainService.getUnSubmitData(user, tableName, pageNo, pageSize, whereSegment);
     }
 
     @RequestMapping(value = "{tableName}/unflow/{pageNo}", method = RequestMethod.GET)
     public Result unflow(@PathVariable String tableName, @PathVariable Integer pageNo, HttpServletRequest request) throws UnsupportedEncodingException {
         String pageSize = request.getParameter("pageSize");
         String whereSegment = request.getParameter("whereSegment");
+        TUser user = DbUtils.getUser(request);
 
         if (StringUtils.isEmpty(whereSegment)) {
             whereSegment = Constant.WHERE_DEFAULT;
@@ -83,9 +85,9 @@
             whereSegment = URLDecoder.decode(whereSegment, "UTF-8");
         }
         if (StringUtils.isEmpty(pageSize)) {
-            return maintainService.getInvalidVerionData(tableName, whereSegment, pageNo, null);
+            return maintainService.getInvalidVerionData(user, tableName, whereSegment, pageNo, null);
         } else {
-            return maintainService.getInvalidVerionData(tableName, whereSegment, pageNo, Integer.valueOf(pageSize));
+            return maintainService.getInvalidVerionData(user, tableName, whereSegment, pageNo, Integer.valueOf(pageSize));
         }
     }
 
@@ -225,13 +227,14 @@
     public Result setFlowId(@RequestParam String flowId,@PathVariable Integer pageNo, HttpServletRequest request) {
         String whereSegment = request.getParameter("whereSegment");
         String pageSize = request.getParameter("pageSize");
+        TUser user = DbUtils.getUser(request);
         if (StringUtils.isEmpty(whereSegment)) {
             whereSegment = Constant.WHERE_DEFAULT;
         }
         if (StringUtils.isEmpty(pageSize)) {
-            return maintainService.tempDataByVersionByFlow(flowId, whereSegment, pageNo, null);
+            return maintainService.tempDataByVersionByFlow(user, flowId, whereSegment, pageNo, null);
         }
-        return maintainService.tempDataByVersionByFlow(flowId, whereSegment, pageNo, Integer.valueOf(pageSize));
+        return maintainService.tempDataByVersionByFlow(user, flowId, whereSegment, pageNo, Integer.valueOf(pageSize));
     }
 
 
diff --git a/src/main/java/com/highdatas/mdm/controller/MaintainFieldController.java b/src/main/java/com/highdatas/mdm/controller/MaintainFieldController.java
index ba1ee82..f2c023b 100644
--- a/src/main/java/com/highdatas/mdm/controller/MaintainFieldController.java
+++ b/src/main/java/com/highdatas/mdm/controller/MaintainFieldController.java
@@ -17,10 +17,7 @@
 import com.highdatas.mdm.util.Constant;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.text.MessageFormat;
 import java.util.Comparator;
@@ -62,6 +59,12 @@
         return Result.success(array);
     }
 
+    @RequestMapping(value = "/getMaintainListByMaintainField/{id}", method = RequestMethod.GET)
+    public Result getMaintainListByMaintainField(@PathVariable String id, @RequestParam String tableName)  {
+        List<Maintain> maintainList = maintainFieldService.getMaintainListByMaintainField(id, tableName);
+        return Result.success(maintainList);
+    }
+
     @RequestMapping(value = "/getMaintainListByTable/{tableName}", method = RequestMethod.GET)
     public Result deleteModel(@PathVariable String tableName)  {
         List<MaintainField> maintainFieldList = maintainFieldService.selectList(new EntityWrapper<MaintainField>().eq("table_name", tableName).orderBy("order_no"));
diff --git a/src/main/java/com/highdatas/mdm/controller/MasterDataController.java b/src/main/java/com/highdatas/mdm/controller/MasterDataController.java
index 6f1c5f7..95491fb 100644
--- a/src/main/java/com/highdatas/mdm/controller/MasterDataController.java
+++ b/src/main/java/com/highdatas/mdm/controller/MasterDataController.java
@@ -78,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);
@@ -107,33 +108,41 @@
             }
             version = String.valueOf(maxVersion.getVersion());
         }
-        masterAuthorService.getFilter()
+        Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version);
+        if (maintainFromVersion == null) {
+            return null;
+        }
+        //ADD Filter
+        String filter = masterAuthorService.getFilter(user.getUserId(), maintainFromVersion.getId());
+        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,Constant.WHERE_DEFAULT, version);
+            return masterDataService.selectList(user, tableName,Constant.WHERE_DEFAULT, version);
         }
-        return masterDataService.selectList(tableName,whereSegment, version);
+        return masterDataService.selectList(user, tableName,whereSegment, version);
     }
 
     @RequestMapping(value = "{maintainId}/modify/{operateStr}", method = RequestMethod.POST)
diff --git a/src/main/java/com/highdatas/mdm/entity/MasterAuthor.java b/src/main/java/com/highdatas/mdm/entity/MasterAuthor.java
index c393790..10a62a3 100644
--- a/src/main/java/com/highdatas/mdm/entity/MasterAuthor.java
+++ b/src/main/java/com/highdatas/mdm/entity/MasterAuthor.java
@@ -33,6 +33,9 @@
     @TableField("field_auto")
     private Boolean fieldAuto;
 
+    @TableField("maintain_auto")
+    private Boolean maintainAuto;
+
     @TableField("character_id")
     private String characterId;
 
@@ -53,6 +56,15 @@
 
     private transient List<MasterAuthorDetail> fields;
 
+    public Boolean getMaintainAuto() {
+        return maintainAuto;
+    }
+
+    public MasterAuthor setMaintainAuto(Boolean maintainAuto) {
+        this.maintainAuto = maintainAuto;
+        return this;
+    }
+
     public String getMenuId() {
         return menuId;
     }
diff --git a/src/main/java/com/highdatas/mdm/service/IMaintainFieldService.java b/src/main/java/com/highdatas/mdm/service/IMaintainFieldService.java
index 936265e..7c88960 100644
--- a/src/main/java/com/highdatas/mdm/service/IMaintainFieldService.java
+++ b/src/main/java/com/highdatas/mdm/service/IMaintainFieldService.java
@@ -41,4 +41,5 @@
 
     JSONArray getMaintainListByTable(String tableName);
 
+    List<Maintain> getMaintainListByMaintainField(String id,String tableName);
 }
diff --git a/src/main/java/com/highdatas/mdm/service/IMaintainService.java b/src/main/java/com/highdatas/mdm/service/IMaintainService.java
index fa2ab27..ac31b22 100644
--- a/src/main/java/com/highdatas/mdm/service/IMaintainService.java
+++ b/src/main/java/com/highdatas/mdm/service/IMaintainService.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.service.IService;
 import com.highdatas.mdm.entity.Maintain;
+import com.highdatas.mdm.entity.TUser;
 import com.highdatas.mdm.pojo.ActivitiStatus;
 import com.highdatas.mdm.pojo.Operate;
 import com.highdatas.mdm.pojo.Result;
@@ -32,7 +33,7 @@
 
     Maintain getInvalidMaxVersion(String tableName);
 
-    Result getInvalidVerionData(String tableName, String where, Integer pageNo, Integer pageSize);
+    Result getInvalidVerionData(TUser user, String tableName, String where, Integer pageNo, Integer pageSize);
 
     Maintain getNowVersion(String tableName);
 
@@ -67,12 +68,12 @@
 
     List<String> getCompareVersionMaintains(Maintain unFlowMaxVersion, Maintain maintainFromVersion);
 
-    Result tempDataByVersionByFlow(String flowId, String whereSegment, Integer pageNo, Integer pageSize);
+    Result tempDataByVersionByFlow(TUser user, String flowId, String whereSegment, Integer pageNo, Integer pageSize);
 
     boolean checkNowVersion(String id);
     boolean checkFirstVersion(String id);
 
-    Result getUnSubmitData(String tableName, Integer pageNo, String pageSize, String whereSegment);
+    Result getUnSubmitData(TUser user, String tableName, Integer pageNo, String pageSize, String whereSegment);
 
     Maintain getNextMaintain(String tableName, String userId);
 }
diff --git a/src/main/java/com/highdatas/mdm/service/IMasterAuthorService.java b/src/main/java/com/highdatas/mdm/service/IMasterAuthorService.java
index 3d6d112..379de49 100644
--- a/src/main/java/com/highdatas/mdm/service/IMasterAuthorService.java
+++ b/src/main/java/com/highdatas/mdm/service/IMasterAuthorService.java
@@ -1,6 +1,7 @@
 package com.highdatas.mdm.service;
 
 import com.baomidou.mybatisplus.service.IService;
+import com.highdatas.mdm.entity.Maintain;
 import com.highdatas.mdm.entity.MasterAuthor;
 import com.highdatas.mdm.entity.SysField;
 import com.highdatas.mdm.entity.SysMenu;
@@ -23,10 +24,11 @@
     List<SysMenu> getMenu(String userId);
 
 
-    List<SysField> getField(String userId, String maintainFieldId, String maintainId);
+    List<SysField> getField(String userId, String maintainId);
 
     boolean checkMaintainAuthor(String userId, String maintainId);
 
     String getFilter(String userId, String maintainId);
 
+    Maintain getMaxVersionMaintain(String userId, String tableName);
 }
diff --git a/src/main/java/com/highdatas/mdm/service/MasterDataService.java b/src/main/java/com/highdatas/mdm/service/MasterDataService.java
index 501c2eb..f1bb697 100644
--- a/src/main/java/com/highdatas/mdm/service/MasterDataService.java
+++ b/src/main/java/com/highdatas/mdm/service/MasterDataService.java
@@ -1,6 +1,7 @@
 package com.highdatas.mdm.service;
 
 import com.highdatas.mdm.entity.Maintain;
+import com.highdatas.mdm.entity.TUser;
 import com.highdatas.mdm.pojo.Result;
 import com.highdatas.mdm.pojo.SysAssembleUpdateType;
 
@@ -19,45 +20,45 @@
 
     Result selectById(String tableName, String id);
 
-    Result selectList(String tableName);
+    Result selectList(TUser user, String tableName);
 
-    Result selectList(String tableName, String whereSegment);
-    Result selectList(String tableName, String whereSegment, String version);
+    Result selectList(TUser user, String tableName, String whereSegment);
+    Result selectList(TUser user, String tableName, String whereSegment, String version);
 
-    Result selectList(String tableName, List<String> fieldList, String whereSegment);
-    Result selectList(String tableName, List<String> fieldList, String whereSegment,String version);
+    Result selectList(TUser user, String tableName, List<String> fieldList, String whereSegment);
+    Result selectList(TUser user, String tableName, List<String> fieldList, String whereSegment,String version);
 
-    Result selectList(String tableName, List<String> fields);
+    Result selectList(TUser user, String tableName, List<String> fields);
 
-    Long getCountByVersion(String maintainId, String tableName, String tableTempName, Integer fromOrderNo, Integer toOrderNo, String whereSegment);
+    Long getCountByVersion(TUser user, String maintainId, String tableName, String tableTempName, Integer fromOrderNo, Integer toOrderNo, String whereSegment);
 
     String getFields(String tableName);
-    String getFields(String tableName, Maintain maintain);
+    String getFields(TUser user, String tableName, Maintain maintain);
 
     String getFields(String tableName, String alias);
-    String getFields(String tableName, String alias, Maintain maintain);
+    String getFields(TUser user, String tableName, String alias, Maintain maintain);
 
-    String getTempFields(String tableName, Maintain maintain);
-    String getTempFields(String tableName);
+    String getTempFields(TUser user, String tableName, Maintain maintain);
+    String getTempFields(TUser user, String tableName);
 
-    String getTempFields(String tableName, String alias);
-    String getTempFields(String tableName, String alias,  Maintain maintain);
+    String getTempFields(TUser user, String tableName, String alias);
+    String getTempFields(TUser user, String tableName, String alias,  Maintain maintain);
 
-    Result selectListByPageByVersion(String tableName, Integer pageNo, Integer pageSize, boolean findMax);
+    Result selectListByPageByVersion(TUser user, String tableName, Integer pageNo, Integer pageSize, boolean findMax);
 
-    Result selectListByPageByVersion(String tableName, String whereSegment, Integer pageNo, boolean findMax);
+    Result selectListByPageByVersion(TUser user, String tableName, String whereSegment, Integer pageNo, boolean findMax);
 
-    Result selectListByPageByVersion(String tableName, Integer pageNo, String version, boolean findMax);
+    Result selectListByPageByVersion(TUser user, String tableName, Integer pageNo, String version, boolean findMax);
 
-    Result selectListByPageByVersion(String tableName, Integer pageNo, boolean findMax);
+    Result selectListByPageByVersion(TUser user, String tableName, Integer pageNo, boolean findMax);
 
-    Result selectListByPageByVersion(String tableName, String whereSegment, Integer pageno, Integer pageSize, boolean findMax);
+    Result selectListByPageByVersion(TUser user, String tableName, String whereSegment, Integer pageno, Integer pageSize, boolean findMax);
 
-    Result selectListByPageByVersion(String tableName, List<String> fieldList, String whereSegment, Integer pageNo, boolean findMax);
+    Result selectListByPageByVersion(TUser user, String tableName, List<String> fieldList, String whereSegment, Integer pageNo, boolean findMax);
 
-    Result selectListByPageByVersion(String tableName, List<String> fieldList, Integer pageNo, boolean findMax);
+    Result selectListByPageByVersion(TUser user, String tableName, List<String> fieldList, Integer pageNo, boolean findMax);
 
-    Result selectListByPageByVersion(String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, boolean findMax);
+    Result selectListByPageByVersion(TUser user, String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, boolean findMax);
 
     Result insert(String tableName, String fields, String jsonValues);
     Result insert(String tableName, String json);
@@ -83,11 +84,11 @@
 
     Result delete(String tableName, String whereSegment);
 
-    Result selectListByPageByVersion(String tableName, String whereSegment, Integer pageNo, String version, boolean findMax);
+    Result selectListByPageByVersion(TUser user, String tableName, String whereSegment, Integer pageNo, String version, boolean findMax);
 
-    List<Map<String, Object>> selectListByVersion(String tableName, List<String> fieldList, String whereSegment, String version, boolean findMax);
+    List<Map<String, Object>> selectListByVersion(TUser user, String tableName, List<String> fieldList, String whereSegment, String version, boolean findMax);
 
-    Result selectListByPageByVersion(String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version, boolean findMax);
+    Result selectListByPageByVersion(TUser user, String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version, boolean findMax);
 
     Maintain uploadedData(String tableName, SysAssembleUpdateType uploadType, String userId);
 
diff --git a/src/main/java/com/highdatas/mdm/service/impl/MaintainFieldServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/MaintainFieldServiceImpl.java
index a7758db..4c33f78 100644
--- a/src/main/java/com/highdatas/mdm/service/impl/MaintainFieldServiceImpl.java
+++ b/src/main/java/com/highdatas/mdm/service/impl/MaintainFieldServiceImpl.java
@@ -258,8 +258,25 @@
         HashMap<String, List<Maintain>> resultMap = getMaintainFieldMapByTable(tableName);
 
         Set<String> keySet = resultMap.keySet();
+        ArrayList<String> keys = new ArrayList<>(keySet);
+        Collections.sort(keys, new Comparator<String>() {
+            @Override
+            public int compare(String maintianFieldId1, String maintianFieldId2) {
+                MaintainField maintainField1 = selectById(maintianFieldId1);
+                MaintainField maintainField2 = selectById(maintianFieldId2);
+                if (maintainField1 == null) {
+                    return 1;
+                }
+                if (maintainField2 == null){
+                    return -1;
+                }
+
+                return maintainField1.getOrderNo().compareTo(maintainField2.getOrderNo());
+            }
+        });
+
         JSONArray array = new JSONArray();
-        for (String s : keySet) {
+        for (String s : keys) {
             List<Maintain> list = resultMap.get(s);
             Maintain max = list.stream().max(new Comparator<Maintain>() {
                 @Override
@@ -276,14 +293,30 @@
             JSONObject object = new JSONObject();
             object.fluentPut("maintainFieldId", s);
             object.fluentPut("version", MessageFormat.format(Constant.extent, min.getVersion(), max.getVersion()));
+            object.fluentPut("list", list);
 
             array.add(object);
         }
         return array;
     }
 
+    @Override
+    public List<Maintain> getMaintainListByMaintainField(String id, String tableName) {
+        MaintainField maintainField = selectById(id);
+        if (maintainField == null) {
+            if (!id.equalsIgnoreCase(Constant.Default)){
+                return null;
+            }else {
+                maintainField = new MaintainField().setId(Constant.Default).setTableName(tableName);
+            }
+
+        }
+
+        return  getMaintainByMaintainField(maintainField.getId(), maintainField.getTableName());
+    }
+
     private HashMap<String, List<Maintain>> getMaintainFieldMapByTable(String tableName) {
-        List<Maintain> maintainList = maintainService.selectList(new EntityWrapper<Maintain>().eq("table_name", tableName).isNotNull("flow_id").orderBy("order_no"));
+        List<Maintain> maintainList = maintainService.selectList(new EntityWrapper<Maintain>().eq("table_name", tableName).isNotNull("flow_id").orderBy("order_no desc"));
         HashMap<String, List<Maintain>> resultMap = new HashMap<>();
         for (Maintain maintain : maintainList) {
             ActivitiStatus status = flowsService.getStatusByBusinessId(maintain.getId());
diff --git a/src/main/java/com/highdatas/mdm/service/impl/MaintainServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/MaintainServiceImpl.java
index a1e8f76..63e27ea 100644
--- a/src/main/java/com/highdatas/mdm/service/impl/MaintainServiceImpl.java
+++ b/src/main/java/com/highdatas/mdm/service/impl/MaintainServiceImpl.java
@@ -9,6 +9,7 @@
 import com.highdatas.mdm.entity.Flows;
 import com.highdatas.mdm.entity.Maintain;
 import com.highdatas.mdm.entity.MaintainDetail;
+import com.highdatas.mdm.entity.TUser;
 import com.highdatas.mdm.mapper.MaintainMapper;
 import com.highdatas.mdm.mapper.TableInfoMapper;
 import com.highdatas.mdm.pojo.*;
@@ -107,7 +108,7 @@
             maintain.deleteById();
             return;
         }
-        String fields  = masterDataService.getTempFields(tableName);
+        String fields  = masterDataService.getTempFields(null, tableName);
         String tempFields = masterDataService.getFields(tableName + Constant.RECORD);
 
         String tableTempName = tableName + Constant.RECORD;
@@ -172,7 +173,7 @@
     }
 
     @Override
-    public Result getUnSubmitData(String tableName, Integer pageNo, String pageSize, String whereSegment) {
+    public Result getUnSubmitData(TUser user, String tableName, Integer pageNo, String pageSize, String whereSegment) {
         Wrapper<Maintain> versionWrapper = new EntityWrapper<Maintain>().eq("table_name", tableName).isNull("flow_id").orderBy("order_no desc");
         Maintain maintain = selectOne(versionWrapper);
         if (maintain == null) {
@@ -186,7 +187,7 @@
         if (!StringUtils.isEmpty(pageSize)) {
             page.setPageSize(Integer.valueOf(pageSize));
         }
-        String tempFields = masterDataService.getTempFields(tableName);
+        String tempFields = masterDataService.getTempFields(user, tableName);
         List<Map<String, Object>> maps = maintainMapper.selectUnSubmitData(tempName, tempFields, whereSegment, DbUtils.quotedStr(maintainId), page.getLimitSQL());
         JSONObject object = new JSONObject();
         object.fluentPut("records", maps);
@@ -295,13 +296,13 @@
     }
 
     @Override
-    public Result getInvalidVerionData(String tableName, String where, Integer pageNo, Integer pageSize) {
+    public Result getInvalidVerionData(TUser user, String tableName, String where, Integer pageNo, Integer pageSize) {
         Maintain invalidVersion = getInvalidMaxVersion(tableName);
         if (invalidVersion == null) {
             return Result.success(null);
         }
         String tableTempName = tableName + Constant.RECORD;
-        String tempFields = masterDataService.getTempFields(tableName);
+        String tempFields = masterDataService.getTempFields(user, tableName);
         Long count = maintainMapper.countInvalidVersionData(tableTempName, where, invalidVersion.getOrderNo());
         Page page = new Page(count);
         page.setPageNo(pageNo);
@@ -448,7 +449,7 @@
     }
 
     @Override
-    public Result tempDataByVersionByFlow(String flowId, String whereSegment, Integer pageNo, Integer pageSize) {
+    public Result tempDataByVersionByFlow(TUser user, String flowId, String whereSegment, Integer pageNo, Integer pageSize) {
         Flows flows = flowsService.selectById(flowId);
         if (flows == null) {
             return Result.error(CodeMsg.SELECT_ERROR_NOTFOUND);
@@ -458,7 +459,7 @@
         if (maintain == null) {
             return Result.error(CodeMsg.SELECT_ERROR_NOTFOUND);
         }
-        String fields  = masterDataService.getTempFields(maintain.getTableName());
+        String fields  = masterDataService.getTempFields(user, maintain.getTableName());
         String tableTempName = maintain.getTableName() + Constant.RECORD;
         long total = maintainMapper.countTempDataByVersionByFlow(tableTempName, flowId, whereSegment);
 
diff --git a/src/main/java/com/highdatas/mdm/service/impl/MasterAuthorServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/MasterAuthorServiceImpl.java
index d0c18b9..0ec4859 100644
--- a/src/main/java/com/highdatas/mdm/service/impl/MasterAuthorServiceImpl.java
+++ b/src/main/java/com/highdatas/mdm/service/impl/MasterAuthorServiceImpl.java
@@ -1,11 +1,14 @@
 package com.highdatas.mdm.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.highdatas.mdm.controller.MasterAuthorController;
 import com.highdatas.mdm.entity.*;
 import com.highdatas.mdm.mapper.MasterAuthorMapper;
+import com.highdatas.mdm.pojo.ActivitiStatus;
 import com.highdatas.mdm.pojo.MasterAuthorType;
 import com.highdatas.mdm.service.*;
 import com.highdatas.mdm.util.Constant;
@@ -15,6 +18,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.security.CodeSigner;
 import java.text.MessageFormat;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -42,6 +46,8 @@
     IMaintainFieldService maintainFieldService;
     @Autowired
     IMaintainService maintainService;
+    @Autowired
+    IFlowsService flowsService;
 
     @Override
     public HashMap<String, MasterAuthor> merageRoleAuthor(List<String> roleIds) {
@@ -82,17 +88,29 @@
     }
 
     @Override
-    public List<SysField> getField(String userId, String maintainFieldId, String maintainId) {
-        if (maintainFieldId.equalsIgnoreCase(Constant.All)) {
+    public List<SysField> getField(String userId, String maintainId) {
+        Maintain maintain = maintainService.selectById(maintainId);
+        if (maintain == null){
+            return new ArrayList<>();
+        }
+        boolean isAll = checkUnFilterAuthor(userId, maintain.getTableName());
+        if (isAll) {
             List<SysField> total = fieldService.getFieldByMaintain(maintainId);
             return total;
         }
-        List<MasterAuthor> masterAuthors = selectList(new EntityWrapper<MasterAuthor>().eq(Constant.TYPE, MasterAuthorType.user).eq(this.characterId, userId).eq("maintain_field_id", maintainFieldId));
+
+        MaintainField maintainField = fieldService.getMaintainFieldByMaintain(maintainId);
+        if (maintainField == null){
+            return new ArrayList<>();
+        }
+        String maintainFieldId = maintainField.getId();
+
+        List<MasterAuthor> masterAuthors = selectList(new EntityWrapper<MasterAuthor>().eq(Constant.TYPE, MasterAuthorType.user).eq(MasterAuthorController.character_id, userId).eq("maintain_field_id", maintainFieldId));
         if (masterAuthors.size() == 0) {
             //user 鑾峰彇role
             List<TUserRole> roles = userRoleService.selectList(new EntityWrapper<TUserRole>().eq("user_id", userId));
             List<String> roleIds = roles.stream().map(tUserRole -> tUserRole.getRoleId()).collect(Collectors.toList());
-            masterAuthors = selectList(new EntityWrapper<MasterAuthor>().eq(Constant.TYPE, MasterAuthorType.role).in(this.characterId, roleIds).eq("maintain_field_id", maintainFieldId));
+            masterAuthors = selectList(new EntityWrapper<MasterAuthor>().eq(Constant.TYPE, MasterAuthorType.role).in(MasterAuthorController.character_id, roleIds).eq("maintain_field_id", maintainFieldId));
         }
         if (masterAuthors.isEmpty()) {
             return null;
@@ -103,9 +121,9 @@
         if (codes.isEmpty()) {
             return null;
         }
-        Wrapper<SysField> wrapper = new EntityWrapper<SysField>().in(Constant.FIELD, codes);
+        Wrapper<SysField> wrapper = new EntityWrapper<SysField>().in(Constant.FIELD, codes).eq("table_name", maintain.getTableName());
 
-        if (maintainFieldId.equalsIgnoreCase(Constant.Default)) {
+        if (!maintainFieldId.equalsIgnoreCase(Constant.Default)) {
             wrapper.eq("maintain_field_id", maintainFieldId);
         }else {
             wrapper.isNull("maintain_field_id");
@@ -117,19 +135,35 @@
         return fieldList;
     }
 
+    private boolean checkUnFilterAuthor(String userId, String tableName) {
+        List<MasterAuthor> masterAuthors = selectList(new EntityWrapper<MasterAuthor>().eq(Constant.TYPE, MasterAuthorType.user).eq(MasterAuthorController.character_id, userId).eq("table_name", tableName));
+        long isAll = masterAuthors.stream().filter(masterAuthor -> masterAuthor.getMaintainFieldId().equalsIgnoreCase(Constant.All)).count();
+        if (isAll > 0) {
+            return true;
+        }
+        if (!masterAuthors.isEmpty()) {
+            return false;
+        }
+        Set<String> roleByUser = DbUtils.getRoleByUser(userId);
+        isAll = selectCount(new EntityWrapper<MasterAuthor>().eq(Constant.TYPE, MasterAuthorType.role).in(MasterAuthorController.character_id, roleByUser).eq("table_name", tableName).eq("maintain_field_id", Constant.All_UPCASE));
+        if (isAll > 0) {
+            return true;
+        }
+
+        return false;
+    }
+
     @Override
     public boolean checkMaintainAuthor(String userId, String maintainId) {
         Maintain maintain = maintainService.selectById(maintainId);
         if (maintain == null) {
             return false;
         }
-        int checked = selectCount(new EntityWrapper<MasterAuthor>()
-                .eq(Constant.TYPE, MasterAuthorType.user)
-                .eq(MasterAuthorController.character_id, userId)
-                .eq("table_name", maintain.getTableName())
-                .eq("maintain_field_id", Constant.All));
-        if(checked > 0) {
+        int checked = 0;
+        boolean isAll = checkUnFilterAuthor(userId, maintain.getTableName());
+        if (isAll){
             return true;
+
         }
         MaintainField maintainField = fieldService.getMaintainFieldByMaintain(maintainId);
         if (maintainField == null) {
@@ -159,17 +193,23 @@
 
     @Override
     public String getFilter(String userId, String maintainId) {
-        MaintainField maintainField = fieldService.getMaintainFieldByMaintain(maintainId);
-        if (maintainField)
-        if (maintainFieldId.equalsIgnoreCase(Constant.All)) {
+        Maintain maintain = maintainService.selectById(maintainId);
+        if (maintain == null){
+            return Constant.WHERE_DEFAULTUN;
+        }
+        boolean isAll = checkUnFilterAuthor(userId, maintain.getTableName());
+        if (isAll) {
             return Constant.WHERE_DEFAULT;
         }
-        List<MasterAuthor> masterAuthors = selectList(new EntityWrapper<MasterAuthor>().eq(Constant.TYPE, MasterAuthorType.user).eq(this.characterId, userId).eq("maintain_field_id", maintainFieldId));
+        MaintainField maintainField = fieldService.getMaintainFieldByMaintain(maintainId);
+        String maintainFieldId = maintainField.getId();
+
+        List<MasterAuthor> masterAuthors = selectList(new EntityWrapper<MasterAuthor>().eq(Constant.TYPE, MasterAuthorType.user).eq(MasterAuthorController.character_id, userId).eq("maintain_field_id", maintainFieldId));
         if (masterAuthors.size() == 0) {
             //user 鑾峰彇role
             List<TUserRole> roles = userRoleService.selectList(new EntityWrapper<TUserRole>().eq("user_id", userId));
             List<String> roleIds = roles.stream().map(tUserRole -> tUserRole.getRoleId()).collect(Collectors.toList());
-            masterAuthors = selectList(new EntityWrapper<MasterAuthor>().eq(Constant.TYPE, MasterAuthorType.role).in(this.characterId, roleIds).eq("maintain_field_id", maintainFieldId));
+            masterAuthors = selectList(new EntityWrapper<MasterAuthor>().eq(Constant.TYPE, MasterAuthorType.role).in(MasterAuthorController.character_id, roleIds).eq("maintain_field_id", maintainFieldId));
         }
         if (masterAuthors.isEmpty()){
             return Constant.WHERE_DEFAULTUN;
@@ -190,8 +230,11 @@
             }
 
             Boolean preAll = segmentAllMap.get(field);
-            if (preAll && segmentMap.containsKey(field)) {
-                segmentMap.remove(field);
+            if (preAll) {
+                if (segmentMap.containsKey(field)) {
+                    segmentMap.remove(field);
+                }
+                continue;
             }
 
             String val = detail.getVal();
@@ -205,13 +248,29 @@
             String val = vals.stream()
                     .filter(s -> !StringUtils.isEmpty(s))
                     .map(s -> DbUtils.quotedStr(s)).collect(Collectors.joining(Constant.COMMA));
-            String format = MessageFormat.format(Constant.MYSQL_UUID, code, val);
+            String format = MessageFormat.format(Constant.InSql, code, val);
             builder.append(format);
         }
         String filter = builder.toString();
         return filter;
     }
 
+    @Override
+    public Maintain getMaxVersionMaintain(String userId, String tableName) {
+        List<Maintain> maintainList = maintainService.selectList(new EntityWrapper<Maintain>().eq("table_name", tableName).orderBy("order_no desc"));
+        for (Maintain maintain : maintainList) {
+            ActivitiStatus status = flowsService.getStatusByBusinessId(maintain.getId());
+            if (!status.equals(ActivitiStatus.open)) {
+                continue;
+            }
+            boolean b = checkMaintainAuthor(userId, maintain.getId());
+            if (b) {
+                return maintain;
+            }
+        }
+        return null;
+    }
+
     private MasterAuthor merage(MasterAuthor preMerageMasterAuthor, MasterAuthor masterAuthor) {
         // table name  masterField 涓�鏍� 鍙湁瀛楁涓嶅悓浜�
         List<MasterAuthorDetail> preFields = preMerageMasterAuthor.getFields();
diff --git a/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java
index 9759a82..1b2cf0c 100644
--- a/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java
+++ b/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java
@@ -47,6 +47,9 @@
     RedisClient redisClient;
     @Autowired
     IMaintainFieldService maintainFieldService;
+    @Autowired
+    IMasterAuthorService masterAuthorService;
+
     @Resource
     protected DataSource dataSource;
 
@@ -75,41 +78,40 @@
     }
 
     @Override
-    public Result selectList(String tableName) {
-        return selectList(tableName, null,null, (maintainService.getNowVersion(tableName).getVersion()));
+    public Result selectList(TUser user, String tableName) {
+        return selectList(user, tableName, null,null, (maintainService.getNowVersion(tableName).getVersion()));
     }
 
 
     @Override
-    public Result selectList(String tableName, String whereSegment) {
-        return selectList(tableName, whereSegment, (maintainService.getNowVersion(tableName).getVersion()));
+    public Result selectList(TUser user, String tableName, String whereSegment) {
+        return selectList(user,tableName, whereSegment, (maintainService.getNowVersion(tableName).getVersion()));
     }
 
     @Override
-    public Result selectList(String tableName, String whereSegment, String version) {
-        return selectList(tableName, null, whereSegment, version);
+    public Result selectList(TUser user,String tableName, String whereSegment, String version) {
+        return selectList(user, tableName, null, whereSegment, version);
     }
 
     @Override
-    public Result selectList(String tableName, List<String> fieldList, String whereSegment) {
-        return selectList(tableName, fieldList, whereSegment, maintainService.getNowVersion(tableName).getVersion());
+    public Result selectList(TUser user, String tableName, List<String> fieldList, String whereSegment) {
+        return selectList(user, tableName, fieldList, whereSegment, maintainService.getNowVersion(tableName).getVersion());
     }
 
     @Override
-    public Result selectList(String tableName,List<String> fieldList, String whereSegment, String version) {
+    public Result selectList(TUser user, String tableName,List<String> fieldList, String whereSegment, String version) {
         try{
             JSONObject object = new JSONObject();
-
+            //TODO only add  version
+            Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version);
             String fields;
             if (fieldList == null || fieldList.size() == 0) {
-                fields = getFields(tableName);
+                fields = getFields(user, tableName, maintainFromVersion);
             } else {
                 fields = fieldList.stream().collect(Collectors.joining(Constant.COMMA));
             }
             //std
             List<Map<String, Object>> select = mapper.select(tableName, fields, whereSegment);
-            //TODO only add  version
-            Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version);
 
             List<Map<String, Object>> maps = maintainService.selectVersionOperatorByType(tableName, maintainFromVersion.getId(), Operate.create);
 
@@ -124,8 +126,8 @@
 
 
     @Override
-    public Result selectList(String tableName, List<String> fields) {
-        return selectList(tableName,fields,Constant.WHERE_DEFAULT,(maintainService.getNowVersion(tableName).getVersion()));
+    public Result selectList(TUser user, String tableName, List<String> fields) {
+        return selectList(user, tableName,fields,Constant.WHERE_DEFAULT,(maintainService.getNowVersion(tableName).getVersion()));
     }
 
     public Long getCount(String tableName, String whereSegment) {
@@ -143,20 +145,24 @@
     }
 
     @Override
-    public Long getCountByVersion (String maintainId, String tableName,String tableTempName,Integer fromOrderNo, Integer toOrderNo, String whereSegment) {
+    public Long getCountByVersion (TUser user, String maintainId, String tableName,String tableTempName,Integer fromOrderNo, Integer toOrderNo, String whereSegment) {
         try{
             Maintain maintain = maintainService.selectById(maintainId);
 
-            String fields = getFields(tableName, maintain);
-            String Hfields = getFields(tableName, Constant.H, maintain);
-            String tempFields = getTempFields(tableName, maintain);
-            String A1fields = getFields(tableName, Constant.A1, maintain);
-            String A2fields = getFields(tableName, Constant.A2, maintain);
-            String tempHFields = getTempFields(tableName, Constant.H, maintain);
+            String fields = getFields(user,tableName, maintain);
+            String Hfields = getFields(user, tableName, Constant.H, maintain);
+            String tempFields = getTempFields(user, tableName, maintain);
+            String A1fields = getFields(user, tableName, Constant.A1, maintain);
+            String A2fields = getFields(user, tableName, Constant.A2, maintain);
+            String tempHFields = getTempFields(user, tableName, Constant.H, maintain);
             if (StringUtils.isEmpty(whereSegment)) {
                 whereSegment = Constant.WHERE_DEFAULT;
             }
-            Long count = mapper.getCountByVersion(tableName, tableTempName, fields, tempFields, Hfields, A1fields,A2fields,tempHFields, fromOrderNo, toOrderNo, DbUtils.quotedStr(maintainId), whereSegment);
+            Long count;
+            if (StringUtils.isEmpty(fields)) {
+                return 0L;
+            }
+            count = mapper.getCountByVersion(tableName, tableTempName, fields, tempFields, Hfields, A1fields,A2fields,tempHFields, fromOrderNo, toOrderNo, DbUtils.quotedStr(maintainId), whereSegment);
             return count;
         }
         catch (Exception e) {
@@ -165,16 +171,16 @@
         }
     }
 
-    public Long getCountByMaxVersion (String maintainId, String tableName,String tableTempName,Integer fromOrderNo, Integer toOrderNo, String whereSegment) {
+    public Long getCountByMaxVersion (TUser user, String maintainId, String tableName,String tableTempName,Integer fromOrderNo, Integer toOrderNo, String whereSegment) {
         try{
             Maintain maintain = maintainService.selectById(maintainId);
 
-            String fields = getFields(tableName, maintain);
-            String Hfields = getFields(tableName, Constant.H, maintain);
-            String tempFields = getTempFields(tableName, maintain);
-            String A1fields = getFields(tableName, Constant.A1, maintain);
-            String A2fields = getFields(tableName, Constant.A2, maintain);
-            String tempHFields = getTempFields(tableName, Constant.H, maintain);
+            String fields = getFields(user, tableName, maintain);
+            String Hfields = getFields(user, tableName, Constant.H, maintain);
+            String tempFields = getTempFields(user, tableName, maintain);
+            String A1fields = getFields(user, tableName, Constant.A1, maintain);
+            String A2fields = getFields(user, tableName, Constant.A2, maintain);
+            String tempHFields = getTempFields(user, tableName, Constant.H, maintain);
             if (StringUtils.isEmpty(whereSegment)) {
                 whereSegment = Constant.WHERE_DEFAULT;
             }
@@ -194,9 +200,9 @@
     }
 
     @Override
-    public String getFields(String tableName, Maintain maintain) {
+    public String getFields(TUser user, String tableName, Maintain maintain) {
 
-        return getFields(tableName, null, maintain);
+        return getFields(user, tableName, null, maintain);
     }
 
     private String getCaseWhenFields(String tableName) {
@@ -233,9 +239,17 @@
     }
 
     @Override
-    public String getFields(String tableName, String alias, Maintain maintain) {
-        List<SysField> fields = fieldService.getFieldByMaintain(maintain.getId());
+    public String getFields(TUser user, String tableName, String alias, Maintain maintain) {
+        List<SysField> fields;
+        if (user == null) {
+            fields = fieldService.getFieldByMaintain(maintain.getId());
+        }else {
+            fields = masterAuthorService.getField(user.getUserId(), maintain.getId());
+        }
         ContentBuilder contentBuilder = new ContentBuilder(Constant.COMMA);
+        if (fields == null) {
+            return Constant.EMPTY_Str;
+        }
         if (!fields.contains(Constant.ID)) {
             fields.add(new SysField().setField(Constant.ID));
         }
@@ -258,17 +272,18 @@
     }
 
     @Override
-    public String getTempFields(String tableName, Maintain maintain) {
-        return getTempFields(tableName, null, maintain);
+    public String getTempFields(TUser user, String tableName, Maintain maintain) {
+        return getTempFields(user, tableName, null, maintain);
     }
 
     @Override
-    public String getTempFields(String tableName) {
-        return getTempFields(tableName, Constant.EMPTY_Str);
+    public String getTempFields(TUser user, String tableName) {
+        return getTempFields(user, tableName, Constant.EMPTY_Str);
     }
     @Override
-    public String getTempFields(String tableName, String alias) {
+    public String getTempFields(TUser user, String tableName, String alias) {
         List<TableSchemaResult> tableField = mapper.getTableField(tableName);
+
         ContentBuilder contentBuilder = new ContentBuilder(Constant.COMMA);
         for (TableSchemaResult tableSchemaResult : tableField) {
             String fieldName = tableSchemaResult.getFieldName();
@@ -290,8 +305,16 @@
     }
 
     @Override
-    public String getTempFields(String tableName, String alias, Maintain maintain) {
-        List<SysField> fields = fieldService.getFieldByMaintain(maintain.getId());
+    public String getTempFields(TUser user, String tableName, String alias, Maintain maintain) {
+        List<SysField> fields;
+        if (user == null) {
+            fields = fieldService.getFieldByMaintain(maintain.getId());
+        }else {
+            fields = masterAuthorService.getField(user.getUserId(), maintain.getId());
+        }
+        if (fields == null) {
+            return Constant.EMPTY_Str;
+        }
         ContentBuilder contentBuilder = new ContentBuilder(Constant.COMMA);
         if (!fields.contains(Constant.ID)) {
             fields.add(new SysField().setField(Constant.ID));
@@ -317,45 +340,45 @@
     }
 
     @Override
-    public Result selectListByPageByVersion(String tableName, Integer pageNo, Integer pageSize, boolean findMax) {
-        return selectListByPageByVersion(tableName,Constant.WHERE_DEFAULT,pageNo,pageSize, findMax);
+    public Result selectListByPageByVersion(TUser user, String tableName, Integer pageNo, Integer pageSize, boolean findMax) {
+        return selectListByPageByVersion(user, tableName,Constant.WHERE_DEFAULT,pageNo,pageSize, findMax);
     }
 
     @Override
-    public Result selectListByPageByVersion(String tableName, String whereSegment, Integer pageNo, boolean findMax) {
-        return selectListByPageByVersion(tableName,null, whereSegment,pageNo, null, String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax);
+    public Result selectListByPageByVersion(TUser user, String tableName, String whereSegment, Integer pageNo, boolean findMax) {
+        return selectListByPageByVersion(user, tableName,null, whereSegment,pageNo, null, String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax);
     }
 
     @Override
-    public Result selectListByPageByVersion(String tableName, Integer pageNo, String version, boolean findMax) {
-        return selectListByPageByVersion(tableName,null,Constant.WHERE_DEFAULT,pageNo, null, version, findMax);
+    public Result selectListByPageByVersion(TUser user, String tableName, Integer pageNo, String version, boolean findMax) {
+        return selectListByPageByVersion(user, tableName,null,Constant.WHERE_DEFAULT,pageNo, null, version, findMax);
     }
     @Override
-    public Result selectListByPageByVersion(String tableName, Integer pageNo, boolean findMax) {
-        return selectListByPageByVersion(tableName,null,Constant.WHERE_DEFAULT,pageNo, null, String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax);
+    public Result selectListByPageByVersion(TUser user, String tableName, Integer pageNo, boolean findMax) {
+        return selectListByPageByVersion(user, tableName,null,Constant.WHERE_DEFAULT,pageNo, null, String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax);
     }
 
     @Override
-    public Result selectListByPageByVersion(String tableName, String whereSegment, Integer pageNo, Integer pageSize, boolean findMax) {
-        return selectListByPageByVersion(tableName,null,whereSegment,pageNo,pageSize, findMax);
+    public Result selectListByPageByVersion(TUser user, String tableName, String whereSegment, Integer pageNo, Integer pageSize, boolean findMax) {
+        return selectListByPageByVersion(user, tableName,null,whereSegment,pageNo,pageSize, findMax);
     }
 
     @Override
-    public Result selectListByPageByVersion(String tableName, List<String> fieldList, String whereSegment, Integer pageNo, boolean findMax) {
-        return selectListByPageByVersion(tableName,null,whereSegment,pageNo, null, findMax);
+    public Result selectListByPageByVersion(TUser user, String tableName, List<String> fieldList, String whereSegment, Integer pageNo, boolean findMax) {
+        return selectListByPageByVersion(user, tableName,null,whereSegment,pageNo, null, findMax);
     }
 
     @Override
-    public Result selectListByPageByVersion(String tableName, List<String> fieldList, Integer pageNo, boolean findMax) {
-        return selectListByPageByVersion(tableName,null,Constant.WHERE_DEFAULT,pageNo, findMax);
+    public Result selectListByPageByVersion(TUser user, String tableName, List<String> fieldList, Integer pageNo, boolean findMax) {
+        return selectListByPageByVersion(user, tableName,null,Constant.WHERE_DEFAULT,pageNo, findMax);
     }
     @Override
-    public Result selectListByPageByVersion(String tableName, String whereSegment, Integer pageNo, String version, boolean findMax) {
-        return selectListByPageByVersion(tableName, null,whereSegment, pageNo, null,version, findMax);
+    public Result selectListByPageByVersion(TUser user, String tableName, String whereSegment, Integer pageNo, String version, boolean findMax) {
+        return selectListByPageByVersion(user, tableName, null,whereSegment, pageNo, null,version, findMax);
     }
 
     @Override
-    public List<Map<String, Object>> selectListByVersion(String tableName, List<String> fieldList, String whereSegment, String version, boolean findMax) {
+    public List<Map<String, Object>> selectListByVersion(TUser user, String tableName, List<String> fieldList, String whereSegment, String version, boolean findMax) {
         Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version);
         Maintain nowVersionMaintain = maintainService.getNowVersion(tableName);
         boolean isMax = maintainService.checkdMaxVersion(maintainFromVersion.getId());
@@ -379,12 +402,12 @@
 
         String tempHfields;
         if (fieldList == null || fieldList.size() == 0) {
-            fields = getFields(tableName, maintainFromVersion);
-            Hfields = getFields(tableName,Constant.H, maintainFromVersion);
-            A1fields = getFields(tableName,Constant.A1, maintainFromVersion);
-            A2fields = getFields(tableName,Constant.A2, maintainFromVersion);
-            tempFields = getTempFields(tableName, maintainFromVersion);
-            tempHfields = getTempFields(tableName, Constant.H, maintainFromVersion);
+            fields = getFields(user, tableName, maintainFromVersion);
+            Hfields = getFields(user, tableName,Constant.H, maintainFromVersion);
+            A1fields = getFields(user, tableName,Constant.A1, maintainFromVersion);
+            A2fields = getFields(user, tableName,Constant.A2, maintainFromVersion);
+            tempFields = getTempFields(user, tableName, maintainFromVersion);
+            tempHfields = getTempFields(user, tableName, Constant.H, maintainFromVersion);
         } else {
             fields = fieldList.stream().collect(Collectors.joining(Constant.COMMA));
             Hfields = fieldList.stream().map(s -> MessageFormat.format(Constant.Alias,Constant.H, s)).collect(Collectors.joining(Constant.COMMA));
@@ -423,8 +446,7 @@
         return result;
     }
     @Override
-    public Result selectListByPageByVersion(String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version, boolean findMax) {
-
+    public Result selectListByPageByVersion(TUser user, String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version, boolean findMax) {
         Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version);
         Maintain nowVersionMaintain = maintainService.getNowVersion(tableName);
         boolean isMax = maintainService.checkdMaxVersion(maintainFromVersion.getId());
@@ -448,11 +470,13 @@
            if (isFirst && nowVersionMaintain == null) {
                nowVersionOrderNo = nowVersionOrderNo - 1;
            }
-            count = getCountByMaxVersion(maintainFromVersion.getId(), tableName, tableTempName, fromVersionOrderNo, nowVersionOrderNo,  whereSegment);
+            count = getCountByMaxVersion(user, maintainFromVersion.getId(), tableName, tableTempName, fromVersionOrderNo, nowVersionOrderNo,  whereSegment);
         }else {
-            count = getCountByVersion(maintainFromVersion.getId(), tableName, tableTempName, nowVersionOrderNo, fromVersionOrderNo, whereSegment);
+            count = getCountByVersion(user, maintainFromVersion.getId(), tableName, tableTempName, nowVersionOrderNo, fromVersionOrderNo, whereSegment);
         }
-
+        if (count == 0) {
+            return Result.success(null);
+        }
         //mapper.selectByPageByVersion(tableName, tableTempName, fieldList, whereSegment,);
         Page page = new Page(count);
         if (pageSize != null && pageSize.compareTo(1) != -1) {
@@ -473,12 +497,12 @@
 
         String tempHfields;
         if (fieldList == null || fieldList.size() == 0) {
-            fields = getFields(tableName, maintainFromVersion);
-            Hfields = getFields(tableName,Constant.H, maintainFromVersion);
-            A1fields = getFields(tableName,Constant.A1, maintainFromVersion);
-            A2fields = getFields(tableName,Constant.A2, maintainFromVersion);
-            tempFields = getTempFields(tableName, maintainFromVersion);
-            tempHfields = getTempFields(tableName, Constant.H, maintainFromVersion);
+            fields = getFields(user, tableName, maintainFromVersion);
+            Hfields = getFields(user, tableName,Constant.H, maintainFromVersion);
+            A1fields = getFields(user, tableName,Constant.A1, maintainFromVersion);
+            A2fields = getFields(user, tableName,Constant.A2, maintainFromVersion);
+            tempFields = getTempFields(user, tableName, maintainFromVersion);
+            tempHfields = getTempFields(user, tableName, Constant.H, maintainFromVersion);
         } else {
             fields = fieldList.stream().collect(Collectors.joining(Constant.COMMA));
             Hfields = fieldList.stream().map(s -> MessageFormat.format(Constant.Alias,Constant.H, s)).collect(Collectors.joining(Constant.COMMA));
@@ -539,7 +563,6 @@
 
     @Override
     public Maintain uploadedData(String tableName, SysAssembleUpdateType uploadType, String userId) {
-
         MenuMapping menuMapping = menuMappingService.selectOne(new EntityWrapper<MenuMapping>().eq("table_name",tableName));
         SysOperateLog operateLog = new SysOperateLog();
 
@@ -701,8 +724,8 @@
     }
 
     @Override
-    public Result selectListByPageByVersion(String tableName,List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, boolean findMax) {
-       return  selectListByPageByVersion(tableName, fieldList, whereSegment,pageNo,pageSize,String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax);
+    public Result selectListByPageByVersion(TUser user, String tableName,List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, boolean findMax) {
+       return  selectListByPageByVersion(user, tableName, fieldList, whereSegment,pageNo,pageSize,String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax);
     }
 
     @Override
@@ -1038,7 +1061,9 @@
         ArrayList<String> fieldList = new ArrayList<>();
         fieldList.add(field);
         fieldList.add(Constant.ID);
-        List<Map<String, Object>> maps = selectListByVersion(tableName, fieldList, Constant.WHERE_DEFAULT, max.getVersion(), false);
+        // where
+
+        List<Map<String, Object>> maps = selectListByVersion(null, tableName, fieldList, Constant.WHERE_DEFAULT, max.getVersion(), false);
         String tempTableName = tableName + Constant.RECORD;
         List<Map<String, Object>> tempVals = mapper.getOneTempFieldDataByMaintainExtent(DbUtils.quotedStr(tableName), tempTableName, field, min.getOrderNo(), max.getOrderNo());
         maps.addAll(tempVals);
diff --git a/src/main/java/com/highdatas/mdm/service/impl/MenuMappingServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/MenuMappingServiceImpl.java
index d5cc383..f5da1cd 100644
--- a/src/main/java/com/highdatas/mdm/service/impl/MenuMappingServiceImpl.java
+++ b/src/main/java/com/highdatas/mdm/service/impl/MenuMappingServiceImpl.java
@@ -1,5 +1,6 @@
 package com.highdatas.mdm.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
@@ -15,10 +16,7 @@
 import com.highdatas.mdm.mapper.TableInfoMapper;
 import com.highdatas.mdm.pojo.CodeMsg;
 import com.highdatas.mdm.pojo.Result;
-import com.highdatas.mdm.service.ActivitiService;
-import com.highdatas.mdm.service.IMaintainService;
-import com.highdatas.mdm.service.IMenuMappingService;
-import com.highdatas.mdm.service.ISysMenuService;
+import com.highdatas.mdm.service.*;
 import com.highdatas.mdm.util.Constant;
 import com.highdatas.mdm.util.DbUtils;
 import com.highdatas.mdm.util.WorkflowUtils;
@@ -54,6 +52,10 @@
 
     @Autowired
     ISysMenuService menuService;
+    @Autowired
+    IMaintainFieldService maintainFieldService;
+    @Autowired
+    IMasterAuthorService masterAuthorService;
 
     public static final String key = "process";
 
@@ -185,7 +187,9 @@
         }
 
         String tableName = menuMapping.getTableName();
-        Maintain resultMaintain = maintainService.getNowVersion(tableName);
+        TUser user = (TUser) session.getAttribute(Constant.USER);
+
+        Maintain resultMaintain = masterAuthorService.getMaxVersionMaintain(user.getUserId(), tableName);
 
         if (resultMaintain != null) {
             mapping.put("version", resultMaintain.getVersion());
diff --git a/src/main/java/com/highdatas/mdm/service/impl/SysFieldServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/SysFieldServiceImpl.java
index c6ddc54..a96f8a8 100644
--- a/src/main/java/com/highdatas/mdm/service/impl/SysFieldServiceImpl.java
+++ b/src/main/java/com/highdatas/mdm/service/impl/SysFieldServiceImpl.java
@@ -83,7 +83,7 @@
         }
 
         MaintainField maintainField = getMaintainFieldByMaintain(maintainId);
-        if (maintainField == null && Constant.Default.equalsIgnoreCase(maintainField.getId())) {
+        if (maintainField == null || Constant.Default.equalsIgnoreCase(maintainField.getId())) {
 
             fieldList = this.selectList(new EntityWrapper<SysField>().eq("table_name", maintain.getTableName()).isNull("maintain_field_id").orderBy("order_no"));
             return fieldList;
@@ -116,7 +116,7 @@
 
     @Override
     public MaintainField getMaintainFieldByMaintain(String maintainId) {
-        MaintainField maintainField;
+        MaintainField maintainField = null;
         List<SysField> fieldList = null;
 
         if (StringUtils.isEmpty(maintainId)) {
@@ -126,8 +126,18 @@
         if (maintain == null) {
             return null;
         }
+        List<MaintainField> subList = maintainFieldService.selectList(new EntityWrapper<MaintainField>().eq("maintain_id", maintainId).orderBy("order_no desc, create_time desc"));
+        subList.sort(new Comparator<MaintainField>() {
+            @Override
+            public int compare(MaintainField o1, MaintainField o2) {
 
-        maintainField = maintainFieldService.selectOne(new EntityWrapper<MaintainField>().eq("maintain_id", maintainId).orderBy("order_no desc, create_time desc"));
+                return o2.getOrderNo().compareTo(o1.getOrderNo());
+            }
+        });
+        if (!subList.isEmpty()) {
+            maintainField = subList.get(0);
+        }
+
         if (maintainField == null) {
             //瀵瑰簲鐗堟湰鎵句笉鍒� 寰�鍓嶆壘
             String maintainFieldId = maintainFieldMapper.getMappedMatintainId(DbUtils.quotedStr(maintain.getTableName()), maintain.getOrderNo());
diff --git a/src/main/java/com/highdatas/mdm/service/impl/TQualityRuleServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/TQualityRuleServiceImpl.java
index f425c2f..9bd7e3c 100644
--- a/src/main/java/com/highdatas/mdm/service/impl/TQualityRuleServiceImpl.java
+++ b/src/main/java/com/highdatas/mdm/service/impl/TQualityRuleServiceImpl.java
@@ -47,7 +47,7 @@
 
         String[] split = field.split(Constant.COMMA_TRIM);
         List<String> collect = Arrays.stream(split).collect(Collectors.toList());
-        Result result = masterDataService.selectList(tableName, collect);
+        Result result = masterDataService.selectList(null, tableName, collect);
         JSONObject object = (JSONObject)result.getData();
         List<Map<String, Object>> datas = (List<Map<String, Object>>) object.get("grid");
         String codeContent = tQualityRule.getCodeContent();
diff --git a/src/main/java/com/highdatas/mdm/util/Constant.java b/src/main/java/com/highdatas/mdm/util/Constant.java
index 20136ae..2132e06 100644
--- a/src/main/java/com/highdatas/mdm/util/Constant.java
+++ b/src/main/java/com/highdatas/mdm/util/Constant.java
@@ -53,6 +53,7 @@
     String A1 = "a1";
     String A2 = "a2";
     String All = "all";
+    String All_UPCASE = "All";
     String DataMenu = "DataMenu";
     String AND = " and ";
     String MD = "md_";
diff --git a/src/main/java/com/highdatas/mdm/util/DbUtils.java b/src/main/java/com/highdatas/mdm/util/DbUtils.java
index 2ea8a2f..573e654 100644
--- a/src/main/java/com/highdatas/mdm/util/DbUtils.java
+++ b/src/main/java/com/highdatas/mdm/util/DbUtils.java
@@ -343,9 +343,10 @@
         return (TUser) request.getSession().getAttribute(Constant.USER);
     }
 
-    public static ArrayList<String> getRoleByUser(String userId) {
-        ArrayList<String> roleIds = new ArrayList<>();
-        roleIds.add("ROO1");
+    public static Set<String> getRoleByUser(String userId) {
+        Set<String> roleIds = new HashSet<>();
+        roleIds.add("R001");
+        roleIds.add("R002");
         return roleIds;
     }
 }
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 7a1458c..824d19f 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,7 +1,7 @@
 spring:
   profiles:
     active:
-      prod
+      dev
 
   main:
     allow-bean-definition-overriding: true
\ No newline at end of file

--
Gitblit v1.8.0