云
2026-10-25 d54fbc9d4f8981fa0f7f613b33a28a8cd4f764ea
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pd/project/MesPdProjectService.java
@@ -1,6 +1,8 @@
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.MesPdProjectImportExcelVO;
import cn.iocoder.yudao.module.mes.controller.admin.pd.project.vo.MesPdProjectImportRespVO;
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;
@@ -9,6 +11,7 @@
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
 * MES 设计项目 Service 接口
@@ -81,11 +84,47 @@
    void uploadProject(Long id, Long userId);
    /**
     * 审核设计项目(待审核→待归档)
     * 提交设计项目审批(待审核→审批中)
     *
     * 审核人由「系统管理 - 审批配置」按业务类型统一配置(业务编码 mes_pd_project_approve),
     * 提交时无需指定;未启用审批或未配置有效审核人时抛出业务异常。
     *
     * @param id 编号
     */
    void auditProject(Long id);
    void submitProjectApproval(Long id);
    /**
     * 获得设计项目审批的审核人编号集合
     *
     * 供前端判断当前登录用户是否应展示「审核」按钮;未配置时返回空集合。
     *
     * @return 审核人用户编号集合
     */
    Set<Long> getProjectApproverUserIds();
    /**
     * 审核设计项目(审批中→待归档 / 待审核)
     *
     * 仅业务编码 mes_pd_project_approve 配置的审核人可操作(多人时或签),且仅在审批中状态下允许。
     * 审核通过置为待归档;审核不通过必须填写原因,退回待审核状态可修改后重新提交。
     *
     * @param id           编号
     * @param pass         是否通过,true=通过 / false=不通过
     * @param reviewRemark 审核意见,审核不通过时必填
     */
    void auditProject(Long id, Boolean pass, String reviewRemark);
    /**
     * 回写 BPM 审批结果(供 BPM 流程状态监听器调用)
     *
     * 仅在单据处于审批中时生效:审批通过置为待归档,审批不通过退回待审核。
     * 设计项目没有「已取消」状态,其余 BPM 结果忽略。
     *
     * @param id        编号
     * @param bpmStatus BPM 任务状态,见 {@link cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatusEnum}
     * @param reason    审批意见 / 取消原因
     */
    void updateProjectAuditStatus(Long id, Integer bpmStatus, String reason);
    /**
     * 归档设计项目(待归档→已归档)
@@ -107,4 +146,14 @@
    List<MesPdProjectDO> getProjectByProductCode(String productCode);
    /**
     * 批量导入设计项目
     *
     * @param importList    导入设计项目列表
     * @param updateSupport 是否支持更新
     * @return 导入结果
     */
    MesPdProjectImportRespVO importProjectList(List<MesPdProjectImportExcelVO> importList,
                                               boolean updateSupport);
}