From b67a3251e5a96e473d1f99a0843307d8699d2e5e Mon Sep 17 00:00:00 2001 From: baojz Date: Sat, 29 Nov 2025 10:50:16 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E4=B8=BAmatchquery=E7=9A=84=E6=83=85?= =?UTF-8?q?=E5=86=B5=EF=BC=8CqueryType=3D5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common-es-search-tool/pom.xml | 2 +- .../lowcode/lib/api/ElasticsearchApi.java | 100 +++++++++++++++--- .../lowcode/lib/api/dto/QueryItemsDto.java | 2 +- 3 files changed, 86 insertions(+), 18 deletions(-) diff --git a/common-es-search-tool/pom.xml b/common-es-search-tool/pom.xml index fba70a68f..3c3b68ed5 100644 --- a/common-es-search-tool/pom.xml +++ b/common-es-search-tool/pom.xml @@ -12,7 +12,7 @@ com.netease common-es-search-tool - 1.4.0 + 1.5.0 8 diff --git a/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/ElasticsearchApi.java b/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/ElasticsearchApi.java index e4800bff7..57f67dff2 100644 --- a/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/ElasticsearchApi.java +++ b/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/ElasticsearchApi.java @@ -8,6 +8,7 @@ import com.netease.lowcode.core.annotation.NaslLogic; import com.netease.lowcode.lib.api.config.CommonEsSearchConfig; import com.netease.lowcode.lib.api.config.SortTypeEnum; +import com.netease.lowcode.lib.api.dto.QueryItemsDto; import com.netease.lowcode.lib.api.dto.QueryItemsListDto; import com.netease.lowcode.lib.api.dto.QueryRequestParam; import com.netease.lowcode.lib.api.dto.QueryResultDto; @@ -77,16 +78,16 @@ private void fillDefaultParam(QueryRequestParam queryRequestParam) { if (!CollectionUtils.isEmpty(queryRequestParam.getQueryItems()) && !CollectionUtils.isEmpty(queryRequestParam.getQueryItemList())) { throw new IllegalArgumentException("queryItemList和queryItems不能同时传入"); } - if (!CollectionUtils.isEmpty(queryRequestParam.getQueryItems())) { - QueryItemsListDto queryItemsListDto = new QueryItemsListDto(); - queryItemsListDto.setQueryItems(queryRequestParam.getQueryItems()); - queryRequestParam.setQueryItemList(new ArrayList<>()); - queryRequestParam.getQueryItemList().add(queryItemsListDto); - // 1表示queryItems内多个条件之间为与;2表示queryItems内多个条件之间为或。所以这边需要旋转一下。 - // fillQueryBuilder执行时,1是外与内或。不旋转的话会执行内或。 - queryRequestParam.setLogicalOperator(queryRequestParam.getLogicalOperator() == 1 ? 2 : 1); - queryRequestParam.setQueryItems(null); - } +// if (!CollectionUtils.isEmpty(queryRequestParam.getQueryItems())) { +// QueryItemsListDto queryItemsListDto = new QueryItemsListDto(); +// queryItemsListDto.setQueryItems(queryRequestParam.getQueryItems()); +// queryRequestParam.setQueryItemList(new ArrayList<>()); +// queryRequestParam.getQueryItemList().add(queryItemsListDto); +// // 1表示queryItems内多个条件之间为与;2表示queryItems内多个条件之间为或。所以这边需要旋转一下。 +// // fillQueryBuilder执行时,1是外与内或。不旋转的话会执行内或。 +// queryRequestParam.setLogicalOperator(queryRequestParam.getLogicalOperator() == 1 ? 2 : 1); +// queryRequestParam.setQueryItems(null); +// } } /** @@ -212,6 +213,9 @@ public QueryResultDto query(QueryRequestParam queryRequestParam) throws IllegalA public QueryResultDto queryCommon(QueryRequestParam queryRequestParam) throws IllegalArgumentException { try { log.info("queryRequestParam:{}", JSONObject.toJSONString(queryRequestParam)); + if (!CollectionUtils.isEmpty(queryRequestParam.getQueryItems()) && !CollectionUtils.isEmpty(queryRequestParam.getQueryItemList())) { + throw new IllegalArgumentException("queryItems和queryItemList不能同时存在"); + } LocalDateTime now1 = LocalDateTime.now(); fillDefaultParam(queryRequestParam); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); @@ -239,8 +243,11 @@ public QueryResultDto queryCommon(QueryRequestParam queryRequestParam) throws Il } BoolQueryBuilder queryBuilder = new BoolQueryBuilder(); // 查询条件 1与2或 - if (queryRequestParam.getQueryItemList() != null) { - queryBuilder = fillQueryBuilder(queryRequestParam); + if (!CollectionUtils.isEmpty(queryRequestParam.getQueryItems())) { + queryBuilder = fillQueryBuilderQueryItems(queryRequestParam.getLogicalOperator(), queryRequestParam.getQueryItems()); + } else if (!CollectionUtils.isEmpty(queryRequestParam.getQueryItemList())) { + // 查询条件 1与或 2或与 + queryBuilder = fillQueryBuilderQueryList(queryRequestParam.getLogicalOperator(), queryRequestParam.getQueryItemList()); } String scrollTime = null; if (queryRequestParam.getScrollTime() != null) { @@ -277,11 +284,11 @@ private Map handleQueryItemsDto(String queryValue) { return map; } - private BoolQueryBuilder fillQueryBuilder(QueryRequestParam queryRequestParam) { + private BoolQueryBuilder fillQueryBuilderQueryList(Integer logicalOperator, List queryItemList) { //1与2或 BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery(); - if (queryRequestParam.getLogicalOperator() == 1) { - queryRequestParam.getQueryItemList().forEach(queryItemListDto -> { + if (logicalOperator == 1) { + queryItemList.forEach(queryItemListDto -> { BoolQueryBuilder queryBuilderItem = QueryBuilders.boolQuery(); queryItemListDto.getQueryItems().forEach(queryItemDto -> { //查询类型,精确1 termQuery、模糊2 wildcardQuery、范围3 rangeQuery @@ -302,12 +309,14 @@ private BoolQueryBuilder fillQueryBuilder(QueryRequestParam queryRequestParam) { }); } else if (queryItemDto.getQueryType() == 4) { queryBuilder.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.termQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue()))); + } else if (queryItemDto.getQueryType() == 5) { + queryBuilderItem.must(QueryBuilders.wildcardQuery(queryItemDto.getParameter(), "*" + queryItemDto.getQueryValue() + "*")); } }); queryBuilder.must(queryBuilderItem); }); } else { - queryRequestParam.getQueryItemList().forEach(queryItemListDto -> { + queryItemList.forEach(queryItemListDto -> { BoolQueryBuilder queryBuilderItem = QueryBuilders.boolQuery(); queryItemListDto.getQueryItems().forEach(queryItemDto -> { //查询类型,精确1 termQuery、模糊2 wildcardQuery、范围3 rangeQuery @@ -328,6 +337,8 @@ private BoolQueryBuilder fillQueryBuilder(QueryRequestParam queryRequestParam) { }); } else if (queryItemDto.getQueryType() == 4) { queryBuilder.mustNot(QueryBuilders.termQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); + } else if (queryItemDto.getQueryType() == 5) { + queryBuilderItem.must(QueryBuilders.wildcardQuery(queryItemDto.getParameter(), "*" + queryItemDto.getQueryValue() + "*")); } }); queryBuilder.should(queryBuilderItem); @@ -335,4 +346,61 @@ private BoolQueryBuilder fillQueryBuilder(QueryRequestParam queryRequestParam) { } return queryBuilder; } + + + private BoolQueryBuilder fillQueryBuilderQueryItems(Integer logicalOperator, List queryItems) { + //1与2或 + BoolQueryBuilder queryBuilderItem = QueryBuilders.boolQuery(); + if (logicalOperator == 1) { + queryItems.forEach(queryItemDto -> { + //查询类型,精确1 termQuery、模糊2 wildcardQuery、范围3 rangeQuery + if (queryItemDto.getQueryType() == 1) { + queryBuilderItem.should(QueryBuilders.termQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); + } else if (queryItemDto.getQueryType() == 2) { + queryBuilderItem.should(QueryBuilders.matchQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); +// queryBuilderItem.should(QueryBuilders.wildcardQuery(queryItemDto.getParameter(), "*" + queryItemDto.getQueryValue() + "*")); + } else if (queryItemDto.getQueryType() == 3) { + Map mapQueryValue = handleQueryItemsDto(queryItemDto.getQueryValue()); + mapQueryValue.forEach((key, value) -> { + if (key != null && value != null) { + queryBuilderItem.should(QueryBuilders.rangeQuery(queryItemDto.getParameter()).gte(key).lte(value)); + } else if (key != null) { + queryBuilderItem.should(QueryBuilders.rangeQuery(queryItemDto.getParameter()).gte(key)); + } else if (value != null) { + queryBuilderItem.should(QueryBuilders.rangeQuery(queryItemDto.getParameter()).lte(value)); + } + }); + } else if (queryItemDto.getQueryType() == 4) { + queryBuilderItem.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.termQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue()))); + } else if (queryItemDto.getQueryType() == 5) { + queryBuilderItem.must(QueryBuilders.wildcardQuery(queryItemDto.getParameter(), "*" + queryItemDto.getQueryValue() + "*")); + } + }); + } else { + queryItems.forEach(queryItemDto -> { + //查询类型,精确1 termQuery、模糊2 wildcardQuery、范围3 rangeQuery + if (queryItemDto.getQueryType() == 1) { + queryBuilderItem.must(QueryBuilders.termQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); + } else if (queryItemDto.getQueryType() == 2) { + queryBuilderItem.should(QueryBuilders.matchQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); + } else if (queryItemDto.getQueryType() == 3) { + Map mapQueryValue = handleQueryItemsDto(queryItemDto.getQueryValue()); + mapQueryValue.forEach((key, value) -> { + if (key != null && value != null) { + queryBuilderItem.must(QueryBuilders.rangeQuery(queryItemDto.getParameter()).gte(key).lte(value)); + } else if (key != null) { + queryBuilderItem.must(QueryBuilders.rangeQuery(queryItemDto.getParameter()).gte(key)); + } else if (value != null) { + queryBuilderItem.must(QueryBuilders.rangeQuery(queryItemDto.getParameter()).lte(value)); + } + }); + } else if (queryItemDto.getQueryType() == 4) { + queryBuilderItem.mustNot(QueryBuilders.termQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); + } else if (queryItemDto.getQueryType() == 5) { + queryBuilderItem.must(QueryBuilders.wildcardQuery(queryItemDto.getParameter(), "*" + queryItemDto.getQueryValue() + "*")); + } + }); + } + return queryBuilderItem; + } } diff --git a/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/dto/QueryItemsDto.java b/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/dto/QueryItemsDto.java index 399366331..d65bb4410 100644 --- a/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/dto/QueryItemsDto.java +++ b/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/dto/QueryItemsDto.java @@ -9,7 +9,7 @@ public class QueryItemsDto { */ public String parameter; /** - * 查询类型,精确1、模糊2、范围3、不等于4 + * 查询类型,精确1 termQuery、模糊2 wildcardQuery、范围3 rangeQuery、4不等于、5 matchQuery */ public Integer queryType; /** From 05cf6dae888cfbb29c5120a8df6d01c57387da89 Mon Sep 17 00:00:00 2001 From: baojz Date: Sat, 29 Nov 2025 10:54:23 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E4=B8=BAmatchquery=E7=9A=84=E6=83=85?= =?UTF-8?q?=E5=86=B5=EF=BC=8CqueryType=3D5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../netease/lowcode/lib/api/ElasticsearchApi.java | 13 ++++++------- redis-template-tool/pom.xml | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/ElasticsearchApi.java b/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/ElasticsearchApi.java index 57f67dff2..243088e50 100644 --- a/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/ElasticsearchApi.java +++ b/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/ElasticsearchApi.java @@ -310,7 +310,7 @@ private BoolQueryBuilder fillQueryBuilderQueryList(Integer logicalOperator, List } else if (queryItemDto.getQueryType() == 4) { queryBuilder.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.termQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue()))); } else if (queryItemDto.getQueryType() == 5) { - queryBuilderItem.must(QueryBuilders.wildcardQuery(queryItemDto.getParameter(), "*" + queryItemDto.getQueryValue() + "*")); + queryBuilderItem.must(QueryBuilders.matchQuery(queryItemDto.getParameter(), "*" + queryItemDto.getQueryValue() + "*")); } }); queryBuilder.must(queryBuilderItem); @@ -338,7 +338,7 @@ private BoolQueryBuilder fillQueryBuilderQueryList(Integer logicalOperator, List } else if (queryItemDto.getQueryType() == 4) { queryBuilder.mustNot(QueryBuilders.termQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); } else if (queryItemDto.getQueryType() == 5) { - queryBuilderItem.must(QueryBuilders.wildcardQuery(queryItemDto.getParameter(), "*" + queryItemDto.getQueryValue() + "*")); + queryBuilderItem.must(QueryBuilders.matchQuery(queryItemDto.getParameter(), "*" + queryItemDto.getQueryValue() + "*")); } }); queryBuilder.should(queryBuilderItem); @@ -357,8 +357,7 @@ private BoolQueryBuilder fillQueryBuilderQueryItems(Integer logicalOperator, Lis if (queryItemDto.getQueryType() == 1) { queryBuilderItem.should(QueryBuilders.termQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); } else if (queryItemDto.getQueryType() == 2) { - queryBuilderItem.should(QueryBuilders.matchQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); -// queryBuilderItem.should(QueryBuilders.wildcardQuery(queryItemDto.getParameter(), "*" + queryItemDto.getQueryValue() + "*")); + queryBuilderItem.should(QueryBuilders.wildcardQuery(queryItemDto.getParameter(), "*" + queryItemDto.getQueryValue() + "*")); } else if (queryItemDto.getQueryType() == 3) { Map mapQueryValue = handleQueryItemsDto(queryItemDto.getQueryValue()); mapQueryValue.forEach((key, value) -> { @@ -373,7 +372,7 @@ private BoolQueryBuilder fillQueryBuilderQueryItems(Integer logicalOperator, Lis } else if (queryItemDto.getQueryType() == 4) { queryBuilderItem.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.termQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue()))); } else if (queryItemDto.getQueryType() == 5) { - queryBuilderItem.must(QueryBuilders.wildcardQuery(queryItemDto.getParameter(), "*" + queryItemDto.getQueryValue() + "*")); + queryBuilderItem.must(QueryBuilders.matchQuery(queryItemDto.getParameter(), "*" + queryItemDto.getQueryValue() + "*")); } }); } else { @@ -382,7 +381,7 @@ private BoolQueryBuilder fillQueryBuilderQueryItems(Integer logicalOperator, Lis if (queryItemDto.getQueryType() == 1) { queryBuilderItem.must(QueryBuilders.termQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); } else if (queryItemDto.getQueryType() == 2) { - queryBuilderItem.should(QueryBuilders.matchQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); + queryBuilderItem.should(QueryBuilders.wildcardQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); } else if (queryItemDto.getQueryType() == 3) { Map mapQueryValue = handleQueryItemsDto(queryItemDto.getQueryValue()); mapQueryValue.forEach((key, value) -> { @@ -397,7 +396,7 @@ private BoolQueryBuilder fillQueryBuilderQueryItems(Integer logicalOperator, Lis } else if (queryItemDto.getQueryType() == 4) { queryBuilderItem.mustNot(QueryBuilders.termQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); } else if (queryItemDto.getQueryType() == 5) { - queryBuilderItem.must(QueryBuilders.wildcardQuery(queryItemDto.getParameter(), "*" + queryItemDto.getQueryValue() + "*")); + queryBuilderItem.must(QueryBuilders.matchQuery(queryItemDto.getParameter(), "*" + queryItemDto.getQueryValue() + "*")); } }); } diff --git a/redis-template-tool/pom.xml b/redis-template-tool/pom.xml index c3272a748..643854d28 100644 --- a/redis-template-tool/pom.xml +++ b/redis-template-tool/pom.xml @@ -84,7 +84,7 @@ 1.5.1 false - true + From 5b2f2579a74033c953b2b23aed7ce754ba21b336 Mon Sep 17 00:00:00 2001 From: baojz Date: Sat, 29 Nov 2025 10:57:47 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E4=B8=BAmatchquery=E7=9A=84=E6=83=85?= =?UTF-8?q?=E5=86=B5=EF=BC=8CqueryType=3D5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/netease/lowcode/lib/api/ElasticsearchApi.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/ElasticsearchApi.java b/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/ElasticsearchApi.java index 243088e50..af921e3b1 100644 --- a/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/ElasticsearchApi.java +++ b/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/ElasticsearchApi.java @@ -310,7 +310,7 @@ private BoolQueryBuilder fillQueryBuilderQueryList(Integer logicalOperator, List } else if (queryItemDto.getQueryType() == 4) { queryBuilder.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.termQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue()))); } else if (queryItemDto.getQueryType() == 5) { - queryBuilderItem.must(QueryBuilders.matchQuery(queryItemDto.getParameter(), "*" + queryItemDto.getQueryValue() + "*")); + queryBuilderItem.should(QueryBuilders.matchQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); } }); queryBuilder.must(queryBuilderItem); @@ -338,7 +338,7 @@ private BoolQueryBuilder fillQueryBuilderQueryList(Integer logicalOperator, List } else if (queryItemDto.getQueryType() == 4) { queryBuilder.mustNot(QueryBuilders.termQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); } else if (queryItemDto.getQueryType() == 5) { - queryBuilderItem.must(QueryBuilders.matchQuery(queryItemDto.getParameter(), "*" + queryItemDto.getQueryValue() + "*")); + queryBuilderItem.should(QueryBuilders.matchQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); } }); queryBuilder.should(queryBuilderItem); @@ -372,7 +372,7 @@ private BoolQueryBuilder fillQueryBuilderQueryItems(Integer logicalOperator, Lis } else if (queryItemDto.getQueryType() == 4) { queryBuilderItem.should(QueryBuilders.boolQuery().mustNot(QueryBuilders.termQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue()))); } else if (queryItemDto.getQueryType() == 5) { - queryBuilderItem.must(QueryBuilders.matchQuery(queryItemDto.getParameter(), "*" + queryItemDto.getQueryValue() + "*")); + queryBuilderItem.should(QueryBuilders.matchQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); } }); } else { @@ -396,7 +396,7 @@ private BoolQueryBuilder fillQueryBuilderQueryItems(Integer logicalOperator, Lis } else if (queryItemDto.getQueryType() == 4) { queryBuilderItem.mustNot(QueryBuilders.termQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); } else if (queryItemDto.getQueryType() == 5) { - queryBuilderItem.must(QueryBuilders.matchQuery(queryItemDto.getParameter(), "*" + queryItemDto.getQueryValue() + "*")); + queryBuilderItem.should(QueryBuilders.matchQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); } }); } From 32e1142b88fc2a1168a841c43fc79eee9798bd7f Mon Sep 17 00:00:00 2001 From: baojz Date: Sat, 29 Nov 2025 11:03:31 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E4=B8=BAmatchquery=E7=9A=84=E6=83=85?= =?UTF-8?q?=E5=86=B5=EF=BC=8CqueryType=3D5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/netease/lowcode/lib/api/ElasticsearchApi.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/ElasticsearchApi.java b/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/ElasticsearchApi.java index af921e3b1..4ca602275 100644 --- a/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/ElasticsearchApi.java +++ b/common-es-search-tool/src/main/java/com/netease/lowcode/lib/api/ElasticsearchApi.java @@ -338,7 +338,7 @@ private BoolQueryBuilder fillQueryBuilderQueryList(Integer logicalOperator, List } else if (queryItemDto.getQueryType() == 4) { queryBuilder.mustNot(QueryBuilders.termQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); } else if (queryItemDto.getQueryType() == 5) { - queryBuilderItem.should(QueryBuilders.matchQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); + queryBuilderItem.must(QueryBuilders.matchQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); } }); queryBuilder.should(queryBuilderItem); @@ -351,7 +351,7 @@ private BoolQueryBuilder fillQueryBuilderQueryList(Integer logicalOperator, List private BoolQueryBuilder fillQueryBuilderQueryItems(Integer logicalOperator, List queryItems) { //1与2或 BoolQueryBuilder queryBuilderItem = QueryBuilders.boolQuery(); - if (logicalOperator == 1) { + if (logicalOperator == 2) { queryItems.forEach(queryItemDto -> { //查询类型,精确1 termQuery、模糊2 wildcardQuery、范围3 rangeQuery if (queryItemDto.getQueryType() == 1) { @@ -381,7 +381,7 @@ private BoolQueryBuilder fillQueryBuilderQueryItems(Integer logicalOperator, Lis if (queryItemDto.getQueryType() == 1) { queryBuilderItem.must(QueryBuilders.termQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); } else if (queryItemDto.getQueryType() == 2) { - queryBuilderItem.should(QueryBuilders.wildcardQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); + queryBuilderItem.must(QueryBuilders.wildcardQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); } else if (queryItemDto.getQueryType() == 3) { Map mapQueryValue = handleQueryItemsDto(queryItemDto.getQueryValue()); mapQueryValue.forEach((key, value) -> { @@ -396,7 +396,7 @@ private BoolQueryBuilder fillQueryBuilderQueryItems(Integer logicalOperator, Lis } else if (queryItemDto.getQueryType() == 4) { queryBuilderItem.mustNot(QueryBuilders.termQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); } else if (queryItemDto.getQueryType() == 5) { - queryBuilderItem.should(QueryBuilders.matchQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); + queryBuilderItem.must(QueryBuilders.matchQuery(queryItemDto.getParameter(), queryItemDto.getQueryValue())); } }); } From 1c163a9ce3d66dd6b54024a232093fa4bd2efefe Mon Sep 17 00:00:00 2001 From: baojz Date: Mon, 8 Dec 2025 16:51:53 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E9=80=82=E9=85=8D=E5=AF=BC=E5=85=A5excel?= =?UTF-8?q?=E6=89=A9=E5=B1=95=E9=80=BB=E8=BE=91=E4=BD=BF=E7=94=A8lombok?= =?UTF-8?q?=E7=9A=84=E5=9C=BA=E6=99=AF=EF=BC=8C=E6=96=B0=E5=A2=9Elombok?= =?UTF-8?q?=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- EasyExcel/pom.xml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/EasyExcel/pom.xml b/EasyExcel/pom.xml index d8230d98b..7c07ee3f0 100644 --- a/EasyExcel/pom.xml +++ b/EasyExcel/pom.xml @@ -6,7 +6,7 @@ com.netease.lowcode.extensions EasyExcel - 2.4.1 + 2.4.2 8 @@ -108,6 +108,10 @@ codewave-file-connector-library 1.0.3 + + org.projectlombok + lombok + @@ -118,7 +122,7 @@ 1.7.1 false - true + From 8ba23f4bc3d93d7514d19121b4492fb21dcd6d7f Mon Sep 17 00:00:00 2001 From: baojz Date: Sat, 13 Dec 2025 15:36:35 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E6=94=AF=E6=8C=81ide=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E5=BC=80=E5=90=AF=E5=A4=9A=E7=BA=BF=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- async_function_pool/pom.xml | 21 ++++++- .../annotation/AsyncLogicAnnotation.java | 15 +++++ .../lib/tasks/api/FunctionManagerApi.java | 31 +++++++--- .../ExtensionAsyncLogicExcuteAspect.java | 53 ++++++++++++++++ .../util/AsyncLogicAnnotationConfigUtil.java | 61 +++++++++++++++++++ 5 files changed, 170 insertions(+), 11 deletions(-) create mode 100644 async_function_pool/src/main/java/com/netease/lib/tasks/annotation/AsyncLogicAnnotation.java create mode 100644 async_function_pool/src/main/java/com/netease/lib/tasks/aspect/ExtensionAsyncLogicExcuteAspect.java create mode 100644 async_function_pool/src/main/java/com/netease/lib/tasks/util/AsyncLogicAnnotationConfigUtil.java diff --git a/async_function_pool/pom.xml b/async_function_pool/pom.xml index 82aaa31cb..15bd9c2ac 100644 --- a/async_function_pool/pom.xml +++ b/async_function_pool/pom.xml @@ -12,13 +12,13 @@ com.netease async_function_pool - 1.0.4 + 1.1.0 8 8 UTF-8 - 3.3 + 3.8 - 1.3.7 + 1.4.0 8 @@ -113,38 +113,38 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + com.netease.lowcode nasl-metadata-maven-plugin 1.4.1 false - false + true diff --git a/freemarker-tool/src/main/java/com/netease/lowcode/freemarker/util/FreeMarkerUtil.java b/freemarker-tool/src/main/java/com/netease/lowcode/freemarker/util/FreeMarkerUtil.java index da3c58140..474d575ce 100644 --- a/freemarker-tool/src/main/java/com/netease/lowcode/freemarker/util/FreeMarkerUtil.java +++ b/freemarker-tool/src/main/java/com/netease/lowcode/freemarker/util/FreeMarkerUtil.java @@ -10,17 +10,11 @@ import com.spire.xls.FileFormat; import com.spire.xls.Workbook; import freemarker.cache.URLTemplateLoader; -import freemarker.core.HTMLOutputFormat; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; -import org.apache.poi.ss.usermodel.WorkbookFactory; - -import java.io.*; -import java.net.MalformedURLException; -import java.net.URL; -import java.nio.charset.StandardCharsets; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.WorkbookFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; @@ -37,7 +31,10 @@ import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; - +import java.io.*; +import java.net.MalformedURLException; +import java.net.URL; +import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.regex.Matcher; @@ -79,12 +76,12 @@ public static DownloadResponseDTO createFile(CreateRequest request) { return DownloadResponseDTO.OK(outUrl.getResult(), outUrl.getFilePath()); } else { - return DownloadResponseDTO.FAIL("文件上传失败",""); + return DownloadResponseDTO.FAIL("文件上传失败", ""); } } catch (Throwable e) { - return DownloadResponseDTO.FAIL("执行异常:"+e.getMessage(), Arrays.toString(e.getStackTrace())); + return DownloadResponseDTO.FAIL("执行异常:" + e.getMessage(), Arrays.toString(e.getStackTrace())); } } @@ -122,12 +119,12 @@ public static DownloadResponseDTO createNewXlsx(CreateRequest request) { return DownloadResponseDTO.OK(outUrl.getResult(), outUrl.getFilePath()); } else { - return DownloadResponseDTO.FAIL("文件上传失败",""); + return DownloadResponseDTO.FAIL("文件上传失败", ""); } } catch (Throwable e) { - return DownloadResponseDTO.FAIL("执行异常:"+e.getMessage(), Arrays.toString(e.getStackTrace())); + return DownloadResponseDTO.FAIL("执行异常:" + e.getMessage(), Arrays.toString(e.getStackTrace())); } } @@ -141,7 +138,7 @@ public static DownloadResponseDTO createNewXlsx(CreateRequest request) { public static DownloadResponseDTO createNewDocxFile(CreateDocxRequest request) { log.info("createDocxFile request:{}", request); - Map templateFileMap = new HashMap<>(); + Map templateFileMap = new HashMap<>(); try { CreateDocxRequestValidator.validate(request); @@ -176,7 +173,7 @@ public static DownloadResponseDTO createNewDocxFile(CreateDocxRequest request) { // 下载模板文件 if (request.templateUrl != null) { for (Map.Entry entry : request.templateUrl.entrySet()) { - templateFileMap.put(entry.getKey(),FileUtil.getTrueUrl(entry.getValue())); + templateFileMap.put(entry.getKey(), FileUtil.getTrueUrl(entry.getValue())); } } @@ -193,14 +190,14 @@ public static DownloadResponseDTO createNewDocxFile(CreateDocxRequest request) { // System.out.println("文件写入成功"); // } // 上传文件 - UploadResponseDTO outUrl = FileUtil.uploadStream(new ByteArrayInputStream(outputStream.toByteArray()),request.outFileName); + UploadResponseDTO outUrl = FileUtil.uploadStream(new ByteArrayInputStream(outputStream.toByteArray()), request.outFileName); outputStream.close(); if (Objects.nonNull(outUrl)) { return DownloadResponseDTO.OK(outUrl.getResult(), outUrl.getFilePath()); } else { - return DownloadResponseDTO.FAIL("文件上传失败",""); + return DownloadResponseDTO.FAIL("文件上传失败", ""); } } catch (Throwable e) { return DownloadResponseDTO.FAIL("执行异常:" + e.getMessage(), Arrays.toString(e.getStackTrace())); @@ -210,7 +207,7 @@ public static DownloadResponseDTO createNewDocxFile(CreateDocxRequest request) { public static ByteArrayOutputStream createDocx(String jsonData, Map picMap, InputStream docxInputSteam, - Map templateFileMap, + Map templateFileMap, boolean enableRichTextImage) throws Exception { log.info("createDocx jsonData:{}, picMap:{}, docxInputSteam:{}, templateFileMap:{}, enableRichTextImage:{}", jsonData, picMap, docxInputSteam, templateFileMap, enableRichTextImage); ZipOutputStream zipOut = null; @@ -247,13 +244,13 @@ public static ByteArrayOutputStream createDocx(String jsonData, //最初设计的模板 zipOut = new ZipOutputStream(outputStream); //开始覆盖文档, 不要删除原图片,存在无需替换的情况,因此全部保留 - writeZipFileV2(new ByteArrayInputStream(templateDocBytes),zipOut,templateFileStreamMap); + writeZipFileV2(new ByteArrayInputStream(templateDocBytes), zipOut, templateFileStreamMap); //写入图片 ,可能存在用户命名与保留文件重复,客户图片名称前加特定标识,由用户控制 writePicture(picMap, zipOut); return outputStream; } finally { - if (zipOut != null){ + if (zipOut != null) { zipOut.close(); } } @@ -282,7 +279,7 @@ protected URL getURL(String name) { } private static void writeZipFileV2(InputStream zipInputStream, - ZipOutputStream zipOut,Map templateFileStreamMap) throws IOException { + ZipOutputStream zipOut, Map templateFileStreamMap) throws IOException { int len; byte[] buffer = new byte[1024]; @@ -317,10 +314,10 @@ private static void writePicture(Map picMap, ZipOutputStream zip Base64.Decoder decoder = Base64.getDecoder(); for (Map.Entry entry : picMap.entrySet()) { // 用户输入的图片名称可能会与原文件重复,这里交由使用方控制,图片名称前加个标识区分,防止覆盖 - ZipEntry next = new ZipEntry("word/media/"+entry.getKey()); + ZipEntry next = new ZipEntry("word/media/" + entry.getKey()); zipout.putNextEntry(new ZipEntry(next.toString())); byte[] bytes = decoder.decode(entry.getValue()); - InputStream in = new ByteArrayInputStream(bytes); + InputStream in = new ByteArrayInputStream(bytes); while ((len = in.read(buffer)) != -1) { zipout.write(buffer, 0, len); } @@ -582,4 +579,19 @@ private static String guessImageContentType(String extension) { return "image/" + extension; } } + + /** + * 通用文本模板处理 + */ + @NaslLogic + public static String textFreemarker(String templateStr, Map data) { + try { + Template template = new Template("dynamic", new StringReader(templateStr)); + StringWriter writer = new StringWriter(); + template.process(data, writer); + return writer.toString(); + } catch (Exception e) { + throw new RuntimeException("模板处理失败", e); + } + } }