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 { /** * 入库提交:按主表数据取条码号并批量生成子表记录。 * *

是否一个条码 = yes:插 1 条,总量 = 入库数量 × 容量; * 否则整数数量部分每单位插 1 条,小数部分按容量比例插入最后 1 条。编号 = 条码编码-序号。 * 不防重:重复调用会生成新条码的新一批记录。 * * @param ruku 已查出的主表记录 * @return 本批条码与编号列表 * @throws DataException 主表数据无效(数量/容量解析失败)或条码取号失败 */ LimsHaocaiRukuSubmitResult submitRuku(LimsHaocaiRukuEntity ruku) throws DataException; /** * 耗材借出:按条码编码标记入库批次为已出库,并写入耗材借出日志。 * *

不写入 lims_haocai_jiechu,在线表单提交会自动保存借出单。 * * @param jiechu 借出表单数据 * @throws DataException 条码为空、批次不存在或已出库时抛出 */ void submitJiechu(LimsHaocaiJiechuEntity jiechu) throws DataException; /** * 耗材归还:按条码编码找到已借出的借出单,标记为已归还; * 同步将入库批次状态恢复为未出库,并写入耗材归还日志。 * * @param guihuan 归还表单数据 * @throws DataException 条码为空、无已借出记录或批次不存在时抛出 */ void submitGuihuan(LimsHaocaiJiechuEntity guihuan) throws DataException; /** * 耗材出库:按表单子表条码扣减入库批次剩余量,标记申领子项已出库并写日志。 * *

不写入 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 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 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; }