diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/DimValueMap.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/DimValueMap.java index 3fc060fbe..f6c3ca0af 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/DimValueMap.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/DimValueMap.java @@ -16,4 +16,6 @@ public class DimValueMap { /** dimension value for user query */ private List alias = new ArrayList<>(); + + private String value; } diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/DictValueDimResp.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/DictValueDimResp.java index f2cb1ce11..cbe8c38ed 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/DictValueDimResp.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/DictValueDimResp.java @@ -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 */ diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/FileHandlerImpl.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/FileHandlerImpl.java index f92afc531..48c207da5 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/FileHandlerImpl.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/knowledge/file/FileHandlerImpl.java @@ -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 getDictValueRespPagWithKey(String fileName, - DictValueReq dictValueReq) { + DictValueReq dictValueReq) { PageInfo dictValueRespPageInfo = new PageInfo<>(); dictValueRespPageInfo.setPageSize(dictValueReq.getPageSize()); dictValueRespPageInfo.setPageNum(dictValueReq.getCurrent()); @@ -121,11 +118,11 @@ public class FileHandlerImpl implements FileHandler { } private PageInfo getDictValueRespPagWithoutKey(String fileName, - DictValueReq dictValueReq) { + DictValueReq dictValueReq) { PageInfo 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 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 getFileData(String filePath, Integer startLine, Integer endLine) { List fileData = new ArrayList<>(); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DictTaskServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DictTaskServiceImpl.java index 43c50321a..04ae85233 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DictTaskServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DictTaskServiceImpl.java @@ -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 dictValueRespList = fileHandler.queryDictValue(fileName, dictValueReq); PageInfo result = convert2DictValueDimRespPage(dictValueRespList); + fillDimMapInfo(result.getList(), dictValueReq.getItemId()); return result; } + private void fillDimMapInfo(List list, Long dimId) { + DimensionResp dimResp = dimensionService.getDimension(dimId); + if (CollectionUtils.isEmpty(dimResp.getDimValueMaps())) { + return; + } + Map 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 convert2DictValueDimRespPage( PageInfo dictValueRespPage) { PageInfo result = new PageInfo<>(); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DimensionConverter.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DimensionConverter.java index 5a8e3379f..4610db2c9 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DimensionConverter.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DimensionConverter.java @@ -34,6 +34,11 @@ public class DimensionConverter { dimensionDO.setDefaultValues(JSONObject.toJSONString(dimensionReq.getDefaultValues())); } if (!CollectionUtils.isEmpty(dimensionReq.getDimValueMaps())) { + List 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 modelRespMap) { + Map modelRespMap) { DimensionResp dimensionResp = new DimensionResp(); BeanUtils.copyProperties(dimensionDO, dimensionResp); dimensionResp.setModelName( @@ -118,11 +123,11 @@ public class DimensionConverter { } public static List filterByDataSet(List 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()); } }