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/service/impl/MenuMappingServiceImpl.java |  202 +++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 165 insertions(+), 37 deletions(-)

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 bdb7379..2b4a844 100644
--- a/src/main/java/com/highdatas/mdm/service/impl/MenuMappingServiceImpl.java
+++ b/src/main/java/com/highdatas/mdm/service/impl/MenuMappingServiceImpl.java
@@ -14,19 +14,17 @@
 import com.highdatas.mdm.mapper.MenuMappingMapper;
 import com.highdatas.mdm.mapper.TableInfoMapper;
 import com.highdatas.mdm.pojo.CodeMsg;
-import com.highdatas.mdm.pojo.MaintainDataType;
 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;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpSession;
+import java.io.UnsupportedEncodingException;
 import java.util.Date;
 import java.util.Map;
 
@@ -54,11 +52,22 @@
 
     @Autowired
     ISysMenuService menuService;
+    @Autowired
+    IMaintainFieldService maintainFieldService;
+    @Autowired
+    IMasterAuthorService masterAuthorService;
 
     public static final String key = "process";
-
+    /**
+     *
+     * @description:  鍒涘缓menumapping瀵硅薄
+     * @param json menu mapping josn鏁版嵁
+     * @param session 鐢ㄦ埛浠巗ession閲岃幏鍙�
+     * @return: menu mapping瀵硅薄
+     *
+     */
     @Override
-    public boolean create(String json, HttpSession session) {
+    public MenuMapping create(String json, HttpSession session) {
         JSONObject jsonObject = JSONObject.parseObject(json);
 //        //1
 //        Flows flows = activitiService.start(key, session);
@@ -81,12 +90,20 @@
             menuMapping = objectMapper.readValue(json, MenuMapping.class);
         } catch (JsonProcessingException e) {
             e.printStackTrace();
-            return false;
+            return null;
         }
-        //menuMapping.setMaintainId(maintainId);
+        String menuId = menuMapping.getMenuId();
+        if (StringUtils.isEmpty(menuId)) {
+            return null;
+        }
+        int cnt = selectCount(new EntityWrapper<MenuMapping>().eq("menu_id", menuId));
+        if (cnt != 0)  {
+            return null;
+        }
+        //menuMapping.setMaintainFieldId(maintainId);
         return  create(menuMapping);
     }
-
+    @Deprecated
     private Maintain createMaintain(String userId, JSONObject jsonObject, String flowsId) {
         Maintain maintain = new Maintain();
         maintain.setCreateTime(new Date());
@@ -108,11 +125,45 @@
         }
         return null;
     }
-
-    public boolean create(MenuMapping menuMapping) {
+    /**
+     *
+     * @description:  淇濆瓨menumapping瀵硅薄
+     * @param menuMapping menumapping 瀵硅薄
+     * @return: menu mapping瀵硅薄
+     *
+     */
+    @Override
+    public MenuMapping create(MenuMapping menuMapping) {
         menuMapping.setCreateTime(new Date());
         menuMapping.setId(DbUtils.getUUID());
-        return this.insert(menuMapping);
+        String name = menuMapping.getName();
+        name = DbUtils.getChineseOrEnglishOrNumber(name);
+        String tableName = WorkflowUtils.toFirstChar(name.toLowerCase());
+        tableName = Constant.MD + tableName;
+        String tableByName = tableInfoMapper.selectTableByName(tableName);
+
+        if (!StringUtils.isEmpty(tableByName)){
+            int sameCount = selectCount(new EntityWrapper<MenuMapping>().eq("table_name", tableName));
+            if (sameCount > 0) {
+                tableName =  tableName + "_" +  DbUtils.getUUID(5);
+            }
+        }
+        int length = 0;
+        try {
+            length = tableName.getBytes("UTF-8").length;
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        if (length > 18) {
+            tableName = Constant.MD + DbUtils.getUUID(10);
+        }
+        menuMapping.setTableName(tableName);
+        boolean insert = this.insert(menuMapping);
+        if (insert) {
+            return menuMapping;
+        } else {
+            return null;
+        }
     }
 
     @Override
@@ -126,49 +177,126 @@
             e.printStackTrace();
             return false;
         }
-        //only update no join
+
+        //update menu name
+        String menuId = menuMapping.getMenuId();
+        SysMenu sysMenu = menuService.selectById(menuId);
+        if (sysMenu == null) {
+            return false;
+        }
+        sysMenu.setName(menuMapping.getName());
+        sysMenu.updateById();
+
         return this.updateById(menuMapping);
     }
