| | |
| | | package com.gs.xky; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.gs.xky.config.*; |
| | | import com.gs.xky.dto.XkyEntity; |
| | | import com.gs.xky.service.ApiService; |
| | | import com.gs.xky.service.VwCjScSjTsBbService; |
| | | import com.gs.xky.service.WorkWXService; |
| | | import org.junit.jupiter.api.Test; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.test.context.SpringBootTest; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | @SpringBootTest |
| | | class XkyApplicationTests { |
| | | |
| | | |
| | | @Autowired |
| | | private ApiService apiService; |
| | | private VwCjScSjTsBbService vwCjScSjTsBbService; |
| | | |
| | | @Autowired |
| | | private WorkWXService workWXService; |
| | | |
| | | /** |
| | | * 测试导出生产数据并发送钉钉消息 |
| | | * 功能:查询VW_CJ_SC_SJ_TS_BB表数据 -> 导出Excel -> 发送钉钉文件消息 |
| | | */ |
| | | @Test |
| | | void contextLoads() throws IOException { |
| | | void testExportAndSendProductionData() throws Exception { |
| | | System.out.println("=== 开始测试导出生产数据并发送钉钉 ==="); |
| | | |
| | | long currentTimeMillis = System.currentTimeMillis(); |
| | | // try { |
| | | // boolean result = vwCjScSjTsBbService.exportAndSendToDingtalk(); |
| | | // |
| | | // if (result) { |
| | | // System.out.println("✓ 生产数据导出并发送成功"); |
| | | // System.out.println(" - 数据已从 VW_CJ_SC_SJ_TS_BB 表查询"); |
| | | // System.out.println(" - Excel 文件已生成并保存到 D:\\BIFile\\"); |
| | | // System.out.println(" - 钉钉文件消息已发送"); |
| | | // } else { |
| | | // System.out.println("✗ 生产数据导出或发送失败"); |
| | | // } |
| | | // } catch (Exception e) { |
| | | // System.out.println("✗ 导出并发送时发生异常: " + e.getMessage()); |
| | | // e.printStackTrace(); |
| | | // } |
| | | |
| | | ApiCommonParam apiParam = new ApiCommonParam(); |
| | | apiParam.setAppKey(DataAcquisitionConfiguration.TEST_APP_KEY);//发携客云提供的appKey |
| | | apiParam.setVersion("1.0");//接口版本 |
| | | apiParam.setOperateCompanyCode(DataAcquisitionConfiguration.TEST_COMPANY_CODE);//操作者所属公司编码 |
| | | apiParam.setOwnerCompanyCode(DataAcquisitionConfiguration.TEST_COMPANY_CODE);//数据所属公司编码,非集团公司默认赋值为操作公司 |
| | | apiParam.setTimestamps(currentTimeMillis / 1000);//当前时间对应的时间戳(秒数) |
| | | |
| | | String appSecret = DataAcquisitionConfiguration.TEST_APP_SECRET;//携客云提供的appSecret |
| | | |
| | | String sign = SignUtils.buildCurrentSign(JSON.toJSONString(apiParam), appSecret); |
| | | apiParam.setSign(sign); |
| | | |
| | | |
| | | // 计算五分钟前的时间戳 |
| | | long startDate = currentTimeMillis - (65 * 60 * 1000); // 5 分钟 = 5 * 60 * 1000 毫秒 |
| | | |
| | | // 创建 BodyParam 对象并赋值 |
| | | BodyParam bodyParam = new BodyParam(); |
| | | bodyParam.setStartDate(startDate); |
| | | bodyParam.setEndDate(currentTimeMillis); |
| | | bodyParam.setErpCode("Z106"); |
| | | bodyParam.setStatus(new int[]{1}); |
| | | bodyParam.setLogisticsStatus(2); |
| | | |
| | | XkyCommonParam param = new XkyCommonParam(); |
| | | param.setCommonParam(apiParam); |
| | | param.setBody(bodyParam); |
| | | |
| | | |
| | | ApiResponse<XkyEntity> xkyEntityApiResponse = apiService.sendListRequest(param, XkyEntity.class, "https://openapi.xiekeyun.com/delivery/getNoList.json"); |
| | | |
| | | System.out.println(JSON.toJSONString(xkyEntityApiResponse)); |
| | | System.out.println("=== 测试结束 ==="); |
| | | } |
| | | |
| | | } |
| | | /** |
| | | * 测试获取企业微信access_token |
| | | * 功能:调用企业微信API获取access_token |
| | | */ |
| | | @Test |
| | | void testGetWorkWXAccessToken() { |
| | | System.out.println("=== 开始测试获取企业微信access_token ==="); |
| | | |
| | | try { |
| | | String accessToken = workWXService.getAccessToken(); |
| | | |
| | | if (accessToken != null && !accessToken.isEmpty()) { |
| | | System.out.println("✓ 成功获取企业微信access_token"); |
| | | System.out.println(" - access_token: " + accessToken); |
| | | System.out.println(" - token长度: " + accessToken.length()); |
| | | } else { |
| | | System.out.println("✗ 获取的access_token为空"); |
| | | } |
| | | } catch (IOException e) { |
| | | System.out.println("✗ 获取access_token失败: " + e.getMessage()); |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | System.out.println("=== 测试结束 ==="); |
| | | } |
| | | |
| | | /** |
| | | * 测试通过手机号获取userid |
| | | * 功能:调用企业微信API通过手机号查询userid |
| | | */ |
| | | @Test |
| | | void testGetUserIdByMobile() { |
| | | System.out.println("=== 开始测试通过手机号获取userid ==="); |
| | | |
| | | try { |
| | | String mobile = "13335712023"; |
| | | String userid = workWXService.getUserIdByMobile(mobile); |
| | | |
| | | if (userid != null && !userid.isEmpty()) { |
| | | System.out.println("✓ 成功通过手机号获取userid"); |
| | | System.out.println(" - 手机号: " + mobile); |
| | | System.out.println(" - userid: " + userid); |
| | | } else { |
| | | System.out.println("✗ 获取的userid为空"); |
| | | } |
| | | } catch (IOException e) { |
| | | System.out.println("✗ 获取userid失败: " + e.getMessage()); |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | System.out.println("=== 测试结束 ==="); |
| | | } |
| | | |
| | | /** |
| | | * 测试获取企业微信用户列表 |
| | | * 功能:调用企业微信API获取所有用户的userid和部门信息 |
| | | */ |
| | | @Test |
| | | void testGetWorkWXUserList() { |
| | | System.out.println("=== 开始测试获取企业微信用户列表 ==="); |
| | | |
| | | try { |
| | | List<WorkWXService.WorkWXUser> userList = workWXService.getUserList(); |
| | | |
| | | if (userList != null && !userList.isEmpty()) { |
| | | System.out.println("✓ 成功获取企业微信用户列表"); |
| | | System.out.println(" - 用户总数: " + userList.size()); |
| | | System.out.println(" - 前5条数据:"); |
| | | userList.stream().limit(5).forEach(user -> { |
| | | System.out.println(" * userid: " + user.getUserid() + |
| | | ", name: " + user.getName() + |
| | | ", department: " + user.getDepartment()); |
| | | }); |
| | | } else { |
| | | System.out.println("✗ 获取的用户列表为空"); |
| | | } |
| | | } catch (IOException e) { |
| | | System.out.println("✗ 获取用户列表失败: " + e.getMessage()); |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | System.out.println("=== 测试结束 ==="); |
| | | } |
| | | |
| | | /** |
| | | * 测试获取企业微信打卡数据 |
| | | * 功能:获取指定时间范围内的员工打卡记录 |
| | | */ |
| | | @Test |
| | | void testGetCheckinData() { |
| | | System.out.println("=== 开始测试获取企业微信打卡数据 ==="); |
| | | |
| | | try { |
| | | List<WorkWXService.WorkWXUser> userList = workWXService.getUserList(); |
| | | |
| | | if (userList == null || userList.isEmpty()) { |
| | | System.out.println("✗ 未获取到用户列表,无法继续测试"); |
| | | return; |
| | | } |
| | | |
| | | List<String> useridList = new ArrayList<>(); |
| | | userList.forEach(user -> useridList.add(user.getUserid())); |
| | | |
| | | long endTime = System.currentTimeMillis() / 1000; |
| | | long startTime = endTime - 86400; |
| | | |
| | | System.out.println(" - 用户总数: " + useridList.size()); |
| | | System.out.println(" - 开始时间: " + new java.util.Date(startTime * 1000)); |
| | | System.out.println(" - 结束时间: " + new java.util.Date(endTime * 1000)); |
| | | |
| | | List<WorkWXService.CheckinData> checkinDataList = workWXService.getCheckinData(startTime, endTime, useridList); |
| | | |
| | | if (checkinDataList != null && !checkinDataList.isEmpty()) { |
| | | System.out.println("✓ 成功获取打卡数据"); |
| | | System.out.println(" - 打卡记录总数: " + checkinDataList.size()); |
| | | System.out.println(" - 前3条数据:"); |
| | | checkinDataList.stream().limit(3).forEach(data -> { |
| | | System.out.println(" * userid: " + data.getUserid() + |
| | | ", 打卡时间: " + new java.util.Date(data.getCheckinTime() * 1000) + |
| | | ", 打卡类型: " + data.getCheckinType() + |
| | | ", 地点: " + data.getLocationDetail()); |
| | | }); |
| | | } else { |
| | | System.out.println("✗ 获取的打卡数据为空"); |
| | | } |
| | | } catch (IOException e) { |
| | | System.out.println("✗ 获取打卡数据失败: " + e.getMessage()); |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | System.out.println("=== 测试结束 ==="); |
| | | } |
| | | } |