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

---
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DistributeWorkOrderVO.java     |   13 ++++--
 ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java    |    4 +-
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java |   58 +++++++++++++++++++++++------
 ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java          |    2 
 4 files changed, 57 insertions(+), 20 deletions(-)

diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DistributeWorkOrderVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DistributeWorkOrderVO.java
index 5aaf9f7..a9ccdd7 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DistributeWorkOrderVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DistributeWorkOrderVO.java
@@ -9,7 +9,7 @@
 import lombok.Data;
 import lombok.experimental.Accessors;
 
-import java.util.Date;
+import java.time.LocalDateTime;
 
 /**
  * 涓嬪彂宸ュ崟鏌ヨ
@@ -30,26 +30,29 @@
     /**
      * 蹇�熶笅鍙戞柟寮�
      */
-//    @NotNull(message = "璇烽�夋嫨蹇嵎涓嬪彂鏂瑰紡")
+   @NotNull(message = "璇烽�夋嫨蹇嵎涓嬪彂鏂瑰紡")
     private FastDistributeTypeEnum fastWay;
 
     /**
      * 蹇�熶笅鍙戝伐鍗曟暟閲�
      */
-    @Min(value = 0, message = "涓嬪彂鏈�澶ф暟閲忓簲璇ュぇ浜�1")
+    @Min(value = 1, message = "涓嬪彂鏈�澶ф暟閲忓簲璇ュぇ浜�0")
     private Integer fastNumLimit;
 
     /**
      * 鏃堕棿
      */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date start;
+    private LocalDateTime start;
 
     /**
      * 鏃堕棿
      */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date end;
+    private LocalDateTime  end;
+
+    @NotNull(message = "璇烽�夋嫨鏁呴殰绫诲瀷")
+    private String errorType;
 
 }
 
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java b/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java
index ad73c5b..e2ca4c8 100644
--- a/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java
@@ -118,8 +118,8 @@
 
     @PostMapping("/distribute/ids")
     @ApiOperation(value = "涓嬪彂閫夋嫨", notes = "涓嬪彂閫夋嫨")
-    public Result selectedIdsDistribute(@RequestBody List<Integer> ids) {
-        return workOrderService.selectedIdsDistribute(ids);
+    public Result selectedIdsDistribute(@RequestBody List<Integer> ids, @RequestParam("unitId") Integer unitId) {
+        return workOrderService.selectedIdsDistribute(ids, unitId);
     }
 
     @GetMapping("/{id}")
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java b/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
index 5fa0fbb..f9a76f0 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
@@ -133,6 +133,6 @@
      * @param ids id
      * @return 缁撴灉
      */
-    Result selectedIdsDistribute(List<Integer> ids);
+    Result selectedIdsDistribute(List<Integer> ids, Integer unitId);
 
 }
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