刘光辉
13 小时以前 34981c30a78e8bbd7791131059a9210f9928b62c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package jnpf.limsService;
 
import jnpf.limsEntity.LimsBaogaoSubmitParam;
 
/**
 * 报告生命周期服务。
 *
 * <p>报告数据已合并进 lims_qingyandan(baogao_* 列),本服务所有动作都按请验单 id
 * 在 lims_qingyandan 行上流转(baogao_zhuangtai 走 {@code BaogaoStatus}),
 * 不再使用独立的 lims_qingyandan_report 表。
 */
public interface LimsQingyandanReportService {
 
    /**
     * 检验项全部 audited 后自动生成报告:在对应 lims_qingyandan 行上把
     * baogao_zhuangtai 由空串推进到 created,并写入 baogao_shifou_hege、首次生成 baogao_bianhao。
     * 幂等:仅当 baogao_zhuangtai 为空串且该请验单下所有 lims_jianyan_xiang 都 audited 时才生成。
     *
     * @param qingyandanId 请验单 id(lims_qingyandan.f_id,主键查)
     * @return true 表示本次生成;false 表示条件不满足 / 已生成
     */
    boolean generateReportData(String qingyandanId);
 
    /**
     * “生成报告”动作(baogao_zhuangtai: created → pending_audit):
     * 写 baogao_ren=当前用户、baogao_riqi=入参日期、baogao_beizhu=入参备注,并清空上一次退回痕迹。
     *
     * @param param 入参(id=请验单 id + baogaoRiqi + beizhu)
     * @return true 更新成功;false 状态不符 / 不存在 / 已软删
     */
    boolean submitReport(LimsBaogaoSubmitParam param);
 
    /**
     * “退回 / 不通过”动作:写 baogao_tuihui_yuanyin/ren/riqi 留痕 + 记业务日志,
     * 把 baogao_zhuangtai 重置回空串、清空报告人/审核人/批准人等阶段字段(baogao_bianhao 保留),
     * 并按报告当前状态把同流水号检验项推回:
     * created → audit_rejected(重新录入);pending_audit / audited → pending_audit(重新复核)。
     * 报告处于 approved / 其它状态时不允许退回。
     *
     * @param qingyandanId 请验单 id
     * @return true 更新成功;false 状态不符 / 不存在 / 已软删
     */
    boolean rejectReport(String qingyandanId, String tuihuiYuanyin);
 
    /**
     * “审核通过”动作(baogao_zhuangtai: pending_audit → audited):
     * 写 baogao_shenhe_ren=当前用户、baogao_shenhe_riqi=当前时间。
     */
    boolean auditPassReport(String qingyandanId);
 
    /**
     * “批准”动作(baogao_zhuangtai: audited → approved):
     * 写 baogao_pizhun_ren=当前用户、baogao_pizhun_riqi=当前时间。
     */
    boolean approveReport(String qingyandanId);
}