添加字典关联相关功能

release_1.0.0
xueqingkun 8 months ago
parent 6c34611600
commit c2f14f42ff

@ -0,0 +1,71 @@
package com.supervision.knowsub.controller.system;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.supervision.knowsub.model.SystemDic;
import com.supervision.knowsub.model.SystemDicData;
import com.supervision.knowsub.service.DicManageService;
import com.supervision.knowsub.vo.dic.DicDataReqVo;
import com.supervision.knowsub.vo.dic.DicReqVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Tag(name = "字典管理")
@RestController
@RequestMapping("/dicManage")
@RequiredArgsConstructor
public class DicManageController {
private final DicManageService dicManageService;
@Operation(summary = "增加字典信息")
@PostMapping("/saveDic")
public String saveDic(@RequestBody DicReqVo dicReqVo) {
return dicManageService.saveDic(dicReqVo);
}
@Operation(summary = "修改字典信息")
@PostMapping("/updateDic")
public void updateDic(@RequestBody DicReqVo dicReqVo) {
dicManageService.updateDic(dicReqVo);
}
@Operation(summary = "删除字典信息")
@DeleteMapping("/delete")
public Boolean deleteDic(@Parameter(name = "id") @RequestParam(name="id") String id) {
return dicManageService.deleteDic(id);
}
@Operation(summary = "分页查询字典信息列表")
@GetMapping("/list")
public IPage<SystemDic> listDic(@Parameter(name = "dicName",description = "字典名称") @RequestParam(required = false) String dicName,
@Parameter(name = "dicCode",description = "字典编码") @RequestParam(required = false) String dicCode,
@Parameter(name = "pageNum",description = "页码") @RequestParam(defaultValue = "1") Integer pageNum,
@Parameter(name = "pageSize",description = "每页大小") @RequestParam(defaultValue = "10") Integer pageSize) {
return dicManageService.listDic(dicName,dicCode,pageNum,pageSize);
}
@Operation(summary = "保存字典值配置信息")
@PostMapping("/saveDicData")
public String saveDicData(@RequestParam(name = "dicId") String dicId, @RequestBody List<DicDataReqVo> dicDataReqVoList) {
return dicManageService.saveDicData(dicId,dicDataReqVoList);
}
@Operation(summary = "查询字典配置信息列表")
@GetMapping("/queryDicDate")
public List<SystemDicData> queryDicDate(@RequestParam(name = "dicId") String dicId) {
return dicManageService.queryDicDate(dicId);
}
}

@ -0,0 +1,24 @@
package com.supervision.knowsub.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.supervision.knowsub.model.SystemDic;
import com.supervision.knowsub.model.SystemDicData;
import com.supervision.knowsub.vo.dept.DeptInfoResVo;
import com.supervision.knowsub.vo.dic.DicDataReqVo;
import com.supervision.knowsub.vo.dic.DicReqVo;
import java.util.List;
public interface DicManageService {
String saveDic(DicReqVo dicReqVo);
void updateDic(DicReqVo dicReqVo);
Boolean deleteDic(String id);
IPage<SystemDic> listDic(String dicName, String dicCode, Integer pageNum, Integer pageSize);
String saveDicData(String dicId, List<DicDataReqVo> dicDataReqVoList);
List<SystemDicData> queryDicDate(String dicId);
}

