Browse Source

es增加2TAB查询

FengChaoYu 2 months ago
parent
commit
45a575c3b9

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

@@ -43,6 +43,8 @@ import org.springframework.stereotype.Service;
 
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -260,6 +262,41 @@ public class OrderBaseEsLogic {
                     continue;
                     continue;
                 }
                 }
 
 
+                // 新增:当日需处理(DRXC)
+                if (param.equals("order_status") && value.equals("DRXC")) {
+                    LocalDateTime now = LocalDateTime.now();
+                    LocalDate today = now.toLocalDate();
+                    String today8 = DateUtil.format(today.atTime(8, 0, 0), "yyyy-MM-dd HH:mm:ss");    // 当日8:00:00
+                    String today1759 = DateUtil.format(today.atTime(17, 59, 59), "yyyy-MM-dd HH:mm:ss");  // 当日17:59:59
+                    String nowMinus30 = DateUtil.format(now.minusMinutes(30), "yyyy-MM-dd HH:mm:ss");  // 当前时间-30分钟
+
+                    queryBuilder.must(QueryBuilders.rangeQuery("create_time")  // create_time在当日8:00-17:59之间
+                            .gte(today8)
+                            .lte(today1759));
+                    queryBuilder.must(QueryBuilders.rangeQuery("create_time")  // create_time >= 当前时间-30分钟(后移半小时内)
+                            .gte(nowMinus30));
+                    queryBuilder.mustNot(QueryBuilders.existsQuery("appointment_time"));  // appointment_time为空
+                    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"));  // 相同order_status排除条件
+                    continue;
+                }
+
+                // 新增:次日需处理(CRXC)
+                if (param.equals("order_status") && value.equals("CRXC")) {
+                    LocalDateTime now = LocalDateTime.now();
+                    LocalDate today = now.toLocalDate();
+                    String today18 = DateUtil.format(today.atTime(18, 0, 0), "yyyy-MM-dd HH:mm:ss");    // 当日18:00:00
+                    String nextDay759 = DateUtil.format(today.plusDays(1).atTime(7, 59, 59), "yyyy-MM-dd HH:mm:ss");  // 次日7:59:59
+
+                    queryBuilder.must(QueryBuilders.rangeQuery("create_time")  // create_time在当日18:00-次日7:59之间
+                            .gte(today18)
+                            .lte(nextDay759));
+                    queryBuilder.mustNot(QueryBuilders.existsQuery("appointment_time"));  // appointment_time为空
+                    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"));  // 相同order_status排除条件
+                    continue;
+                }
+
                 if (param.equals("order_status")
                 if (param.equals("order_status")
                         &&  value.equals("YCD")
                         &&  value.equals("YCD")
                 ){
                 ){
@@ -445,7 +482,57 @@ public class OrderBaseEsLogic {
         dyy.put("orderStatus", "DYY");
         dyy.put("orderStatus", "DYY");
         maps.add(dyy);
         maps.add(dyy);
 
 
+        // 当日需处理(8:00-17:59创建,create_time后移半小时内appointment_time为空)
+        LocalDateTime now = LocalDateTime.now();
+        LocalDate today = now.toLocalDate();
+        String today8 = DateUtil.format(today.atTime(8, 0, 0), "yyyy-MM-dd HH:mm:ss");
+        String today1759 = DateUtil.format(today.atTime(17, 59, 59), "yyyy-MM-dd HH:mm:ss");
+        String nowMinus30 = DateUtil.format(now.minusMinutes(30), "yyyy-MM-dd HH:mm:ss");
+
+        NativeSearchQuery drxcSearchQuery = new NativeSearchQueryBuilder()
+                .withQuery(queryBuilder)
+                .withPageable(PageRequest.of(1, 1))
+                .addAggregation(this.getAggs(AggregationBuilders.filter("DRXC", QueryBuilders.boolQuery()
+                        .must(QueryBuilders.rangeQuery("create_time")
+                                .gte(today8)
+                                .lte(today1759))
+                        .mustNot(QueryBuilders.existsQuery("appointment_time"))
+                        .must(QueryBuilders.rangeQuery("create_time")
+                                .gte(nowMinus30))  // create_time >= 当前时间-30分钟(确保在半小时内)
+                        .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")) // 与DYY相同的order_status排除条件
+                )))
+                .build();
+
+        SearchHits drxcResponse = this.search(drxcSearchQuery, year);
+        HashMap<String, Object> drxcMap = new HashMap<>();
+        drxcMap.put("total", this.getWorkerOrderCountResult(drxcResponse.getAggregations(), "DRXC"));
+        drxcMap.put("orderStatus", "DRXC");
+        maps.add(drxcMap);
+
+
+        // 次日需处理(18:00-次日7:59创建,appointment_time为空)
+        String today18 = DateUtil.format(today.atTime(18, 0, 0), "yyyy-MM-dd HH:mm:ss");
+        String nextDay759 = DateUtil.format(today.plusDays(1).atTime(7, 59, 59), "yyyy-MM-dd HH:mm:ss");
+
+        NativeSearchQuery crxcSearchQuery = new NativeSearchQueryBuilder()
+                .withQuery(queryBuilder)
+                .withPageable(PageRequest.of(1, 1))
+                .addAggregation(this.getAggs(AggregationBuilders.filter("CRXC", QueryBuilders.boolQuery()
+                        .must(QueryBuilders.rangeQuery("create_time")
+                                .gte(today18)
+                                .lte(nextDay759))
+                        .mustNot(QueryBuilders.existsQuery("appointment_time"))
+                        .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")) // 与DYY相同的order_status排除条件
+                )))
+                .build();
 
 
+        SearchHits crxcResponse = this.search(crxcSearchQuery, year);
+        HashMap<String, Object> crxcMap = new HashMap<>();
+        crxcMap.put("total", this.getWorkerOrderCountResult(crxcResponse.getAggregations(), "CRXC"));
+        crxcMap.put("orderStatus", "CRXC");
+        maps.add(crxcMap);
 
 
         //待抢单
         //待抢单
         NativeSearchQuery searchQueryDqd = new NativeSearchQueryBuilder()
         NativeSearchQuery searchQueryDqd = new NativeSearchQueryBuilder()