11
tjx
12 小时以前 ce7738b672326ccbb36aca1a90c60b184be707f7
src/test/java/com/gs/dingtalk/DeviceReceivingApplicationTests.java
@@ -10,6 +10,7 @@
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;
@@ -37,6 +38,9 @@
    @Autowired
    private QwCheckinDayDataService qwCheckinDayDataService;
    @Autowired
    private QwHardwareCheckinDataService qwHardwareCheckinDataService;
    /**
     * 测试导出生产数据并发送钉钉消息
@@ -422,4 +426,103 @@
        }
    }
    /**
     * 测试获取设备打卡数据
     * 接口限制:时间跨度不超过一个月,用户列表不超过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("=== 测试结束 ===");
    }
}