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);
|
}
|
}
|