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<SysTaskAttachment> attachmentList=sysTaskService.getAttachmentsByTaskId(taskId);
|
// 执行同步
|
List<SysTaskAttachment> 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());
|
}
|
}
|
}
|