Selaa lähdekoodia

优化

tags/24080901
WendyYang 7 kuukautta sitten
vanhempi
commit
d5a663836a
4 muutettua tiedostoa jossa 51 lisäystä ja 21 poistoa
  1. +9
    -6
      hz-pm-api/src/main/java/com/hz/pm/api/common/helper/WflowHelper.java
  2. +12
    -5
      hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/TaskCreatedListener.java
  3. +26
    -9
      hz-pm-api/src/test/java/com/hz/pm/api/todocenter/MhApiClientTest.java
  4. +4
    -1
      hz-pm-api/src/test/resources/application-dev.yml

+ 9
- 6
hz-pm-api/src/main/java/com/hz/pm/api/common/helper/WflowHelper.java Näytä tiedosto

@@ -1,19 +1,16 @@
package com.hz.pm.api.common.helper; package com.hz.pm.api.common.helper;


import com.wflow.workflow.service.ProcessInstanceService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.flowable.bpmn.model.Activity;
import org.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.Process; import org.flowable.bpmn.model.Process;
import org.flowable.bpmn.model.UserTask; import org.flowable.bpmn.model.UserTask;
import org.flowable.engine.HistoryService; import org.flowable.engine.HistoryService;
import org.flowable.engine.RepositoryService; import org.flowable.engine.RepositoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService; import org.flowable.engine.TaskService;
import org.flowable.engine.history.HistoricActivityInstance; import org.flowable.engine.history.HistoricActivityInstance;
import org.flowable.engine.history.HistoricActivityInstanceQuery;
import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.task.api.Task; import org.flowable.task.api.Task;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.flowable.variable.api.history.HistoricVariableInstance; import org.flowable.variable.api.history.HistoricVariableInstance;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;


@@ -46,18 +43,24 @@ public class WflowHelper {
List<UserTask> userTasks = processes.get(0).findFlowElementsOfType(UserTask.class); List<UserTask> userTasks = processes.get(0).findFlowElementsOfType(UserTask.class);
for (UserTask userTask : userTasks) { for (UserTask userTask : userTasks) {
if (userTask.getId().equals(activityId)) { if (userTask.getId().equals(activityId)) {
return userTask.getLoopCharacteristics().isSequential();
return !userTask.getLoopCharacteristics().isSequential();
} }
} }
return false; return false;
} }


public List<Task> listUnFinishedTasks(String activityId) {
public List<Task> listPendingTasks(String activityId) {
return taskService.createTaskQuery() return taskService.createTaskQuery()
.taskDefinitionKey(activityId) .taskDefinitionKey(activityId)
.list(); .list();
} }


public List<HistoricTaskInstance> listFinishedTasks(String activityId) {
return historyService.createHistoricTaskInstanceQuery()
.taskDefinitionKey(activityId)
.list();
}

