|
@@ -7,6 +7,10 @@ import org.apache.logging.log4j.util.Strings;
|
|
|
import org.elasticsearch.index.query.BoolQueryBuilder;
|
|
|
import org.elasticsearch.index.query.QueryBuilders;
|
|
|
import org.elasticsearch.index.query.RangeQueryBuilder;
|
|
|
+import org.elasticsearch.search.aggregations.AggregationBuilders;
|
|
|
+import org.elasticsearch.search.aggregations.Aggregations;
|
|
|
+import org.elasticsearch.search.aggregations.metrics.ParsedSum;
|
|
|
+import org.elasticsearch.search.aggregations.metrics.SumAggregationBuilder;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.PageRequest;
|
|
|
import org.springframework.data.domain.Pageable;
|
|
@@ -30,10 +34,10 @@ public class OrderManagementService {
|
|
|
/**
|
|
|
* 订单查询
|
|
|
*/
|
|
|
- public Map<String,Object> orderSearch(OrderSearchPram orderSearchPram) {
|
|
|
- //以创建时间倒序排列
|
|
|
+ public Map<String, Object> orderSearch(OrderSearchPram orderSearchPram) {
|
|
|
HashMap<String, Object> pageMap = new HashMap<>();
|
|
|
- ArrayList<OrderEsDto> resultsList = new ArrayList<OrderEsDto>();
|
|
|
+ ArrayList<OrderEsDto> resultsList = new ArrayList<>();
|
|
|
+ //以创建时间倒序排列
|
|
|
Sort sort = Sort.by(Sort.Direction.DESC, "applyDate");
|
|
|
Date applyDateStart = orderSearchPram.getApplyDateStart();
|
|
|
Date applyDateEnd = orderSearchPram.getApplyDateEnd();
|
|
@@ -54,11 +58,13 @@ public class OrderManagementService {
|
|
|
rangeQueryBuilder = QueryBuilders.rangeQuery("checkTime")
|
|
|
.gte(orderSearchPram.getCheckTimeStart().getTime())
|
|
|
.lte(orderSearchPram.getCheckTimeEnd().getTime());
|
|
|
- } else {
|
|
|
- rangeQueryBuilder = QueryBuilders.rangeQuery("applyDate")
|
|
|
- .gte(applyDateStart.getTime())
|
|
|
- .lte(applyDateEnd.getTime());
|
|
|
- }
|
|
|
+ boolQuery.must(rangeQueryBuilder);
|
|
|
+ }
|
|
|
+ rangeQueryBuilder = QueryBuilders.rangeQuery("applyDate")
|
|
|
+ .gte(applyDateStart.getTime())
|
|
|
+ .lte(applyDateEnd.getTime());
|
|
|
+ boolQuery.must(rangeQueryBuilder);
|
|
|
+
|
|
|
//筛选条件
|
|
|
//订单号
|
|
|
if (Strings.isNotBlank(orderSearchPram.getOrderId())) {
|
|
@@ -71,22 +77,26 @@ public class OrderManagementService {
|
|
|
//电话号码
|
|
|
if (Strings.isNotBlank(orderSearchPram.getUsedMobile())) {
|
|
|
String usedMobiles = orderSearchPram.getUsedMobile();
|
|
|
- if (usedMobiles.indexOf(",") >= 0){
|
|
|
+ if (usedMobiles.indexOf(",") >= 0) {
|
|
|
String[] usedMobileList = usedMobiles.split(",");
|
|
|
for (String usedMobile : usedMobileList) {
|
|
|
boolQuery.should(QueryBuilders.termQuery("usedMobile", usedMobile));
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
boolQuery.must(QueryBuilders.termQuery("usedMobile", usedMobiles));
|
|
|
}
|
|
|
}
|
|
|
- //客户名称 暂时用的ID
|
|
|
+ //客户名称
|
|
|
if (Strings.isNotBlank(orderSearchPram.getEnterpriseIdDesc())) {
|
|
|
- boolQuery.must(QueryBuilders.termQuery("enterpriseId", orderSearchPram.getEnterpriseIdDesc()));
|
|
|
+ BoolQueryBuilder tempQueryBuilder = QueryBuilders.boolQuery();
|
|
|
+ tempQueryBuilder.should(QueryBuilders.wildcardQuery("user.keyword", "*" + orderSearchPram.getEnterpriseIdDesc() + "*"));
|
|
|
+ boolQuery.must(tempQueryBuilder);
|
|
|
}
|
|
|
- //通道名称 暂时用的ID
|
|
|
+ //通道名称
|
|
|
if (Strings.isNotBlank(orderSearchPram.getChannelIdDesc())) {
|
|
|
- boolQuery.must(QueryBuilders.termQuery("channelId", orderSearchPram.getChannelIdDesc()));
|
|
|
+ BoolQueryBuilder tempQueryBuilder = QueryBuilders.boolQuery();
|
|
|
+ tempQueryBuilder.should(QueryBuilders.wildcardQuery("channelName.keyword", "*" + orderSearchPram.getChannelIdDesc() + "*"));
|
|
|
+ boolQuery.must(tempQueryBuilder);
|
|
|
}
|
|
|
//订单状态
|
|
|
if (Strings.isNotBlank(orderSearchPram.getStatus())) {
|
|
@@ -109,35 +119,37 @@ public class OrderManagementService {
|
|
|
|
|
|
NativeSearchQuery query = new NativeSearchQueryBuilder()
|
|
|
.withPageable(pageable)
|
|
|
- .withQuery(boolQuery.must(rangeQueryBuilder))
|
|
|
+ .withQuery(boolQuery)
|
|
|
.build();
|
|
|
//查询数据
|
|
|
- SearchHits<OrderEsDto> hits = restTemplate.search(query, OrderEsDto.class);
|
|
|
- long total = hits.getTotalHits();
|
|
|
- List<SearchHit<OrderEsDto>> searchHits = hits.getSearchHits();
|
|
|
- System.out.println("一共" + total + "个");
|
|
|
- System.out.println("搜索结果" + searchHits.size() + "个");
|
|
|
- for (SearchHit<OrderEsDto> searchHit : searchHits) {
|
|
|
- OrderEsDto orderEsDto = searchHit.getContent();
|
|
|
- resultsList.add(orderEsDto);
|
|
|
-// log.info(stuEntity.toString());
|
|
|
- }
|
|
|
- pageMap.put("records",resultsList);
|
|
|
- pageMap.put("size",size);
|
|
|
- pageMap.put("current",page + 1);
|
|
|
- pageMap.put("total",total);
|
|
|
- pageMap.put("pages",total%size == 0 ? (int)total/size:(int)total/size + 1);
|
|
|
+ try {
|
|
|
+ SearchHits<OrderEsDto> hits = restTemplate.search(query, OrderEsDto.class);
|
|
|
+ long total = hits.getTotalHits();
|
|
|
+ List<SearchHit<OrderEsDto>> searchHits = hits.getSearchHits();
|
|
|
+ System.out.println("一共" + total + "个");
|
|
|
+ System.out.println("搜索结果" + searchHits.size() + "个");
|
|
|
+ for (SearchHit<OrderEsDto> searchHit : searchHits) {
|
|
|
+ OrderEsDto orderEsDto = searchHit.getContent();
|
|
|
+ resultsList.add(orderEsDto);
|
|
|
+ }
|
|
|
+ pageMap.put("records", resultsList);
|
|
|
+ pageMap.put("size", size);
|
|
|
+ pageMap.put("current", page + 1);
|
|
|
+ pageMap.put("total", total);
|
|
|
+ pageMap.put("pages", total % size == 0 ? (int) total / size : (int) total / size + 1);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error(String.valueOf(e));
|
|
|
+ }
|
|
|
return pageMap;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 订单查询(财务)
|
|
|
- *
|
|
|
*/
|
|
|
- public Map<String,Object> orderSearchFinance(OrderSearchPram orderSearchPram) {
|
|
|
- //以创建时间倒序排列
|
|
|
+ public Map<String, Object> orderSearchFinance(OrderSearchPram orderSearchPram) {
|
|
|
HashMap<String, Object> pageMap = new HashMap<>();
|
|
|
- ArrayList<OrderEsDto> resultsList = new ArrayList<OrderEsDto>();
|
|
|
+ ArrayList<OrderEsDto> resultsList = new ArrayList<>();
|
|
|
+ //以创建时间倒序排列
|
|
|
Sort sort = Sort.by(Sort.Direction.DESC, "applyDate");
|
|
|
Date applyDateStart = orderSearchPram.getApplyDateStart();
|
|
|
Date applyDateEnd = orderSearchPram.getApplyDateEnd();
|
|
@@ -158,11 +170,13 @@ public class OrderManagementService {
|
|
|
rangeQueryBuilder = QueryBuilders.rangeQuery("checkTime")
|
|
|
.gte(orderSearchPram.getCheckTimeStart().getTime())
|
|
|
.lte(orderSearchPram.getCheckTimeEnd().getTime());
|
|
|
- } else {
|
|
|
- rangeQueryBuilder = QueryBuilders.rangeQuery("applyDate")
|
|
|
- .gte(applyDateStart.getTime())
|
|
|
- .lte(applyDateEnd.getTime());
|
|
|
+ boolQuery.must(rangeQueryBuilder);
|
|
|
}
|
|
|
+ rangeQueryBuilder = QueryBuilders.rangeQuery("applyDate")
|
|
|
+ .gte(applyDateStart.getTime())
|
|
|
+ .lte(applyDateEnd.getTime());
|
|
|
+ boolQuery.must(rangeQueryBuilder);
|
|
|
+
|
|
|
//筛选条件
|
|
|
//订单号
|
|
|
if (Strings.isNotBlank(orderSearchPram.getOrderId())) {
|
|
@@ -175,22 +189,26 @@ public class OrderManagementService {
|
|
|
//电话号码
|
|
|
if (Strings.isNotBlank(orderSearchPram.getUsedMobile())) {
|
|
|
String usedMobiles = orderSearchPram.getUsedMobile();
|
|
|
- if (usedMobiles.indexOf(",") >= 0){
|
|
|
+ if (usedMobiles.indexOf(",") >= 0) {
|
|
|
String[] usedMobileList = usedMobiles.split(",");
|
|
|
for (String usedMobile : usedMobileList) {
|
|
|
boolQuery.should(QueryBuilders.termQuery("usedMobile", usedMobile));
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
boolQuery.must(QueryBuilders.termQuery("usedMobile", usedMobiles));
|
|
|
}
|
|
|
}
|
|
|
- //客户名称 暂时用的ID
|
|
|
+ //客户名称
|
|
|
if (Strings.isNotBlank(orderSearchPram.getEnterpriseIdDesc())) {
|
|
|
- boolQuery.must(QueryBuilders.termQuery("enterpriseId", orderSearchPram.getEnterpriseIdDesc()));
|
|
|
+ BoolQueryBuilder tempQueryBuilder = QueryBuilders.boolQuery();
|
|
|
+ tempQueryBuilder.should(QueryBuilders.wildcardQuery("user.keyword", "*" + orderSearchPram.getEnterpriseIdDesc() + "*"));
|
|
|
+ boolQuery.must(tempQueryBuilder);
|
|
|
}
|
|
|
- //通道名称 暂时用的ID
|
|
|
+ //通道名称
|
|
|
if (Strings.isNotBlank(orderSearchPram.getChannelIdDesc())) {
|
|
|
- boolQuery.must(QueryBuilders.termQuery("channelId", orderSearchPram.getChannelIdDesc()));
|
|
|
+ BoolQueryBuilder tempQueryBuilder = QueryBuilders.boolQuery();
|
|
|
+ tempQueryBuilder.should(QueryBuilders.wildcardQuery("channelName.keyword", "*" + orderSearchPram.getChannelIdDesc() + "*"));
|
|
|
+ boolQuery.must(tempQueryBuilder);
|
|
|
}
|
|
|
//订单状态
|
|
|
if (Strings.isNotBlank(orderSearchPram.getStatus())) {
|
|
@@ -211,34 +229,53 @@ public class OrderManagementService {
|
|
|
boolQuery.must(tempQueryBuilder);
|
|
|
}
|
|
|
|
|
|
+ //统计条件
|
|
|
+ SumAggregationBuilder sumBuilder = AggregationBuilders.sum("sumPrice").field("price");
|
|
|
+ SumAggregationBuilder sumBuilder2 = AggregationBuilders.sum("sumPartnerPrice").field("partnerBalancePrice");
|
|
|
+ SumAggregationBuilder sumBuilder3 = AggregationBuilders.sum("sumOperatorPrice").field("operatorBalancePrice");
|
|
|
+
|
|
|
+
|
|
|
NativeSearchQuery query = new NativeSearchQueryBuilder()
|
|
|
.withPageable(pageable)
|
|
|
.withQuery(boolQuery.must(rangeQueryBuilder))
|
|
|
+ .addAggregation(sumBuilder)
|
|
|
.build();
|
|
|
+ query.addAggregation(sumBuilder2);
|
|
|
+ query.addAggregation(sumBuilder3);
|
|
|
//查询数据
|
|
|
- SearchHits<OrderEsDto> hits = restTemplate.search(query, OrderEsDto.class);
|
|
|
- long total = hits.getTotalHits();
|
|
|
- List<SearchHit<OrderEsDto>> searchHits = hits.getSearchHits();
|
|
|
- System.out.println("一共" + total + "个");
|
|
|
- System.out.println("搜索结果" + searchHits.size() + "个");
|
|
|
- for (SearchHit<OrderEsDto> searchHit : searchHits) {
|
|
|
- OrderEsDto orderEsDto = searchHit.getContent();
|
|
|
- resultsList.add(orderEsDto);
|
|
|
-// log.info(stuEntity.toString());
|
|
|
- }
|
|
|
- pageMap.put("records",resultsList);
|
|
|
- pageMap.put("size",size);
|
|
|
- pageMap.put("current",page + 1);
|
|
|
- pageMap.put("total",total);
|
|
|
- pageMap.put("pages",total%size == 0 ? (int)total/size:(int)total/size + 1);
|
|
|
+ try {
|
|
|
+ SearchHits<OrderEsDto> hits = restTemplate.search(query, OrderEsDto.class);
|
|
|
+ Aggregations aggregations = hits.getAggregations();
|
|
|
+ double sumPrice = ((ParsedSum) aggregations.get("sumPrice")).getValue();
|
|
|
+ double sumPartnerPrice = ((ParsedSum) aggregations.get("sumPartnerPrice")).getValue();
|
|
|
+ double sumOperatorPrice = ((ParsedSum) aggregations.get("sumOperatorPrice")).getValue();
|
|
|
+
|
|
|
+ long total = hits.getTotalHits();
|
|
|
+ List<SearchHit<OrderEsDto>> searchHits = hits.getSearchHits();
|
|
|
+ System.out.println("一共" + total + "个");
|
|
|
+ System.out.println("搜索结果" + searchHits.size() + "个");
|
|
|
+ for (SearchHit<OrderEsDto> searchHit : searchHits) {
|
|
|
+ OrderEsDto orderEsDto = searchHit.getContent();
|
|
|
+ resultsList.add(orderEsDto);
|
|
|
+ }
|
|
|
+ pageMap.put("sumPrice", sumPrice);
|
|
|
+ pageMap.put("sumPartnerPrice", sumPartnerPrice);
|
|
|
+ pageMap.put("sumOperatorPrice", sumOperatorPrice);
|
|
|
+ pageMap.put("records", resultsList);
|
|
|
+ pageMap.put("size", size);
|
|
|
+ pageMap.put("current", page + 1);
|
|
|
+ pageMap.put("total", total);
|
|
|
+ pageMap.put("pages", total % size == 0 ? (int) total / size : (int) total / size + 1);
|
|
|
+ }catch(Exception e) {
|
|
|
+ log.error(String.valueOf(e));
|
|
|
+ }
|
|
|
return pageMap;
|
|
|
}
|
|
|
+}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-}
|
|
|
-
|
|
|
|
|
|
|
|
|
|