opt queryDictValue (#1787)

This commit is contained in:
daikon
2024-10-11 22:27:46 +08:00
committed by GitHub
parent b6e4577784
commit 0a86a63937
5 changed files with 44 additions and 14 deletions

View File

@@ -16,4 +16,6 @@ public class DimValueMap {
/** dimension value for user query */
private List<String> alias = new ArrayList<>();
private String value;
}

View File

@@ -13,7 +13,7 @@ import java.util.List;
@Data
@ToString
public class DictValueDimResp extends DictValueResp {
/** dimension value for result show */
/** dimension value */
private String bizName;
/** dimension value for user query */

View File

@@ -28,9 +28,6 @@ import java.util.stream.Stream;
@Component
public class FileHandlerImpl implements FileHandler {
@Value("${dict.value.max.count.page:1000}")
private int dictValueMaxCountPage;
public static final String FILE_SPILT = File.separator;
private final LocalFileConfig localFileConfig;
@@ -89,7 +86,7 @@ public class FileHandlerImpl implements FileHandler {
}
private PageInfo<DictValueResp> getDictValueRespPagWithKey(String fileName,
DictValueReq dictValueReq) {
DictValueReq dictValueReq) {
PageInfo<DictValueResp> dictValueRespPageInfo = new PageInfo<>();
dictValueRespPageInfo.setPageSize(dictValueReq.getPageSize());
dictValueRespPageInfo.setPageNum(dictValueReq.getCurrent());
@@ -121,11 +118,11 @@ public class FileHandlerImpl implements FileHandler {
}
private PageInfo<DictValueResp> getDictValueRespPagWithoutKey(String fileName,
DictValueReq dictValueReq) {
DictValueReq dictValueReq) {
PageInfo<DictValueResp> dictValueRespPageInfo = new PageInfo<>();
String filePath = localFileConfig.getDictDirectoryLatest() + FILE_SPILT + fileName;
Long fileLineNum = Math.min(dictValueMaxCountPage, getFileLineNum(filePath));
Integer startLine = 1;
Long fileLineNum = getFileLineNum(filePath);
Integer startLine = Math.max(1, (dictValueReq.getCurrent() - 1) * dictValueReq.getPageSize() + 1);
Integer endLine = Integer.valueOf(
Math.min(dictValueReq.getCurrent() * dictValueReq.getPageSize(), fileLineNum) + "");
List<DictValueResp> dictValueRespList = getFileData(filePath, startLine, endLine);
@@ -135,7 +132,7 @@ public class FileHandlerImpl implements FileHandler {
dictValueRespPageInfo.setTotal(fileLineNum);
dictValueRespPageInfo.setList(dictValueRespList);
dictValueRespPageInfo.setHasNextPage(endLine >= fileLineNum ? false : true);
dictValueRespPageInfo.setHasPreviousPage(startLine <= 0 ? false : true);
dictValueRespPageInfo.setHasPreviousPage(startLine <= 1 ? false : true);
return dictValueRespPageInfo;
}
@@ -149,6 +146,13 @@ public class FileHandlerImpl implements FileHandler {
return null;
}
/**
*
* @param filePath
* @param startLine 1开始
* @param endLine
* @return
*/
private List<DictValueResp> getFileData(String filePath, Integer startLine, Integer endLine) {
List<DictValueResp> fileData = new ArrayList<>();

View File

@@ -59,8 +59,8 @@ public class DictTaskServiceImpl implements DictTaskService {
private final DimensionService dimensionService;
public DictTaskServiceImpl(DictRepository dictRepository, DictUtils dictConverter,
DictUtils dictUtils, FileHandler fileHandler, DictWordService dictWordService,
DimensionService dimensionService) {
DictUtils dictUtils, FileHandler fileHandler, DictWordService dictWordService,
DimensionService dimensionService) {
this.dictRepository = dictRepository;
this.dictConverter = dictConverter;
this.dictUtils = dictUtils;
@@ -178,9 +178,28 @@ public class DictTaskServiceImpl implements DictTaskService {
PageInfo<DictValueResp> dictValueRespList =
fileHandler.queryDictValue(fileName, dictValueReq);
PageInfo<DictValueDimResp> result = convert2DictValueDimRespPage(dictValueRespList);
fillDimMapInfo(result.getList(), dictValueReq.getItemId());
return result;
}
private void fillDimMapInfo(List<DictValueDimResp> list, Long dimId) {
DimensionResp dimResp = dimensionService.getDimension(dimId);
if (CollectionUtils.isEmpty(dimResp.getDimValueMaps())) {
return;
}
Map<String, DimValueMap> valueAndMap = dimResp.getDimValueMaps().stream()
.collect(Collectors.toMap(dim -> dim.getValue(), v -> v, (v1, v2) -> v2));
if (CollectionUtils.isEmpty(valueAndMap)) {
return;
}
list.stream().forEach(dictValueDimResp -> {
String dimValue = dictValueDimResp.getValue();
if (valueAndMap.containsKey(dimValue) && Objects.nonNull(valueAndMap.get(dimValue))) {
dictValueDimResp.setAlias(valueAndMap.get(dimValue).getAlias());
}
});
}
private PageInfo<DictValueDimResp> convert2DictValueDimRespPage(
PageInfo<DictValueResp> dictValueRespPage) {
PageInfo<DictValueDimResp> result = new PageInfo<>();

View File

@@ -34,6 +34,11 @@ public class DimensionConverter {
dimensionDO.setDefaultValues(JSONObject.toJSONString(dimensionReq.getDefaultValues()));
}
if (!CollectionUtils.isEmpty(dimensionReq.getDimValueMaps())) {
List<DimValueMap> dimValueMaps = dimensionReq.getDimValueMaps();
dimValueMaps.stream().forEach(dimValueMap -> {
dimValueMap.setTechName(dimValueMap.getValue());
});
dimensionDO.setDimValueMaps(JSONObject.toJSONString(dimensionReq.getDimValueMaps()));
} else {
dimensionDO.setDimValueMaps(JSONObject.toJSONString(new ArrayList<>()));
@@ -70,7 +75,7 @@ public class DimensionConverter {
}
public static DimensionResp convert2DimensionResp(DimensionDO dimensionDO,
Map<Long, ModelResp> modelRespMap) {
Map<Long, ModelResp> modelRespMap) {
DimensionResp dimensionResp = new DimensionResp();
BeanUtils.copyProperties(dimensionDO, dimensionResp);
dimensionResp.setModelName(
@@ -118,11 +123,11 @@ public class DimensionConverter {
}
public static List<DimensionResp> filterByDataSet(List<DimensionResp> dimensionResps,
DataSetResp dataSetResp) {
DataSetResp dataSetResp) {
return dimensionResps.stream()
.filter(dimensionResp -> dataSetResp.dimensionIds().contains(dimensionResp.getId())
|| dataSetResp.getAllIncludeAllModels()
.contains(dimensionResp.getModelId()))
.contains(dimensionResp.getModelId()))
.collect(Collectors.toList());
}
}