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})基础读写 —— 本模块唯一的写入口。 * *

迁移对应(@ b25c3b51)

* * * * * * * * *
本类方法原实现
{@link #selectById(Long)}{@code PatMedOperationItemServiceImpl} L32-34
{@link #selectList(PatMedOperationItem)}同文件 L44-46
{@link #insert(PatMedOperationItem)}同文件 L57-59(含 {@code setCreateTime})
{@link #update(PatMedOperationItem)}同文件 L70-72(含 {@code setUpdateTime})
{@link #deleteByIds(Long[])} / {@link #deleteById(Long)}同文件 L82-84 / L94-96
其余 7 个方法原来就没有 Service:调用方各自注入 Mapper 直调 * ({@code CollectHISServiceImpl} / {@code ServiceExternalServiceImpl} / * {@code PatMedInhospServiceImpl} / {@code ServiceSubtaskServiceImpl}), * 本次一并收进本类
* *

⚠️ 与 {@code pat_med_inhosp} 的联查(跨模块读,已登记白名单)

* {@link #selectOperationItemListMaxLevel(PatMedOperationItem)} 与 * {@link #selectOperationItemList(PatMedOperationItem)} 的 XML 里 {@code JOIN pat_med_inhosp} * 取 {@code endtime} / {@code inhospstate} / {@code serialnum}。 * 这两条 SQL 是手术域自己的查询(出入院表在这里只作为维度来源), * 故随实体一起搬进本模块,而不是改成跨模块 API 调用 —— * 见 {@code doc/跨模块数据访问原则与收口方案.md} 的联查白名单。 * *

命名说明

* 本类刻意不叫 {@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 selectList(PatMedOperationItem patMedOperationItem) { return patMedOperationItemMapper.selectPatMedOperationItemList(patMedOperationItem); } /** * 按条件查手术明细(原调用方:{@code CollectHISServiceImpl}、{@code ServiceExternalServiceImpl})。 *

* ⚠️ 与 {@link #selectList(PatMedOperationItem)} 不是同一条 SQL * ({@code selectOperationItemList} vs {@code selectPatMedOperationItemList}), * 且前者 {@code JOIN pat_med_inhosp}。别互相替代。 */ public List selectOperationItemList(PatMedOperationItem patMedOperationItem) { return patMedOperationItemMapper.selectOperationItemList(patMedOperationItem); } /** * 按条件查手术明细,同一 {@code opid} 下只取 {@code oplevelcode} 最大的一条。 *

* 原调用方:{@code PatMedInhospServiceImpl}(出入院随访的手术分支,L457 / L1259)。 * 同时 {@code JOIN pat_med_inhosp} —— 见类注释的跨模块读白名单说明。 */ public List 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 patMedOperationItems) { return patMedOperationItemMapper.insertPatMedOperationItems(patMedOperationItems); } public int update(PatMedOperationItem patMedOperationItem) { patMedOperationItem.setUpdateTime(DateUtils.getNowDate()); return patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem); } /** * 按 {@code operationid} 更新。 *

* ⚠️ 原 Service 里没有这个方法,调用方({@code CollectHISServiceImpl} L511) * 是直调 Mapper 的。注意它不会自动设 {@code updateTime} * (原调用方自己负责),此处也不代设 —— 免得改变落库内容。 */ 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} 物理删除。 *

* ⚠️ 名字里带 Hard,确实是物理删除(对比 {@link #deleteSoftByOpId(String)})。 * 调用方:{@code ServiceExternalServiceImpl} L1534。 * * @param opid 主手术ID(原调用方传的是 {@code String.valueOf(id)}) */ public int deleteHardByOpId(String opid) { return patMedOperationItemMapper.deleteHardPatMedOperationItemByOpId(opid); } /** * 按 {@code opid} 软删除。 *

调用方:{@code CollectHISServiceImpl} L444、{@code ServiceExternalServiceImpl} L1645。 */ public int deleteSoftByOpId(String opid) { return patMedOperationItemMapper.deleteSoftPatMedOperationItemByOpId(opid); } /** * 按 {@code operationid} 删除。 *

调用方:{@code CollectHISServiceImpl} L502。 */ public int deleteByOperationid(Long operationid) { return patMedOperationItemMapper.deletePatMedOperationItemByOperationid(operationid); } }