Ver Fonte

Merge remote-tracking branch 'origin/develop' into develop

FengChaoYu há 2 meses atrás
pai
commit
2f0833ead3
24 ficheiros alterados com 1034 adições e 298 exclusões
  1. 86 0
      mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/workorder/PgOrderWorkerDateEs.java
  2. 2 0
      mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/workorder/PgOrderWorkerEs.java
  3. 3 1
      mall-miniapp-service/src/main/java/com/gree/mall/miniapp/config/aop/ApiAspect.java
  4. 2 2
      mall-miniapp-service/src/main/java/com/gree/mall/miniapp/controller/user/UserController.java
  5. 1 1
      mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/es/EsLogic.java
  6. 5 4
      mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/order/PayOrderLogic.java
  7. 246 26
      mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/workorder/OrderBaseLogic.java
  8. 2 2
      mall-miniapp-service/src/main/resources/bootstrap-prd.properties
  9. 1 1
      mall-miniapp-service/src/main/resources/mapper/workorder/OrderBaseCMapper.xml
  10. 7 22
      mall-server-api/src/main/java/com/gree/mall/manager/controller/admin/AdminUserController.java
  11. 1 1
      mall-server-api/src/main/java/com/gree/mall/manager/controller/big/BigController.java
  12. 24 5
      mall-server-api/src/main/java/com/gree/mall/manager/controller/workerorder/ESOrderBaseController.java
  13. 4 1
      mall-server-api/src/main/java/com/gree/mall/manager/controller/workerorder/OrderBaseController.java
  14. 180 12
      mall-server-api/src/main/java/com/gree/mall/manager/logic/big/BigLogic.java
  15. 16 8
      mall-server-api/src/main/java/com/gree/mall/manager/logic/comlist/WorkerComListLogic.java
  16. 15 0
      mall-server-api/src/main/java/com/gree/mall/manager/logic/contract/WebsitContractSignLogic.java
  17. 30 2
      mall-server-api/src/main/java/com/gree/mall/manager/logic/es/EsLogic.java
  18. 11 35
      mall-server-api/src/main/java/com/gree/mall/manager/logic/worker/WorkerWarrantyLogic.java
  19. 361 163
      mall-server-api/src/main/java/com/gree/mall/manager/logic/workorder/OrderBaseCountLogic.java
  20. 7 8
      mall-server-api/src/main/java/com/gree/mall/manager/logic/workorder/OrderBaseEsLogic.java
  21. 1 1
      mall-server-api/src/main/java/com/gree/mall/manager/logic/workorder/OrderBaseLogic.java
  22. 27 1
      mall-server-api/src/main/java/com/gree/mall/manager/utils/JwtUtils.java
  23. 1 1
      mall-server-api/src/main/resources/mapper/workorder/OrderBaseCMapper.xml
  24. 1 1
      mall-server-sync-api/src/main/resources/mapper/workorder/OrderBaseCMapper.xml

+ 86 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/workorder/PgOrderWorkerDateEs.java

@@ -0,0 +1,86 @@
+package com.gree.mall.miniapp.bean.workorder;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.elasticsearch.annotations.DateFormat;
+import org.springframework.data.elasticsearch.annotations.Document;
+import org.springframework.data.elasticsearch.annotations.Field;
+import org.springframework.data.elasticsearch.annotations.FieldType;
+
+import java.util.Date;
+
+/**
+ * @author qinrongjun
+ * @description
+ * @date 2023/6/19 10:39 星期一
+ */
+@Data
+@Document(indexName = "pg_order_worker")
+public class PgOrderWorkerDateEs {
+
+    @Id
+    @Field(value = "id",  type = FieldType.Keyword)
+    private String id;
+
+    @ApiModelProperty(value = "工单号")
+    @Field(value = "order_base_id", type = FieldType.Keyword)
+    private String orderBaseId;
+
+    @ApiModelProperty(value = "网点id")
+    @Field(value = "websit_id", type = FieldType.Keyword)
+    private String websitId;
+
+    @ApiModelProperty(value = "网点名称")
+    @Field(value = "websit_name", type = FieldType.Keyword)
+    private String websitName;
+
+    @ApiModelProperty(value = "师傅id")
+    @Field(value = "worker_id", type = FieldType.Keyword)
+    private String workerId;
+
+    @ApiModelProperty(value = "师傅名称")
+    @Field(value = "worker_name", type = FieldType.Keyword)
+    private String workerName;
+
+    @ApiModelProperty(value = "师傅手机号")
+    @Field(value = "worker_mobile", type = FieldType.Keyword)
+    private String workerMobile;
+
+    @ApiModelProperty(value = "师傅编号")
+    @Field(value = "worker_number", type = FieldType.Keyword)
+    private String workerNumber;
+
+    @ApiModelProperty(value = "师傅身份证")
+    @Field(value = "worker_idcard", type = FieldType.Keyword)
+    private String workerIdcard;
+
+    @ApiModelProperty(value = "师傅查询条件")
+    @Field(value = "worker_query", type = FieldType.Keyword)
+    private String workerQuery;
+
+    @ApiModelProperty(value = "是否费用审批(维保工单用)")
+    @Field(value = "is_examine", type = FieldType.Boolean)
+    private Boolean isExamine;
+
+    @ApiModelProperty(value = "是否为大工或主要服务人员 1=是 0=否")
+    @Field(value = "is_master", type = FieldType.Boolean)
+    private Boolean isMaster;
+
+    @ApiModelProperty(value = "创建时间")
+    @Field(value = "create_time", type = FieldType.Date,format = DateFormat.custom, pattern ="yyyy-MM-dd HH:mm:ss")
+    private String createTime;
+
+    @ApiModelProperty(value = "修改时间")
+    @Field(value = "update_time", type = FieldType.Date,format = DateFormat.custom, pattern ="yyyy-MM-dd HH:mm:ss")
+    private String updateTime;
+
+    @ApiModelProperty(value = "创建人")
+    @Field(value = "create_by", type = FieldType.Keyword)
+    private String createBy;
+
+    @ApiModelProperty(value = "修改人")
+    @Field(value = "update_by", type = FieldType.Keyword)
+    private String updateBy;
+
+}

+ 2 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/workorder/PgOrderWorkerEs.java

@@ -1,5 +1,6 @@
 package com.gree.mall.miniapp.bean.workorder;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springframework.data.annotation.Id;
@@ -8,6 +9,7 @@ import org.springframework.data.elasticsearch.annotations.Document;
 import org.springframework.data.elasticsearch.annotations.Field;
 import org.springframework.data.elasticsearch.annotations.FieldType;
 
