尚医通-数据字典业务

尚医通-数据字典业务

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对象用于mybatisplus操作
QueryWrapper<Dict> wrapper = new QueryWrapper<>();
wrapper.eq("parent_id",id);
//调用封装好的方法,这里根据父类id查询到子列表
List<Dict> dictList = baseMapper.selectList(wrapper);
//向list集合每个dict对象中设置hasChildren
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);
// 1>0
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);
//Dict -- DictEeVo
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) {
//如果dictCode为空,直接根据value查询
if(StringUtils.isEmpty(dictCode)) {
QueryWrapper<Dict> wrapper = new QueryWrapper<>();
wrapper.eq("value",value);
Dict dict = baseMapper.selectOne(wrapper);
return dict.getName();
} else {
//如果dictCode不为空,根据dictCode和value查询
Dict codeDict = this.getDictByDictCode(dictCode);
Long parent_id = codeDict.getId();
//根据parent_id和value进行查询
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) {
//根据dictcode获取对应id
Dict dict = this.getDictByDictCode(dictCode);
//根据id获取子节点
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对象用于mybatisplus操作
QueryWrapper<Dict> wrapper = new QueryWrapper<>();
wrapper.eq("parent_id",id);
//调用封装好的方法,这里根据父类id查询到子列表
List<Dict> dictList = baseMapper.selectList(wrapper);
//向list集合每个dict对象中设置hasChildren
for (Dict dict:dictList) {
Long dictId = dict.getId();
//判断下面还有没有子节点
boolean isChild = this.isChildren(dictId);
dict.setHasChildren(isChild);
}
return dictList;
}

尚医通-数据字典业务
https://yztldxdz.top/2022/10/09/尚医通-数据字典业务/
发布于
2022年10月9日
许可协议