package cn.iocoder.yudao.module.mes.service.pd.project; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.pd.project.vo.MesPdProjectPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pd.project.vo.MesPdProjectSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.pd.project.MesPdProjectDO; import jakarta.validation.Valid; import java.util.Collection; import java.util.List; import java.util.Map; /** * MES 设计项目 Service 接口 * * @author 超级管理员 */ public interface MesPdProjectService { /** * 创建设计项目 * * @param createReqVO 创建信息 * @return 编号 */ Long createProject(@Valid MesPdProjectSaveReqVO createReqVO); /** * 更新设计项目 * * @param updateReqVO 更新信息 */ void updateProject(@Valid MesPdProjectSaveReqVO updateReqVO); /** * 删除设计项目 * * @param id 编号 */ void deleteProject(Long id); /** * 校验设计项目是否存在 * * @param id 编号 * @return 设计项目 */ MesPdProjectDO validateProjectExists(Long id); /** * 获得设计项目 * * @param id 编号 * @return 设计项目 */ MesPdProjectDO getProject(Long id); /** * 获得设计项目分页 * * @param pageReqVO 分页查询 * @return 设计项目分页 */ PageResult getProjectPage(MesPdProjectPageReqVO pageReqVO); /** * 发布设计项目(待发布→待上传) * * @param id 编号 */ void publishProject(Long id); /** * 上传资料(待上传→待审核) *

* 同时自动为该项目下所有资料创建审核记录 * * @param id 编号 * @param userId 当前登录用户ID */ void uploadProject(Long id, Long userId); /** * 提交设计项目审批(待审核→审批中) *

* 创建 BPM 流程实例,审批通过后由监听器回调更新为待归档 * * @param id 编号 * @param processDefinitionKey 流程定义 Key */ void submitProjectApproval(Long id, String processDefinitionKey); /** * 获得设计项目审批流程列表 * * @return 流程列表(id/name/version/key) */ List> getProjectApproveProcessDefinitionList(); /** * 更新设计项目审批状态(BPM 监听器回调) * * @param id 编号 * @param bpmResult BPM 审批结果 */ void updateProjectAuditStatus(Long id, Integer bpmResult); /** * 归档设计项目(待归档→已归档) *

* 同时自动创建归档台账记录 * * @param id 编号 * @param userId 当前登录用户ID */ void archiveProject(Long id, Long userId); /** * 批量获取设计项目 Map * * @param ids 编号集合 * @return 设计项目 Map */ Map getProjectMap(Collection ids); List getProjectByProductCode(String productCode); }