feat:数据字典(二级)
This commit is contained in:
@@ -10,6 +10,7 @@ import java.util.Date;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -20,6 +21,7 @@ import lombok.NoArgsConstructor;
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Accessors(chain = true)
|
||||
public class DictItemEntity implements Serializable {
|
||||
/**
|
||||
* 主键id
|
||||
|
||||
@@ -1,13 +1,63 @@
|
||||
package com.adc.da.sys.controller;
|
||||
|
||||
import com.adc.da.sys.service.iservice.IDictItemService;
|
||||
import com.adc.da.sys.vo.DictItemQueryVo;
|
||||
import com.adc.da.sys.vo.DictItemVo;
|
||||
import com.adc.da.util.http.ResponseMessage;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author CaiHaohan
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/${restPath}/sys/dictItem")
|
||||
@Api(tags = {"Sys-数据字典配置项设置"})
|
||||
@Api(tags = {"Sys-数据字典记录"})
|
||||
public class DictItemController {
|
||||
|
||||
@Resource
|
||||
private IDictItemService dictItemService;
|
||||
|
||||
/**
|
||||
* 分页获取所有数据字典记录
|
||||
*/
|
||||
@ApiOperation(value = "分页获取所有数据字典记录")
|
||||
@GetMapping("/page")
|
||||
public ResponseMessage pageById(@Valid DictItemQueryVo dictItemQueryVo) {
|
||||
return dictItemService.pageById(dictItemQueryVo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改数据字典记录
|
||||
*/
|
||||
@ApiOperation(value = "修改数据字典记录")
|
||||
@PutMapping("/edit")
|
||||
public ResponseMessage edit(@RequestBody DictItemVo dictItemVo) {
|
||||
return dictItemService.edit(dictItemVo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除数据字典记录
|
||||
*/
|
||||
@ApiOperation(value = "删除数据字典记录")
|
||||
@DeleteMapping("/delete")
|
||||
public ResponseMessage delete(@RequestParam List<String> ids) {
|
||||
return dictItemService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增数据字典记录
|
||||
*/
|
||||
@ApiOperation(value = "新增数据字典记录")
|
||||
@PostMapping("/add")
|
||||
public ResponseMessage add(@RequestBody DictItemVo dictItemVo) {
|
||||
return dictItemService.add(dictItemVo);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,30 @@
|
||||
package com.adc.da.sys.service;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.adc.da.eo.DictEntity;
|
||||
import com.adc.da.eo.DictItemEntity;
|
||||
import com.adc.da.sys.dao.mysql.DictDao;
|
||||
import com.adc.da.sys.service.iservice.IDictItemService;
|
||||
import com.adc.da.sys.util.BeanCopyUtils;
|
||||
import com.adc.da.sys.vo.DictItemQueryVo;
|
||||
import com.adc.da.sys.vo.DictItemVo;
|
||||
import com.adc.da.util.http.ResponseMessage;
|
||||
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.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
import com.adc.da.sys.dao.mysql.DictItemDao;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author ThinkBook
|
||||
@@ -13,9 +32,109 @@ import org.springframework.stereotype.Service;
|
||||
* @createDate 2023-05-05 10:28:25
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class DictItemServiceImpl extends ServiceImpl<DictItemDao, DictItemEntity>
|
||||
implements IDictItemService {
|
||||
|
||||
@Resource
|
||||
private DictItemDao dictItemDao;
|
||||
|
||||
@Resource
|
||||
private DictDao dictDao;
|
||||
|
||||
@Override
|
||||
public ResponseMessage pageById(DictItemQueryVo dictItemQueryVo) {
|
||||
LambdaQueryWrapper<DictItemEntity> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(DictItemEntity::getDelFlag, 0);
|
||||
wrapper.eq(DictItemEntity::getTypeId, dictItemQueryVo.getDicId());
|
||||
wrapper.orderByAsc(DictItemEntity::getItemOrder);
|
||||
|
||||
IPage<DictItemEntity> page = new Page<>(dictItemQueryVo.getPageNo(), dictItemQueryVo.getPageSize());
|
||||
page(page, wrapper);
|
||||
|
||||
Page returnPage = BeanCopyUtils.copyBean(page, Page.class);
|
||||
List<DictItemVo> dictItemVos = BeanCopyUtils.copyBeanList(page.getRecords(), DictItemVo.class);
|
||||
|
||||
returnPage.setRecords(dictItemVos);
|
||||
return Result.success(returnPage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResponseMessage edit(DictItemVo dictItemVo) {
|
||||
try {
|
||||
DictItemEntity dictItemEntity = new DictItemEntity();
|
||||
BeanUtil.copyProperties(dictItemVo, dictItemEntity);
|
||||
dictItemDao.updateById(dictItemEntity);
|
||||
log.info("编辑id为{}数据字典值成功", dictItemEntity.getId());
|
||||
return Result.success("编辑成功");
|
||||
} catch (Exception e) {
|
||||
log.info("编辑数据字典值失败", e);
|
||||
}
|
||||
return Result.error("编辑失败");
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public ResponseMessage delete(List<String> ids) {
|
||||
List<DictItemEntity> dictEntities = new ArrayList<>();
|
||||
ids.forEach(id -> {
|
||||
DictItemEntity dictEntity = new DictItemEntity();
|
||||
dictEntity.setId(id);
|
||||
dictEntity.setUpdateTime(new Date());
|
||||
dictEntity.setDelFlag(1);
|
||||
dictEntities.add(dictEntity);
|
||||
});
|
||||
updateBatchById(dictEntities);
|
||||
return Result.success("删除成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResponseMessage add(DictItemVo dictItemVo) {
|
||||
//判断上级字典id是否存在
|
||||
if (StrUtil.isBlank(dictItemVo.getDicId())) {
|
||||
return Result.error("上级字典id无效");
|
||||
}
|
||||
//判断上级字典id是否有效
|
||||
DictEntity dictEntity = dictDao.selectById(dictItemVo.getDicId());
|
||||
if (dictEntity == null) {
|
||||
return Result.error("上级字典id无效");
|
||||
}
|
||||
|
||||
try {
|
||||
DictItemEntity dictItemEntity = BeanCopyUtils.copyBean(dictItemVo, DictItemEntity.class);
|
||||
dictItemEntity.setId(UUID.randomUUID10())
|
||||
.setTypeId(dictItemVo.getDicId())
|
||||
.setCreateTime(new Date())
|
||||
.setUpdateTime(new Date())
|
||||
.setDelFlag(0);
|
||||
|
||||
//求已存在选项排序的最大值
|
||||
LambdaQueryWrapper<DictItemEntity> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(DictItemEntity::getDelFlag, 0);
|
||||
wrapper.eq(DictItemEntity::getTypeId, dictItemVo.getDicId());
|
||||
List<DictItemEntity> dictItemEntities = dictItemDao.selectList(wrapper);
|
||||
Double maxOrder = dictItemEntities.stream().map(DictItemEntity::getItemOrder)
|
||||
.sorted(Comparator.reverseOrder())
|
||||
.collect(Collectors.toList())
|
||||
.stream().findFirst().orElse(null);
|
||||
|
||||
//设置排序值
|
||||
if (dictItemVo.getItemOrder() == null) {
|
||||
//如果目前没有最大值(没有选项)
|
||||
if (maxOrder == null) {
|
||||
dictItemEntity.setItemOrder(1.0);
|
||||
} else {
|
||||
//设置为最后一个
|
||||
dictItemEntity.setItemOrder(1.0 + Math.ceil(maxOrder));
|
||||
}
|
||||
}
|
||||
save(dictItemEntity);
|
||||
return Result.success("新增成功");
|
||||
} catch (Exception e) {
|
||||
log.info("新增选项失败", e);
|
||||
}
|
||||
return Result.error("新增失败");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
package com.adc.da.sys.service.iservice;
|
||||
|
||||
import com.adc.da.eo.DictItemEntity;
|
||||
import com.adc.da.sys.vo.DictItemQueryVo;
|
||||
import com.adc.da.sys.vo.DictItemVo;
|
||||
import com.adc.da.util.http.ResponseMessage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author ThinkBook
|
||||
* @description 针对表【ts_dict_item】的数据库操作Service
|
||||
@@ -10,4 +15,31 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
*/
|
||||
public interface IDictItemService extends IService<DictItemEntity> {
|
||||
|
||||
/**
|
||||
* 获取所有字典值
|
||||
* @param dictItemQueryVo
|
||||
* @return
|
||||
*/
|
||||
ResponseMessage pageById(DictItemQueryVo dictItemQueryVo);
|
||||
|
||||
/**
|
||||
* 修改一个字典值
|
||||
* @param dictItemVo
|
||||
* @return
|
||||
*/
|
||||
ResponseMessage edit(DictItemVo dictItemVo);
|
||||
|
||||
/**
|
||||
* 删除一个字典值
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
ResponseMessage delete(List<String> ids);
|
||||
|
||||
/**
|
||||
* 添加一个字典值
|
||||
* @param dictItemVo 字典值视图对象
|
||||
* @return
|
||||
*/
|
||||
ResponseMessage add(DictItemVo dictItemVo);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.adc.da.sys.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
|
||||
/**
|
||||
* @author CaiHaohan
|
||||
*/
|
||||
@Data
|
||||
public class DictItemQueryVo {
|
||||
|
||||
/**
|
||||
* 上级主键id
|
||||
*/
|
||||
private String dicId;
|
||||
|
||||
/**
|
||||
* 页数
|
||||
*/
|
||||
@Min(1)
|
||||
private Integer pageNo;
|
||||
|
||||
/**
|
||||
* 每页数量
|
||||
*/
|
||||
@NotNull
|
||||
private Integer pageSize;
|
||||
|
||||
/**
|
||||
* 数据名称
|
||||
*/
|
||||
private String itemName;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private Integer itemStatus;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Double itemOrder;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.adc.da.sys.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author CaiHaohan
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class DictItemVo {
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 上级字典主键id
|
||||
*/
|
||||
private String dicId;
|
||||
|
||||
/**
|
||||
* 数据名称
|
||||
*/
|
||||
private String itemName;
|
||||
|
||||
/**
|
||||
* 数据值
|
||||
*/
|
||||
private String itemValue;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String itemDescription;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Double itemOrder;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user