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 个分检字段(分检量 / 分检单位 / 分装容器 / 分检后保存条件)。 * *
按 lims_jianyan_xiang.f_id 逐条 UPDATE,带状态 / 软删过滤:仅 created 行被推进,
* 其余状态自动跳过;4 个分检字段行级必填(缺失抛 DataException)。
*
* @param param 分检入参(共享 bizSign + data 列表,见 {@link LimsFenjianItem})
* @return 实际被推进的业务目标(非 created / 已软删 / 不存在 的行不计入)
*/
List 每条 SQL 带状态 / 软删过滤:允许 pending_assign(初次分配)或
* pending_test(改派)的行被更新,pending_audit / audited 禁止直接改派
* (需走退回流程),软删行跳过。
*
* @param param 分配入参(bizSign + data 列表)
* @return 实际被更新的业务目标(可能小于 data.size(),表示部分行被跳过)
*/
List 每行结果各异,按 id 逐条 UPDATE;每条 SQL 都带 3 个过滤条件:
* 状态 pending_test + jiancha_ren = 当前用户 + 未软删,
* 状态不对 / 非本人任务 / 被软删的行自动跳过。
*
* @param param 录入入参(共享 bizSign + data 列表)
* @return 执行结果(含实际更新行数 + 异常调查流程发起失败的流水号列表)
*/
LimsSubmitResultOutcome submitJianyanResult(LimsJianyanResultParam param);
/**
* 批量审核通过检验结果:把选中的 pending_audit 行置为 audited,
* 写入 renwu_shenheren(当前登录用户);签名仅审计在 lims_sign。
*
* 业务校验(每行独立判断,不满足的行被跳过):
* 业务校验(同 passJianyanAudit):
*
*
*
* @param param 审核入参(共享 bizSign + data 列表)
* @return 执行结果明细(含未通过行按原因分桶,便于 controller 给出针对性错误)
*/
LimsJianyanAuditOutcome passJianyanAudit(LimsJianyanAuditParam param);
/**
* 批量项目退回:把选中的 audited 行置为 audit_rejected,
* 每行写入退回原因(note → tuihui_yuanyin),并写入退回人 / 签名。
*
*
*
*
* @param param 退回入参(共享 bizSign + data 每行 id + note)
* @return 执行结果明细(含未通过行按原因分桶,便于 controller 给出针对性错误)
*/
LimsJianyanAuditOutcome failJianyanAudit(LimsJianyanAuditFailParam param);
}