| | |
| | | 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; |
| | |
| | | |
| | | @Autowired |
| | | private QwCheckinDataService qwCheckinDataService; |
| | | |
| | | @Autowired |
| | | private QwCheckinDayDataService qwCheckinDayDataService; |
| | | |
| | | @Autowired |
| | | private QwHardwareCheckinDataService qwHardwareCheckinDataService; |
| | | |
| | | /** |
| | | * 测试导出生产数据并发送钉钉消息 |
| | |
| | | // 打印异常信息 |
| | | 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("✗ 获取的打卡日报数据为空"); |
| | | } |
| | |
| | | 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())); |
| | | }); |
| | | } |
| | |
| | | return sb.toString(); |
| | | } |
| | | |
| | | /** |
| | | * 获取异常类型名称 |
| | | * @param exceptionType 异常类型代码: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("=== 测试结束 ==="); |
| | | } |
| | | |
| | | } |