Эх сурвалжийг харах

铲车、门卫、运单排序优化

donglang 5 цаг өмнө
parent
commit
588ee8cf2b

+ 54 - 8
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/ForkliftOrderService.java

@@ -26,10 +26,7 @@ import com.sckw.transport.model.*;
 import com.sckw.transport.model.param.WaybillOrderLoadingParam;
 import com.sckw.transport.model.param.forklift.reponse.ForkliftOrderFilterResp;
 import com.sckw.transport.model.param.forklift.reponse.ForkliftOrderResp;
-import com.sckw.transport.model.param.forklift.request.ForkliftOrderCancelParam;
-import com.sckw.transport.model.param.forklift.request.ForkliftOrderFilterParam;
-import com.sckw.transport.model.param.forklift.request.ForkliftOrderQueryParam;
-import com.sckw.transport.model.param.forklift.request.ForkliftOrderTakingParam;
+import com.sckw.transport.model.param.forklift.request.*;
 import com.sckw.transport.model.vo.StatisticsWaybillResp;
 import com.sckw.transport.repository.*;
 import jakarta.annotation.Resource;
@@ -111,7 +108,7 @@ public class ForkliftOrderService {
         }
 
         LambdaQueryWrapper<KwtForkliftWaybillOrder> wrapper = buildAndExecuteQuery(param);
-
+        sort(param, wrapper);
         //查询铲车订单
         Page<KwtForkliftWaybillOrder> pageByStatus = forkliftWaybillOrderRepository.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
         List<KwtForkliftWaybillOrder> records = pageByStatus.getRecords();
@@ -120,6 +117,8 @@ public class ForkliftOrderService {
             return PageDataResult.empty(param.getPageNum(), param.getPageSize());
         }
         List<ForkliftOrderResp> forkliftOrderPageResult = getForkliftOrderPageResult(records);
+        //结果排序
+        sortResult(param, forkliftOrderPageResult);
         return PageDataResult.success(param.getPageNum(), param.getPageSize(), pageByStatus.getTotal(), forkliftOrderPageResult);
     }
 
