zxl
2025-12-05 3777ec066316f3c1d3ca36e2cae5b1e05bac4f6e
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -8,7 +8,6 @@
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.ycl.common.constant.ProcessConstants;
import com.ycl.common.constant.ProcessOverTimeConstants;
import com.ycl.common.core.domain.AjaxResult;
import com.ycl.common.core.domain.entity.SysDept;
import com.ycl.common.core.domain.entity.SysDictData;
import com.ycl.common.core.domain.entity.SysRole;
@@ -199,6 +198,7 @@
    public Result startProcess(ProjectProcessForm form) {
        Long unitId = null;
        if (ProjectProcessTypeEnum.PROJECT.equals(form.getProjectType())) {
            //获得项目信息
            ProjectInfo project = new LambdaQueryChainWrapper<>(projectInfoMapper)
                    .eq(ProjectInfo::getId, form.getProjectId())
                    .one();
@@ -207,6 +207,7 @@
            }
            unitId = project.getProjectOwnerUnit();
        } else if (ProjectProcessTypeEnum.ENGINEERING.equals(form.getProjectType())) {
            //获得工程信息
            ProjectEngineering projectEngineering = new LambdaQueryChainWrapper<>(projectEngineeringMapper)
                    .eq(ProjectEngineering::getId, form.getProjectId())
                    .one();
@@ -219,7 +220,9 @@
        if (Objects.isNull(dept)) {
            throw new RuntimeException("业主单位不存在");
        }
        //启动流程
        String processInsId = this.startPro(form.getProjectId(), form.getProcessDefId(), dept.getDeptId());
        //插入项目流程信息表
        ProjectProcess entity = new ProjectProcess();
        entity.setProjectId(form.getProjectId());
        entity.setProcessDefId(form.getProcessDefId());
@@ -242,7 +245,7 @@
        ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefId)
                .latestVersion().singleResult();
                .latestVersion().singleResult();// 查询最新版本的流程定义 流程定义对象
        if (Objects.nonNull(processDefinition) && processDefinition.isSuspended()) {
            throw new RuntimeException("该流程已被挂起,请先激活流程");
        }
@@ -254,6 +257,7 @@
        // 将该项目的申请人(业主方)作为流程中某些环节的处理人
        variables.put(ProcessConstants.DATA_LAUNCH, "dept:" + createBy);
        variables.put("a", 1);
        //将参数放入flowable流程引擎并启动流程
        ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefId, projectId + "", variables);
        return processInstance.getId();
    }
@@ -736,6 +740,7 @@
        if (Objects.isNull(task)) {
            throw new RuntimeException("未在运行任务中找到该任务,无法执行转办操作");
        }
        //通过IdentityLink(身份链接)获取任务的原处理人 / 组,分两种情况清理:
        List<IdentityLink> identityLinksForTask = taskService.getIdentityLinksForTask(task.getId());
        // 转办之前的处理人
        List<String> beforeHandlerIds = new ArrayList<>(2);
@@ -1057,7 +1062,7 @@
     * @param result
     */
    public void getTodoTaskList(String projectId, String processInsId, String taskName, int pageSize, int pageNum, Result result) {
        //TODO 看看如何获得人员信息的
        TaskQuery taskQuery = taskService.createTaskQuery()
                .active()
                .processInstanceId(processInsId)
@@ -1720,7 +1725,8 @@
     * @param hisTaskList
     * @return
     */
    private List<HistoricTaskInstance> distinctHisTask(List<HistoricTaskInstance> hisTaskList) {
    @Override
    public List<HistoricTaskInstance> distinctHisTask(List<HistoricTaskInstance> hisTaskList) {
        Map<String, HistoricTaskInstance> uniqueTasks = new HashMap<>();
        for (HistoricTaskInstance task : hisTaskList) {
            String taskDefinitionKey = task.getTaskDefinitionKey();