feat: 数据字典(一级),功能完善

This commit is contained in:
2023-05-05 16:15:00 +08:00
parent f4bf2a46e2
commit 15a5a1d386
6 changed files with 108 additions and 21 deletions
@@ -6,7 +6,11 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/** /**
* *
@@ -15,6 +19,9 @@ import lombok.Data;
*/ */
@TableName(value ="ts_dict") @TableName(value ="ts_dict")
@Data @Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class DictEntity implements Serializable { public class DictEntity implements Serializable {
/** /**
* 主键id * 主键id
@@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid;
/** /**
@@ -30,7 +31,7 @@ public class DictController {
*/ */
@ApiOperation(value = "分页获取所有数据字典") @ApiOperation(value = "分页获取所有数据字典")
@GetMapping("/page") @GetMapping("/page")
public ResponseMessage page(@RequestBody DictQueryVo dictQueryVo) { public ResponseMessage page(@Valid DictQueryVo dictQueryVo) {
return dictService.list(dictQueryVo); return dictService.list(dictQueryVo);
} }
@@ -38,7 +39,7 @@ public class DictController {
* 修改一个字典 * 修改一个字典
*/ */
@ApiOperation(value = "修改数据字典") @ApiOperation(value = "修改数据字典")
@PostMapping("/edit") @PutMapping("/edit")
public ResponseMessage edit(@RequestBody DictVo dictVo) { public ResponseMessage edit(@RequestBody DictVo dictVo) {
return dictService.edit(dictVo); return dictService.edit(dictVo);
} }
@@ -47,7 +48,7 @@ public class DictController {
* 删除一个字典 * 删除一个字典
*/ */
@ApiOperation(value = "删除数据字典") @ApiOperation(value = "删除数据字典")
@PostMapping("/{id}") @DeleteMapping("/{id}")
public ResponseMessage delete(@PathVariable String id) { public ResponseMessage delete(@PathVariable String id) {
return dictService.delete(id); return dictService.delete(id);
} }
@@ -58,7 +59,7 @@ public class DictController {
@ApiOperation(value = "新增数据字典") @ApiOperation(value = "新增数据字典")
@PostMapping("/add") @PostMapping("/add")
public ResponseMessage add(@RequestBody DictVo dictVo) { public ResponseMessage add(@RequestBody DictVo dictVo) {
return dictService.add(id); return dictService.add(dictVo);
} }
@@ -2,10 +2,12 @@ package com.adc.da.sys.service;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.adc.da.eo.DictEntity; import com.adc.da.eo.DictEntity;
import com.adc.da.sys.util.BeanCopyUtils;
import com.adc.da.sys.vo.DictQueryVo; import com.adc.da.sys.vo.DictQueryVo;
import com.adc.da.sys.vo.DictVo; import com.adc.da.sys.vo.DictVo;
import com.adc.da.util.http.ResponseMessage; import com.adc.da.util.http.ResponseMessage;
import com.adc.da.util.http.Result; import com.adc.da.util.http.Result;
import com.adc.da.util.utils.UUID;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -17,18 +19,19 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* @author ThinkBook * @author ThinkBook
* @description 针对表【ts_dict】的数据库操作Service实现 * @description 针对表【ts_dict】的数据库操作Service实现
* @createDate 2023-05-05 10:28:12 * @createDate 2023-05-05 10:28:12
*/ */
@Service @Service
@Slf4j @Slf4j
public class DictServiceImpl extends ServiceImpl<DictDao, DictEntity> public class DictServiceImpl extends ServiceImpl<DictDao, DictEntity>
implements IDictService { implements IDictService {
@Resource @Resource
private DictDao dictDao; private DictDao dictDao;
@@ -37,27 +40,22 @@ public class DictServiceImpl extends ServiceImpl<DictDao, DictEntity>
public ResponseMessage list(DictQueryVo dictQueryVo) { public ResponseMessage list(DictQueryVo dictQueryVo) {
LambdaQueryWrapper<DictEntity> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DictEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(DictEntity::getDelFlag, 0); wrapper.eq(DictEntity::getDelFlag, 0);
IPage<DictEntity> page = new Page<>(); IPage<DictEntity> page = new Page<>(dictQueryVo.getPageNo(), dictQueryVo.getPageSize());
page.setCurrent(dictQueryVo.getPageNo());
page.setSize(dictQueryVo.getPageSize());
page(page, wrapper); page(page, wrapper);
IPage<DictVo> dictVoPage = new Page<>();
BeanUtil.copyProperties(page, dictVoPage);
List<DictVo> dictVos = page.getRecords().stream().map(dict -> { IPage<DictVo> returnPage = new Page<>();
DictVo dictVo = new DictVo(); List<DictVo> dictVos = BeanCopyUtils.copyBeanList(page.getRecords(), DictVo.class);
BeanUtil.copyProperties(dict, dictVo);
return dictVo;
}).collect(Collectors.toList());
dictVoPage.setRecords(dictVos); returnPage.setRecords(dictVos);
return Result.success(dictVoPage); return Result.success(returnPage);
} }
@Override @Override
public ResponseMessage edit(DictVo dictVo) { public ResponseMessage edit(DictVo dictVo) {
try { try {
DictEntity dictEntity = new DictEntity(); DictEntity dictEntity = new DictEntity();
//字典编码不可变
dictVo.setDicCode(null);
BeanUtil.copyProperties(dictVo, dictEntity); BeanUtil.copyProperties(dictVo, dictEntity);
dictDao.updateById(dictEntity); dictDao.updateById(dictEntity);
log.info("编辑数据字典{}成功", dictEntity.getDicName()); log.info("编辑数据字典{}成功", dictEntity.getDicName());
@@ -70,7 +68,13 @@ public class DictServiceImpl extends ServiceImpl<DictDao, DictEntity>
@Override @Override
public ResponseMessage delete(String id) { public ResponseMessage delete(String id) {
DictEntity entity = getById(id);
if (entity == null) {
return Result.error("字典不存在");
}
DictEntity dictEntity = new DictEntity(); DictEntity dictEntity = new DictEntity();
dictEntity.setId(id);
dictEntity.setDelFlag(1); dictEntity.setDelFlag(1);
if (updateById(dictEntity)) { if (updateById(dictEntity)) {
return Result.success("删除成功"); return Result.success("删除成功");
@@ -78,6 +82,31 @@ public class DictServiceImpl extends ServiceImpl<DictDao, DictEntity>
return Result.error("删除失败"); return Result.error("删除失败");
} }
@Override
public ResponseMessage add(DictVo dictVo) {
//判断字典名是否重复
Integer dicNameCount = query().eq("dic_name", dictVo.getDicName()).count();
if (dicNameCount > 0) {
return Result.error("字典名重复");
}
//判断字典编码是否重复
Integer dicCodeCount = query().eq("dic_code", dictVo.getDicCode()).count();
if (dicCodeCount > 0) {
return Result.error("字典编码重复");
}
try {
DictEntity dictEntity = BeanCopyUtils.copyBean(dictVo, DictEntity.class);
dictEntity.setId(UUID.randomUUID10())
.setCreateTime(new Date())
.setDelFlag(0);
save(dictEntity);
return Result.success("新增成功");
} catch (Exception e) {
log.info("新增字典失败", e);
}
return Result.error("新增失败");
}
} }
@@ -1,9 +1,11 @@
package com.adc.da.sys.service.iservice; package com.adc.da.sys.service.iservice;
import com.adc.da.eo.DictEntity;
import com.adc.da.sys.vo.DictQueryVo; import com.adc.da.sys.vo.DictQueryVo;
import com.adc.da.sys.vo.DictVo; import com.adc.da.sys.vo.DictVo;
import com.adc.da.util.http.ResponseMessage; import com.adc.da.util.http.ResponseMessage;
import com.baomidou.mybatisplus.extension.service.IService;
/** /**
@@ -35,4 +37,11 @@ public interface IDictService extends IService<DictEntity> {
* @return * @return
*/ */
ResponseMessage delete(String id); ResponseMessage delete(String id);
/**
* 新增字典
* @param dictVo
* @return
*/
ResponseMessage add(DictVo dictVo);
} }
@@ -0,0 +1,36 @@
package com.adc.da.sys.util;
import org.springframework.beans.BeanUtils;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author Mzaxd
* @since 2022-11-22 15:36
*/
public class BeanCopyUtils {
private BeanCopyUtils() {
}
public static <V> V copyBean(Object source, Class<V> clazz){
V result = null;
//创建目标对象
try {
result = clazz.newInstance();
//实现属性copy
BeanUtils.copyProperties(source, result);
} catch (Exception e) {
e.printStackTrace();
}
//返回结果
return result;
}
public static <O,V> List<V> copyBeanList(List<O> list, Class<V> clazz) {
return list.stream()
.map(o -> copyBean(o, clazz))
.collect(Collectors.toList());
}
}
@@ -2,6 +2,9 @@ package com.adc.da.sys.vo;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
/** /**
* @author CaiHaohan * @author CaiHaohan
*/ */
@@ -11,10 +14,12 @@ public class DictQueryVo {
/** /**
* 页数 * 页数
*/ */
@Min(1)
private int pageNo; private int pageNo;
/** /**
* 每页数量 * 每页数量
*/ */
@NotNull
private int pageSize; private int pageSize;
} }