+import java.time.LocalDateTime;
 import java.util.Date;
 
 /**

+ 3 - 1
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/config/aop/ApiAspect.java

@@ -1,5 +1,6 @@
 package com.gree.mall.miniapp.config.aop;
 
+import cn.hutool.core.date.DateUtil;
 import com.gree.mall.miniapp.annotation.ApiNotAuth;
 import com.gree.mall.miniapp.constant.Constant;
 import com.gree.mall.miniapp.exception.RemoteServiceException;
@@ -24,6 +25,7 @@ import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.servlet.http.HttpServletRequest;
 import java.lang.reflect.Method;
+import java.util.Date;
 
 @Aspect
 @Component
@@ -69,8 +71,8 @@ public class ApiAspect {
             }
         }
         String token = CommonUtils.getToken(request);
-//        log.info("用户token:{} 访问 {}", token, request.getRequestURI());
         String jwtUserId = CommonUtils.getUserId(request);
+      //  log.info("用户"+jwtUserId+"token:{} 访问 {}+", token, request.getRequestURI());
         if (StringUtils.isNotBlank(jwtUserId) && StringUtils.isNotBlank(token) && token.equals(jwtUserId)) {
             throw new RemoteServiceException(ResponseHelper.ResponseCode_TOKEN_ID_ERROR, "请求不合法, token");
         }

+ 2 - 2
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/controller/user/UserController.java

@@ -109,11 +109,11 @@ public class UserController {
             @ApiParam(required = true, value = "授权openid登陆code") @RequestParam(required = true) String code,
             HttpServletRequest request
     ) throws RemoteServiceException, WxErrorException, InterruptedException {
-        log.info("请求数据"+serviceId,code);
+        log.info("请求数据"+code);
         UserWxBean userWxBean = userLogic.addUser(code,serviceId,request);
         userLogic.addVisit(request, userWxBean.getUserId());
 
-        log.info("输出返回数据"+userWxBean);
+        log.info("输出返回数据+"+userWxBean.getUserId()+"token"+userWxBean);
         return ResponseHelper.success(userWxBean);
     }
 

+ 1 - 1
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/es/EsLogic.java

@@ -51,7 +51,7 @@ public class EsLogic {
             must.must(QueryBuilders.termQuery("comListId", comId));
         }
         if(StringUtils.isNotEmpty(workerNumber)){
-            must.must(QueryBuilders.termQuery("workerNumber", workerNumber));
+            must.must(QueryBuilders.termQuery("workerNumber.keyword", workerNumber));
         }
 /*        if(CollectionUtils.isNotEmpty(websitNumbers)){
             must.must(QueryBuilders.termsQuery("websitNumber.keyword",websitNumbers));

+ 5 - 4
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/order/PayOrderLogic.java

@@ -876,6 +876,9 @@ public class PayOrderLogic {
             endTime = monthDateTime[1];
         }
 
+        if (StringUtil.isEmpty(currentCompanyWechat.getUser().getWorkerNumber()) && StringUtil.isEmpty(currentCompanyWechat.getUser().getIdCard()))
+            return new Page<>();
+
         return workerOrderService.lambdaQuery()
                 .eq(!StringUtil.isEmpty(goodsType),WorkerOrder::getGoodsType,goodsType)
                 .like(!StringUtil.isEmpty(settlementType),WorkerOrder::getSettlementType,settlementType)
@@ -888,10 +891,8 @@ public class PayOrderLogic {
                         iter -> iter.eq(WorkerOrder::getRefundStatus, IsYesNoEnum.YES.getKey()))
                 )
                 .eq(!StringUtil.isEmpty(payStatus) && payStatus.equals(MaterialExamineStatusEnum.PAID.getKey()),WorkerOrder::getRefundStatus, IsYesNoEnum.NO.getKey())
-
-                .and(item -> item.eq(WorkerOrder::getUserId,currentCompanyWechat.getUser().getUserId())
-                    .or(!StringUtil.isEmpty(currentCompanyWechat.getUser().getWorkerNumber())).eq(!StringUtil.isEmpty(currentCompanyWechat.getUser().getWorkerNumber()),WorkerOrder::getWorkerNumber,currentCompanyWechat.getUser().getWorkerNumber())
-                )
+                .eq(!StringUtil.isEmpty(currentCompanyWechat.getUser().getWorkerNumber()),WorkerOrder::getWorkerNumber,currentCompanyWechat.getUser().getWorkerNumber())
+                .eq(StringUtil.isEmpty(currentCompanyWechat.getUser().getWorkerNumber()),WorkerOrder::getIdentity,currentCompanyWechat.getUser().getIdCard())
                 .between(!StringUtil.isEmpty(startTime),WorkerOrder::getCreateTime,startTime,endTime)
                 .in(WorkerOrder::getCompanyWechatId,currentCompanyWechat.getCompanyWechatId())
                 .orderByDesc(WorkerOrder::getCreateTime)

+ 246 - 26
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/workorder/OrderBaseLogic.java

@@ -28,6 +28,7 @@ import com.gree.mall.miniapp.plus.service.*;
 import com.gree.mall.miniapp.utils.DateUtils;
 import com.gree.mall.miniapp.utils.StringUtil;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.elasticsearch.client.RestHighLevelClient;
 import org.elasticsearch.index.query.BoolQueryBuilder;
@@ -37,7 +38,9 @@ import org.elasticsearch.search.aggregations.AggregationBuilders;
 import org.elasticsearch.search.aggregations.Aggregations;
 import org.elasticsearch.search.aggregations.bucket.filter.FilterAggregationBuilder;
 import org.elasticsearch.search.aggregations.bucket.filter.ParsedFilter;
+import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
 import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
 import org.springframework.data.elasticsearch.core.SearchHits;
@@ -52,6 +55,7 @@ import java.util.stream.Collectors;
 
 @RequiredArgsConstructor
 @Service
+@Slf4j
 public class OrderBaseLogic {
 
     private final PgOrderBaseService pgOrderBaseService;
@@ -107,35 +111,46 @@ public class OrderBaseLogic {
         // 构建查询,最大只能查两万数据
         NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
                 .withQuery(boolQuery)
-                .withPageable(PageRequest.of(1, 20000))
+                .withPageable(PageRequest.of(0, 10000))
                 .build();
 
         // 执行查询
-        List<PgOrderWorkerEs> pgOrderWorkerEs = elasticsearchRestTemplate.search(searchQuery, PgOrderWorkerEs.class).map(searchHit -> searchHit.getContent())
+        List<PgOrderWorkerDateEs> pgOrderWorkerEs = elasticsearchRestTemplate.search(searchQuery, PgOrderWorkerDateEs.class).map(searchHit -> searchHit.getContent())
                 .toList();
 
-        List<String> orderBaseIds = pgOrderWorkerEs.stream().map(PgOrderWorkerEs::getOrderBaseId).collect(Collectors.toList());
+        List<String> orderBaseIds = pgOrderWorkerEs.stream().map(PgOrderWorkerDateEs::getOrderBaseId).collect(Collectors.toList());
+
+        if (CollectionUtil.isEmpty(orderBaseIds))
+            return new CountOrderStatusBean();
 
         BoolQueryBuilder boolQueryOrder = QueryBuilders.boolQuery()
-                .mustNot(QueryBuilders.termsQuery("order_status", "YQX","FWQX","FL","FWZT","YCGB"))
+                .mustNot(QueryBuilders.termsQuery("order_status", "YQX","FWQX","FL","FWZT","YCGB","YZP"))
                 ;
         boolQueryOrder.must(
                 QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("id", orderBaseIds))
                         .should(QueryBuilders.termsQuery("order_status", OrderBaseStatusEnum.DQD.getKey()))
         );
+
+
+
+
+
         //待接单
+        // A 或 B 的条件
+        BoolQueryBuilder orConditionAB = QueryBuilders.boolQuery()
+                .must(QueryBuilders.matchQuery("is_import_excel", false))
+                .must(QueryBuilders.matchQuery("order_status",  OrderBaseStatusEnum.DJD.getKey()));
+
+        // C 或 D 的条件
+        BoolQueryBuilder orConditionCD = QueryBuilders.boolQuery()
+                .must(QueryBuilders.matchQuery("is_import_excel", true))
+                .must(QueryBuilders.matchQuery("is_meet", false));
+
         NativeSearchQuery searchQueryDJD = new NativeSearchQueryBuilder()
                 .withQuery(boolQueryOrder)
                 .withPageable(PageRequest.of(1, 1))
                 .addAggregation(this.getAggs(AggregationBuilders.filter("DJD", QueryBuilders.boolQuery()
-                        .must(
-                                QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("id", orderBaseIds))
-                                        .should(QueryBuilders.termsQuery("order_status", OrderBaseStatusEnum.DJD.getKey()))
-                        )
-                        .must(
-                                QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("id", orderBaseIds))
-                                        .should(QueryBuilders.termsQuery("order_status", OrderBaseStatusEnum.DJD.getKey()))
-                        )
+                        .should(orConditionAB).should(orConditionCD)
                         )))
                 .build();
         SearchHits response = elasticsearchRestTemplate.search(searchQueryDJD, OrderBaseEs.class);
@@ -148,7 +163,7 @@ public class OrderBaseLogic {
                 .withQuery(boolQueryOrder)
                 .withPageable(PageRequest.of(1, 1))
                 .addAggregation(this.getAggs(AggregationBuilders.filter("FWZ", QueryBuilders.boolQuery()
-                        .must(QueryBuilders.termsQuery("order_status","FWZ","GCSZT","BFWG","DSM","YZP","XSBH","TJXSBH","ZBBH","FZXBH","WDBH"))
+                        .must(QueryBuilders.termsQuery("order_status","FWZ","GCSZT","BFWG","DSM","XSBH","TJXSBH","ZBBH","FZXBH","WDBH"))
                 )))
                 .build();
         SearchHits responseFWZ = elasticsearchRestTemplate.search(searchQueryFWZ, OrderBaseEs.class);
@@ -194,7 +209,9 @@ public class OrderBaseLogic {
                 .withQuery(boolQueryOrder)
                 .withPageable(PageRequest.of(1, 1))
                 .addAggregation(this.getAggs(AggregationBuilders.filter("JRWG", QueryBuilders.boolQuery()
-                        .must(QueryBuilders.rangeQuery("over_time").from(DateUtil.beginOfDay(new Date())).to(DateUtil.endOfDay(new Date())))
+                        .must(QueryBuilders.rangeQuery("over_time")
+                                .gte(DateUtil.format(DateUtil.beginOfDay(new Date()),"yyyy-MM-dd HH:mm:ss"))
+                                .lte(DateUtil.format(DateUtil.endOfDay(new Date()),"yyyy-MM-dd HH:mm:ss")))
                 )))
                 .build();
         SearchHits responseJRWG = elasticsearchRestTemplate.search(searchQueryJRWG, OrderBaseEs.class);
@@ -206,7 +223,9 @@ public class OrderBaseLogic {
                 .withQuery(boolQueryOrder)
                 .withPageable(PageRequest.of(1, 1))
                 .addAggregation(this.getAggs(AggregationBuilders.filter("JBNWG", QueryBuilders.boolQuery()
-                        .must(QueryBuilders.rangeQuery("over_time").from(DateUtil.beginOfDay(DateUtil.offsetMonth(new Date(),-6))).to(DateUtil.endOfDay(new Date())))
+                        .must(QueryBuilders.rangeQuery("over_time")
+                                .gte(DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetMonth(new Date(),-6)),"yyyy-MM-dd HH:mm:ss"))
+                                .lte(DateUtil.format(DateUtil.endOfDay(new Date()),"yyyy-MM-dd HH:mm:ss")))
                 )))
                 .build();
         SearchHits responseJBNWG = elasticsearchRestTemplate.search(searchQueryJBNWG, OrderBaseEs.class);
@@ -279,12 +298,28 @@ public class OrderBaseLogic {
         );
         mySchedule7Day.setDayList(dayList);
 
-        List<String> orderBaseIds = pgOrderWorkerService.lambdaQuery()
-                .and(item -> item.eq(PgOrderWorker::getWorkerId, currentCompanyWechat.getUserId())
-                        .or(!StringUtil.isEmpty(currentCompanyWechat.getUser().getWorkerNumber()))
-                        .eq(PgOrderWorker::getWorkerNumber,currentCompanyWechat.getUser().getWorkerNumber())
-                )
-                .list().stream().map(PgOrderWorker::getOrderBaseId).distinct().collect(Collectors.toList());
+        BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
+
+        // 根据参数动态添加筛选条件
+        if (StringUtil.isEmpty(currentCompanyWechat.getUser().getWorkerNumber())) {
+            boolQuery.must(QueryBuilders.matchQuery("worker_idcard", currentCompanyWechat.getUser().getIdCard()));
+        }
+        else  {
+            boolQuery.must(QueryBuilders.matchQuery("worker_number", currentCompanyWechat.getUser().getWorkerNumber()));
+        }
+
+
+        // 构建查询,最大只能查两万数据
+        NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
+                .withQuery(boolQuery)
+                .withPageable(PageRequest.of(0, 10000))
+                .build();
+
+        // 执行查询
+        List<PgOrderWorkerDateEs> pgOrderWorkerEs = elasticsearchRestTemplate.search(searchQuery, PgOrderWorkerDateEs.class).map(searchHit -> searchHit.getContent())
+                .toList();
+
+        List<String> orderBaseIds = pgOrderWorkerEs.stream().map(PgOrderWorkerDateEs::getOrderBaseId).collect(Collectors.toList());
         if(CollectionUtils.isEmpty(orderBaseIds)){
             return mySchedule7Day;
         }
@@ -356,13 +391,13 @@ public class OrderBaseLogic {
     }
 
     /**
-     * 工单列表
+     * 工单列表mysql
      * @param byDay 1=今天 2=明天 3=其他
      * @param startTime
      * @param endTime
      * @return
      */
