Parcourir la source

Update 优化获取流程记录,模型保存按钮位置等

YueYunyun il y a 1 an
Parent
commit
59fd33ba3b

+ 3 - 1
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/controller/ActProcessInstanceController.java

@@ -11,6 +11,7 @@ import com.vber.common.web.core.BaseController;
 import com.vber.workflow.domain.bo.ProcessInstanceBo;
 import com.vber.workflow.domain.bo.ProcessInvalidBo;
 import com.vber.workflow.domain.bo.TaskUrgingBo;
+import com.vber.workflow.domain.vo.ActHistoryInfoVo;
 import com.vber.workflow.domain.vo.ProcessInstanceVo;
 import com.vber.workflow.service.IActProcessInstanceService;
 import jakarta.validation.constraints.NotBlank;
@@ -20,6 +21,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.Arrays;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -81,7 +83,7 @@ public class ActProcessInstanceController extends BaseController {
      * @param processInstanceId 流程实例id
      */
     @GetMapping("/getHistoryRecord/{processInstanceId}")
-    public R<Map<String, Object>> getHistoryRecord(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) {
+    public R<List<ActHistoryInfoVo>> getHistoryRecord(@NotBlank(message = "流程实例id不能为空") @PathVariable String processInstanceId) {
         return R.ok(actProcessInstanceService.getHistoryRecord(processInstanceId));
     }
 

+ 2 - 1
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/IActProcessInstanceService.java

@@ -5,6 +5,7 @@ import com.vber.common.mybatis.core.page.TableDataInfo;
 import com.vber.workflow.domain.bo.ProcessInstanceBo;
 import com.vber.workflow.domain.bo.ProcessInvalidBo;
 import com.vber.workflow.domain.bo.TaskUrgingBo;
+import com.vber.workflow.domain.vo.ActHistoryInfoVo;
 import com.vber.workflow.domain.vo.ProcessInstanceVo;
 
 import java.util.List;
@@ -56,7 +57,7 @@ public interface IActProcessInstanceService {
      * @param processInstanceId 流程实例id
      * @return 结果
      */
-    Map<String, Object> getHistoryRecord(String processInstanceId);
+    List<ActHistoryInfoVo> getHistoryRecord(String processInstanceId);
 
     /**
      * 作废流程实例,不会删除历史记录(删除运行中的实例)

+ 10 - 44
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/service/impl/ActProcessInstanceServiceImpl.java

@@ -34,7 +34,7 @@ import com.vber.workflow.utils.WorkflowUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
-import org.flowable.bpmn.model.*;
+import org.flowable.bpmn.model.BpmnModel;
 import org.flowable.engine.*;
 import org.flowable.engine.history.HistoricActivityInstance;
 import org.flowable.engine.history.HistoricProcessInstance;
@@ -339,8 +339,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
      * @param processInstanceId 流程实例id
      */
     @Override
-    public Map<String, Object> getHistoryRecord(String processInstanceId) {
-        Map<String, Object> map = new HashMap<>();
+    public List<ActHistoryInfoVo> getHistoryRecord(String processInstanceId) {
         // 查询任务办理记录
         List<HistoricTaskInstance> list = QueryUtils.hisTaskInstanceQuery(processInstanceId).orderByHistoricTaskInstanceEndTime().desc().list();
         list = StreamUtils.sorted(list, Comparator.comparing(HistoricTaskInstance::getEndTime, Comparator.nullsFirst(Date::compareTo)).reversed());
@@ -381,16 +380,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
             }
             actHistoryInfoVoList.add(actHistoryInfoVo);
         }
-        List<ActHistoryInfoVo> collect = new ArrayList<>();
-        // 待办理
-        List<ActHistoryInfoVo> waitingTask = StreamUtils.filter(actHistoryInfoVoList, e -> e.getEndTime() == null);
-        // 已办理
-        List<ActHistoryInfoVo> finishTask = StreamUtils.filter(actHistoryInfoVoList, e -> e.getEndTime() != null);
-        collect.addAll(waitingTask);
-        collect.addAll(finishTask);
-        // 审批记录
-        map.put("historyRecordList", collect);
-        List<ActHistoryInfoVo> nodeInfoList = new ArrayList<>();
+
         Map<String, List<ActHistoryInfoVo>> groupByKey = StreamUtils.groupByKey(actHistoryInfoVoList, ActHistoryInfoVo::getTaskDefinitionKey);
         for (Map.Entry<String, List<ActHistoryInfoVo>> entry : groupByKey.entrySet()) {
             ActHistoryInfoVo actHistoryInfoVo = BeanUtil.toBean(entry.getValue().get(0), ActHistoryInfoVo.class);
@@ -406,41 +396,17 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService
                         actHistoryInfoVo.setEndTime(null);
                         actHistoryInfoVo.setRunDuration(null);
                     });
-            nodeInfoList.add(actHistoryInfoVo);
-        }
-        // 节点信息
-        map.put("nodeListInfo", nodeInfoList);
-        BpmnModel bpmnModel = repositoryService.getBpmnModel(list.get(0).getProcessDefinitionId());
-        List<GraphicInfoVo> graphicInfoVos = new ArrayList<>();
-        Collection<FlowElement> flowElements = bpmnModel.getMainProcess().getFlowElements();
-        //节点图形信息
-        buildGraphicInfo(flowElements, graphicInfoVos, bpmnModel);
-        map.put("graphicInfoVos", graphicInfoVos);
-        return map;
-    }
 
