diff --git a/smart-flow-api/pom.xml b/smart-flow-api/pom.xml
index 8584520..a8e75f4 100644
--- a/smart-flow-api/pom.xml
+++ b/smart-flow-api/pom.xml
@@ -10,21 +10,20 @@
sa-parent
SmartFlow project
-
+
sa-base
- sa-admin
+ sa-admin
- 21
+ 17
UTF-8
UTF-8
3.3.1
2.0.8
6.4.3
- 8.3.0
- 8.6.0
3.5.7
+
3.9.1
4.4.0
2.0.52
@@ -51,7 +50,7 @@
0.9.0
3.1
1.41.0
- 1.7.3
+ 1.8.4
2.7.0
1.80
2.13.4
@@ -62,9 +61,10 @@
2.3.33
1.18.1
3.1.0
+ 8.6.0
-
+
@@ -77,19 +77,6 @@
-
- com.mysql
- mysql-connector-j
- ${mysql.version}
-
-
-
-
- cn.com.kingbase
- kingbase8
- ${kingbase8.version}
-
-
com.baomidou
mybatis-plus-spring-boot3-starter
@@ -99,9 +86,31 @@
org.springframework.boot
spring-boot-starter-logging
+
+ org.mybatis
+ mybatis
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+
+
+
+
+ org.mybatis
+ mybatis
+ 3.5.16
+
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+ 3.0.3
+
+
org.springframework.security
spring-security-crypto
@@ -114,6 +123,12 @@
${p6spy.version}
+
+ cn.com.kingbase
+ kingbase8
+ ${kingbase.version}
+
+
com.github.xiaoymin
knife4j-openapi3-jakarta-spring-boot-starter
@@ -262,16 +277,15 @@
org.dromara.warm
warm-flow-mybatis-plus-sb3-starter
${warm-flow.version}
+ pom
+ import
org.dromara.warm
warm-flow-plugin-ui-sb-web
${warm-flow.version}
-
-
- org.dromara.warm
- warm-flow-mybatis-plus-core
- ${warm-flow.version}
+ pom
+ import
@@ -318,11 +332,7 @@
${poi.version}
-
- org.apache.poi
- ooxml-schemas
- ${ooxml-schemas.version}
-
+
com.fasterxml.jackson.datatype
@@ -374,8 +384,8 @@
-
+
${project.name}-${profiles.active}-${project.version}
@@ -415,8 +425,8 @@
3.13.0
-parameters
- 21
- 21
+ 17
+ 17
UTF-8
diff --git a/smart-flow-api/sa-admin/pom.xml b/smart-flow-api/sa-admin/pom.xml
index 9950d7f..81d0cd8 100644
--- a/smart-flow-api/sa-admin/pom.xml
+++ b/smart-flow-api/sa-admin/pom.xml
@@ -20,39 +20,64 @@
net.lab1024
sa-base
- ${project.version}
+ 3.0.1
-
+
com.baomidou
mybatis-plus-spring-boot3-starter
+ ${mybatis-plus.version}
+
- org.dromara.warm
- warm-flow-mybatis-plus-core
+ com.baomidou
+ mybatis-plus-extension
+ ${mybatis-plus.version}
org.dromara.warm
warm-flow-mybatis-plus-sb3-starter
+ ${warm-flow.version}
org.dromara.warm
warm-flow-plugin-ui-sb-web
+ ${warm-flow.version}
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+ 3.6.1
+
+
+ copy-dependencies
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}/lib
+ net.lab1024
+ runtime
+ false
+ false
+ true
+
+
+
+
org.springframework.boot
spring-boot-maven-plugin
-
- net.lab1024.sa.admin.AdminApplication
-
- true
-
+ ${springboot.version}
@@ -60,6 +85,17 @@
+
+ net.lab1024.sa.AdminApplication
+ ZIP
+
+
+
+ net.lab1024
+ sa-base
+
+
+
diff --git a/smart-flow-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/flow/controller/DefController.java b/smart-flow-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/flow/controller/DefController.java
index 6768174..fe14dac 100644
--- a/smart-flow-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/flow/controller/DefController.java
+++ b/smart-flow-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/flow/controller/DefController.java
@@ -14,9 +14,17 @@ import net.lab1024.sa.base.common.domain.PageResult;
import net.lab1024.sa.base.common.domain.ResponseDTO;
import net.lab1024.sa.base.common.util.SmartResponseUtil;
import net.lab1024.sa.base.common.util.SmartStringUtil;
+import org.dromara.warm.flow.core.FlowEngine;
+import org.dromara.warm.flow.core.dto.DefJson;
+import org.dromara.warm.flow.core.dto.FlowCombine;
import org.dromara.warm.flow.core.entity.Definition;
+import org.dromara.warm.flow.core.entity.Node;
+import org.dromara.warm.flow.core.entity.Skip;
+import org.dromara.warm.flow.core.enums.NodeType;
+import org.dromara.warm.flow.core.enums.SkipType;
import org.dromara.warm.flow.core.service.ChartService;
import org.dromara.warm.flow.core.service.DefService;
+import org.dromara.warm.flow.core.utils.FlowConfigUtil;
import org.dromara.warm.flow.orm.entity.FlowDefinition;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
@@ -28,7 +36,9 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
+import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -44,7 +54,7 @@ import java.util.List;
public class DefController {
@Resource
private FlowDefinitionService flowDefinitionService;
-
+
@Resource
private DefService defService;
@@ -54,16 +64,16 @@ public class DefController {
/**
* 分页查询流程定义列表
*/
- @Operation(summary = "分页查询")
+ @Operation(summary = "分页查询 @author kaiyun")
@PostMapping("/queryPage")
public ResponseDTO> queryPage(@RequestBody @Valid FlowDefinitionQueryForm queryForm) {
return ResponseDTO.ok(flowDefinitionService.queryPage(queryForm));
}
-
+
/**
* 获取流程定义详细信息
*/
- @Operation(summary = "获取流程定义详细信息")
+ @Operation(summary = "获取流程定义详细信息 @author kaiyun")
@SaCheckPermission("flow:definition:query")
@GetMapping(value = "/{id}")
public ResponseDTO getInfo(@PathVariable("id") Long id) {
@@ -73,18 +83,23 @@ public class DefController {
/**
* 新增流程定义
*/
- @Operation(summary = "添加")
+ @Operation(summary = "添加 @author kaiyun")
@SaCheckPermission("flow:definition:add")
@PostMapping("/add")
@Transactional(rollbackFor = Exception.class)
- public ResponseDTO add(@RequestBody FlowDefinition flowDefinition) {
- return ResponseDTO.ok(defService.saveAndInitNode(flowDefinition));
+ public ResponseDTO add(@RequestBody DefJson definition) {
+ try {
+ defService.saveDef(definition, false);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ return ResponseDTO.ok(true);
}
/**
* 发布流程定义
*/
- @Operation(summary = "发布流程定义")
+ @Operation(summary = "发布流程定义 @author kaiyun")
@SaCheckPermission("flow:definition:publish")
@GetMapping("/publish/{id}")
@Transactional(rollbackFor = Exception.class)
@@ -95,7 +110,7 @@ public class DefController {
/**
* 取消发布流程定义
*/
- @Operation(summary = "取消发布流程定义")
+ @Operation(summary = "取消发布流程定义 @author kaiyun")
@SaCheckPermission("flow:definition:publish")
@GetMapping("/unPublish/{id}")
@Transactional(rollbackFor = Exception.class)
@@ -107,7 +122,7 @@ public class DefController {
/**
* 修改流程定义
*/
- @Operation(summary = "更新")
+ @Operation(summary = "更新 @author kaiyun")
@SaCheckPermission("flow:definition:edit")
@PostMapping("/update")
@Transactional(rollbackFor = Exception.class)
@@ -118,7 +133,7 @@ public class DefController {
/**
* 删除流程定义
*/
- @Operation(summary = "删除")
+ @Operation(summary = "删除 @author kaiyun")
@SaCheckPermission("flow:definition:remove")
@GetMapping("/delete/{ids}")
@Transactional(rollbackFor = Exception.class)
@@ -129,7 +144,7 @@ public class DefController {
/**
* 复制流程定义
*/
- @Operation(summary = "复制流程定义")
+ @Operation(summary = "复制流程定义 @author kaiyun")
@SaCheckPermission("flow:definition:publish")
@GetMapping("/copyDef/{id}")
@Transactional(rollbackFor = Exception.class)
@@ -137,7 +152,7 @@ public class DefController {
return ResponseDTO.ok(defService.copyDef(id));
}
- @Operation(summary = "流程定义导入")
+ @Operation(summary = "流程定义导入 @author kaiyun")
@SaCheckPermission("flow:definition:importDefinition")
@PostMapping("/importDefinition")
@Transactional(rollbackFor = Exception.class)
@@ -146,7 +161,7 @@ public class DefController {
return ResponseDTO.ok();
}
- @Operation(summary = "流程定义导出")
+ @Operation(summary = "流程定义导出 @author kaiyun")
@SaCheckPermission("flow:definition:exportDefinition")
@PostMapping("/exportDefinition/{id}")
public void exportDefinition(@PathVariable("id") Long id, HttpServletResponse response) throws IOException {
@@ -167,10 +182,10 @@ public class DefController {
*
* @return
*/
- @Operation(summary = "查询流程图")
+ @Operation(summary = "查询流程图 @author kaiyun")
@GetMapping("/chartDef/{definitionId}")
public ResponseDTO chartDef(@PathVariable("definitionId") Long definitionId) {
- return ResponseDTO.ok(chartService.chartDef(definitionId));
+ return ResponseDTO.ok("");
}
/**
@@ -179,10 +194,10 @@ public class DefController {
* @param instanceId
* @return
*/
- @Operation(summary = "查询流程图")
+ @Operation(summary = "查询流程图 @author kaiyun")
@GetMapping("/flowChart/{instanceId}")
public ResponseDTO flowChart(@PathVariable("instanceId") Long instanceId) throws IOException {
- return ResponseDTO.ok(chartService.chartIns(instanceId));
+ return ResponseDTO.ok("");
}
/**
@@ -191,7 +206,7 @@ public class DefController {
* @param definitionId
* @return
*/
- @Operation(summary = "激活流程")
+ @Operation(summary = "激活流程 @author kaiyun")
@GetMapping("/active/{definitionId}")
public ResponseDTO active(@PathVariable("definitionId") Long definitionId) {
return ResponseDTO.ok(defService.active(definitionId));
@@ -203,7 +218,7 @@ public class DefController {
* @param definitionId
* @return
*/
- @Operation(summary = "挂起流程")
+ @Operation(summary = "挂起流程 @author kaiyun")
@GetMapping("/unActive/{definitionId}")
public ResponseDTO unActive(@PathVariable("definitionId") Long definitionId) {
return ResponseDTO.ok(defService.unActive(definitionId));
diff --git a/smart-flow-api/sa-base/pom.xml b/smart-flow-api/sa-base/pom.xml
index 9b78325..71a1f77 100644
--- a/smart-flow-api/sa-base/pom.xml
+++ b/smart-flow-api/sa-base/pom.xml
@@ -37,6 +37,7 @@
+
org.springframework.boot
spring-boot-starter-web
@@ -85,7 +86,10 @@
com.mysql
mysql-connector-j
-
+
+ cn.com.kingbase
+ kingbase8
+
com.github.ben-manes.caffeine
caffeine
@@ -115,6 +119,25 @@
com.baomidou
mybatis-plus-spring-boot3-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-logging
+
+
+
+
+
+
+ com.baomidou
+ mybatis-plus-extension
+ ${mybatis-plus.version}
+
+
+
+
+ org.mybatis
+ mybatis
@@ -242,10 +265,7 @@
poi-scratchpad
-
- org.apache.poi
- ooxml-schemas
-
+
com.fasterxml.jackson.datatype
@@ -287,11 +307,7 @@
org.apache.tika
tika-core
-
-
- cn.com.kingbase
- kingbase8
-
+
diff --git a/smart-flow-web/src/router/flow/flow.js b/smart-flow-web/src/router/flow/flow.js
index 3531dd5..4f165f4 100644
--- a/smart-flow-web/src/router/flow/flow.js
+++ b/smart-flow-web/src/router/flow/flow.js
@@ -1,17 +1,17 @@
import SmartLayout from '/@/layout/index.vue';
export const flowRouters = [
- {
- path: '/flow/flow-design',
- component: SmartLayout,
- hidden: true,
- permissions: ['flow:definition:design'],
- children: [
- {
- path: 'index/:id(\\d+)',
- component: () => import('/@/views/flow/definition/warm-flow.vue'),
- name: 'Design',
- meta: { title: '流程设计', activeMenu: '/flow/definition' }
- }
- ]
- },
- ]
\ No newline at end of file
+ {
+ path: '/flow/flow-design',
+ component: SmartLayout,
+ hidden: true,
+ permissions: ['flow:definition:design'],
+ children: [
+ {
+ path: 'index/:id',
+ component: () => import('/@/views/flow/definition/warm-flow.vue'),
+ name: 'Design',
+ meta: { title: '流程设计', activeMenu: '/flow/definition' }
+ }
+ ]
+ },
+]
\ No newline at end of file
diff --git a/smart-flow-web/src/views/flow/definition/definition-form.vue b/smart-flow-web/src/views/flow/definition/definition-form.vue
index 6f76776..4f5fa93 100644
--- a/smart-flow-web/src/views/flow/definition/definition-form.vue
+++ b/smart-flow-web/src/views/flow/definition/definition-form.vue
@@ -1,262 +1,370 @@
-
-
-
-
-
-
-
+
-
+
+
-
+
+
+
+
+ 经典模型
+ 仿钉钉模型
+ 切换后重置节点,保存后不支持修改!
+
+
+
+
-
+
+
+
+
+
+
+
+ 否
+
+
+
+
+
+
+
+ 是
+
+
+
+
+
+
+
+
+
+
-
-
- 表单路径
-
-
-
-
-
-
-
-
-
-
-
-
-
- 开始
- 分派
- 完成
- 创建
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ 开始
+ 分派
+ 完成
+ 创建
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
- 增加行
-
-
-
+
+
+ 增加行
+
+
-
-
- 取消
- 保存
-
-
+
+
+
+
-
+
+
\ No newline at end of file
diff --git a/smart-flow-web/src/views/flow/definition/definition-list.vue b/smart-flow-web/src/views/flow/definition/definition-list.vue
index 5d16800..c247757 100644
--- a/smart-flow-web/src/views/flow/definition/definition-list.vue
+++ b/smart-flow-web/src/views/flow/definition/definition-list.vue
@@ -218,6 +218,13 @@
import {useRouter} from "vue-router";
import {useUserStore} from "/@/store/modules/system/user.js";
+ // ---------------------------- 添加/修改 ----------------------------
+ const formRef = ref();
+
+ function showForm(data) {
+ formRef.value.show(data);
+ }
+
// ---------------------------- 表格列 ----------------------------
const columns = ref([
@@ -318,14 +325,7 @@
onMounted(queryData);
- // ---------------------------- 添加/修改 ----------------------------
- const formRef = ref();
-
- function showForm(data) {
- formRef.value.show(data);
- }
-
- // 响应式数据
+ // ---------------------------- 导入相关 ----------------------------
const upload = reactive({
open: false,
isUploading: false,
@@ -374,7 +374,7 @@
/** 流程设计按钮操作 */
function handleDesign(id, isPublish) {
const params = { disabled: isPublish === 1, pageNum: queryForm.pageNum };
- router.push({ path: "/flow/flow-design/index/" + id, query: params });
+ router.push({ name: "Design", params: { id: id.toString() }, query: params });
}
/** 发布按钮操作 */
@@ -588,4 +588,4 @@
flowChart.value = false;
};
-
+
\ No newline at end of file
diff --git a/smart-flow-web/src/views/flow/definition/warm-flow.vue b/smart-flow-web/src/views/flow/definition/warm-flow.vue
index b34bd1c..b2715f0 100644
--- a/smart-flow-web/src/views/flow/definition/warm-flow.vue
+++ b/smart-flow-web/src/views/flow/definition/warm-flow.vue
@@ -10,7 +10,12 @@ import {useUserStore} from "/@/store/modules/system/user.js";
const { proxy } = getCurrentInstance();
import {getCurrentInstance, onMounted, onUnmounted, ref} from 'vue';
-const iframeUrl = ref(import.meta.env.VITE_APP_API_URL + `/warm-flow-ui/index.html?id=${proxy.$route.params.id}&disabled=${proxy.$route.query.disabled}&Authorization=Bearer ` + useUserStore().getToken);
+const routeId = proxy.$route.params.id;
+const isNew = routeId === 'new';
+const iframeUrl = ref(isNew
+ ? import.meta.env.VITE_APP_API_URL + `/warm-flow-ui/index.html?disabled=false&Authorization=Bearer ` + useUserStore().getToken
+ : import.meta.env.VITE_APP_API_URL + `/warm-flow-ui/index.html?id=${routeId}&disabled=false&Authorization=Bearer ` + useUserStore().getToken
+);
onMounted(() => {
window.addEventListener("message", handleMessage);
@@ -40,4 +45,4 @@ function close() {
width: 100%;
height: calc(100vh - 84px);
}
-
+
\ No newline at end of file