-    public IPage<OrderBaseVO> list(String keyword,String pgIncreOrderId,Boolean isYb,Boolean isWb,OrderBaseStatusEnum orderBaseStatusEnum,
+    public IPage<OrderBaseVO> listMysql(String keyword,String pgIncreOrderId,Boolean isYb,Boolean isWb,OrderBaseStatusEnum orderBaseStatusEnum,
                                    Integer byDay,String startTime,String endTime,Integer pageNum,Integer pageSize){
         CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
         if(!StringUtils.equals(currentCompanyWechat.getUser().getType(),UserTypeEnum.WORKER.getKey())){
@@ -425,7 +460,6 @@ public class OrderBaseLogic {
             orderStatusList.add(OrderBaseStatusEnum.FWZ.getKey());
             orderStatusList.add(OrderBaseStatusEnum.GCSZT.getKey());
             orderStatusList.add(OrderBaseStatusEnum.BFWG.getKey());
-            orderStatusList.add(OrderBaseStatusEnum.YZP.getKey());
             orderStatusList.add(OrderBaseStatusEnum.DSM.getKey());
 
             orderStatusList.add(OrderBaseStatusEnum.WDBH.getKey());
@@ -532,6 +566,193 @@ public class OrderBaseLogic {
     }
 
 
+
+    public IPage<OrderBaseVO> list(String keyword,String pgIncreOrderId,Boolean isYb,Boolean isWb,OrderBaseStatusEnum orderBaseStatusEnum,
+                                        Integer byDay,String startTime,String endTime,Integer pageNum,Integer pageSize){
+
+        CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
+        if(!StringUtils.equals(currentCompanyWechat.getUser().getType(),UserTypeEnum.WORKER.getKey())){
+            return new Page<>(pageNum,pageSize);
+        }
+        //查询师傅拥有工单
+        BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
+
+        // 根据参数动态添加筛选条件
+        if (StringUtil.isEmpty(currentCompanyWechat.getUser().getWorkerNumber())) {
+            boolQuery.must(QueryBuilders.matchQuery("worker_idcard", currentCompanyWechat.getUser().getIdCard()));
+        }
+        else  {
+            boolQuery.must(QueryBuilders.matchQuery("worker_number", currentCompanyWechat.getUser().getWorkerNumber()));
+        }
+
+        // 构建查询,最大只能查两万数据
+        NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
+                .withQuery(boolQuery)
+                .withPageable(PageRequest.of(0, 10000))
+                .build();
+
+        // 执行查询
+        List<PgOrderWorkerDateEs> pgOrderWorkerEs = elasticsearchRestTemplate.search(searchQuery, PgOrderWorkerDateEs.class).map(searchHit -> searchHit.getContent())
+                .toList();
+
+        List<String> orderBaseIds = pgOrderWorkerEs.stream().map(PgOrderWorkerDateEs::getOrderBaseId).collect(Collectors.toList());
+
+
+        if(byDay != null){
+            if(byDay == 1) {
+                startTime = DateUtil.formatDateTime(DateUtil.beginOfDay(new Date()));
+                endTime = DateUtil.formatDateTime(DateUtil.endOfDay(new Date()));
+            }else if(byDay == 2){
+                startTime = DateUtil.formatDateTime(DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),1));
+                endTime = DateUtil.formatDateTime(DateUtil.offsetDay(DateUtil.endOfDay(new Date()),1));
+            }else if(byDay == 3){
+                startTime = DateUtil.formatDateTime(DateUtil.beginOfDay(new Date()));
+                endTime = DateUtil.formatDateTime(DateUtil.offsetDay(DateUtil.endOfDay(new Date()),1));
+            }
+        }
+
+        // 创建 Bool 查询
+        BoolQueryBuilder boolQueryOrder = QueryBuilders.boolQuery()
+                .mustNot(QueryBuilders.termsQuery("order_status", "YQX","FWQX","FL","FWZT","YCGB","YZP"))
+                ;
+        boolQueryOrder.must(
+                QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("id", orderBaseIds))
+                        .should(QueryBuilders.termsQuery("order_status", OrderBaseStatusEnum.DQD.getKey()))
+        );
+
+        if (!StringUtil.isEmpty(startTime)) {
+            boolQueryOrder.must(QueryBuilders.rangeQuery("create_time")
+                    .gte(startTime)
+                    .lte(endTime)
+            );
+        }
+
+        String orderStatus = orderBaseStatusEnum != null ? orderBaseStatusEnum.getKey() : null;
+
+        if(StringUtils.isNotBlank(keyword)){
+            boolQueryOrder.must(
+                    QueryBuilders.boolQuery().should(QueryBuilders.wildcardQuery("id","*"+keyword+"*"))
+                            .should(QueryBuilders.wildcardQuery("user_name","*"+keyword+"*"))
+                            .should(QueryBuilders.wildcardQuery("order_small_type_text","*"+keyword+"*"))
+                            .should(QueryBuilders.wildcardQuery("user_mobile","*"+keyword+"*"))
+                            .should(QueryBuilders.wildcardQuery("address","*"+keyword+"*"))
+            );
+        }
+
+        if(StringUtils.equals(orderStatus, OrderBaseStatusEnum.DJD.getKey())) {
+            // A 或 B 的条件
+            BoolQueryBuilder orConditionAB = QueryBuilders.boolQuery()
+                    .must(QueryBuilders.matchQuery("is_import_excel", false))
+                    .must(QueryBuilders.matchQuery("order_status",  OrderBaseStatusEnum.DJD.getKey()));
+
+            // C 或 D 的条件
+            BoolQueryBuilder orConditionCD = QueryBuilders.boolQuery()
+                    .must(QueryBuilders.matchQuery("is_import_excel", true))
+                    .must(QueryBuilders.matchQuery("is_meet", false));
+
+            boolQueryOrder
+                  .must( QueryBuilders.boolQuery()
+                          .should(orConditionAB).should(orConditionCD));
+
+        }
+
+        if(StringUtils.equals(orderStatus, OrderBaseStatusEnum.FWZ.getKey())) {
+            boolQueryOrder .must(QueryBuilders.termsQuery("order_status","FWZ","GCSZT","BFWG","DSM","XSBH","TJXSBH","ZBBH","FZXBH","WDBH"));
+
+        }
+
+        if(StringUtils.equals(orderStatus, OrderBaseStatusEnum.YCD.getKey())) {
+            boolQueryOrder.must(QueryBuilders.termsQuery("is_exception",true));
+        }
+
+        if(StringUtils.equals(orderStatus, OrderBaseStatusEnum.YWG.getKey())) {
+            boolQueryOrder.must(QueryBuilders.termsQuery("order_status","YWG","YJS","GCSZX","YWGO","WDWG"));
+
+        }
+
+        if(StringUtils.equals(orderStatus, OrderBaseStatusEnum.DQD.getKey())) {
+            boolQueryOrder.must(QueryBuilders.termsQuery("order_status","DQD"));
+
+        }
+
+        if(StringUtils.equals(orderStatus, OrderBaseStatusEnum.DCL.getKey())) {
+            boolQueryOrder.mustNot(QueryBuilders.termsQuery("order_status","YWG","YJS","GCSZX","YWGO","WDWG","DQD"));
+        }
+
+        if (pageSize == -1) {
+            pageSize = 10;
+        }
+
+        // 创建分页请求
+        Pageable pageable = PageRequest.of(pageNum-1, pageSize);
+
+        // 创建查询
+        Query searchQueryOrder = new NativeSearchQueryBuilder()
+                .withQuery(boolQueryOrder)
+                .withPageable(pageable)
+                .build();
+
+
+        SearchHits<OrderBaseEs> searchHits  = elasticsearchRestTemplate.search(searchQueryOrder, OrderBaseEs.class);
+
+
+        // 获取结果和总数
+        List<OrderBaseEs> content = searchHits.get().map(hit -> hit.getContent()).collect(Collectors.toList());
+        long totalHits = searchHits.getTotalHits();
+
+        List<OrderBaseVO> orderBaseVOS = BeanUtil.copyToList(content, OrderBaseVO.class);
+
+
+
+        //服务单标识
+        List<String> orderIds = orderBaseVOS
+                .stream()
+                .map(OrderBaseVO::getId)
+                .collect(Collectors.toList());
+        List<AdminWebsit> adminWebsits = new ArrayList<>();
+        Map<String, String> adminWebsitMap = new HashMap<>();
+
+        if (CollectionUtil.isNotEmpty(orderBaseVOS)) {
+            adminWebsits = adminWebsitService.lambdaQuery()
+                    .eq(AdminWebsit::getCompanyWechatId, currentCompanyWechat.getCompanyWechatId())
+                    .in(AdminWebsit::getWebsitId, orderBaseVOS.stream().map(OrderBaseVO::getWebsitId).collect(Collectors.toList()))
+                    .list();
+        }
+
+        if (CollectionUtil.isNotEmpty(adminWebsits)) {
+            adminWebsitMap = adminWebsits.stream().collect(Collectors.toMap(AdminWebsit::getWebsitId, AdminWebsit::getAttr));
+        }
+
+        Map<String, List<PgOrderFlag>> mapList = this.getOrderFlags(orderIds);
+        for (OrderBaseVO orderBaseVO : orderBaseVOS) {
+            orderBaseVO.setOrderFlags(mapList.get(orderBaseVO.getId()));
+            //明细
+            orderBaseVO.setPgOrderProducts(
+                    pgOrderProductService.lambdaQuery().eq(PgOrderProduct::getOrderBaseId,orderBaseVO.getId()).list()
+            );
+            //待抢单状态隐藏
+            if(StringUtils.equals(orderBaseVO.getOrderStatus(),OrderBaseStatusEnum.DQD.getKey())){
+                orderBaseVO.setUserMobile(orderBaseVO.getUserMobile().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"));
+                orderBaseVO.setAddress(orderBaseVO.getProvince()+orderBaseVO.getCity()+orderBaseVO.getArea()+orderBaseVO.getStreet()+"****");
+            }
+            final String attr = adminWebsitMap.get(orderBaseVO.getWebsitId());
+
+            orderBaseVO.setAttr(attr);
+            if (StringUtils.isNotBlank(attr)
+                    && attr.equals(WebsitAttrEnum.SELF.getKey())
+                    && "安装, 拆移机".contains(orderBaseVO.getOrderSmallTypeText())) {
+                orderBaseVO.setNeedSlave(true);
+            }
+        }
+        Page<OrderBaseVO> page = new Page<>();
+        page.setRecords(orderBaseVOS);
+        page.setCurrent(pageNum);
+        page.setTotal(totalHits);
+        page.setSize(pageSize);
+
+        return page;
+    }
+
     /**
      * 客户的工单列表
      * @param flag 1=待预约 2=服务中 3=待评价 4=已完成
@@ -680,8 +901,7 @@ public class OrderBaseLogic {
         PgOrderBase pgOrderBase = pgOrderBaseService.getById(orderBaseId);
         if (!pgOrderBase.getIsImportExcel() && (!(StringUtils.equals(pgOrderBase.getOrderStatus(), OrderBaseStatusEnum.DJD.getKey())
                 || StringUtils.equals(pgOrderBase.getOrderStatus(), OrderBaseStatusEnum.DSM.getKey())
-                || StringUtils.equals(pgOrderBase.getOrderStatus(), OrderBaseStatusEnum.YZP.getKey()))
-        )) {
+                ))) {
             throw new RemoteServiceException("当前状态不可接单");
         }
 

+ 2 - 2
mall-miniapp-service/src/main/resources/bootstrap-prd.properties

@@ -21,9 +21,9 @@ spring.datasource.url=jdbc:mysql://rm-wz9yahzr80gze34ab35930.mysql.rds.aliyuncs.
 spring.datasource.username=gFgreeJsm_gd2024_system
 spring.datasource.password=Jsm_Gf_2024@)@$_)(*&
 spring.datasource.druid.connection-init-sqls=set names utf8mb4
-spring.datasource.druid.initial-size=5
+spring.datasource.druid.initial-size=20
 spring.datasource.druid.minIdle=5
-spring.datasource.druid.maxActive=20
+spring.datasource.druid.maxActive=50
 ### ���û�ȡ���ӵȴ���ʱ��ʱ�䣬��λ�Ǻ���
 spring.datasource.druid.maxWait=60000
 ### ���ü����òŽ���һ�μ�⣬�����Ҫ�رյĿ������ӣ���λ�Ǻ���

+ 1 - 1
mall-miniapp-service/src/main/resources/mapper/workorder/OrderBaseCMapper.xml

@@ -7,7 +7,7 @@
         count(DISTINCT if((is_import_excel = false and a.order_status='DJD') or (is_import_excel = true and a.is_meet =
         false) ,a.id,null)) 'djd',
         count(DISTINCT if(a.order_status in
-        ('FWZ','GCSZT','BFWG','DSM','YZP','XSBH','TJXSBH','ZBBH','FZXBH','WDBH'),a.id,null)) 'fwz',
+        ('FWZ','GCSZT','BFWG','DSM','XSBH','TJXSBH','ZBBH','FZXBH','WDBH'),a.id,null)) 'fwz',
         count(DISTINCT if(a.is_exception=1,a.id,null)) 'ycd',
         count(DISTINCT if(a.order_status='DQD',a.id,null)) 'dqd',
         count(DISTINCT if(a.order_status in ('YWG','YJS','GCSZX','YWGO','WDWG') ,a.id,null)) 'ywg',

+ 7 - 22
mall-server-api/src/main/java/com/gree/mall/manager/controller/admin/AdminUserController.java

@@ -1,42 +1,35 @@
 package com.gree.mall.manager.controller.admin;
 
-import cn.hutool.http.HttpUtil;
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.gree.mall.manager.annotation.ApiNotAuth;
 import com.gree.mall.manager.bean.ExcelData;
 import com.gree.mall.manager.bean.SVerification;
-import com.gree.mall.manager.bean.admin.AdminModuleTree;
-import com.gree.mall.manager.bean.admin.AdminUserBean;
-import com.gree.mall.manager.bean.admin.AdminUserCom;
-import com.gree.mall.manager.bean.admin.AdminWebsitGrantBean;
+import com.gree.mall.manager.bean.admin.*;
 import com.gree.mall.manager.bean.admin.reqDto.AdminCompanyWechatReqBean;
 import com.gree.mall.manager.bean.admin.reqDto.AdminUserAddReqBean;
 import com.gree.mall.manager.bean.admin.respDto.AdminCompanyWechatRespPageBean;
 import com.gree.mall.manager.constant.Constant;
-import com.gree.mall.manager.exception.RemoteServiceException;
-import com.gree.mall.manager.helper.ResponseHelper;
+import com.gree.mall.manager.enums.RedisPrefixEnum;
 import com.gree.mall.manager.logic.admin.AdminCompanyWechatLogic;
 import com.gree.mall.manager.logic.admin.AdminUserLogic;
+import com.gree.mall.manager.exception.RemoteServiceException;
+import com.gree.mall.manager.helper.ResponseHelper;
 import com.gree.mall.manager.plus.entity.AdminCompanyWechat;
 import com.gree.mall.manager.plus.entity.AdminUser;
+import com.gree.mall.manager.utils.JwtUtils;
 import com.gree.mall.manager.utils.RedisUtil;
 import com.gree.mall.manager.utils.excel.ExcelUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.integration.redis.util.RedisLockRegistry;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.Lock;
 
@@ -283,16 +276,8 @@ public class AdminUserController {
     @PostMapping("/get/big/view/login")
     @ApiOperation(value = "大屏校验登录")
     public ResponseHelper getBigViewLogin() throws Exception {
-        Map<String, Object> reqMap = new HashMap<>();
-        reqMap.put("username", "zfire");
-        reqMap.put("password", "zfire2022@");
-        final String result = HttpUtil.post("https://pgxtadm.greeapps.com/java/big/data/login", reqMap);
-        final JSONObject parseObj = JSONUtil.parseObj(result);
-        final String data = parseObj.get("data", String.class);
-        if (StringUtils.isBlank(data)) {
-            throw new RemoteServiceException("数据异常");
-        }
+        final String jwt = JwtUtils.createJWT("zfire", "zfire2022@", 60 * 60 * 10000);
 
-        return ResponseHelper.success(data);
+        return ResponseHelper.success(jwt);
     }
 }

+ 1 - 1
mall-server-api/src/main/java/com/gree/mall/manager/controller/big/BigController.java

@@ -124,7 +124,7 @@ public class BigController {
     @ApiOperation(value = "近30天工单趋势")
     public ResponseHelper<List<LargeWorkerOrderDateBean>> getLarge6(
     ) throws IOException, RemoteServiceException {
-        List<LargeWorkerOrderDateBean> largeMpBean = bigLogic.getLarge6();
+        List<LargeWorkerOrderDateBean> largeMpBean = bigLogic.getLarge6Es();
         return ResponseHelper.success(largeMpBean);
     }
 

+ 24 - 5
mall-server-api/src/main/java/com/gree/mall/manager/controller/workerorder/ESOrderBaseController.java

@@ -81,26 +81,45 @@ public class ESOrderBaseController {
         ZfireParamBean zfireParam = FieldUtils.supplyParam(zfireParamBean);
         //2.查询要导出的内容
         zfireParamBean.setPageNum(1);
-        zfireParamBean.setPageSize(20000);
+        zfireParamBean.setPageSize(10000);
         IPage<OrderBaseVO> orderBaseVOIPage = orderBaseEsLogic.orderBaseEsList(zfireParamBean);
         List<OrderBaseVO> records = orderBaseVOIPage.getRecords();
-        if (records.size() == 20000){
+        if (records.size() == 10000){
             zfireParamBean.setPageNum(2);
-            zfireParamBean.setPageSize(20000);
+            zfireParamBean.setPageSize(10000);
             IPage<OrderBaseVO> orderBaseVOIPage2 = orderBaseEsLogic.orderBaseEsList(zfireParamBean);
 
             records.addAll(orderBaseVOIPage2.getRecords());
 
         }
 
-        if (records.size() == 40000){
+        if (records.size() == 20000){
             zfireParamBean.setPageNum(3);
-            zfireParamBean.setPageSize(20000);
+            zfireParamBean.setPageSize(10000);
+            IPage<OrderBaseVO> orderBaseVOIPage3 = orderBaseEsLogic.orderBaseEsList(zfireParamBean);
+
+            records.addAll(orderBaseVOIPage3.getRecords());
+
+        }
+
+        if (records.size() == 30000){
+            zfireParamBean.setPageNum(4);
+            zfireParamBean.setPageSize(10000);
             IPage<OrderBaseVO> orderBaseVOIPage3 = orderBaseEsLogic.orderBaseEsList(zfireParamBean);
 
             records.addAll(orderBaseVOIPage3.getRecords());
 
         }
+
+        if (records.size() == 40000){
+            zfireParamBean.setPageNum(5);
+            zfireParamBean.setPageSize(10000);
+            IPage<OrderBaseVO> orderBaseVOIPage3 = orderBaseEsLogic.orderBaseEsList(zfireParamBean);
+
+            records.addAll(orderBaseVOIPage3.getRecords());
+
+        }
+
         //3.导出
         FieldUtils.exportData(records, zfireParam.getExportFields(), request, response);
     }

+ 4 - 1
mall-server-api/src/main/java/com/gree/mall/manager/controller/workerorder/OrderBaseController.java

@@ -19,6 +19,7 @@ import com.gree.mall.manager.enums.workorder.OrderFlagEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.helper.ResponseHelper;
 import com.gree.mall.manager.logic.common.CommonLogic;
+import com.gree.mall.manager.logic.workorder.OrderBaseEsLogic;
 import com.gree.mall.manager.logic.workorder.OrderBaseExcelLogic;
 import com.gree.mall.manager.logic.workorder.OrderBaseLogic;
 import com.gree.mall.manager.logic.workorder.OrderLogLogic;
@@ -60,6 +61,7 @@ public class OrderBaseController {
     private final OrderLogLogic orderLogLogic;
     private final RedisLockRegistry redisLockRegistry;
     private final CommonLogic commonLogic;
+    private final OrderBaseEsLogic orderBaseEsLogic;
 
     @ZfireList
     @PostMapping("/list")
@@ -104,7 +106,8 @@ public class OrderBaseController {
             @RequestParam(required = false) String orderSmallType,
             @RequestParam(required = false) String orderSmallTypeText
     ) {
-        List<Map<String, Object>> maps = orderBaseLogic.countStatus(startTime,endTime,orderSmallType,orderSmallTypeText);
+        List<Map<String, Object>> maps = orderBaseEsLogic.countStatus(startTime,endTime,orderSmallType,orderSmallTypeText);
+       // List<Map<String, Object>> maps = orderBaseLogic.countStatus(startTime,endTime,orderSmallType,orderSmallTypeText);
         return ResponseHelper.success(maps);
     }
 

+ 180 - 12
mall-server-api/src/main/java/com/gree/mall/manager/logic/big/BigLogic.java

@@ -1,5 +1,6 @@
 package com.gree.mall.manager.logic.big;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
@@ -12,6 +13,7 @@ import com.gree.mall.manager.bean.big.*;
 import com.gree.mall.manager.bean.es.OrderBaseEs;
 import com.gree.mall.manager.enums.IsYesNoEnum;
 import com.gree.mall.manager.enums.UserTypeEnum;
+import com.gree.mall.manager.enums.workorder.OrderTypeEnum;
 import com.gree.mall.manager.logic.common.CommonLogic;
 import com.gree.mall.manager.logic.workorder.OrderBaseCountLogic;
 import com.gree.mall.manager.plus.entity.*;
@@ -20,10 +22,16 @@ import com.gree.mall.manager.utils.HttpUtils;
 import com.gree.mall.manager.utils.RedisUtil;
 import com.gree.mall.manager.utils.StringUtil;
 import io.swagger.annotations.ApiModel;
+import lombok.var;
 import org.elasticsearch.index.query.BoolQueryBuilder;
 import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
+import org.elasticsearch.search.aggregations.Aggregation;
 import org.elasticsearch.search.aggregations.AggregationBuilders;
+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.elasticsearch.search.aggregations.metrics.ParsedSum;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
@@ -254,19 +262,25 @@ public class BigLogic {
 
         if (!StringUtil.isEmpty(province)) {
 
-            List<String> orderBaseId = pgOrderProductService.lambdaQuery().select(PgOrderProduct::getOrderBaseId)
-                    .list().stream().map(PgOrderProduct::getOrderBaseId).collect(Collectors.toList());
 
-            List<PgOrderBase> pgOrderBases = pgOrderBaseService.lambdaQuery().in(PgOrderBase::getId, orderBaseId).select(PgOrderBase::getOrderStatus, PgOrderBase::getId).list();
+            Integer countAll = pgOrderBaseService.lambdaQuery()
+                    .eq(PgOrderBase::getProvince, province)
+                    .select(PgOrderBase::getOrderStatus, PgOrderBase::getId).count();
 
             List<String> never = new ArrayList<>();
             never.add("YWG");
             never.add("YJS");
             never.add("YQX");
 
-            largeOneBean.setAllWorkerOrderNum(pgOrderBases.size());
-            int neverNum = pgOrderBases.stream().filter(item -> never.contains(item.getOrderStatus())).collect(Collectors.toList()).size();
-            largeOneBean.setNeverWorkerNum(neverNum);
+            largeOneBean.setAllWorkerOrderNum(countAll);
+
+            Integer countNever = pgOrderBaseService.lambdaQuery()
+                    .eq(PgOrderBase::getProvince, province)
+                    .notIn(PgOrderBase::getOrderStatus,never)
+                    .select(PgOrderBase::getOrderStatus, PgOrderBase::getId).count();
+
+
+            largeOneBean.setNeverWorkerNum(countNever);
 
             Integer count = orderInfoService.lambdaQuery().count();
             largeOneBean.setSalesOrderNum(count);
@@ -607,13 +621,15 @@ public class BigLogic {
                 .groupBy(OrderSmallType::getOrderSmallTypeText).list();
 
 
+/*
         List<PgOrderBase> pgOrderBases = pgOrderBaseService.lambdaQuery()
                 .in(!StringUtil.isEmpty(adminUser.getCompanyWechatId()), PgOrderBase::getCompanyWechatId, adminUser.getCompanyWechatId())
                 .in(!CollectionUtils.isEmpty(adminUser.getAdminWebsitIds()) , PgOrderBase::getWebsitId, adminUser.getAdminWebsitIds())
-                .notIn(PgOrderBase::getOrderStatus, "YQX","FWZT","YCGB","FWQX","FL")
+                .notIn(PgOrderBase::getOrderStatus, "YQX","FWZT","YCGB","FWQX","FL","YZP")
                 .between(PgOrderBase::getCreateTime, DateUtil.offsetDay(DateUtil.beginOfDay(new Date()), -30), new Date())
                 .select(PgOrderBase::getOrderSmallTypeText, PgOrderBase::getId, PgOrderBase::getTotalNum, PgOrderBase::getUndoneNum, PgOrderBase::getCreateTime,
                         PgOrderBase::getSaleType,PgOrderBase::getOverTime,PgOrderBase::getWebsitOverTime,PgOrderBase::getOrderStatus).list();
+*/
 
         List<LargeWorkerOrderDateBean> largeWorkerOrderDateBeans = new ArrayList<>();
 
@@ -634,7 +650,7 @@ public class BigLogic {
             List<Integer> unitNum = new ArrayList<>();
             List<Integer> unitNumWwg = new ArrayList<>();
 
-            for (int i = 29; i > -1; i--) {
+   /*         for (int i = 29; i > -1; i--) {
 
                 BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
 
@@ -649,13 +665,13 @@ public class BigLogic {
 
                 DateTime endDay = DateUtil.endOfDay(startDay);
 
-   /*             Integer integer = pgOrderBases.stream().filter(item ->  status.contains(item.getOrderStatus())
+   *//*             Integer integer = pgOrderBases.stream().filter(item ->  status.contains(item.getOrderStatus())
                         && item.getOverTime().before(endDay)
                         && item.getOverTime().after(startDay)
                         && item.getOrderSmallTypeText().equals(largeWorkerOrderDateBean.getLx())
                 )
                         .map(PgOrderBase::getTotalNum).reduce(Integer::sum).orElse(0);
-*/
+*//*
                 //完工单
                 NativeSearchQuery searchQueryWGD = new NativeSearchQueryBuilder()
                         .withQuery(queryBuilder)
@@ -672,23 +688,175 @@ public class BigLogic {
 
 
 
-                Integer integerWwg = pgOrderBases.stream().filter(item -> item.getCreateTime().before(endDay)
+           *//*     Integer integerWwg = pgOrderBases.stream().filter(item ->
+                        item.getCreateTime().before(endDay)
                         && item.getCreateTime().after(startDay) && !status.contains(item.getOrderStatus())
                         && item.getOrderSmallTypeText().equals(largeWorkerOrderDateBean.getLx())
                 )
                         .map(PgOrderBase::getTotalNum).reduce(Integer::sum).orElse(0);
+*//*
+
+                //完工单
+                NativeSearchQuery searchQueryWWG = new NativeSearchQueryBuilder()
+                        .withQuery(queryBuilder)
+                        .withPageable(PageRequest.of(1, 1))
+                        .addAggregation(orderBaseCountLogic.getAggs(AggregationBuilders.filter("wwg", QueryBuilders.boolQuery()
+                                .mustNot(QueryBuilders.termsQuery("order_status",status))
+                                .must(QueryBuilders.termsQuery("order_small_type_text",orderSmallType.getOrderSmallTypeText()))
+                                .must(QueryBuilders.rangeQuery("over_time")
+                                        .gte(DateUtil.format(startDay,"yyyy-MM-dd HH:mm:ss"))
+                                        .lte(DateUtil.format(endDay,"yyyy-MM-dd HH:mm:ss")))
+                        )))
+                        .build();
+                SearchHits responseWWG = elasticsearchRestTemplate.search(searchQueryWWG, OrderBaseEs.class);
+
 
                 unitNum.add(Convert.toInt(orderBaseCountLogic.getWorkerOrderCountResult(responseWGD.getAggregations(),"wgd")));
-                unitNumWwg.add(integerWwg);
+                unitNumWwg.add(Convert.toInt(orderBaseCountLogic.getWorkerOrderCountResult(responseWWG.getAggregations(),"wwg")));
             }
+*/
+            largeWorkerOrderDateBean.setUnitNum(unitNum);
+            largeWorkerOrderDateBean.setUnitNumWwg(unitNumWwg);
+
+            largeWorkerOrderDateBeans.add(largeWorkerOrderDateBean);
+
+        }
+
+        return largeWorkerOrderDateBeans;
+
+    }
+
+
+
+    public List<LargeWorkerOrderDateBean> getLarge6Es() {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+
+        List<OrderSmallType> orderSmallTypes = orderSmallTypeService.lambdaQuery()
+                .in(!StringUtil.isEmpty(adminUser.getCompanyWechatId()), OrderSmallType::getCompanyWechatId, adminUser.getCompanyWechatId())
+                .eq(OrderSmallType::getStatus, true)
+                .groupBy(OrderSmallType::getOrderSmallTypeText).list();
+
+
+        List<LargeWorkerOrderDateBean> largeWorkerOrderDateBeans = new ArrayList<>();
+
+        List<String> status = new ArrayList<>();
+        status.add("YWG");
+        status.add("YJS");
+        status.add("GCSZX");
+        status.add("WDWG");
+        status.add("YWGO");
+        status.add("LRCD");
+
+
+        for (OrderSmallType orderSmallType : orderSmallTypes) {
+
+            LargeWorkerOrderDateBean largeWorkerOrderDateBean = new LargeWorkerOrderDateBean();
+            largeWorkerOrderDateBean.setLx(orderSmallType.getOrderSmallTypeText());
+
+            List<Integer> unitNum = new ArrayList<>();
+            List<Integer> unitNumWwg = new ArrayList<>();
+
+            BoolQueryBuilder queryBuilderWG = QueryBuilders.boolQuery();
+
+            if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds())) {
+                queryBuilderWG.must(
+                        QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("create_websit_id", adminUser.getAdminWebsitIds()))
+                                .should(QueryBuilders.termsQuery("websit_id", adminUser.getAdminWebsitIds()))
+                );
+            }
+            queryBuilderWG.must(QueryBuilders.termsQuery("order_status", status));
+            queryBuilderWG.must(QueryBuilders.termsQuery("order_small_type_text", orderSmallType.getOrderSmallTypeText()));
+
+            queryBuilderWG.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 searchQueryWG = new NativeSearchQueryBuilder()
+                    .withQuery(queryBuilderWG)
+                    .withPageable(PageRequest.of(1, 1))
+                    .addAggregation(AggregationBuilders.dateHistogram("WG")
+                            .field("over_time")
+                            .calendarInterval(DateHistogramInterval.DAY)
+                            .format("yyyy-MM-dd")
+                            .subAggregation(AggregationBuilders.sum("total_num").field("total_num")))
+                    .build();
+            SearchHits responseWG = elasticsearchRestTemplate.search(searchQueryWG, OrderBaseEs.class);
+
+            var aggregationsWG = responseWG.getAggregations();
+
+            BoolQueryBuilder queryBuilderWWG = QueryBuilders.boolQuery();
+
+            if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds())) {
+                queryBuilderWWG.must(
+                        QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("create_websit_id", adminUser.getAdminWebsitIds()))
+                                .should(QueryBuilders.termsQuery("websit_id", adminUser.getAdminWebsitIds()))
+                );
+            }
+            queryBuilderWWG.mustNot(QueryBuilders.termsQuery("order_status", status));
+            queryBuilderWWG.must(QueryBuilders.termsQuery("order_small_type_text", orderSmallType.getOrderSmallTypeText()));
+
+            queryBuilderWWG.must(QueryBuilders.rangeQuery("create_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 searchQueryWWG = new NativeSearchQueryBuilder()
+                    .withQuery(queryBuilderWWG)
+                    .withPageable(PageRequest.of(1, 1))
+                    .addAggregation(AggregationBuilders.dateHistogram("WWG")
+                            .field("create_time")
+                            .calendarInterval(DateHistogramInterval.DAY)
+                            .format("yyyy-MM-dd")
+                            .subAggregation(AggregationBuilders.sum("undone_num").field("undone_num")))
+                    .build();
+            SearchHits responseWWG = elasticsearchRestTemplate.search(searchQueryWWG, OrderBaseEs.class);
+
+            var aggregationsWWG = responseWWG.getAggregations();
+
+
+            for (int i = 29; i > -1; i--) {
+                String format = DateUtil.format(DateUtil.offsetDay(new Date(), -1 * i), "yyyy-MM-dd");
+                if (aggregationsWG != null) {
+                    ParsedDateHistogram dateHistogram = aggregationsWG.get("WG");
+                    List<? extends Histogram.Bucket> buckets = dateHistogram.getBuckets();
+
+                    List<? extends Histogram.Bucket> list = buckets.stream().filter(item -> item.getKeyAsString().equals(format)).collect(Collectors.toList());
+
+                    if (!CollectionUtil.isEmpty(list)) {
+                        ParsedSum total_num = list.get(0).getAggregations().get("total_num");
+                        unitNum.add(Convert.toInt(total_num.getValue()));
+                    }else {
+                        unitNum.add(0);
+                    }
+                }
+
+                if (aggregationsWWG != null) {
+                    ParsedDateHistogram dateHistogram = aggregationsWWG.get("WWG");
+                    List<? extends Histogram.Bucket> buckets = dateHistogram.getBuckets();
+
+                    List<? extends Histogram.Bucket> list = buckets.stream().filter(item -> item.getKeyAsString().equals(format)).collect(Collectors.toList());
+
+                    if (!CollectionUtil.isEmpty(list)) {
+                        ParsedSum undone_num = list.get(0).getAggregations().get("undone_num");
+                        unitNumWwg.add(Convert.toInt(undone_num.getValue()));
+                    }else{
+                        unitNumWwg.add(0);
+                    }
+                }
+            }
+
 
             largeWorkerOrderDateBean.setUnitNum(unitNum);
             largeWorkerOrderDateBean.setUnitNumWwg(unitNumWwg);
 
             largeWorkerOrderDateBeans.add(largeWorkerOrderDateBean);
 
+
         }
 
+
         return largeWorkerOrderDateBeans;
 
     }

