From c4df5d2cfaa12a1c8a72ef25934fdc31d5be65a1 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期日, 29 九月 2024 11:21:21 +0800
Subject: [PATCH] 工单导出

---
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java |   42 +++++++++++++++++++++++++++++++-----------
 1 files changed, 31 insertions(+), 11 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..32536ae 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,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.*;
@@ -93,7 +95,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 +200,7 @@
         // 濡傛灉鍗冲皢鐢熸垚宸ュ崟锛屼絾鏄澶囧浗鏍囩爜鏌ヤ笉鍒扮偣浣嶏紝鍒欎笉娣诲姞锛�
         List<WorkOrder> notAddList = new ArrayList<>();
         //鏌edis浠婃棩宸ュ崟鏁伴噺
-        int workOrderNum = 1;
+        int workOrderNum = 0;
         //UUID浣滀负value锛屼繚璇佷笂閿佺殑绾跨▼鑷繁瑙i攣
         String requestId = IdUtils.fastSimpleUUID();
         try {
@@ -208,7 +209,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 +217,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 +231,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 +257,7 @@
         }
         //璁板綍宸ュ崟鏁�
         redisCache.setCacheObject(RedisConstant.WORKORDER_NUM, workOrderNum);
+        redisCache.releaseLock(RedisConstant.WORKORDER_NUM_LOCK, requestId);
         // 淇濆瓨宸ュ崟鍜屾晠闅滅被鍨�
         baseMapper.addMany(waitAddList);
         if (!CollectionUtils.isEmpty(waitAddErrorTypeList)) {
@@ -302,6 +301,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 +313,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);
@@ -944,4 +943,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