From 9c2c61a775bec01096ab0459b90e46d2f1d8d439 Mon Sep 17 00:00:00 2001
From: chen.llin <1442464845@qq.comm>
Date: 星期日, 18 一月 2026 15:38:56 +0800
Subject: [PATCH] 倾斜度

---
 src/main/java/com/zy/task/CrnTiltRecordTask.java |   59 ++++++++++++++++++++++++++++++++---------------------------
 1 files changed, 32 insertions(+), 27 deletions(-)

diff --git a/src/main/java/com/zy/task/CrnTiltRecordTask.java b/src/main/java/com/zy/task/CrnTiltRecordTask.java
index 62c8846..249b7c4 100644
--- a/src/main/java/com/zy/task/CrnTiltRecordTask.java
+++ b/src/main/java/com/zy/task/CrnTiltRecordTask.java
@@ -94,32 +94,43 @@
             
             log.info("鎵惧埌 {} 鍙板爢鍨涙満锛屽紑濮嬭褰曞�炬枩搴︽暟鎹�", crnSlaves.size());
 
-            Date recordDate = new Date();
+            Date recordTime = new Date();
+            // 璁$畻浠婂ぉ鐨勫紑濮嬫椂闂达紙鐢ㄤ簬鍘婚噸鍒ゆ柇锛�
             Calendar cal = Calendar.getInstance();
-            cal.setTime(recordDate);
+            cal.setTime(recordTime);
             cal.set(Calendar.HOUR_OF_DAY, 0);
             cal.set(Calendar.MINUTE, 0);
             cal.set(Calendar.SECOND, 0);
             cal.set(Calendar.MILLISECOND, 0);
