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/controller/SysMenuController.java |  274 ++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 234 insertions(+), 40 deletions(-)

diff --git a/src/main/java/com/highdatas/mdm/controller/SysMenuController.java b/src/main/java/com/highdatas/mdm/controller/SysMenuController.java
index 418336a..4ba1d38 100644
--- a/src/main/java/com/highdatas/mdm/controller/SysMenuController.java
+++ b/src/main/java/com/highdatas/mdm/controller/SysMenuController.java
@@ -3,25 +3,26 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.plugins.Page;
-import com.highdatas.mdm.entity.DeletedTableLog;
-import com.highdatas.mdm.entity.MenuMapping;
-import com.highdatas.mdm.entity.SysMenu;
+import com.highdatas.mdm.entity.*;
+import com.highdatas.mdm.pojo.ActivitiBusinessType;
+import com.highdatas.mdm.pojo.ActivitiStatus;
 import com.highdatas.mdm.pojo.CodeMsg;
-import com.highdatas.mdm.pojo.MaintainDataType;
 import com.highdatas.mdm.pojo.Result;
-import com.highdatas.mdm.service.IDeletedTableLogService;
-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.NoticeClient;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
 import java.util.Date;
 import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -39,50 +40,204 @@
 
     @Autowired
     IMenuMappingService menuMappingService;
-
     @Autowired
-    IDeletedTableLogService deletedTableLogService;
+    ISysFieldService fieldService;
+    @Autowired
+    IFlowsService flowsService;
+    @Autowired
+    IMaintainService maintainService;
+    @Autowired
+    IMaintainFieldService maintainFieldService;
+    @Autowired
+    IMasterAuthorService masterAuthorService;
+    @Autowired
+    NoticeClient noticeClient;
 
-
-    @RequestMapping(value = "/all", method = RequestMethod.GET)
+    /**
+     *
+     * @description:  鑾峰彇鎵�鏈変富棰樺垪琛�
+     * @return: 涓婚鏁版嵁
+     *
+     */
+    @RequestMapping(value = "/all")
     public Result<List<SysMenu>> getAll() {
         EntityWrapper<SysMenu> sysMenuEntityWrapper = new EntityWrapper<>();
-        sysMenuEntityWrapper.orderBy(" parent_id, order_no");
+        sysMenuEntityWrapper.orderBy("parent_id, order_no");
         return Result.success(menuService.selectList(sysMenuEntityWrapper)) ;
     }
 
