package jnpf.limsService;
|
|
import jnpf.limsEntity.LimsFenjianItem;
|
import jnpf.limsEntity.LimsJianceTaskAcceptParam;
|
import jnpf.limsEntity.LimsJianyanAssignParam;
|
import jnpf.limsEntity.LimsJianyanAuditFailParam;
|
import jnpf.limsEntity.LimsJianyanAuditOutcome;
|
import jnpf.limsEntity.LimsJianyanAuditParam;
|
import jnpf.limsEntity.LimsJianyanResultParam;
|
import jnpf.limsEntity.LimsSignUsageTarget;
|
import jnpf.limsEntity.LimsSubmitResultOutcome;
|
|
import java.util.List;
|
|
/**
|
* LIMS 检测任务服务:分检 → 分配检验员 → 录入结果 → 审核 / 退回。
|
*/
|
public interface LimsJianceTaskService {
|
|
/**
|
* 样品分检:把请验单 submit 时创建的检验项(jianyan_zhuangtai=created +
|
* fenjian_zhuangtai=wei_fenjian)推进到 pending_assign,并标记 fenjian_zhuangtai=fenjian,
|
* 同时回写操作员录入的 4 个分检字段(分检量 / 分检单位 / 分装容器 / 分检后保存条件)。
|
*
|
* <p>按 lims_jianyan_xiang.f_id 逐条 UPDATE,带状态 / 软删过滤:仅 created 行被推进,
|
* 其余状态自动跳过;4 个分检字段行级必填(缺失抛 DataException)。
|
*
|
* @param param 分检入参(共享 bizSign + data 列表,见 {@link LimsFenjianItem})
|
* @return 实际被推进的业务目标(非 created / 已软删 / 不存在 的行不计入)
|
*/
|
List<LimsSignUsageTarget> fenjianSamples(LimsJianceTaskAcceptParam param);
|
|
/**
|
* 分配(含改派)检验任务:每行可指定不同的检验员 / 要求完成日期,
|
* bizSign 共享(一次操作只签一次名)。按 id 逐条 UPDATE。
|
*
|
* <p>每条 SQL 带状态 / 软删过滤:允许 pending_assign(初次分配)或
|
* pending_test(改派)的行被更新,pending_audit / audited 禁止直接改派
|
* (需走退回流程),软删行跳过。
|
*
|
* @param param 分配入参(bizSign + data 列表)
|
* @return 实际被更新的业务目标(可能小于 data.size(),表示部分行被跳过)
|
*/
|
List<LimsSignUsageTarget> assignJianyanXiang(LimsJianyanAssignParam param);
|
|
/**
|
* 批量录入检验结果:把 pending_test 且属于当前登录检验员的行置为 pending_audit,
|
* 写入 jianyan_jieguo / jianyan_jielun / biz_files(签名仅审计在 lims_sign)。
|
*
|
* <p>每行结果各异,按 id 逐条 UPDATE;每条 SQL 都带 3 个过滤条件:
|
* 状态 pending_test + jiancha_ren = 当前用户 + 未软删,
|
* 状态不对 / 非本人任务 / 被软删的行自动跳过。
|
*
|
* @param param 录入入参(共享 bizSign + data 列表)
|
* @return 执行结果(含实际更新行数 + 异常调查流程发起失败的流水号列表)
|
*/
|
LimsSubmitResultOutcome submitJianyanResult(LimsJianyanResultParam param);
|
|
/**
|
* 批量审核通过检验结果:把选中的 pending_audit 行置为 audited,
|
* 写入 renwu_shenheren(当前登录用户);签名仅审计在 lims_sign。
|
*
|
* <p>业务校验(每行独立判断,不满足的行被跳过):
|
* <ul>
|
* <li>审核人 ≠ 录入人(jiancha_ren),不能审核自己录入的任务</li>
|
* <li>审核人必须属于该行的 jiancha_banzu 班组(即在部门成员内)</li>
|
* </ul>
|
*
|
* @param param 审核入参(共享 bizSign + data 列表)
|
* @return 执行结果明细(含未通过行按原因分桶,便于 controller 给出针对性错误)
|
*/
|
LimsJianyanAuditOutcome passJianyanAudit(LimsJianyanAuditParam param);
|
|
/**
|
* 批量项目退回:把选中的 audited 行置为 audit_rejected,
|
* 每行写入退回原因(note → tuihui_yuanyin),并写入退回人 / 签名。
|
*
|
* <p>业务校验(同 passJianyanAudit):
|
* <ul>
|
* <li>退回人 ≠ 录入人(jiancha_ren)</li>
|
* <li>退回人必须在该行的 jiancha_banzu 班组内</li>
|
* </ul>
|
*
|
* @param param 退回入参(共享 bizSign + data 每行 id + note)
|
* @return 执行结果明细(含未通过行按原因分桶,便于 controller 给出针对性错误)
|
*/
|
LimsJianyanAuditOutcome failJianyanAudit(LimsJianyanAuditFailParam param);
|
}
|