From 30e1933c8be1fb0828a3f904d020ef5d5c72ace2 Mon Sep 17 00:00:00 2001 From: xia Date: Tue, 17 May 2022 14:03:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AD=97=E5=85=B8=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- archives/pom.xml | 21 +++++++ .../controller/DictrionaryController.java | 34 ++++++++++ .../modules/dictionary/domain/Dictionary.java | 49 +++++++++++++++ .../dictionary/domain/vo/DictionaryVO.java | 55 ++++++++++++++++ .../repository/DictionaryRepository.java | 14 +++++ .../dictionary/service/DictionaryService.java | 9 +++ .../service/dto/DictionaryQueryCriteria.java | 7 +++ .../service/impl/DictionaryServiceImpl.java | 63 +++++++++++++++++++ 8 files changed, 252 insertions(+) create mode 100644 archives/src/main/java/com/storeroom/modules/dictionary/controller/DictrionaryController.java create mode 100644 archives/src/main/java/com/storeroom/modules/dictionary/domain/Dictionary.java create mode 100644 archives/src/main/java/com/storeroom/modules/dictionary/domain/vo/DictionaryVO.java create mode 100644 archives/src/main/java/com/storeroom/modules/dictionary/repository/DictionaryRepository.java create mode 100644 archives/src/main/java/com/storeroom/modules/dictionary/service/DictionaryService.java create mode 100644 archives/src/main/java/com/storeroom/modules/dictionary/service/dto/DictionaryQueryCriteria.java create mode 100644 archives/src/main/java/com/storeroom/modules/dictionary/service/impl/DictionaryServiceImpl.java diff --git a/archives/pom.xml b/archives/pom.xml index 2716d5d..deae10a 100644 --- a/archives/pom.xml +++ b/archives/pom.xml @@ -17,4 +17,25 @@ 17 + + + com.storeroom + common + 1.0 + + + + com.storeroom + logging + 1.0 + + + + net.sf.json-lib + json-lib + 2.4 + jdk15 + + + \ No newline at end of file diff --git a/archives/src/main/java/com/storeroom/modules/dictionary/controller/DictrionaryController.java b/archives/src/main/java/com/storeroom/modules/dictionary/controller/DictrionaryController.java new file mode 100644 index 0000000..ba6ef42 --- /dev/null +++ b/archives/src/main/java/com/storeroom/modules/dictionary/controller/DictrionaryController.java @@ -0,0 +1,34 @@ +package com.storeroom.modules.dictionary.controller; + +import com.storeroom.annotaion.rest.AnonymousGetMapping; +import com.storeroom.annotaion.rest.AnonymousPostMapping; +import com.storeroom.modules.dictionary.domain.vo.DictionaryVO; +import com.storeroom.modules.dictionary.service.DictionaryService; +import com.storeroom.modules.dictionary.service.dto.DictionaryQueryCriteria; +import com.storeroom.utils.ApiResponse; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Pageable; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequiredArgsConstructor +@Api(tags = "字典表管理") +@RequestMapping("/dictrionary") +public class DictrionaryController { + + private final DictionaryService dictionaryService; + + @ApiOperation("字典目录") +// @GetMapping("/menu") + @AnonymousGetMapping(value = "/menu") + public ApiResponse menu(){ + return ApiResponse.success(dictionaryService.findDictrionaryMenu()); + } + +} diff --git a/archives/src/main/java/com/storeroom/modules/dictionary/domain/Dictionary.java b/archives/src/main/java/com/storeroom/modules/dictionary/domain/Dictionary.java new file mode 100644 index 0000000..27ef637 --- /dev/null +++ b/archives/src/main/java/com/storeroom/modules/dictionary/domain/Dictionary.java @@ -0,0 +1,49 @@ +package com.storeroom.modules.dictionary.domain; + +import com.storeroom.base.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +@Entity +@Getter +@Setter +@Table(name="sys_dictionary") +public class Dictionary extends BaseEntity implements Serializable { + + @Id + @Column(name = "id") + @GeneratedValue(generator = "idGenerator") + @GenericGenerator(name = "idGenerator", strategy = "uuid") + private String id; + + @Column(name = "dic_name") + @ApiModelProperty(value = "名称") + private String dicName; + + @Column(name = "dic_code") + @ApiModelProperty(value = "代码") + private String dicCode; + + @Column(name = "dic_explain") + @ApiModelProperty(value = "备注") + private String dicExplain; + + @Column(name = "dic_sequence") + @ApiModelProperty(value = "排序") + private Integer dicSequence; + + @Column(name = "dic_type") + @ApiModelProperty(value = "是否为一级菜单") + private Boolean dicType; + + @Column(name = "dic_pid") + @ApiModelProperty(value = "父id") + private String dicPid; + +} diff --git a/archives/src/main/java/com/storeroom/modules/dictionary/domain/vo/DictionaryVO.java b/archives/src/main/java/com/storeroom/modules/dictionary/domain/vo/DictionaryVO.java new file mode 100644 index 0000000..77832f2 --- /dev/null +++ b/archives/src/main/java/com/storeroom/modules/dictionary/domain/vo/DictionaryVO.java @@ -0,0 +1,55 @@ +package com.storeroom.modules.dictionary.domain.vo; + +import com.alibaba.fastjson.annotation.JSONField; +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class DictionaryVO { + + @ApiModelProperty(value = "字典id") + @JSONField(name="id") + @JsonProperty("id") + private String id; + + @ApiModelProperty(value = "字典名称") + @JSONField(name="dicName") + @JsonProperty("dic_name") + private String dicName; + + @ApiModelProperty(value = "字典代码") + @JSONField(name="dicCode") + @JsonProperty("dic_code") + private String dicCode; + + @ApiModelProperty(value = "设备id") + @JSONField(name="deviceId") + @JsonProperty("device_id") + private String dicExplain; + + @ApiModelProperty(value = "设备id") + @JSONField(name="deviceId") + @JsonProperty("device_id") + private String dicSequence; + + @ApiModelProperty(value = "设备id") + @JSONField(name="deviceId") + @JsonProperty("device_id") + private String dicType; + + @ApiModelProperty(value = "父id") + @JSONField(name="deviceId") + @JsonProperty("dic_pid") + private String dicPid; + + @ApiModelProperty(value = "子菜单集合") + @JSONField(name="childMenus") + @JsonProperty("child_menus") + private List childMenus; + +} diff --git a/archives/src/main/java/com/storeroom/modules/dictionary/repository/DictionaryRepository.java b/archives/src/main/java/com/storeroom/modules/dictionary/repository/DictionaryRepository.java new file mode 100644 index 0000000..1297642 --- /dev/null +++ b/archives/src/main/java/com/storeroom/modules/dictionary/repository/DictionaryRepository.java @@ -0,0 +1,14 @@ +package com.storeroom.modules.dictionary.repository; + +import com.storeroom.modules.dictionary.domain.Dictionary; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +public interface DictionaryRepository extends JpaRepository { + + @Query(" from Dictionary ") + List findAllOrderBy(); +} diff --git a/archives/src/main/java/com/storeroom/modules/dictionary/service/DictionaryService.java b/archives/src/main/java/com/storeroom/modules/dictionary/service/DictionaryService.java new file mode 100644 index 0000000..27ab670 --- /dev/null +++ b/archives/src/main/java/com/storeroom/modules/dictionary/service/DictionaryService.java @@ -0,0 +1,9 @@ +package com.storeroom.modules.dictionary.service; + +import com.storeroom.modules.dictionary.domain.vo.DictionaryVO; + +import java.util.List; + +public interface DictionaryService { + List findDictrionaryMenu(); +} diff --git a/archives/src/main/java/com/storeroom/modules/dictionary/service/dto/DictionaryQueryCriteria.java b/archives/src/main/java/com/storeroom/modules/dictionary/service/dto/DictionaryQueryCriteria.java new file mode 100644 index 0000000..dc5a988 --- /dev/null +++ b/archives/src/main/java/com/storeroom/modules/dictionary/service/dto/DictionaryQueryCriteria.java @@ -0,0 +1,7 @@ +package com.storeroom.modules.dictionary.service.dto; + +import lombok.Data; + +@Data +public class DictionaryQueryCriteria { +} diff --git a/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/DictionaryServiceImpl.java b/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/DictionaryServiceImpl.java new file mode 100644 index 0000000..1601c4e --- /dev/null +++ b/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/DictionaryServiceImpl.java @@ -0,0 +1,63 @@ +package com.storeroom.modules.dictionary.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.storeroom.modules.dictionary.domain.Dictionary; +import com.storeroom.modules.dictionary.domain.vo.DictionaryVO; +import com.storeroom.modules.dictionary.repository.DictionaryRepository; +import com.storeroom.modules.dictionary.service.DictionaryService; +import lombok.RequiredArgsConstructor; +import net.sf.json.JSONArray; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +@RequiredArgsConstructor +public class DictionaryServiceImpl implements DictionaryService { + + private final DictionaryRepository dictionaryRepository; + + @Override + public List findDictrionaryMenu() { + List dictionaryList = dictionaryRepository.findAllOrderBy(); + //树排序 + List menuList = new ArrayList<>(); + // 先找到所有的一级菜单 + for (int i = 0; i < dictionaryList.size(); i++) { + Dictionary dictionary = dictionaryList.get(i); + if(dictionary.getDicType()){ + menuList.add(BeanUtil.copyProperties(dictionary,DictionaryVO.class)); + } + } + // 为一级菜单设置子菜单,getChild是递归调用的 + for (DictionaryVO menu : menuList) { + menu.setChildMenus(getChild(menu.getId(), dictionaryList)); + } + return menuList; + } + + private static List getChild(String id, List rootMenu) { + // 子菜单 + List childList = new ArrayList<>(); + for (Dictionary dictionary : rootMenu) { + // 遍历所有节点,将父菜单id与传过来的id比较 + if (id.equals(dictionary.getDicPid())) { + childList.add(BeanUtil.copyProperties(dictionary,DictionaryVO.class)); + } + } + + // 把子菜单的子菜单再循环一遍 + for (DictionaryVO menu : childList) { + menu.setChildMenus(getChild(menu.getId(), rootMenu));// 递归 + } + + // 判断递归结束 + if (childList.size() == 0) { + return null; + } + return childList; + } + +}