Commit 7bb171512a35522ae060e4b0a313a55ca2be8cef
1 parent
986f9533
📖 BPM:code review 抄送逻辑
Showing
13 changed files
with
87 additions
and
253 deletions
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceCopyController.java
| @@ -17,17 +17,15 @@ import io.swagger.v3.oas.annotations.Operation; | @@ -17,17 +17,15 @@ import io.swagger.v3.oas.annotations.Operation; | ||
| 17 | import io.swagger.v3.oas.annotations.tags.Tag; | 17 | import io.swagger.v3.oas.annotations.tags.Tag; |
| 18 | import jakarta.annotation.Resource; | 18 | import jakarta.annotation.Resource; |
| 19 | import jakarta.validation.Valid; | 19 | import jakarta.validation.Valid; |
| 20 | -import org.springframework.context.annotation.Lazy; | ||
| 21 | import org.springframework.security.access.prepost.PreAuthorize; | 20 | import org.springframework.security.access.prepost.PreAuthorize; |
| 22 | import org.springframework.validation.annotation.Validated; | 21 | import org.springframework.validation.annotation.Validated; |
| 23 | import org.springframework.web.bind.annotation.*; | 22 | import org.springframework.web.bind.annotation.*; |
| 24 | 23 | ||
| 25 | -import java.util.HashSet; | ||
| 26 | import java.util.Map; | 24 | import java.util.Map; |
| 27 | -import java.util.Set; | ||
| 28 | -import java.util.stream.Collectors; | 25 | +import java.util.stream.Stream; |
| 29 | 26 | ||
| 30 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | 27 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 28 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertListByFlatMap; | ||
| 31 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | 29 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| 32 | import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; | 30 | import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
| 33 | 31 | ||
| @@ -41,6 +39,7 @@ public class BpmProcessInstanceCopyController { | @@ -41,6 +39,7 @@ public class BpmProcessInstanceCopyController { | ||
| 41 | private BpmProcessInstanceCopyService processInstanceCopyService; | 39 | private BpmProcessInstanceCopyService processInstanceCopyService; |
| 42 | @Resource | 40 | @Resource |
| 43 | private BpmProcessInstanceService bpmProcessInstanceService; | 41 | private BpmProcessInstanceService bpmProcessInstanceService; |
| 42 | + | ||
| 44 | @Resource | 43 | @Resource |
| 45 | private AdminUserApi adminUserApi; | 44 | private AdminUserApi adminUserApi; |
| 46 | 45 | ||
| @@ -50,8 +49,9 @@ public class BpmProcessInstanceCopyController { | @@ -50,8 +49,9 @@ public class BpmProcessInstanceCopyController { | ||
| 50 | @PostMapping("/create") | 49 | @PostMapping("/create") |
| 51 | @Operation(summary = "抄送流程") | 50 | @Operation(summary = "抄送流程") |
| 52 | @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:create')") | 51 | @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:create')") |
| 53 | - public CommonResult<Void> createProcessInstanceCC(@Valid @RequestBody BpmProcessInstanceCopyCreateReqVO createReqVO) { | ||
| 54 | - return success(processInstanceCopyService.createProcessInstanceCopy(getLoginUserId(), createReqVO)); | 52 | + public CommonResult<Boolean> createProcessInstanceCC(@Valid @RequestBody BpmProcessInstanceCopyCreateReqVO createReqVO) { |
| 53 | + processInstanceCopyService.createProcessInstanceCopy(getLoginUserId(), createReqVO); | ||
| 54 | + return success(true); | ||
| 55 | } | 55 | } |
| 56 | 56 | ||
| 57 | @GetMapping("/my-page") | 57 | @GetMapping("/my-page") |
| @@ -64,20 +64,14 @@ public class BpmProcessInstanceCopyController { | @@ -64,20 +64,14 @@ public class BpmProcessInstanceCopyController { | ||
| 64 | return success(new PageResult<>(pageResult.getTotal())); | 64 | return success(new PageResult<>(pageResult.getTotal())); |
| 65 | } | 65 | } |
| 66 | 66 | ||
| 67 | - Map<String, String> taskNameByTaskIds = bpmTaskService.getTaskNameByTaskIds(convertSet(pageResult.getList(), BpmProcessInstanceCopyDO::getTaskId)); | ||
| 68 | - Map<String, String> processInstanceNameByProcessInstanceIds = bpmTaskService.getProcessInstanceNameByProcessInstanceIds(convertSet(pageResult.getList(), BpmProcessInstanceCopyDO::getProcessInstanceId)); | ||
| 69 | - | ||
| 70 | - Set<Long/* userId */> userIds = new HashSet<>(); | ||
| 71 | - for (BpmProcessInstanceCopyDO doItem : pageResult.getList()) { | ||
| 72 | - userIds.add(doItem.getStartUserId()); | ||
| 73 | - Long userId = Long.valueOf(doItem.getCreator()); | ||
| 74 | - userIds.add(userId); | ||
| 75 | - } | ||
| 76 | - Map<Long, String> userMap = adminUserApi.getUserList(userIds).stream().collect(Collectors.toMap( | ||
| 77 | - AdminUserRespDTO::getId, AdminUserRespDTO::getNickname)); | ||
| 78 | - | ||
| 79 | - // 转换返回 | ||
| 80 | - return success(BpmProcessInstanceCopyConvert.INSTANCE.convertPage(pageResult, taskNameByTaskIds, processInstanceNameByProcessInstanceIds, userMap)); | 67 | + // 拼接返回 |
| 68 | + Map<String, String> taskNameMap = bpmTaskService.getTaskNameByTaskIds( | ||
| 69 | + convertSet(pageResult.getList(), BpmProcessInstanceCopyDO::getTaskId)); | ||
| 70 | + Map<String, String> processNameMap = bpmProcessInstanceService.getProcessInstanceNameMap( | ||
| 71 | + convertSet(pageResult.getList(), BpmProcessInstanceCopyDO::getProcessInstanceId)); | ||
| 72 | + Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertListByFlatMap(pageResult.getList(), | ||
| 73 | + copy -> Stream.of(copy.getStartUserId(), Long.parseLong(copy.getCreator())))); | ||
| 74 | + return success(BpmProcessInstanceCopyConvert.INSTANCE.convertPage(pageResult, taskNameMap, processNameMap, userMap)); | ||
| 81 | } | 75 | } |
| 82 | 76 | ||
| 83 | } | 77 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceCopyCreateReqVO.java
| 1 | package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance; | 1 | package cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.module.bpm.controller.admin.candidate.vo.BpmTaskCandidateRuleVO; | ||
| 4 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 5 | import jakarta.validation.constraints.NotBlank; | 4 | import jakarta.validation.constraints.NotBlank; |
| 6 | import jakarta.validation.constraints.NotEmpty; | 5 | import jakarta.validation.constraints.NotEmpty; |
| 7 | import lombok.Data; | 6 | import lombok.Data; |
| 8 | -import lombok.EqualsAndHashCode; | ||
| 9 | -import lombok.ToString; | ||
| 10 | 7 | ||
| 11 | @Schema(description = "管理后台 - 流程实例抄送的创建 Request VO") | 8 | @Schema(description = "管理后台 - 流程实例抄送的创建 Request VO") |
| 12 | @Data | 9 | @Data |
| 13 | -@EqualsAndHashCode(callSuper = true) | ||
| 14 | -@ToString(callSuper = true) | ||
| 15 | -public class BpmProcessInstanceCopyCreateReqVO extends BpmTaskCandidateRuleVO { | 10 | +public class BpmProcessInstanceCopyCreateReqVO { |
| 16 | 11 | ||
| 17 | @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | 12 | @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") |
| 18 | @NotEmpty(message = "任务编号不能为空") | 13 | @NotEmpty(message = "任务编号不能为空") |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceCopyPageItemRespVO.java
| @@ -12,7 +12,7 @@ public class BpmProcessInstanceCopyPageItemRespVO { | @@ -12,7 +12,7 @@ public class BpmProcessInstanceCopyPageItemRespVO { | ||
| 12 | @Schema(description = "抄送主键") | 12 | @Schema(description = "抄送主键") |
| 13 | private Long id; | 13 | private Long id; |
| 14 | 14 | ||
| 15 | - @Schema(description = "发起人Id") | 15 | + @Schema(description = "发起人 ID") |
| 16 | private Long startUserId; | 16 | private Long startUserId; |
| 17 | 17 | ||
| 18 | @Schema(description = "发起人别名") | 18 | @Schema(description = "发起人别名") |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmProcessInstanceCopyVO.java
| @@ -5,6 +5,7 @@ import lombok.Data; | @@ -5,6 +5,7 @@ import lombok.Data; | ||
| 5 | 5 | ||
| 6 | import java.time.LocalDateTime; | 6 | import java.time.LocalDateTime; |
| 7 | 7 | ||
| 8 | +// TODO @kyle:1)明确是 Req 还是 Resp;2)注释可以合并到 swagger 里;3)example 写一下,这样一些 mock 接口平台可以读取 example | ||
| 8 | /** | 9 | /** |
| 9 | * 流程抄送视图对象 | 10 | * 流程抄送视图对象 |
| 10 | */ | 11 | */ |
| @@ -60,4 +61,5 @@ public class BpmProcessInstanceCopyVO { | @@ -60,4 +61,5 @@ public class BpmProcessInstanceCopyVO { | ||
| 60 | 61 | ||
| 61 | @Schema(description = "抄送时间") | 62 | @Schema(description = "抄送时间") |
| 62 | private LocalDateTime createTime; | 63 | private LocalDateTime createTime; |
| 64 | + | ||
| 63 | } | 65 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/cc/BpmProcessInstanceCopyConvert.java
| @@ -4,8 +4,8 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; | @@ -4,8 +4,8 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 4 | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; | 4 | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; |
| 5 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | 5 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 6 | import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyPageItemRespVO; | 6 | import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyPageItemRespVO; |
| 7 | -import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmProcessInstanceCopyVO; | ||
| 8 | import cn.iocoder.yudao.module.bpm.dal.dataobject.cc.BpmProcessInstanceCopyDO; | 7 | import cn.iocoder.yudao.module.bpm.dal.dataobject.cc.BpmProcessInstanceCopyDO; |
| 8 | +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | ||
| 9 | import org.mapstruct.Mapper; | 9 | import org.mapstruct.Mapper; |
| 10 | import org.mapstruct.factory.Mappers; | 10 | import org.mapstruct.factory.Mappers; |
| 11 | 11 | ||
| @@ -22,22 +22,17 @@ public interface BpmProcessInstanceCopyConvert { | @@ -22,22 +22,17 @@ public interface BpmProcessInstanceCopyConvert { | ||
| 22 | 22 | ||
| 23 | BpmProcessInstanceCopyConvert INSTANCE = Mappers.getMapper(BpmProcessInstanceCopyConvert.class); | 23 | BpmProcessInstanceCopyConvert INSTANCE = Mappers.getMapper(BpmProcessInstanceCopyConvert.class); |
| 24 | 24 | ||
| 25 | - BpmProcessInstanceCopyVO convert(BpmProcessInstanceCopyDO bean); | ||
| 26 | - | ||
| 27 | - List<BpmProcessInstanceCopyPageItemRespVO> convertList(List<BpmProcessInstanceCopyDO> list); | ||
| 28 | - | ||
| 29 | - default PageResult<BpmProcessInstanceCopyPageItemRespVO> convertPage(PageResult<BpmProcessInstanceCopyDO> page | ||
| 30 | - , Map<String, String/* taskName */> taskMap | ||
| 31 | - , Map<String, String/* processInstaneName */> processInstaneMap | ||
| 32 | - , Map<Long, String/* userName */> userMap | ||
| 33 | - ) { | 25 | + default PageResult<BpmProcessInstanceCopyPageItemRespVO> convertPage(PageResult<BpmProcessInstanceCopyDO> page, |
| 26 | + Map<String, String> taskNameMap, | ||
| 27 | + Map<String, String> processInstaneNameMap, | ||
| 28 | + Map<Long, AdminUserRespDTO> userMap) { | ||
| 34 | List<BpmProcessInstanceCopyPageItemRespVO> list = BeanUtils.toBean(page.getList(), | 29 | List<BpmProcessInstanceCopyPageItemRespVO> list = BeanUtils.toBean(page.getList(), |
| 35 | BpmProcessInstanceCopyPageItemRespVO.class, | 30 | BpmProcessInstanceCopyPageItemRespVO.class, |
| 36 | copy -> { | 31 | copy -> { |
| 37 | - MapUtils.findAndThen(userMap, Long.valueOf(copy.getCreator()), copy::setCreatorNickname); | ||
| 38 | - MapUtils.findAndThen(userMap, copy.getStartUserId(), copy::setStartUserNickname); | ||
| 39 | - MapUtils.findAndThen(taskMap, copy.getTaskId(), copy::setTaskName); | ||
| 40 | - MapUtils.findAndThen(processInstaneMap, copy.getProcessInstanceId(), copy::setProcessInstanceName); | 32 | + MapUtils.findAndThen(userMap, Long.valueOf(copy.getCreator()), user -> user.setNickname(user.getNickname())); |
| 33 | + MapUtils.findAndThen(userMap, copy.getStartUserId(), user -> copy.setStartUserNickname(user.getNickname())); | ||
| 34 | + MapUtils.findAndThen(taskNameMap, copy.getTaskId(), copy::setTaskName); | ||
| 35 | + MapUtils.findAndThen(processInstaneNameMap, copy.getProcessInstanceId(), copy::setProcessInstanceName); | ||
| 41 | }); | 36 | }); |
| 42 | return new PageResult<>(list, page.getTotal()); | 37 | return new PageResult<>(list, page.getTotal()); |
| 43 | } | 38 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/cc/BpmProcessInstanceCopyDO.java
| @@ -28,40 +28,40 @@ public class BpmProcessInstanceCopyDO extends BaseDO { | @@ -28,40 +28,40 @@ public class BpmProcessInstanceCopyDO extends BaseDO { | ||
| 28 | 28 | ||
| 29 | /** | 29 | /** |
| 30 | * 发起人 Id | 30 | * 发起人 Id |
| 31 | - * <p> | 31 | + * |
| 32 | * 关联 system_users 的 id 属性 | 32 | * 关联 system_users 的 id 属性 |
| 33 | */ | 33 | */ |
| 34 | private Long startUserId; | 34 | private Long startUserId; |
| 35 | /** | 35 | /** |
| 36 | * 流程名 | 36 | * 流程名 |
| 37 | - * <p> | ||
| 38 | - * 冗余字段 | 37 | + * |
| 38 | + * 冗余 ProcessInstance 的 name 字段 | ||
| 39 | */ | 39 | */ |
| 40 | private String processInstanceName; | 40 | private String processInstanceName; |
| 41 | /** | 41 | /** |
| 42 | * 流程实例的编号 | 42 | * 流程实例的编号 |
| 43 | - * <p> | 43 | + * |
| 44 | * 关联 ProcessInstance 的 id 属性 | 44 | * 关联 ProcessInstance 的 id 属性 |
| 45 | */ | 45 | */ |
| 46 | private String processInstanceId; | 46 | private String processInstanceId; |
| 47 | 47 | ||
| 48 | /** | 48 | /** |
| 49 | * 任务主键 | 49 | * 任务主键 |
| 50 | - * <p> | ||
| 51 | - * 关联 task 的 id 属性 | 50 | + * |
| 51 | + * 关联 Task 的 id 属性 | ||
| 52 | */ | 52 | */ |
| 53 | private String taskId; | 53 | private String taskId; |
| 54 | 54 | ||
| 55 | /** | 55 | /** |
| 56 | * 任务名称 | 56 | * 任务名称 |
| 57 | - * <p> | ||
| 58 | - * 冗余字段 | 57 | + * |
| 58 | + * 冗余 Task 的 name 属性 | ||
| 59 | */ | 59 | */ |
| 60 | private String taskName; | 60 | private String taskName; |
| 61 | 61 | ||
| 62 | /** | 62 | /** |
| 63 | * 用户编号 | 63 | * 用户编号 |
| 64 | - * <p> | 64 | + * |
| 65 | * 关联 system_users 的 id 属性 | 65 | * 关联 system_users 的 id 属性 |
| 66 | */ | 66 | */ |
| 67 | private Long userId; | 67 | private Long userId; |
| @@ -73,8 +73,8 @@ public class BpmProcessInstanceCopyDO extends BaseDO { | @@ -73,8 +73,8 @@ public class BpmProcessInstanceCopyDO extends BaseDO { | ||
| 73 | 73 | ||
| 74 | /** | 74 | /** |
| 75 | * 流程分类 | 75 | * 流程分类 |
| 76 | - * <p> | ||
| 77 | - * 冗余字段 | 76 | + * |
| 77 | + * 冗余 ProcessInstance 的 category 字段 | ||
| 78 | */ | 78 | */ |
| 79 | private String category; | 79 | private String category; |
| 80 | 80 |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceService.java
| @@ -47,6 +47,17 @@ public interface BpmProcessInstanceService { | @@ -47,6 +47,17 @@ public interface BpmProcessInstanceService { | ||
| 47 | } | 47 | } |
| 48 | 48 | ||
| 49 | /** | 49 | /** |
| 50 | + * 获得流程实例名字 Map | ||
| 51 | + * | ||
| 52 | + * @param ids 流程实例的编号集合 | ||
| 53 | + * @return 对应的映射关系 | ||
| 54 | + */ | ||
| 55 | + default Map<String, String> getProcessInstanceNameMap(Set<String> ids) { | ||
| 56 | + return CollectionUtils.convertMap(getProcessInstances(ids), | ||
| 57 | + ProcessInstance::getProcessInstanceId, ProcessInstance::getName); | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | + /** | ||
| 50 | * 获得流程实例的分页 | 61 | * 获得流程实例的分页 |
| 51 | * | 62 | * |
| 52 | * @param userId 用户编号 | 63 | * @param userId 用户编号 |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskService.java
| @@ -10,7 +10,6 @@ import org.flowable.task.api.Task; | @@ -10,7 +10,6 @@ import org.flowable.task.api.Task; | ||
| 10 | import java.util.Collection; | 10 | import java.util.Collection; |
| 11 | import java.util.List; | 11 | import java.util.List; |
| 12 | import java.util.Map; | 12 | import java.util.Map; |
| 13 | -import java.util.Set; | ||
| 14 | 13 | ||
| 15 | /** | 14 | /** |
| 16 | * 流程任务实例 Service 接口 | 15 | * 流程任务实例 Service 接口 |
| @@ -186,18 +185,11 @@ public interface BpmTaskService { | @@ -186,18 +185,11 @@ public interface BpmTaskService { | ||
| 186 | List<BpmTaskSubSignRespVO> getChildrenTaskList(String parentId); | 185 | List<BpmTaskSubSignRespVO> getChildrenTaskList(String parentId); |
| 187 | 186 | ||
| 188 | /** | 187 | /** |
| 189 | - * 通过任务id查询任务名 | 188 | + * 通过任务 ID,查询任务名 Map |
| 190 | * | 189 | * |
| 191 | - * @param taskIds 任务id | ||
| 192 | - * @return 对应的映射关系 | 190 | + * @param taskIds 任务 ID |
| 191 | + * @return 任务 ID 与名字的 Map | ||
| 193 | */ | 192 | */ |
| 194 | - Map<String/* taskId */, String/* taskName */> getTaskNameByTaskIds(Collection<String> taskIds); | 193 | + Map<String, String> getTaskNameByTaskIds(Collection<String> taskIds); |
| 195 | 194 | ||
| 196 | - /** | ||
| 197 | - * 通过流程实例id获取到流程实例名 | ||
| 198 | - * | ||
| 199 | - * @param processInstaneIds 流程实例Id | ||
| 200 | - * @return 对应的映射关系 | ||
| 201 | - */ | ||
| 202 | - Map<String/* processInstaneId */, String/* processInstaneName */> getProcessInstanceNameByProcessInstanceIds(Set<String> processInstaneIds); | ||
| 203 | } | 195 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java
| @@ -21,7 +21,6 @@ import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; | @@ -21,7 +21,6 @@ import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; | ||
| 21 | import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskAddSignTypeEnum; | 21 | import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskAddSignTypeEnum; |
| 22 | import cn.iocoder.yudao.module.bpm.service.definition.BpmModelService; | 22 | import cn.iocoder.yudao.module.bpm.service.definition.BpmModelService; |
| 23 | import cn.iocoder.yudao.module.bpm.service.message.BpmMessageService; | 23 | import cn.iocoder.yudao.module.bpm.service.message.BpmMessageService; |
| 24 | -import cn.iocoder.yudao.module.bpm.service.task.cc.BpmProcessInstanceCopyService; | ||
| 25 | import cn.iocoder.yudao.module.system.api.dept.DeptApi; | 24 | import cn.iocoder.yudao.module.system.api.dept.DeptApi; |
| 26 | import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; | 25 | import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; |
| 27 | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; | 26 | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; |
| @@ -95,9 +94,6 @@ public class BpmTaskServiceImpl implements BpmTaskService { | @@ -95,9 +94,6 @@ public class BpmTaskServiceImpl implements BpmTaskService { | ||
| 95 | @Resource | 94 | @Resource |
| 96 | private ManagementService managementService; | 95 | private ManagementService managementService; |
| 97 | 96 | ||
| 98 | - @Resource | ||
| 99 | - private BpmProcessInstanceCopyService processInstanceCopyService; | ||
| 100 | - | ||
| 101 | @Override | 97 | @Override |
| 102 | public PageResult<BpmTaskTodoPageItemRespVO> getTodoTaskPage(Long userId, BpmTaskTodoPageReqVO pageVO) { | 98 | public PageResult<BpmTaskTodoPageItemRespVO> getTodoTaskPage(Long userId, BpmTaskTodoPageReqVO pageVO) { |
| 103 | // 查询待办任务 | 99 | // 查询待办任务 |
| @@ -972,28 +968,12 @@ public class BpmTaskServiceImpl implements BpmTaskService { | @@ -972,28 +968,12 @@ public class BpmTaskServiceImpl implements BpmTaskService { | ||
| 972 | } | 968 | } |
| 973 | 969 | ||
| 974 | @Override | 970 | @Override |
| 975 | - public Map<String/* taskId */, String/* taskName */> getTaskNameByTaskIds(Collection<String> taskIds) { | ||
| 976 | - List<Task> tasks = taskService.createTaskQuery().taskIds(taskIds).list(); | ||
| 977 | - if (CollUtil.isNotEmpty(tasks)) { | ||
| 978 | - Map<String/* taskId */, String/* taskName */> taskMap = new HashMap<>(tasks.size()); | ||
| 979 | - for (Task task : tasks) { | ||
| 980 | - taskMap.putIfAbsent(task.getId(), task.getName()); | ||
| 981 | - } | ||
| 982 | - return taskMap; | 971 | + public Map<String, String> getTaskNameByTaskIds(Collection<String> taskIds) { |
| 972 | + if (CollUtil.isEmpty(taskIds)) { | ||
| 973 | + return Collections.emptyMap(); | ||
| 983 | } | 974 | } |
| 984 | - return Collections.emptyMap(); | 975 | + List<Task> tasks = taskService.createTaskQuery().taskIds(taskIds).list(); |
| 976 | + return convertMap(tasks, Task::getId, Task::getName); | ||
| 985 | } | 977 | } |
| 986 | 978 | ||
| 987 | - @Override | ||
| 988 | - public Map<String/* processInstaneId */, String/* processInstaneName */> getProcessInstanceNameByProcessInstanceIds(Set<String> processInstanceIds) { | ||
| 989 | - List<ProcessInstance> processInstances = runtimeService.createProcessInstanceQuery().processInstanceIds(processInstanceIds).list(); | ||
| 990 | - if (CollUtil.isNotEmpty(processInstances)) { | ||
| 991 | - Map<String/* processInstaneId */, String/* processInstaneName */> processInstaneMap = new HashMap<>(processInstances.size()); | ||
| 992 | - for (ProcessInstance processInstance : processInstances) { | ||
| 993 | - processInstaneMap.putIfAbsent(processInstance.getId(), processInstance.getName()); | ||
| 994 | - } | ||
| 995 | - return processInstaneMap; | ||
| 996 | - } | ||
| 997 | - return Collections.emptyMap(); | ||
| 998 | - } | ||
| 999 | } | 979 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/cc/BpmProcessInstanceCopyService.java
| @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.bpm.service.task.cc; | @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.bpm.service.task.cc; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyCreateReqVO; | 4 | import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyCreateReqVO; |
| 5 | import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyMyPageReqVO; | 5 | import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyMyPageReqVO; |
| 6 | -import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyPageItemRespVO; | ||
| 7 | import cn.iocoder.yudao.module.bpm.dal.dataobject.cc.BpmProcessInstanceCopyDO; | 6 | import cn.iocoder.yudao.module.bpm.dal.dataobject.cc.BpmProcessInstanceCopyDO; |
| 8 | import cn.iocoder.yudao.module.bpm.service.candidate.BpmCandidateSourceInfo; | 7 | import cn.iocoder.yudao.module.bpm.service.candidate.BpmCandidateSourceInfo; |
| 9 | 8 | ||
| @@ -28,14 +27,14 @@ public interface BpmProcessInstanceCopyService { | @@ -28,14 +27,14 @@ public interface BpmProcessInstanceCopyService { | ||
| 28 | * @param userId 当前登录用户 | 27 | * @param userId 当前登录用户 |
| 29 | * @param createReqVO 创建的抄送请求 | 28 | * @param createReqVO 创建的抄送请求 |
| 30 | */ | 29 | */ |
| 31 | - Void createProcessInstanceCopy(Long userId, BpmProcessInstanceCopyCreateReqVO createReqVO); | 30 | + void createProcessInstanceCopy(Long userId, BpmProcessInstanceCopyCreateReqVO createReqVO); |
| 32 | 31 | ||
| 33 | /** | 32 | /** |
| 34 | * 抄送的流程的分页 | 33 | * 抄送的流程的分页 |
| 35 | - * @param loginUserId 登录用户id | 34 | + * @param userId 当前登录用户 |
| 36 | * @param pageReqVO 分页请求 | 35 | * @param pageReqVO 分页请求 |
| 37 | * @return 抄送的分页结果 | 36 | * @return 抄送的分页结果 |
| 38 | */ | 37 | */ |
| 39 | - PageResult<BpmProcessInstanceCopyDO> getMyProcessInstanceCopyPage(Long loginUserId, | 38 | + PageResult<BpmProcessInstanceCopyDO> getMyProcessInstanceCopyPage(Long userId, |
| 40 | BpmProcessInstanceCopyMyPageReqVO pageReqVO); | 39 | BpmProcessInstanceCopyMyPageReqVO pageReqVO); |
| 41 | } | 40 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/cc/BpmProcessInstanceCopyServiceImpl.java
| @@ -7,25 +7,18 @@ import cn.hutool.core.util.StrUtil; | @@ -7,25 +7,18 @@ import cn.hutool.core.util.StrUtil; | ||
| 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 8 | import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyCreateReqVO; | 8 | import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyCreateReqVO; |
| 9 | import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyMyPageReqVO; | 9 | import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyMyPageReqVO; |
| 10 | -import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCopyPageItemRespVO; | ||
| 11 | -import cn.iocoder.yudao.module.bpm.convert.cc.BpmProcessInstanceCopyConvert; | ||
| 12 | import cn.iocoder.yudao.module.bpm.dal.dataobject.cc.BpmProcessInstanceCopyDO; | 10 | import cn.iocoder.yudao.module.bpm.dal.dataobject.cc.BpmProcessInstanceCopyDO; |
| 13 | import cn.iocoder.yudao.module.bpm.dal.mysql.cc.BpmProcessInstanceCopyMapper; | 11 | import cn.iocoder.yudao.module.bpm.dal.mysql.cc.BpmProcessInstanceCopyMapper; |
| 14 | import cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants; | 12 | import cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants; |
| 15 | -import cn.iocoder.yudao.module.bpm.enums.definition.BpmTaskAssignRuleTypeEnum; | ||
| 16 | import cn.iocoder.yudao.module.bpm.service.candidate.BpmCandidateSourceInfo; | 13 | import cn.iocoder.yudao.module.bpm.service.candidate.BpmCandidateSourceInfo; |
| 17 | import cn.iocoder.yudao.module.bpm.service.candidate.BpmCandidateSourceInfoProcessorChain; | 14 | import cn.iocoder.yudao.module.bpm.service.candidate.BpmCandidateSourceInfoProcessorChain; |
| 18 | import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; | 15 | import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; |
| 19 | import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService; | 16 | import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService; |
| 20 | import cn.iocoder.yudao.module.bpm.service.task.cc.dto.BpmDelegateExecutionDTO; | 17 | import cn.iocoder.yudao.module.bpm.service.task.cc.dto.BpmDelegateExecutionDTO; |
| 21 | -import cn.iocoder.yudao.module.bpm.util.FlowableUtils; | ||
| 22 | -import cn.iocoder.yudao.module.system.api.user.AdminUserApi; | ||
| 23 | -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | ||
| 24 | import jakarta.annotation.Resource; | 18 | import jakarta.annotation.Resource; |
| 25 | import lombok.extern.slf4j.Slf4j; | 19 | import lombok.extern.slf4j.Slf4j; |
| 26 | import org.flowable.engine.RuntimeService; | 20 | import org.flowable.engine.RuntimeService; |
| 27 | import org.flowable.engine.delegate.DelegateExecution; | 21 | import org.flowable.engine.delegate.DelegateExecution; |
| 28 | -import org.flowable.engine.repository.ProcessDefinition; | ||
| 29 | import org.flowable.engine.runtime.ProcessInstance; | 22 | import org.flowable.engine.runtime.ProcessInstance; |
| 30 | import org.flowable.task.api.Task; | 23 | import org.flowable.task.api.Task; |
| 31 | import org.springframework.context.annotation.Lazy; | 24 | import org.springframework.context.annotation.Lazy; |
| @@ -33,14 +26,14 @@ import org.springframework.stereotype.Service; | @@ -33,14 +26,14 @@ import org.springframework.stereotype.Service; | ||
| 33 | import org.springframework.validation.annotation.Validated; | 26 | import org.springframework.validation.annotation.Validated; |
| 34 | 27 | ||
| 35 | import java.time.LocalDateTime; | 28 | import java.time.LocalDateTime; |
| 36 | -import java.util.*; | ||
| 37 | -import java.util.stream.Collectors; | 29 | +import java.util.ArrayList; |
| 30 | +import java.util.List; | ||
| 31 | +import java.util.Set; | ||
| 38 | 32 | ||
| 39 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 33 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 40 | -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | ||
| 41 | 34 | ||
| 42 | /** | 35 | /** |
| 43 | - * Flowable流程抄送实现 | 36 | + * 流程抄送 Service 实现类 |
| 44 | * | 37 | * |
| 45 | * @author kyle | 38 | * @author kyle |
| 46 | */ | 39 | */ |
| @@ -61,6 +54,9 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy | @@ -61,6 +54,9 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy | ||
| 61 | @Resource | 54 | @Resource |
| 62 | @Lazy | 55 | @Lazy |
| 63 | private BpmTaskService bpmTaskService; | 56 | private BpmTaskService bpmTaskService; |
| 57 | + @Resource | ||
| 58 | + @Lazy | ||
| 59 | + private BpmProcessInstanceService bpmProcessInstanceService; | ||
| 64 | 60 | ||
| 65 | @Override | 61 | @Override |
| 66 | public boolean makeCopy(BpmCandidateSourceInfo sourceInfo) { | 62 | public boolean makeCopy(BpmCandidateSourceInfo sourceInfo) { |
| @@ -86,7 +82,7 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy | @@ -86,7 +82,7 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy | ||
| 86 | // 调用 | 82 | // 调用 |
| 87 | // 设置任务id | 83 | // 设置任务id |
| 88 | copyDO.setTaskId(sourceInfo.getTaskId()); | 84 | copyDO.setTaskId(sourceInfo.getTaskId()); |
| 89 | - copyDO.setTaskName(FlowableUtils.getTaskNameByTaskId(sourceInfo.getTaskId())); | 85 | + copyDO.setTaskName(task.getName()); |
| 90 | copyDO.setProcessInstanceId(processInstanceId); | 86 | copyDO.setProcessInstanceId(processInstanceId); |
| 91 | ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() | 87 | ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() |
| 92 | .processInstanceId(processInstanceId) | 88 | .processInstanceId(processInstanceId) |
| @@ -95,10 +91,9 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy | @@ -95,10 +91,9 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy | ||
| 95 | log.warn("相关流程实例不存在 {}", sourceInfo.getTaskId()); | 91 | log.warn("相关流程实例不存在 {}", sourceInfo.getTaskId()); |
| 96 | return false; | 92 | return false; |
| 97 | } | 93 | } |
| 98 | - copyDO.setStartUserId(FlowableUtils.getStartUserIdFromProcessInstance(processInstance)); | 94 | + copyDO.setStartUserId(Long.parseLong(processInstance.getStartUserId())); |
| 99 | copyDO.setProcessInstanceName(processInstance.getName()); | 95 | copyDO.setProcessInstanceName(processInstance.getName()); |
| 100 | - ProcessDefinition processDefinition = FlowableUtils.getProcessDefinition(processInstance.getProcessDefinitionId()); | ||
| 101 | - copyDO.setCategory(processDefinition.getCategory()); | 96 | + copyDO.setCategory(processInstance.getProcessDefinitionCategory()); |
| 102 | copyDO.setReason(sourceInfo.getReason()); | 97 | copyDO.setReason(sourceInfo.getReason()); |
| 103 | copyDO.setCreator(sourceInfo.getCreator()); | 98 | copyDO.setCreator(sourceInfo.getCreator()); |
| 104 | copyDO.setCreateTime(LocalDateTime.now()); | 99 | copyDO.setCreateTime(LocalDateTime.now()); |
| @@ -113,53 +108,32 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy | @@ -113,53 +108,32 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy | ||
| 113 | } | 108 | } |
| 114 | 109 | ||
| 115 | @Override | 110 | @Override |
| 116 | - public Void createProcessInstanceCopy(Long userId, BpmProcessInstanceCopyCreateReqVO reqVO) { | ||
| 117 | - if (!ObjectUtil.equal(reqVO.getType(), BpmTaskAssignRuleTypeEnum.USER.getType())) { | ||
| 118 | - throw new IllegalArgumentException("业务仅支持USER"); | ||
| 119 | - } | 111 | + public void createProcessInstanceCopy(Long userId, BpmProcessInstanceCopyCreateReqVO reqVO) { |
| 112 | + // 1.1 校验任务存在 | ||
| 120 | Task task = bpmTaskService.getTask(reqVO.getTaskId()); | 113 | Task task = bpmTaskService.getTask(reqVO.getTaskId()); |
| 121 | if (ObjectUtil.isNull(task)) { | 114 | if (ObjectUtil.isNull(task)) { |
| 122 | throw exception(ErrorCodeConstants.TASK_NOT_EXISTS); | 115 | throw exception(ErrorCodeConstants.TASK_NOT_EXISTS); |
| 123 | } | 116 | } |
| 117 | + // 1.2 校验流程存在 | ||
| 124 | String processInstanceId = task.getProcessInstanceId(); | 118 | String processInstanceId = task.getProcessInstanceId(); |
| 125 | - if (StrUtil.isBlank(processInstanceId)) { | 119 | + ProcessInstance processInstance = bpmProcessInstanceService.getProcessInstance(processInstanceId); |
| 120 | + if (processInstance == null) { | ||
| 121 | + log.warn("[createProcessInstanceCopy][任务({}) 对应的流程不存在]", reqVO.getTaskId()); | ||
| 126 | throw exception(ErrorCodeConstants.PROCESS_INSTANCE_NOT_EXISTS); | 122 | throw exception(ErrorCodeConstants.PROCESS_INSTANCE_NOT_EXISTS); |
| 127 | } | 123 | } |
| 128 | - // 在能正常审批的情况下抄送流程 | ||
| 129 | - BpmProcessInstanceCopyDO copyDO = new BpmProcessInstanceCopyDO(); | ||
| 130 | - // 调用 | ||
| 131 | - // 设置任务id | ||
| 132 | - copyDO.setTaskId(reqVO.getTaskId()); | ||
| 133 | - copyDO.setTaskName(FlowableUtils.getTaskNameByTaskId(reqVO.getTaskId())); | ||
| 134 | - copyDO.setProcessInstanceId(processInstanceId); | ||
| 135 | - ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() | ||
| 136 | - .processInstanceId(processInstanceId) | ||
| 137 | - .singleResult(); | ||
| 138 | - if (null == processInstance) { | ||
| 139 | - log.warn("相关流程实例不存在 {}", reqVO.getTaskId()); | ||
| 140 | - throw exception(ErrorCodeConstants.PROCESS_INSTANCE_NOT_EXISTS); | ||
| 141 | - } | ||
| 142 | - copyDO.setStartUserId(FlowableUtils.getStartUserIdFromProcessInstance(processInstance)); | ||
| 143 | - copyDO.setProcessInstanceName(processInstance.getName()); | ||
| 144 | - ProcessDefinition processDefinition = FlowableUtils.getProcessDefinition(processInstance.getProcessDefinitionId()); | ||
| 145 | - copyDO.setCategory(processDefinition.getCategory()); | ||
| 146 | - copyDO.setReason(reqVO.getReason()); | ||
| 147 | - copyDO.setCreator(String.valueOf(userId)); | ||
| 148 | - copyDO.setCreateTime(LocalDateTime.now()); | ||
| 149 | - List<BpmProcessInstanceCopyDO> copyList = new ArrayList<>(reqVO.getOptions().size()); | ||
| 150 | - for (Long copyUserId : reqVO.getOptions()) { | ||
| 151 | - BpmProcessInstanceCopyDO copy = BeanUtil.copyProperties(copyDO, BpmProcessInstanceCopyDO.class); | ||
| 152 | - copy.setUserId(copyUserId); | ||
| 153 | - copyList.add(copy); | ||
| 154 | - } | ||
| 155 | - processInstanceCopyMapper.insertBatch(copyList); | ||
| 156 | - return null; | 124 | + |
| 125 | + // 2. 创建抄送流程 | ||
| 126 | + BpmProcessInstanceCopyDO copy = new BpmProcessInstanceCopyDO() | ||
| 127 | + .setTaskId(reqVO.getTaskId()).setTaskName(task.getName()) | ||
| 128 | + .setProcessInstanceId(processInstanceId).setStartUserId(Long.valueOf(processInstance.getStartUserId())) | ||
| 129 | + .setProcessInstanceName(processInstance.getName()).setCategory(processInstance.getProcessDefinitionCategory()) | ||
| 130 | + .setReason(reqVO.getReason()); | ||
| 131 | + processInstanceCopyMapper.insert(copy); | ||
| 157 | } | 132 | } |
| 158 | 133 | ||
| 159 | @Override | 134 | @Override |
| 160 | - public PageResult<BpmProcessInstanceCopyDO> getMyProcessInstanceCopyPage(Long loginUserId, BpmProcessInstanceCopyMyPageReqVO pageReqVO) { | ||
| 161 | - // 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页 | ||
| 162 | - return processInstanceCopyMapper.selectPage(loginUserId, pageReqVO); | 135 | + public PageResult<BpmProcessInstanceCopyDO> getMyProcessInstanceCopyPage(Long userId, BpmProcessInstanceCopyMyPageReqVO pageReqVO) { |
| 136 | + return processInstanceCopyMapper.selectPage(userId, pageReqVO); | ||
| 163 | } | 137 | } |
| 164 | 138 | ||
| 165 | } | 139 | } |
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/util/FlowableUtils.java deleted
| 1 | -package cn.iocoder.yudao.module.bpm.util; | ||
| 2 | - | ||
| 3 | - | ||
| 4 | -import cn.hutool.extra.spring.SpringUtil; | ||
| 5 | -import cn.iocoder.yudao.framework.common.util.number.NumberUtils; | ||
| 6 | -import org.flowable.bpmn.model.BpmnModel; | ||
| 7 | -import org.flowable.bpmn.model.ExtensionElement; | ||
| 8 | -import org.flowable.bpmn.model.FlowElement; | ||
| 9 | -import org.flowable.bpmn.model.FlowNode; | ||
| 10 | -import org.flowable.engine.RepositoryService; | ||
| 11 | -import org.flowable.engine.RuntimeService; | ||
| 12 | -import org.flowable.engine.TaskService; | ||
| 13 | -import org.flowable.engine.repository.ProcessDefinition; | ||
| 14 | -import org.flowable.engine.runtime.ProcessInstance; | ||
| 15 | -import org.flowable.task.api.Task; | ||
| 16 | - | ||
| 17 | -import java.util.List; | ||
| 18 | -import java.util.Map; | ||
| 19 | - | ||
| 20 | -/** | ||
| 21 | - * 流程引擎工具类封装 | ||
| 22 | - * | ||
| 23 | - * @author: linjinp | ||
| 24 | - * @create: 2019-12-24 13:51 | ||
| 25 | - **/ | ||
| 26 | -public class FlowableUtils { | ||
| 27 | - | ||
| 28 | - /** | ||
| 29 | - * 获取流程名称 | ||
| 30 | - * | ||
| 31 | - * @param processDefinitionId | ||
| 32 | - * @return | ||
| 33 | - */ | ||
| 34 | - public static String getProcessDefinitionName(String processDefinitionId) { | ||
| 35 | - RepositoryService repositoryService = SpringUtil.getBean(RepositoryService.class); | ||
| 36 | - ProcessDefinition processDefinition = repositoryService.getProcessDefinition(processDefinitionId); | ||
| 37 | - return processDefinition.getName(); | ||
| 38 | - } | ||
| 39 | - | ||
| 40 | - public static ProcessDefinition getProcessDefinition(String processDefinitionId) { | ||
| 41 | - RepositoryService repositoryService = SpringUtil.getBean(RepositoryService.class); | ||
| 42 | - return repositoryService.getProcessDefinition(processDefinitionId); | ||
| 43 | - } | ||
| 44 | - | ||
| 45 | - /** | ||
| 46 | - * 获取节点数据 | ||
| 47 | - * | ||
| 48 | - * @param processInstanceId | ||
| 49 | - * @param nodeId | ||
| 50 | - * @return | ||
| 51 | - */ | ||
| 52 | - public static FlowNode getFlowNode(String processInstanceId, String nodeId) { | ||
| 53 | - | ||
| 54 | - RuntimeService runtimeService = SpringUtil.getBean(RuntimeService.class); | ||
| 55 | - RepositoryService repositoryService = SpringUtil.getBean(RepositoryService.class); | ||
| 56 | - | ||
| 57 | - String definitionld = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult().getProcessDefinitionId(); // 获取bpm(模型)对象 | ||
| 58 | - BpmnModel bpmnModel = repositoryService.getBpmnModel(definitionld); | ||
| 59 | - // 传节点定义key获取当前节点 | ||
| 60 | - FlowNode flowNode = (FlowNode) bpmnModel.getFlowElement(nodeId); | ||
| 61 | - return flowNode; | ||
| 62 | - } | ||
| 63 | - | ||
| 64 | - public static ExtensionElement generateFlowNodeIdExtension(String nodeId) { | ||
| 65 | - ExtensionElement extensionElement = new ExtensionElement(); | ||
| 66 | - extensionElement.setElementText(nodeId); | ||
| 67 | - extensionElement.setName("nodeId"); | ||
| 68 | - extensionElement.setNamespacePrefix("flowable"); | ||
| 69 | - extensionElement.setNamespace("nodeId"); | ||
| 70 | - return extensionElement; | ||
| 71 | - } | ||
| 72 | - | ||
| 73 | - public static String getNodeIdFromExtension(FlowElement flowElement) { | ||
| 74 | - Map<String, List<ExtensionElement>> extensionElements = flowElement.getExtensionElements(); | ||
| 75 | - return extensionElements.get("nodeId").get(0).getElementText(); | ||
| 76 | - } | ||
| 77 | - | ||
| 78 | - public static Long getStartUserIdFromProcessInstance(ProcessInstance instance) { | ||
| 79 | - if (null == instance) { | ||
| 80 | - return null; | ||
| 81 | - } | ||
| 82 | - return NumberUtils.parseLong(instance.getStartUserId()); | ||
| 83 | - } | ||
| 84 | - | ||
| 85 | - public static String getTaskNameByTaskId(String taskId) { | ||
| 86 | - TaskService taskService = SpringUtil.getBean(TaskService.class); | ||
| 87 | - Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); | ||
| 88 | - return task.getName(); | ||
| 89 | - } | ||
| 90 | - | ||
| 91 | -} |
yudao-module-bpm/yudao-module-bpm-biz/src/test/java/cn/iocoder/yudao/module/bpm/service/cc/BpmProcessInstanceCopyServiceTest.java deleted
| 1 | -package cn.iocoder.yudao.module.bpm.service.cc; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; | ||
| 4 | -import cn.iocoder.yudao.module.bpm.service.task.cc.BpmProcessInstanceCopyServiceImpl; | ||
| 5 | -import jakarta.annotation.Resource; | ||
| 6 | -import org.junit.jupiter.api.Test; | ||
| 7 | -import org.springframework.context.annotation.Import; | ||
| 8 | - | ||
| 9 | -@Import({BpmProcessInstanceCopyServiceImpl.class}) | ||
| 10 | -class BpmProcessInstanceCopyServiceTest extends BaseDbUnitTest { | ||
| 11 | - @Resource | ||
| 12 | - private BpmProcessInstanceCopyServiceImpl service; | ||
| 13 | - | ||
| 14 | - @Test | ||
| 15 | - void queryById() { | ||
| 16 | - } | ||
| 17 | -} | ||
| 18 | \ No newline at end of file | 0 | \ No newline at end of file |