+    /**
+     *
+     * @description:  鑾峰彇鏈夋潈闄愮殑鎵�鏈変富棰樺垪琛�
+     * @return: 涓婚鏁版嵁
+     *
+     */
+    @RequestMapping(value = "/author/all", method = RequestMethod.GET)
+    public Result<List<SysMenu>> getAllBak(HttpServletRequest request) {
+        //鑾峰彇鐢ㄦ埛淇℃伅
+        TUser user = DbUtils.getUser(request);
+        //鑾峰彇鏉冮檺涓嬬殑涓婚淇℃伅
+        List<SysMenu> menu = masterAuthorService.getMenu(user);
+        return Result.success(menu) ;
+    }
+
+    /**
+     *
+     * @description:  鑾峰彇寰呭鎵规墍鏈変富棰樺垪琛�
+     * @return: 涓婚鏁版嵁
+     *
+     */
+    @RequestMapping(value = "/audit", method = RequestMethod.GET)
+    public Result<List<SysMenu>> audit(HttpServletRequest request) {
+        //鑾峰彇鐢ㄦ埛淇℃伅
+        HttpSession session = request.getSession();
+        TUser user = (TUser) session.getAttribute("user");
+        String userId = user.getUserId();
+        //鑾峰彇姝e湪璺戠殑娴佺▼
+        List<Flows> flows = flowsService.selectList(new EntityWrapper<Flows>().ne("business_type", ActivitiBusinessType.exists).ne("status", ActivitiStatus.open).ne("status", ActivitiStatus.close));
+        //鑾峰彇鐢ㄦ埛鎷ユ湁鏉冮檺瀹℃壒鐨勬祦绋�
+        flows = flows.stream().filter(flow ->  flowsService.isNextAudit(flow, userId)).collect(Collectors.toList());
+
+        HashSet<String> tableNameSet = new HashSet<>();
+        List<String> maintainIds = flows.stream().filter(flow -> flow.getBusinessType().equals(ActivitiBusinessType.maintain)).map(Flows::getBusinessId).collect(Collectors.toList());
+        List<String> maintainFieldIds = flows.stream().filter(flow -> flow.getBusinessType().equals(ActivitiBusinessType.field)).map(Flows::getBusinessId).collect(Collectors.toList());
+//        BY  瀛楁鐗堟湰鍜屾暟鎹増鏈幏鍙栬〃鍚�
+        if (maintainIds.isEmpty() && maintainFieldIds.isEmpty()) {
+            return  Result.success(null);
+        }
+        for (String maintainFieldId : maintainFieldIds) {
+            MaintainField maintainField = maintainFieldService.selectById(maintainFieldId);
+            if (maintainField == null) {
+                continue;
+            }
+            String tableName = maintainField.getTableName();
+            if (StringUtils.isEmpty(tableName)) {
+                continue;
+            }
+            tableNameSet.add(tableName);
+        }
+        maintainIds = maintainIds.stream().filter(s -> masterAuthorService.checkMaintainAuthor(user,s)).collect(Collectors.toList());
+        if (!maintainIds.isEmpty()) {
+            List<Maintain> maintains = maintainService.selectBatchIds(maintainIds);
+
+            List<String> tableNameList = maintains.stream().map(Maintain::getTableName).collect(Collectors.toList());
+            tableNameSet.addAll(tableNameList);
+        }
+        if (tableNameSet.size() == 0) {
+            return Result.success(null);
+        }
+        //閫氳繃琛ㄥ悕鑾峰彇涓婚
+        List<MenuMapping> menuMappingList = menuMappingService.selectList(new EntityWrapper<MenuMapping>().in("table_name", tableNameSet));
+        List<String> menuIds = menuMappingList.stream().map(MenuMapping::getMenuId).collect(Collectors.toList());
+        if (menuIds.isEmpty()) {
+            return Result.success(null);
+        }
+        //閫氳繃涓婚鑾峰彇鐖剁骇涓婚閾�
+        LinkedHashSet<String> parentIdSet = new LinkedHashSet<>(menuIds);
+        List<SysMenu> parentList = menuService.getMenuByParentId(parentIdSet);
+        if (parentList == null) {
+            return Result.success(null);
+        }
+
+        return Result.success(parentList);
+    }
+
+    /**
+     *
+     * @description:  鑾峰彇鎵�鏈夌殑闈炵埗绾т富棰樺垪琛�
+     * @return: 闈炵埗绾т富棰樻暟鎹�
+     *
+     */
+    @RequestMapping(value = "/list", method = RequestMethod.GET)
+    public Result<List<SysMenu>> getMenuList() {
+        EntityWrapper<SysMenu> sysMenuEntityWrapper = new EntityWrapper<>();
+        //鑾峰彇闈炵埗绾т富棰�
+        sysMenuEntityWrapper.eq("menu_type", "DataMenu");
+        sysMenuEntityWrapper.orderBy("parent_id, order_no");
+        List<SysMenu> sysMenus = menuService.selectList(sysMenuEntityWrapper);
+        LinkedHashSet<String> parentIdSet = new LinkedHashSet<>();
+        for (SysMenu sysMenu : sysMenus) {
+            MenuMapping menuMapping = menuMappingService.selectOne(new EntityWrapper<MenuMapping>().eq("menu_id", sysMenu.getId()));
+            if (menuMapping == null) {
+                continue;
+            }
+            String tableName = menuMapping.getTableName();
+            List<SysField> fieldByTable = fieldService.getFieldByTable(tableName);
+            //鍒ゆ柇鏄惁鏈夊疄闄呯殑琛ㄥ瓨鍦�
+            if (fieldByTable == null || fieldByTable.size() == 0) {
+                continue;
+            }
+            parentIdSet.add(sysMenu.getId());
+        }
+        List<SysMenu> parentList = menuService.getMenuByParentId(parentIdSet);
+
+        return Result.success(parentList) ;
+    }
+
+
+    /**
+     *
+     * @description:  鑾峰彇鎵�鏈夌埗绾т富棰樺垪琛�
+     * @return: 鐖剁骇涓婚鏁版嵁
+     *
+     */
     @RequestMapping(value = "/allTheme", method = RequestMethod.GET)
     public Result<List<SysMenu>> getAllTheme() {
         EntityWrapper<SysMenu> sysMenuEntityWrapper = new EntityWrapper<>();
-        sysMenuEntityWrapper.eq("menu_type",Constant.StructureMenu).orderBy("parent_id desc ");
+        //浠呰幏鍙栫埗绾т富棰樺垪琛�
+        sysMenuEntityWrapper.eq("menu_type",Constant.StructureMenu).orderBy("parent_id desc");
         return Result.success(menuService.selectList(sysMenuEntityWrapper)) ;
     }
 