+ 16 - 8
mall-server-api/src/main/java/com/gree/mall/manager/logic/comlist/WorkerComListLogic.java

@@ -70,11 +70,11 @@ public class WorkerComListLogic {
             comListIds = worker.stream().map(WorkerComListWorker::getWorkerComListId).distinct().collect(Collectors.toList());
         } else {
             //以登录人为准
-            List<WebsitUser> websitUsers = websitUserService.lambdaQuery()
-                    .in(!CollectionUtils.isEmpty(adminUser.getAdminWebsitIds()),WebsitUser::getWebsitId, adminUser.getAdminWebsitIds())
-                    .isNotNull(WebsitUser::getWorkerNumber)
-                    .select(WebsitUser::getWorkerNumber).list();
-            List<String> collect = websitUsers.stream().map(WebsitUser::getWorkerNumber).collect(Collectors.toList());
+            List<AdminWebsit> websitUsers = adminWebsitService.lambdaQuery()
+                    .in(!CollectionUtils.isEmpty(adminUser.getAdminWebsitIds()),AdminWebsit::getWebsitId, adminUser.getAdminWebsitIds())
+                    .select(AdminWebsit::getWebsitId)
+                    .list();
+            List<String> collect = websitUsers.stream().map(AdminWebsit::getWebsitId).collect(Collectors.toList());
 
             List<WorkerComListWebsit> websit = workerComListWebsitService.lambdaQuery()
                     .in(!CollectionUtils.isEmpty(collect),WorkerComListWebsit::getWebsitId,collect)
@@ -84,6 +84,9 @@ public class WorkerComListLogic {
             }
             comListIds = websit.stream().map(WorkerComListWebsit::getWorkerComListId).distinct().collect(Collectors.toList());
         }
