From e9da452e510096673929d04169b92b5f4ebbde3c Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期三, 17 四月 2024 14:06:52 +0800
Subject: [PATCH] 工单下发:快捷下发

---
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java |   58 ++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 46 insertions(+), 12 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
index 992da03..e311724 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -14,6 +14,9 @@
 import com.ycl.platform.domain.vo.WorkOrderVO;
 import com.ycl.platform.domain.query.WorkOrderQuery;
 
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.temporal.ChronoUnit;
 import java.util.Arrays;
 import java.util.List;
 
@@ -156,7 +159,7 @@
         return Result.ok().data(
                 new LambdaQueryChainWrapper<>(workOrderAuditingRecordMapper)
                         .eq(WorkOrderAuditingRecord::getWorkOrderId, id)
-                        .orderByDesc(WorkOrderAuditingRecord::getCreateTime)
+                        .orderByAsc(WorkOrderAuditingRecord::getCreateTime)
                         .list());
     }
 
@@ -261,26 +264,57 @@
 
     @Override
     public Result distributeFast(DistributeWorkOrderVO data) {
-        List<WorkOrder> willDistributeList = new ArrayList<>(32);
-        // 濡傛灉鏄嚜瀹氫箟鏃堕棿鑼冨洿
-        if (FastDistributeTypeEnum.CUSTOM == data.getFastWay()) {
+        // 鑾峰彇褰撳墠鏃堕棿
+        LocalDateTime now = LocalDateTime.now(ZoneId.systemDefault());
+        switch (data.getFastWay()) {
+            case LAST_HALF_HOUR:
+                data.setStart(now.minusMinutes(30));
+                data.setEnd(now);
+                break;
+            case LAST_HOUR:
+                data.setStart(now.minusHours(1));
+                data.setEnd(now);
+                break;
+            case LAST_TWO_HOUR:
+               data.setStart(now.minusHours(2));
+               data.setEnd(now);
+               break;
+            case LAST_DAY:
+                data.setStart(now.minusDays(1));
+                data.setEnd(now);
+                break;
+           }
 
+        List<Integer> ids = new LambdaQueryChainWrapper<>(baseMapper)
+                .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE)
+                .eq(Objects.nonNull(data.getUnitId()), WorkOrder::getUnitId, data.getUnitId())
+                .eq(WorkOrder::getErrorType, data.getErrorType())
+                .between(WorkOrder::getCreateTime, data.getStart(), data.getEnd())
+                .orderByDesc(WorkOrder::getCreateTime)
+                .last("limit " + data.getFastNumLimit())
+                .list()
+                .stream()
+                .map(WorkOrder::getId)
+                .toList();
+
+        if (ids.isEmpty()) {
+            return Result.error("娌℃湁绗﹀悎鏉′欢鐨勫伐鍗�");
+        } else {
+            new LambdaUpdateChainWrapper<>(baseMapper)
+                    .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED)
+                    .in(WorkOrder::getId, ids)
+                    .update();
         }
-
-        new LambdaUpdateChainWrapper<>(baseMapper)
-                .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED)
-                .update();
-
-        return Result.ok("鎿嶄綔鎴愬姛");
+        return Result.ok("鎴愬姛涓嬪彂" + ids.size() + "鏉″伐鍗�");
     }
 
     @Override
-    public Result selectedIdsDistribute(List<Integer> ids) {
+    public Result selectedIdsDistribute(List<Integer> ids, Integer unitId) {
         new LambdaUpdateChainWrapper<>(baseMapper)
                 .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED)
                 .in(ArrayUtils.isNotEmpty(ids.toArray()), WorkOrder::getId, ids)
                 .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE)
-                // .eq(WorkOrder::getDeleted, 0)
+                .eq(Objects.nonNull(unitId), WorkOrder::getUnitId, unitId)
                 .update();
         return Result.ok("鎿嶄綔鎴愬姛");
     }

--
Gitblit v1.8.0