-    /**
-     * 构建节点图形信息
-     *
-     * @param flowElements 节点
-     */
-    private static void buildGraphicInfo(Collection<FlowElement> flowElements, List<GraphicInfoVo> graphicInfoVos, BpmnModel bpmnModel) {
-        for (FlowElement flowElement : flowElements) {
-            if (flowElement instanceof SubProcess) {
-                Collection<FlowElement> subFlowElements = ((SubProcess) flowElement).getFlowElements();
-                buildGraphicInfo(subFlowElements, graphicInfoVos, bpmnModel);
-            } else {
-                if (flowElement instanceof UserTask) {
-                    GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowElement.getId());
-                    GraphicInfoVo graphicInfoVo = BeanUtil.toBean(graphicInfo, GraphicInfoVo.class);
-                    graphicInfoVo.setNodeId(flowElement.getId());
-                    graphicInfoVo.setNodeName(flowElement.getName());
-                    graphicInfoVos.add(graphicInfoVo);
-                }
-            }
         }
+        List<ActHistoryInfoVo> recordList = new ArrayList<>();
+        // 待办理
+        recordList.addAll(StreamUtils.filter(actHistoryInfoVoList, e -> e.getEndTime() == null));
+        // 已办理
+        recordList.addAll(StreamUtils.filter(actHistoryInfoVoList, e -> e.getEndTime() != null));
+        return recordList;
     }
 
