Bladeren bron

fix 修改字典表,添加父id

Administrator 3 jaren geleden
bovenliggende
commit
97d2d76d09

+ 9 - 0
boman-api/boman-api-system/src/main/java/com/boman/system/api/RemoteDictDataService.java

@@ -2,6 +2,7 @@ package com.boman.system.api;
 
 import com.boman.domain.constant.ServiceNameConstants;
 import com.boman.domain.SysDictData;
+import com.boman.domain.dto.AjaxResult;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -24,6 +25,14 @@ public interface RemoteDictDataService {
     @GetMapping(value = "/dict/data/type/data/{dictType}")
     List<SysDictData> listByType(@PathVariable(value = "dictType") String dictType);
 
+    /**
+     * 根据字典类型查询字典数据信息下拉树列表
+     * @param dictType
+     * @return
+     */
+    @GetMapping("/treeSelect/{dictType}")
+    List<SysDictData> treeSelect(@PathVariable("dictType") String dictType);
+
     /**
      * 功能描述: 根据type和value查字典值
      *

+ 29 - 0
boman-api/boman-domain/src/main/java/com.boman.domain/SysDictData.java

@@ -3,6 +3,9 @@ package com.boman.domain;
 import com.boman.domain.annotation.Excel;
 import com.boman.domain.constant.UserConstants;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * 字典数据表 sys_dict_data
  * 
@@ -15,6 +18,10 @@ public class SysDictData extends BaseEntity
     /** 字典编码 */
 //    @Excel(name = "字典编码", cellType = ColumnType.NUMERIC)
     private Long id;
+    /**
+     * 父id
+     */
+    private Long parentId;
 
     /** 字典排序 */
     @Excel(name = "字典排序", cellType = Excel.ColumnType.NUMERIC)
@@ -46,6 +53,28 @@ public class SysDictData extends BaseEntity
 //    @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
     private String status;
 
+    /**
+     * 字典值子节点
+     */
+    private List<SysDictData> children = new ArrayList<SysDictData>();;
+
+
+    public List<SysDictData> getChildren() {
+        return children;
+    }
+
+    public void setChildren(List<SysDictData> children) {
+        this.children = children;
+    }
+
+    public Long getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Long parentId) {
+        this.parentId = parentId;
+    }
+
     public Long getId()
     {
         return id;

+ 1 - 1
boman-modules/boman-gen/src/main/java/com/boman/gen/service/LoadTableServerImpl.java

@@ -141,7 +141,7 @@ public class LoadTableServerImpl implements ILoadTableServer{
                     String dictType = tableColumn.getDictType();
                     if(StringUtils.isNotBlank(dictType)){
                         //查询对应的字典数据集合
-                        List<SysDictData> sysDictData = remoteDictDataService.listByType(dictType);
+                        List<SysDictData> sysDictData = remoteDictDataService.treeSelect(dictType);
                         if (sysDictData.size() > 0){
                             tableColumn.setSysDictData(sysDictData);
                         }

+ 11 - 0
boman-modules/boman-system/src/main/java/com/boman/system/controller/SysDictDataController.java

@@ -4,6 +4,8 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
+
+import com.boman.domain.SysMenu;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.DeleteMapping;
@@ -101,6 +103,15 @@ public class SysDictDataController extends BaseController
         return dictDataService.selectDictLabel(dictType, dictValue);
     }
 
+    /**
+     * 根据字典类型查询字典数据信息下拉树列表
+     */
+    @GetMapping("/treeSelect/{dictType}")
+    public List<SysDictData> treeSelect(@PathVariable("dictType") String dictType)
+    {
+        return  dictDataService.selectTreeSelect(dictType);
+    }
+
     /**
      * 新增字典类型
      */

+ 7 - 0
boman-modules/boman-system/src/main/java/com/boman/system/mapper/SysDictDataMapper.java

@@ -70,6 +70,13 @@ public interface SysDictDataMapper
      */
     public int deleteDictDataByIds(Long[] ids);
 
+    /**
+     * 去查询有没有父id在这个ids中
+     * @param ids
+     * @return
+     */
+    List<SysDictData> selectDictDataByParentId(List<Long>ids);
+
     /**
      * 新增字典数据信息
      * 

+ 9 - 0
boman-modules/boman-system/src/main/java/com/boman/system/service/ISysDictDataService.java

@@ -2,6 +2,7 @@ package com.boman.system.service;
 
 import java.util.List;
 import com.boman.domain.SysDictData;
+import com.boman.domain.dto.AjaxResult;
 
 /**
  * 字典 业务层
@@ -58,4 +59,12 @@ public interface ISysDictDataService
      * @return 结果
      */
     public int updateDictData(SysDictData dictData);
+
+
+    /**
+     * 根据字典类型查询字典数据信息下拉树列表
+     * @param dictType
+     * @return
+     */
+    List<SysDictData> selectTreeSelect(String dictType);
 }

+ 80 - 26
boman-modules/boman-system/src/main/java/com/boman/system/service/impl/SysDictDataServiceImpl.java

@@ -1,6 +1,8 @@
 package com.boman.system.service.impl;
 
 import com.boman.domain.SysDictData;
+import com.boman.domain.SysMenu;
+import com.boman.domain.dto.AjaxResult;
 import com.boman.system.mapper.SysDictDataMapper;
 import com.boman.system.service.ISysDictDataService;
 import com.boman.system.service.ISysDictTypeService;
@@ -9,16 +11,19 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
+import static com.boman.common.core.utils.obj.ObjectUtils.map;
+
 /**
  * 字典 业务层处理
- * 
+ *
  * @author ruoyi
  */
 @Service
-public class SysDictDataServiceImpl implements ISysDictDataService
-{
+public class SysDictDataServiceImpl implements ISysDictDataService {
     @Autowired
     private SysDictDataMapper dictDataMapper;
     @Resource
@@ -26,20 +31,19 @@ public class SysDictDataServiceImpl implements ISysDictDataService
 
     /**
      * 根据条件分页查询字典数据
-     * 
+     *
      * @param dictData 字典数据信息
      * @return 字典数据集合信息
      */
     @Override
-    public List<SysDictData> selectDictDataList(SysDictData dictData)
-    {
+    public List<SysDictData> selectDictDataList(SysDictData dictData) {
         return dictDataMapper.selectDictDataList(dictData);
     }
 
     /**
      * 根据字典类型和字典键值查询字典数据信息
-     * 
-     * @param dictType 字典类型
+     *
+     * @param dictType  字典类型
      * @param dictValue 字典键值
      * @return 字典标签
      */
@@ -57,28 +61,25 @@ public class SysDictDataServiceImpl implements ISysDictDataService
 
     /**
      * 根据字典数据ID查询信息
-     * 
+     *
      * @param id 字典数据ID
      * @return 字典数据
      */
     @Override
-    public SysDictData selectDictDataById(Long id)
-    {
+    public SysDictData selectDictDataById(Long id) {
         return dictDataMapper.selectDictDataById(id);
     }
 
     /**
      * 批量删除字典数据信息
-     * 
+     *
      * @param ids 需要删除的字典数据ID
      * @return 结果
      */
     @Override
-    public int deleteDictDataByIds(Long[] ids)
-    {
+    public int deleteDictDataByIds(Long[] ids) {
         int row = dictDataMapper.deleteDictDataByIds(ids);
-        if (row > 0)
-        {
+        if (row > 0) {
             DictUtils.clearDictCache();
         }
         return row;
@@ -86,16 +87,14 @@ public class SysDictDataServiceImpl implements ISysDictDataService
 
     /**
      * 新增保存字典数据信息
-     * 
+     *
      * @param dictData 字典数据信息
      * @return 结果
      */
     @Override
-    public int insertDictData(SysDictData dictData)
-    {
+    public int insertDictData(SysDictData dictData) {
         int row = dictDataMapper.insertDictData(dictData);
-        if (row > 0)
-        {
+        if (row > 0) {
             DictUtils.clearDictCache();
         }
         return row;
@@ -103,18 +102,73 @@ public class SysDictDataServiceImpl implements ISysDictDataService
 
     /**
      * 修改保存字典数据信息
-     * 
+     *
      * @param dictData 字典数据信息
      * @return 结果
      */
     @Override
-    public int updateDictData(SysDictData dictData)
-    {
+    public int updateDictData(SysDictData dictData) {
         int row = dictDataMapper.updateDictData(dictData);
-        if (row > 0)
-        {
+        if (row > 0) {
             DictUtils.clearDictCache();
         }
         return row;
     }
+
+    /**
+     * 根据字典类型查询字典数据信息下拉树列表
+     *
+     * @param dictType
+     * @return
+     */
+    @Override
+    public List<SysDictData> selectTreeSelect(String dictType) {
+        List<SysDictData> sysDictData = dictDataMapper.selectDictDataByType(dictType);
+        return recursionFn(sysDictData);
+    }
+
+    /**
+     * 递归列表
+     *
+     * @param sysDictData 子节点列表
+     */
+    private List<SysDictData> recursionFn(List<SysDictData> sysDictData) {
+        if (sysDictData.size() > 0){
+            //获取所有节点的id
+            List<Long> allDictDataId = map(sysDictData, SysDictData::getId);
+            //获得所有节点的子节点
+            List<SysDictData> sysDictDataList = dictDataMapper.selectDictDataByParentId(allDictDataId);
+            //如果子节点有数据
+            if (sysDictDataList.size() > 0){
+                for (SysDictData dictData : sysDictData) {
+                    //找到对应的子节点
+                    List<SysDictData> childList = getChildList(sysDictDataList, dictData);
+                    dictData.setChildren(childList);
+                }
+                recursionFn(sysDictDataList);
+            }
+        }
+        return sysDictData;
+    }
+        /**
+         * 功能描述: 获取menu下所有的子节点
+         *
+         * @param allDictData 所有的
+         * @param dictData     父节点
+         * @return java.util.List<com.boman.domain.SysMenu>
+         */
+
+    private List<SysDictData> getChildList(List<SysDictData> allDictData, SysDictData dictData) {
+        //定义子节点
+        List<SysDictData> childrenList = new ArrayList<SysDictData>();
+        Iterator<SysDictData> it = allDictData.iterator();
+        while (it.hasNext()) {
+            SysDictData n = (SysDictData) it.next();
+            if (n.getParentId().longValue() == dictData.getId().longValue()) {
+                childrenList.add(n);
+            }
+        }
+        return childrenList;
+    }
+
 }

+ 14 - 1
boman-modules/boman-system/src/main/resources/mapper/system/SysDictDataMapper.xml

@@ -18,10 +18,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<result property="createTime" column="create_time" />
 		<result property="updateBy"   column="update_by"   />
 		<result property="updateTime" column="update_time" />
+		<result property="parentId" column="parent_id" />
 	</resultMap>
 	
 	<sql id="selectDictDataVo">
-        select id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark 
+        select id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark,parent_id
 		from sys_dict_data
     </sql>
 
@@ -55,6 +56,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<include refid="selectDictDataVo"/>
 		where id = #{id}
 	</select>
+
+
+	<select id="selectDictDataByParentId" parameterType="list" resultMap="SysDictDataResult">
+		<include refid="selectDictDataVo"/>
+		where status = '0' and parent_id in
+		<foreach collection="list" item="id" open="(" separator="," close=")">
+			#{id}
+		</foreach>
+	</select>
 	
 	<select id="countDictDataByType" resultType="java.lang.Integer">
 	    select count(1) from sys_dict_data where dict_type=#{dictType}  
@@ -84,6 +94,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  			<if test="status != null">status = #{status},</if>
  			<if test="remark != null">remark = #{remark},</if>
  			<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+ 			<if test="parenId != null ">parent_id = #{parenId},</if>
  			update_time = sysdate()
  		</set>
  		where id = #{id}
@@ -105,6 +116,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  			<if test="status != null">status,</if>
  			<if test="remark != null and remark != ''">remark,</if>
  			<if test="createBy != null and createBy != ''">create_by,</if>
+ 			<if test="parenId != null">paren_id,</if>
  			create_time
  		)values(
  		    <if test="dictSort != null">#{dictSort},</if>
@@ -117,6 +129,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  			<if test="status != null">#{status},</if>
  			<if test="remark != null and remark != ''">#{remark},</if>
  			<if test="createBy != null and createBy != ''">#{createBy},</if>
+ 			<if test="parenId != null">#{parenId},</if>
  			sysdate()
  		)
 	</insert>