package jnpf.limsService;
|
|
import jnpf.base.service.SuperService;
|
import jnpf.exception.DataException;
|
import jnpf.limsEntity.LimsHaocaiChukuEntity;
|
import jnpf.limsEntity.LimsHaocaiChukuShenqingZixiangEntity;
|
import jnpf.limsEntity.LimsHaocaiJiechuEntity;
|
import jnpf.limsEntity.LimsHaocaiRukuEntity;
|
import jnpf.limsEntity.LimsHaocaiRukuSubmitResult;
|
import jnpf.limsEntity.LimsHaocaiRukuZixiangEntity;
|
|
import java.util.List;
|
|
/**
|
* 耗材业务服务:出入库等耗材相关逻辑统一放这里(按需要再拆分)。
|
* 主表挂 lims_haocai_ruku,子表 lims_haocai_ruku_zixiang 经 Mapper 直接读写。
|
*/
|
public interface LimsHaocaiService extends SuperService<LimsHaocaiRukuEntity> {
|
|
/**
|
* 入库提交:按主表数据取条码号并批量生成子表记录。
|
*
|
* <p>是否一个条码 = yes:插 1 条,总量 = 入库数量 × 容量;
|
* 否则整数数量部分每单位插 1 条,小数部分按容量比例插入最后 1 条。编号 = 条码编码-序号。
|
* 不防重:重复调用会生成新条码的新一批记录。
|
*
|
* @param ruku 已查出的主表记录
|
* @return 本批条码与编号列表
|
* @throws DataException 主表数据无效(数量/容量解析失败)或条码取号失败
|
*/
|
LimsHaocaiRukuSubmitResult submitRuku(LimsHaocaiRukuEntity ruku) throws DataException;
|
|
/**
|
* 耗材借出:按条码编码标记入库批次为已出库,并写入耗材借出日志。
|
*
|
* <p>不写入 lims_haocai_jiechu,在线表单提交会自动保存借出单。
|
*
|
* @param jiechu 借出表单数据
|
* @throws DataException 条码为空、批次不存在或已出库时抛出
|
*/
|
void submitJiechu(LimsHaocaiJiechuEntity jiechu) throws DataException;
|
|
/**
|
* 耗材归还:按条码编码找到已借出的借出单,标记为已归还;
|
* 同步将入库批次状态恢复为未出库,并写入耗材归还日志。
|
*
|
* @param guihuan 归还表单数据
|
* @throws DataException 条码为空、无已借出记录或批次不存在时抛出
|
*/
|
void submitGuihuan(LimsHaocaiJiechuEntity guihuan) throws DataException;
|
|
/**
|
* 耗材出库:按表单子表条码扣减入库批次剩余量,标记申领子项已出库并写日志。
|
*
|
* <p>不写入 lims_haocai_chuku / lims_haocai_chuku_zixiang,在线表单提交会自动保存出库单。
|
*
|
* @param chuku 出库表单数据
|
* @throws DataException 表单数据为空、条码/数量无效或库存状态不满足时抛出
|
*/
|
void submitChuku(LimsHaocaiChukuEntity chuku) throws DataException;
|
|
/**
|
* 耗材销毁:按销毁单号读取申请与子表条码,销毁对应入库批次并写日志。
|
*
|
* @param xiaohuiDanhao 销毁单号
|
* @throws DataException 单号为空、申请不存在、子表为空或条码无效时抛出
|
*/
|
void submitXiaohui(String xiaohuiDanhao) throws DataException;
|
|
/**
|
* 批量转待销毁:按入库主表主键批量查关联子项,仅将剩余量大于 0 的子项改为待销毁。
|
*
|
* @param rukuIds 入库主表主键列表(lims_haocai_ruku.f_id)
|
* @return 实际更新的子项记录数
|
* @throws DataException 主键列表为空时抛出
|
*/
|
int batchMarkRukuZixiangDaixiaohui(List<String> rukuIds) throws DataException;
|
|
/**
|
* 耗材销毁申请发起:按流程参数读取销毁申请主表与子表条码,
|
* 将对应入库子项标记为待销毁并写入销毁单号。
|
*
|
* @param flowId 流程 id(lims_haocai_xiaohui_shenqing.f_flow_id)
|
* @param taskId 流程任务 id(lims_haocai_xiaohui_shenqing.f_flow_task_id)
|
* @return 实际更新的入库子项记录数
|
* @throws DataException 流程参数为空、申请不存在、子表为空或条码无效时抛出
|
*/
|
int startXiaohuiShenqing(String flowId, String taskId) throws DataException;
|
|
/**
|
* 按条码编码查询入库子项记录。
|
*
|
* @param tiaomaBianma 条码编码
|
* @return 未删除的匹配子项;条码编码应唯一
|
*/
|
List<LimsHaocaiRukuZixiangEntity> listRukuZixiangByTiaomaBianma(String tiaomaBianma);
|
|
/**
|
* 根据申领单号和条码编码查询可出库的申领子项。
|
*
|
* @param shenlingDanhao 申领单号
|
* @param tiaomaBianma 条码编码
|
* @return 已校验可出库且属于该申领单的申领子项
|
* @throws DataException 条码不存在、状态/剩余量不满足、申领单不存在或未通过时抛出
|
*/
|
LimsHaocaiChukuShenqingZixiangEntity getChukuShenqingZixiangForChuku(String shenlingDanhao,
|
String tiaomaBianma) throws DataException;
|
|
/**
|
* 耗材入库验收提交:按流程定位验收记录,并将其主键回写至关联验收申请。
|
*
|
* @param flowId 验收记录流程 id(lims_haocai_ruku_yanshou.f_flow_id)
|
* @param taskId 验收记录流程任务 id(lims_haocai_ruku_yanshou.f_flow_task_id)
|
* @throws DataException 流程参数为空、验收记录或关联申请不存在时抛出
|
*/
|
void submitRukuYanshou(String flowId, String taskId) throws DataException;
|
|
/**
|
* 耗材入库验收完成:根据验收记录流程状态更新或重置关联验收申请。
|
*
|
* @param flowId 验收记录流程 id(lims_haocai_ruku_yanshou.f_flow_id)
|
* @param taskId 验收记录流程任务 id(lims_haocai_ruku_yanshou.f_flow_task_id)
|
* @throws DataException 流程参数为空、验收记录或关联申请不存在时抛出
|
*/
|
void finishRukuYanshou(String flowId, String taskId) throws DataException;
|
|
/**
|
* 领取待验收的耗材验收申请,并将其置为验收中。
|
*
|
* @param shenqingId 耗材验收申请主键(lims_haocai_yanshou_shenqing.f_id)
|
* @throws DataException 申请不存在、已删除或当前不是待验收状态时抛出
|
*/
|
void lingquYanshouShenqing(String shenqingId) throws DataException;
|
}
|