| | |
| | | import com.ruoyi.common.enums.DataSourceType; |
| | | import com.ruoyi.system.domain.ImageData; |
| | | import com.ruoyi.system.domain.SysTaskAttachment; |
| | | import com.ruoyi.system.domain.SysTaskEmergency; |
| | | import com.ruoyi.system.file.FileUploadResponse; |
| | | import com.ruoyi.system.file.IFileUploadService; |
| | | import com.ruoyi.system.imagedata.IImageDataService; |
| | |
| | | * @author ruoyi |
| | | */ |
| | | @Service |
| | | @DataSource(DataSourceType.SQLSERVER) |
| | | public class TaskAttachmentSyncServiceImpl implements ITaskAttachmentSyncService { |
| | | |
| | | private static final Logger log = LoggerFactory.getLogger(TaskAttachmentSyncServiceImpl.class); |
| | | |
| | | |
| | | @Autowired |
| | | private SysTaskAttachmentMapper taskAttachmentMapper; |
| | | |
| | | @Autowired |
| | | private IImageDataService imageDataService; |
| | | |
| | |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 批量同步待同步的任务附件到ImageData |
| | | */ |
| | | @Override |
| | | public int batchSyncPendingAttachments() { |
| | | log.info("开始执行批量附件同步任务"); |
| | | |
| | | try { |
| | | // 查询待同步的附件列表 |
| | | List<SysTaskAttachment> pendingAttachments = taskAttachmentMapper.selectPendingSyncAttachments(); |
| | | |
| | | if (pendingAttachments == null || pendingAttachments.isEmpty()) { |
| | | log.info("没有待同步的附件"); |
| | | return 0; |
| | | } |
| | | |
| | | log.info("查询到 {} 个待同步的附件", pendingAttachments.size()); |
| | | |
| | | // 按任务ID分组同步 |
| | | int successCount = 0; |
| | | Long currentTaskId = null; |
| | | Long serviceOrderId = null; |
| | | Long dispatchOrdId = null; |
| | | Integer oaUserId = null; |
| | | |
| | | for (SysTaskAttachment attachment : pendingAttachments) { |
| | | try { |
| | | // 如果是新任务,需要获取任务信息 |
| | | if (!attachment.getTaskId().equals(currentTaskId)) { |
| | | currentTaskId = attachment.getTaskId(); |
| | | // 通过联表查询已经包含了任务信息,这里需要单独查询 |
| | | SysTaskEmergency emergencyInfo = getEmergencyInfoByTaskId(currentTaskId); |
| | | if (emergencyInfo != null) { |
| | | serviceOrderId = emergencyInfo.getLegacyServiceOrdId(); |
| | | dispatchOrdId = emergencyInfo.getLegacyDispatchOrdId(); |
| | | // 获取任务创建人的OA用户ID |
| | | oaUserId = getCreatorOaUserId(currentTaskId); |
| | | } else { |
| | | log.warn("任务ID={} 的急救转运信息为空,跳过", currentTaskId); |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | // 同步单个附件 |
| | | Long imageDataId = syncAttachmentToImageData(attachment, serviceOrderId, dispatchOrdId, oaUserId); |
| | | |
| | | if (imageDataId != null && imageDataId > 0) { |
| | | // 更新附件同步状态 |
| | | attachment.setSyncedToImageData(1); |
| | | attachment.setSyncTime(new Date()); |
| | | attachment.setImageDataId(imageDataId); |
| | | taskAttachmentMapper.updateSysTaskAttachment(attachment); |
| | | |
| | | successCount++; |
| | | log.info("附件ID={} 同步成功,ImageDataId={}", |
| | | attachment.getAttachmentId(), imageDataId); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("同步附件ID={} 失败", attachment.getAttachmentId(), e); |
| | | // 继续处理下一个附件 |
| | | } |
| | | } |
| | | |
| | | log.info("附件同步完成,成功同步 {}/{} 个附件", successCount, pendingAttachments.size()); |
| | | return successCount; |
| | | |
| | | } catch (Exception e) { |
| | | log.error("批量附件同步异常", e); |
| | | return 0; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 根据任务ID获取急救转运信息 |
| | | */ |
| | | @Autowired |
| | | private com.ruoyi.system.mapper.SysTaskEmergencyMapper taskEmergencyMapper; |
| | | |
| | | private SysTaskEmergency getEmergencyInfoByTaskId(Long taskId) { |
| | | return taskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId); |
| | | } |
| | | |
| | | /** |
| | | * 获取任务创建人的OA用户ID |
| | | */ |
| | | @Autowired |
| | | private com.ruoyi.system.mapper.SysTaskMapper taskMapper; |
| | | |
| | | @Autowired |
| | | private com.ruoyi.system.mapper.SysUserMapper userMapper; |
| | | |
| | | private Integer getCreatorOaUserId(Long taskId) { |
| | | com.ruoyi.system.domain.SysTask task = taskMapper.selectSysTaskByTaskId(taskId); |
| | | if (task != null && task.getCreatorId() != null) { |
| | | com.ruoyi.common.core.domain.entity.SysUser user = userMapper.selectUserById(task.getCreatorId()); |
| | | if (user != null) { |
| | | return user.getOaUserId(); |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |