From 7e254edced5f0361882471ebffbad572c181235d Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期一, 12 五月 2025 18:09:32 +0800 Subject: [PATCH] art: 系统管理-分类字典功能改造,导入功能修改 --- lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysCategoryController.java | 912 ++++++++++++++++++++++++++++---------------------------- 1 files changed, 456 insertions(+), 456 deletions(-) diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysCategoryController.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysCategoryController.java index 9ab89a7..90d9e49 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysCategoryController.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysCategoryController.java @@ -5,15 +5,15 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import liquibase.pro.packaged.Q; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; -import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.vo.DictModel; import org.jeecg.common.system.vo.LoginUser; -import org.jeecg.common.util.ImportExcelUtil; import org.jeecg.common.util.SqlInjectionUtil; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.system.entity.SysCategory; @@ -33,485 +33,485 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; - /** +/** * @Description: 鍒嗙被瀛楀吀 * @Author: jeecg-boot - * @Date: 2019-05-29 + * @Date: 2019-05-29 * @Version: V1.0 */ @RestController @RequestMapping("/sys/category") @Slf4j public class SysCategoryController { - @Autowired - private ISysCategoryService sysCategoryService; + @Autowired + private ISysCategoryService sysCategoryService; - /** - * 鍒嗙被缂栫爜0 - */ - private static final String CATEGORY_ROOT_CODE = "0"; - - /** - * 鍒嗛〉鍒楄〃鏌ヨ - * @param sysCategory - * @param pageNo - * @param pageSize - * @param req - * @return - */ - @GetMapping(value = "/rootList") - public Result<IPage<SysCategory>> queryPageList(SysCategory sysCategory, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - if(oConvertUtils.isEmpty(sysCategory.getPid())){ - sysCategory.setPid("0"); - } - Result<IPage<SysCategory>> result = new Result<IPage<SysCategory>>(); - - //--author:os_chengtgen---date:20190804 -----for: 鍒嗙被瀛楀吀椤甸潰鏄剧ず閿欒,issues:377--------start - //--author:liusq---date:20211119 -----for: 銆恦ue3銆戝垎绫诲瓧鍏搁〉闈㈡煡璇㈡潯浠堕厤缃�--------start - QueryWrapper<SysCategory> queryWrapper = QueryGenerator.initQueryWrapper(sysCategory, req.getParameterMap()); - String name = sysCategory.getName(); - String code = sysCategory.getCode(); - //QueryWrapper<SysCategory> queryWrapper = new QueryWrapper<SysCategory>(); - if(StringUtils.isBlank(name)&&StringUtils.isBlank(code)){ - queryWrapper.eq("pid", sysCategory.getPid()); - } - //--author:liusq---date:20211119 -----for: 鍒嗙被瀛楀吀椤甸潰鏌ヨ鏉′欢閰嶇疆--------end - //--author:os_chengtgen---date:20190804 -----for:銆恦ue3銆� 鍒嗙被瀛楀吀椤甸潰鏄剧ず閿欒,issues:377--------end - - Page<SysCategory> page = new Page<SysCategory>(pageNo, pageSize); - IPage<SysCategory> pageList = sysCategoryService.page(page, queryWrapper); - result.setSuccess(true); - result.setResult(pageList); - return result; - } - - @GetMapping(value = "/childList") - public Result<List<SysCategory>> queryPageList(SysCategory sysCategory,HttpServletRequest req) { - Result<List<SysCategory>> result = new Result<List<SysCategory>>(); - QueryWrapper<SysCategory> queryWrapper = QueryGenerator.initQueryWrapper(sysCategory, req.getParameterMap()); - List<SysCategory> list = sysCategoryService.list(queryWrapper); - result.setSuccess(true); - result.setResult(list); - return result; - } - - - /** - * 娣诲姞 - * @param sysCategory - * @return - */ - @PostMapping(value = "/add") - public Result<SysCategory> add(@RequestBody SysCategory sysCategory) { - Result<SysCategory> result = new Result<SysCategory>(); - try { - sysCategoryService.addSysCategory(sysCategory); - result.success("娣诲姞鎴愬姛锛�"); - } catch (Exception e) { - log.error(e.getMessage(),e); - result.error500("鎿嶄綔澶辫触"); - } - return result; - } - - /** - * 缂栬緫 - * @param sysCategory - * @return - */ - @RequestMapping(value = "/edit", method = { RequestMethod.PUT,RequestMethod.POST }) - public Result<SysCategory> edit(@RequestBody SysCategory sysCategory) { - Result<SysCategory> result = new Result<SysCategory>(); - SysCategory sysCategoryEntity = sysCategoryService.getById(sysCategory.getId()); - if(sysCategoryEntity==null) { - result.error500("鏈壘鍒板搴斿疄浣�"); - }else { - sysCategoryService.updateSysCategory(sysCategory); - result.success("淇敼鎴愬姛!"); - } - return result; - } - - /** - * 閫氳繃id鍒犻櫎 - * @param id - * @return - */ - @DeleteMapping(value = "/delete") - public Result<SysCategory> delete(@RequestParam(name="id",required=true) String id) { - Result<SysCategory> result = new Result<SysCategory>(); - SysCategory sysCategory = sysCategoryService.getById(id); - if(sysCategory==null) { - result.error500("鏈壘鍒板搴斿疄浣�"); - }else { - this.sysCategoryService.deleteSysCategory(id); - result.success("鍒犻櫎鎴愬姛!"); - } - - return result; - } - - /** - * 鎵归噺鍒犻櫎 - * @param ids - * @return - */ - @DeleteMapping(value = "/deleteBatch") - public Result<SysCategory> deleteBatch(@RequestParam(name="ids",required=true) String ids) { - Result<SysCategory> result = new Result<SysCategory>(); - if(ids==null || "".equals(ids.trim())) { - result.error500("鍙傛暟涓嶈瘑鍒紒"); - }else { - this.sysCategoryService.deleteSysCategory(ids); - result.success("鍒犻櫎鎴愬姛!"); - } - return result; - } - - /** - * 閫氳繃id鏌ヨ - * @param id - * @return - */ - @GetMapping(value = "/queryById") - public Result<SysCategory> queryById(@RequestParam(name="id",required=true) String id) { - Result<SysCategory> result = new Result<SysCategory>(); - SysCategory sysCategory = sysCategoryService.getById(id); - if(sysCategory==null) { - result.error500("鏈壘鍒板搴斿疄浣�"); - }else { - result.setResult(sysCategory); - result.setSuccess(true); - } - return result; - } - - /** - * 瀵煎嚭excel - * - * @param request - */ - @RequestMapping(value = "/exportXls") - public ModelAndView exportXls(HttpServletRequest request, SysCategory sysCategory) { - // Step.1 缁勮鏌ヨ鏉′欢鏌ヨ鏁版嵁 - QueryWrapper<SysCategory> queryWrapper = QueryGenerator.initQueryWrapper(sysCategory, request.getParameterMap()); - List<SysCategory> pageList = sysCategoryService.list(queryWrapper); - // Step.2 AutoPoi 瀵煎嚭Excel - ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); - // 杩囨护閫変腑鏁版嵁 - String selections = request.getParameter("selections"); - if(oConvertUtils.isEmpty(selections)) { - mv.addObject(NormalExcelConstants.DATA_LIST, pageList); - }else { - List<String> selectionList = Arrays.asList(selections.split(",")); - List<SysCategory> exportList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); - mv.addObject(NormalExcelConstants.DATA_LIST, exportList); - } - //瀵煎嚭鏂囦欢鍚嶇О - mv.addObject(NormalExcelConstants.FILE_NAME, "鍒嗙被瀛楀吀鍒楄〃"); - mv.addObject(NormalExcelConstants.CLASS, SysCategory.class); - LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("鍒嗙被瀛楀吀鍒楄〃鏁版嵁", "瀵煎嚭浜�:"+user.getRealname(), "瀵煎嚭淇℃伅")); - return mv; - } - - /** - * 閫氳繃excel瀵煎叆鏁版嵁 - * - * @param request - * @param response - * @return - */ - @RequestMapping(value = "/importExcel", method = RequestMethod.POST) - public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) throws IOException{ - MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; - Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); - // 閿欒淇℃伅 - List<String> errorMessage = new ArrayList<>(); - int successLines = 0, errorLines = 0; - for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { - // 鑾峰彇涓婁紶鏂囦欢瀵硅薄 - MultipartFile file = entity.getValue(); - ImportParams params = new ImportParams(); - params.setTitleRows(2); - params.setHeadRows(1); - params.setNeedSave(true); - try { - List<SysCategory> listSysCategorys = ExcelImportUtil.importExcel(file.getInputStream(), SysCategory.class, params); - //鎸夌収缂栫爜闀垮害鎺掑簭 - Collections.sort(listSysCategorys); - log.info("鎺掑簭鍚庣殑list====>",listSysCategorys); - for (int i = 0; i < listSysCategorys.size(); i++) { - SysCategory sysCategoryExcel = listSysCategorys.get(i); - String code = sysCategoryExcel.getCode(); - if(code.length()>3){ - String pCode = sysCategoryExcel.getCode().substring(0,code.length()-3); - log.info("pCode====>",pCode); - String pId=sysCategoryService.queryIdByCode(pCode); - log.info("pId====>",pId); - if(StringUtils.isNotBlank(pId)){ - sysCategoryExcel.setPid(pId); - } - }else{ - sysCategoryExcel.setPid("0"); - } - try { - sysCategoryService.save(sysCategoryExcel); - successLines++; - } catch (Exception e) { - errorLines++; - String message = e.getMessage().toLowerCase(); - int lineNumber = i + 1; - // 閫氳繃绱㈠紩鍚嶅垽鏂嚭閿欎俊鎭� - if (message.contains(CommonConstant.SQL_INDEX_UNIQ_CATEGORY_CODE)) { - errorMessage.add("绗� " + lineNumber + " 琛岋細鍒嗙被缂栫爜宸茬粡瀛樺湪锛屽拷鐣ュ鍏ャ��"); - } else { - errorMessage.add("绗� " + lineNumber + " 琛岋細鏈煡閿欒锛屽拷鐣ュ鍏�"); - log.error(e.getMessage(), e); - } - } - } - } catch (Exception e) { - errorMessage.add("鍙戠敓寮傚父锛�" + e.getMessage()); - log.error(e.getMessage(), e); - } finally { - try { - file.getInputStream().close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - return ImportExcelUtil.imporReturnRes(errorLines,successLines,errorMessage); - } - - - - /** - * 鍔犺浇鍗曚釜鏁版嵁 鐢ㄤ簬鍥炴樉 - */ - @RequestMapping(value = "/loadOne", method = RequestMethod.GET) - public Result<SysCategory> loadOne(@RequestParam(name="field") String field,@RequestParam(name="val") String val) { - Result<SysCategory> result = new Result<SysCategory>(); - try { - //update-begin-author:taoyan date:2022-5-6 for: issues/3663 sql娉ㄥ叆闂 - boolean isClassField = SqlInjectionUtil.isClassField(field, SysCategory.class); - if (!isClassField) { - return Result.error("瀛楁鏃犳晥锛岃妫�鏌�!"); - } - //update-end-author:taoyan date:2022-5-6 for: issues/3663 sql娉ㄥ叆闂 - QueryWrapper<SysCategory> query = new QueryWrapper<SysCategory>(); - query.eq(field, val); - List<SysCategory> ls = this.sysCategoryService.list(query); - if(ls==null || ls.size()==0) { - result.setMessage("鏌ヨ鏃犳灉"); - result.setSuccess(false); - }else if(ls.size()>1) { - result.setMessage("鏌ヨ鏁版嵁寮傚父,["+field+"]瀛樺湪澶氫釜鍊�:"+val); - result.setSuccess(false); - }else { - result.setSuccess(true); - result.setResult(ls.get(0)); - } - } catch (Exception e) { - e.printStackTrace(); - result.setMessage(e.getMessage()); - result.setSuccess(false); - } - return result; - } - /** - * 鍔犺浇鑺傜偣鐨勫瓙鏁版嵁 + * 鍒嗙被缂栫爜0 + */ + private static final String CATEGORY_ROOT_CODE = "0"; + + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param sysCategory + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @GetMapping(value = "/rootList") + public Result<IPage<SysCategory>> queryPageList(SysCategory sysCategory, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + if (oConvertUtils.isEmpty(sysCategory.getPid())) { + sysCategory.setPid("0"); + } + Result<IPage<SysCategory>> result = new Result<IPage<SysCategory>>(); + + //--author:os_chengtgen---date:20190804 -----for: 鍒嗙被瀛楀吀椤甸潰鏄剧ず閿欒,issues:377--------start + //--author:liusq---date:20211119 -----for: 銆恦ue3銆戝垎绫诲瓧鍏搁〉闈㈡煡璇㈡潯浠堕厤缃�--------start + QueryWrapper<SysCategory> queryWrapper = QueryGenerator.initQueryWrapper(sysCategory, req.getParameterMap()); + String name = sysCategory.getName(); + String code = sysCategory.getCode(); + //QueryWrapper<SysCategory> queryWrapper = new QueryWrapper<SysCategory>(); + if (StringUtils.isBlank(name) && StringUtils.isBlank(code)) { + queryWrapper.eq("pid", sysCategory.getPid()); + } + //--author:liusq---date:20211119 -----for: 鍒嗙被瀛楀吀椤甸潰鏌ヨ鏉′欢閰嶇疆--------end + //--author:os_chengtgen---date:20190804 -----for:銆恦ue3銆� 鍒嗙被瀛楀吀椤甸潰鏄剧ず閿欒,issues:377--------end + + Page<SysCategory> page = new Page<SysCategory>(pageNo, pageSize); + IPage<SysCategory> pageList = sysCategoryService.page(page, queryWrapper); + result.setSuccess(true); + result.setResult(pageList); + return result; + } + + @GetMapping(value = "/childList") + public Result<List<SysCategory>> queryPageList(SysCategory sysCategory, HttpServletRequest req) { + Result<List<SysCategory>> result = new Result<List<SysCategory>>(); + QueryWrapper<SysCategory> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("pid", sysCategory.getPid()); + queryWrapper.orderByAsc("code"); + List<SysCategory> list = sysCategoryService.list(queryWrapper); + result.setSuccess(true); + result.setResult(list); + return result; + } + + + /** + * 娣诲姞 + * + * @param sysCategory + * @return + */ + @PostMapping(value = "/add") + public Result<SysCategory> add(@RequestBody SysCategory sysCategory) { + Result<SysCategory> result = new Result<SysCategory>(); + sysCategoryService.addSysCategory(sysCategory); + result.success("娣诲姞鎴愬姛锛�"); + return result; + } + + /** + * 缂栬緫 + * + * @param sysCategory + * @return + */ + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result<SysCategory> edit(@RequestBody SysCategory sysCategory) { + Result<SysCategory> result = new Result<SysCategory>(); + sysCategoryService.updateSysCategory(sysCategory); + result.success("淇敼鎴愬姛!"); + return result; + } + + /** + * 閫氳繃id鍒犻櫎 + * + * @param id + * @return + */ + @DeleteMapping(value = "/delete") + public Result<SysCategory> delete(@RequestParam(name = "id", required = true) String id) { + Result<SysCategory> result = new Result<SysCategory>(); + SysCategory sysCategory = sysCategoryService.getById(id); + if (sysCategory == null) { + result.error500("鏈壘鍒板搴斿疄浣�"); + } else { + this.sysCategoryService.deleteSysCategory(id); + result.success("鍒犻櫎鎴愬姛!"); + } + + return result; + } + + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @DeleteMapping(value = "/deleteBatch") + public Result<SysCategory> deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + Result<SysCategory> result = new Result<SysCategory>(); + if (ids == null || "".equals(ids.trim())) { + result.error500("鍙傛暟涓嶈瘑鍒紒"); + } else { + this.sysCategoryService.deleteSysCategory(ids); + result.success("鍒犻櫎鎴愬姛!"); + } + return result; + } + + /** + * 閫氳繃id鏌ヨ + * + * @param id + * @return + */ + @GetMapping(value = "/queryById") + public Result<SysCategory> queryById(@RequestParam(name = "id", required = true) String id) { + Result<SysCategory> result = new Result<SysCategory>(); + SysCategory sysCategory = sysCategoryService.getById(id); + if (sysCategory == null) { + result.error500("鏈壘鍒板搴斿疄浣�"); + } else { + result.setResult(sysCategory); + result.setSuccess(true); + } + return result; + } + + /** + * 瀵煎嚭excel + * + * @param request + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, SysCategory sysCategory) { + // Step.1 缁勮鏌ヨ鏉′欢鏌ヨ鏁版嵁 + List<SysCategory> pageList = sysCategoryService.listByParams(sysCategory); + // Step.2 AutoPoi 瀵煎嚭Excel + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + // 杩囨护閫変腑鏁版嵁 + String selections = request.getParameter("selections"); + if (oConvertUtils.isEmpty(selections)) { + mv.addObject(NormalExcelConstants.DATA_LIST, pageList); + } else { + List<String> selectionList = Arrays.asList(selections.split(",")); + List<SysCategory> exportList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); + mv.addObject(NormalExcelConstants.DATA_LIST, exportList); + } + //瀵煎嚭鏂囦欢鍚嶇О + mv.addObject(NormalExcelConstants.FILE_NAME, "鍒嗙被瀛楀吀鍒楄〃"); + mv.addObject(NormalExcelConstants.CLASS, SysCategory.class); + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("鍒嗙被瀛楀吀鍒楄〃鏁版嵁", "瀵煎嚭浜�:" + user.getRealname(), "瀵煎嚭淇℃伅")); + return mv; + } + + /** + * 閫氳繃excel瀵煎叆鏁版嵁 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) throws IOException { + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); + // 閿欒淇℃伅 + List<String> errorMessage = new ArrayList<>(); + for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { + // 鑾峰彇涓婁紶鏂囦欢瀵硅薄 + MultipartFile file = entity.getValue(); + ImportParams params = new ImportParams(); + params.setTitleRows(0); + params.setHeadRows(1); + params.setNeedSave(true); + try { + List<SysCategory> listSysCategorys = ExcelImportUtil.importExcel(file.getInputStream(), SysCategory.class, params); + //缁勮鏍戠粨鏋� + List<SysCategory> treeNodes = buildTree(listSysCategorys); + for (SysCategory sysCategory : treeNodes) { + sysCategoryService.deepAdd(sysCategory, errorMessage); + } + } catch (Exception e) { + log.error(e.getMessage(), e); + } finally { + try { + file.getInputStream().close(); + } catch (IOException ignored) { + } + } + } + return Result.ok("瀵煎叆鎴愬姛"); + } + + + /** + * 鍔犺浇鍗曚釜鏁版嵁 鐢ㄤ簬鍥炴樉 + */ + @RequestMapping(value = "/loadOne", method = RequestMethod.GET) + public Result<SysCategory> loadOne(@RequestParam(name = "field") String field, @RequestParam(name = "val") String val) { + Result<SysCategory> result = new Result<SysCategory>(); + try { + //update-begin-author:taoyan date:2022-5-6 for: issues/3663 sql娉ㄥ叆闂 + boolean isClassField = SqlInjectionUtil.isClassField(field, SysCategory.class); + if (!isClassField) { + return Result.error("瀛楁鏃犳晥锛岃妫�鏌�!"); + } + //update-end-author:taoyan date:2022-5-6 for: issues/3663 sql娉ㄥ叆闂 + QueryWrapper<SysCategory> query = new QueryWrapper<SysCategory>(); + query.eq(field, val); + List<SysCategory> ls = this.sysCategoryService.list(query); + if (ls == null || ls.size() == 0) { + result.setMessage("鏌ヨ鏃犳灉"); + result.setSuccess(false); + } else if (ls.size() > 1) { + result.setMessage("鏌ヨ鏁版嵁寮傚父,[" + field + "]瀛樺湪澶氫釜鍊�:" + val); + result.setSuccess(false); + } else { + result.setSuccess(true); + result.setResult(ls.get(0)); + } + } catch (Exception e) { + e.printStackTrace(); + result.setMessage(e.getMessage()); + result.setSuccess(false); + } + return result; + } + + /** + * 鍔犺浇鑺傜偣鐨勫瓙鏁版嵁 */ @RequestMapping(value = "/loadTreeChildren", method = RequestMethod.GET) - public Result<List<TreeSelectModel>> loadTreeChildren(@RequestParam(name="pid") String pid) { - Result<List<TreeSelectModel>> result = new Result<List<TreeSelectModel>>(); - try { - List<TreeSelectModel> ls = this.sysCategoryService.queryListByPid(pid); - result.setResult(ls); - result.setSuccess(true); - } catch (Exception e) { - e.printStackTrace(); - result.setMessage(e.getMessage()); - result.setSuccess(false); - } - return result; - } - + public Result<List<TreeSelectModel>> loadTreeChildren(@RequestParam(name = "pid") String pid) { + Result<List<TreeSelectModel>> result = new Result<List<TreeSelectModel>>(); + try { + List<TreeSelectModel> ls = this.sysCategoryService.queryListByPid(pid); + result.setResult(ls); + result.setSuccess(true); + } catch (Exception e) { + e.printStackTrace(); + result.setMessage(e.getMessage()); + result.setSuccess(false); + } + return result; + } + /** - * 鍔犺浇涓�绾ц妭鐐�/濡傛灉鏄悓姝� 鍒欐墍鏈夋暟鎹� + * 鍔犺浇涓�绾ц妭鐐�/濡傛灉鏄悓姝� 鍒欐墍鏈夋暟鎹� */ @RequestMapping(value = "/loadTreeRoot", method = RequestMethod.GET) - public Result<List<TreeSelectModel>> loadTreeRoot(@RequestParam(name="async") Boolean async,@RequestParam(name="pcode") String pcode) { - Result<List<TreeSelectModel>> result = new Result<List<TreeSelectModel>>(); - try { - List<TreeSelectModel> ls = this.sysCategoryService.queryListByCode(pcode); - if(!async) { - loadAllCategoryChildren(ls); - } - result.setResult(ls); - result.setSuccess(true); - } catch (Exception e) { - e.printStackTrace(); - result.setMessage(e.getMessage()); - result.setSuccess(false); - } - return result; - } - + public Result<List<TreeSelectModel>> loadTreeRoot(@RequestParam(name = "async") Boolean async, @RequestParam(name = "pcode") String pcode) { + Result<List<TreeSelectModel>> result = new Result<List<TreeSelectModel>>(); + try { + List<TreeSelectModel> ls = this.sysCategoryService.queryListByCode(pcode); + if (!async) { + loadAllCategoryChildren(ls); + } + result.setResult(ls); + result.setSuccess(true); + } catch (Exception e) { + e.printStackTrace(); + result.setMessage(e.getMessage()); + result.setSuccess(false); + } + return result; + } + /** - * 閫掑綊姹傚瓙鑺傜偣 鍚屾鍔犺浇鐢ㄥ埌 + * 閫掑綊姹傚瓙鑺傜偣 鍚屾鍔犺浇鐢ㄥ埌 */ - private void loadAllCategoryChildren(List<TreeSelectModel> ls) { - for (TreeSelectModel tsm : ls) { - List<TreeSelectModel> temp = this.sysCategoryService.queryListByPid(tsm.getKey()); - if(temp!=null && temp.size()>0) { - tsm.setChildren(temp); - loadAllCategoryChildren(temp); - } - } - } + private void loadAllCategoryChildren(List<TreeSelectModel> ls) { + for (TreeSelectModel tsm : ls) { + List<TreeSelectModel> temp = this.sysCategoryService.queryListByPid(tsm.getKey()); + if (temp != null && temp.size() > 0) { + tsm.setChildren(temp); + loadAllCategoryChildren(temp); + } + } + } - /** - * 鏍¢獙缂栫爜 - * @param pid - * @param code - * @return - */ - @GetMapping(value = "/checkCode") - public Result<?> checkCode(@RequestParam(name="pid",required = false) String pid,@RequestParam(name="code",required = false) String code) { - if(oConvertUtils.isEmpty(code)){ - return Result.error("閿欒,绫诲瀷缂栫爜涓虹┖!"); - } - if(oConvertUtils.isEmpty(pid)){ - return Result.ok(); - } - SysCategory parent = this.sysCategoryService.getById(pid); - if(code.startsWith(parent.getCode())){ - return Result.ok(); - }else{ - return Result.error("缂栫爜涓嶇鍚堣鑼�,椤讳互\""+parent.getCode()+"\"寮�澶�!"); - } - - } + /** + * 鏍¢獙缂栫爜 + * + * @param pid + * @param code + * @return + */ + @GetMapping(value = "/checkCode") + public Result<?> checkCode(@RequestParam(name = "pid", required = false) String pid, @RequestParam(name = "code", required = false) String code) { + if (oConvertUtils.isEmpty(code)) { + return Result.error("閿欒,鍒嗙被缂栫爜涓虹┖!"); + } + SysCategory parent = sysCategoryService.getById(pid); + String rootCode = null; + if (parent != null) { + rootCode = parent.getRootCode(); + } + SysCategory original = sysCategoryService.getByCodeAndRootCode(code, rootCode); + if (original != null) { + return Result.error("缂栫爜宸插瓨鍦�,璇烽噸鏂拌緭鍏�!"); + } + return Result.ok(); + } - /** - * 鍒嗙被瀛楀吀鏍戞帶浠� 鍔犺浇鑺傜偣 - * @param pid - * @param pcode - * @param condition - * @return - */ - @RequestMapping(value = "/loadTreeData", method = RequestMethod.GET) - public Result<List<TreeSelectModel>> loadDict(@RequestParam(name="pid",required = false) String pid,@RequestParam(name="pcode",required = false) String pcode, @RequestParam(name="condition",required = false) String condition) { - Result<List<TreeSelectModel>> result = new Result<List<TreeSelectModel>>(); - //pid濡傛灉浼犲�间簡 灏卞拷鐣code鐨勪綔鐢� - if(oConvertUtils.isEmpty(pid)){ - if(oConvertUtils.isEmpty(pcode)){ - result.setSuccess(false); - result.setMessage("鍔犺浇鍒嗙被瀛楀吀鏍戝弬鏁版湁璇�.[null]!"); - return result; - }else{ - if(ISysCategoryService.ROOT_PID_VALUE.equals(pcode)){ - pid = ISysCategoryService.ROOT_PID_VALUE; - }else{ - pid = this.sysCategoryService.queryIdByCode(pcode); - } - if(oConvertUtils.isEmpty(pid)){ - result.setSuccess(false); - result.setMessage("鍔犺浇鍒嗙被瀛楀吀鏍戝弬鏁版湁璇�.[code]!"); - return result; - } - } - } - Map<String, String> query = null; - if(oConvertUtils.isNotEmpty(condition)) { - query = JSON.parseObject(condition, Map.class); - } - List<TreeSelectModel> ls = sysCategoryService.queryListByPid(pid,query); - result.setSuccess(true); - result.setResult(ls); - return result; - } + /** + * 鍒嗙被瀛楀吀鏍戞帶浠� 鍔犺浇鑺傜偣 + * + * @param pid + * @param pcode + * @param condition + * @return + */ + @RequestMapping(value = "/loadTreeData", method = RequestMethod.GET) + public Result<List<TreeSelectModel>> loadDict(@RequestParam(name = "pid", required = false) String pid, @RequestParam(name = "pcode", required = false) String pcode, @RequestParam(name = "condition", required = false) String condition) { + Result<List<TreeSelectModel>> result = new Result<List<TreeSelectModel>>(); + //pid濡傛灉浼犲�间簡 灏卞拷鐣code鐨勪綔鐢� + if (oConvertUtils.isEmpty(pid)) { + if (oConvertUtils.isEmpty(pcode)) { + result.setSuccess(false); + result.setMessage("鍔犺浇鍒嗙被瀛楀吀鏍戝弬鏁版湁璇�.[null]!"); + return result; + } else { + if (ISysCategoryService.ROOT_PID_VALUE.equals(pcode)) { + pid = ISysCategoryService.ROOT_PID_VALUE; + } else { + pid = this.sysCategoryService.queryIdByCode(pcode); + } + if (oConvertUtils.isEmpty(pid)) { + result.setSuccess(false); + result.setMessage("鍔犺浇鍒嗙被瀛楀吀鏍戝弬鏁版湁璇�.[code]!"); + return result; + } + } + } + Map<String, String> query = null; + if (oConvertUtils.isNotEmpty(condition)) { + query = JSON.parseObject(condition, Map.class); + } + List<TreeSelectModel> ls = sysCategoryService.queryListByPid(pid, query); + result.setSuccess(true); + result.setResult(ls); + return result; + } - /** - * 鍒嗙被瀛楀吀鎺т欢鏁版嵁鍥炴樉[琛ㄥ崟椤甸潰] - * - * @param ids - * @param delNotExist 鏄惁绉婚櫎涓嶅瓨鍦ㄧ殑椤癸紝榛樿涓簍rue锛岃涓篺alse濡傛灉鏌愪釜key涓嶅瓨鍦ㄦ暟鎹簱涓紝鍒欑洿鎺ヨ繑鍥瀔ey鏈韩 - * @return - */ - @RequestMapping(value = "/loadDictItem", method = RequestMethod.GET) - public Result<List<String>> loadDictItem(@RequestParam(name = "ids") String ids, @RequestParam(name = "delNotExist", required = false, defaultValue = "true") boolean delNotExist) { - Result<List<String>> result = new Result<>(); - // 闈炵┖鍒ゆ柇 - if (StringUtils.isBlank(ids)) { - result.setSuccess(false); - result.setMessage("ids 涓嶈兘涓虹┖"); - return result; - } - // 鏌ヨ鏁版嵁 - List<String> textList = sysCategoryService.loadDictItem(ids, delNotExist); - result.setSuccess(true); - result.setResult(textList); - return result; - } + /** + * 鍒嗙被瀛楀吀鎺т欢鏁版嵁鍥炴樉[琛ㄥ崟椤甸潰] + * + * @param ids + * @param delNotExist 鏄惁绉婚櫎涓嶅瓨鍦ㄧ殑椤癸紝榛樿涓簍rue锛岃涓篺alse濡傛灉鏌愪釜key涓嶅瓨鍦ㄦ暟鎹簱涓紝鍒欑洿鎺ヨ繑鍥瀔ey鏈韩 + * @return + */ + @RequestMapping(value = "/loadDictItem", method = RequestMethod.GET) + public Result<List<String>> loadDictItem(@RequestParam(name = "ids") String ids, @RequestParam(name = "delNotExist", required = false, defaultValue = "true") boolean delNotExist) { + Result<List<String>> result = new Result<>(); + // 闈炵┖鍒ゆ柇 + if (StringUtils.isBlank(ids)) { + result.setSuccess(false); + result.setMessage("ids 涓嶈兘涓虹┖"); + return result; + } + // 鏌ヨ鏁版嵁 + List<String> textList = sysCategoryService.loadDictItem(ids, delNotExist); + result.setSuccess(true); + result.setResult(textList); + return result; + } - /** - * [鍒楄〃椤甸潰]鍔犺浇鍒嗙被瀛楀吀鏁版嵁 鐢ㄤ簬鍊肩殑鏇挎崲 - * @param code - * @return - */ - @RequestMapping(value = "/loadAllData", method = RequestMethod.GET) - public Result<List<DictModel>> loadAllData(@RequestParam(name="code",required = true) String code) { - Result<List<DictModel>> result = new Result<List<DictModel>>(); - LambdaQueryWrapper<SysCategory> query = new LambdaQueryWrapper<SysCategory>(); - if(oConvertUtils.isNotEmpty(code) && !CATEGORY_ROOT_CODE.equals(code)){ - query.likeRight(SysCategory::getCode,code); - } - List<SysCategory> list = this.sysCategoryService.list(query); - if(list==null || list.size()==0) { - result.setMessage("鏃犳暟鎹�,鍙傛暟鏈夎.[code]"); - result.setSuccess(false); - return result; - } - List<DictModel> rdList = new ArrayList<DictModel>(); - for (SysCategory c : list) { - rdList.add(new DictModel(c.getId(),c.getName())); - } - result.setSuccess(true); - result.setResult(rdList); - return result; - } + /** + * [鍒楄〃椤甸潰]鍔犺浇鍒嗙被瀛楀吀鏁版嵁 鐢ㄤ簬鍊肩殑鏇挎崲 + * + * @param code + * @return + */ + @RequestMapping(value = "/loadAllData", method = RequestMethod.GET) + public Result<List<DictModel>> loadAllData(@RequestParam(name = "code", required = true) String code) { + Result<List<DictModel>> result = new Result<List<DictModel>>(); + LambdaQueryWrapper<SysCategory> query = new LambdaQueryWrapper<SysCategory>(); + if (oConvertUtils.isNotEmpty(code) && !CATEGORY_ROOT_CODE.equals(code)) { + query.likeRight(SysCategory::getCode, code); + } + List<SysCategory> list = this.sysCategoryService.list(query); + if (list == null || list.size() == 0) { + result.setMessage("鏃犳暟鎹�,鍙傛暟鏈夎.[code]"); + result.setSuccess(false); + return result; + } + List<DictModel> rdList = new ArrayList<DictModel>(); + for (SysCategory c : list) { + rdList.add(new DictModel(c.getId(), c.getName())); + } + result.setSuccess(true); + result.setResult(rdList); + return result; + } - /** - * 鏍规嵁鐖剁骇id鎵归噺鏌ヨ瀛愯妭鐐� - * @param parentIds - * @return - */ - @GetMapping("/getChildListBatch") - public Result getChildListBatch(@RequestParam("parentIds") String parentIds) { - try { - QueryWrapper<SysCategory> queryWrapper = new QueryWrapper<>(); - List<String> parentIdList = Arrays.asList(parentIds.split(",")); - queryWrapper.in("pid", parentIdList); - List<SysCategory> list = sysCategoryService.list(queryWrapper); - IPage<SysCategory> pageList = new Page<>(1, 10, list.size()); - pageList.setRecords(list); - return Result.OK(pageList); - } catch (Exception e) { - log.error(e.getMessage(), e); - return Result.error("鎵归噺鏌ヨ瀛愯妭鐐瑰け璐ワ細" + e.getMessage()); - } - } + /** + * 鏍规嵁鐖剁骇id鎵归噺鏌ヨ瀛愯妭鐐� + * + * @param parentIds + * @return + */ + @GetMapping("/getChildListBatch") + public Result getChildListBatch(@RequestParam("parentIds") String parentIds) { + try { + QueryWrapper<SysCategory> queryWrapper = new QueryWrapper<>(); + List<String> parentIdList = Arrays.asList(parentIds.split(",")); + queryWrapper.in("pid", parentIdList); + List<SysCategory> list = sysCategoryService.list(queryWrapper); + IPage<SysCategory> pageList = new Page<>(1, 10, list.size()); + pageList.setRecords(list); + return Result.OK(pageList); + } catch (Exception e) { + log.error(e.getMessage(), e); + return Result.error("鎵归噺鏌ヨ瀛愯妭鐐瑰け璐ワ細" + e.getMessage()); + } + } + + + /** + * 缁勮 鏍戝瀷缁撴瀯 + * + * @param list + * @return + */ + private List<SysCategory> buildTree(List<SysCategory> list) { + //鏍硅妭鐐� + List<SysCategory> rootList = new ArrayList<>(); + //鑺傜偣 Map + Map<String, SysCategory> nodeMap = list.stream().collect(Collectors.toMap(SysCategory::getCode, node -> node)); + + for (SysCategory node : list) { + if (StringUtils.isBlank(node.getParentCode()) || ISysCategoryService.ROOT_PID_VALUE.equals(node.getParentCode())) { + rootList.add(node); + } else { + SysCategory parent = nodeMap.get(node.getParentCode()); + if (parent == null) { + throw new JeecgBootException("鐖惰妭鐐逛笉瀛樺湪锛�" + node.getParentCode()); + } + parent.addChild(node); + } + } + + return rootList; + } } -- Gitblit v1.9.3