+
     /**
      * 任务完成时间处理
      *

+ 44 - 43
UI/VAP_V3.VUE/src/components/bpmn/index.vue

@@ -14,7 +14,6 @@ import flowableModdle from "./assets/moddle/flowable"
 import appStore from "@s"
 
 import CodeHighlighter from "@@@/highlighters/CodeHighlighter.vue"
-import { CirclePlus, Edit, Search, Share, Upload } from "@element-plus/icons-vue"
 
 const emits = defineEmits<{
 	(e: "close", v: any): void
@@ -285,6 +284,50 @@ defineExpose({
 					<el-header>
 						<div class="process-toolbar">
 							<el-space wrap :size="10">
+								<vb-tooltip content="新建" placement="bottom">
+									<el-button size="small" type="default" @click="onNewDiagram">
+										<template #icon>
+											<i class="bi bi-file-earmark-plus fs-7"></i>
+										</template>
+									</el-button>
+								</vb-tooltip>
+								<vb-tooltip content="自适应屏幕" placement="bottom">
+									<el-button size="small" type="default" @click="onFitViewport">
+										<template #icon>
+											<i class="bi bi-arrows-fullscreen fs-7"></i>
+										</template>
+									</el-button>
+								</vb-tooltip>
+								<vb-tooltip content="放大" placement="bottom">
+									<el-button size="small" type="default" @click="onZoomViewport(true)">
+										<template #icon>
+											<i class="bi bi-zoom-in fs-7"></i>
+										</template>
+									</el-button>
+								</vb-tooltip>
+								<vb-tooltip content="缩小" placement="bottom">
+									<el-button size="small" type="default" @click="onZoomViewport(false)">
+										<template #icon>
+											<i class="bi bi-zoom-out fs-7"></i>
+										</template>
+									</el-button>
+								</vb-tooltip>
+								<vb-tooltip content="后退" placement="bottom">
+									<el-button size="small" type="default" @click="onUndo">
+										<template #icon>
+											<i class="bi bi-arrow-counterclockwise fs-7"></i>
+										</template>
+									</el-button>
+								</vb-tooltip>
+								<vb-tooltip size="small" type="default" placement="bottom">
+									<el-button size="small" type="default" @click="onRedo">
+										<template #icon>
+											<i class="bi bi-arrow-clockwise fs-7"></i>
+										</template>
+									</el-button>
+								</vb-tooltip>
+							</el-space>
+							<el-space wrap :size="10" style="float: right; padding-right: 10px">
 								<el-button size="small" type="success" @click="onSaveXml">
 									<template #icon>
 										<i class="bi bi-cloud-check-fill fs-6"></i>
@@ -337,48 +380,6 @@ defineExpose({
 										</el-dropdown-menu>
 									</template>
 								</el-dropdown>
-								<vb-tooltip content="新建" placement="bottom">
-									<el-button size="small" type="default" @click="onNewDiagram">
-										<template #icon>
-											<i class="bi bi-file-earmark-plus fs-7"></i>
-										</template>
-									</el-button>
-								</vb-tooltip>
-								<vb-tooltip content="自适应屏幕" placement="bottom">
-									<el-button size="small" type="default" @click="onFitViewport">
-										<template #icon>
-											<i class="bi bi-arrows-fullscreen fs-7"></i>
-										</template>
-									</el-button>
-								</vb-tooltip>
-								<vb-tooltip content="放大" placement="bottom">
-									<el-button size="small" type="default" @click="onZoomViewport(true)">
-										<template #icon>
-											<i class="bi bi-zoom-in fs-7"></i>
-										</template>
-									</el-button>
-								</vb-tooltip>
-								<vb-tooltip content="缩小" placement="bottom">
-									<el-button size="small" type="default" @click="onZoomViewport(false)">
-										<template #icon>
-											<i class="bi bi-zoom-out fs-7"></i>
-										</template>
-									</el-button>
-								</vb-tooltip>
-								<vb-tooltip content="后退" placement="bottom">
-									<el-button size="small" type="default" @click="onUndo">
-										<template #icon>
-											<i class="bi bi-arrow-counterclockwise fs-7"></i>
-										</template>
-									</el-button>
-								</vb-tooltip>
-								<vb-tooltip size="small" type="default" placement="bottom">
-									<el-button size="small" type="default" @click="onRedo">
-										<template #icon>
-											<i class="bi bi-arrow-clockwise fs-7"></i>
-										</template>
-									</el-button>
-								</vb-tooltip>
 							</el-space>
 						</div>
 					</el-header>

+ 1 - 0
UI/VAP_V3.VUE/src/components/bpmn/view.vue

@@ -412,6 +412,7 @@ defineExpose({
 	border: 1px solid #0095e8;
 	color: #0095e8;
 	padding: 10px 15px;
+	cursor: pointer;
 	p {
 		font-weight: bold;
 		line-height: 28px;

+ 1 - 2
UI/VAP_V3.VUE/src/components/process/ApprovalRecord.vue

@@ -32,8 +32,7 @@ function open(instanceId: string) {
 	tabActiveName.value = "bpmn"
 	historyList.value = []
 	apis.workflow.processInstanceApi.getHistoryRecord(instanceId).then((res: any) => {
-		historyList.value = res.data.historyRecordList
-		deleteReason.value = res.data.deleteReason
+		historyList.value = res.data
 	})
 	nextTick(() => {
 		bpmnViewRef.value.open(instanceId)