/** /**
* 所有流程是否完成(审核通过) * 所有流程是否完成(审核通过)
* *


+ 12
- 5
hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/TaskCreatedListener.java Näytä tiedosto

@@ -5,6 +5,7 @@ import cn.hutool.extra.spring.SpringUtil;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.helper.WflowHelper; import com.hz.pm.api.common.helper.WflowHelper;
import com.hz.pm.api.common.util.ThreadPoolUtil;
import com.hz.pm.api.external.MhApiClient; import com.hz.pm.api.external.MhApiClient;
import com.hz.pm.api.external.model.dto.MhZwddWorkNoticeDTO; import com.hz.pm.api.external.model.dto.MhZwddWorkNoticeDTO;
import com.hz.pm.api.external.todo.MHTodoClient; import com.hz.pm.api.external.todo.MHTodoClient;
@@ -26,11 +27,11 @@ import org.flowable.common.engine.api.delegate.event.FlowableEngineEntityEvent;
import org.flowable.common.engine.api.delegate.event.FlowableEngineEventType; import org.flowable.common.engine.api.delegate.event.FlowableEngineEventType;
import org.flowable.common.engine.api.delegate.event.FlowableEvent; import org.flowable.common.engine.api.delegate.event.FlowableEvent;
import org.flowable.common.engine.api.delegate.event.FlowableEventListener; import org.flowable.common.engine.api.delegate.event.FlowableEventListener;
import org.flowable.task.api.Task;
import org.flowable.task.api.TaskInfo;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.flowable.task.service.impl.persistence.entity.TaskEntity; import org.flowable.task.service.impl.persistence.entity.TaskEntity;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;


import java.time.Instant;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;
@@ -58,6 +59,11 @@ public class TaskCreatedListener implements FlowableEventListener {


@Override @Override
public void onEvent(FlowableEvent event) { public void onEvent(FlowableEvent event) {
Instant instant = Instant.now().plusSeconds(5);
ThreadPoolUtil.SCHEDULER.schedule(() -> handleEvent(event), instant);
}

private void handleEvent(FlowableEvent event) {
if (event.getType().equals(FlowableEngineEventType.TASK_CREATED)) { if (event.getType().equals(FlowableEngineEventType.TASK_CREATED)) {
FlowableEngineEntityEvent entityEvent = (FlowableEngineEntityEvent) event; FlowableEngineEntityEvent entityEvent = (FlowableEngineEntityEvent) event;
String procDefId = entityEvent.getProcessDefinitionId(); String procDefId = entityEvent.getProcessDefinitionId();
@@ -127,15 +133,16 @@ public class TaskCreatedListener implements FlowableEventListener {
} }
TaskEntity taskEntity = (TaskEntity) entityEvent.getEntity(); TaskEntity taskEntity = (TaskEntity) entityEvent.getEntity();
WflowHelper wflowHelper = SpringUtil.getBean(WflowHelper.class); WflowHelper wflowHelper = SpringUtil.getBean(WflowHelper.class);
boolean orUserTask = wflowHelper.isOrUserTask(procDefId, taskEntity.getTaskDefinitionId());
String taskDefKey = taskEntity.getTaskDefinitionKey();
boolean orUserTask = wflowHelper.isOrUserTask(procDefId, taskDefKey);
switch (procType.get()) { switch (procType.get()) {
case XC_APPROVAL_PROCESS: case XC_APPROVAL_PROCESS:
case PROJECT_RECORD_APPROVAL_PROCESS: case PROJECT_RECORD_APPROVAL_PROCESS:
case ACCEPTANCE_DECLARATION_APPROVAL_PROCESS: case ACCEPTANCE_DECLARATION_APPROVAL_PROCESS:
MHTodoTypeEnum todoType = getMhTodoTypeEnum(procType.get()); MHTodoTypeEnum todoType = getMhTodoTypeEnum(procType.get());
if (orUserTask) { if (orUserTask) {
List<Task> tasks = wflowHelper.listUnFinishedTasks(taskEntity.getTaskDefinitionId());
Set<String> taskIds = CollUtils.fieldSet(tasks, TaskInfo::getId);
List<HistoricTaskInstance> tasks = wflowHelper.listFinishedTasks(taskDefKey);
Set<String> taskIds = CollUtils.fieldSet(tasks, HistoricTaskInstance::getId);
taskIds.add(taskEntity.getId()); taskIds.add(taskEntity.getId());
mhTodoClient.completeTodo(todoType, taskIds); mhTodoClient.completeTodo(todoType, taskIds);
} else { } else {


+ 26
- 9
hz-pm-api/src/test/java/com/hz/pm/api/todocenter/MhApiClientTest.java Näytä tiedosto

@@ -3,7 +3,10 @@ package com.hz.pm.api.todocenter;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import com.hz.pm.api.AppTests; import com.hz.pm.api.AppTests;
import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.external.MhApiClient;
import com.hz.pm.api.external.model.dto.MhZwddWorkNoticeDTO;
import com.hz.pm.api.external.todo.MHTodoClient; import com.hz.pm.api.external.todo.MHTodoClient;
import com.hz.pm.api.external.todo.dto.MhTodoExtraParamDTO;
import com.hz.pm.api.external.todo.enumerization.MHTodoTypeEnum; import com.hz.pm.api.external.todo.enumerization.MHTodoTypeEnum;
import com.hz.pm.api.user.security.model.UserFullInfoDTO; import com.hz.pm.api.user.security.model.UserFullInfoDTO;
import org.junit.Test; import org.junit.Test;
@@ -22,20 +25,34 @@ public class MhApiClientTest extends AppTests {
@Autowired @Autowired
private MHTodoClient mhTodoClient; private MHTodoClient mhTodoClient;
@Autowired @Autowired
private UserInfoHelper userInfoHelper;
private MhApiClient mhApiClient;


@Test @Test
public void sendTodo() { public void sendTodo() {
UserFullInfoDTO assignee = new UserFullInfoDTO(); UserFullInfoDTO assignee = new UserFullInfoDTO();
assignee.setUserId(347873L);
assignee.setUserId(150L);
assignee.setMhUserId("62697f4ed80d823fa1f26c5a082d989e"); assignee.setMhUserId("62697f4ed80d823fa1f26c5a082d989e");
JSONObject paramObj = new JSONObject();
paramObj.set("projectId", 1213);
paramObj.set("instId", 1213);
paramObj.set("taskId", 1213);
String content = String.format("【%s】的【%s】需要您审核,请及时处理。",
"市住保房管局深化信创项目", "立项备案审批");
mhTodoClient.addTodo(paramObj, assignee, MHTodoTypeEnum.XCFHX_INSPECT_AUDIT, "1212121", content);
MhTodoExtraParamDTO paramObj = MhTodoExtraParamDTO.builder()
.bidId(117L)
.path("/toDoCenter/handleDuringExamine")
.projectId(2333L)
.userName("杨云迪")
.nodeId("node_65f010952418b30a56467594")
.taskId("a733d3fb-e049-11ee-aa3b-024410885fae")
.instanceId("8edc9888-e049-11ee-aa3b-024410885fae")
.build();
mhTodoClient.addTodo(paramObj, assignee, MHTodoTypeEnum.XCFHX_INSPECT_AUDIT, "1212121", null);
}

@Test
public void test(){
MhZwddWorkNoticeDTO notice = MhZwddWorkNoticeDTO.builder()
.title(MHTodoTypeEnum.DECLARED_RECORD_AUDIT.getVal())
.targetUser("ce44b47503147319fc3b5c826cb51fd2")
.content(String.format("【%s】的【%s】需要您审核,请及时处理。",
"市住保房管局深化信创项目", "立项备案审批"))
.build();
mhApiClient.sendZwddWorkNotice(notice);
} }


} }

+ 4
- 1
hz-pm-api/src/test/resources/application-dev.yml Näytä tiedosto

@@ -246,10 +246,13 @@ sync-mh-user:
sync-mh-company: sync-mh-company:
open: false open: false
mh: mh:
zwdd-work-notice:
client-id: ningda-74a5e5da-3bc3-414a-b9e6-004b7d87e310
client-secret: ningda-df746ce4-0c79-4242-b3c7-90ff8630c9742c6727cd-3ae7-48ae-87ad-2b39188ebabd
sso: sso:
client-id: ningda-74a5e5da-3bc3-414a-b9e6-004b7d87e310 client-id: ningda-74a5e5da-3bc3-414a-b9e6-004b7d87e310
client-secret: ningda-df746ce4-0c79-4242-b3c7-90ff8630c9742c6727cd-3ae7-48ae-87ad-2b39188ebabd client-secret: ningda-df746ce4-0c79-4242-b3c7-90ff8630c9742c6727cd-3ae7-48ae-87ad-2b39188ebabd
api-host: https://hzszxc.hzswb.cn:8443/test/mh-gateway/auth-single
api-host: https://hzszxc.hzswb.cn:8443/mh-gateway/auth-single
expert-qr-code-url: https://jiema.wwei.cn/uploads/2023/12/28/658d7a3f15f06.jpg expert-qr-code-url: https://jiema.wwei.cn/uploads/2023/12/28/658d7a3f15f06.jpg
file: file:
down-url: https://weixin.hzszxc.hzswb.cn:8443/test/mh-gateway/oss/oss/previewFileLogin down-url: https://weixin.hzszxc.hzswb.cn:8443/test/mh-gateway/oss/oss/previewFileLogin


Loading…
Peruuta
Tallenna