|
|
@@ -95,13 +95,26 @@ public class SendMsg {
|
|
|
}
|
|
|
@Scheduled(fixedDelay = 20000) // 每20秒执行一次
|
|
|
public void sendMsg2() {
|
|
|
+ long startTime = System.currentTimeMillis();
|
|
|
+ log.info("定时任务开始执行,开始时间:{}", LocalDateTime.now());
|
|
|
+
|
|
|
log.info("执行日志:{}", LocalDateTime.now());
|
|
|
if (StringUtils.isEmpty(groupNo)) {
|
|
|
- log.error("corpId为空不执行");
|
|
|
+ log.error("corpId为空不执行,groupNo:{}", groupNo);
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
+ log.info("开始查询课程配置信息");
|
|
|
SysConfig courseConfig = sysConfigMapper.selectConfigByConfigKey("course.config");
|
|
|
+ if (courseConfig == null) {
|
|
|
+ log.error("未查询到课程配置信息,configKey:course.config");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ log.info("成功查询到课程配置信息,配置值:{}", courseConfig.getConfigValue());
|
|
|
+
|
|
|
CourseConfig config = JSON.parseObject(courseConfig.getConfigValue(), CourseConfig.class);
|
|
|
+ log.info("课程配置解析完成,配置对象:{}", JSON.toJSONString(config));
|
|
|
+
|
|
|
// 消息发送延迟
|
|
|
int delayStart;
|
|
|
int delayEnd;
|
|
|
@@ -109,30 +122,56 @@ public class SendMsg {
|
|
|
log.debug("消息发送延迟为空手动设置1000ms - 2000ms");
|
|
|
delayStart = 1000;
|
|
|
delayEnd = 2000;
|
|
|
+ log.info("使用默认延迟配置,延迟开始:{}ms,延迟结束:{}ms", delayStart, delayEnd);
|
|
|
} else {
|
|
|
delayStart = config.getDelayStart();
|
|
|
delayEnd = config.getDelayEnd();
|
|
|
+ log.info("使用配置文件延迟设置,延迟开始:{}ms,延迟结束:{}ms", delayStart, delayEnd);
|
|
|
}
|
|
|
+
|
|
|
+ log.info("开始获取小程序配置映射");
|
|
|
Map<String, CourseMaConfig> miniMap = getMiniMap();
|
|
|
- getQwUserList().forEach(e -> {
|
|
|
- qwMap.computeIfAbsent(e.getId(), k -> {
|
|
|
- CompletableFuture.runAsync(() -> {
|
|
|
- try {
|
|
|
- log.info("开始任务:{}", e.getQwUserName());
|
|
|
- processUser(e, delayStart, delayEnd, miniMap);
|
|
|
- } catch (Exception exception) {
|
|
|
- log.error("发送错误:", exception);
|
|
|
- } finally {
|
|
|
- log.info("删除任务:{}", e.getQwUserName());
|
|
|
- qwMap.remove(e.getId());
|
|
|
+ log.info("获取小程序配置映射完成,配置数量:{}", miniMap != null ? miniMap.size() : 0);
|
|
|
+
|
|
|
+ log.info("开始获取企微用户列表");
|
|
|
+ List<QwUser> qwUserList = getQwUserList();
|
|
|
+ log.info("获取企微用户列表完成,用户数量:{}", qwUserList != null ? qwUserList.size() : 0);
|
|
|
+
|
|
|
+ if (qwUserList != null) {
|
|
|
+ qwUserList.forEach(e -> {
|
|
|
+ log.info("处理企微用户,用户ID:{},用户名:{}", e.getId(), e.getQwUserName());
|
|
|
+ qwMap.computeIfAbsent(e.getId(), k -> {
|
|
|
+ log.info("为用户创建异步任务,用户ID:{},用户名:{}", e.getId(), e.getQwUserName());
|
|
|
+ CompletableFuture.runAsync(() -> {
|
|
|
+ long userTaskStartTime = System.currentTimeMillis();
|
|
|
+ try {
|
|
|
+ log.info("开始任务:{}", e.getQwUserName());
|
|
|
+ log.info("用户任务开始执行,用户ID:{},开始时间:{}", e.getId(), LocalDateTime.now());
|
|
|
+ processUser(e, delayStart, delayEnd, miniMap);
|
|
|
+ long userTaskEndTime = System.currentTimeMillis();
|
|
|
+ log.info("用户任务执行完成,用户ID:{},结束时间:{},耗时:{}ms",
|
|
|
+ e.getId(), LocalDateTime.now(), (userTaskEndTime - userTaskStartTime));
|
|
|
+ } catch (Exception exception) {
|
|
|
+ long userTaskEndTime = System.currentTimeMillis();
|
|
|
+ log.error("用户任务执行失败,用户ID:{},用户名:{},耗时:{}ms,发送错误:",
|
|
|
+ e.getId(), e.getQwUserName(), (userTaskEndTime - userTaskStartTime), exception);
|
|
|
+ } finally {
|
|
|
+ log.info("删除任务:{}", e.getQwUserName());
|
|
|
+ log.info("从任务映射中移除用户,用户ID:{},用户名:{}", e.getId(), e.getQwUserName());
|
|
|
+ qwMap.remove(e.getId());
|
|
|
// removeQwMap.putIfAbsent(e.getId(), System.currentTimeMillis());
|
|
|
- }
|
|
|
- }, customThreadPool);
|
|
|
- return System.currentTimeMillis(); // 占位值
|
|
|
+ }
|
|
|
+ }, customThreadPool);
|
|
|
+ return System.currentTimeMillis(); // 占位值
|
|
|
+ });
|
|
|
});
|
|
|
- });
|
|
|
+ }
|
|
|
+
|
|
|
+ long endTime = System.currentTimeMillis();
|
|
|
+ log.info("定时任务执行完成,结束时间:{},总耗时:{}ms", LocalDateTime.now(), (endTime - startTime));
|
|
|
}
|
|
|
|
|
|
+
|
|
|
private void processUser(QwUser qwUser, int delayStart, int delayEnd, Map<String, CourseMaConfig> miniMap) {
|
|
|
long start1 = System.currentTimeMillis();
|
|
|
List<QwSopLogs> qwSopLogList = qwSopLogsMapper.selectByQwUserId(qwUser.getId());
|