@@ -144,9 +143,7 @@ public class ForkliftOrderService {
         LambdaQueryWrapper<KwtForkliftWaybillOrder> wrapper = Wrappers.<KwtForkliftWaybillOrder>lambdaQuery()
                 .eq(KwtForkliftWaybillOrder::getEntId, param.getEntId())
                 .eq(StringUtils.isNotBlank(param.getDriverId()), KwtForkliftWaybillOrder::getDriverId, param.getDriverId())
-                .in(CollectionUtils.isNotEmpty(param.getDictIdList()),KwtForkliftWaybillOrder::getDictId, param.getDictIdList())
-                .orderByDesc(KwtForkliftWaybillOrder::getCreateTime)
-                .orderByDesc(KwtForkliftWaybillOrder::getId);
+                .in(CollectionUtils.isNotEmpty(param.getDictIdList()),KwtForkliftWaybillOrder::getDictId, param.getDictIdList());
         if (ForkliftStatusEnum.PENDING_ORDERS.getCode().equals(param.getStatus())) {
             wrapper.eq(KwtForkliftWaybillOrder::getStatus, 1);
         } else if (ForkliftStatusEnum.ORDER_TAKING.getCode().equals(param.getStatus())) {
@@ -274,6 +271,31 @@ public class ForkliftOrderService {
 
     }
 
+    /**
+     * 排序
+     * @param param
+     * @param wrapper
+     */
+    private void sort(ForkliftOrderQueryParam param, LambdaQueryWrapper<KwtForkliftWaybillOrder> wrapper ) {
+        log.info("铲车订单排序,param:{}", JSON.toJSONString(param));
+        // 根据状态进行排序
+        switch (param.getStatus()) {
+            case 1:
+            case 5:
+                // 待接单/进行中: 创建时间升序
+                wrapper.orderByAsc(KwtForkliftWaybillOrder::getCreateTime);
+                break;
+            case 10:
+                // 装载完成: 完成时间倒序
+                wrapper.orderByDesc(KwtForkliftWaybillOrder::getFinishTime);
+                break;
+            default:
+                // 兜底方案
+                wrapper.orderByAsc(KwtForkliftWaybillOrder::getCreateTime);
+                break;
+        }
+    }
+
     /**
      * 获取铲车订单数据
      * @param records
@@ -409,6 +431,30 @@ public class ForkliftOrderService {
         return forklift;
     }
 
+    /**
+     * 排序
+     * @param param
+     * @param result
+     */
+    private void sortResult(ForkliftOrderQueryParam param, List<ForkliftOrderResp> result) {
+        log.info("铲车订单结果排序,param:{}", JSON.toJSONString(param));
+        // 根据状态进行排序
+        switch (param.getStatus()) {
+            case 1:
+            case 5:
+                // 待接单/进行中: 创建时间升序
+                result.sort(Comparator.comparing(ForkliftOrderResp::getId));
+                break;
+            case 10:
+                // 装载完成: 完成时间倒序
+                result.sort(Comparator.comparing(ForkliftOrderResp::getFinishTime).reversed());
+                break;
+            default:
+                result.sort(Comparator.comparing(ForkliftOrderResp::getId));
+                break;
+        }
+    }
+
     /**
      * 筛选
      * @param param

+ 38 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/GatekeeperOrderService.java

@@ -120,7 +120,8 @@ public class GatekeeperOrderService {
 
         // 转换为响应对象
         List<GatekeeperOrderResp> gatekeeperOrderPageResult = getGatekeeperOrderPageResult(records);
-
+        //结果排序
+        sortResult(param, gatekeeperOrderPageResult);
         // 处理异常车辆数据(如果需要)
         gatekeeperOrderPageResult = filterGatekeeperOrderResp(param, gatekeeperOrderPageResult);
 
@@ -497,6 +498,41 @@ public class GatekeeperOrderService {
         return lossRate.compareTo(allowedError) > 0;
     }
 
+    /**
+     * 排序
+     * @param param
+     * @param result
+     */
+    private void sortResult(GatekeeperOrderQueryParam param, List<GatekeeperOrderResp> result) {
+        log.info("门卫订单结果排序,param:{}", JSON.toJSONString(param));
+        // 根据状态进行排序
+        switch (param.getStatus()) {
+            case 1:
+                // 待进场: 运输司机接单时间升序
+                result.sort(Comparator.comparing(GatekeeperOrderResp::getWaybillAcceptTime));
+                break;
+            case 2:
+                //待离场:未放行数据按照司机点击离场数据升序
+                result.sort(Comparator.comparing(GatekeeperOrderResp::getUpdateTime));
+                break;
+            case 3:
+                // 场内车辆: 车辆进场时间升序
+                result.sort(Comparator.comparing(GatekeeperOrderResp::getIntoTime));
+                break;
+            case 4:
+                // 异常车辆: 场内耗时倒序——>进场时间升序
+                result.sort(Comparator.comparing(GatekeeperOrderResp::getIntoTime));
+                break;
+            case 5:
+                // 出入记录: 离场时间倒序s
+                result.sort(Comparator.comparing(GatekeeperOrderResp::getLeaveTime).reversed());
+                break;
+            default:
+                break;
+        }
+    }
+
+
     /**
      * 处理异常车辆数据
      * @param param
@@ -526,7 +562,7 @@ public class GatekeeperOrderService {
      * @param wrapper
      */
     private void sort(GatekeeperOrderQueryParam param, LambdaQueryWrapper<KwtGatekeeperWaybillOrder> wrapper) {
-        log.info("门卫订单排序,param:{}", JSON.toJSONString(param), JSON.toJSONString(param));
+        log.info("门卫订单排序,param:{}", JSON.toJSONString(param));
         // 根据状态进行排序
         switch (param.getStatus()) {
             case 1:

+ 15 - 11
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/app/WaybillOrderService.java

@@ -682,7 +682,7 @@ public class WaybillOrderService {
         }
         //构建查询条件
         LambdaQueryWrapper<KwtWaybillOrder> queryWrapper = buildAndExecuteQuery(param);
-
+        sort(param, queryWrapper);
         //分页查询运单主数据
         Page<KwtWaybillOrder> waybillOrderList = waybillOrderRepository.page(new Page<>(param.getPageNum(), param.getPageSize()), queryWrapper);
         List<KwtWaybillOrder> records = waybillOrderList.getRecords();
@@ -693,7 +693,6 @@ public class WaybillOrderService {
 
         //获取运单关联数据并返回结果
         List<WaybillOrderStatusResp> ordderList = getWaybillOrderRelevantData(param, records);
-        sort(param, ordderList);
         log.info("查询司机的物流运单成功!");
         return PageDataResult.success(param.getPageNum(), param.getPageSize(), waybillOrderList.getTotal() , ordderList);
     }
@@ -717,9 +716,7 @@ public class WaybillOrderService {
     private static LambdaQueryWrapper<KwtWaybillOrder> buildBaseQueryWrapper(WaybillOrderQueryParam param) {
         LambdaQueryWrapper<KwtWaybillOrder> queryWrapper = Wrappers.<KwtWaybillOrder>lambdaQuery()
                 .eq(KwtWaybillOrder::getEntId, param.getEntId())
-                .eq(KwtWaybillOrder::getDelFlag, 0)
-                .orderByDesc(KwtWaybillOrder::getCreateTime)
-                .orderByDesc(KwtWaybillOrder::getId);
+                .eq(KwtWaybillOrder::getDelFlag, 0);
         //进行中
         if (Objects.equals(param.getStatus(), Global.NUMERICAL_ONE)) {
             queryWrapper.in(KwtWaybillOrder::getStatus, UNDER_WAY);
@@ -973,6 +970,12 @@ public class WaybillOrderService {
                     orderSubtaskList,wbOrderIdList, subtaskMap, logOrderIdAndCirculateMap, Boolean.TRUE);
             ordderList.addAll(rawOreOrdderList);
         }
+        // 排序
+        if (Objects.equals(param.getStatus(), 3)) {
+            ordderList.sort(Comparator.comparing(WaybillOrderStatusResp::getUpdateTime).reversed());
+        } else {
+            ordderList.sort(Comparator.comparing(WaybillOrderStatusResp::getId).reversed());
+        }
 
         return ordderList;
     }
@@ -1436,14 +1439,15 @@ public class WaybillOrderService {
      * @param param
      * @param gatekeeperOrderPageResult
      */
-    private void sort(WaybillOrderQueryParam param, List<WaybillOrderStatusResp> ordderList) {
-        log.info("运单分页列表排序,param:{}, order:{}", JSON.toJSONString(param), JSON.toJSONString(ordderList));
-        if (CollectionUtils.isEmpty(ordderList)) {
-            return;
-        }
+    private void sort(WaybillOrderQueryParam param, LambdaQueryWrapper<KwtWaybillOrder> queryWrapper) {
+        log.info("运单分页列表排序,param:{", JSON.toJSONString(param));
+
         // 完成运单,根据时间倒叙排列
         if (Objects.equals(3, param.getStatus())) {
-            ordderList.sort(Comparator.comparing(WaybillOrderStatusResp::getUpdateTime).reversed());
+            queryWrapper.orderByDesc(KwtWaybillOrder::getUpdateTime);
+        } else {
+            queryWrapper.orderByDesc(KwtWaybillOrder::getCreateTime)
+                    .orderByDesc(KwtWaybillOrder::getId);
         }
     }