-
+    /**
+     *
+     * @description:  鍒嗛〉鑾峰彇鎵�鏈変富棰樺垪琛�
+     * @param pageno 椤垫暟
+     * @return: 涓婚鏁版嵁
+     *
+     */
     @RequestMapping(value = "/{pageno}", method = RequestMethod.GET)
     public Result<Page<SysMenu>> getAll(@PathVariable int pageno, HttpServletRequest request) {
+        //pageSize 姣忛〉鏁版嵁
         String pageSize = request.getParameter("pageSize");
         if (StringUtils.isEmpty(pageSize)) {
-            pageSize = "20";
+            pageSize = "15";
         }
         Integer size = Integer.valueOf(pageSize);
         Page page = new Page(pageno, size);
+        //鍒嗛〉鑾峰彇涓婚
         Page<SysMenu> menuPage = menuService.selectPage(page);
         return Result.success(menuPage);
     }
+
+    /**
+     *
+     * @description:  閫氳繃id鑾峰彇涓婚淇℃伅
+     * @param id 涓婚id
+     * @return: 涓婚鏁版嵁
+     *
+     */
 
     @RequestMapping(value = "/get/{id}",  method = RequestMethod.GET)
     public Result<SysMenu> get(@PathVariable String id) throws Exception {
         return Result.success(menuService.selectById(id));
     }
+    /**
+     *
+     * @description:  娣诲姞涓婚
+     * @param name 涓婚鍚嶇О
+     * @return: 涓婚鏁版嵁
+     *
+     */
     @RequestMapping(value = "/add", method = RequestMethod.GET)
     public Result<Object> insert(@RequestParam  String name, HttpServletRequest request){
+        //鍓嶇鑾峰彇涓婚鍙傛暟
         String ordernoStr = request.getParameter("orderno");
         String parentId = request.getParameter("parentId");
         String dataType = request.getParameter("dataType");
         String menuType = request.getParameter("menuType");
-
         Integer orderno = null;
+        //璁剧疆榛樿椤哄簭
         if (StringUtils.isEmpty(ordernoStr)){
             orderno = Integer.valueOf("1");
             EntityWrapper<SysMenu> menuEntityWrapper = new EntityWrapper<>();
@@ -103,23 +258,30 @@
         }else {
             orderno = Integer.valueOf(ordernoStr);
         }
+        //淇濆瓨鏁版嵁
         SysMenu menu = new SysMenu();
         menu.setName(name);
         String uuid = DbUtils.getUUID();
         menu.setId(uuid);
         menu.setParentId(parentId);
         menu.setOrderNo(orderno);
-        menu.setDataType(MaintainDataType.parse(dataType));
-        menu.setMenuType(menuType);
+        menu.setMenuType(menuType).setCreateTime(new Date());
         boolean inserted = menuService.insert(menu);
         if (inserted) {
-            return  Result.success("鎻掑叆鎴愬姛", null);
+            return  Result.success(menu);
         } else {
             return Result.error(CodeMsg.INSERT_ERROR);
         }
 
     }
-
+    /**
+     *
+     * @description:  娣诲姞鏁版嵁涓婚 鍘熷厛璁捐浣跨敤
+     * @param id 涓婚id
+     * @param operateCode 鍙傛暟绫诲瀷
+     * @return: 涓婚鏁版嵁
+     *
+     */
     @RequestMapping(value = "/add/version", method = RequestMethod.GET)
     public Result insertAll(@RequestParam String id, @RequestParam  String operateCode, HttpServletRequest request)  {
         SysMenu menu = menuService.selectById(id);
@@ -153,31 +315,28 @@
             }else {
                 orderno = Integer.valueOf(ordernoStr);
             }
-            menu = new SysMenu().setId(id).setParentId(parentId).setMenuType(menuType).setName(name).setOrderNo(orderno);
+            menu = new SysMenu().setCreateTime(new Date()).setId(id).setParentId(parentId).setMenuType(menuType).setName(name).setOrderNo(orderno);
             menu.insert();
         }
 
-        if (menu.getMenuType().equalsIgnoreCase(Constant.DataMenu)) {
-            Result<List<SysMenu>> listResult = menuByParentId(id);
-            List<SysMenu> data = listResult.getData();
-            long count = data.stream().filter(sysMenu -> sysMenu.getDataType().equals(MaintainDataType.unkonwn)).count();
-            if (count != data.size()) {
-                return Result.error(CodeMsg.SELECT_ERROR);
-            }
-        }
-        new SysMenu().setParentId(id).setId(DbUtils.getUUID()).setName(Constant.UnMatched).setOrderNo(1).setCreateTime(new Date()).setDataType(MaintainDataType.afterData).insert();
-        new SysMenu().setParentId(id).setId(DbUtils.getUUID()).setName(Constant.Current).setOrderNo(2).setCreateTime(new Date()).setDataType(MaintainDataType.currentData).insert();
-        new SysMenu().setParentId(id).setId(DbUtils.getUUID()).setName(Constant.History).setOrderNo(3).setCreateTime(new Date()).setDataType(MaintainDataType.beforeData).insert();
-
-        return Result.success(CodeMsg.SUCCESS);
+        return Result.success(menu);
     }
