| | |
| | | |
| | | import com.ruoyi.common.core.domain.entity.SysDept; |
| | | import com.ruoyi.common.utils.DeptUtil; |
| | | import com.ruoyi.common.utils.LongUtil; |
| | | import com.ruoyi.system.domain.*; |
| | | import com.ruoyi.system.event.TaskDispatchSyncEvent; |
| | | import com.ruoyi.system.service.ISysDeptService; |
| | | import com.ruoyi.system.service.ISysTaskAssigneeService; |
| | | import com.ruoyi.system.event.*; |
| | | import com.ruoyi.system.service.*; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | import org.springframework.stereotype.Component; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.system.event.TaskCreatedEvent; |
| | | import com.ruoyi.system.event.TaskAssignedEvent; |
| | | import com.ruoyi.system.event.TaskStatusChangedEvent; |
| | | import com.ruoyi.system.mapper.SysMessageMapper; |
| | | import com.ruoyi.system.mapper.SysUserMapper; |
| | | import com.ruoyi.system.mapper.SysTaskMapper; |
| | | import com.ruoyi.system.mapper.SysTaskEmergencyMapper; |
| | | import com.ruoyi.common.core.domain.entity.SysUser; |
| | | import com.ruoyi.system.service.INotifyTaskService; |
| | | import com.ruoyi.system.service.INotifyDispatchService; |
| | | |
| | | import java.text.DateFormat; |
| | | import java.text.SimpleDateFormat; |
| | |
| | | @Autowired |
| | | private ISysTaskAssigneeService taskAssigneeService; |
| | | |
| | | @Autowired |
| | | private ITaskStatusPushService taskStatusPushService; |
| | | |
| | | @Async |
| | | @EventListener |
| | | public void handleTaskDispatchEvent(TaskDispatchSyncEvent event) { |
| | |
| | | sendDispatchNotify(assigneeIds, task.getCreatorId(), event.getTaskId(),task.getShowTaskCode(), buildNotifyContent(task, emergency)); |
| | | } |
| | | } |
| | | syncDispatchActualStartTime(emergency, task); |
| | | Long taskId= event.getTaskId(); |
| | | Long dispatchOrdId= event.getDispatchOrderId(); |
| | | Long serviceOrdId= event.getServiceOrderId(); |
| | | Integer oaUserID= event.getOaUserId(); |
| | | legacySystemSyncService.syncTaskAttachment(taskId, dispatchOrdId, serviceOrdId, oaUserID); |
| | | |
| | | }catch (Exception ex){ |
| | | log.error("处理任务派发同步事件失败", ex); |
| | | } |
| | | } |
| | | |
| | | private void syncDispatchActualStartTime(SysTaskEmergency emergency, SysTask task) { |
| | | try { |
| | | //这里也同步一下实际时间 |
| | | Long disatpchOrdId = emergency.getLegacyDispatchOrdId(); |
| | | Date actualTime = task.getActualStartTime(); |
| | | legacySystemSyncService.updateDispatchActualTime(disatpchOrdId, actualTime); |
| | | }catch (Exception ex){ |
| | | log.error("同步实际时间失败", ex); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 监听任务创建事件 |
| | | * |
| | |
| | | } |
| | | |
| | | return content.toString(); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @Autowired |
| | | private ILegacySystemSyncService legacySystemSyncService; |
| | | |
| | | @Async |
| | | @EventListener |
| | | public void handleTaskUpdateEvent(TaskUpdateEvent event){ |
| | | log.info("收到任务更新事件,任务ID:{},任务编号:{}", event.getTaskId(), event.getTaskCode()); |
| | | legacySystemSyncService.resyncDispatchOrderToLegacy(event.getTaskId()); |
| | | |
| | | } |
| | | //在这里监听派发的事件 |
| | | @Async |
| | | @EventListener |
| | | public void handleTaskServiceOrderSyncEvent(TaskServiceOrderSyncEvent event) { |
| | | // log.info("收到任务服务单同步事件,任务ID:{},任务编号:{},服务单ID:{}", event.getTaskId(), event.getTaskCode(), event.getServiceOrderId()); |
| | | Long dispatchOrderId= legacySystemSyncService.syncDispatchOrderToLegacy(event.getTaskId()); |
| | | // if(LongUtil.isNotEmpty(dispatchOrderId)){ |
| | | // //更新needsync为0 |
| | | // |
| | | // } |
| | | } |
| | | |
| | | |
| | |
| | | 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{ |
| | | log.info("任务状态同步到旧系统开始 taskId:{}",taskId); |
| | | taskStatusPushService.pushTaskStatusToLegacy(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); |
| | | } |