Merge branch 'feature/dingdingLogin' into test

This commit is contained in:
wangli 2026-02-04 16:32:34 +08:00
commit e89e5848a2
2 changed files with 46 additions and 34 deletions

View File

@ -7,8 +7,11 @@ import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbo
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCancelDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAuditDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
import cn.axzo.workflow.core.engine.cmd.CustomApproveTaskCmd;
import cn.axzo.workflow.core.engine.cmd.CustomRejectionTaskCmd;
import cn.axzo.workflow.core.repository.entity.ExtAxProcessLog;
import cn.axzo.workflow.core.service.BpmnProcessTaskService;
import cn.axzo.workflow.core.service.ExtAxHiTaskInstService;
import cn.axzo.workflow.core.service.ExtAxProcessLogService;
import cn.axzo.workflow.server.common.util.RpcExternalUtil;
import cn.axzo.workflow.server.controller.web.bpmn.BpmnProcessInstanceController;
@ -20,10 +23,10 @@ import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.flowable.common.engine.impl.interceptor.CommandExecutor;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.task.api.Task;
import org.flowable.spring.SpringProcessEngineConfiguration;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Controller;
@ -60,7 +63,7 @@ public class DangerOperationController {
@Resource
private RuntimeService runtimeService;
@Resource
private TaskService flowableTaskService;
private SpringProcessEngineConfiguration processEngineConfiguration;
@Resource
private BpmnProcessInstanceController instanceController;
@Resource
@ -74,6 +77,8 @@ public class DangerOperationController {
@Resource
private Environment environment;
@Resource
private ExtAxHiTaskInstService extAxHiTaskInstService;
@Resource
private ThirdPartySyncApi thirdPartySyncApi;
@Value("${dingtalk.appKey:dingfg3ijkpjkqnrgapc}")
@ -168,15 +173,7 @@ public class DangerOperationController {
String taskId = null;
if (!Objects.equals("0", personId)) {
List<Task> tasks = flowableTaskService.createTaskQuery().active().list();
if (CollectionUtils.isEmpty(tasks)) {
return;
}
if (tasks.size() == 1) {
taskId = tasks.get(0).getId();
} else {
taskId = taskService.findTaskIdByInstanceIdAndPersonId(jobParam.getProcessInstanceId(), jobParam.getPersonId());
}
taskId = taskService.findTaskIdByInstanceIdAndPersonId(jobParam.getProcessInstanceId(), jobParam.getPersonId());
}
ExtAxProcessLog query = new ExtAxProcessLog();
@ -188,13 +185,24 @@ public class DangerOperationController {
log.warn("未找到可操作的任务日志无法驳回任务processInstanceId={}, personId={}", jobParam.getProcessInstanceId(), jobParam.getPersonId());
return;
}
List<BpmnTaskDelegateAssigner> assigneeFull = logs.get(0).getAssigneeFull();
if (CollectionUtils.isEmpty(assigneeFull)) {
// 自动驳回
BpmnTaskAuditDTO reject = new BpmnTaskAuditDTO();
reject.setTaskId(logs.get(0).getTaskId());
reject.setApprover(new BpmnTaskDelegateAssigner("", "system", logs.get(0).getTenantId()));
reject.setOperationDesc("未找到审批人,自动驳回");
CommandExecutor commandExecutor = processEngineConfiguration.getCommandExecutor();
commandExecutor.execute(new CustomRejectionTaskCmd(reject, extAxHiTaskInstService));
} else {
taskController.rejectTask(BpmnTaskAuditDTO.builder()
.processInstanceId(jobParam.getProcessInstanceId())
.advice(jobParam.getComment())
.approver(assigneeFull.get(0))
.async(false)
.build());
}
taskController.rejectTask(BpmnTaskAuditDTO.builder()
.processInstanceId(jobParam.getProcessInstanceId())
.advice(jobParam.getComment())
.approver(logs.get(0).getAssigneeFull().get(0))
.async(false)
.build());
}
private void approveTask(DangerSuperOperationJobHandler.DangerOperationJobParam jobParam) {
@ -205,15 +213,7 @@ public class DangerOperationController {
String taskId = null;
if (!Objects.equals("0", personId)) {
List<Task> tasks = flowableTaskService.createTaskQuery().active().list();
if (CollectionUtils.isEmpty(tasks)) {
return;
}
if (tasks.size() == 1) {
taskId = tasks.get(0).getId();
} else {
taskId = taskService.findTaskIdByInstanceIdAndPersonId(jobParam.getProcessInstanceId(), jobParam.getPersonId());
}
taskId = taskService.findTaskIdByInstanceIdAndPersonId(jobParam.getProcessInstanceId(), jobParam.getPersonId());
}
ExtAxProcessLog query = new ExtAxProcessLog();
@ -226,12 +226,24 @@ public class DangerOperationController {
return;
}
taskController.approveTask(BpmnTaskAuditDTO.builder()
.processInstanceId(jobParam.getProcessInstanceId())
.advice(jobParam.getComment())
.approver(logs.get(0).getAssigneeFull().get(0))
.async(false)
.build());
List<BpmnTaskDelegateAssigner> assigneeFull = logs.get(0).getAssigneeFull();
if (CollectionUtils.isEmpty(assigneeFull)) {
// 自动通过
BpmnTaskAuditDTO pass = new BpmnTaskAuditDTO();
pass.setTaskId(logs.get(0).getTaskId());
pass.setAdvice("");
pass.setApprover(null);
pass.setOperationDesc("未找到审批人,自动同意");
CommandExecutor commandExecutor = processEngineConfiguration.getCommandExecutor();
commandExecutor.execute(new CustomApproveTaskCmd(pass));
} else {
taskController.approveTask(BpmnTaskAuditDTO.builder()
.processInstanceId(jobParam.getProcessInstanceId())
.advice(jobParam.getComment())
.approver(assigneeFull.get(0))
.async(false)
.build());
}
}
private void cancelProcessInstance(DangerSuperOperationJobHandler.DangerOperationJobParam jobParam) {

View File

@ -141,7 +141,7 @@
<h2 class="text-[clamp(1.5rem,3vw,2rem)] font-bold text-dark mb-2"
th:text="${isAuthenticated} ? '流程操作' : '授权验证'"></h2>
<p class="text-secondary"
th:text="${isAuthenticated} ? '请根据需要选择相应操作并填写表单信息' : '请输入扫码登陆'">
th:text="${isAuthenticated} ? '请根据需要选择相应操作并填写表单信息' : '请输入扫码登陆!本系统请使用 Chrome 或 Edge 浏览器'">
</p>
</div>