尚医通-数据字典业务
service模块\service_cmn子模块
数据字典就是管理系统常用的分类数据或者一些固定数据,例如:省市区三级联动数据、民族数据、行业数据、学历数据等,由于该系统大量使用这种数据,所以我们要做一个数据管理方便管理系统数据,一般系统基本都会做数据管理。
数据字典是树形展示,由于数据众多,我们使用“树形数据与懒加载”的方式展现数据列表,其他就是对数据的新增、修改与删除操作。
操作的是yygh_cmn库下的dict表
页面效果
表设计
数据字典01
位置:
controller包\DictController.java
01 根据数据id查询子数据列表
前端请求:
1
| @GetMapping("findChildData/{id}")
|
后端处理:
1 2 3 4
| public Result findChildData(@PathVariable Long id) { List<Dict> list = dictService.findChlidData(id); return Result.ok(list); }
|
findChlidData方法具体实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public List<Dict> findChlidData(Long id) { QueryWrapper<Dict> wrapper = new QueryWrapper<>(); wrapper.eq("parent_id",id); List<Dict> dictList = baseMapper.selectList(wrapper); for (Dict dict:dictList) { Long dictId = dict.getId(); boolean isChild = this.isChildren(dictId); dict.setHasChildren(isChild); } return dictList; }
|
isChildren方法具体实现,判断id下面是否有子节点
1 2 3 4 5 6 7
| private boolean isChildren(Long id) { QueryWrapper<Dict> wrapper = new QueryWrapper<>(); wrapper.eq("parent_id",id); Integer count = baseMapper.selectCount(wrapper); return count>0; }
|
02 导出数据字典接口
前端请求:
1
| @GetMapping("exportData")
|
后端处理:
1 2 3
| public void exportDict(HttpServletResponse response) { dictService.exportDictData(response); }
|
exportDictData方法具体实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public void exportDictData(HttpServletResponse response) { response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); String fileName = "dict"; response.setHeader("Content-disposition", "attachment;filename="+ fileName + ".xlsx"); List<Dict> dictList = baseMapper.selectList(null); List<DictEeVo> dictVoList = new ArrayList<>(); for(Dict dict:dictList) { DictEeVo dictEeVo = new DictEeVo(); BeanUtils.copyProperties(dict,dictEeVo); dictVoList.add(dictEeVo); } try { EasyExcel.write(response.getOutputStream(), DictEeVo.class).sheet("dict") .doWrite(dictVoList); } catch (IOException e) { e.printStackTrace(); } }
|
03 导入数据字典
前端请求:
1
| @PostMapping("importData")
|
后端处理:
1 2 3 4
| public Result importDict(MultipartFile file) { dictService.importDictData(file); return Result.ok(); }
|
importDictData方法的具体实现
1 2 3 4 5 6 7 8
| public void importDictData(MultipartFile file) { try { EasyExcel.read(file.getInputStream(),DictEeVo.class, new DictListener(baseMapper)).sheet().doRead(); } catch (IOException e) { e.printStackTrace(); } }
|
数据字典02
位置:
controller包\DictController.java
01 根据dictcode和value查询单个字典
前端请求:
1
| @GetMapping("getName/{dictCode}/{value}")
|
后端处理:
1 2 3 4 5
| public String getName(@PathVariable String dictCode, @PathVariable String value) { String dictName = dictService.getDictName(dictCode,value); return dictName; }
|
getDictName方法具体实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public String getDictName(String dictCode, String value) { if(StringUtils.isEmpty(dictCode)) { QueryWrapper<Dict> wrapper = new QueryWrapper<>(); wrapper.eq("value",value); Dict dict = baseMapper.selectOne(wrapper); return dict.getName(); } else { Dict codeDict = this.getDictByDictCode(dictCode); Long parent_id = codeDict.getId(); Dict finalDict = baseMapper.selectOne(new QueryWrapper<Dict>() .eq("parent_id", parent_id) .eq("value", value)); return finalDict.getName(); } }
|
02 根据value查询查询单个字典
前端请求:
1
| @GetMapping("getName/{value}")
|
后端处理:
1 2 3 4
| public String getName(@PathVariable String value) { String dictName = dictService.getDictName("",value); return dictName; }
|
03 根据dictCode获取下级节点
前端请求:
1
| @GetMapping("findByDictCode/{dictCode}")
|
后端处理:
1 2 3 4
| public Result findByDictCode(@PathVariable String dictCode) { List<Dict> list = dictService.findByDictCode(dictCode); return Result.ok(list); }
|
findByDictCode方法具体实现
1 2 3 4 5 6 7
| public List<Dict> findByDictCode(String dictCode) { Dict dict = this.getDictByDictCode(dictCode); List<Dict> chlidData = this.findChlidData(dict.getId()); return chlidData; }
|
getDictByDictCode方法具体实现
1 2 3 4 5 6
| private Dict getDictByDictCode(String dictCode) { QueryWrapper<Dict> wrapper = new QueryWrapper<>(); wrapper.eq("dict_code",dictCode); Dict codeDict = baseMapper.selectOne(wrapper); return codeDict; }
|
findChlidData方法具体实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public List<Dict> findChlidData(Long id) { QueryWrapper<Dict> wrapper = new QueryWrapper<>(); wrapper.eq("parent_id",id); List<Dict> dictList = baseMapper.selectList(wrapper); for (Dict dict:dictList) { Long dictId = dict.getId(); boolean isChild = this.isChildren(dictId); dict.setHasChildren(isChild); } return dictList; }
|