-
+    /**
+     *
+     * @description:  鏇存柊涓婚淇℃伅
+     * @param id 涓婚id
+     * @return: 涓婚鏁版嵁
+     *
+     */
     @RequestMapping(value = "/update", method = RequestMethod.GET)
     public Result<Object> update(@RequestParam  String id, HttpServletRequest request) {
+        //鑾峰彇涓婚鏁版嵁
         SysMenu menu = menuService.selectById(id);
+
         if (menu == null) {
             return Result.error(CodeMsg.SELECT_ERROR_NOTFOUND);
         }
+        menu.setUpdateTime(new Date());
         String ordernoStr = request.getParameter("orderNo");
         String parentId = request.getParameter("parentId");
         String menuType = request.getParameter("menuType");
@@ -199,6 +358,13 @@
             return Result.error(CodeMsg.UPDATE_ERROR);
         }
     }
+    /**
+     *
+     * @description:  鎵归噺鍒犻櫎涓婚
+     * @param parentId 鐖剁骇涓婚
+     * @return: 涓婚鏁版嵁
+     *
+     */
     private HashSet<SysMenu> deleteMenuByParentId(List<SysMenu> data, String parentId) {
         HashSet<SysMenu> resultSet = new HashSet<>();
         for (SysMenu menu : data) {
@@ -217,24 +383,38 @@
         result.addAll(resultSet);
         return result;
     }
+    /**
+     *
+     * @description:  閫氳繃id鍒犻櫎涓婚淇℃伅
+     * @param menuid 涓婚id
+     * @return: 涓婚鏁版嵁
+     *
+     */
     @RequestMapping(value = "/delete/{menuid}", method = RequestMethod.GET)
-    public Result<Object> delete(@PathVariable String menuid) throws Exception {
+    public Result<Object> delete(@PathVariable String menuid, HttpServletRequest request) throws Exception {
         Result<List<SysMenu>> all = getAll();
         List<SysMenu> data = all.getData();
+        SysMenu parentMenu = menuService.selectById(menuid);
+
         HashSet<SysMenu> sysMenus = deleteMenuByParentId(data, menuid);
 
         for (SysMenu sysMenu : sysMenus) {
             List<MenuMapping> menuMappingList = menuMappingService.selectList(new EntityWrapper<MenuMapping>().eq("menu_id", sysMenu.getId()));
             for (MenuMapping menuMapping : menuMappingList) {
-                // 娣诲姞寰呭垹闄よ〃鐨勬棩蹇�
+                //鑻ュ凡缁忔湁涓婚鐢熸垚 鍒欐坊鍔犲埌鍒犻櫎鏃ュ織閲�
                 DeletedTableLog deletedTableLog = new DeletedTableLog();
                 deletedTableLog.setId(DbUtils.getUUID()).setTableName(menuMapping.getTableName()).setCreateTime(new Date());
                 deletedTableLog.insert();
                 menuMapping.deleteById();
             }
+
             sysMenu.deleteById();
         }
-        boolean delete = menuService.deleteById(menuid);
+        if (parentMenu == null) {
+            return Result.success(null);
+        }
+        String menuType = parentMenu.getMenuType();
+        boolean delete = parentMenu.deleteById();
         if (delete) {
             return Result.success(null);
         } else {
@@ -242,9 +422,17 @@
         }
 
     }
-
+    /**
+     *
+     * @description:  閫氳繃parentid鍒嗛〉鑾峰彇涓婚淇℃伅
+     * @param parentid 鐖剁骇涓婚id
+     * @param pageno : 椤垫暟
+     * @return: 涓婚鏁版嵁list
+     *
+     */
     @RequestMapping(value = "/byParent/{parentid}/{pageno}", method = RequestMethod.GET)
     public Result<Page<SysMenu>> menuByParentIdPage(@PathVariable String parentid, @PathVariable int pageno, HttpServletRequest request) throws Exception {
+        //pageSize 姣忛〉鏁版嵁
         String pageSize = request.getParameter("pageSize");
         if (StringUtils.isEmpty(pageSize)) {
             pageSize = "15";
@@ -258,6 +446,13 @@
         return Result.success(menuPage);
     }
 
+    /**
+     *
+     * @description:  閫氳繃parentid鑾峰彇涓婚淇℃伅
+     * @param parentid 鐖剁骇涓婚id
+     * @return: 涓婚鏁版嵁list
+     *
+     */
     @RequestMapping(value = "/byParent/{parentid}", method = RequestMethod.GET)
     public Result<List<SysMenu>> menuByParentId(@PathVariable String parentid) {
         EntityWrapper<SysMenu> menuEntityWrapper = new EntityWrapper<>();
@@ -266,6 +461,5 @@
         List<SysMenu> sysMenus = menuService.selectList(menuEntityWrapper);
         return Result.success(sysMenus);
     }
-
 
 }

--
Gitblit v1.8.0