|
@@ -1,5 +1,6 @@
|
|
package com.gree.mall.manager.logic.workorder;
|
|
package com.gree.mall.manager.logic.workorder;
|
|
|
|
|
|
|
|
+import cn.hutool.core.convert.Convert;
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.date.DateUtil;
|
|
import com.google.common.collect.Lists;
|
|
import com.google.common.collect.Lists;
|
|
import com.gree.mall.manager.bean.admin.AdminUserCom;
|
|
import com.gree.mall.manager.bean.admin.AdminUserCom;
|
|
@@ -16,6 +17,7 @@ import com.gree.mall.manager.plus.service.PgOrderBaseService;
|
|
import io.swagger.models.auth.In;
|
|
import io.swagger.models.auth.In;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
+import lombok.var;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.elasticsearch.index.query.BoolQueryBuilder;
|
|
import org.elasticsearch.index.query.BoolQueryBuilder;
|
|
import org.elasticsearch.index.query.QueryBuilder;
|
|
import org.elasticsearch.index.query.QueryBuilder;
|
|
@@ -25,15 +27,22 @@ import org.elasticsearch.search.aggregations.AggregationBuilders;
|
|
import org.elasticsearch.search.aggregations.Aggregations;
|
|
import org.elasticsearch.search.aggregations.Aggregations;
|
|
import org.elasticsearch.search.aggregations.bucket.filter.FilterAggregationBuilder;
|
|
import org.elasticsearch.search.aggregations.bucket.filter.FilterAggregationBuilder;
|
|
import org.elasticsearch.search.aggregations.bucket.filter.ParsedFilter;
|
|
import org.elasticsearch.search.aggregations.bucket.filter.ParsedFilter;
|
|
|
|
+import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramAggregationBuilder;
|
|
|
|
+import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramInterval;
|
|
|
|
+import org.elasticsearch.search.aggregations.bucket.histogram.Histogram;
|
|
|
|
+import org.elasticsearch.search.aggregations.bucket.histogram.ParsedDateHistogram;
|
|
import org.springframework.data.domain.PageRequest;
|
|
import org.springframework.data.domain.PageRequest;
|
|
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
|
|
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
|
|
import org.springframework.data.elasticsearch.core.SearchHits;
|
|
import org.springframework.data.elasticsearch.core.SearchHits;
|
|
|
|
+import org.springframework.data.elasticsearch.core.query.FetchSourceFilter;
|
|
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
|
|
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
|
|
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
|
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
|
+import java.time.ZoneOffset;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -54,32 +63,120 @@ public class OrderBaseCountLogic {
|
|
public OrderBaseCountBean baseCountBean( String startTime,
|
|
public OrderBaseCountBean baseCountBean( String startTime,
|
|
String endTime){
|
|
String endTime){
|
|
AdminUserCom adminUser = commonLogic.getAdminUser();
|
|
AdminUserCom adminUser = commonLogic.getAdminUser();
|
|
- OrderBaseCountBean orderBaseCountBean = orderBaseCMapper
|
|
|
|
- .countOrderBaseIndex(adminUser.getCompanyWechatId(), adminUser.getAdminWebsitIds(),adminUser.getType()
|
|
|
|
- ,startTime,endTime);
|
|
|
|
-
|
|
|
|
-/*
|
|
|
|
- List<PgOrderBase> pgOrderBaseList = pgOrderBaseService.lambdaQuery()
|
|
|
|
- .select(PgOrderBase::getOrderType, PgOrderBase::getOrderTypeText, PgOrderBase::getCreateTime, PgOrderBase::getId
|
|
|
|
- , PgOrderBase::getOrderStatus,PgOrderBase::getAppointmentTime)
|
|
|
|
- .between(PgOrderBase::getCreateTime, DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), -30)), new Date())
|
|
|
|
- .in(CollectionUtils.isNotEmpty(adminUser.getCompanyWechatIds()),PgOrderBase::getCompanyWechatId,adminUser.getCompanyWechatId())
|
|
|
|
- .and(CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds()),
|
|
|
|
- v -> v.in(PgOrderBase::getWebsitId,adminUser.getAdminWebsitIds()).or()
|
|
|
|
- .in(PgOrderBase::getCreateWebsitId,adminUser.getAdminWebsitIds()))
|
|
|
|
- .list();
|
|
|
|
-*/
|
|
|
|
-
|
|
|
|
-/*
|
|
|
|
- List<PgOrderBase> pgOrderBaseListOver = pgOrderBaseService.lambdaQuery()
|
|
|
|
- .select(PgOrderBase::getOrderType, PgOrderBase::getOrderTypeText, PgOrderBase::getCreateTime, PgOrderBase::getId
|
|
|
|
- , PgOrderBase::getOrderStatus,PgOrderBase::getAppointmentTime,PgOrderBase::getOverDate,PgOrderBase::getOverTime)
|
|
|
|
- .between(PgOrderBase::getOverTime, DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), -8)), new Date())
|
|
|
|
- .in(CollectionUtils.isNotEmpty(adminUser.getCompanyWechatIds()),PgOrderBase::getCompanyWechatId,adminUser.getCompanyWechatId())
|
|
|
|
- .and(CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds()),
|
|
|
|
- v -> v.in(PgOrderBase::getWebsitId,adminUser.getAdminWebsitIds()).or().in(PgOrderBase::getCreateWebsitId,adminUser.getAdminWebsitIds()))
|
|
|
|
- .list();
|
|
|
|
-*/
|
|
|
|
|
|
+ OrderBaseCountBean orderBaseCountBean = new OrderBaseCountBean();
|
|
|
|
+ BoolQueryBuilder queryBuilderCount = QueryBuilders.boolQuery();
|
|
|
|
+
|
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds())) {
|
|
|
|
+ queryBuilderCount.must(
|
|
|
|
+ QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("create_websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
+ .should(QueryBuilders.termsQuery("websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (startTime != null){
|
|
|
|
+ queryBuilderCount.must(QueryBuilders.rangeQuery("create_time")
|
|
|
|
+ .gte(startTime)
|
|
|
|
+ .lte(endTime)
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //待派工
|
|
|
|
+ NativeSearchQuery searchQueryDPG = new NativeSearchQueryBuilder()
|
|
|
|
+ .withQuery(queryBuilderCount)
|
|
|
|
+ .withPageable(PageRequest.of(1, 1))
|
|
|
|
+ .addAggregation(this.getAggs(AggregationBuilders.filter("DPG", QueryBuilders.boolQuery()
|
|
|
|
+ .must(QueryBuilders.termsQuery("order_status","DSHPG","CJ","YPD","DXSPD","DZBPG","DWDSPGP","DXSSPGP","DTJXSSPGP","DZBSPGP","DFZXPD","DFZXSPGP","DWDPG","DWDPD")
|
|
|
|
+ ))))
|
|
|
|
+ .build();
|
|
|
|
+ SearchHits responseDPG = elasticsearchRestTemplate.search(searchQueryDPG, OrderBaseEs.class);
|
|
|
|
+
|
|
|
|
+ orderBaseCountBean.setDpg(Convert.toInt(this.getWorkerOrderCountResult(responseDPG.getAggregations(),"DPG")));
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //待接收
|
|
|
|
+ NativeSearchQuery searchQueryDJS = new NativeSearchQueryBuilder()
|
|
|
|
+ .withQuery(queryBuilderCount)
|
|
|
|
+ .withPageable(PageRequest.of(1, 1))
|
|
|
|
+ .addAggregation(this.getAggs(AggregationBuilders.filter("DJS", QueryBuilders.boolQuery()
|
|
|
|
+ .must(QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("is_meet", false))
|
|
|
|
+ .should(QueryBuilders.termsQuery("order_status", "DJD")))
|
|
|
|
+ .mustNot(QueryBuilders.termsQuery("order_status", "YQX", "FWQX", "FL", "FWZT", "YCGB"))
|
|
|
|
+ )))
|
|
|
|
+ .build();
|
|
|
|
+ SearchHits responseDJS = elasticsearchRestTemplate.search(searchQueryDJS, OrderBaseEs.class);
|
|
|
|
+
|
|
|
|
+ orderBaseCountBean.setDjs(Convert.toInt(this.getWorkerOrderCountResult(responseDJS.getAggregations(),"DJS")));
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //待抢单
|
|
|
|
+ NativeSearchQuery searchQueryDQD = new NativeSearchQueryBuilder()
|
|
|
|
+ .withQuery(queryBuilderCount)
|
|
|
|
+ .withPageable(PageRequest.of(1, 1))
|
|
|
|
+ .addAggregation(this.getAggs(AggregationBuilders.filter("DQD", QueryBuilders.boolQuery()
|
|
|
|
+ .must(QueryBuilders.termsQuery("order_status","DQD")
|
|
|
|
+ ))))
|
|
|
|
+ .build();
|
|
|
|
+ SearchHits responseDQD = elasticsearchRestTemplate.search(searchQueryDQD, OrderBaseEs.class);
|
|
|
|
+
|
|
|
|
+ orderBaseCountBean.setDqd(Convert.toInt(this.getWorkerOrderCountResult(responseDQD.getAggregations(),"DQD")));
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //服务中
|
|
|
|
+ NativeSearchQuery searchQueryfwz = new NativeSearchQueryBuilder()
|
|
|
|
+ .withQuery(queryBuilderCount)
|
|
|
|
+ .withPageable(PageRequest.of(1, 1))
|
|
|
|
+ .addAggregation(this.getAggs(AggregationBuilders.filter("fwz", QueryBuilders.boolQuery()
|
|
|
|
+ .must(QueryBuilders.termsQuery("order_status","FWZ","GCSZT","BFWG","DSM","WDBH","XSBH","TJXSBH","ZBBH","FZXBH")
|
|
|
|
+ ))))
|
|
|
|
+ .build();
|
|
|
|
+ SearchHits responsefwz = elasticsearchRestTemplate.search(searchQueryfwz, OrderBaseEs.class);
|
|
|
|
+
|
|
|
|
+ orderBaseCountBean.setFwz(Convert.toInt(this.getWorkerOrderCountResult(responsefwz.getAggregations(),"fwz")));
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //待预约
|
|
|
|
+ NativeSearchQuery searchQueryDYY = new NativeSearchQueryBuilder()
|
|
|
|
+ .withQuery(queryBuilderCount)
|
|
|
|
+ .withPageable(PageRequest.of(1, 1))
|
|
|
|
+ .addAggregation(this.getAggs(AggregationBuilders.filter("DYY", QueryBuilders.boolQuery()
|
|
|
|
+ .mustNot(QueryBuilders.termsQuery("order_status","YWG","GCSZX","WDWG","YWGO","YQX","FWZT","YCGB",
|
|
|
|
+ "FWQX","FL","YJS","LRCD","DSHPG","CJ","YPD","DXSPD","DZBPG","DWDSPGP","DXSSPGP","DTJXSSPGP","DZBSPGP")
|
|
|
|
+ )
|
|
|
|
+ .mustNot(QueryBuilders.existsQuery("appointment_time"))
|
|
|
|
+ )))
|
|
|
|
+ .build();
|
|
|
|
+ SearchHits responseDYY = elasticsearchRestTemplate.search(searchQueryDYY, OrderBaseEs.class);
|
|
|
|
+
|
|
|
|
+ orderBaseCountBean.setDyy(Convert.toInt(this.getWorkerOrderCountResult(responseDYY.getAggregations(),"DYY")));
|
|
|
|
+
|
|
|
|
+ //异常单处理
|
|
|
|
+ NativeSearchQuery searchQueryYCDCL = new NativeSearchQueryBuilder()
|
|
|
|
+ .withQuery(queryBuilderCount)
|
|
|
|
+ .withPageable(PageRequest.of(1, 1))
|
|
|
|
+ .addAggregation(this.getAggs(AggregationBuilders.filter("YCDCL", QueryBuilders.boolQuery()
|
|
|
|
+ .mustNot(QueryBuilders.termsQuery("order_status","YWG","YWGO","YJS"))
|
|
|
|
+ .must(QueryBuilders.termsQuery("is_exception",true))
|
|
|
|
+
|
|
|
|
+ )))
|
|
|
|
+ .build();
|
|
|
|
+ SearchHits responseYCDCL = elasticsearchRestTemplate.search(searchQueryYCDCL, OrderBaseEs.class);
|
|
|
|
+
|
|
|
|
+ orderBaseCountBean.setYcdcl(Convert.toInt(this.getWorkerOrderCountResult(responseYCDCL.getAggregations(),"YCDCL")));
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //差评
|
|
|
|
+ NativeSearchQuery searchQueryCP = new NativeSearchQueryBuilder()
|
|
|
|
+ .withQuery(queryBuilderCount)
|
|
|
|
+ .withPageable(PageRequest.of(1, 1))
|
|
|
|
+ .addAggregation(this.getAggs(AggregationBuilders.filter("CP", QueryBuilders.boolQuery()
|
|
|
|
+ .must(QueryBuilders.termsQuery("appraise_status","C"))
|
|
|
|
+
|
|
|
|
+ )))
|
|
|
|
+ .build();
|
|
|
|
+ SearchHits responseCP = elasticsearchRestTemplate.search(searchQueryCP, OrderBaseEs.class);
|
|
|
|
+
|
|
|
|
+ orderBaseCountBean.setCp(Convert.toInt(this.getWorkerOrderCountResult(responseCP.getAggregations(),"CP")));
|
|
|
|
+
|
|
|
|
|
|
Map<String,List<Long>> qtddqs = new HashMap<>();
|
|
Map<String,List<Long>> qtddqs = new HashMap<>();
|
|
|
|
|
|
@@ -104,87 +201,136 @@ public class OrderBaseCountLogic {
|
|
orderStatusQx.add("YCGB");
|
|
orderStatusQx.add("YCGB");
|
|
orderStatusQx.add("FWQX");
|
|
orderStatusQx.add("FWQX");
|
|
orderStatusQx.add("FL");
|
|
orderStatusQx.add("FL");
|
|
|
|
+ orderStatusQx.add("YZP");
|
|
|
|
+
|
|
|
|
+ BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
|
|
|
|
|
|
- for (int i = 6; i >= 0; i--) {
|
|
|
|
- Integer day = i*-1;
|
|
|
|
- /* Long xzgd = pgOrderBaseList.stream().filter(item -> item.getCreateTime().before(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day)))) &&
|
|
|
|
- item.getCreateTime().after(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))))
|
|
|
|
- ).count();
|
|
|
|
-*/
|
|
|
|
- BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
|
|
|
|
-
|
|
|
|
- if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds())) {
|
|
|
|
- queryBuilder.must(
|
|
|
|
- QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("create_websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
- .should(QueryBuilders.termsQuery("websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
- );
|
|
|
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds())) {
|
|
|
|
+ queryBuilder.must(
|
|
|
|
+ QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("create_websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
+ .should(QueryBuilders.termsQuery("websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+ queryBuilder.must(
|
|
|
|
+ QueryBuilders.rangeQuery("create_time")
|
|
|
|
+ .gte(DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (-6))),"yyyy-MM-dd HH:mm:ss"))
|
|
|
|
+ .lte(DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss")));
|
|
|
|
+
|
|
|
|
+ NativeSearchQuery searchQueryDay = new NativeSearchQueryBuilder()
|
|
|
|
+ .withQuery(queryBuilder)
|
|
|
|
+ .withSourceFilter(new FetchSourceFilter(new String[]{"create_time"}, null))
|
|
|
|
+ .withPageable(PageRequest.of(1, 1))
|
|
|
|
+ .addAggregation(AggregationBuilders.dateHistogram("xzgd")
|
|
|
|
+ .field("create_time")
|
|
|
|
+ .calendarInterval(DateHistogramInterval.DAY)
|
|
|
|
+ .format("yyyy-MM-dd"))
|
|
|
|
+ .build();
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 执行查询并获取聚合结果
|
|
|
|
+ SearchHits<OrderBaseEs> searchHitsXZGD = elasticsearchRestTemplate.search(searchQueryDay, OrderBaseEs.class);
|
|
|
|
+
|
|
|
|
+ var aggregationsXZGD = searchHitsXZGD.getAggregations();
|
|
|
|
+
|
|
|
|
+ if (aggregationsXZGD != null) {
|
|
|
|
+ ParsedDateHistogram dateHistogram = aggregationsXZGD.get("xzgd");
|
|
|
|
+ List<? extends Histogram.Bucket> buckets = dateHistogram.getBuckets();
|
|
|
|
+
|
|
|
|
+ // 遍历每天的统计结果
|
|
|
|
+ for (Histogram.Bucket bucket : buckets) {
|
|
|
|
+ String date = bucket.getKeyAsString();
|
|
|
|
+ long count = bucket.getDocCount();
|
|
|
|
+ xzgdList.add(count);
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
|
|
- /* queryBuilder.must(QueryBuilders.rangeQuery("create_time")
|
|
|
|
- .gte(startTime)
|
|
|
|
- .lte(endTime)
|
|
|
|
- );*/
|
|
|
|
- //新增工单
|
|
|
|
- NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
|
|
|
|
- .withQuery(queryBuilder)
|
|
|
|
- .withPageable(PageRequest.of(1, 1))
|
|
|
|
- .addAggregation(this.getAggs(AggregationBuilders.filter("xzgd", QueryBuilders.boolQuery()
|
|
|
|
- .must(QueryBuilders.rangeQuery("create_time")
|
|
|
|
- .gte(DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss"))
|
|
|
|
- .lte(DateUtil.format(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss")))
|
|
|
|
- )))
|
|
|
|
- .build();
|
|
|
|
- SearchHits response = elasticsearchRestTemplate.search(searchQuery, OrderBaseEs.class);
|
|
|
|
-
|
|
|
|
- xzgdList.add(this.getWorkerOrderCountResult(response.getAggregations(),"xzgd"));
|
|
|
|
-
|
|
|
|
- /* Long wgd = pgOrderBaseListOver.stream().filter(item -> item.getOverTime().before(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day)))) &&
|
|
|
|
- item.getOverTime().after(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))))
|
|
|
|
- && orderStatus.contains(item.getOrderStatus()) ).count();*/
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- //完工单
|
|
|
|
- NativeSearchQuery searchQueryWGD = new NativeSearchQueryBuilder()
|
|
|
|
- .withQuery(queryBuilder)
|
|
|
|
- .withPageable(PageRequest.of(1, 1))
|
|
|
|
- .addAggregation(this.getAggs(AggregationBuilders.filter("wgd", QueryBuilders.boolQuery()
|
|
|
|
- .must(QueryBuilders.termsQuery("order_status",orderStatus))
|
|
|
|
- .must(QueryBuilders.rangeQuery("over_time")
|
|
|
|
- .gte(DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss"))
|
|
|
|
- .lte(DateUtil.format(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss")))
|
|
|
|
- )))
|
|
|
|
- .build();
|
|
|
|
- SearchHits responseWGD = elasticsearchRestTemplate.search(searchQueryWGD, OrderBaseEs.class);
|
|
|
|
- wgdList.add(this.getWorkerOrderCountResult(responseWGD.getAggregations(),"wgd"));
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-/* Long jxz = pgOrderBaseList.stream().filter(item -> item.getCreateTime().before(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day)))) &&
|
|
|
|
- item.getCreateTime().after(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))))
|
|
|
|
- && !orderStatus.contains(item.getOrderStatus())
|
|
|
|
- && !orderStatusQx.contains(item.getOrderStatus())
|
|
|
|
- ).count();*/
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- //待商户派工
|
|
|
|
- NativeSearchQuery searchQueryJXZ= new NativeSearchQueryBuilder()
|
|
|
|
- .withQuery(queryBuilder)
|
|
|
|
- .withPageable(PageRequest.of(1, 1))
|
|
|
|
- .addAggregation(this.getAggs(AggregationBuilders.filter("jxz", QueryBuilders.boolQuery()
|
|
|
|
- .mustNot(QueryBuilders.termsQuery("order_status",orderStatus))
|
|
|
|
- .mustNot(QueryBuilders.termsQuery("order_status",orderStatusQx))
|
|
|
|
- .must(QueryBuilders.rangeQuery("create_time")
|
|
|
|
- .gte(DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss"))
|
|
|
|
- .lte(DateUtil.format(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss")))
|
|
|
|
- )))
|
|
|
|
- .build();
|
|
|
|
- SearchHits responseJXZ = elasticsearchRestTemplate.search(searchQueryJXZ, OrderBaseEs.class);
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- jxzList.add(this.getWorkerOrderCountResult(responseJXZ.getAggregations(),"jxz"));
|
|
|
|
|
|
+ BoolQueryBuilder queryBuilderWGD = QueryBuilders.boolQuery();
|
|
|
|
|
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds())) {
|
|
|
|
+ queryBuilderWGD.must(
|
|
|
|
+ QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("create_websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
+ .should(QueryBuilders.termsQuery("websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+ queryBuilderWGD.must(
|
|
|
|
+ QueryBuilders.boolQuery()
|
|
|
|
+ .must(QueryBuilders.termsQuery("order_status",orderStatus))
|
|
|
|
+ .must( QueryBuilders.rangeQuery("over_time")
|
|
|
|
+ .gte(DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (-6))),"yyyy-MM-dd HH:mm:ss"))
|
|
|
|
+ .lte(DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss")))
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ NativeSearchQuery searchQueryWGD = new NativeSearchQueryBuilder()
|
|
|
|
+ .withQuery(queryBuilderWGD)
|
|
|
|
+ .withSourceFilter(new FetchSourceFilter(new String[]{"create_time"}, null))
|
|
|
|
+ .withPageable(PageRequest.of(1, 1))
|
|
|
|
+ .addAggregation(AggregationBuilders.dateHistogram("WGD")
|
|
|
|
+ .field("over_time")
|
|
|
|
+ .calendarInterval(DateHistogramInterval.DAY)
|
|
|
|
+ .format("yyyy-MM-dd"))
|
|
|
|
+ .build();
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 执行查询并获取聚合结果
|
|
|
|
+ SearchHits<OrderBaseEs> searchHitsXWGD = elasticsearchRestTemplate.search(searchQueryWGD, OrderBaseEs.class);
|
|
|
|
+
|
|
|
|
+ var aggregationsWGD = searchHitsXWGD.getAggregations();
|
|
|
|
+
|
|
|
|
+ if (aggregationsWGD != null) {
|
|
|
|
+ ParsedDateHistogram dateHistogram = aggregationsWGD.get("WGD");
|
|
|
|
+ List<? extends Histogram.Bucket> buckets = dateHistogram.getBuckets();
|
|
|
|
+
|
|
|
|
+ // 遍历每天的统计结果
|
|
|
|
+ for (Histogram.Bucket bucket : buckets) {
|
|
|
|
+ String date = bucket.getKeyAsString();
|
|
|
|
+ long count = bucket.getDocCount();
|
|
|
|
+ wgdList.add(count);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ BoolQueryBuilder queryBuilderJXZ = QueryBuilders.boolQuery();
|
|
|
|
|
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds())) {
|
|
|
|
+ queryBuilderJXZ.must(
|
|
|
|
+ QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("create_websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
+ .should(QueryBuilders.termsQuery("websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+ queryBuilderJXZ.must(
|
|
|
|
+ QueryBuilders.rangeQuery("create_time")
|
|
|
|
+ .gte(DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (-6))),"yyyy-MM-dd HH:mm:ss"))
|
|
|
|
+ .lte(DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss")));
|
|
|
|
+
|
|
|
|
+ queryBuilderJXZ.mustNot(QueryBuilders.termsQuery("order_status",orderStatus))
|
|
|
|
+ .mustNot(QueryBuilders.termsQuery("order_status",orderStatusQx));
|
|
|
|
+
|
|
|
|
+ NativeSearchQuery searchQueryJXZ= new NativeSearchQueryBuilder()
|
|
|
|
+ .withQuery(queryBuilderJXZ)
|
|
|
|
+ .withSourceFilter(new FetchSourceFilter(new String[]{"create_time"}, null))
|
|
|
|
+ .withPageable(PageRequest.of(1, 1))
|
|
|
|
+ .addAggregation(AggregationBuilders.dateHistogram("JXZ")
|
|
|
|
+ .field("create_time")
|
|
|
|
+ .calendarInterval(DateHistogramInterval.DAY)
|
|
|
|
+ .format("yyyy-MM-dd"))
|
|
|
|
+ .build();
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 执行查询并获取聚合结果
|
|
|
|
+ SearchHits<OrderBaseEs> searchHitsJXZ= elasticsearchRestTemplate.search(searchQueryJXZ, OrderBaseEs.class);
|
|
|
|
+
|
|
|
|
+ var aggregationsJXZ = searchHitsJXZ.getAggregations();
|
|
|
|
+
|
|
|
|
+ if (aggregationsJXZ != null) {
|
|
|
|
+ ParsedDateHistogram dateHistogram = aggregationsJXZ.get("JXZ");
|
|
|
|
+ List<? extends Histogram.Bucket> buckets = dateHistogram.getBuckets();
|
|
|
|
+
|
|
|
|
+ // 遍历每天的统计结果
|
|
|
|
+ for (Histogram.Bucket bucket : buckets) {
|
|
|
|
+ String date = bucket.getKeyAsString();
|
|
|
|
+ long count = bucket.getDocCount();
|
|
|
|
+ jxzList.add(count);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
qtddqs.put("新增工单",xzgdList);
|
|
qtddqs.put("新增工单",xzgdList);
|
|
@@ -193,37 +339,44 @@ public class OrderBaseCountLogic {
|
|
|
|
|
|
orderBaseCountBean.setQtddqs(qtddqs);
|
|
orderBaseCountBean.setQtddqs(qtddqs);
|
|
|
|
|
|
- for (int i = 0; i < 7; i++) {
|
|
|
|
- Integer day = i;
|
|
|
|
-
|
|
|
|
- BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
|
|
|
|
-
|
|
|
|
- if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds())) {
|
|
|
|
- queryBuilder.must(
|
|
|
|
- QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("create_websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
- .should(QueryBuilders.termsQuery("websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
- );
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-/* Long qtsm = pgOrderBaseList.stream().filter(item -> item.getAppointmentTime() != null && item.getAppointmentTime().before(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day)))) &&
|
|
|
|
- item.getAppointmentTime().after(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))))
|
|
|
|
-
|
|
|
|
- ).count();*/
|
|
|
|
-
|
|
|
|
- //七天上门
|
|
|
|
- NativeSearchQuery searchQueryQTSM= new NativeSearchQueryBuilder()
|
|
|
|
- .withQuery(queryBuilder)
|
|
|
|
- .withPageable(PageRequest.of(1, 1))
|
|
|
|
- .addAggregation(this.getAggs(AggregationBuilders.filter("qtsm", QueryBuilders.boolQuery()
|
|
|
|
- .must(QueryBuilders.rangeQuery("appointment_time")
|
|
|
|
- .gte(DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss"))
|
|
|
|
- .lte(DateUtil.format(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss"))))))
|
|
|
|
- .build();
|
|
|
|
- SearchHits responseQTSM = elasticsearchRestTemplate.search(searchQueryQTSM, OrderBaseEs.class);
|
|
|
|
|
|
|
|
|
|
+ BoolQueryBuilder queryBuilderQTSM = QueryBuilders.boolQuery();
|
|
|
|
|
|
- qtsmList.add(this.getWorkerOrderCountResult(responseQTSM.getAggregations(),"qtsm"));
|
|
|
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds())) {
|
|
|
|
+ queryBuilderQTSM.must(
|
|
|
|
+ QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("create_websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
+ .should(QueryBuilders.termsQuery("websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ queryBuilderQTSM.must(
|
|
|
|
+ QueryBuilders.rangeQuery("appointment_time")
|
|
|
|
+ .gte(DateUtil.format(DateUtil.beginOfDay(new Date()),"yyyy-MM-dd HH:mm:ss"))
|
|
|
|
+ .lte(DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (7))),"yyyy-MM-dd HH:mm:ss")));
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ NativeSearchQuery searchQueryQTSM= new NativeSearchQueryBuilder()
|
|
|
|
+ .withQuery(queryBuilderQTSM)
|
|
|
|
+ .withPageable(PageRequest.of(1, 1))
|
|
|
|
+ .addAggregation(AggregationBuilders.dateHistogram("QTDSM")
|
|
|
|
+ .field("appointment_time")
|
|
|
|
+ .calendarInterval(DateHistogramInterval.DAY)
|
|
|
|
+ .format("yyyy-MM-dd"))
|
|
|
|
+ .build();
|
|
|
|
+ SearchHits responseQTSM = elasticsearchRestTemplate.search(searchQueryQTSM, OrderBaseEs.class);
|
|
|
|
+
|
|
|
|
+ var aggregationsQTSM = responseQTSM.getAggregations();
|
|
|
|
+
|
|
|
|
+ if (aggregationsQTSM != null) {
|
|
|
|
+ ParsedDateHistogram dateHistogram = aggregationsQTSM.get("QTDSM");
|
|
|
|
+ List<? extends Histogram.Bucket> buckets = dateHistogram.getBuckets();
|
|
|
|
+
|
|
|
|
+ // 遍历每天的统计结果
|
|
|
|
+ for (Histogram.Bucket bucket : buckets) {
|
|
|
|
+ String date = bucket.getKeyAsString();
|
|
|
|
+ long count = bucket.getDocCount();
|
|
|
|
+ qtsmList.add(count);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -236,46 +389,91 @@ public class OrderBaseCountLogic {
|
|
collect.add(OrderTypeEnum.REPAIR.getRemark());
|
|
collect.add(OrderTypeEnum.REPAIR.getRemark());
|
|
|
|
|
|
Map<String,List<Long>> wglxfb = new HashMap<>();
|
|
Map<String,List<Long>> wglxfb = new HashMap<>();
|
|
- for (String orderTypeText : collect) {
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
+ BoolQueryBuilder queryBuilderAZ = QueryBuilders.boolQuery();
|
|
|
|
+
|
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds())) {
|
|
|
|
+ queryBuilderAZ.must(
|
|
|
|
+ QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("create_websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
+ .should(QueryBuilders.termsQuery("websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ queryBuilderAZ.must(
|
|
|
|
+ QueryBuilders.termsQuery("order_type_text",OrderTypeEnum.INSTALL.getRemark()));
|
|
|
|
+
|
|
|
|
+ queryBuilderAZ.must(
|
|
|
|
+ QueryBuilders.rangeQuery("over_time")
|
|
|
|
+ .gte(DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (-29))),"yyyy-MM-dd HH:mm:ss"))
|
|
|
|
+ .lte(DateUtil.format(DateUtil.endOfDay(new Date()),"yyyy-MM-dd HH:mm:ss")));
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ NativeSearchQuery searchQueryAZ= new NativeSearchQueryBuilder()
|
|
|
|
+ .withQuery(queryBuilderAZ)
|
|
|
|
+ .withPageable(PageRequest.of(1, 1))
|
|
|
|
+ .addAggregation(AggregationBuilders.dateHistogram("AZ")
|
|
|
|
+ .field("over_time")
|
|
|
|
+ .calendarInterval(DateHistogramInterval.DAY)
|
|
|
|
+ .format("yyyy-MM-dd"))
|
|
|
|
+ .build();
|
|
|
|
+ SearchHits responseAZ = elasticsearchRestTemplate.search(searchQueryAZ, OrderBaseEs.class);
|
|
|
|
+
|
|
|
|
+ var aggregationsAZ = responseAZ.getAggregations();
|
|
|
|
+
|
|
|
|
+ if (aggregationsAZ != null) {
|
|
|
|
+ ParsedDateHistogram dateHistogram = aggregationsAZ.get("AZ");
|
|
|
|
+ List<? extends Histogram.Bucket> buckets = dateHistogram.getBuckets();
|
|
List<Long> list = new ArrayList<>();
|
|
List<Long> list = new ArrayList<>();
|
|
- for (int i = 0; i < 30; i++) {
|
|
|
|
- Integer day = i*-1;
|
|
|
|
-
|
|
|
|
- /* Long num = pgOrderBaseList.stream().filter(item -> item.getCreateTime().before(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day)))) &&
|
|
|
|
- item.getCreateTime().after(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))))
|
|
|
|
- && item.getOrderTypeText().equals(orderTypeText)
|
|
|
|
- ).count();*/
|
|
|
|
-
|
|
|
|
- BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
|
|
|
|
-
|
|
|
|
- if (CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds())) {
|
|
|
|
- queryBuilder.must(
|
|
|
|
- QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("create_websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
- .should(QueryBuilders.termsQuery("websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
- );
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //工单类型
|
|
|
|
- NativeSearchQuery searchQueryGDLX= new NativeSearchQueryBuilder()
|
|
|
|
- .withQuery(queryBuilder)
|
|
|
|
- .withPageable(PageRequest.of(1, 1))
|
|
|
|
- .addAggregation(this.getAggs(AggregationBuilders.filter("gdlx", QueryBuilders.boolQuery()
|
|
|
|
- .must(QueryBuilders.termsQuery("order_type_text",orderTypeText))
|
|
|
|
- .must(QueryBuilders.rangeQuery("create_time")
|
|
|
|
- .gte(DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss"))
|
|
|
|
- .lte(DateUtil.format(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss"))))))
|
|
|
|
- .build();
|
|
|
|
- SearchHits responseGDLX = elasticsearchRestTemplate.search(searchQueryGDLX, OrderBaseEs.class);
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- list.add(this.getWorkerOrderCountResult(responseGDLX.getAggregations(),"gdlx"));
|
|
|
|
|
|
+ // 遍历每天的统计结果
|
|
|
|
+ for (Histogram.Bucket bucket : buckets) {
|
|
|
|
+ String date = bucket.getKeyAsString();
|
|
|
|
+ long count = bucket.getDocCount();
|
|
|
|
+ list.add(count);
|
|
}
|
|
}
|
|
|
|
|
|
- Collections.reverse(list);
|
|
|
|
|
|
+ wglxfb.put(OrderTypeEnum.INSTALL.getRemark(),list);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ BoolQueryBuilder queryBuilderWX = QueryBuilders.boolQuery();
|
|
|
|
|
|
- wglxfb.put(orderTypeText,list);
|
|
|
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds())) {
|
|
|
|
+ queryBuilderWX.must(
|
|
|
|
+ QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("create_websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
+ .should(QueryBuilders.termsQuery("websit_id", adminUser.getAdminWebsitIds()))
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+ queryBuilderWX.must(QueryBuilders.termsQuery("order_type_text",OrderTypeEnum.REPAIR.getRemark()));
|
|
|
|
+
|
|
|
|
+ queryBuilderWX.must(QueryBuilders.rangeQuery("over_time")
|
|
|
|
+ .gte(DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (-29))),"yyyy-MM-dd HH:mm:ss"))
|
|
|
|
+ .lte(DateUtil.format(DateUtil.endOfDay(new Date()),"yyyy-MM-dd HH:mm:ss")));
|
|
|
|
+
|
|
|
|
+ NativeSearchQuery searchQueryWX= new NativeSearchQueryBuilder()
|
|
|
|
+ .withQuery(queryBuilderWX)
|
|
|
|
+ .withPageable(PageRequest.of(1, 1))
|
|
|
|
+ .addAggregation(AggregationBuilders.dateHistogram("WX")
|
|
|
|
+ .field("over_time")
|
|
|
|
+ .calendarInterval(DateHistogramInterval.DAY)
|
|
|
|
+ .format("yyyy-MM-dd"))
|
|
|
|
+ .build();
|
|
|
|
+ SearchHits responseWX = elasticsearchRestTemplate.search(searchQueryWX, OrderBaseEs.class);
|
|
|
|
+
|
|
|
|
+ var aggregationsWX = responseWX.getAggregations();
|
|
|
|
+
|
|
|
|
+ if (aggregationsWX != null) {
|
|
|
|
+ ParsedDateHistogram dateHistogram = aggregationsWX.get("WX");
|
|
|
|
+ List<? extends Histogram.Bucket> buckets = dateHistogram.getBuckets();
|
|
|
|
+ List<Long> list = new ArrayList<>();
|
|
|
|
+ // 遍历每天的统计结果
|
|
|
|
+ for (Histogram.Bucket bucket : buckets) {
|
|
|
|
+ String date = bucket.getKeyAsString();
|
|
|
|
+ long count = bucket.getDocCount();
|
|
|
|
+ list.add(count);
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ wglxfb.put(OrderTypeEnum.REPAIR.getRemark(),list);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|