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/SysViewController.java | 546 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 542 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/highdatas/mdm/controller/SysViewController.java b/src/main/java/com/highdatas/mdm/controller/SysViewController.java index bcd7cd4..c606a77 100644 --- a/src/main/java/com/highdatas/mdm/controller/SysViewController.java +++ b/src/main/java/com/highdatas/mdm/controller/SysViewController.java @@ -1,20 +1,558 @@ package com.highdatas.mdm.controller; -import org.springframework.web.bind.annotation.RequestMapping; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; +import com.highdatas.mdm.entity.*; +import com.highdatas.mdm.mapper.TableInfoMapper; +import com.highdatas.mdm.pojo.CodeMsg; +import com.highdatas.mdm.pojo.Result; +import com.highdatas.mdm.pojo.ViewMapFieldItem; +import com.highdatas.mdm.service.*; +import com.highdatas.mdm.util.Constant; +import com.highdatas.mdm.util.DbUtils; +import lombok.SneakyThrows; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; -import org.springframework.stereotype.Controller; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.*; +import java.util.stream.Collectors; /** * <p> * 鍓嶇鎺у埗鍣� * </p> - * + * @desctiption 瑙嗗浘鎺ュ彛 * @author kimi * @since 2020-04-15 */ -@Controller +@RestController @RequestMapping("/sysView") public class SysViewController { + @Autowired + ISysViewService viewService; + @Autowired + ISysViewJoinService sysViewJoinService; + @Autowired + IMaintainService maintainService; + @Autowired + ISysMenuService menuService; + @Autowired + IMasterAuthorService masterAuthorService; + @Autowired + MasterDataService masterDataService; + @Autowired + TableInfoMapper tableInfoMapper; + @Autowired + IMenuMappingService menuMappingService; + @Autowired + ISysViewLogicService logicService; + @Autowired + ISysViewLogicmapService logicmapService; + /** + * + * @description: By鐢ㄦ埛鑾峰彇瑙嗗浘list + * @param userId 鐢ㄦ埛id + * @return: 瑙嗗浘list + * + */ + @RequestMapping(value = "/all/{userId}", method = RequestMethod.GET) + public Result getAll(@PathVariable String userId, HttpServletRequest request) { + //ByuserId 鑾峰彇瑙嗗浘鍒楄〃 + Wrapper<SysView> eq = new EntityWrapper<SysView>().eq(Constant.USERID, userId); + List<SysView> records = viewService.selectList(eq); + for (SysView record : records) { + String id = record.getId(); + Maintain baseMaintain = viewService.getBaseMaintain(record); + //鏍¢獙鍩哄噯鐗堟湰鏄惁瀛樺湪 + if (baseMaintain == null) { + continue; + } + //鑾峰彇 鐗堟湰鍙凤紝琛ㄥ悕杩斿洖鍓嶇 + record.setBaseTableName(baseMaintain.getTableName()); + record.setBaseVersion(baseMaintain.getVersion()); + String menuId = record.getMenuId(); + SysMenu sysMenu = menuService.selectById(menuId); + //鏍¢獙涓婚鏄惁瀛樺湪 + if (sysMenu == null) { + continue; + } + //鑾峰彇涓婚鍚嶇О杩斿洖鍓嶇 + record.setMenuName(sysMenu.getName()); + //鑾峰彇鍏宠仈涓婚 + List<SysViewJoin> sysViewJoins = sysViewJoinService.selectList(new EntityWrapper<SysViewJoin>().eq(Constant.PARENT_ID, id)); + List<String> menuIds = sysViewJoins.stream() + .map(sysViewJoin -> sysViewJoin.getMenuId()) + .collect(Collectors.toList()); + if (!menuIds.isEmpty()) { + List<SysMenu> sysMenus = menuService.selectBatchIds(menuIds); + Collections.reverse(sysMenus); + String subMenuName = sysMenus.stream().map(subMenu -> subMenu.getName()).collect(Collectors.joining(Constant.SEMICOLON)); + //鑾峰彇鍏宠仈涓婚鐨勫悕绉扮粍鍚堝悗杩斿洖缁欏墠绔� + record.setSubMenuName(subMenuName); + } + + } + return Result.success(records); + } + + /** + * + * @description: 鏇存柊瑙嗗浘鏁版嵁 + * @param id 瑙嗗浘id + * @return: 鏄惁鏇存柊鎴愬姛 + * + */ + @RequestMapping(value = "/refreshData/{id}", method = RequestMethod.GET) + public Result createView(@RequestParam String id, @RequestParam Boolean active) { + //鑾峰彇瑙嗗浘淇℃伅 + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + //浠庢柊鍒涘缓瑙嗗浘 + viewService.createView(sysView.getId()); + return Result.success(sysView); + } + + /** + * + * @description: 淇濆瓨鍏宠仈瀛楁淇℃伅 + * @param id 瑙嗗浘id + * @param mapField 鍏宠仈瀛楁 + * @return: 鏄惁淇濆瓨鎴愬姛 + * + */ + @RequestMapping(value = "/saveMapField/{id}", method = RequestMethod.GET) + public Result saveMapField(@RequestParam String id, @RequestParam String mapField) { + //鑾峰彇瑙嗗浘淇℃伅 + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + //淇濆瓨鍏宠仈瀛楁 + sysView.setMappingField(mapField).updateById(); + return Result.success(sysView); + } + + /** + * + * @description: 鍒涘缓瑙嗗浘 + * @param id 瑙嗗浘id + * @return: 鏄惁鍒涘缓鎴愬姛 + * + */ + + @RequestMapping(value = "/createView/{id}", method = RequestMethod.GET) + public Result createView(@PathVariable String id) { + //鑾峰彇瑙嗗浘淇℃伅 + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + //鍒涘缓瑙嗗浘 + boolean view = viewService.createView(sysView.getId()); + if (view) { + return Result.success(null); + } else { + return Result.error(CodeMsg.CREATE_ERROR); + } + + } + + /** + * + * @description: 鏇存柊瑙嗗浘婵�娲荤姸鎬� + * @param id 瑙嗗浘id + * @return: 鏄惁鏇存柊鎴愬姛 + * + */ + @RequestMapping(value = "/active/{id}", method = RequestMethod.GET) + public Result active(@PathVariable String id, @RequestParam Boolean active) { + //鑾峰彇瑙嗗浘淇℃伅 + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + //鏇存柊婵�娲荤姸鎬� + sysView.setActive(active).updateById(); + return Result.success(sysView); + } + + /** + * + * @description: 鑾峰彇瑙嗗浘鏁版嵁 + * @param id 瑙嗗浘id + * @param pageNo 椤垫暟 + * @return: 瑙嗗浘鏈悗鎹� + * + */ + + @RequestMapping(value = "/getViewData/{id}/page/{pageNo}", method = RequestMethod.GET) + public Result getViewData(@PathVariable String id, @PathVariable Integer pageNo, HttpServletRequest request) { + //pageSize 锛屾瘡椤垫暟鎹噺 + String pageSizeStr = request.getParameter("pageSize"); + //鑾峰彇瑙嗗浘鏁版嵁 + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + int pageSize = 15; + if (!StringUtils.isEmpty(pageSizeStr)) { + pageSize = Integer.valueOf(pageSizeStr); + } + //鍒嗛〉鑾峰彇瑙嗗浘鏁版嵁 + return viewService.getViewData(sysView, pageNo, pageSize); + + } + + /** + * + * @description: 鑾峰彇瑙嗗浘涓�瀵逛竴杞崲鐨刴ap鏁版嵁 + * @param id 瑙嗗浘id + * @param pageNo 椤垫暟 + * @return: map鏁版嵁 + * + */ + @RequestMapping(value = "/getMapData/{id}/page/{pageNo}", method = RequestMethod.GET) + public Result getMapData(@PathVariable String id, @PathVariable Integer pageNo, @RequestParam String changedField, HttpServletRequest request) { + //pageSize 姣忛〉鏁版嵁 + String pageSizeStr = request.getParameter("pageSize"); + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + int pageSize = 15; + if (!StringUtils.isEmpty(pageSizeStr)) { + pageSize = Integer.valueOf(pageSizeStr); + } + //鑾峰彇maping鐨勬暟鎹� + return viewService.getMapData(sysView, changedField, pageNo, pageSize); + + } + + /** + * + * @description: 閫氳繃鐢ㄦ埛鑾峰彇鏈夋潈闄愮殑瀛楁 + * @param userId 鐢ㄦ埛id + * @param needUpdate 鏄惁闇�瑕佷粠鏂拌幏鍙栦竴閬嶆暟鎹� + * @param maintainId 鐗堟湰id + * @return: 瀛楁鍒楄〃 + * + */ + + @RequestMapping(value = "/field/{userId}", method = RequestMethod.GET) + public Result<List<SysField>> fieldList(@PathVariable String userId, @RequestParam boolean needUpdate, @RequestParam String maintainId, HttpServletRequest request) { + //璇锋眰澶撮噷鑾峰彇鐢ㄦ埛淇℃伅 + TUser user = DbUtils.getUserById(userId); + if (user == null) { + return Result.error(CodeMsg.USER_NOT_MATHED); + } + + if (needUpdate) { + //浠庢柊鑾峰彇涓�閬嶆渶鏂扮殑鐗堟湰瀛楁 + Maintain nowVersion = maintainService.getNowVersion(maintainId); + List<SysField> field = masterAuthorService.getField(user, nowVersion.getId()); + return Result.success(field) ; + } + //鏍规嵁鏉冮檺鑾峰彇瀛楁 + List<SysField> field = masterAuthorService.getField(user, maintainId); + return Result.success(field) ; + } + + /** + * + * @description: 鑾峰彇瑙嗗浘涓�瀵逛竴杞崲鐨刴ap鏁版嵁 + * @param id 瑙嗗浘id + * @return: map鏁版嵁 + * + */ + @RequestMapping(value = "/mapFieldList/{id}", method = RequestMethod.GET) + public Result active(@PathVariable String id) { + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + + List<ViewMapFieldItem> mapField = viewService.getMapField(sysView); + return Result.success(mapField); + } + + /** + * + * @description: 鑾峰彇瑙嗗浘鏁版嵁 + * @param id 瑙嗗浘id + * @return: 瑙嗗浘鏁版嵁 + * + */ + @RequestMapping(value = "/get/{id}", method = RequestMethod.GET) + public Result get(@PathVariable String id) { + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + String menuId = sysView.getMenuId(); + //鑾峰彇涓婚鐨勭埗绾т富棰橀摼 + LinkedHashSet<String> parentIdSet = new LinkedHashSet<>(); + parentIdSet.add(menuId); + LinkedHashSet<String> byParentId = menuService.getByParentId(parentIdSet); + ArrayList<String> strings = new ArrayList<>(byParentId); + Collections.reverse(strings); + String collect = strings.stream().collect(Collectors.joining(Constant.SEMICOLON)); + sysView.setMenuName(collect); + //鑾峰彇鍏宠仈涓婚 + List<SysViewJoin> sysViewJoins = sysViewJoinService.selectList(new EntityWrapper<SysViewJoin>().eq(Constant.PARENT_ID, id)); + for (SysViewJoin sysViewJoin : sysViewJoins) { + //鑾峰彇鍏宠仈涓婚鐨勭埗绾т富棰橀摼 + parentIdSet.clear(); + parentIdSet.add(sysViewJoin.getMenuId()); + LinkedHashSet<String> subParent = menuService.getByParentId(parentIdSet); + ArrayList<String> subList = new ArrayList<>(subParent); + Collections.reverse(subList); + String subMenuName = subList.stream().collect(Collectors.joining(Constant.SEMICOLON)); + sysViewJoin.setMenuName(subMenuName); + } + sysView.setViewJoinList(sysViewJoins); + + List<SysViewLogicmap> sysViewLogicmaps = logicmapService.selectList(new EntityWrapper<SysViewLogicmap>().eq(Constant.PARENT_ID, sysView.getId())); + sysView.setLogicmapList(sysViewLogicmaps); + return Result.success(sysView); + } + /** + * + * @description: 鑾峰彇鍙敤瑙嗗浘 + * @param userId 鐢ㄦ埛id + * @return: 瑙嗗浘鏁� + * + */ + @RequestMapping(value = "/getCnt/{userId}", method = RequestMethod.GET) + public Result cnt(@PathVariable String userId, HttpServletRequest request) { + //鑾峰彇鐢ㄦ埛淇℃伅 + TUser user = DbUtils.getUserById(userId); + if (user == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + Wrapper<SysView> userWrapper = new EntityWrapper<SysView>().eq("user_id", userId); + //鑾峰彇瑙嗗浘鎬绘暟 + int totalCnt = viewService.selectCount(userWrapper); + //鍙敤瑙嗗浘鏁� + userWrapper.eq("active", true); + int activeCnt = viewService.selectCount(userWrapper); + //宸叉敞鍐岃鍥炬暟 + userWrapper.eq("subscribe", true); + int subscribeCnt = viewService.selectCount(userWrapper); + JSONObject object = new JSONObject(); + object.fluentPut("totalCnt", totalCnt); + object.fluentPut("activeCnt", activeCnt); + object.fluentPut("subscribeCnt", subscribeCnt); + return Result.success(object); + } + + /** + * + * @description: 鍒涘缓瑙嗗浘 + * @param userId 鐢ㄦ埛id + * @return: 瑙嗗浘鏁版嵁 + * + */ + @RequestMapping(value = "/create/{userId}", method = RequestMethod.GET) + public Result add(@PathVariable String userId, HttpServletRequest request) { + SysView sysView = new SysView(); + //璁剧疆瑙嗗浘鍒濆鏁版嵁 + sysView.setId(DbUtils.getUUID()) + .setUserId(userId) + .setCreateTime(new Date()) + .setStatus(ViewStatus.edit) + .setEmptyData(true) + .insert(); + //鐢熸垚骞朵繚瀛榤apping琛� 琛ㄥ悕 + viewService.getMappingTableName(sysView); + return Result.success(sysView); + } + + /** + * + * @description: 鍒犻櫎涓�瀵逛竴mapping + * @param id 瑙嗗浘id + * @return: map鏁版嵁 + * + */ + @SneakyThrows + @RequestMapping(value = "/deleteMap/{id}", method = RequestMethod.GET) + public Result deleteMap(@PathVariable String id, @RequestParam String changedField) { + //鑾峰彇瑙嗗浘鏁版嵁 + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + //鍒犻櫎mapping瀛楁 + viewService.deleteMapField(sysView, changedField); + logicmapService.delete(new EntityWrapper<SysViewLogicmap>().eq(Constant.PARENT_ID, id).eq(Constant.FIELD, changedField)); + List<SysViewLogicmap> sysViewLogicmaps = logicmapService.selectList(new EntityWrapper<SysViewLogicmap>().eq(Constant.PARENT_ID, sysView.getId())); + sysView.setLogicmapList(sysViewLogicmaps); + return Result.success(sysView); + } + /** + * + * @description: 鍒犻櫎鍏宠仈涓婚鏁版嵁 + * @param id 瑙嗗浘鍏宠仈涓婚id + * @return: 鏄惁鍒犻櫎鎴愬姛 + * + */ + + @SneakyThrows + @RequestMapping(value = "/delete/detail/{id}", method = RequestMethod.GET) + public Result deleteDetail(@PathVariable String id) { + //鑾峰彇鍏宠仈涓婚鏁版嵁 + SysViewJoin sysViewJoin = sysViewJoinService.selectById(id); + if (sysViewJoin == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + String parentId = sysViewJoin.getParentId(); + SysView sysView = viewService.selectById(parentId); + String userId = sysView.getUserId(); + //鑾峰彇鐢ㄦ埛淇℃伅 + TUser user = DbUtils.getUserById(userId); + + //鑾峰彇鍏宠仈涓婚淇℃伅 + Maintain joinMaintain = viewService.getJoinMaintain(sysViewJoin); + List<String> subFieldList = viewService.getSubFieldList(sysViewJoin, user); + boolean delete = false; + + for (String subField: subFieldList) { + String changeFieldName = viewService.changeFieldName(joinMaintain.getTableName(), subField); + logicmapService.delete(new EntityWrapper<SysViewLogicmap>() + .eq(Constant.PARENT_ID, sysView.getId()) + .eq(Constant.FIELD, changeFieldName) + ); + //鍒犻櫎1瀵�1mapping 琛ㄥ唴鏁版嵁 + delete = viewService.deleteMapField(sysView, changeFieldName); + } + if (delete) { + return Result.success(CodeMsg.DELETE_SUCCESS); + } else { + return Result.error(CodeMsg.DELETE_ERROR); + } + } + /** + * + * @description: 鍒犻櫎瑙嗗浘 + * @param id 瑙嗗浘id + * @return: 鏄惁鍒犻櫎 + * + */ + + @SneakyThrows + @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET) + public Result delete(@PathVariable String id) { + return viewService.deleteView(id); + } + + /** + * + * @description: 閫氳繃鐢ㄦ埛鑾峰彇鏌愪富棰樹笅鐨勭増鏈唱椋� + * @param userId 鐢ㄦ埛id + * @param menuId 涓婚 + * @return: map鏁版嵁 + * + */ + @RequestMapping(value = "/maintainList/{userId}", method = RequestMethod.GET) + public Result add(@PathVariable String userId, @RequestParam String menuId, HttpServletRequest request) { + //鑾峰彇鐢ㄦ埛淇℃伅 + TUser user = DbUtils.getUserById(userId); + if (user == null) { + return Result.error(CodeMsg.USER_NOT_MATHED); + } + //鑾峰彇琛ㄥ悕 + String tableNameByMenu = menuMappingService.getTableNameByMenu(menuId); + if (StringUtils.isEmpty(tableNameByMenu)) { + return Result.error(CodeMsg.SELECT_ERROR_NOTFOUND); + } + //鑾峰彇鐗堟湰list + LinkedHashSet<Maintain> maintainSet = masterAuthorService.getMaintainSet(tableNameByMenu, user); + ArrayList<Maintain> maintains = new ArrayList<>(maintainSet); + for (Maintain maintain : maintains) { + maintain.setNeedUpdate(false); + } + Maintain max = new Maintain(); + max.setId(tableNameByMenu); + max.setTableName(tableNameByMenu); + max.setNeedUpdate(true); + maintains.add(0, max); + return Result.success(maintains); + } + /** + * + * @description: 鏇存柊瑙嗗浘 + * @return: 瑙嗗浘鏁版嵁 + * + */ + @RequestMapping(value = "/update", method = RequestMethod.POST) + public Result add(@RequestBody SysView view) { + //鏍¢獙蹇呬紶瀛楁 + if (StringUtils.isEmpty(view.getId())) { + return Result.error(CodeMsg.SELECT_ERROR_NOTFOUND); + } + if (StringUtils.isEmpty(view.getMenuId()) || StringUtils.isEmpty(view.getBaseMaintain()) ) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + if (StringUtils.isEmpty(view.getViewTableName())) { + viewService.getViewTableName(view); + } + List<SysViewLogicmap> logicmapList = view.getLogicmapList(); + //delete 涔嬪墠鍏宠仈鐨勯�昏緫杞崲 鏁版嵁 + logicmapService.delete(new EntityWrapper<SysViewLogicmap>().eq(Constant.PARENT_ID, view.getId())); + if (logicmapList != null) { + for (SysViewLogicmap logicmap : logicmapList) { + logicmap.setId(DbUtils.getUUID()).setParentId(view.getId()).insert(); + } + } + + view.setEmptyData(false).setStatus(ViewStatus.edit); + //delete 涔嬪墠鍏宠仈涓婚鏁版嵁 + sysViewJoinService.delete(new EntityWrapper<SysViewJoin>().eq(Constant.PARENT_ID, view.getId())); + + List<SysViewJoin> viewJoinList = view.getViewJoinList(); + boolean insert; + for (SysViewJoin sysViewJoin : viewJoinList) { + insert = sysViewJoin.setId(DbUtils.getUUID()).insert(); + if (!insert) { + return Result.error(CodeMsg.INSERT_ERROR); + } + } + view.setUpdateTime(new Date()); + view.updateById(); + return Result.success(view); + } + /** + * + * @description: 涓嬭浇瑙嗗浘涓�瀵逛竴杞崲鐨刴ap鏁版嵁 + * @param id 瑙嗗浘id + * @param menuId 涓婚id + * @param field 瀛楁 + * @return: map鏁版嵁 + * + */ + @SneakyThrows + @RequestMapping(value = "/download/{id}", method = RequestMethod.GET) + public void download(@PathVariable String id, @RequestParam String menuId, @RequestParam String field, HttpServletResponse response) { + //鑾峰彇瑙嗗浘淇℃伅 + SysView sysView = viewService.selectById(id); + if (sysView == null) { + return; + } + String userId = sysView.getUserId(); + //鑾峰彇鐢ㄦ埛淇℃伅 + TUser user = DbUtils.getUserById(userId); + if (user == null) { + return; + } + //涓嬭浇鏌愪釜涓婚涓嬬殑瀛楁鍏宠仈鐨�1瀵�1 mapping鏁版嵁 + viewService.downlodMap(sysView,user, response, field, menuId); + } } -- Gitblit v1.8.0