@ -0,0 +1,122 @@
package com.supervision.knowsub.service.impl;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.knowsub.model.SystemDic;
import com.supervision.knowsub.model.SystemDicData;
import com.supervision.knowsub.service.DicManageService;
import com.supervision.knowsub.service.SystemDicDataService;
import com.supervision.knowsub.service.SystemDicService;
import com.supervision.knowsub.vo.dic.DicDataReqVo;
import com.supervision.knowsub.vo.dic.DicReqVo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
@RequiredArgsConstructor
public class DicManageServiceImpl implements DicManageService {
private final SystemDicService systemDicService;
private final SystemDicDataService systemDicDataService;
@Override
@Transactional(rollbackFor = Exception.class)
public String saveDic(DicReqVo dicReqVo) {
Assert.notEmpty(dicReqVo.getDicName(), "字典名称不能为空");
Assert.notEmpty(dicReqVo.getDicCode(), "字典编码不能为空");
Long count = systemDicService.lambdaQuery().eq(SystemDic::getDicCode, dicReqVo.getDicCode()).count();
Assert.isTrue(count == 0, "字典编码已存在");
SystemDic systemDic = new SystemDic();
systemDic.setDicName(dicReqVo.getDicName());
systemDic.setDicCode(dicReqVo.getDicCode());
systemDic.setRemark(dicReqVo.getRemark());
systemDicService.save(systemDic);
return systemDic.getId();
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateDic(DicReqVo dicReqVo) {
Assert.notEmpty(dicReqVo.getId(), "字典id不能为空");
Assert.notEmpty(dicReqVo.getDicName(), "字典名称不能为空");
Assert.notEmpty(dicReqVo.getDicCode(), "字典编码不能为空");
SystemDic dbDic = systemDicService.getById(dicReqVo.getId());
Assert.notNull(dbDic, "字典不存在");
if (!StrUtil.equals(dbDic.getDicCode(), dicReqVo.getDicCode())){
// 判断字典编码是否重复
Long count = systemDicService.lambdaQuery().eq(SystemDic::getDicCode, dicReqVo.getDicCode()).count();
Assert.isTrue(count == 0, "字典编码已存在");
}
// 更新数据
systemDicService.lambdaUpdate().set(SystemDic::getDicName, dicReqVo.getDicName())
.set(SystemDic::getDicCode, dicReqVo.getDicCode())
.set(SystemDic::getRemark, dicReqVo.getRemark())
.eq(SystemDic::getId, dicReqVo.getId()).update();
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteDic(String id) {
Assert.notEmpty(id, "字典id不能为空");
boolean success = systemDicService.removeById(id);
if (success){
systemDicDataService.lambdaUpdate().eq(SystemDicData::getDicId, id).remove();
}
return success;
}
@Override
public IPage<SystemDic> listDic(String dicName, String dicCode, Integer pageNum, Integer pageSize) {
return systemDicService.lambdaQuery()
.like(StrUtil.isNotEmpty(dicName), SystemDic::getDicName, dicName)
.eq(StrUtil.isNotEmpty(dicCode), SystemDic::getDicCode, dicCode)
.page(new Page<>(pageNum, pageSize));
}
@Override
@Transactional(rollbackFor = Exception.class)
public String saveDicData(String dicId, List<DicDataReqVo> dicDataReqVoList) {
Assert.notEmpty(dicId, "字典id不能为空");
//清除原本的数据
systemDicDataService.lambdaUpdate().eq(SystemDicData::getDicId, dicId).remove();
List<SystemDicData> list = dicDataReqVoList.stream().map(dicDataReqVo -> {
SystemDicData systemDicData = new SystemDicData();
systemDicData.setDicId(dicId);
systemDicData.setDicLabel(dicDataReqVo.getDicLabel());
systemDicData.setDicValue(dicDataReqVo.getDicValue());
systemDicData.setDicSort(ObjUtil.isNull(dicDataReqVo.getDicSort()) ? 0 : dicDataReqVo.getDicSort());
return systemDicData;
}).toList();
systemDicDataService.saveBatch(list);
return dicId;
}
@Override
public List<SystemDicData> queryDicDate(String dicId) {
Assert.notEmpty(dicId, "字典id不能为空");
return systemDicDataService.lambdaQuery().eq(SystemDicData::getDicId, dicId).orderBy(true,true, SystemDicData::getDicSort).list();
}
}

@ -0,0 +1,17 @@
package com.supervision.knowsub.vo.dic;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class DicDataReqVo {
@Schema(description = "字典标签")
private String dicLabel;
@Schema(description = "字典值")
private String dicValue;
@Schema(description = "排序")
private Integer dicSort;
}

@ -0,0 +1,20 @@
package com.supervision.knowsub.vo.dic;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class DicReqVo {
@Schema(description = "字典id")
private String id;
@Schema(description = "字典编码")
private String dicCode;
@Schema(description = "字典名称")
private String dicName;
@Schema(description = "备注")
private String remark;
}
Loading…
Cancel
Save