‘linchangsheng’ 1 month ago
parent
commit
7c49efa3ab

+ 178 - 7
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/workorder/OrderBaseLogic.java

@@ -37,7 +37,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;
@@ -107,7 +109,7 @@ public class OrderBaseLogic {
         // 构建查询,最大只能查两万数据
         NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
                 .withQuery(boolQuery)
-                .withPageable(PageRequest.of(0, 8000))
+                .withPageable(PageRequest.of(0, 10000))
                 .build();
 
         // 执行查询
@@ -132,12 +134,12 @@ public class OrderBaseLogic {
                 .withPageable(PageRequest.of(1, 1))
                 .addAggregation(this.getAggs(AggregationBuilders.filter("DJD", QueryBuilders.boolQuery()
                         .must(
-                                QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("id", orderBaseIds))
+                                QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("is_import_excel", false))
                                         .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(
+                                QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("is_import_excel", true))
+                                        .should(QueryBuilders.termsQuery("is_meet", false))
                         )
                         )))
                 .build();
@@ -363,13 +365,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())){
@@ -539,6 +541,175 @@ 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"))
+                ;
+        boolQueryOrder.must(
+                QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("id", orderBaseIds))
+                        .should(QueryBuilders.termsQuery("order_status", OrderBaseStatusEnum.DQD.getKey()))
+        );
+
+        if (startTime != null)
+            boolQueryOrder.must( QueryBuilders.rangeQuery("create_time")
+                    .gte(startTime)
+                    .lte(endTime)
+            );
+
+        String orderStatus = orderBaseStatusEnum != null ? orderBaseStatusEnum.getKey() : null;
+
+        if(StringUtils.equals(orderStatus, OrderBaseStatusEnum.DJD.getKey())) {
+            boolQueryOrder.must(
+                    QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("is_import_excel", false))
+                            .should(QueryBuilders.termsQuery("order_status", OrderBaseStatusEnum.DJD.getKey()))
+            ).should(
+                    QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("is_import_excel", true))
+                                    .should(QueryBuilders.termsQuery("is_meet", false))
+            );
+
+        }
+
+        if(StringUtils.equals(orderStatus, OrderBaseStatusEnum.FWZ.getKey())) {
+            boolQueryOrder .must(QueryBuilders.termsQuery("order_status","FWZ","GCSZT","BFWG","DSM","YZP","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"));
+        }
+
+
+
+
+        // 创建分页请求
+        Pageable pageable = PageRequest.of(pageNum-1, pageSize);
+
+        // 创建查询
+        Query searchQueryOrder = new NativeSearchQueryBuilder()
+                .withQuery(boolQuery)
+                .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=已完成