From 3351ade035a3a027d38e0372e496a5669cd7bde2 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期一, 30 九月 2024 00:34:42 +0800
Subject: [PATCH] 下发工单bug

---
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java |   57 ++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 40 insertions(+), 17 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 c156006..b9edc3a 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
@@ -1,5 +1,6 @@
 package com.ycl.platform.service.impl;
 
+import com.alibaba.excel.annotation.format.DateTimeFormat;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -55,6 +56,12 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.*;
@@ -93,7 +100,6 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    //TODO锛歊edis鍔犻攣锛屼粠Redis璇诲彇褰撴棩宸ュ崟鏁版嵁閲�
     public synchronized Boolean innerAddWorkOrder(List<WorkOrder> workOrderList) {
         int total = workOrderList.size();
         workOrderList.stream().filter(item -> {
@@ -199,7 +205,7 @@
         // 濡傛灉鍗冲皢鐢熸垚宸ュ崟锛屼絾鏄澶囧浗鏍囩爜鏌ヤ笉鍒扮偣浣嶏紝鍒欎笉娣诲姞锛�
         List<WorkOrder> notAddList = new ArrayList<>();
         //鏌edis浠婃棩宸ュ崟鏁伴噺
-        int workOrderNum = 1;
+        int workOrderNum = 0;
         //UUID浣滀负value锛屼繚璇佷笂閿佺殑绾跨▼鑷繁瑙i攣
         String requestId = IdUtils.fastSimpleUUID();
         try {
@@ -208,7 +214,7 @@
                 if (result) {
                     //鏌ヤ粖鏃ュ伐鍗曢噺
                     Object redisNum = redisCache.getCacheObject(RedisConstant.WORKORDER_NUM);
-                    workOrderNum = redisNum == null ? 1 : (Integer) redisNum;
+                    workOrderNum = redisNum == null ? 0 : (Integer) redisNum;
                     break;
                 } else {
                     if (i == 2) {
@@ -216,16 +222,13 @@
                         return Boolean.FALSE;
                     }
                     //绛夊緟涓�娈垫椂闂村悗缁х画
-                    Thread.sleep(3000);
+                    Thread.sleep(5000);
                 }
             }
         } catch (InterruptedException e) {
             log.error("鑾峰彇閿佸紓甯�");
             return Boolean.FALSE;
-        } finally {
-            redisCache.releaseLock(RedisConstant.WORKORDER_NUM_LOCK, requestId);
         }
-
         for (WorkOrder workOrder : waitAddList) {
             YwPoint point = pointMapping.get(workOrder.getSerialNumber());
             if (Objects.isNull(point)) {
@@ -233,8 +236,8 @@
                 continue;
             }
             //鏁板瓧鍓嶉潰琛�0
-            workOrder.setWorkOrderNo(IdUtils.randomNO(now, String.format("%05d", workOrderNum)));
             workOrderNum++;
+            workOrder.setWorkOrderNo(IdUtils.workOrderNO(now, String.format("%05d", workOrderNum)));
             if (Objects.nonNull(point.getUnitId())) {
                 workOrder.setUnitId(Math.toIntExact(point.getUnitId()));
             }
@@ -259,6 +262,7 @@
         }
         //璁板綍宸ュ崟鏁�
         redisCache.setCacheObject(RedisConstant.WORKORDER_NUM, workOrderNum);
+        redisCache.releaseLock(RedisConstant.WORKORDER_NUM_LOCK, requestId);
         // 淇濆瓨宸ュ崟鍜屾晠闅滅被鍨�
         baseMapper.addMany(waitAddList);
         if (!CollectionUtils.isEmpty(waitAddErrorTypeList)) {
@@ -302,6 +306,8 @@
             //鏌ヤ粖鏃ュ伐鍗曢噺
             Object redisNum = redisCache.getCacheObject(RedisConstant.WORKORDER_NUM);
             workOrderNum = redisNum == null ? 1 : (Integer) redisNum;
+            workOrderNum++;
+            redisCache.setCacheObject(RedisConstant.WORKORDER_NUM, workOrderNum);
             redisCache.releaseLock(RedisConstant.WORKORDER_NUM_LOCK, requestId);
         } else {
             return Result.error("宸ュ崟姝e湪娣诲姞锛岃绋嶅悗鍐嶈瘯");
@@ -312,9 +318,7 @@
         Date now = new Date();
         entity.setCreateTime(now);
         entity.setUpdateTime(now);
-        entity.setWorkOrderNo(IdUtils.randomNO(now, String.format("%05d", workOrderNum)));
-        workOrderNum++;
-        redisCache.setCacheObject(RedisConstant.WORKORDER_NUM, workOrderNum);
+        entity.setWorkOrderNo(IdUtils.workOrderNO(now, String.format("%05d", workOrderNum)));
         entity.setErrorType(String.join(",", form.getErrorType()));
         List<WorkOrderErrorType> workOrderErrorTypes = form.getErrorType().stream().map(errorType -> new WorkOrderErrorType(entity.getWorkOrderNo(), errorType)).toList();
         workOrderErrorTypeService.getBaseMapper().insertWorkOrderErrorTypeList(workOrderErrorTypes);
@@ -560,7 +564,7 @@
                 .select(WorkOrder::getSerialNumber, WorkOrder::getWorkOrderNo)
                 .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE)
                 .eq(Objects.nonNull(data.getUnitId()), WorkOrder::getUnitId, data.getUnitId())
-                .eq(WorkOrder::getErrorType, data.getErrorType())
+                .in(WorkOrder::getErrorType, data.getErrorType())
                 .between(WorkOrder::getCreateTime, data.getStart(), data.getEnd())
                 .orderByDesc(WorkOrder::getCreateTime)
                 .last("limit " + data.getFastNumLimit())
@@ -622,6 +626,7 @@
             ywPointService.updateRecovery(serialNumberList, 1);
             return Result.ok("鎴愬姛涓嬪彂" + query.getWorkOrderNOList().size() + "鏉″伐鍗�");
         } catch (Exception e) {
+            System.out.println(e.getMessage());
             return Result.error("鎿嶄綔澶辫触");
         } finally {
             distributeUnLock();
@@ -766,8 +771,6 @@
                 FFmpegFrameGrabber grabber = null;
                 try {
                     grabber = FFmpegFrameGrabber.createDefault(rtspUrl);
-                    //璁剧疆10s瓒呮椂
-                    grabber.setTimeout(10000);
                     grabber.start();
                     Frame frame = grabber.grabImage(); // 鐩存帴鎹曡幏涓�甯�
                     if (frame != null) {
@@ -786,17 +789,16 @@
                     } else {
                         System.out.println("鏈崟鑾峰埌甯�");
                     }
-                } catch (FrameGrabber.Exception e) {
+                } catch (Exception e) {
                     e.printStackTrace();
                 } finally {
                     if (grabber != null) {
                         try {
                             grabber.stop(); // 鍋滄鎹曡幏
+                            grabber.release();
                         } catch (FrameGrabber.Exception e) {
                             e.printStackTrace();
                         }
-                        // 閫氬父涓嶉渶瑕佽皟鐢╮elease()锛屽洜涓簊top()浼氬鐞嗚祫婧愰噴鏀�
-                        // grabber.release(); // 閲婃斁璧勬簮
                     }
                 }
             }
@@ -944,4 +946,25 @@
         workOrder.setImgList(imgList);
         return Result.ok().data(workOrder);
     }
+
+    @Override
+    public List<WorkOrderVO> export(WorkOrderExportQuery query) {
+        query.setUnitId(SecurityUtils.getUnitId());
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        if (query.getStart() == null) {
+            query.setStart(format.format(DateUtils.getDayStart(new Date())));
+        } else {
+            query.setStart(query.getStart() + " 00:00:00");
+        }
+        if (query.getEnd() == null) {
+            query.setStart(format.format(DateUtils.getDayEnd(new Date())));
+        } else {
+            query.setEnd(query.getEnd() + " 23:59:59");
+        }
+
+        List<WorkOrderVO> export = baseMapper.export(query);
+
+        System.out.println(export);
+        return export;
+    }
 }

--
Gitblit v1.8.0