Ver código fonte

支持字典配置表单动态下拉选择项

hubin 1 ano atrás
pai
commit
686a8df12f

+ 23 - 0
src/main/java/com/aizuda/boot/modules/common/vo/SelectOptionVO.java

@@ -0,0 +1,23 @@
+package com.aizuda.boot.modules.common.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * 下拉选择项对象
+ */
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class SelectOptionVO implements Serializable {
+    // 显示标题
+    private String title;
+    // 选择内容
+    private Object content;
+
+}

+ 8 - 0
src/main/java/com/aizuda/boot/modules/system/controller/SysDictController.java

@@ -5,6 +5,7 @@
  */
 package com.aizuda.boot.modules.system.controller;
 
+import com.aizuda.boot.modules.common.vo.SelectOptionVO;
 import com.aizuda.boot.modules.system.entity.SysDict;
 import com.aizuda.boot.modules.system.service.ISysDictService;
 import com.aizuda.core.api.ApiController;
@@ -49,6 +50,13 @@ public class SysDictController extends ApiController {
         return sysDictService.listParent();
     }
 
+    @Operation(summary = "通过字典编码查询表单下拉选择项列表")
+    @Permission("sys:dict:listSelectOptions")
+    @GetMapping("/list-select-options")
+    public List<SelectOptionVO> listSelectOptions(@RequestParam String code) {
+        return sysDictService.listSelectOptions(code);
+    }
+
     @Operation(summary = "查询 id 信息")
     @Permission("sys:dict:get")
     @GetMapping("/get")

+ 6 - 0
src/main/java/com/aizuda/boot/modules/system/service/ISysDictService.java

@@ -5,6 +5,7 @@
  */
 package com.aizuda.boot.modules.system.service;
 
+import com.aizuda.boot.modules.common.vo.SelectOptionVO;
 import com.aizuda.boot.modules.system.entity.SysDict;
 import com.aizuda.service.service.IBaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -26,4 +27,9 @@ public interface ISysDictService extends IBaseService<SysDict> {
      */
     List<SysDict> listParent();
 
+    /**
+     * 通过字典编码查询表单下拉选择项列表
+     */
+    List<SelectOptionVO> listSelectOptions(String code);
+
 }

+ 19 - 0
src/main/java/com/aizuda/boot/modules/system/service/impl/SysDictServiceImpl.java

@@ -5,6 +5,7 @@
  */
 package com.aizuda.boot.modules.system.service.impl;
 
+import com.aizuda.boot.modules.common.vo.SelectOptionVO;
 import com.aizuda.boot.modules.system.entity.SysDict;
 import com.aizuda.boot.modules.system.mapper.SysDictMapper;
 import com.aizuda.boot.modules.system.service.ISysDictService;
@@ -13,10 +14,13 @@ import com.aizuda.service.service.BaseServiceImpl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 系统字典 服务实现类
@@ -40,6 +44,21 @@ public class SysDictServiceImpl extends BaseServiceImpl<SysDictMapper, SysDict>
                 .eq(SysDict::getPid, 0));
     }
 
+    @Override
+    public List<SelectOptionVO> listSelectOptions(String code) {
+        List<SelectOptionVO> sovList = new ArrayList<>();
+        List<SysDict> dictList = lambdaQuery().eq(SysDict::getCode, code).orderByDesc(SysDict::getSort).list();
+        if (CollectionUtils.isNotEmpty(dictList)) {
+            if (Objects.equals(1, dictList.size())) {
+                // 单个字典配置情况且为一级字典,查询子集字典
+                dictList = lambdaQuery().eq(SysDict::getPid, dictList.get(0).getId()).orderByDesc(SysDict::getSort).list();
+            }
+            // 表单下拉选择项列表转换
+            sovList = dictList.stream().map(t -> new SelectOptionVO(t.getName(), t.getContent())).toList();
+        }
+        return sovList;
+    }
+
     @Override
     public boolean save(SysDict sysDict) {
         this.checkCode(sysDict);