package jnpf.base.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; import jnpf.base.Page; import jnpf.base.controller.SuperController; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import jnpf.constant.MsgCode; import jnpf.exception.DataException; import jnpf.util.JsonUtil; import jnpf.base.ActionResult; import jnpf.base.vo.ListVO; import jnpf.base.model.dictionarytype.*; import jnpf.base.entity.DictionaryTypeEntity; import jnpf.base.service.DictionaryTypeService; import jnpf.util.RandomUtil; import jnpf.util.StringUtil; import jnpf.util.treeutil.SumTree; import jnpf.util.treeutil.TreeDotUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import jakarta.validation.Valid; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 字典分类 * * @author JNPF开发平台组 * @version V3.1.0 * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com) * @date 2019年9月27日 上午9:18 */ @Tag(name = "数据字典分类", description = "DictionaryType") @RestController @RequestMapping("/DictionaryType") public class DictionaryTypeController extends SuperController { @Autowired private DictionaryTypeService dictionaryTypeService; /** * 获取字典分类 * * @return */ @Operation(summary = "获取字典分类") @GetMapping public ActionResult> list() { List data = dictionaryTypeService.getList(); List voListVO = JsonUtil.getJsonToList(data, DictionaryTypeModel.class); voListVO.forEach(vo -> { if (StringUtil.isNotEmpty(vo.getCategory()) && "1".equals(vo.getCategory()) && "-1".equals(vo.getParentId())) { vo.setCategory("系统"); vo.setParentId("1"); } else if (StringUtil.isNotEmpty(vo.getCategory()) && "0".equals(vo.getCategory()) && "-1".equals(vo.getParentId())) { vo.setCategory("业务"); vo.setParentId("0"); } }); List> sumTrees = TreeDotUtils.convertListToTreeDot(voListVO); List list = JsonUtil.getJsonToList(sumTrees, DictionaryTypeListVO.class); DictionaryTypeListVO parentVO = new DictionaryTypeListVO(); parentVO.setFullName("系统字典"); parentVO.setChildren(new ArrayList<>()); parentVO.setId("1"); DictionaryTypeListVO parentVO1 = new DictionaryTypeListVO(); parentVO1.setFullName("业务字典"); parentVO1.setChildren(new ArrayList<>()); parentVO1.setId("0"); list.forEach(vo -> { if ("系统".equals(vo.getCategory())) { List children = parentVO.getChildren(); children.add(vo); parentVO.setHasChildren(true); }else { List children = parentVO1.getChildren(); children.add(vo); parentVO1.setHasChildren(true); } }); List listVo = new ArrayList<>(); listVo.add(parentVO1); listVo.add(parentVO); ListVO vo = new ListVO<>(); vo.setList(listVo); return ActionResult.success(vo); } /** * 获取字典分类 * * @param id 主键 * @return */ @Operation(summary = "获取所有字典分类下拉框列表") @Parameter(name = "id", description = "主键", required = true) @GetMapping("/Selector/{id}") public ActionResult> selectorTreeView(@PathVariable("id") String id) { List data = dictionaryTypeService.getList(); if (!"0".equals(id)) { data.remove(dictionaryTypeService.getInfo(id)); } List voListVO = JsonUtil.getJsonToList(data, DictionaryTypeModel.class); voListVO.forEach(vo -> { if (StringUtil.isNotEmpty(vo.getCategory()) && "1".equals(vo.getCategory()) && "-1".equals(vo.getParentId())) { vo.setCategory("系统"); vo.setParentId("1"); } else if (StringUtil.isNotEmpty(vo.getCategory()) && "0".equals(vo.getCategory()) && "-1".equals(vo.getParentId())) { vo.setCategory("业务"); vo.setParentId("0"); } }); List> sumTrees = TreeDotUtils.convertListToTreeDot(voListVO); List list = JsonUtil.getJsonToList(sumTrees, DictionaryTypeListVO.class); DictionaryTypeListVO parentVO = new DictionaryTypeListVO(); parentVO.setFullName("系统字典"); parentVO.setChildren(new ArrayList<>()); parentVO.setId("1"); DictionaryTypeListVO parentVO1 = new DictionaryTypeListVO(); parentVO1.setFullName("业务字典"); parentVO1.setChildren(new ArrayList<>()); parentVO1.setId("0"); list.forEach(vo -> { if ("系统".equals(vo.getCategory())) { List children = parentVO.getChildren(); children.add(vo); parentVO.setHasChildren(true); }else { List children = parentVO1.getChildren(); children.add(vo); parentVO1.setHasChildren(true); } }); List listVo = new ArrayList<>(); listVo.add(parentVO1); listVo.add(parentVO); ListVO vo = new ListVO<>(); vo.setList(listVo); return ActionResult.success(vo); } /** * 获取字典分类信息 * * @param id 主键值 * @return */ @Operation(summary = "获取字典分类信息") @Parameter(name = "id", description = "主键", required = true) @GetMapping("/{id}") public ActionResult info(@PathVariable("id") String id) throws DataException { DictionaryTypeEntity entity = dictionaryTypeService.getInfo(id); if ("-1".equals(entity.getParentId())) { entity.setParentId(String.valueOf(entity.getCategory())); } DictionaryTypeInfoVO vo = JsonUtil.getJsonToBeanEx(entity, DictionaryTypeInfoVO.class); return ActionResult.success(vo); } /** * 添加字典分类 * * @param dictionaryTypeCrForm 实体对象 * @return */ @Operation(summary = "添加字典分类") @Parameter(name = "dictionaryTypeCrForm", description = "实体对象", required = true) @SaCheckPermission("sysData.dictionary") @PostMapping public ActionResult create(@RequestBody @Valid DictionaryTypeCrForm dictionaryTypeCrForm) { DictionaryTypeEntity entity = JsonUtil.getJsonToBean(dictionaryTypeCrForm, DictionaryTypeEntity.class); if ("0".equals(entity.getParentId()) || "1".equals(entity.getParentId())) { entity.setCategory(Integer.parseInt(entity.getParentId())); entity.setParentId("-1"); } else { DictionaryTypeEntity entity1 = dictionaryTypeService.getInfo(dictionaryTypeCrForm.getParentId()); entity.setCategory(entity1.getCategory()); } if (dictionaryTypeService.isExistByFullName(entity.getFullName(), entity.getId())) { return ActionResult.fail(MsgCode.EXIST001.get()); } if (dictionaryTypeService.isExistByEnCode(entity.getEnCode(), entity.getId())) { return ActionResult.fail(MsgCode.EXIST002.get()); } dictionaryTypeService.create(entity); return ActionResult.success(MsgCode.SU001.get()); } /** * 修改字典分类 * * @param dictionaryTypeUpForm 实体对象 * @param id 主键值 * @return */ @Operation(summary = "修改字典分类") @Parameters({ @Parameter(name = "id", description = "主键值", required = true), @Parameter(name = "dictionaryTypeUpForm", description = "实体对象", required = true) }) @SaCheckPermission("sysData.dictionary") @PutMapping("/{id}") public ActionResult update(@PathVariable("id") String id, @RequestBody @Valid DictionaryTypeUpForm dictionaryTypeUpForm) { DictionaryTypeEntity entity = JsonUtil.getJsonToBean(dictionaryTypeUpForm, DictionaryTypeEntity.class); if ("0".equals(entity.getParentId()) || "1".equals(entity.getParentId())) { entity.setCategory(Integer.parseInt(entity.getParentId())); entity.setParentId("-1"); } else { DictionaryTypeEntity entity1 = dictionaryTypeService.getInfo(dictionaryTypeUpForm.getParentId()); entity.setCategory(entity1.getCategory()); } if (dictionaryTypeService.isExistByFullName(entity.getFullName(), id)) { return ActionResult.fail(MsgCode.EXIST001.get()); } if (dictionaryTypeService.isExistByEnCode(entity.getEnCode(), id)) { return ActionResult.fail(MsgCode.EXIST002.get()); } boolean flag = dictionaryTypeService.update(id, entity); if (!flag) { return ActionResult.success(MsgCode.FA002.get()); } return ActionResult.success(MsgCode.SU004.get()); } /** * 删除字典分类 * * @param id 主键值 * @return */ @Operation(summary = "删除字典分类") @Parameters({ @Parameter(name = "id", description = "主键值", required = true) }) @SaCheckPermission("sysData.dictionary") @DeleteMapping("/{id}") public ActionResult delete(@PathVariable("id") String id) { DictionaryTypeEntity entity = dictionaryTypeService.getInfo(id); if (entity != null) { boolean isOk = dictionaryTypeService.delete(entity); if (isOk) { return ActionResult.success(MsgCode.SU003.get()); } else { return ActionResult.fail(MsgCode.SYS014.get()); } } return ActionResult.fail(MsgCode.FA003.get()); } }