Commit 02b61140 by zhangxingmin

根据字典类型列表获取字典数据项列表

parent da650497
......@@ -3,7 +3,9 @@ package com.yd.user.api.controller;
import com.yd.common.result.Result;
import com.yd.user.api.service.ApiSysDictService;
import com.yd.user.feign.client.sysdict.ApiSysDictFeignClient;
import com.yd.user.feign.request.sysdict.GetDictTypeListRequest;
import com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse;
import com.yd.user.feign.response.sysdict.GetDictTypeListResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -33,4 +35,14 @@ public class ApiSysDictController implements ApiSysDictFeignClient {
public Result<List<GetDictItemListByDictTypeResponse>> getDictItemListByDictType(String dictType) {
return apiSysDictService.getDictItemListByDictType(dictType);
}
/**
* 根据字典类型列表获取字典数据项列表
* @return
*/
@Override
public Result<List<GetDictTypeListResponse>> getByDictTypeList(GetDictTypeListRequest request) {
return apiSysDictService.getByDictTypeList(request);
}
}
package com.yd.user.api.service;
import com.yd.common.result.Result;
import com.yd.user.feign.request.sysdict.GetDictTypeListRequest;
import com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse;
import com.yd.user.feign.response.sysdict.GetDictTypeListResponse;
import java.util.List;
public interface ApiSysDictService {
Result<List<GetDictItemListByDictTypeResponse>> getDictItemListByDictType(String dictType);
Result<List<GetDictTypeListResponse>> getByDictTypeList(GetDictTypeListRequest request);
}
......@@ -3,7 +3,9 @@ package com.yd.user.api.service.impl;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.user.api.service.ApiSysDictService;
import com.yd.user.feign.request.sysdict.GetDictTypeListRequest;
import com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse;
import com.yd.user.feign.response.sysdict.GetDictTypeListResponse;
import com.yd.user.service.dto.SysDictItemDto;
import com.yd.user.service.model.SysDict;
import com.yd.user.service.model.SysDictItem;
......@@ -16,6 +18,7 @@ import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
......@@ -55,4 +58,57 @@ public class ApiSysDictServiceImpl implements ApiSysDictService {
return Result.success(responses);
}
/**
* 根据字典类型列表获取字典数据项列表
* @return
*/
@Override
public Result<List<GetDictTypeListResponse>> getByDictTypeList(GetDictTypeListRequest request) {
List<GetDictTypeListResponse> typeListResponseList = new ArrayList<>();
// 根据字典类型列表查询字典类型信息
List<SysDict> sysDictList = iSysDictService.queryList(request.getTypeList());
if (!CollectionUtils.isEmpty(sysDictList)) {
// 获取字典类型ID列表
List<String> dictBizIdList = sysDictList.stream()
.map(SysDict::getDictBizId)
.collect(Collectors.toList());
// 查询对应的字典项
List<SysDictItem> sysDictItemList = iSysDictItemService.queryList(
SysDictItemDto.builder()
.dictBizIdList(dictBizIdList)
.build());
// 按dictBizId分组字典项
Map<String, List<SysDictItem>> itemsByDictId = sysDictItemList.stream()
.collect(Collectors.groupingBy(SysDictItem::getDictBizId));
// 构建响应
typeListResponseList = sysDictList.stream()
.map(dict -> {
GetDictTypeListResponse response = new GetDictTypeListResponse();
BeanUtils.copyProperties(dict, response);
// 获取该字典类型对应的字典项并转换
List<GetDictItemListByDictTypeResponse> itemResponses =
itemsByDictId.getOrDefault(dict.getDictBizId(), new ArrayList<>())
.stream()
.map(item -> {
GetDictItemListByDictTypeResponse itemResponse = new GetDictItemListByDictTypeResponse();
BeanUtils.copyProperties(item, itemResponse);
return itemResponse;
})
.collect(Collectors.toList());
response.setDictItemList(itemResponses);
return response;
})
.collect(Collectors.toList());
}
return Result.success(typeListResponseList);
}
}
......@@ -2,10 +2,15 @@ package com.yd.user.feign.client.sysdict;
import com.yd.common.result.Result;
import com.yd.user.feign.fallback.sysdict.ApiSysDictFeignFallbackFactory;
import com.yd.user.feign.request.sysdict.GetDictTypeListRequest;
import com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse;
import com.yd.user.feign.response.sysdict.GetDictTypeListResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import javax.validation.constraints.NotBlank;
import java.util.List;
......@@ -22,4 +27,11 @@ public interface ApiSysDictFeignClient {
*/
@GetMapping("/type/item/list/{dictType}")
Result<List<GetDictItemListByDictTypeResponse>> getDictItemListByDictType(@NotBlank(message = "字典类型不能为空") @PathVariable("dictType") String dictType);
/**
* 根据字典类型列表获取字典数据项列表
* @return
*/
@PostMapping("/type/list")
Result<List<GetDictTypeListResponse>> getByDictTypeList(@Validated @RequestBody GetDictTypeListRequest request);
}
......@@ -2,7 +2,9 @@ package com.yd.user.feign.fallback.sysdict;
import com.yd.common.result.Result;
import com.yd.user.feign.client.sysdict.ApiSysDictFeignClient;
import com.yd.user.feign.request.sysdict.GetDictTypeListRequest;
import com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse;
import com.yd.user.feign.response.sysdict.GetDictTypeListResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
......@@ -21,6 +23,11 @@ public class ApiSysDictFeignFallbackFactory implements FallbackFactory<ApiSysDic
public Result<List<GetDictItemListByDictTypeResponse>> getDictItemListByDictType(String dictType) {
return null;
}
@Override
public Result<List<GetDictTypeListResponse>> getByDictTypeList(GetDictTypeListRequest request) {
return null;
}
};
}
}
package com.yd.user.feign.request.sysdict;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
public class GetDictTypeListRequest {
/**
* 字典类型集合
*/
@NotEmpty(message = "字典类型集合不能为空")
private List<String> typeList;
}
package com.yd.user.feign.response.sysdict;
import lombok.Data;
import java.util.List;
@Data
public class GetDictTypeListResponse {
/**
* 字典类型表唯一标识(业务ID)
*/
private String dictBizId;
/**
* 字典类型名称
*/
private String dictName;
/**
* 字典类型
*/
private String dictType;
/**
* 字典项列表
*/
private List<GetDictItemListByDictTypeResponse> dictItemList;
}
......@@ -4,6 +4,8 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
......@@ -21,6 +23,11 @@ public class SysDictItemDto {
private String dictBizId;
/**
* 字典ID列表(字典类型表id)
*/
private List<String> dictBizIdList;
/**
* 字典数据id(业务id)
*/
private String dictItemBizId;
......
......@@ -4,6 +4,8 @@ import com.yd.user.service.model.SysDict;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.user.service.model.SysMenu;
import java.util.List;
/**
* <p>
* 字典类型表 服务类
......@@ -15,4 +17,6 @@ import com.yd.user.service.model.SysMenu;
public interface ISysDictService extends IService<SysDict> {
SysDict queryOneByType(String dictType);
List<SysDict> queryList(List<String> dictTypeList);
}
......@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
......@@ -37,6 +38,7 @@ public class SysDictItemServiceImpl extends ServiceImpl<SysDictItemMapper, SysDi
.eq(!Objects.isNull(dto.getId()),SysDictItem::getId,dto.getId())
.eq(StringUtils.isNotBlank(dto.getDictBizId()),SysDictItem::getDictBizId,dto.getDictBizId())
.eq(StringUtils.isNotBlank(dto.getDictItemBizId()),SysDictItem::getDictItemBizId,dto.getDictItemBizId())
.in(!CollectionUtils.isEmpty(dto.getDictBizIdList()),SysDictItem::getDictBizId,dto.getDictBizIdList())
);
return list;
}
......
......@@ -3,10 +3,16 @@ package com.yd.user.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yd.user.service.model.SysDict;
import com.yd.user.service.dao.SysDictMapper;
import com.yd.user.service.model.SysDictItem;
import com.yd.user.service.service.ISysDictService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
/**
* <p>
......@@ -29,4 +35,17 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
public SysDict queryOneByType(String dictType) {
return this.getOne(new LambdaQueryWrapper<SysDict>().eq(SysDict::getDictType,dictType));
}
/**
* 查询列表
* @param dictTypeList
* @return
*/
@Override
public List<SysDict> queryList(List<String> dictTypeList) {
List<SysDict> list = baseMapper.selectList(new LambdaQueryWrapper<SysDict>()
.in(!CollectionUtils.isEmpty(dictTypeList),SysDict::getDictType,dictTypeList)
);
return list;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment