liu
2026-10-24 3990ae574c221e3764ce9cbc2e4e3eb71b7b1b52
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 接口
@@ -82,28 +85,46 @@
    /**
     * 提交设计项目审批(待审核→审批中)
     * <p>
     * 创建 BPM 流程实例,审批通过后由监听器回调更新为待归档
     *
     * @param id                  编号
     * @param processDefinitionKey 流程定义 Key
     * 审核人由「系统管理 - 审批配置」按业务类型统一配置(业务编码 mes_pd_project_approve),
     * 提交时无需指定;未启用审批或未配置有效审核人时抛出业务异常。
     *
     * @param id 编号
     */
    void submitProjectApproval(Long id, String processDefinitionKey);
    void submitProjectApproval(Long id);
    /**
     * 获得设计项目审批流程列表
     * 获得设计项目审批的审核人编号集合
     *
     * @return 流程列表(id/name/version/key)
     * 供前端判断当前登录用户是否应展示「审核」按钮;未配置时返回空集合。
     *
     * @return 审核人用户编号集合
     */
    List<Map<String, Object>> getProjectApproveProcessDefinitionList();
    Set<Long> getProjectApproverUserIds();
    /**
     * 更新设计项目审批状态(BPM 监听器回调)
     * 审核设计项目(审批中→待归档 / 待审核)
     *
     * @param id       编号
     * @param bpmResult BPM 审批结果
     * 仅业务编码 mes_pd_project_approve 配置的审核人可操作(多人时或签),且仅在审批中状态下允许。
     * 审核通过置为待归档;审核不通过必须填写原因,退回待审核状态可修改后重新提交。
     *
     * @param id           编号
     * @param pass         是否通过,true=通过 / false=不通过
     * @param reviewRemark 审核意见,审核不通过时必填
     */
    void updateProjectAuditStatus(Long id, Integer bpmResult);
    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);
    /**
     * 归档设计项目(待归档→已归档)
@@ -125,4 +146,14 @@
    List<MesPdProjectDO> getProjectByProductCode(String productCode);
    /**
     * 批量导入设计项目
     *
     * @param importList    导入设计项目列表
     * @param updateSupport 是否支持更新
     * @return 导入结果
     */
    MesPdProjectImportRespVO importProjectList(List<MesPdProjectImportExcelVO> importList,
                                               boolean updateSupport);
}