| | |
| | | return content.toString(); |
| | | } |
| | | |
| | | @Autowired |
| | | private ITaskStatusSyncService taskStatusSyncService; |
| | | /** |
| | | * 监听任务状态变更事件 |
| | | * |
| | |
| | | @Async |
| | | @EventListener |
| | | public void handleTaskStatusChangedEvent(TaskStatusChangedEvent event) { |
| | | |
| | | sendTaskStatusToLocal(event); |
| | | sendTaskStatusToLegacy(event.getTaskId()); |
| | | |
| | | } |
| | | |
| | | private void sendTaskStatusToLegacy(Long taskId) { |
| | | try{ |
| | | taskStatusSyncService.syncTaskStatusFromLegacy(taskId); |
| | | }catch (Exception e){ |
| | | log.error("任务状态同步到旧系统异常 taskId:{}",taskId, e); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | private void sendTaskStatusToLocal(TaskStatusChangedEvent event) { |
| | | try { |
| | | log.info("收到任务状态变更事件,任务ID:{},旧状态:{},新状态:{}", |
| | | log.info("收到任务状态变更事件,任务ID:{},旧状态:{},新状态:{}", |
| | | event.getTaskId(), event.getOldStatus(), event.getNewStatus()); |
| | | |
| | | //发起状态同步 |
| | | // 构建状态变更内容 |
| | | String statusContent = getStatusChangeContent(event.getNewStatus(), event.getNewStatusDesc()); |
| | | |
| | | |
| | | // 收集所有需要通知的用户ID(执行人+创建人,去重) |
| | | java.util.Set<Long> receiverIds = new java.util.HashSet<>(); |
| | | |
| | | |
| | | // 添加执行人 |
| | | if (event.getAssigneeIds() != null) { |
| | | receiverIds.addAll(event.getAssigneeIds()); |
| | | } |
| | | |
| | | |
| | | // 添加创建人(如果不是执行人) |
| | | if (event.getCreatorId() != null) { |
| | | receiverIds.add(event.getCreatorId()); |
| | | } |
| | | |
| | | |
| | | // 给每个用户发送消息 |
| | | for (Long receiverId : receiverIds) { |
| | | SysUser user = sysUserMapper.selectUserById(receiverId); |
| | |
| | | log.warn("找不到用户信息,用户ID:{}", receiverId); |
| | | continue; |
| | | } |
| | | |
| | | |
| | | // 创建消息 |
| | | SysMessage message = new SysMessage(); |
| | | message.setMessageType("STATUS"); |
| | |
| | | message.setIsRead("0"); |
| | | message.setCreateTime(DateUtils.getNowDate()); |
| | | message.setDelFlag("0"); |
| | | |
| | | |
| | | // 保存消息 |
| | | sysMessageMapper.insertSysMessage(message); |
| | | log.info("任务状态变更消息已保存,消息ID:{},新状态:{},接收人:{}", |
| | | log.info("任务状态变更消息已保存,消息ID:{},新状态:{},接收人:{}", |
| | | message.getMessageId(), event.getNewStatus(), user.getNickName()); |
| | | } |
| | | |
| | | |
| | | } catch (Exception e) { |
| | | log.error("处理任务状态变更事件失败", e); |
| | | } |