package com.ruoyi.patarchive.api;
import com.ruoyi.common.core.domain.entity.PatArchive;
import com.ruoyi.common.utils.DtoConversionUtils;
import com.ruoyi.patarchive.domain.PatArchiveImport;
import com.ruoyi.patarchive.mapper.PatArchiveImportMapper;
import com.ruoyi.patarchive.mapper.PatArchiveMapper;
import com.ruoyi.task.api.spi.TaskArchivePort;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.List;
/**
* {@link TaskArchivePort} 的归属模块实现 —— 患者档案读取。
*
*
2026-11 归属调整
* {@code pat_archive} 家族整体迁入本模块后,这个端口的实现从 smartor 的
* {@code TaskArchivePortBridge} 搬到这里:数据在哪、实现在哪,符合端口倒置的本意。
*
* - 接口仍声明在 {@code ruoyi-task}(消费方声明,它不依赖本模块);
* - 本模块依赖 {@code ruoyi-task} 提供实现,运行期由 Spring 注入,不成环;
* - smartor 侧的过渡桥已删除。
*
*
* ⚠️ 保持"纯转发"
* 只转发到本模块既有的 Mapper;{@link #findImportedByPatid} 里的
* {@code sourceToTarget} 是原实现本来就有的转换(原
* {@code ServiceTaskServiceImpl} L443 / L535),不是新逻辑。
*/
@Slf4j
@Component
public class TaskArchivePortImpl implements TaskArchivePort {
@Autowired
private PatArchiveMapper patArchiveMapper;
@Autowired
private PatArchiveImportMapper patArchiveImportMapper;
@Override
public PatArchive findByPatid(Long patid) {
// 原 ServiceSubtaskServiceImpl 走 patArchiveService.selectPatArchiveByPatid,
// 而该 Service 方法体就是这一行纯委托(PatArchiveServiceImpl)。
return patArchiveMapper.selectPatArchiveByPatid(patid);
}
@Override
public List findList(PatArchive query) {
List list = patArchiveMapper.selectPatArchiveList(query);
return list == null ? Collections.emptyList() : list;
}
@Override
public PatArchive findImportedByPatid(Long patid) {
PatArchiveImport patArchiveImport = patArchiveImportMapper.selectPatArchiveImportById(patid);
if (patArchiveImport == null) {
return null;
}
// 原实现(ServiceTaskServiceImpl L443-444 / L535-536)就是这两步。
return DtoConversionUtils.sourceToTarget(patArchiveImport, PatArchive.class);
}
}