package cn.iocoder.yudao.module.hrm.service.training; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.hrm.controller.admin.training.vo.HrmTrainingPageReqVO; import cn.iocoder.yudao.module.hrm.controller.admin.training.vo.HrmTrainingParticipantUpdateReqVO; import cn.iocoder.yudao.module.hrm.controller.admin.training.vo.HrmTrainingSaveReqVO; import cn.iocoder.yudao.module.hrm.dal.dataobject.training.HrmTrainingDO; import cn.iocoder.yudao.module.hrm.dal.dataobject.training.HrmTrainingParticipantDO; import java.util.Collection; import java.util.List; import java.util.Map; /** * HRM 培训活动 Service 接口 * *

管理安全培训、技能培训等培训计划与参训/考核结果;培训完成时对合格人员联动生成证书资质。 * * @author 超级管理员 */ public interface HrmTrainingService { /** * 创建培训活动 * * @param createReqVO 创建信息 * @return 培训活动ID */ Long createTraining(HrmTrainingSaveReqVO createReqVO); /** * 更新培训活动(仅草稿/待开展可改,且不改状态) * * @param updateReqVO 更新信息 */ void updateTraining(HrmTrainingSaveReqVO updateReqVO); /** * 删除培训活动(级联删除参训人员;已完成/已取消不可删) * * @param ids 培训活动ID集合 */ void deleteTraining(Collection ids); /** * 获得培训活动 * * @param id 培训活动ID * @return 培训活动 */ HrmTrainingDO getTraining(Long id); /** * 获得培训活动分页 * * @param pageReqVO 分页查询 * @return 培训活动分页 */ PageResult getTrainingPage(HrmTrainingPageReqVO pageReqVO); /** * 开始培训(草稿 → 待开展) * * @param id 培训活动ID */ void startTraining(Long id); /** * 完成培训(待开展/草稿 → 已完成),完成时对合格人员联动自动发证 * * @param id 培训活动ID */ void completeTraining(Long id); /** * 取消培训(草稿/待开展 → 已取消) * * @param id 培训活动ID */ void cancelTraining(Long id); /** * 添加参训员工(自动跳过已在名单中的员工) * * @param trainingId 培训活动ID * @param employeeIds 员工ID集合 * @return 实际新增数量 */ int addParticipants(Long trainingId, Collection employeeIds); /** * 更新参训记录(参加情况/成绩/是否合格) * * @param updateReqVO 更新信息 */ void updateParticipant(HrmTrainingParticipantUpdateReqVO updateReqVO); /** * 删除参训记录 * * @param ids 参训记录ID集合 */ void deleteParticipants(Collection ids); /** * 获得某次培训的全部参训记录 * * @param trainingId 培训活动ID * @return 参训记录列表 */ List getParticipantsByTrainingId(Long trainingId); /** * 批量统计各培训活动的参训人数(分页列表展示用) * * @param trainingIds 培训活动ID集合 * @return 培训活动ID → 参训人数 */ Map getParticipantCountMap(Collection trainingIds); }