liusheng
8 天以前 f0a09ee996ab2605869844d6a3d812709e2bf0fa
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
148
149
150
package com.ruoyi.othervisit.service;
 
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.othervisit.domain.PatMedOperationItem;
import com.ruoyi.othervisit.mapper.PatMedOperationItemMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.util.List;
 
/**
 * 患者手术明细({@code pat_med_operation_item})基础读写 —— 本模块<b>唯一</b>的写入口。
 *
 * <h3>迁移对应(@ b25c3b51)</h3>
 * <table border="1">
 *   <tr><th>本类方法</th><th>原实现</th></tr>
 *   <tr><td>{@link #selectById(Long)}</td><td>{@code PatMedOperationItemServiceImpl} L32-34</td></tr>
 *   <tr><td>{@link #selectList(PatMedOperationItem)}</td><td>同文件 L44-46</td></tr>
 *   <tr><td>{@link #insert(PatMedOperationItem)}</td><td>同文件 L57-59(含 {@code setCreateTime})</td></tr>
 *   <tr><td>{@link #update(PatMedOperationItem)}</td><td>同文件 L70-72(含 {@code setUpdateTime})</td></tr>
 *   <tr><td>{@link #deleteByIds(Long[])} / {@link #deleteById(Long)}</td><td>同文件 L82-84 / L94-96</td></tr>
 *   <tr><td>其余 7 个方法</td><td><b>原来就没有 Service</b>:调用方各自注入 Mapper 直调
 *       ({@code CollectHISServiceImpl} / {@code ServiceExternalServiceImpl} /
 *       {@code PatMedInhospServiceImpl} / {@code ServiceSubtaskServiceImpl}),
 *       本次一并收进本类</td></tr>
 * </table>
 *
 * <h3>⚠️ 与 {@code pat_med_inhosp} 的联查(跨模块读,已登记白名单)</h3>
 * {@link #selectOperationItemListMaxLevel(PatMedOperationItem)} 与
 * {@link #selectOperationItemList(PatMedOperationItem)} 的 XML 里 {@code JOIN pat_med_inhosp}
 * 取 {@code endtime} / {@code inhospstate} / {@code serialnum}。
 * 这两条 SQL 是<b>手术域自己的查询</b>(出入院表在这里只作为维度来源),
 * 故随实体一起搬进本模块,而不是改成跨模块 API 调用 ——
 * 见 {@code doc/跨模块数据访问原则与收口方案.md} 的联查白名单。
 *
 * <h3>命名说明</h3>
 * 本类刻意<b>不</b>叫 {@code PatMedOperationItemService},与 Controller
 * {@code OperationItemController} 对齐,避免与 smartor 侧已删除的
 * {@code IPatMedOperationItemService} 混淆。
 */
@Slf4j
@Service
public class OperationItemService {
 
    @Autowired
    private PatMedOperationItemMapper patMedOperationItemMapper;
 
    // ==========================================================================
    // 查
    // ==========================================================================
 
    public PatMedOperationItem selectById(Long id) {
        return patMedOperationItemMapper.selectPatMedOperationItemById(id);
    }
 
    public List<PatMedOperationItem> selectList(PatMedOperationItem patMedOperationItem) {
        return patMedOperationItemMapper.selectPatMedOperationItemList(patMedOperationItem);
    }
 
    /**
     * 按条件查手术明细(原调用方:{@code CollectHISServiceImpl}、{@code ServiceExternalServiceImpl})。
     * <p>
     * ⚠️ 与 {@link #selectList(PatMedOperationItem)} <b>不是同一条 SQL</b>
     * ({@code selectOperationItemList} vs {@code selectPatMedOperationItemList}),
     * 且前者 {@code JOIN pat_med_inhosp}。别互相替代。
     */
    public List<PatMedOperationItem> selectOperationItemList(PatMedOperationItem patMedOperationItem) {
        return patMedOperationItemMapper.selectOperationItemList(patMedOperationItem);
    }
 
    /**
     * 按条件查手术明细,同一 {@code opid} 下只取 {@code oplevelcode} 最大的一条。
     * <p>
     * 原调用方:{@code PatMedInhospServiceImpl}(出入院随访的手术分支,L457 / L1259)。
     * 同时 {@code JOIN pat_med_inhosp} —— 见类注释的跨模块读白名单说明。
     */
    public List<PatMedOperationItem> selectOperationItemListMaxLevel(PatMedOperationItem patMedOperationItem) {
        return patMedOperationItemMapper.selectOperationItemListMaxLevel(patMedOperationItem);
    }
 
    // ==========================================================================
    // 写
    // ==========================================================================
 
    public int insert(PatMedOperationItem patMedOperationItem) {
        patMedOperationItem.setCreateTime(DateUtils.getNowDate());
        return patMedOperationItemMapper.insertPatMedOperationItem(patMedOperationItem);
    }
 
    /**
     * 批量新增(原 Mapper 已有 {@code insertPatMedOperationItems},
     * 但原 Service 未暴露、调用方那处是被注释掉的)。此处照实暴露,不改 SQL。
     */
    public int insertBatch(List<PatMedOperationItem> patMedOperationItems) {
        return patMedOperationItemMapper.insertPatMedOperationItems(patMedOperationItems);
    }
 
    public int update(PatMedOperationItem patMedOperationItem) {
        patMedOperationItem.setUpdateTime(DateUtils.getNowDate());
        return patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem);
    }
 
    /**
     * 按 {@code operationid} 更新。
     * <p>
     * ⚠️ 原 Service 里<b>没有</b>这个方法,调用方({@code CollectHISServiceImpl} L511)
     * 是直调 Mapper 的。注意它<b>不会</b>自动设 {@code updateTime}
     * (原调用方自己负责),此处也<b>不</b>代设 —— 免得改变落库内容。
     */
    public int updateByOperationid(PatMedOperationItem patMedOperationItem) {
        return patMedOperationItemMapper.updatePatMedOperationItemByOperationid(patMedOperationItem);
    }
 
    public int deleteByIds(Long[] ids) {
        return patMedOperationItemMapper.deletePatMedOperationItemByIds(ids);
    }
 
    public int deleteById(Long id) {
        return patMedOperationItemMapper.deletePatMedOperationItemById(id);
    }
 
    /**
     * 按 {@code opid} 物理删除。
     * <p>
     * ⚠️ <b>名字里带 Hard,确实是物理删除</b>(对比 {@link #deleteSoftByOpId(String)})。
     * 调用方:{@code ServiceExternalServiceImpl} L1534。
     *
     * @param opid 主手术ID(原调用方传的是 {@code String.valueOf(id)})
     */
    public int deleteHardByOpId(String opid) {
        return patMedOperationItemMapper.deleteHardPatMedOperationItemByOpId(opid);
    }
 
    /**
     * 按 {@code opid} 软删除。
     * <p>调用方:{@code CollectHISServiceImpl} L444、{@code ServiceExternalServiceImpl} L1645。
     */
    public int deleteSoftByOpId(String opid) {
        return patMedOperationItemMapper.deleteSoftPatMedOperationItemByOpId(opid);
    }
 
    /**
     * 按 {@code operationid} 删除。
     * <p>调用方:{@code CollectHISServiceImpl} L502。
     */
    public int deleteByOperationid(Long operationid) {
        return patMedOperationItemMapper.deletePatMedOperationItemByOperationid(operationid);
    }
}