FengChaoYu hace 2 meses
padre
commit
47a0c342b4

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

@@ -264,20 +264,7 @@ public class OrderBaseEsLogic {
 
                 // 新增:当日需处理(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排除条件
+                    queryBuilder.must(buildDrxcQuery());
                     continue;
                 }
 
@@ -483,25 +470,10 @@ public class OrderBaseEsLogic {
         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)
+                .withQuery(queryBuilder.must(buildDrxcQuery()))  // 复用公共条件
                 .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排除条件
-                )))
+                .addAggregation(this.getAggs(AggregationBuilders.filter("DRXC", QueryBuilders.matchAllQuery())))  // 因 query 已包含条件,filter 可简化
                 .build();
 
         SearchHits drxcResponse = this.search(drxcSearchQuery, year);
@@ -512,6 +484,8 @@ public class OrderBaseEsLogic {
 
 
         // 次日需处理(18:00-次日7:59创建,appointment_time为空)
+        LocalDateTime now = LocalDateTime.now();
+        LocalDate today = now.toLocalDate();
         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");
 
@@ -757,6 +731,24 @@ public class OrderBaseEsLogic {
         return maps;
     }
 
+    private BoolQueryBuilder buildDrxcQuery() {
+        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");
+
+        return QueryBuilders.boolQuery()
+                .must(QueryBuilders.rangeQuery("create_time")
+                        .gte(today8)
+                        .lte(today1759))
+                .must(QueryBuilders.rangeQuery("create_time")
+                        .gte(nowMinus30))
+                .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"));
+    }
+
 
     private SearchHits search(NativeSearchQuery searchQuery,String year) {