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/SysFieldController.java |  149 ++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 139 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/highdatas/mdm/controller/SysFieldController.java b/src/main/java/com/highdatas/mdm/controller/SysFieldController.java
index cecb399..b89ebd3 100644
--- a/src/main/java/com/highdatas/mdm/controller/SysFieldController.java
+++ b/src/main/java/com/highdatas/mdm/controller/SysFieldController.java
@@ -15,6 +15,7 @@
 import com.highdatas.mdm.util.Constant;
 import com.highdatas.mdm.util.DbUtils;
 import com.highdatas.mdm.util.WorkflowUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -32,6 +33,7 @@
  * @author kimi
  * @since 2019-12-16
  */
+@Slf4j
 @RestController
 @RequestMapping("/field")
 public class SysFieldController {
@@ -49,24 +51,55 @@
     SysFieldMapper fieldMapper;
     @Autowired
     IFlowsService flowsService;
+    @Autowired
+    IMasterAuthorService masterAuthorService;
 
     @RequestMapping(value = "/{tableName}", method = RequestMethod.GET)
     public Result getFields(@PathVariable String tableName, HttpServletRequest request){
+        TUser user = DbUtils.getUser(request);
         String maintainId = request.getParameter("maintainId");
         if (StringUtils.isEmpty(maintainId)) {
             List<SysField> fieldList = fieldService.getFieldByTable(tableName);
             return Result.success(fieldList);
         }else {
+            List<SysField> field = masterAuthorService.getField(user.getUserId(), maintainId);
+            //List<SysField> fieldList = fieldService.getFieldByMaintain(maintainId);
 
-            List<SysField> fieldList = fieldService.getFieldByMaintain(maintainId);
-            return Result.success(fieldList);
+            return Result.success(field);
         }
 
     }
 
-    @RequestMapping(value = "total/{tableName}", method = RequestMethod.GET)
-    public Result getTotalFields(@PathVariable String tableName, HttpServletRequest request){
-        return fieldService.getTotalFields(tableName);
+    @RequestMapping(value = "total/{tableName}/{pageNo}", method = RequestMethod.GET)
+    public Result getTotalFields(@PathVariable String tableName,@PathVariable Integer pageNo, HttpServletRequest request){
+        String totalStr = request.getParameter("isTotal");
+        String pageSize = request.getParameter("pageSize");
+
+        if (StringUtils.isEmpty(totalStr) || !Boolean.valueOf(totalStr)) {
+            // 璧版潈闄�
+            String maintainId = request.getParameter("maintainId");
+            if (StringUtils.isEmpty(maintainId)){
+                return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED);
+            }
+            TUser user = DbUtils.getUser(request);
+            List<SysField> field = masterAuthorService.getField(user.getUserId(), maintainId);
+            Integer size;
+            if(StringUtils.isEmpty(pageSize)){
+                size = 15;
+            }else  {
+                size = Integer.valueOf(pageSize);
+            }
+
+            return fieldService.getPagedDataByList(field, pageNo, size);
+
+        }
+
+        if(StringUtils.isEmpty(pageSize)){
+            return fieldService.getTotalFields(tableName, pageNo, 15);
+        }else  {
+            return fieldService.getTotalFields(tableName, pageNo, Integer.valueOf(pageSize));
+        }
+
     }
 
     @RequestMapping(value = "fix/{tableName}", method = RequestMethod.GET)
@@ -76,6 +109,7 @@
         data.fluentPut("aduit", true);
         return totalFields;
     }
