package cn.iocoder.yudao.module.research.service.application; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.research.controller.admin.application.vo.ResearchApplicationPageReqVO; import cn.iocoder.yudao.module.research.controller.admin.application.vo.ResearchApplicationSaveReqVO; import cn.iocoder.yudao.module.research.dal.dataobject.application.ResearchApplicationDO; import jakarta.validation.Valid; import java.math.BigDecimal; import java.util.List; import java.util.Map; public interface ResearchApplicationService { Long createApplication(@Valid ResearchApplicationSaveReqVO createReqVO); void updateApplication(@Valid ResearchApplicationSaveReqVO updateReqVO); void deleteApplication(Long id); ResearchApplicationDO getApplication(Long id); PageResult getApplicationPage(ResearchApplicationPageReqVO pageReqVO); void submitApplication(Long id, String processDefinitionKey); List> getApproveProcessDefinitionList(); void updateApplicationAuditStatus(Long id, Integer bpmResult); /** 审批通过后生成立项编号与立项时间(幂等) */ void approveApplication(Long id); /** 发布立项通知(生成系统公告,防重复) */ void publishNotice(Long id); /** * 将「已立项」的课题申报书归档到档案管理,并回写归档档案 ID * * @param id 申报书编号 * @return 生成的档案编号(用于前端提示) */ String archiveApplication(Long id); /** 专家评审汇总结果回写主单(由评审服务调用) */ void updateReviewSummary(Long id, BigDecimal reviewAvgScore, Integer reviewPass); }