yangys
2025-09-06 e1c5c27a41e2410c0689b70319488c16d2e4fd51
增加组长取回功能
已修改5个文件
100 ■■■■ 文件已修改
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/DoneQueryService.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/WIthdrawService.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/FlowVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/utils/WordReplaceUtil.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java
@@ -196,4 +196,16 @@
            return R.fail(e.getMessage());
        }
    }
    @GetMapping("/takeback")
    @Operation(summary = "组长取回", description = "从其他任务节点直接撤回到组长派工节点")
    public R<Void> takeback(String processInstanceId)  {
        try {
            withdrawService.takeBackToDispatch(processInstanceId);
            return R.success();
        }catch(Exception e) {
            log.error("<UNK>", e);
            return R.fail(e.getMessage());
        }
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/DoneQueryService.java
@@ -4,35 +4,19 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
import org.flowable.engine.HistoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.history.HistoricProcessInstanceQuery;
import org.flowable.engine.task.Comment;
import org.flowable.task.api.Task;
import org.flowable.task.api.TaskInfo;
import org.flowable.task.api.TaskInfoQuery;
import org.flowable.task.api.TaskQuery;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.flowable.task.api.history.HistoricTaskInstanceQuery;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.mdm.flow.constants.FlowContants;
import org.springblade.mdm.flow.entity.FlowProgramFile;
import org.springblade.mdm.flow.entity.MdmFlowProcess;
import org.springblade.mdm.flow.mapper.DoneMapper;
import org.springblade.mdm.flow.util.MdmFlowCache;
import org.springblade.mdm.flow.vo.DoneQueryVO;
import org.springblade.mdm.flow.vo.FlowVO;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.User;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@@ -51,11 +35,7 @@
    private final TaskService taskService;
    /**
     * 查询用户已办任务分页列表
     * @param page
     * @param s
     * @param createTimeBegin
     * @param createTimeEnd
     * @param keyword
     * @param queryVO 查询参数
     * @return
      */
    //public IPage<FlowVO> selectDonePage(IPage<FlowVO> page, LocalDateTime createTimeBegin, LocalDateTime createTimeEnd, String keyword) {
@@ -82,8 +62,8 @@
                boolean active = flowCommonService.isProcessInstanceActive(flowVO.getProcessInstanceId());
                flowVO.setProcessIsFinished((Func.toStr(!active)));
                 */
                if(Func.toBoolean(flowVO.getProcessIsFinished())){
                    flowVO.setFlag(getCurrentTaskDefKeys(flowVO.getProcessInstanceId()));
                if(!Func.toBoolean(flowVO.getProcessIsFinished())){
                    flowVO.setCurrentTaskKeys(getCurrentTaskDefKeys(flowVO.getProcessInstanceId()));
                }
            });
        }
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/WIthdrawService.java
@@ -5,7 +5,9 @@
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.task.api.Task;
import org.springblade.core.launch.constant.FlowConstant;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.mdm.flow.constants.FlowContants;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -45,23 +47,7 @@
        String taskId = getCurrentTaskIdByProcessInstanceId(processInstanceId);
        backWithAssigneeService.backToTaskWithNewAssignee(taskId,targetActivityId,targetAssignee,"流程撤回",new HashMap<>());
    }
/*
    String getprocessDefinitionKey(String processInstanceId){
        Task task = taskService.createTaskQuery()
            .taskId(taskId)
            .singleResult();
        ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
            .processDefinitionId(task.getProcessDefinitionId())
            .singleResult();
        String taskId = getCurrentTaskIdByProcessInstanceId(processInstanceId);
        if (processDefinition == null) {
            throw new RuntimeException("流程定义不存在,processDefinitionId: " + task.getProcessDefinitionId());
        }
        return processDefinition.getKey();
    }*/
    public String getCurrentTaskIdByProcessInstanceId(String processInstanceId) {
        Optional<String> optTaskId = taskService.createTaskQuery()
@@ -96,6 +82,18 @@
        return processDefinition.getKey();
    }
    /**
     * 取回到组长派工
     * @param processInstanceId
     */
    public void takeBackToDispatch(String processInstanceId) {
        String targetAssignee = ""+AuthUtil.getUserId();
        final String targetActivityId = "teamLeaderTask";//组长派工
        String taskId = getCurrentTaskIdByProcessInstanceId(processInstanceId);
        backWithAssigneeService.backToTaskWithNewAssignee(taskId,targetActivityId,targetAssignee,"组长取回",new HashMap<>());
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/FlowVO.java
@@ -167,6 +167,10 @@
     */
    private String flag;
    /**
     * 是否通过代号
     */
    private String currentTaskKeys;
    /**
     * 开始查询日期
     */
    private Date beginDate;
blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/utils/WordReplaceUtil.java
@@ -50,6 +50,9 @@
                    for (Map.Entry<String, String> entry : data.entrySet()) {
                        String placeholder = entry.getKey();
                        String replacement = entry.getValue();
                        if(replacement==null) {
                            replacement = "";
                        }
                        if (text.contains(placeholder)) {
                            text = text.replace(placeholder, replacement);
                            run.setText(text, 0);
@@ -68,12 +71,14 @@
                for (Map.Entry<String, String> entry : data.entrySet()) {
                    String placeholder = entry.getKey();
                    String replacement = entry.getValue();
                    if(replacement!=null) {
                        if (text.contains(placeholder)) {
                            text = text.replace(placeholder, replacement);
                            run.setText(text, 0);
                        }
                    if(replacement==null) {
                        replacement = "";
                    }
                    if (text.contains(placeholder)) {
                        text = text.replace(placeholder, replacement);
                        run.setText(text, 0);
                    }
                }
            }
        }
@@ -96,12 +101,15 @@
                                for (Map.Entry<String, String> entry : data.entrySet()) {
                                    String placeholder = entry.getKey();
                                    String replacement = entry.getValue();
                                    if(replacement!=null) {
                                        if (text.contains(placeholder)) {
                                            text = text.replace(placeholder, replacement);
                                            run.setText(text, 0);
                                        }
                                    if(replacement==null) {
                                        replacement = "";
                                    }
                                    if (text.contains(placeholder)) {
                                        text = text.replace(placeholder, replacement);
                                        run.setText(text, 0);
                                    }
                                }
                            }
                        }