package com.ruoyi.inhospvisit.api;
|
|
import com.ruoyi.common.core.service.dto.PatMedReq;
|
import com.ruoyi.common.core.service.dto.PatMedRes;
|
import com.ruoyi.common.utils.DtoConversionUtils;
|
import com.ruoyi.inhospvisit.domain.PatMedInhosp;
|
import com.ruoyi.inhospvisit.domain.PatMedInhospDTO;
|
import com.ruoyi.inhospvisit.domain.PatMedInhospVO;
|
import com.ruoyi.inhospvisit.mapper.PatMedInhospMapper;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* {@link InhospVisitDataService} 的唯一实现(<b>常驻 Bean</b>)。
|
*
|
* <p>本类是对 {@link PatMedInhospMapper} 的<b>逐方法纯转发</b>,不含任何业务判断:
|
* <ul>
|
* <li><b>不做开关判断</b> —— 见 {@link InhospVisitDataService} 类注释:
|
* 基础数据读写不受 {@code inhospvisit.enabled} 管辖;</li>
|
* <li><b>不补默认值/不改时间戳</b> —— 调用方原本就自行设置,保持语义零变化;</li>
|
* <li><b>不加 {@code @ConditionalOnProperty}</b> —— 该注解只在启动时求值一次,
|
* 与"改完 {@code sys_config} 即时生效"冲突(同 {@code ruoyi-satisfaction} 的教训)。</li>
|
* </ul>
|
*
|
* <p>⚠️ 调用方请注入常驻门面 {@link InhospVisitFacade} 或本接口,
|
* <b>不要</b>直接注入 {@link PatMedInhospMapper} —— 那样会绕过模块边界。
|
*/
|
@Slf4j
|
@Component
|
public class DefaultInhospVisitDataService implements InhospVisitDataService {
|
|
@Autowired
|
private PatMedInhospMapper patMedInhospMapper;
|
|
@Override
|
public PatMedInhosp selectPatMedInhospByInhospid(Long inhospid) {
|
return patMedInhospMapper.selectPatMedInhospByInhospid(inhospid);
|
}
|
|
@Override
|
public List<PatMedInhosp> selectPatMedInhosp(PatMedInhosp patMedInhosp) {
|
return patMedInhospMapper.selectPatMedInhosp(patMedInhosp);
|
}
|
|
@Override
|
public List<PatMedInhosp> selectOutInhospByPatnoAndOutDate(String patno, Date dayStart, Date dayEnd) {
|
return patMedInhospMapper.selectOutInhospByPatnoAndOutDate(patno, dayStart, dayEnd);
|
}
|
|
@Override
|
public String getTagnameBypatid(Long patid) {
|
return patMedInhospMapper.getTagnameBypatid(patid);
|
}
|
|
@Override
|
public List<Map<String, Object>> getTagnameByPatids(List<Long> patids) {
|
return patMedInhospMapper.getTagnameByPatids(patids);
|
}
|
|
@Override
|
public List<PatMedInhosp> selectPatMedInhospList(PatMedInhosp patMedInhosp) {
|
return patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
|
}
|
|
@Override
|
public List<PatMedInhosp> selectPatMedInhospListBySerialnum(PatMedInhosp patMedInhosp) {
|
return patMedInhospMapper.selectPatMedInhospListBySerialnum(patMedInhosp);
|
}
|
|
@Override
|
public List<PatMedInhosp> selectInhospRefreshCandidates(String orgid) {
|
return patMedInhospMapper.selectInhospRefreshCandidates(orgid);
|
}
|
|
@Override
|
public List<PatMedInhosp> selectPatMedInhospListByCondition(PatMedInhospVO patMedInhospVO) {
|
return patMedInhospMapper.selectPatMedInhospListByCondition(patMedInhospVO);
|
}
|
|
@Override
|
public PatMedRes selectPatMedInhospCount(PatMedReq patMedReq) {
|
return patMedInhospMapper.selectPatMedInhospCount(patMedReq);
|
}
|
|
@Override
|
public List<PatMedInhosp> selectNeedProcessList() {
|
return patMedInhospMapper.selectNeedProcessList();
|
}
|
|
/**
|
* 查询患者住院记录(通过入院申请单信息)。
|
*
|
* <p>⚠️ <b>逐行保留原实现的缺陷</b>({@code PatMedInhospServiceImpl#selectPatMedInhospByApplication}
|
* 原 L196-211):第一个判断是 {@code if (!CollectionUtils.isEmpty(rows)) return null;} ——
|
* 条件写反了,查到记录反而返回 {@code null}。
|
* <p>
|
* 后果:<b>原实现里"补 finishFlag"的循环永远执行不到</b>,所以那个循环体依赖的
|
* {@code serviceSubtaskMapper.selectServiceSubtaskList(...)}({@code service_subtask} 表)
|
* 在本模块里<b>不需要</b>存在 —— 这也是本方法能干净搬进模块的原因。
|
* <p>
|
* 迁移差异登记(唯一一处):原实现里那段<b>不可达</b>的循环代码未随迁,
|
* 改为下面的注释说明。<b>可观察行为完全一致</b>(因为它在原实现里也从不执行)。
|
* 这样既避免了"把死代码搬进新模块",又不会让后来者以为这里本来就该没有 finishFlag 逻辑。
|
*/
|
@Override
|
public List<PatMedInhospDTO> selectPatMedInhospByApplication(PatMedInhosp patMedInhosp) {
|
List<PatMedInhosp> patMedInhosps = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
|
if (!org.springframework.util.CollectionUtils.isEmpty(patMedInhosps)) {
|
// ⚠️ 原样保留的反向判断:查到记录时直接返回 null(原实现 L198-200 一模一样)
|
return null;
|
}
|
// 原实现在此处还有一段循环:为每条记录查 service_type="4" 的子任务以补 finishFlag。
|
// 由于上面那个反向判断,它【永远不可达】,故未随迁。
|
// 修缺陷时要连同它一起恢复,见 InhospVisitDataService#selectPatMedInhospByApplication 的说明。
|
return DtoConversionUtils.sourceToTarget(patMedInhosps, PatMedInhospDTO.class);
|
}
|
|
@Override
|
public int insertPatMedInhosp(PatMedInhosp patMedInhosp) {
|
return patMedInhospMapper.insertPatMedInhosp(patMedInhosp);
|
}
|
|
@Override
|
public int insertPatMedInhospBatch(List<PatMedInhosp> list) {
|
return patMedInhospMapper.insertPatMedInhospBatch(list);
|
}
|
|
@Override
|
public int updatePatMedInhosp(PatMedInhosp patMedInhosp) {
|
return patMedInhospMapper.updatePatMedInhosp(patMedInhosp);
|
}
|
|
@Override
|
public int deletePatMedInhospByInhospid(Long inhospid) {
|
return patMedInhospMapper.deletePatMedInhospByInhospid(inhospid);
|
}
|
|
@Override
|
public int deletePatMedInhospByInhospno(String inhospno) {
|
return patMedInhospMapper.deletePatMedInhospByInhospno(inhospno);
|
}
|
|
@Override
|
public int deletePatMedInhospByInhospids(Long[] inhospids) {
|
return patMedInhospMapper.deletePatMedInhospByInhospids(inhospids);
|
}
|
}
|