Commit 71b86e620783f1b618bd82c00d594506e7e43d93
1 parent
267435c9
feat: 完善UserTask审批签名
Showing
7 changed files
with
25 additions
and
2 deletions
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java
| ... | ... | @@ -54,6 +54,7 @@ public interface ErrorCodeConstants { |
| 54 | 54 | ErrorCode TASK_TRANSFER_FAIL_USER_REPEAT = new ErrorCode(1_009_005_013, "任务转办失败,转办人和当前审批人为同一人"); |
| 55 | 55 | ErrorCode TASK_TRANSFER_FAIL_USER_NOT_EXISTS = new ErrorCode(1_009_005_014, "任务转办失败,转办人不存在"); |
| 56 | 56 | ErrorCode TASK_CREATE_FAIL_NO_CANDIDATE_USER = new ErrorCode(1_009_006_003, "操作失败,原因:找不到任务的审批人!"); |
| 57 | + ErrorCode TASK_SIGNATURE_NOT_EXISTS = new ErrorCode(1_009_005_015, "签名不能为空!"); | |
| 57 | 58 | |
| 58 | 59 | // ========== 动态表单模块 1-009-010-000 ========== |
| 59 | 60 | ErrorCode FORM_NOT_EXISTS = new ErrorCode(1_009_010_000, "动态表单不存在"); | ... | ... |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmApprovalDetailRespVO.java
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskApproveReqVO.java
| ... | ... | @@ -18,6 +18,9 @@ public class BpmTaskApproveReqVO { |
| 18 | 18 | @NotEmpty(message = "审批意见不能为空") |
| 19 | 19 | private String reason; |
| 20 | 20 | |
| 21 | + @Schema(description = "签名", example = "http://xxx") | |
| 22 | + private String sign; | |
| 23 | + | |
| 21 | 24 | @Schema(description = "变量实例(动态表单)", requiredMode = Schema.RequiredMode.REQUIRED) |
| 22 | 25 | private Map<String, Object> variables; |
| 23 | 26 | ... | ... |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/task/BpmProcessInstanceConvert.java
| ... | ... | @@ -186,7 +186,8 @@ public interface BpmProcessInstanceConvert { |
| 186 | 186 | return null; |
| 187 | 187 | } |
| 188 | 188 | return BeanUtils.toBean(task, BpmApprovalDetailRespVO.ActivityNodeTask.class) |
| 189 | - .setStatus(FlowableUtils.getTaskStatus(task)).setReason(FlowableUtils.getTaskReason(task)); | |
| 189 | + .setStatus(FlowableUtils.getTaskStatus(task)).setReason(FlowableUtils.getTaskReason(task)) | |
| 190 | + .setSign(FlowableUtils.getTaskSign(task)); | |
| 190 | 191 | } |
| 191 | 192 | |
| 192 | 193 | default Set<Long> parseUserIds(HistoricProcessInstance processInstance, | ... | ... |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/enums/BpmnVariableConstants.java
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/FlowableUtils.java
| ... | ... | @@ -213,6 +213,10 @@ public class FlowableUtils { |
| 213 | 213 | return (String) task.getTaskLocalVariables().get(BpmnVariableConstants.TASK_VARIABLE_REASON); |
| 214 | 214 | } |
| 215 | 215 | |
| 216 | + public static String getTaskSign(TaskInfo task) { | |
| 217 | + return (String) task.getTaskLocalVariables().get(BpmnVariableConstants.TASK_VARIABLE_SIGN); | |
| 218 | + } | |
| 219 | + | |
| 216 | 220 | /** |
| 217 | 221 | * 获得任务的表单 |
| 218 | 222 | * | ... | ... |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java
| ... | ... | @@ -482,6 +482,12 @@ public class BpmTaskServiceImpl implements BpmTaskService { |
| 482 | 482 | if (instance == null) { |
| 483 | 483 | throw exception(PROCESS_INSTANCE_NOT_EXISTS); |
| 484 | 484 | } |
| 485 | + // 1.3 校验签名 | |
| 486 | + BpmnModel bpmnModel = modelService.getBpmnModelByDefinitionId(task.getProcessDefinitionId()); | |
| 487 | + Boolean signEnable = parseSignEnable(bpmnModel, task.getTaskDefinitionKey()); | |
| 488 | + if (signEnable && StrUtil.isEmpty(reqVO.getSign())) { | |
| 489 | + throw exception(TASK_SIGNATURE_NOT_EXISTS); | |
| 490 | + } | |
| 485 | 491 | |
| 486 | 492 | // 情况一:被委派的任务,不调用 complete 去完成任务 |
| 487 | 493 | if (DelegationState.PENDING.equals(task.getDelegationState())) { |
| ... | ... | @@ -496,8 +502,11 @@ public class BpmTaskServiceImpl implements BpmTaskService { |
| 496 | 502 | } |
| 497 | 503 | |
| 498 | 504 | // 情况三:审批普通的任务。大多数情况下,都是这样 |
| 499 | - // 2.1 更新 task 状态、原因 | |
| 505 | + // 2.1 更新 task 状态、原因、签字 | |
| 500 | 506 | updateTaskStatusAndReason(task.getId(), BpmTaskStatusEnum.APPROVE.getStatus(), reqVO.getReason()); |
| 507 | + if (signEnable) { | |
| 508 | + taskService.setVariableLocal(task.getId(), BpmnVariableConstants.TASK_VARIABLE_SIGN, reqVO.getSign()); | |
| 509 | + } | |
| 501 | 510 | // 2.2 添加评论 |
| 502 | 511 | taskService.addComment(task.getId(), task.getProcessInstanceId(), BpmCommentTypeEnum.APPROVE.getType(), |
| 503 | 512 | BpmCommentTypeEnum.APPROVE.formatComment(reqVO.getReason())); | ... | ... |