-            Date recordDateOnly = cal.getTime();
+            Date todayStart = cal.getTime();
+            Date todayEnd = new Date(todayStart.getTime() + 24 * 60 * 60 * 1000 - 1);
 
             int successCount = 0;
             int failCount = 0;
 
             for (CrnSlave crnSlave : crnSlaves) {
                 try {
+                    // 妫�鏌ヤ粖澶╂槸鍚﹀凡缁忚褰曡繃锛堜娇鐢� record_time 鐨勬棩鏈熼儴鍒嗭級
+                    EntityWrapper<CrnTiltRecord> checkWrapper = new EntityWrapper<>();
+                    checkWrapper.eq("crn_no", crnSlave.getId());
+                    checkWrapper.ge("record_time", todayStart);
+                    checkWrapper.le("record_time", todayEnd);
+                    int count = crnTiltRecordService.selectCount(checkWrapper);
+                    if (count > 0) {
+                        log.info("鍫嗗灈鏈簕}浠婂ぉ宸茶褰曡繃鍊炬枩搴︽暟鎹紝璺宠繃", crnSlave.getId());
+                        continue;
+                    }
+
                     // 璇诲彇鍊炬枩搴︽暟鎹�
                     CrnTiltRecord record = readTiltDataFromPLC(crnSlave);
                     if (record != null) {
                         record.setCrnNo(crnSlave.getId());
-                        record.setRecordDate(recordDateOnly);
-                        record.setRecordTime(recordDate);
+                        record.setRecordTime(recordTime);
                         record.setRecordType("STARTUP"); // 鍚姩鏃惰褰�
 
                         // 鑾峰彇涓婃璁板綍鐢ㄤ簬瀵规瘮
                         EntityWrapper<CrnTiltRecord> lastWrapper = new EntityWrapper<>();
                         lastWrapper.eq("crn_no", crnSlave.getId());
-                        lastWrapper.orderBy("record_date", false);
                         lastWrapper.orderBy("record_time", false);
                         lastWrapper.last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY");
                         CrnTiltRecord lastRecord = crnTiltRecordService.selectOne(lastWrapper);
@@ -179,26 +190,31 @@
                 return;
             }
 
-            Date recordDate = new Date();
+            Date recordTime = new Date();
+            // 璁$畻鏈懆鐨勫紑濮嬫椂闂达紙鐢ㄤ簬鍘婚噸鍒ゆ柇锛�
             Calendar cal = Calendar.getInstance();
-            cal.setTime(recordDate);
-            // 璁剧疆涓哄綋澶╃殑寮�濮嬫椂闂达紙00:00:00锛�
+            cal.setTime(recordTime);
+            // 璁剧疆涓烘湰鍛ㄤ竴
+            int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
+            int daysFromMonday = (dayOfWeek == Calendar.SUNDAY ? 6 : dayOfWeek - Calendar.MONDAY);
+            cal.add(Calendar.DAY_OF_MONTH, -daysFromMonday);
             cal.set(Calendar.HOUR_OF_DAY, 0);
             cal.set(Calendar.MINUTE, 0);
             cal.set(Calendar.SECOND, 0);
             cal.set(Calendar.MILLISECOND, 0);
-            Date recordDateOnly = cal.getTime();
+            Date weekStart = cal.getTime();
+            Date weekEnd = new Date(weekStart.getTime() + 7 * 24 * 60 * 60 * 1000 - 1);
 
             int successCount = 0;
             int failCount = 0;
 
             for (CrnSlave crnSlave : crnSlaves) {
                 try {
-                    // 妫�鏌ユ湰鍛ㄦ槸鍚﹀凡缁忚褰曡繃
+                    // 妫�鏌ユ湰鍛ㄦ槸鍚﹀凡缁忚褰曡繃锛堜娇鐢� record_time 鐨勬棩鏈熼儴鍒嗭級
                     EntityWrapper<CrnTiltRecord> wrapper = new EntityWrapper<>();
                     wrapper.eq("crn_no", crnSlave.getId());
-                    wrapper.ge("record_date", recordDateOnly);
-                    wrapper.le("record_date", new Date(recordDateOnly.getTime() + 24 * 60 * 60 * 1000 - 1));
+                    wrapper.ge("record_time", weekStart);
+                    wrapper.le("record_time", weekEnd);
                     
                     int count = crnTiltRecordService.selectCount(wrapper);
                     if (count > 0) {
@@ -210,14 +226,12 @@
                     CrnTiltRecord record = readTiltDataFromPLC(crnSlave);
                     if (record != null) {
                         record.setCrnNo(crnSlave.getId());
-                        record.setRecordDate(recordDateOnly);
-                        record.setRecordTime(recordDate);
+                        record.setRecordTime(recordTime);
                         record.setRecordType("AUTO"); // 鑷姩璁板綍
 
                         // 鑾峰彇涓婃璁板綍鐢ㄤ簬瀵规瘮
                         EntityWrapper<CrnTiltRecord> lastWrapper = new EntityWrapper<>();
                         lastWrapper.eq("crn_no", crnSlave.getId());
-                        lastWrapper.orderBy("record_date", false);
                         lastWrapper.orderBy("record_time", false);
                         lastWrapper.last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY");
                         CrnTiltRecord lastRecord = crnTiltRecordService.selectOne(lastWrapper);
@@ -340,14 +354,7 @@
                 return;
             }
 
-            Date recordDate = new Date();
-            Calendar cal = Calendar.getInstance();
-            cal.setTime(recordDate);
-            cal.set(Calendar.HOUR_OF_DAY, 0);
-            cal.set(Calendar.MINUTE, 0);
-            cal.set(Calendar.SECOND, 0);
-            cal.set(Calendar.MILLISECOND, 0);
-            Date recordDateOnly = cal.getTime();
+            Date recordTime = new Date();
 
             int successCount = 0;
             int failCount = 0;
@@ -363,14 +370,12 @@
                     CrnTiltRecord record = readTiltDataFromPLC(crnSlave);
                     if (record != null) {
                         record.setCrnNo(crnSlave.getId());
-                        record.setRecordDate(recordDateOnly);
-                        record.setRecordTime(recordDate);
+                        record.setRecordTime(recordTime);
                         record.setRecordType("MANUAL"); // 鎵嬪姩瑙﹀彂
 
                         // 鑾峰彇涓婃璁板綍鐢ㄤ簬瀵规瘮
                         EntityWrapper<CrnTiltRecord> lastWrapper = new EntityWrapper<>();
                         lastWrapper.eq("crn_no", crnSlave.getId());
-                        lastWrapper.orderBy("record_date", false);
                         lastWrapper.orderBy("record_time", false);
                         lastWrapper.last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY");
                         CrnTiltRecord lastRecord = crnTiltRecordService.selectOne(lastWrapper);

--
Gitblit v1.9.1