From ce7738b672326ccbb36aca1a90c60b184be707f7 Mon Sep 17 00:00:00 2001
From: tjx <t2856754968@163.com>
Date: 星期三, 24 十二月 2025 19:32:05 +0800
Subject: [PATCH] 11

---
 src/test/java/com/gs/dingtalk/DeviceReceivingApplicationTests.java |  158 ++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 140 insertions(+), 18 deletions(-)

diff --git a/src/test/java/com/gs/dingtalk/DeviceReceivingApplicationTests.java b/src/test/java/com/gs/dingtalk/DeviceReceivingApplicationTests.java
index 71afa7f..0a81436 100644
--- a/src/test/java/com/gs/dingtalk/DeviceReceivingApplicationTests.java
+++ b/src/test/java/com/gs/dingtalk/DeviceReceivingApplicationTests.java
@@ -9,6 +9,8 @@
 import com.gs.dingtalk.service.SimpleExample;
 import com.gs.dingtalk.service.VwCjScSjTsBbService;
 import com.gs.dingtalk.service.WorkWXService;
+import com.gs.dingtalk.service.QwCheckinDayDataService;
+import com.gs.dingtalk.service.QwHardwareCheckinDataService;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -33,6 +35,12 @@
 
     @Autowired
     private QwCheckinDataService qwCheckinDataService;