-
+    /**
+     *
+     * @description:  閫氳繃涓婚鑾峰彇menumapping
+     * @param id 涓婚id
+     * @param session 鐢ㄦ埛浠巗ession閲岃幏鍙�
+     * @return: menu mapping瀵硅薄
+     *
+     */
     @Override
     public Result getMapping(HttpSession session, String id) {
         SysMenu sysMenu = menuService.selectById(id);
-        MaintainDataType dataType = sysMenu.getDataType();
+        if (sysMenu == null) {
+            return Result.error(CodeMsg.SELECT_ERROR);
+        }
         String menuType = sysMenu.getMenuType();
-        if (!StringUtils.isEmpty(menuType) && menuType.equalsIgnoreCase("DataMenu")) {
-            Map mapping = menuMappingMapper.getMapping(id);
-            return Result.success(mapping);
-        }else if (!StringUtils.isEmpty(menuType) && menuType.equalsIgnoreCase("StructureMenu")) {
+        if (StringUtils.isEmpty(menuType)) {
+            return Result.error(CodeMsg.SELECT_ERROR);
+        }
+
+        if (menuType.equalsIgnoreCase("StructureMenu")) {
             return Result.success(null);
         }
-        Wrapper<MenuMapping> menuWrapper = new EntityWrapper<MenuMapping>().eq("menu_id", sysMenu.getParentId());
+
+        Map mapping = menuMappingMapper.getMapping(id);
+
+        Wrapper<MenuMapping> menuWrapper = new EntityWrapper<MenuMapping>().eq("menu_id", sysMenu.getId());
         MenuMapping menuMapping = selectOne(menuWrapper);
         if (menuMapping == null) {
             return Result.error(new CodeMsg(10008,"褰撳墠涓婚鏃犵増鏈暟鎹�"));
         }
         String tableName = menuMapping.getTableName();
-        Maintain resultMaintain = null;
-        switch (dataType) {
-            case beforeData:
-                resultMaintain = maintainService.getRecentHistoryVersion(tableName);
-                break;
-            case afterData:
-               break;
-            case currentData:
-                resultMaintain = maintainService.getNowVersion(tableName);
-                break;
-            default:
-                Result.error(new CodeMsg(10008,"褰撳墠涓婚鏃犵増鏈暟鎹�"));
-                break;
-        }
+        String chargeId = menuMapping.getChargeId();
+        TUser userByChargeId = DbUtils.getUserById(chargeId);
 
-        Map<String, Object> mapping = menuMappingMapper.getMapping(sysMenu.getParentId());
+        TUser user = (TUser) session.getAttribute(Constant.USER);
+
+        Maintain resultMaintain = masterAuthorService.getMaxVersionMaintain(user, tableName);
+        Maintain nowVersion = maintainService.getNowVersion(tableName);
 
         if (resultMaintain != null) {
+            if (nowVersion.getOrderNo().equals(resultMaintain.getOrderNo())) {
+                mapping.put("maintainType", 0);
+            }else {
+                mapping.put("maintainType", 1);
+            }
             mapping.put("version", resultMaintain.getVersion());
             mapping.put("maintainId", resultMaintain.getId());
         }
-        mapping.put("dataType", sysMenu.getDataType());
+        if (userByChargeId != null) {
+            mapping.put("userName", userByChargeId.getUserName());
+        }
+        if (nowVersion != null) {
+            mapping.put("hasData", true);
+        }else {
+            mapping.put("hasData", false);
+        }
         return Result.success(mapping);
+
+    }
+    /**
+     *
+     * @description:  閫氳繃琛ㄥ悕鑾峰彇涓婚
+     * @param tableName 琛ㄥ悕
+     * @return: 涓婚瀵硅薄
+     *
+     */
+    @Override
+    public SysMenu getMenuByTableName(String tableName) {
+        MenuMapping menuMapping = selectOne(new EntityWrapper<MenuMapping>().eq("table_name", tableName).orderBy("create_time desc"));
+        if (menuMapping == null) {
+            return null;
+        }
+        String menuId = menuMapping.getMenuId();
+        SysMenu sysMenu = menuService.selectById(menuId);
+        return sysMenu;
+    }
+    /**
+     *
+     * @description:  閫氳繃涓婚鑾峰彇menumapping
+     * @param id 涓婚id
+     * @param session 鐢ㄦ埛浠巗ession閲岃幏鍙�
+     * @return: menu mapping瀵硅薄
+     *
+     */
+    @Override
+    public MenuMapping getMenuMappingByTableName(String tableName) {
+        MenuMapping menuMapping = selectOne(new EntityWrapper<MenuMapping>().eq("table_name", tableName).orderBy("create_time desc"));
+        if (menuMapping == null) {
+            return null;
+        }
+        return menuMapping;
+    }
+
+
+    /**
+     *
+     * @description:  閫氳繃涓婚鑾峰彇menumapping
+     * @param menuId 涓婚id
+     * @return: menumapping瀵硅薄
+     *
+     */
+    @Override
+    public String getTableNameByMenu(String menuId) {
+        MenuMapping menuMapping = selectOne(new EntityWrapper<MenuMapping>().eq("menu_id", menuId).orderBy("create_time desc"));
+        if (menuMapping == null) {
+            return null;
+        }
+        return menuMapping.getTableName();
+
     }
 }

--
Gitblit v1.8.0