+
+        if (CollectionUtils.isEmpty(comListIds))
+            return new Page<>();
         IPage<WorkerComList> page = workerComListService.lambdaQuery()
                 .like(StringUtils.isNotEmpty(title), WorkerComList::getTitle, title)
                 .eq(status != null, WorkerComList::getStatus, status)
@@ -140,13 +143,14 @@ public class WorkerComListLogic {
         for (Object o : objects) {
             List<Object> row = (List<Object>) o;
             String workerNumber = (String) row.get(0);
+            String websitNumber = (String) row.get(1);
             if (StringUtils.isEmpty(workerNumber)) {
                 continue;
             }
             WorkerComListWorker workerComListWorker = new WorkerComListWorker();
             workerComListWorker.setCreateBy(workerComList.getCreateBy());
             workerComListWorker.setCreateTime(new Date());
-            workerComListWorker.setWebsitId(workerNumber);
+            workerComListWorker.setWebsitId(websitNumber);
             workerComListWorker.setWorkerComListId(workerComList.getId());
             workerComListWorker.setWorkerComListWorkerNumber(workerNumber);
             workerComListWorkers.add(workerComListWorker);
@@ -194,12 +198,16 @@ public class WorkerComListLogic {
         }
         WorkerComList workerComList = workerComListService.getById(id);
 
-        if (adminUser.getType() == 1 || adminUser.getNickName().equals(workerComList.getCreateBy())) {
+        if (adminUser.getType() == 1 || workerComList.getCreateBy().indexOf(adminUser.getNickName()) != -1) {
             log.info("【中心文件下发下载】:{}", JSONObject.toJSONString(adminUser));
             CommonUtils.downloadFile(workerComList.getFileUrl(),workerComList.getTitle()+".xlsx" , response);
         } else {
-            List<AdminWebsit> websitList = adminWebsitService.lambdaQuery().in(AdminWebsit::getWebsitId, adminUser.getCompanyWechatIds()).list();
+            List<AdminWebsit> websitList = adminWebsitService.lambdaQuery().in(AdminWebsit::getWebsitId, adminUser.getAdminWebsitIds()).list();
             List<String> websitNumbers = websitList.stream().map(AdminWebsit::getWebsitId).collect(Collectors.toList());
+
+            if (CollectionUtils.isEmpty(websitNumbers))
+                return;
+
             List<CommonListES> list = esLogic.list(websitNumbers, null, id.toString());
             if (CollectionUtils.isEmpty(list)) {
                 throw new RemoteServiceException("暂无可下载的内容");

+ 15 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/contract/WebsitContractSignLogic.java

@@ -726,10 +726,25 @@ public class WebsitContractSignLogic {
     }
 
     public WebsitContractSignRecordCount count() {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        String websitId = null;
+        if (adminUser.getType().equals(0) && adminUser.getAdminWebsitIds().size() == 1) {
+            final AdminWebsit websit = adminWebsitService.lambdaQuery()
+                    .eq(AdminWebsit::getCompanyWechatId, adminUser.getCompanyWechatId())
+                    .eq(AdminWebsit::getWebsitId, adminUser.getAdminWebsitIds().get(0))
+                    .one();
+            if (websit.getLevel() == 2) {
+                websitId = websit.getWebsitId();
+            }
+        }
         final Integer count = websitContractSignRecordService.lambdaQuery()
+                .eq(StringUtils.isNotBlank(websitId), WebsitContractSignRecord::getWebsitId, websitId)
+                .in(StringUtils.isBlank(websitId) && CollectionUtil.isNotEmpty(adminUser.getAdminWebsitIds()), WebsitContractSignRecord::getWebsitId, adminUser.getAdminWebsitIds())
                 .eq(WebsitContractSignRecord::getStatus, SignContractStatusEnum.WAIT_SIGN.getKey())
                 .count();
         final Integer count1 = websitContractSignRecordService.lambdaQuery()
+                .eq(StringUtils.isNotBlank(websitId), WebsitContractSignRecord::getWebsitId, websitId)
+                .in(StringUtils.isBlank(websitId) && CollectionUtil.isNotEmpty(adminUser.getAdminWebsitIds()), WebsitContractSignRecord::getWebsitId, adminUser.getAdminWebsitIds())
                 .eq(WebsitContractSignRecord::getStatus, SignContractStatusEnum.WAIT.getKey())
                 .count();
         WebsitContractSignRecordCount recordCount = new WebsitContractSignRecordCount();

+ 30 - 2
mall-server-api/src/main/java/com/gree/mall/manager/logic/es/EsLogic.java

@@ -7,6 +7,7 @@ import com.gree.mall.manager.utils.CommonUtils;
 import org.elasticsearch.index.query.BoolQueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.PageRequest;
 import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
 import org.springframework.data.elasticsearch.core.SearchHit;
 import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
@@ -49,13 +50,14 @@ public class EsLogic {
             CommonUtils.initList2(rows,rows.size());
             List<Object> row = (List<Object>) rows.get(i);
             String workerNumber = (String)row.get(0);
+            String websitNumber = (String)row.get(1);
             if(StringUtils.isEmpty(workerNumber)){
                 break;
             }
             CommonListES commonListES = new CommonListES();
             commonListES.setType(i==0?"1":"2");
             commonListES.setWorkerNumber(workerNumber);
-            commonListES.setWebsitNumber(workerNumber);
+            commonListES.setWebsitNumber(websitNumber);
             commonListES.setComListId(comListId);
             
             for(int x = start;x <= row.size();x++) {
@@ -93,12 +95,38 @@ public class EsLogic {
             must.must(QueryBuilders.termsQuery("websitNumber.keyword",websitNumbers));
         }
         NativeSearchQuery titleBuild = new NativeSearchQueryBuilder().withQuery(titleQueryBuilder).build();
-        NativeSearchQuery dataBuild = new NativeSearchQueryBuilder().withQuery(must).build();
+        NativeSearchQuery dataBuild = new NativeSearchQueryBuilder()
+                .withQuery(must)
+                .withPageable(PageRequest.of(0, 10000))
+                .build();
+
+        NativeSearchQuery dataBuild2 = new NativeSearchQueryBuilder()
+                .withQuery(must)
+                .withPageable(PageRequest.of(1, 10000))
+                .build();
+        NativeSearchQuery dataBuild3 = new NativeSearchQueryBuilder()
+                .withQuery(must)
+                .withPageable(PageRequest.of(2, 10000))
+                .build();
 
         List<SearchHit<CommonListES>> searchHits1 = elasticsearchRestTemplate.search(titleBuild, CommonListES.class).getSearchHits();
         List<SearchHit<CommonListES>> searchHits2 = elasticsearchRestTemplate.search(dataBuild, CommonListES.class).getSearchHits();
+
+
         List<CommonListES> titles = searchHits1.stream().map(SearchHit<CommonListES>::getContent).collect(Collectors.toList());
         List<CommonListES> datas = searchHits2.stream().map(SearchHit<CommonListES>::getContent).collect(Collectors.toList());
+
+
+        if (datas.size() == 10000) {
+            List<SearchHit<CommonListES>> searchHits3 = elasticsearchRestTemplate.search(dataBuild2, CommonListES.class).getSearchHits();
+            datas.addAll(searchHits3.stream().map(SearchHit<CommonListES>::getContent).collect(Collectors.toList()));
+        }
+
+        if (datas.size() == 20000) {
+            List<SearchHit<CommonListES>> searchHits4 = elasticsearchRestTemplate.search(dataBuild3, CommonListES.class).getSearchHits();
+            datas.addAll(searchHits4.stream().map(SearchHit<CommonListES>::getContent).collect(Collectors.toList()));
+        }
+
         titles.addAll(datas);
 
         return titles;

+ 11 - 35
mall-server-api/src/main/java/com/gree/mall/manager/logic/worker/WorkerWarrantyLogic.java

@@ -147,43 +147,21 @@ public class WorkerWarrantyLogic {
 
         List<WorkerWarranty> workerWarrantyList = workerWarrantyService.lambdaQuery()
                 .eq(WorkerWarranty::getCompanyWechatId, adminUser.getCompanyWechatId())
-                .in(CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds()) && !adminUser.getType().equals(1), WorkerWarranty::getWebsitId, adminUser.getAdminWebsitIds())
+                .in(CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds()) && !adminUser.getType().equals(1),
+                        WorkerWarranty::getWebsitId, adminUser.getAdminWebsitIds())
                 .list();
 
 
 
-        //网点名称
-/*        Map<String, AdminWebsit> adminWebsitMap = adminWebsitService.lambdaQuery()
-                .eq(AdminWebsit::getCompanyWechatId, adminUser.getCompanyWechatId())
-                .in(CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds()) && !adminUser.getType().equals(1), AdminWebsit::getWebsitId, adminUser.getAdminWebsitIds())
-                .eq(AdminWebsit::getType, AdminWebsitTypeEnum.C.getKey())
-                .list().stream().collect(Collectors.toMap(AdminWebsit::getWebsitId, Function.identity()));
-        log.info("网点");*/
-
-        //网点名称
-        Map<String, User> userMap = userService.lambdaQuery()
-                .eq(User::getCompanyWechatId, adminUser.getCompanyWechatId())
-                .eq(User::getType,"WORKER")
-                .ne(User::getMobile,"")
-                .isNotNull(User::getMobile)
-                .list().stream().collect(Collectors.toMap(User::getMobile, Function.identity()));
-
-        log.info("用户");
-
         for (int i = 0; i < objects.size(); i++) {
             int rowIndex = i + 2;
             List<Object> row = (List<Object>) objects.get(i);
 
-            AdminWebsit adminWebsit = adminWebsitService.getById((String) row.get(0));
-           // AdminWebsit adminWebsit = adminWebsitMap.get((String) row.get(0));
-            User user = userMap.get((String) row.get(8));
-
-
             WorkerWarranty workerWarranty = new WorkerWarranty();
 
 
-            workerWarranty.setWebsitId(adminWebsit.getWebsitId());
-            workerWarranty.setWebsitName(adminWebsit.getName());
+            workerWarranty.setWebsitId((String) row.get(0));
+            workerWarranty.setWebsitName((String)row.get(1));
 
 
 
@@ -192,15 +170,13 @@ public class WorkerWarrantyLogic {
              workerWarranty.setOutTime(DateUtil.parse((String)row.get(5), "yyyy-MM-dd"));
 
 
-
-
-            workerWarranty.setCompanyWechatId(adminWebsit.getCompanyWechatId());
-            workerWarranty.setCompanyWechatName(adminWebsit.getCompanyWechatName());
-            workerWarranty.setWorkerNumber(user.getWorkerNumber());
-            workerWarranty.setWorkerName(user.getNickName());
-            workerWarranty.setIdCard(user.getIdCard());
-            workerWarranty.setMobile(user.getMobile());
-            workerWarranty.setWorkerId(user.getUserId());
+            workerWarranty.setCompanyWechatId(adminUser.getCompanyWechatId());
+            workerWarranty.setCompanyWechatName(adminUser.getCompanyName());
+            workerWarranty.setWorkerNumber((String) row.get(6));
+            workerWarranty.setWorkerName((String) row.get(7));
+            workerWarranty.setIdCard((String) row.get(9));
+            workerWarranty.setMobile((String) row.get(8));
+            workerWarranty.setWorkerId((String) row.get(6));
             if (!StringUtil.isEmpty((String)row.get(11)))
                 workerWarranty.setEveryAmount(Convert.toBigDecimal(row.get(11)));
 

+ 361 - 163
mall-server-api/src/main/java/com/gree/mall/manager/logic/workorder/OrderBaseCountLogic.java

@@ -1,5 +1,6 @@
 package com.gree.mall.manager.logic.workorder;
 
+import cn.hutool.core.convert.Convert;
 import cn.hutool.core.date.DateUtil;
 import com.google.common.collect.Lists;
 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 lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import lombok.var;
 import org.apache.commons.collections4.CollectionUtils;
 import org.elasticsearch.index.query.BoolQueryBuilder;
 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.bucket.filter.FilterAggregationBuilder;
 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.elasticsearch.core.ElasticsearchRestTemplate;
 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.NativeSearchQueryBuilder;
 import org.springframework.stereotype.Service;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -54,32 +63,120 @@ public class OrderBaseCountLogic {
     public OrderBaseCountBean baseCountBean( String startTime,
                                              String endTime){
         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<>();
 
@@ -104,87 +201,136 @@ public class OrderBaseCountLogic {
         orderStatusQx.add("YCGB");
         orderStatusQx.add("FWQX");
         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);
@@ -193,37 +339,44 @@ public class OrderBaseCountLogic {
 
         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());
 
         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<>();
-            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);
         }
 
 

+ 7 - 8
mall-server-api/src/main/java/com/gree/mall/manager/logic/workorder/OrderBaseEsLogic.java

@@ -201,7 +201,7 @@ public class OrderBaseEsLogic {
                 ){
 
                     queryBuilder.mustNot(QueryBuilders.existsQuery("appointment_time"));
-                    queryBuilder.mustNot(QueryBuilders.termsQuery("order_status", "YWG", "GCSZX", "WDWG", "YWGO", "YQX", "FWZT", "YCGB",
+                    queryBuilder.mustNot(QueryBuilders.termsQuery("order_status", "YWG", "GCSZX", "WDWG", "YWGO", "YQX", "FWZT", "YCGB","YZP",
                                     "FWQX", "FL", "YJS", "LRCD", "DSHPG", "CJ", "YPD", "DXSPD", "DZBPG", "DWDSPGP", "DXSSPGP", "DTJXSSPGP", "DZBSPGP"));
 
                     continue;
@@ -220,7 +220,7 @@ public class OrderBaseEsLogic {
                 ){
 
                     queryBuilder.must(QueryBuilders.boolQuery()
-                            .mustNot(QueryBuilders.termsQuery("order_status","YQX", "FWQX", "FL", "FWZT", "YCGB"))
+                            .mustNot(QueryBuilders.termsQuery("order_status","YQX", "FWQX", "FL", "FWZT", "YCGB","YZP"))
                             .must(QueryBuilders.boolQuery().should(QueryBuilders.termQuery("is_meet", false))
                                     .should(QueryBuilders.termsQuery("order_status", "DJD"))));
                     continue;
@@ -285,14 +285,13 @@ public class OrderBaseEsLogic {
 
     public void test() {
 
-   /*     boolean a = elasticsearchRestTemplate.indexOps(OrderBaseEsDate.class).delete();
+        boolean a = elasticsearchRestTemplate.indexOps(OrderBaseEsDate.class).delete();
         IndexOperations indexOperations1 = elasticsearchRestTemplate.indexOps(OrderBaseEsDate.class);
         if (!indexOperations1.exists()) {
             indexOperations1.create();
             Document document = indexOperations1.createMapping();
             indexOperations1.putMapping(document);
         }
-*/
 /*
         List<PgOrderBase> list = pgOrderBaseService.lambdaQuery().list();
 
@@ -352,7 +351,7 @@ public class OrderBaseEsLogic {
                 .withPageable(PageRequest.of(1, 1))
                 .addAggregation(this.getAggs(AggregationBuilders.filter("DYY", QueryBuilders.boolQuery()
                         .mustNot(QueryBuilders.existsQuery("appointment_time"))
-                        .mustNot(QueryBuilders.termsQuery("order_status", "YWG", "GCSZX", "WDWG", "YWGO", "YQX", "FWZT", "YCGB",
+                        .mustNot(QueryBuilders.termsQuery("order_status", "YWG", "GCSZX", "WDWG", "YWGO", "YQX", "FWZT", "YCGB","YZP",
                                 "FWQX", "FL", "YJS", "LRCD", "DSHPG", "CJ", "YPD", "DXSPD", "DZBPG", "DWDSPGP", "DXSSPGP", "DTJXSSPGP", "DZBSPGP"))
                         .must(QueryBuilders.rangeQuery("create_time")
                                 .gte(startTime)
@@ -421,7 +420,7 @@ public class OrderBaseEsLogic {
                 .withQuery(queryBuilder)
                 .withPageable(PageRequest.of(1, 1))
                 .addAggregation(this.getAggs(AggregationBuilders.filter("DJD", QueryBuilders.boolQuery()
-                        .mustNot(QueryBuilders.termsQuery("order_status","YQX", "FWQX", "FL", "FWZT", "YCGB"))
+                        .mustNot(QueryBuilders.termsQuery("order_status","YQX", "FWQX", "FL", "FWZT", "YCGB","YZP"))
                         .must(QueryBuilders.boolQuery().should(QueryBuilders.termQuery("is_meet", false))
                         .should(QueryBuilders.termsQuery("order_status", "DJD")))
                         )))
@@ -440,7 +439,7 @@ public class OrderBaseEsLogic {
                 .withPageable(PageRequest.of(1, 1))
                 .addAggregation(this.getAggs(AggregationBuilders.filter("FWZ", QueryBuilders.boolQuery()
                         .must(QueryBuilders.termsQuery("order_status","FWZ","GCSZT","BFWG",
-                                "DSM","YZP","WDBH", "XSBH","TJXSBH","ZBBH","FZXBH")))))
+                                "DSM","WDBH", "XSBH","TJXSBH","ZBBH","FZXBH")))))
                 .build();
         SearchHits responseFWZ = elasticsearchRestTemplate.search(searchQueryfwz, OrderBaseEs.class);
 
@@ -503,7 +502,7 @@ public class OrderBaseEsLogic {
                 .withQuery(queryBuilder)
                 .withPageable(PageRequest.of(1, 1))
                 .addAggregation(this.getAggs(AggregationBuilders.filter("YQX", QueryBuilders.boolQuery()
-                        .must(QueryBuilders.termsQuery("order_status","YQX","FWZT","YCGB","FWQX","FL")))))
+                        .must(QueryBuilders.termsQuery("order_status","YZP","YQX","FWZT","YCGB","FWQX","FL")))))
                 .build();
         SearchHits responseYQX = elasticsearchRestTemplate.search(searchQueryYQX, OrderBaseEs.class);
 

+ 1 - 1
mall-server-api/src/main/java/com/gree/mall/manager/logic/workorder/OrderBaseLogic.java

@@ -2369,7 +2369,7 @@ public class OrderBaseLogic {
                 .notIn(!StringUtil.isEmpty(jsmWorkerOrder.getStatus()) && jsmWorkerOrder.getStatus().equals("DYY"),PgOrderBase::getOrderStatus,"YWG","GCSZX","WDWG","YWGO","YQX","FWZT","YCGB",
                         "FWQX","FL","YJS","LRCD","DSHPG","CJ","YPD","DXSPD","DZBPG","DWDSPGP","DXSSPGP","DTJXSSPGP","DZBSPGP")
                 .in(!StringUtil.isEmpty(jsmWorkerOrder.getStatus()) && jsmWorkerOrder.getStatus().equals("DFW"),PgOrderBase::getOrderStatus,"DSHPG","CJ","YPD","DXSPD","DZBPG","DWDSPGP","DXSSPGP","DTJXSSPGP","DZBSPGP","DFZXPD",
-                        "DFZXSPGP","DWDPG","DWDPD","FWZ","GCSZT","BFWG","DSM","YZP","WDBH","XSBH","TJXSBH","ZBBH","FZXBH")
+                        "DFZXSPGP","DWDPG","DWDPD","FWZ","GCSZT","BFWG","DSM","WDBH","XSBH","TJXSBH","ZBBH","FZXBH")
                 .in(!StringUtil.isEmpty(jsmWorkerOrder.getStatus()) && jsmWorkerOrder.getStatus().equals("DPJ"),PgOrderBase::getAppraiseStatus,"N")
                 .isNotNull(!StringUtil.isEmpty(jsmWorkerOrder.getStatus()) && jsmWorkerOrder.getStatus().equals("DPJ"),PgOrderBase::getOverTime)
 

+ 27 - 1
mall-server-api/src/main/java/com/gree/mall/manager/utils/JwtUtils.java

@@ -6,7 +6,6 @@ import org.bouncycastle.util.encoders.Base64;
 import javax.crypto.SecretKey;
 import javax.crypto.spec.SecretKeySpec;
 import java.util.Date;
-import java.util.UUID;
 
 /**
  * jwt加密和解密的工具类
@@ -52,6 +51,33 @@ public class JwtUtils {
     }
 
     /**
+     * 大屏JWT创建秘钥
+     *
+     * @param id
+     * @param subject
+     * @param ttlMillis
+     * @return
+     */
+    public static String createJWT(String id, String subject, long ttlMillis) {
+        SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
+        long nowMillis = System.currentTimeMillis();
+        Date now = new Date(nowMillis);
+        SecretKey secretKey = generalKey();
+        JwtBuilder builder = Jwts.builder()
+                .setId(id)
+                .setSubject(subject)   // 主题
+                .setIssuer("Runwise")     // 签发者
+                .setIssuedAt(now)      // 签发时间
+                .signWith(signatureAlgorithm, secretKey); // 签名算法以及密匙
+        if (ttlMillis >= 0) {
+            long expMillis = nowMillis + ttlMillis;
+            Date expDate = new Date(expMillis);
+            builder.setExpiration(expDate); // 过期时间
+        }
+        return builder.compact();
+    }
+
+    /**
      * 验证JWT
      *
      * @param jwtStr

+ 1 - 1
mall-server-api/src/main/resources/mapper/workorder/OrderBaseCMapper.xml

@@ -238,7 +238,7 @@
             count(if(order_status in ('DSHPG','CJ','YPD','DXSPD','DZBPG','DWDSPGP','DXSSPGP','DTJXSSPGP','DZBSPGP','DFZXPD','DFZXSPGP','DWDPG','DWDPD'),1,null)) as 'dpg',
             count(if((a.is_meet =0 or a.order_status  IN ('DJD')) and a.order_status not in ('YQX','FWQX','FL','FWZT','YCGB'),1,null)) as 'djs',
             count(if(order_status in ('DQD'),1,null)) as 'dqd',
-            count(if(order_status in ('FWZ','GCSZT','BFWG','DSM','YZP','WDBH','XSBH','TJXSBH','ZBBH','FZXBH'),1,null)) as 'fwz',
+            count(if(order_status in ('FWZ','GCSZT','BFWG','DSM','WDBH','XSBH','TJXSBH','ZBBH','FZXBH'),1,null)) as 'fwz',
             count(if(appointment_time is null  and a.order_status not in ('YWG','GCSZX','WDWG','YWGO','YQX','FWZT','YCGB',
         'FWQX','FL','YJS','LRCD','DSHPG','CJ','YPD','DXSPD','DZBPG','DWDSPGP','DXSSPGP','DTJXSSPGP','DZBSPGP'
         ),1,null)) as 'dyy',

+ 1 - 1
mall-server-sync-api/src/main/resources/mapper/workorder/OrderBaseCMapper.xml

@@ -133,7 +133,7 @@
             count(if(order_status in ('DSHPG','DWDPG','DSHPG','CJ','YPD','DXSPD','DZBPG','DWDSPGP','DXSSPGP','DTJXSSPGP','DZBSPGP','DFZXPD','DFZXSPGP'),1,null)) as 'dpg',
             count(if((a.is_meet =0 or a.order_status  IN ('DJD')) and a.order_status not in ('YQX','FWQX','FL','FWZT','YCGB'),1,null)) as 'djs',
             count(if(order_status in ('DQD'),1,null)) as 'dqd',
-            count(if(order_status in ('FWZ','GCSZT','BFWG','DSM','YZP','WDBH','XSBH','TJXSBH','ZBBH','FZXBH'),1,null)) as 'fwz',
+            count(if(order_status in ('FWZ','GCSZT','BFWG','DSM','WDBH','XSBH','TJXSBH','ZBBH','FZXBH'),1,null)) as 'fwz',
             count(if(appointment_time is null  and a.order_status not in ('YWG','GCSZX','WDWG','YWGO','YQX','FWZT','YCGB',
         'FWQX','FL','YJS','LRCD','DSHPG','CJ','YPD','DXSPD','DZBPG','DWDSPGP','DXSSPGP','DTJXSSPGP','DZBSPGP'
         ),1,null)) as 'dyy',