package com.ruoyi.web.controller.task; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.system.domain.SysTask; import com.ruoyi.system.domain.SysTaskAttachment; import com.ruoyi.system.service.ISysTaskService; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ITaskAttachmentSyncService; import com.ruoyi.system.task.ITaskAttachmentService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.util.List; /** * 任务附件同步Controller * 用于将任务附件同步到ImageData表 * * @author ruoyi */ @RestController @RequestMapping("/task/attachment/sync") public class TaskAttachmentSyncController extends BaseController { @Autowired private ITaskAttachmentSyncService taskAttachmentSyncService; @Autowired private ITaskAttachmentService taskAttachmentService; @Autowired private ISysTaskService sysTaskService; @Autowired private ISysUserService sysUserService; /** * 手动同步单个任务的附件到ImageData * * @param taskId 任务ID * @return 同步结果 */ @PreAuthorize("@ss.hasPermi('task:general:edit')") @Log(title = "任务附件同步", businessType = BusinessType.OTHER) @PostMapping("/task/{taskId}") public AjaxResult syncTaskAttachments(@PathVariable("taskId") Long taskId) { try { // 查询任务详情 SysTask task = sysTaskService.getTaskDetail(taskId); SysUser user = sysUserService.selectUserById(task.getCreatorId()); Integer oaUserId=user.getOaUserId(); if (task == null) { return error("任务不存在"); } // 获取serviceOrderId和dispatchOrdId Long serviceOrderId = null; Long dispatchOrdId = null; if (task.getEmergencyInfo() != null) { serviceOrderId = task.getEmergencyInfo().getLegacyServiceOrdId(); dispatchOrdId = task.getEmergencyInfo().getLegacyDispatchOrdId(); } if (serviceOrderId == null && dispatchOrdId == null) { return error("任务未关联服务单或调度单,无法同步"); } List attachmentList=sysTaskService.getAttachmentsByTaskId(taskId); // 执行同步 List attachments = taskAttachmentSyncService.syncTaskAttachmentsToImageData( attachmentList, serviceOrderId, dispatchOrdId,oaUserId); for(SysTaskAttachment attachment:attachments){ taskAttachmentService.updateAttachment(attachment); } return success("成功同步 " + attachments.stream().count() + " 个附件"); } catch (Exception e) { logger.error("同步任务附件失败", e); return error("同步失败:" + e.getMessage()); } } /** * 检查附件是否已同步 * * @param attachmentId 附件ID * @return 同步状态 */ @PreAuthorize("@ss.hasPermi('task:general:query')") @GetMapping("/check/{attachmentId}") public AjaxResult checkAttachmentSynced(@PathVariable("attachmentId") Long attachmentId) { try { boolean synced = taskAttachmentService.isAttachmentSynced(attachmentId); return AjaxResult.success(synced ? "已同步" : "未同步", synced); } catch (Exception e) { logger.error("检查附件同步状态失败", e); return error("检查失败:" + e.getMessage()); } } }