|
@@ -1,5 +1,7 @@
|
|
|
package com.fire.admin.service;
|
|
|
|
|
|
+import cn.hutool.poi.excel.BigExcelWriter;
|
|
|
+import cn.hutool.poi.excel.ExcelUtil;
|
|
|
import com.fire.admin.request.DispatchSearchPram;
|
|
|
import com.fire.admin.request.OrderSearchPram;
|
|
|
import com.fire.es.DispatchDto;
|
|
@@ -13,6 +15,9 @@ 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.elasticsearch.search.sort.FieldSortBuilder;
|
|
|
+import org.elasticsearch.search.sort.SortBuilders;
|
|
|
+import org.elasticsearch.search.sort.SortOrder;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.PageRequest;
|
|
|
import org.springframework.data.domain.Pageable;
|
|
@@ -411,6 +416,123 @@ public class OrderManagementService {
|
|
|
}
|
|
|
return pageMap;
|
|
|
}
|
|
|
+
|
|
|
+ public ArrayList<OrderEsDto> getOrderList(OrderSearchPram orderSearchPram) {
|
|
|
+ HashMap<String, Object> pageMap = new HashMap<>();
|
|
|
+ ArrayList<OrderEsDto> resultsList = new ArrayList<>();
|
|
|
+ //查询时间范围
|
|
|
+ Date applyDateStart = orderSearchPram.getApplyDateStart();
|
|
|
+ Date applyDateEnd = orderSearchPram.getApplyDateEnd();
|
|
|
+ //以创建时间倒序排列
|
|
|
+ FieldSortBuilder timeSort = SortBuilders.fieldSort("applyDate").order(SortOrder.DESC);
|
|
|
+
|
|
|
+ BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
|
|
|
+ RangeQueryBuilder rangeQueryBuilder = null;
|
|
|
+ //判断回调时间参数是否为空 不为空以回调时间来查询 否则用创建时间来查询
|
|
|
+ if (null != orderSearchPram.getCallbackTimeStart()) {
|
|
|
+ rangeQueryBuilder = QueryBuilders.rangeQuery("callbackTime")
|
|
|
+ .gte(orderSearchPram.getCallbackTimeStart().getTime())
|
|
|
+ .lte(orderSearchPram.getCallbackTimeEnd().getTime());
|
|
|
+ boolQuery.must(rangeQueryBuilder);
|
|
|
+ boolQuery.must(QueryBuilders.existsQuery("callbackTime"));
|
|
|
+ }
|
|
|
+ rangeQueryBuilder = QueryBuilders.rangeQuery("applyDate")
|
|
|
+ .gte(applyDateStart.getTime())
|
|
|
+ .lte(applyDateEnd.getTime());
|
|
|
+ boolQuery.must(rangeQueryBuilder);
|
|
|
+
|
|
|
+ //筛选条件
|
|
|
+ //订单号
|
|
|
+ if (Strings.isNotBlank(orderSearchPram.getOrderId())) {
|
|
|
+ boolQuery.must(QueryBuilders.termQuery("orderId", orderSearchPram.getOrderId()));
|
|
|
+ }
|
|
|
+ //客户订单号
|
|
|
+ if (Strings.isNotBlank(orderSearchPram.getExtorderId())) {
|
|
|
+ boolQuery.must(QueryBuilders.termQuery("extorderId", orderSearchPram.getExtorderId()));
|
|
|
+ }
|
|
|
+
|
|
|
+ //商户订单号
|
|
|
+ if (Strings.isNotBlank(orderSearchPram.getGwSeqNo())) {
|
|
|
+ boolQuery.must(QueryBuilders.termQuery("gwSeqNo", orderSearchPram.getGwSeqNo()));
|
|
|
+ boolQuery.must(QueryBuilders.existsQuery("gwSeqNo"));
|
|
|
+ }
|
|
|
+
|
|
|
+ //回调状态
|
|
|
+ if (Strings.isNotBlank(orderSearchPram.getCallbackStatus())) {
|
|
|
+ boolQuery.must(QueryBuilders.termQuery("callbackStatus", orderSearchPram.getCallbackStatus()));
|
|
|
+ boolQuery.must(QueryBuilders.existsQuery("callbackStatus"));
|
|
|
+ }
|
|
|
+
|
|
|
+ //电话号码
|
|
|
+ if (Strings.isNotBlank(orderSearchPram.getPhoneNo())) {
|
|
|
+ String usedMobiles = orderSearchPram.getPhoneNo();
|
|
|
+ if (usedMobiles.contains(",")) {
|
|
|
+ String[] usedMobileList = usedMobiles.split(",");
|
|
|
+ BoolQueryBuilder temp = QueryBuilders.boolQuery();
|
|
|
+ for (String usedMobile : usedMobileList) {
|
|
|
+ temp.should(QueryBuilders.termQuery("phoneNo", usedMobile));
|
|
|
+ }
|
|
|
+ boolQuery.must(temp);
|
|
|
+ } else {
|
|
|
+ boolQuery.must(QueryBuilders.termQuery("phoneNo", usedMobiles));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //客户名称
|
|
|
+ if (Strings.isNotBlank(orderSearchPram.getCustomerName())) {
|
|
|
+ boolQuery.must(QueryBuilders.wildcardQuery("customerName.keyword", "*" + orderSearchPram.getCustomerName() + "*"));
|
|
|
+ }
|
|
|
+ //通道名称
|
|
|
+ if (Strings.isNotBlank(orderSearchPram.getChannelName())) {
|
|
|
+ boolQuery.must(QueryBuilders.wildcardQuery("channelName.keyword", "*" + orderSearchPram.getChannelName() + "*" ));
|
|
|
+ boolQuery.must(QueryBuilders.existsQuery("channelName"));
|
|
|
+ }
|
|
|
+ //订单状态
|
|
|
+ if (Strings.isNotBlank(orderSearchPram.getStatus())) {
|
|
|
+ boolQuery.must(QueryBuilders.termQuery("status", orderSearchPram.getStatus()));
|
|
|
+ }
|
|
|
+ //运营商
|
|
|
+ if (Strings.isNotBlank(orderSearchPram.getPhoneOperator())) {
|
|
|
+ boolQuery.must(QueryBuilders.termQuery("phoneOperator", orderSearchPram.getPhoneOperator()));
|
|
|
+ }
|
|
|
+ //面额
|
|
|
+ if (Strings.isNotBlank(orderSearchPram.getFlowAmount())) {
|
|
|
+ String flowAmount = orderSearchPram.getFlowAmount();
|
|
|
+ if (flowAmount.contains("-")) {
|
|
|
+ String[] flowAmountSplit = flowAmount.split("-");
|
|
|
+ rangeQueryBuilder = QueryBuilders.rangeQuery("flowAmount")
|
|
|
+ .gte(flowAmountSplit[0])
|
|
|
+ .lte(flowAmountSplit[1]);
|
|
|
+ boolQuery.must(rangeQueryBuilder);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //归属地
|
|
|
+ if (Strings.isNotBlank(orderSearchPram.getPhoneHome())) {
|
|
|
+ boolQuery.must(QueryBuilders.wildcardQuery("phoneHome.keyword", "*" + orderSearchPram.getPhoneHome() + "*"));
|
|
|
+ }
|
|
|
+
|
|
|
+ NativeSearchQuery query = new NativeSearchQueryBuilder()
|
|
|
+ .withSort(timeSort)
|
|
|
+ .withQuery(boolQuery)
|
|
|
+ .build();
|
|
|
+ //查询数据
|
|
|
+ try {
|
|
|
+ SearchHits<OrderEsDto> hits = restTemplate.search(query, OrderEsDto.class);
|
|
|
+ long total = hits.getTotalHits();
|
|
|
+ List<SearchHit<OrderEsDto>> searchHits = hits.getSearchHits();
|
|
|
+ System.out.println("一共" + total + "个");
|
|
|
+ for (SearchHit<OrderEsDto> searchHit : searchHits) {
|
|
|
+ OrderEsDto orderEsDto = searchHit.getContent();
|
|
|
+ resultsList.add(orderEsDto);
|
|
|
+ }
|
|
|
+ //写出到EXCEL
|
|
|
+// BigExcelWriter writer= ExcelUtil.getBigWriter("e:/xxx.xlsx");
|
|
|
+// writer.write(resultsList);
|
|
|
+// writer.close();
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error(String.valueOf(e));
|
|
|
+ }
|
|
|
+ return resultsList;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|