+
+    @Autowired
+    private QwCheckinDayDataService qwCheckinDayDataService;
+
+    @Autowired
+    private QwHardwareCheckinDataService qwHardwareCheckinDataService;
 
     /**
      * 娴嬭瘯瀵煎嚭鐢熶骇鏁版嵁骞跺彂閫侀拤閽夋秷鎭�
@@ -280,19 +288,16 @@
                     // 鎵撳嵃寮傚父淇℃伅
                     if (data.getExceptionInfos() != null && !data.getExceptionInfos().isEmpty()) {
                         data.getExceptionInfos().forEach(ex -> {
-                            String exType = switch (ex.getException()) {
-                                case 1 -> "杩熷埌";
-                                case 2 -> "鏃╅��";
-                                case 3 -> "缂哄崱";
-                                case 4 -> "鏃峰伐";
-                                case 5 -> "鍦扮偣寮傚父";
-                                case 6 -> "璁惧寮傚父";
-                                default -> "鏈煡";
-                            };
+                            String exType = getExceptionTypeName(ex.getException());
                             System.out.println("      寮傚父: " + exType + ", 娆℃暟: " + ex.getCount() + ", 鏃堕暱(绉�): " + ex.getDuration());
                         });
                     }
                 });
+
+                // 淇濆瓨鍒版暟鎹簱
+                System.out.println("  - 寮�濮嬩繚瀛樻墦鍗℃棩鎶ユ暟鎹埌鏁版嵁搴�...");
+                int insertCount = qwCheckinDayDataService.saveDayDataBatch(dayDataList);
+                System.out.println("鉁� 淇濆瓨瀹屾垚锛屾柊澧炶褰曟暟: " + insertCount + ", 鏇存柊(宸插瓨鍦�): " + (dayDataList.size() - insertCount));
             } else {
                 System.out.println("鉁� 鑾峰彇鐨勬墦鍗℃棩鎶ユ暟鎹负绌�");
             }
@@ -356,15 +361,7 @@
                     if (data.getExceptionInfos() != null && !data.getExceptionInfos().isEmpty()) {
                         System.out.println("  寮傚父淇℃伅:");
                         data.getExceptionInfos().forEach(ex -> {
-                            String exType = switch (ex.getException()) {
-                                case 1 -> "杩熷埌";
-                                case 2 -> "鏃╅��";
-                                case 3 -> "缂哄崱";
-                                case 4 -> "鏃峰伐";
-                                case 5 -> "鍦扮偣寮傚父";
-                                case 6 -> "璁惧寮傚父";
-                                default -> "鏈煡";
-                            };
+                            String exType = getExceptionTypeName(ex.getException());
                             System.out.println("    - " + exType + ": " + ex.getCount() + "娆�, 鏃堕暱: " + formatSeconds(ex.getDuration()));
                         });
                     }
@@ -403,4 +400,129 @@
         return sb.toString();
     }
 
+    /**
+     * 鑾峰彇寮傚父绫诲瀷鍚嶇О
+     * @param exceptionType 寮傚父绫诲瀷浠g爜锛�1-杩熷埌锛�2-鏃╅��锛�3-缂哄崱锛�4-鏃峰伐锛�5-鍦扮偣寮傚父锛�6-璁惧寮傚父
+     */
+    private String getExceptionTypeName(Integer exceptionType) {
+        if (exceptionType == null) {
+            return "鏈煡";
+        }
+        switch (exceptionType) {
+            case 1:
+                return "杩熷埌";
+            case 2:
+                return "鏃╅��";
+            case 3:
+                return "缂哄崱";
+            case 4:
+                return "鏃峰伐";
+            case 5:
+                return "鍦扮偣寮傚父";
+            case 6:
+                return "璁惧寮傚父";
+            default:
+                return "鏈煡";
+        }
+    }
+
+    /**
+     * 娴嬭瘯鑾峰彇璁惧鎵撳崱鏁版嵁
+     * 鎺ュ彛闄愬埗锛氭椂闂磋法搴︿笉瓒呰繃涓�涓湀锛岀敤鎴峰垪琛ㄤ笉瓒呰繃100涓�
+     */
+    @Test
+    void testGetHardwareCheckinData() {
+        System.out.println("=== 寮�濮嬫祴璇曡幏鍙栬澶囨墦鍗℃暟鎹� ===");
+
+        try {
+            long currentTime = System.currentTimeMillis() / 1000;
+            long oneDaySeconds = 86400;
+
+            // 鑾峰彇鏄ㄥぉ鐨勮澶囨墦鍗℃暟鎹�
+            long yesterdayStart = ((currentTime / oneDaySeconds) - 1) * oneDaySeconds;
+            long yesterdayEnd = yesterdayStart + oneDaySeconds - 1;
+
+            System.out.println("  - 寮�濮嬫椂闂�: " + new java.util.Date(yesterdayStart * 1000));
+            System.out.println("  - 缁撴潫鏃堕棿: " + new java.util.Date(yesterdayEnd * 1000));
+
+            // 鑾峰彇鐢ㄦ埛鎬绘暟
+            long totalUsers = qwStaffMapper.selectCount(new LambdaQueryWrapper<QwStaff>()
+                    .isNotNull(QwStaff::getAccount)
+                    .ne(QwStaff::getAccount, ""));
+            System.out.println("  - QW_STAFF琛ㄧ敤鎴锋�绘暟: " + totalUsers);
+
+            List<WorkWXService.HardwareCheckinData> dataList = workWXService.getHardwareCheckinDataByQwStaff(yesterdayStart, yesterdayEnd);
+
+            if (dataList != null && !dataList.isEmpty()) {
+                System.out.println("鉁� 鎴愬姛鑾峰彇璁惧鎵撳崱鏁版嵁");
+                System.out.println("  - 璁惧鎵撳崱璁板綍鎬绘暟: " + dataList.size());
+                System.out.println("  - 鍓�10鏉℃暟鎹�:");
+                dataList.stream().limit(10).forEach(data -> {
+                    System.out.println("    * userid: " + data.getUserid() +
+                            ", 鎵撳崱鏃堕棿: " + new java.util.Date(data.getCheckinTime() * 1000) +
+                            ", 璁惧SN: " + data.getDeviceSn() +
+                            ", 璁惧鍚嶇О: " + data.getDeviceName());
+                });
+
+                // 淇濆瓨鍒版暟鎹簱
+                System.out.println("  - 寮�濮嬩繚瀛樿澶囨墦鍗℃暟鎹埌鏁版嵁搴�...");
+                int insertCount = qwHardwareCheckinDataService.saveHardwareDataBatch(dataList);
+                System.out.println("鉁� 淇濆瓨瀹屾垚锛屾柊澧炶褰曟暟: " + insertCount + ", 鏇存柊(宸插瓨鍦�): " + (dataList.size() - insertCount));
+            } else {
+                System.out.println("鉁� 鑾峰彇鐨勮澶囨墦鍗℃暟鎹负绌猴紙鍙兘鏃犺澶囨墦鍗¤褰曟垨鎺ュ彛鏈紑閫氾級");
+            }
+        } catch (IOException e) {
+            System.out.println("鉁� 鑾峰彇璁惧鎵撳崱鏁版嵁澶辫触: " + e.getMessage());
+            e.printStackTrace();
+        }
+
+        System.out.println("=== 娴嬭瘯缁撴潫 ===");
+    }
+
+    /**
+     * 娴嬭瘯鍚屾鏄ㄥぉ鐨勮澶囨墦鍗℃暟鎹�
+     */
+    @Test
+    void testSyncYesterdayHardwareData() {
+        System.out.println("=== 寮�濮嬫祴璇曞悓姝ユ槰澶╄澶囨墦鍗℃暟鎹� ===");
+
+        try {
+            int insertCount = qwHardwareCheckinDataService.syncYesterdayHardwareData();
+            System.out.println("鉁� 鍚屾瀹屾垚锛屾柊澧炶褰曟暟: " + insertCount);
+        } catch (IOException e) {
+            System.out.println("鉁� 鍚屾璁惧鎵撳崱鏁版嵁澶辫触: " + e.getMessage());
+            e.printStackTrace();
+        }
+
+        System.out.println("=== 娴嬭瘯缁撴潫 ===");
+    }
+
+    /**
+     * 娴嬭瘯鍚屾鎸囧畾鏃ユ湡鑼冨洿鐨勮澶囨墦鍗℃暟鎹�
+     */
+    @Test
+    void testSyncHardwareDataByDateRange() {
+        System.out.println("=== 寮�濮嬫祴璇曞悓姝ユ寚瀹氭棩鏈熻寖鍥寸殑璁惧鎵撳崱鏁版嵁 ===");
+
+        try {
+            long currentTime = System.currentTimeMillis() / 1000;
+            long oneDaySeconds = 86400;
+
+            // 鍚屾鏈�杩�7澶╃殑鏁版嵁
+            long endTime = ((currentTime / oneDaySeconds) - 1) * oneDaySeconds + oneDaySeconds - 1;  // 鏄ㄥぉ23:59:59
+            long startTime = endTime - 7 * oneDaySeconds + 1;  // 7澶╁墠00:00:00
+
+            System.out.println("  - 寮�濮嬫椂闂�: " + new java.util.Date(startTime * 1000));
+            System.out.println("  - 缁撴潫鏃堕棿: " + new java.util.Date(endTime * 1000));
+
+            int insertCount = qwHardwareCheckinDataService.syncHardwareData(startTime, endTime);
+            System.out.println("鉁� 鍚屾瀹屾垚锛屾柊澧炶褰曟暟: " + insertCount);
+        } catch (IOException e) {
+            System.out.println("鉁� 鍚屾璁惧鎵撳崱鏁版嵁澶辫触: " + e.getMessage());
+            e.printStackTrace();
+        }
+
+        System.out.println("=== 娴嬭瘯缁撴潫 ===");
+    }
+
 }

--
Gitblit v1.9.3