刘光辉
6 小时以前 06f314545ac3514d7ce28939920866ae8188d31c
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package jnpf.tmsService;
 
import jnpf.tmsEntity.record.TmsQuizAnswerPaperVO;
import jnpf.tmsEntity.record.TmsRecordForm;
import jnpf.tmsEntity.record.TmsRecordIncompleteVO;
import jnpf.tmsEntity.record.TmsRecordProgressVO;
import jnpf.tmsEntity.record.TmsRecordQuery;
import jnpf.tmsEntity.record.TmsRecordScanSignForm;
import jnpf.tmsEntity.record.TmsRecordSignQrVO;
import jnpf.tmsEntity.person.TmsPersonTaskSignResult;
 
import java.util.List;
 
/**
 * 培训记录服务:签到、归档状态机、归档写个人培训目录。
 *
 * @see jnpf.tmsService.impl.TmsRecordServiceImpl
 */
public interface TmsRecordService {
 
    List<TmsRecordForm> getList(TmsRecordQuery query);
 
    TmsRecordForm getInfo(String id);
 
    /** 实时参与进度(签到率/合格率/未完成率) */
    TmsRecordProgressVO getProgress(String recordId);
 
    /** 未完成人员清单(按部门排序) */
    List<TmsRecordIncompleteVO> listIncomplete(String recordId);
 
    /** 按任务回写记录签到率/合格率(签到、交卷后调用) */
    void refreshRatesByTaskId(String taskId);
 
    TmsRecordSignQrVO getSignQr(String id);
 
    /** 扫码签到落库(校验二维码后写 person_task) */
    TmsPersonTaskSignResult scanSign(TmsRecordScanSignForm form);
 
    void update(String id, TmsRecordForm form);
 
    /**
     * 关闭时间已到:null/空 → pending(FDS 待归档;供 XXL-JOB / 数据接口 / 临时按钮)
     *
     * @return 本次转入待归档的条数
     */
    int markReadyByCloseTime();
 
    /**
     * 待归档 → 可归档:pending → ready(可选中间态)
     */
    int promoteToReady(List<String> ids);
 
    /**
     * 可归档恢复为待归档:ready → pending(临时联调,上线 Job 后可保留作运维)
     */
    int restoreToPending(List<String> ids);
 
    /**
     * 归档:写 {@code tms_person_train}、任务 done、未完成人再培训草稿。
     * 仅 pending / ready 可归档。
     */
    int archive(List<String> ids);
 
    /**
     * 无效任务:无人完成时可打 invalid,并自动生成再维护草稿任务。
     *
     * @return 本次作废条数
     */
    int markInvalid(List<String> ids);
 
    /**
     * 提问人数:ceil(签到人数 * task.quiz_ratio / 100)
     */
    int calcQuizCount(String recordId);
 
    /** 某学员在该培训记录下的提问答卷(题目/学员答案/参考答案/对错) */
    TmsQuizAnswerPaperVO getQuizAnswers(String recordId, String userId);
 
    void delete(List<String> ids);
}