+
 
     @RequestMapping(value = "/menu/{id}", method = RequestMethod.GET)
     public Result getFieldByMenu(@PathVariable String id){
@@ -161,6 +195,7 @@
 
     @RequestMapping(value = "/loadFields", method = RequestMethod.POST)
     public Result loadFields(@RequestBody String fieldListStr, HttpServletRequest request)  {
+        log.info(fieldListStr);
         List<SysField> fieldList = JSONObject.parseArray(fieldListStr,SysField.class);
         if (fieldList.size() == 0) {
             return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED);
@@ -179,11 +214,13 @@
         HttpSession session = request.getSession();
         TUser user = (TUser) session.getAttribute("user");
         String userId = user.getUserId();
+        Maintain dataMaintainMax = maintainService.getMaxVersion(tableName);
 
         if (StringUtils.isEmpty(maintainId)) {
             //鍒涘缓鏂扮増鏈殑瀛楁
             nowMaintain = flowsService.createNowVerion(tableName, maintainId, userId);
-            if (nowMaintain == null) {
+
+            if (nowMaintain == null && dataMaintainMax != null) {
                 return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED);
             }
 
@@ -204,17 +241,94 @@
                 nowMaintain = maintainFieldService.selectById(maintainId);
             }
         }
+        String nowMaintainId;
+        if (dataMaintainMax == null) {
+            nowMaintainId = null;
+        }else {
+            nowMaintainId = nowMaintain.getId();
+        }
+
+
+        if (StringUtils.isEmpty(nowMaintainId)) {
+            //绗竴娆¢粯璁ら兘娓呯┖
+            fieldService.delete(new EntityWrapper<SysField>().isNull("maintain_field_id").eq("table_name", tableName));
+        }
+
         for (int i = 0; i < fieldList.size(); i++) {
             SysField sysField = fieldList.get(i);
-            sysField.setCreateTime(new Date()).setId(DbUtils.getUUID()).setOperate(Operate.create).setMaintainFieldId(nowMaintain.getId()).setOrderNo(i).insert();
+            sysField.setCreateTime(new Date()).setId(DbUtils.getUUID()).setMaintainFieldId(nowMaintainId).setOrderNo(i).insert();
         }
-        nowMaintain.insertOrUpdate();
+
+        if (nowMaintain != null) {
+            nowMaintain.insertOrUpdate();
+        }
+
         return Result.success(null);
     }
 
     @RequestMapping(value = "/change", method = RequestMethod.POST)
     public Result addOrUpdate(@RequestBody SysField sysField, HttpServletRequest request)  {
+
+        String tableName = sysField.getTableName();
+
+        Maintain dataMaxVersion = maintainService.getMaxVersion(tableName);
+        boolean isInit = false;
+        if (dataMaxVersion == null) {
+            isInit = true;
+        }
+        if (!StringUtils.isEmpty(sysField.getId())) {
+            String id = sysField.getId();
+            SysField field = fieldService.selectById(id);
+            if (field != null){
+                Operate operate = field.getOperate();
+                if (operate != null) {
+                    isInit = true;
+                }
+            }
+        }
+
         Operate operate = sysField.getOperate();
+
+        if (isInit && (operate.equals(Operate.update) || operate.equals(Operate.create))) {
+            if (isInit) {
+                if (StringUtils.isEmpty(sysField.getId())) {
+                    sysField.setId(DbUtils.getUUID());
+                }
+                sysField.setOperate(null);
+                boolean update = sysField.insertOrUpdate();
+                if (update) {
+                    return Result.success(CodeMsg.SUCCESS);
+                }else {
+                    return Result.error(CodeMsg.INSERT_ERROR);
+                }
+
+            }
+        }
+        if (isInit && operate.equals(Operate.delete)) {
+            String maintainFieldId = sysField.getMaintainFieldId();
+            boolean delete = sysField.deleteById();
+            if (delete) {
+                //鍒犻櫎鍚� 鍒ゆ柇鏄惁鏈夋湭鎻愪氦鐨勪簡
+                if (StringUtils.isEmpty(maintainFieldId)) {
+                    return Result.success(CodeMsg.SUCCESS);
+                }
+                List<SysField> fieldList = fieldService.selectList(new EntityWrapper<SysField>().eq("maintain_field_id", maintainFieldId));
+                long count = fieldList.stream().filter(field -> field.getOperate() != null).count();
+                if (count == 0) {
+                    //璇存槑 褰撳墠鐗堟湰娌℃湁淇敼鐨勫瓧娈典簡
+                    delete = fieldService.delete(new EntityWrapper<SysField>().eq("maintain_field_id", maintainFieldId));
+                    delete = maintainFieldService.deleteById(maintainFieldId);
+                    if (delete) {
+                        return Result.success(CodeMsg.SUCCESS);
+                    }
+                }
+                return Result.success(CodeMsg.SUCCESS);
+
+            }else {
+                return Result.error(CodeMsg.DELETE_ERROR);
+            }
+        }
+
         if (operate.equals(Operate.update)) {
             String id = sysField.getId();
             SysField field = fieldService.selectById(id);
@@ -223,7 +337,16 @@
             }
             boolean visiableEqual = field.getVisible().equals(sysField.getVisible());
             boolean aliasEqual = field.getAlias().equals(sysField.getAlias());
-            boolean codeEqual = field.getCode().equals(sysField.getCode());
+            String updateCode = field.getCode();
+            String preCode = sysField.getCode();
+            boolean codeEqual;
+            if (StringUtils.isEmpty(updateCode) && StringUtils.isEmpty(preCode)) {
+                codeEqual = true;
+            }else if(!StringUtils.isEmpty(updateCode) && !StringUtils.isEmpty(preCode) && updateCode.equalsIgnoreCase(preCode)){
+                codeEqual = true;
+            }else {
+                codeEqual = false;
+            }
             String updateFormat = field.getFormat();
             String preFormat = sysField.getFormat();
             boolean formatterEqual;
@@ -246,13 +369,18 @@
             }
         }
         MaintainField maxVersion = maintainFieldService.getMaxVersion(sysField.getTableName());
-        String maintainId = maxVersion.getId();
+        String maintainId = null;
+        if(maxVersion != null) {
+            maintainId = maxVersion.getId();
+        }
+
         MaintainField nowMaintain = null;
         HttpSession session = request.getSession();
         TUser user = (TUser) session.getAttribute("user");
         String userId = user.getUserId();
 
         if (operate.equals(Operate.create) || operate.equals(Operate.update)) {
+
             String alias = sysField.getAlias();
             List<SysField> fieldByMaintainField;
             if (nowMaintain == null) {
@@ -341,6 +469,7 @@
             sysField.updateById();
         }
         else if(operate.equals(Operate.delete)) {
+
             SysField relatedField = fieldService.getOneFieldByMaintainField(nowMaintain.getId(), sysField.getField());
             if (relatedField == null) {
                 return Result.error(CodeMsg.OPERATR_ERROR);

--
Gitblit v1.8.0