本功能实现了将任务附件(sys_task_attachment表)自动同步到ImageData表的能力。当任务关联了服务单(serviceOrderId)或调度单(dispatchOrdId)后,系统会自动将任务附件同步到ImageData表,以便在旧系统中查看和使用。
附件分类自动映射到ImageData的图片类型:
- 1-知情同意书 → ImageType 0
- 2-病人资料 → ImageType 1
- 3-操作记录 → ImageType 2
- 4-出车前 → ImageType 3
- 5-出车后 → ImageType 4
- 6-系安全带 → ImageType 5
-- 是否已同步到ImageData (0-未同步 1-已同步)
synced_to_image_data TINYINT(1) DEFAULT 0
-- 同步时间
sync_time DATETIME
-- 关联的ImageData ID
image_data_id BIGINT
执行文件: sql/update_sys_task_attachment_sync_fields.sql
ITaskAttachmentSyncService.java - 附件同步服务接口TaskAttachmentSyncServiceImpl.java - 附件同步服务实现TaskAttachmentSyncController.java - 附件同步控制器update_sys_task_attachment_sync_fields.sql - 数据库更新脚本SysTaskAttachment.java - 添加同步相关字段SysTaskAttachmentMapper.xml - 更新SQL语句SysTaskServiceImpl.java - 集成自动同步逻辑接口: POST /task/attachment/sync/task/{taskId}
权限: task:general:edit
参数:
- taskId: 任务ID(路径参数)
返回示例:json { "code": 200, "msg": "成功同步 3 个附件" }
接口: GET /task/attachment/sync/check/{attachmentId}
权限: task:general:query
参数:
- attachmentId: 附件ID(路径参数)
返回示例:json { "code": 200, "msg": "已同步", "data": true }
@Service
public class TaskAttachmentSyncServiceImpl implements ITaskAttachmentSyncService {
// 同步单个附件
public boolean syncAttachmentToImageData(
SysTaskAttachment attachment,
Long serviceOrderId,
Long dispatchOrdId);
// 批量同步任务附件
public int syncTaskAttachmentsToImageData(
Long taskId,
Long serviceOrderId,
Long dispatchOrdId);
}
在上传附件时自动触发:
// 上传附件成功后
if (result > 0) {
// 尝试自动同步到ImageData
tryAutoSyncAttachment(attachment, taskId);
}
同步到ImageData时自动切换到SQL Server数据源:
@DataSource(DataSourceType.SQLSERVER)
public boolean syncAttachmentToImageData(...) {
// 在SQL Server数据源中执行
imageDataService.insertImageData(imageData);
}
A: 检查任务是否关联了serviceOrderId或dispatchOrdId
A: 不会,同步失败只记录日志,不影响主流程
A: 调用手动同步接口,系统会自动跳过已同步的附件
A: 根据附件分类自动映射到对应的ImageType
可以添加定时任务,定期检查并同步未同步的附件
可以在同步完成后发送通知给相关人员
可以添加详细的同步日志表,记录每次同步的详细信息
可以添加批量同步多个任务附件的功能