| | |
| | | package com.highdatas.mdm.controller; |
| | | |
| | | |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | 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.mapper.UserMapper; |
| | | 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.AESUtil; |
| | | 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> |
| | |
| | | * @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 |
| | | UserMapper mapper; |
| | | @Autowired |
| | | IMasterAuthorService masterAuthorService; |
| | | @Autowired |
| | | MasterDataService masterDataService; |
| | | @Autowired |
| | | TableInfoMapper tableInfoMapper; |
| | | @Autowired |
| | | IMenuMappingService menuMappingService; |
| | | |
| | | @SneakyThrows |
| | | @RequestMapping(value = "/test", method = RequestMethod.GET) |
| | | public Result test(HttpServletRequest request) throws Exception { |
| | | List<Map<String, Object>> test = mapper.test(); |
| | | String keys = "ismytestkeys"; |
| | | byte[] secretKey = AESUtil.getSecretKey(keys); |
| | | String content = JSONArray.toJSONString(test); |
| | | long start = System.currentTimeMillis(); |
| | | byte[] bytes = content.getBytes("utf-8"); |
| | | int length = bytes.length; |
| | | System.out.println(length + "K"); |
| | | String s = AESUtil.aesPKCS7PaddingEncrypt(content, secretKey.toString()); |
| | | long end = System.currentTimeMillis(); |
| | | float time = (end - start) ; |
| | | System.out.println(time + "s"); |
| | | return Result.success(s); |
| | | } |
| | | |
| | | @RequestMapping(value = "/test1", method = RequestMethod.GET) |
| | | public Result test1(HttpServletRequest request) throws InterruptedException { |
| | | Thread.sleep(3000); |
| | | return Result.success(null); |
| | | } |
| | | |
| | | @RequestMapping(value = "/all/{userId}", method = RequestMethod.GET) |
| | | public Result getAll(@PathVariable String userId, HttpServletRequest request) { |
| | | //TODO |
| | | Wrapper<SysView> eq = new EntityWrapper<SysView>().eq(Constant.USERID, userId); |
| | | List<SysView> records = viewService.selectList(eq); |
| | | for (SysView record : records) { |
| | | String id = record.getId(); |
| | | String baseMaintainStr = record.getBaseMaintain(); |
| | | |
| | | 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); |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | @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); |
| | | } |
| | | |
| | | @RequestMapping(value = "/getViewData/{id}/page/{pageNo}", method = RequestMethod.GET) |
| | | public Result getViewData(@PathVariable String id, @PathVariable Integer pageNo, HttpServletRequest request) { |
| | | 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); |
| | | |
| | | } |
| | | |
| | | @RequestMapping(value = "/getMapData/{id}/page/{pageNo}", method = RequestMethod.GET) |
| | | public Result getMapData(@PathVariable String id, @PathVariable Integer pageNo, @RequestParam String changedField, HttpServletRequest request) { |
| | | 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.getMapData(sysView, changedField, pageNo, pageSize); |
| | | |
| | | } |
| | | |
| | | @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) ; |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | |
| | | @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); |
| | | return Result.success(sysView); |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | |
| | | |
| | | @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(); |
| | | viewService.getMappingTableName(sysView); |
| | | return Result.success(sysView); |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | |
| | | boolean b = viewService.deleteMapField(sysView, changedField); |
| | | if (!b) { |
| | | return Result.error(CodeMsg.DELETE_ERROR); |
| | | } |
| | | return Result.success(sysView); |
| | | } |
| | | @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); |
| | | delete = viewService.deleteMapField(sysView, changeFieldName); |
| | | } |
| | | if (delete) { |
| | | return Result.success(CodeMsg.DELETE_SUCCESS); |
| | | } else { |
| | | return Result.error(CodeMsg.DELETE_ERROR); |
| | | } |
| | | } |
| | | |
| | | |
| | | @SneakyThrows |
| | | @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET) |
| | | public Result delete(@PathVariable String id) { |
| | | return viewService.deleteView(id); |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | 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); |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | |
| | | 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); |
| | | } |
| | | @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; |
| | | } |
| | | viewService.downlodMap(sysView,user, response, field, menuId); |
| | | } |
| | | } |