From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master
---
jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/service/impl/TriggerTaskServiceImpl.java | 201 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 201 insertions(+), 0 deletions(-)
diff --git a/jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/service/impl/TriggerTaskServiceImpl.java b/jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/service/impl/TriggerTaskServiceImpl.java
new file mode 100644
index 0000000..eb8f3c6
--- /dev/null
+++ b/jnpf-flowable/jnpf-flowable-biz/src/main/java/jnpf/flowable/service/impl/TriggerTaskServiceImpl.java
@@ -0,0 +1,201 @@
+package jnpf.flowable.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.google.common.collect.ImmutableList;
+import jnpf.base.UserInfo;
+import jnpf.base.service.SuperServiceImpl;
+import jnpf.constant.MsgCode;
+import jnpf.exception.WorkFlowException;
+import jnpf.flowable.entity.*;
+import jnpf.flowable.enums.*;
+import jnpf.flowable.mapper.*;
+import jnpf.flowable.model.task.FlowModel;
+import jnpf.flowable.model.templatejson.TemplateJsonInfoVO;
+import jnpf.flowable.model.templatenode.ButtonModel;
+import jnpf.flowable.model.templatenode.TaskNodeModel;
+import jnpf.flowable.model.templatenode.nodejson.NodeModel;
+import jnpf.flowable.model.trigger.*;
+import jnpf.flowable.model.util.FlowNature;
+import jnpf.flowable.service.TriggerTaskService;
+import jnpf.flowable.util.FlowUtil;
+import jnpf.flowable.util.OperatorUtil;
+import jnpf.flowable.util.TaskUtil;
+import jnpf.util.JsonUtil;
+import jnpf.util.UserProvider;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 绫荤殑鎻忚堪
+ *
+ * @author JNPF@YinMai Info. Co., Ltd
+ * @version 5.0.x
+ * @since 2024/9/10 17:13
+ */
+@Service
+@RequiredArgsConstructor
+public class TriggerTaskServiceImpl extends SuperServiceImpl<TriggerTaskMapper, TriggerTaskEntity> implements TriggerTaskService {
+
+
+
+ private final FlowUtil flowUtil;
+
+ private final TaskUtil taskUtil;
+
+ private final OperatorUtil operatorUtil;
+
+
+ private final TriggerRecordMapper triggerRecordMapper;
+
+ private final TemplateMapper templateMapper;
+
+ private final TemplateJsonMapper templateJsonMapper;
+
+ private final TemplateNodeMapper templateNodeMapper;
+
+ private final TaskLineMapper taskLineMapper;
+
+ @Override
+ public List<TriggerInfoListModel> getListByTaskId(String taskId, String nodeCode) {
+ List<TriggerTaskEntity> list = this.baseMapper.getListByTaskId(taskId,nodeCode);
+ List<TriggerInfoListModel> modelList = new ArrayList<>();
+ if (CollUtil.isNotEmpty(list)) {
+ for (TriggerTaskEntity triggerTask : list) {
+ TriggerInfoListModel model = JsonUtil.getJsonToBean(triggerTask, TriggerInfoListModel.class);
+ List<TriggerRecordEntity> recordList = triggerRecordMapper.getList(triggerTask.getId());
+ model.setRecordList(recordList);
+ modelList.add(model);
+ }
+ }
+ return modelList;
+ }
+
+ @Override
+ public boolean existTriggerTask(String taskId, String nodeId) {
+ return this.baseMapper.existTriggerTask(taskId, nodeId);
+ }
+
+ @Override
+ public List<TriggerTaskModel> getList(TriggerPagination pagination) {
+ return this.baseMapper.getList(pagination);
+ }
+
+ @Override
+ public TriggerInfoModel getInfo(String id) throws WorkFlowException {
+ TriggerTaskEntity triggerTask = this.getById(id);
+ if (null == triggerTask) {
+ throw new WorkFlowException(MsgCode.FA001.get());
+ }
+ TriggerInfoModel model = new TriggerInfoModel();
+ model.setTaskInfo(JsonUtil.getJsonToBean(triggerTask, TriggerTaskModel.class));
+ TemplateJsonInfoVO jsonInfoVO = flowUtil.getInfoVo(triggerTask.getFlowId());
+ model.setFlowInfo(jsonInfoVO);
+ List<TriggerRecordEntity> recordList = triggerRecordMapper.getList(triggerTask.getId());
+ List<TaskNodeModel> nodeList = this.getNodeList(triggerTask, recordList);
+ model.setNodeList(nodeList);
+ recordList = recordList.stream().filter(e -> e.getStatus() != null).collect(Collectors.toList());
+ model.setRecordList(recordList);
+ ButtonModel btnInfo = model.getBtnInfo();
+ if (ObjectUtil.equals(triggerTask.getStatus(), TaskStatusEnum.RUNNING.getCode())) {
+ btnInfo.setHasCancelBtn(true);
+ }
+ List<String> lineKeyList = taskLineMapper.getLineKeyList(id);
+ model.setLineKeyList(lineKeyList);
+ return model;
+ }
+
+ public List<TaskNodeModel> getNodeList(TriggerTaskEntity triggerTask, List<TriggerRecordEntity> recordList) {
+ List<TaskNodeModel> list = new ArrayList<>();
+ if (ObjectUtil.equals(triggerTask.getStatus(), TaskStatusEnum.CANCEL.getCode())) {
+ return list;
+ }
+ String flowId = triggerTask.getFlowId();
+ List<TemplateNodeEntity> nodeEntityList = templateNodeMapper.getList(flowId);
+ List<String> typeList = ImmutableList.of(NodeEnum.GLOBAL.getType(), NodeEnum.CONNECT.getType(), "confluence", "gateway");
+ List<String> divideList = Arrays.stream(DivideRuleEnum.values()).map(DivideRuleEnum::getType).collect(Collectors.toList());
+ divideList.addAll(typeList);
+ for (TemplateNodeEntity node : nodeEntityList) {
+ if (divideList.contains(node.getNodeType())) {
+ continue;
+ }
+ TaskNodeModel model = new TaskNodeModel();
+ NodeModel nodeModel = JsonUtil.getJsonToBean(node.getNodeJson(), NodeModel.class);
+ model.setNodeName(nodeModel.getNodeName());
+ model.setNodeCode(nodeModel.getNodeId());
+ model.setNodeType(nodeModel.getType());
+
+ String nodeCode = node.getNodeCode();
+ if (ObjectUtil.equals(node.getNodeType(), NodeEnum.START.getType())) {
+ nodeCode = FlowNature.START_CODE;
+ } else if (ObjectUtil.equals(node.getNodeType(), NodeEnum.END.getType())) {
+ nodeCode = FlowNature.END_CODE;
+ }
+ String finalNodeCode = nodeCode;
+ TriggerRecordEntity triggerRecordEntity = recordList.stream().filter(e -> ObjectUtil.equals(e.getNodeCode(), finalNodeCode)).findFirst().orElse(null);
+ if (null != triggerRecordEntity) {
+ String type = NodeTypeEnum.CURRENT.getType();
+ if (ObjectUtil.equals(triggerRecordEntity.getStatus(), TriggerRecordEnum.PASSED.getCode())) {
+ type = NodeTypeEnum.PASS.getType();
+ } else if (ObjectUtil.equals(triggerRecordEntity.getStatus(), TriggerRecordEnum.EXCEPTION.getCode())) {
+ type = NodeTypeEnum.EXCEPTION.getType();
+ }
+ model.setType(type);
+ }
+ list.add(model);
+ }
+ return list;
+ }
+
+ @Override
+ public void retry(String id) throws WorkFlowException {
+ TriggerTaskEntity triggerTask = this.getById(id);
+ if (null == triggerTask) {
+ throw new WorkFlowException(MsgCode.FA001.get());
+ }
+ TemplateJsonEntity jsonEntity = templateJsonMapper.getInfo(triggerTask.getFlowId());
+ TemplateEntity template = templateMapper.getInfo(jsonEntity.getTemplateId());
+ if (!ObjectUtil.equals(template.getStatus(), TemplateStatueEnum.UP.getCode())) {
+ throw new WorkFlowException(MsgCode.WF146.get());
+ }
+ ExecuteModel model = new ExecuteModel();
+ model.setFlowId(triggerTask.getFlowId());
+ List<Map<String, Object>> dataList = JsonUtil.getJsonToListMap(triggerTask.getData());
+ model.setDataList(dataList);
+ FlowModel flowModel = new FlowModel();
+ UserInfo userInfo = UserProvider.getUser();
+ flowModel.setUserInfo(userInfo);
+ model.setParentId(triggerTask.getId());
+ model.setFlowModel(flowModel);
+ operatorUtil.execute(model);
+ }
+
+ @Override
+ public void saveTriggerTask(TriggerTaskEntity entity) {
+ this.save(entity);
+ }
+
+ @Override
+ public void updateTriggerTask(TriggerTaskEntity entity) {
+ this.updateById(entity);
+ }
+
+ @Override
+ public void batchDelete(List<String> ids) {
+ if (ids.isEmpty()) {
+ return;
+ }
+ taskUtil.delete(ids);
+ }
+
+ @Override
+ public boolean checkByFlowIds(List<String> flowIds) {
+ return this.baseMapper.checkByFlowIds(flowIds);
+ }
+}
--
Gitblit v1.8.0