feat:增加分工会临时报销人审批流程

This commit is contained in:
2026-09-11 15:36:54 +08:00
parent cba3add65f
commit 26db19198d
2 changed files with 940 additions and 1 deletions
@@ -6,6 +6,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.page.Pagination;
@@ -160,7 +161,9 @@ public class ActivityReimbursementApplyController {
args.set(FlowConst.FORM_DATA, activityReimbursementInfo);
args.set("outlayManageSource", activityReimbursementInfo.getOutlayManageSource());
args.set("actualMoney", activityReimbursementInfo.getActualMoney());
args.set("next", activityReimbursementInfo.getReimbursementIdentity());
// 临时报销人通过流程图中的“分工会代报销”独立分支进入财务审核,保留表单的分工会身份。
args.set("next", AuthUtil.hasRole(RoleConstant.UNION_TEMP_REIMBURSEMENT_APPLICANT.name())
? "unionTemp" : activityReimbursementInfo.getReimbursementIdentity());
args.set("clubId",activityReimbursementInfo.getClubId());
ProcessInstance instance = flowEngine.startProcessInstanceByKey("HDBX", activityReimbursementInfo.getId(), SecurityUtil.getUserId(), args);
@@ -204,6 +207,13 @@ public class ActivityReimbursementApplyController {
Dict dict = Dict.create();
dict.set(FlowConst.PROCESS_TASK_ID_KEY, taskId);
dict.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.RE_APPLY.getCode());
if (AuthUtil.hasRole(RoleConstant.UNION_TEMP_REIMBURSEMENT_APPLICANT.name())) {
ProcessTask processTask = flowEngine.processTaskService().getById(taskId);
ProcessInstance processInstance = flowEngine.processInstanceService().getById(processTask.getProcessInstanceId());
String originalNext = JSONUtil.parseObj(processInstance.getVariable()).getStr("next");
// 新申请重提沿用独立分支;旧实例仍绑定旧定义,继续使用其已有的财务分支。
dict.set("next", Objects.equals(originalNext, "unionTemp") ? "unionTemp" : "school");
}
flowCommonService.executeTask(dict);
return Result.success();
}
+929
View File
@@ -0,0 +1,929 @@
{
"name": "HDBX",
"category": "3",
"displayName": "费用报销管理",
"instanceUrl": "/platform/activityReimbursement/apply",
"h5InstanceUrl": "/platform/activityReimbursement/apply/h5",
"nodes": [
{
"id": "686d23b6-707f-40d4-ab7c-1987616e4ae0",
"type": "snaker:start",
"x": 220,
"y": 240,
"properties": {
"postInterceptors": ""
},
"text": {
"x": 220,
"y": 280,
"value": "开始"
}
},
{
"id": "startTask",
"type": "snaker:task",
"x": 360,
"y": 240,
"properties": {
"form": "/platform/activityReimbursement/mine",
"h5form": "/platform/activityReimbursement/mine/h5",
"assignee": "initiator",
"assigneeMode": "initiator",
"assigneeText": "流程发起人",
"buttonConfig": [
{
"value": 0,
"visible": true,
"disabled": false,
"originalText": "提交"
}
],
"postInterceptors": ""
},
"text": {
"x": 360,
"y": 240,
"value": "提交申请"
}
},
{
"id": "5afcf810-7a8b-4896-9aa7-c99995e0856b",
"type": "snaker:task",
"x": 700,
"y": 240,
"properties": {
"form": "/platform/activityReimbursement/clubPrincipal",
"h5form": "/platform/activityReimbursement/clubPrincipal/h5",
"assignee": "",
"assigneeMode": "manual",
"assigneeText": "",
"buttonConfig": [
{
"value": 0,
"originalText": "发起申请"
},
{
"theme": "primary",
"value": 1,
"visible": true,
"originalText": "同意申请"
},
{
"theme": "danger",
"value": 2,
"visible": true,
"originalText": "拒绝申请"
},
{
"value": 3,
"originalText": "退回上一步"
},
{
"value": 4,
"originalText": "跳转"
},
{
"value": 5,
"originalText": "重新提交"
},
{
"theme": "danger",
"value": 6,
"visible": true,
"originalText": "退回发起人"
},
{
"value": 20,
"originalText": "会签拒绝申请"
}
],
"assignmentHandler": "com.budwk.app.flow.handler.FlowClubPresidentByArgsAssignmentHandler"
},
"text": {
"x": 700,
"y": 240,
"value": "协会负责人审核"
}
},
{
"id": "182768cf-ff70-4b59-8f5d-8523831380e8",
"type": "snaker:decision",
"x": 520,
"y": 240,
"properties": {}
},
{
"id": "1e4cc473-beae-427d-b9dc-c1c4d0eb07c8",
"type": "snaker:task",
"x": 700,
"y": 100,
"properties": {
"form": "/platform/activityReimbursement/branchUnion",
"h5form": "/platform/activityReimbursement/branchUnion/h5",
"assignee": "",
"assigneeMode": "manual",
"assigneeText": "",
"buttonConfig": [
{
"value": 0,
"originalText": "发起申请"
},
{
"theme": "primary",
"value": 1,
"visible": true,
"originalText": "同意申请"
},
{
"theme": "danger",
"value": 2,
"visible": true,
"originalText": "拒绝申请"
},
{
"value": 3,
"originalText": "退回上一步"
},
{
"value": 4,
"originalText": "跳转"
},
{
"value": 5,
"originalText": "重新提交"
},
{
"theme": "danger",
"value": 6,
"visible": true,
"originalText": "退回发起人"
},
{
"value": 20,
"originalText": "会签拒绝申请"
}
],
"assignmentHandler": "com.budwk.app.flow.handler.FlowFghzxAssignmentHandler"
},
"text": {
"x": 700,
"y": 100,
"value": "分工会审核"
}
},
{
"id": "6dd2e8b3-fd0d-4b35-bb2a-1eef227cba96",
"type": "snaker:task",
"x": 1120,
"y": 240,
"properties": {
"form": "/platform/activityReimbursement/schoolPrincipal",
"h5form": "/platform/activityReimbursement/schoolPrincipal/h5",
"assignee": "2c8b9143b5cd491ba49dd4b52a844b10",
"assigneeMode": "select",
"assigneeText": "陈曦",
"buttonConfig": [
{
"value": 0,
"originalText": "发起申请"
},
{
"theme": "primary",
"value": 1,
"visible": true,
"originalText": "同意申请"
},
{
"theme": "danger",
"value": 2,
"visible": true,
"originalText": "拒绝申请"
},
{
"theme": "danger",
"value": 3,
"visible": true,
"originalText": "退回上一步"
},
{
"value": 4,
"originalText": "跳转"
},
{
"value": 5,
"originalText": "重新提交"
},
{
"theme": "danger",
"value": 6,
"visible": true,
"originalText": "退回发起人"
},
{
"value": 20,
"originalText": "会签拒绝申请"
}
]
},
"text": {
"x": 1120,
"y": 240,
"value": "校工会预审"
}
},
{
"id": "47bfdf53-288c-4352-a403-0653483b54eb",
"type": "snaker:task",
"x": 1540,
"y": 240,
"properties": {
"form": "/platform/activityReimbursement/schoolUnion",
"h5form": "/platform/activityReimbursement/schoolUnion/h5",
"assignee": "fd76781c09c04147b5170179be127240",
"assigneeMode": "select",
"assigneeText": "张红萍",
"buttonConfig": [
{
"value": 0,
"originalText": "发起申请"
},
{
"theme": "primary",
"value": 1,
"visible": true,
"originalText": "同意申请"
},
{
"theme": "danger",
"value": 2,
"visible": true,
"originalText": "拒绝申请"
},
{
"theme": "danger",
"value": 3,
"visible": true,
"originalText": "退回上一步"
},
{
"value": 4,
"originalText": "跳转"
},
{
"value": 5,
"originalText": "重新提交"
},
{
"theme": "danger",
"value": 6,
"visible": true,
"originalText": "退回发起人"
},
{
"value": 20,
"originalText": "会签拒绝申请"
}
]
},
"text": {
"x": 1540,
"y": 240,
"value": "校工会主席审核"
}
},
{
"id": "776311f1-b016-4090-9112-1b4a11fb0d4a",
"type": "snaker:end",
"x": 1920,
"y": 240,
"properties": {},
"text": {
"x": 1920,
"y": 280,
"value": "结束"
}
},
{
"id": "ba496ac7-abb3-4e6d-8c8e-212863a0d6ee",
"type": "snaker:task",
"x": 900,
"y": 240,
"properties": {
"form": "/platform/activityReimbursement/schoolFinance",
"h5form": "/platform/activityReimbursement/schoolFinance/h5",
"assignee": "5b8880eeee384eb4be20084735aac6e6",
"assigneeMode": "select",
"assigneeText": "丁彩华",
"buttonConfig": [
{
"value": 0,
"originalText": "发起申请"
},
{
"value": 1,
"originalText": "同意申请"
},
{
"value": 2,
"originalText": "拒绝申请"
},
{
"value": 3,
"originalText": "退回上一步"
},
{
"value": 4,
"originalText": "跳转"
},
{
"value": 5,
"originalText": "重新提交"
},
{
"value": 6,
"originalText": "退回发起人"
},
{
"value": 20,
"originalText": "会签拒绝申请"
}
]
},
"text": {
"x": 900,
"y": 240,
"value": "校工会财务审核"
}
},
{
"id": "f9b8379f-f348-4985-ba58-b6ba28deb9af",
"type": "snaker:task",
"x": 1320,
"y": 240,
"properties": {
"form": "/platform/activityReimbursement/deputySchoolUnion",
"h5form": "/platform/activityReimbursement/deputySchoolUnion/h5",
"assignee": "b472656183e6408697b8ada687cad442",
"assigneeMode": "select",
"assigneeText": "张蕴梅",
"buttonConfig": [
{
"value": 0,
"originalText": "发起申请"
},
{
"value": 1,
"originalText": "同意申请"
},
{
"value": 2,
"originalText": "拒绝申请"
},
{
"value": 3,
"originalText": "退回上一步"
},
{
"value": 4,
"originalText": "跳转"
},
{
"value": 5,
"originalText": "重新提交"
},
{
"value": 6,
"originalText": "退回发起人"
},
{
"value": 20,
"originalText": "会签拒绝申请"
}
]
},
"text": {
"x": 1320,
"y": 240,
"value": "校工会副主席审核"
}
},
{
"id": "409e8fad-6bd5-485a-8b3e-e1d58688e05a",
"type": "snaker:decision",
"x": 1320,
"y": 420,
"properties": {}
},
{
"id": "e283f33f-4ac7-4c66-9b16-e0653e8dc452",
"type": "snaker:task",
"x": 1760,
"y": 240,
"properties": {
"form": "/platform/activityReimbursement/cashier",
"h5form": "/platform/activityReimbursement/cashier/h5",
"assignee": "762206d35f7041178e66956d859b823d",
"assigneeMode": "select",
"assigneeText": "嵇蓉静",
"buttonConfig": [
{
"value": 0,
"originalText": "发起申请"
},
{
"value": 1,
"originalText": "同意申请"
},
{
"value": 2,
"originalText": "拒绝申请"
},
{
"value": 3,
"originalText": "退回上一步"
},
{
"value": 4,
"originalText": "跳转"
},
{
"value": 5,
"originalText": "重新提交"
},
{
"value": 6,
"originalText": "退回发起人"
},
{
"value": 20,
"originalText": "会签拒绝申请"
}
]
},
"text": {
"x": 1760,
"y": 240,
"value": "出纳支付"
}
}
],
"edges": [
{
"id": "7eab997d-639c-49a8-bb1a-f6a0a9983eb7",
"type": "snaker:transition",
"sourceNodeId": "182768cf-ff70-4b59-8f5d-8523831380e8",
"targetNodeId": "ba496ac7-abb3-4e6d-8c8e-212863a0d6ee",
"startPoint": {
"x": 508,
"y": 253
},
"endPoint": {
"x": 940,
"y": 280
},
"properties": {
"expr": "{next=='unionTemp'}"
},
"text": {
"x": 700,
"y": 480,
"value": "分工会代报销"
},
"pointsList": [
{
"x": 508,
"y": 253
},
{
"x": 460,
"y": 253
},
{
"x": 460,
"y": 480
},
{
"x": 940,
"y": 480
},
{
"x": 940,
"y": 280
}
]
},
{
"id": "876385a3-18eb-4022-864b-068053ec9e06",
"type": "snaker:transition",
"sourceNodeId": "182768cf-ff70-4b59-8f5d-8523831380e8",
"targetNodeId": "1e4cc473-beae-427d-b9dc-c1c4d0eb07c8",
"startPoint": {
"x": 520,
"y": 215
},
"endPoint": {
"x": 640,
"y": 100
},
"properties": {
"expr": "{next=='union'}"
},
"text": {
"x": 520,
"y": 157.5,
"value": "分工会"
},
"pointsList": [
{
"x": 520,
"y": 215
},
{
"x": 520,
"y": 100
},
{
"x": 640,
"y": 100
}
]
},
{
"id": "add1a8a8-1bb5-4bb3-adf7-ef4868d4972c",
"type": "snaker:transition",
"sourceNodeId": "182768cf-ff70-4b59-8f5d-8523831380e8",
"targetNodeId": "5afcf810-7a8b-4896-9aa7-c99995e0856b",
"startPoint": {
"x": 545,
"y": 240
},
"endPoint": {
"x": 640,
"y": 240
},
"properties": {
"expr": "{next=='club'}"
},
"text": {
"x": 592.5,
"y": 240,
"value": "协会"
},
"pointsList": [
{
"x": 545,
"y": 240
},
{
"x": 640,
"y": 240
}
]
},
{
"id": "4c288069-d042-4070-9afd-4902baf148b0",
"type": "snaker:transition",
"sourceNodeId": "startTask",
"targetNodeId": "182768cf-ff70-4b59-8f5d-8523831380e8",
"startPoint": {
"x": 420,
"y": 240
},
"endPoint": {
"x": 495,
"y": 240
},
"properties": {},
"pointsList": [
{
"x": 420,
"y": 240
},
{
"x": 495,
"y": 240
}
]
},
{
"id": "de8ae26f-8660-4cd2-9507-ef573bdbef6c",
"type": "snaker:transition",
"sourceNodeId": "686d23b6-707f-40d4-ab7c-1987616e4ae0",
"targetNodeId": "startTask",
"startPoint": {
"x": 238,
"y": 240
},
"endPoint": {
"x": 300,
"y": 240
},
"properties": {},
"pointsList": [
{
"x": 238,
"y": 240
},
{
"x": 300,
"y": 240
}
]
},
{
"id": "b36a46d0-05ff-486c-9cbf-b6f9e4e50217",
"type": "snaker:transition",
"sourceNodeId": "182768cf-ff70-4b59-8f5d-8523831380e8",
"targetNodeId": "ba496ac7-abb3-4e6d-8c8e-212863a0d6ee",
"startPoint": {
"x": 519,
"y": 265
},
"endPoint": {
"x": 902,
"y": 280
},
"properties": {
"expr": "{next=='school'}"
},
"text": {
"x": 710.5,
"y": 376,
"value": "校工会"
},
"pointsList": [
{
"x": 519,
"y": 265
},
{
"x": 519,
"y": 376
},
{
"x": 902,
"y": 376
},
{
"x": 902,
"y": 280
}
]
},
{
"id": "bfb971df-c94b-46f5-9dc2-e0e0624b1f0f",
"type": "snaker:transition",
"sourceNodeId": "ba496ac7-abb3-4e6d-8c8e-212863a0d6ee",
"targetNodeId": "6dd2e8b3-fd0d-4b35-bb2a-1eef227cba96",
"startPoint": {
"x": 960,
"y": 240
},
"endPoint": {
"x": 1060,
"y": 240
},
"properties": {},
"pointsList": [
{
"x": 960,
"y": 240
},
{
"x": 1060,
"y": 240
}
]
},
{
"id": "aae8eac1-3613-49f9-8bdf-5e054de9a78d",
"type": "snaker:transition",
"sourceNodeId": "5afcf810-7a8b-4896-9aa7-c99995e0856b",
"targetNodeId": "ba496ac7-abb3-4e6d-8c8e-212863a0d6ee",
"startPoint": {
"x": 760,
"y": 240
},
"endPoint": {
"x": 840,
"y": 240
},
"properties": {},
"pointsList": [
{
"x": 760,
"y": 240
},
{
"x": 840,
"y": 240
}
]
},
{
"id": "ae58c15a-1a76-4201-9633-cfbdb47b3b2f",
"type": "snaker:transition",
"sourceNodeId": "1e4cc473-beae-427d-b9dc-c1c4d0eb07c8",
"targetNodeId": "ba496ac7-abb3-4e6d-8c8e-212863a0d6ee",
"startPoint": {
"x": 760,
"y": 100
},
"endPoint": {
"x": 900,
"y": 200
},
"properties": {},
"pointsList": [
{
"x": 760,
"y": 100
},
{
"x": 900,
"y": 100
},
{
"x": 900,
"y": 200
}
]
},
{
"id": "b3549e56-d9d4-4a40-ae41-f49f57b20fd4",
"type": "snaker:transition",
"sourceNodeId": "6dd2e8b3-fd0d-4b35-bb2a-1eef227cba96",
"targetNodeId": "f9b8379f-f348-4985-ba58-b6ba28deb9af",
"startPoint": {
"x": 1180,
"y": 240
},
"endPoint": {
"x": 1260,
"y": 240
},
"properties": {},
"pointsList": [
{
"x": 1180,
"y": 240
},
{
"x": 1260,
"y": 240
}
]
},
{
"id": "809cebae-3520-42b9-b781-a4e99f8e8493",
"type": "snaker:transition",
"sourceNodeId": "f9b8379f-f348-4985-ba58-b6ba28deb9af",
"targetNodeId": "409e8fad-6bd5-485a-8b3e-e1d58688e05a",
"startPoint": {
"x": 1315,
"y": 280
},
"endPoint": {
"x": 1315,
"y": 395
},
"properties": {},
"pointsList": [
{
"x": 1315,
"y": 280
},
{
"x": 1315,
"y": 395
}
]
},
{
"id": "d6c1ad28-0a92-463d-b8eb-3566cb996748",
"type": "snaker:transition",
"sourceNodeId": "409e8fad-6bd5-485a-8b3e-e1d58688e05a",
"targetNodeId": "47bfdf53-288c-4352-a403-0653483b54eb",
"startPoint": {
"x": 1345,
"y": 420
},
"endPoint": {
"x": 1574,
"y": 280
},
"properties": {
"expr": "{actualMoney>=10000}"
},
"text": {
"x": 1459.5,
"y": 420,
"value": "金额超过一万"
},
"pointsList": [
{
"x": 1345,
"y": 420
},
{
"x": 1574,
"y": 420
},
{
"x": 1574,
"y": 280
}
]
},
{
"id": "4749adda-4a3a-4fd4-a655-94007ce9eec6",
"type": "snaker:transition",
"sourceNodeId": "47bfdf53-288c-4352-a403-0653483b54eb",
"targetNodeId": "e283f33f-4ac7-4c66-9b16-e0653e8dc452",
"startPoint": {
"x": 1600,
"y": 240
},
"endPoint": {
"x": 1700,
"y": 240
},
"properties": {},
"pointsList": [
{
"x": 1600,
"y": 240
},
{
"x": 1700,
"y": 240
}
]
},
{
"id": "c68c6814-bd8f-4f4d-9dcb-0b79bf9af5c1",
"type": "snaker:transition",
"sourceNodeId": "e283f33f-4ac7-4c66-9b16-e0653e8dc452",
"targetNodeId": "776311f1-b016-4090-9112-1b4a11fb0d4a",
"startPoint": {
"x": 1820,
"y": 240
},
"endPoint": {
"x": 1902,
"y": 240
},
"properties": {},
"pointsList": [
{
"x": 1820,
"y": 240
},
{
"x": 1902,
"y": 240
}
]
},
{
"id": "218593d1-f31b-4c05-bf21-6da6110dc9dd",
"type": "snaker:transition",
"sourceNodeId": "409e8fad-6bd5-485a-8b3e-e1d58688e05a",
"targetNodeId": "e283f33f-4ac7-4c66-9b16-e0653e8dc452",
"startPoint": {
"x": 1320,
"y": 445
},
"endPoint": {
"x": 1760,
"y": 280
},
"properties": {
"expr": "{actualMoney<10000}"
},
"text": {
"x": 1540,
"y": 541,
"value": "金额没有超过一万"
},
"pointsList": [
{
"x": 1320,
"y": 445
},
{
"x": 1320,
"y": 541
},
{
"x": 1760,
"y": 541
},
{
"x": 1760,
"y": 280
}
]
}
]
}