liusheng
8 天以前 34f78281cf395a24e1f3f1c3b861186ff8a03b7b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
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> 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);
    }
}