Commit ee1870802f84f4d9d94f0238ed0a87580d94c5f8

Authored by YunaiV
1 parent a5dc4e78

BPM:抄送任务的 code review

Showing 16 changed files with 84 additions and 74 deletions
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceController.java
... ... @@ -2,20 +2,18 @@ package cn.iocoder.yudao.module.bpm.controller.admin.task;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5   -import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
6 5 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.*;
7 6 import cn.iocoder.yudao.module.bpm.service.cc.BpmProcessInstanceCopyService;
8 7 import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
9   -import io.swagger.v3.oas.annotations.tags.Tag;
10   -import io.swagger.v3.oas.annotations.Parameter;
11 8 import io.swagger.v3.oas.annotations.Operation;
  9 +import io.swagger.v3.oas.annotations.Parameter;
  10 +import io.swagger.v3.oas.annotations.tags.Tag;
  11 +import jakarta.annotation.Resource;
  12 +import jakarta.validation.Valid;
12 13 import org.springframework.security.access.prepost.PreAuthorize;
13 14 import org.springframework.validation.annotation.Validated;
14 15 import org.springframework.web.bind.annotation.*;
15 16  
16   -import jakarta.annotation.Resource;
17   -import jakarta.validation.Valid;
18   -
19 17 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
20 18 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
21 19  
... ... @@ -62,19 +60,21 @@ public class BpmProcessInstanceController {
62 60 return success(true);
63 61 }
64 62  
  63 + // TODO @kyle:抄送要不单独 controller?
65 64  
66 65 @PostMapping("/cc/create")
67 66 @Operation(summary = "抄送流程")
68 67 @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:create')")
69 68 public CommonResult<Boolean> createProcessInstanceCC(@Valid @RequestBody BpmProcessInstanceCCReqVO createReqVO) {
70   - return success(processInstanceCopyService.ccProcessInstance(SecurityFrameworkUtils.getLoginUserId(), createReqVO));
  69 + return success(processInstanceCopyService.ccProcessInstance(getLoginUserId(), createReqVO));
71 70 }
72 71  
73 72 @GetMapping("/cc/my-page")
74 73 @Operation(summary = "获得抄送流程分页列表")
75 74 @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:query')")
76   - public CommonResult<PageResult<BpmProcessInstanceCCPageItemRespVO>> getProcessInstanceCCPage(@Valid BpmProcessInstanceCCMyPageReqVO pageReqVO) {
77   - return success(processInstanceCopyService.getMyProcessInstanceCCPage(SecurityFrameworkUtils.getLoginUserId(), pageReqVO));
  75 + public CommonResult<PageResult<BpmProcessInstanceCCPageItemRespVO>> getProcessInstanceCCPage(
  76 + @Valid BpmProcessInstanceCCMyPageReqVO pageReqVO) {
  77 + return success(processInstanceCopyService.getMyProcessInstanceCCPage(getLoginUserId(), pageReqVO));
78 78 }
79 79  
80 80 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceCCMyPageReqVO.java
... ... @@ -11,7 +11,8 @@ import java.time.LocalDateTime;
11 11  
12 12 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
13 13  
14   -@Schema(description = "管理后台 - 流程实例抄送的分页 Item Response VO")
  14 +// TODO @kyle:建议改成 BpmProcessInstanceCopyMyPageReqVO;cc 缩写不容易理解,所以改成 copy,虽然会长一点,但是可读性更重要;
  15 +@Schema(description = "管理后台 - 流程实例抄送的分页 Request VO")
15 16 @Data
16 17 @EqualsAndHashCode(callSuper = true)
17 18 @ToString(callSuper = true)
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceCCPageItemRespVO.java
... ... @@ -9,6 +9,7 @@ import java.time.LocalDateTime;
9 9 @Data
10 10 public class BpmProcessInstanceCCPageItemRespVO {
11 11  
  12 + // TODO @kyle:如果已经写了 swagger 注解,可以不用写 java 注释哈;
12 13 /**
13 14 * 编号
14 15 */
... ... @@ -52,4 +53,5 @@ public class BpmProcessInstanceCCPageItemRespVO {
52 53  
53 54 @Schema(description = "抄送时间")
54 55 private LocalDateTime createTime;
  56 +
55 57 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceCCReqVO.java
... ... @@ -9,8 +9,7 @@ import lombok.Data;
9 9 import lombok.EqualsAndHashCode;
10 10 import lombok.ToString;
11 11  
12   -import java.util.Set;
13   -
  12 +// TODO @kyle:这个 VO 可以改成 BpmProcessInstanceCopyCreateReqVO
14 13 @Schema(description = "管理后台 - 流程实例的抄送 Request VO")
15 14 @Data
16 15 @EqualsAndHashCode(callSuper = true)
... ... @@ -33,7 +32,6 @@ public class BpmProcessInstanceCCReqVO extends BpmTaskCandidateRuleVO {
33 32 @NotNull(message = "发起流程的用户的编号不能为空")
34 33 private Long startUserId;
35 34  
36   -
37 35 @Schema(description = "任务实例名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
38 36 @NotEmpty(message = "任务实例名称不能为空")
39 37 private String processInstanceName;
... ... @@ -41,4 +39,9 @@ public class BpmProcessInstanceCCReqVO extends BpmTaskCandidateRuleVO {
41 39 @Schema(description = "抄送原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "请帮忙审查下!")
42 40 @NotBlank(message = "抄送原因不能为空")
43 41 private String reason;
  42 +
  43 + // TODO @kyle:看了下字段有点多,尽量不传递可推导的字段;
  44 + // 需要传递:taskId(任务编号)、reason、userIds(被抄送的人)
  45 + // 不需要传递:taskKey、taskName、processInstanceKey、startUserId、processInstanceName 因为这些可以后端查询到
  46 +
44 47 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/cc/BpmProcessInstanceCopyConvert.java
... ... @@ -11,6 +11,7 @@ import org.mapstruct.factory.Mappers;
11 11 import java.util.List;
12 12 import java.util.Map;
13 13  
  14 +// TODO kyle:类注释不太对
14 15 /**
15 16 * 动态表单 Convert
16 17 *
... ... @@ -21,14 +22,14 @@ public interface BpmProcessInstanceCopyConvert {
21 22  
22 23 BpmProcessInstanceCopyConvert INSTANCE = Mappers.getMapper(BpmProcessInstanceCopyConvert.class);
23 24  
  25 + // TODO @kyle:可以使用 BeanUtils copy 替代这些简单的哈;
24 26 BpmProcessInstanceCopyDO copy(BpmProcessInstanceCopyDO bean);
25 27  
26 28 BpmProcessInstanceCopyVO convert(BpmProcessInstanceCopyDO bean);
27 29  
28   - List<BpmProcessInstanceCopyVO> convertList2(List<BpmProcessInstanceCopyDO> list);
29   -
30 30 List<BpmProcessInstanceCCPageItemRespVO> convertList(List<BpmProcessInstanceCopyDO> list);
31 31  
  32 + // TODO @kyle:/* taskId */ 这种注释一般不用写,可以一眼看明白的;避免变量看着略微不清晰哈
32 33 default PageResult<BpmProcessInstanceCCPageItemRespVO> convertPage(PageResult<BpmProcessInstanceCopyDO> page
33 34 , Map<String/* taskId */, String/* taskName */> taskMap
34 35 , Map<String/* processInstaneId */, String/* processInstaneName */> processInstaneMap
... ... @@ -45,6 +46,15 @@ public interface BpmProcessInstanceCopyConvert {
45 46 MapUtils.findAndThen(processInstaneMap, vo.getProcessInstanceId(),
46 47 vo::setProcessInstanceName);
47 48 }
  49 + // TODO @kyle:可以精简成下面的哈;
  50 +// List<BpmProcessInstanceCCPageItemRespVO> list2 = BeanUtils.toBean(page.getList(),
  51 +// BpmProcessInstanceCCPageItemRespVO.class,
  52 +// copy -> {
  53 +// MapUtils.findAndThen(userMap, Long.valueOf(copy.getCreator()), copy::setCreatorNickname);
  54 +// MapUtils.findAndThen(userMap, copy.getStartUserId(), copy::setStartUserNickname);
  55 +// MapUtils.findAndThen(taskMap, copy.getTaskId(), copy::setTaskName);
  56 +// MapUtils.findAndThen(processInstaneMap, copy.getProcessInstanceId(), copy::setProcessInstanceName);
  57 +// });
48 58 return new PageResult<>(list, page.getTotal());
49 59 }
50 60  
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/cc/BpmProcessInstanceCopyDO.java
... ... @@ -6,10 +6,10 @@ import com.baomidou.mybatisplus.annotation.TableName;
6 6 import lombok.*;
7 7  
8 8 /**
9   - * 流程抄送对象
  9 + * 流程抄送 DO
10 10 *
11 11 * @author kyle
12   - * @date 2022-05-19
  12 + * @date 2022-05-19 TODO @kyle:@date 不是标准 java doc,可以使用 @since 替代,然后日期是不是不对
13 13 */
14 14 @TableName(value = "bpm_process_instance_copy", autoResultMap = true)
15 15 @Data
... ... @@ -26,8 +26,9 @@ public class BpmProcessInstanceCopyDO extends BaseDO {
26 26 @TableId
27 27 private Long id;
28 28  
  29 + // TODO @kyle:字段如果是关联或者冗余,要写下注释。以 processInstanceId 举例子。
29 30 /**
30   - * 发起人Id
  31 + * 发起人 Id
31 32 */
32 33 private Long startUserId;
33 34 /**
... ... @@ -35,7 +36,9 @@ public class BpmProcessInstanceCopyDO extends BaseDO {
35 36 */
36 37 private String processInstanceName;
37 38 /**
38   - * 流程主键
  39 + * 流程实例的编号
  40 + *
  41 + * 关联 ProcessInstance 的 id 属性
39 42 */
40 43 private String processInstanceId;
41 44  
... ... @@ -50,7 +53,7 @@ public class BpmProcessInstanceCopyDO extends BaseDO {
50 53 private String taskName;
51 54  
52 55 /**
53   - * 用户主键
  56 + * 用户编号
54 57 */
55 58 private Long userId;
56 59  
... ... @@ -59,6 +62,7 @@ public class BpmProcessInstanceCopyDO extends BaseDO {
59 62 */
60 63 private String reason;
61 64  
  65 + // TODO @kyle:这个字段,可以用 category 简化点
62 66 /**
63 67 * 流程分类
64 68 */
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/cc/BpmProcessInstanceCopyMapper.java
... ... @@ -8,7 +8,7 @@ import cn.iocoder.yudao.module.bpm.dal.dataobject.cc.BpmProcessInstanceCopyDO;
8 8 import org.apache.ibatis.annotations.Mapper;
9 9  
10 10 @Mapper
11   -public interface BpmProcessInstanceCopyMapper extends BaseMapperX<BpmProcessInstanceCopyDO> {
  11 +public interface BpmProcessInstanceCopyMapper extends BaseMapperX<BpmProcessInstanceCopyDO> { // TODO @kyle:方法和类之间要空行下;
12 12 default PageResult<BpmProcessInstanceCopyDO> selectPage(Long loginUserId, BpmProcessInstanceCCMyPageReqVO reqVO){
13 13 return selectPage(reqVO, new LambdaQueryWrapperX<BpmProcessInstanceCopyDO>()
14 14 .eqIfPresent(BpmProcessInstanceCopyDO::getUserId, loginUserId)
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/bpm/config/BpmCandidateProcessorConfiguration.java
... ... @@ -6,8 +6,7 @@ import org.springframework.beans.factory.ObjectProvider;
6 6 import org.springframework.context.annotation.Bean;
7 7 import org.springframework.context.annotation.Configuration;
8 8  
9   -import java.util.List;
10   -
  9 +// TODO @芋艿:Candidate 相关还在完善中,用户可以暂时忽略,仅 yudao 开发的同学需要关注~计划是把 Candidate 和 Assign 融合成一套
11 10 /**
12 11 * BPM 通用的 Configuration 配置类,提供给 Activiti 和 Flowable
13 12 * @author kyle
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/cc/BpmProcessInstanceCopyService.java
... ... @@ -6,6 +6,8 @@ import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessI
6 6 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceCCReqVO;
7 7 import cn.iocoder.yudao.module.bpm.service.candidate.BpmCandidateSourceInfo;
8 8  
  9 +// TODO @kyle:这个 Service 要不挪到 task 包下;保持统一,task 下有流程、任务、抄送等;
  10 +// TODO @kyle:中文和英文之间,有个空格,会更清晰点;例如说;流程抄送 Service 接口;中文写作习惯~
9 11 /**
10 12 * 流程抄送Service接口
11 13 *
... ... @@ -13,6 +15,7 @@ import cn.iocoder.yudao.module.bpm.service.candidate.BpmCandidateSourceInfo;
13 15 */
14 16 public interface BpmProcessInstanceCopyService {
15 17  
  18 + // TODO @kyle:无用的方法,可以去掉哈;另外,考虑到避免过多的 VO,这里就可以返回 BpmProcessInstanceCopyDO
16 19 /**
17 20 * 查询流程抄送
18 21 *
... ... @@ -21,6 +24,7 @@ public interface BpmProcessInstanceCopyService {
21 24 */
22 25 BpmProcessInstanceCopyVO queryById(Long copyId);
23 26  
  27 + // TODO 芋艿:这块要 review 下;思考下~~
24 28 /**
25 29 * 抄送
26 30 * @param sourceInfo 抄送源信息,方便抄送处理
... ... @@ -28,13 +32,15 @@ public interface BpmProcessInstanceCopyService {
28 32 */
29 33 boolean makeCopy(BpmCandidateSourceInfo sourceInfo);
30 34  
  35 + // TODO @kyle:可以方法名改成 createProcessInstanceCopy;现在项目一般新增都用 create 为主;
31 36 /**
32 37 * 流程实例的抄送
33   - * @param loginUserId 当前登录用户
  38 + *
  39 + * @param userId 当前登录用户
34 40 * @param createReqVO 创建的抄送请求
35   - * @return 是否抄送成功,抄送成功则返回true
  41 + * @return 是否抄送成功,抄送成功则返回true TODO @kyle:这里可以不用返回哈;目前一般是失败,就抛出业务异常;
36 42 */
37   - boolean ccProcessInstance(Long loginUserId, BpmProcessInstanceCCReqVO createReqVO);
  43 + boolean ccProcessInstance(Long userId, BpmProcessInstanceCCReqVO createReqVO);
38 44  
39 45 /**
40 46 * 抄送的流程
... ... @@ -42,5 +48,6 @@ public interface BpmProcessInstanceCopyService {
42 48 * @param pageReqVO 分页请求
43 49 * @return 抄送的分页结果
44 50 */
45   - PageResult<BpmProcessInstanceCCPageItemRespVO> getMyProcessInstanceCCPage(Long loginUserId, BpmProcessInstanceCCMyPageReqVO pageReqVO);
  51 + PageResult<BpmProcessInstanceCCPageItemRespVO> getMyProcessInstanceCCPage(Long loginUserId,
  52 + BpmProcessInstanceCCMyPageReqVO pageReqVO);
46 53 }
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/cc/BpmProcessInstanceCopyServiceImpl.java
... ... @@ -11,10 +11,12 @@ import cn.iocoder.yudao.module.bpm.dal.mysql.cc.BpmProcessInstanceCopyMapper;
11 11 import cn.iocoder.yudao.module.bpm.service.candidate.BpmCandidateSourceInfo;
12 12 import cn.iocoder.yudao.module.bpm.service.candidate.BpmCandidateSourceInfoProcessorChain;
13 13 import cn.iocoder.yudao.module.bpm.service.cc.dto.BpmDelegateExecutionDTO;
  14 +import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
14 15 import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService;
15 16 import cn.iocoder.yudao.module.bpm.util.FlowableUtils;
16 17 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
17 18 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
  19 +import jakarta.annotation.Resource;
18 20 import lombok.extern.slf4j.Slf4j;
19 21 import org.flowable.engine.RuntimeService;
20 22 import org.flowable.engine.delegate.DelegateExecution;
... ... @@ -24,33 +26,37 @@ import org.springframework.context.annotation.Lazy;
24 26 import org.springframework.stereotype.Service;
25 27 import org.springframework.validation.annotation.Validated;
26 28  
27   -import jakarta.annotation.Resource;
28 29 import java.time.LocalDateTime;
29 30 import java.util.*;
30 31 import java.util.stream.Collectors;
31 32  
32   -@Slf4j
  33 +// TODO @kyle:类注释要写下
  34 +@Slf4j // TODO @kyle:按照 @Service、@Validated、@Slf4j,从重要到不重要的顺序;
33 35 @Service
34 36 @Validated
35 37 public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopyService {
36   - @Resource
  38 + @Resource // TODO @kyle:第一个变量,和类之间要有空行;
37 39 private BpmProcessInstanceCopyMapper processInstanceCopyMapper;
38 40  
39 41 /**
40   - * 和flowable有关的,查询流程名用的
  42 + * 和flowable有关的,查询流程名用的 TODO @kyle:可以不写哈注释;
41 43 */
42 44 @Resource
43 45 private RuntimeService runtimeService;
44 46  
45 47 /**
46   - * 找抄送人用的
  48 + * 找抄送人用的 TODO @kyle:可以不写哈注释;
47 49 */
48 50 @Resource
49 51 private BpmCandidateSourceInfoProcessorChain processorChain;
50 52  
  53 + // TODO @kyle:多余的变量,可以去掉哈
51 54 @Resource
52 55 @Lazy // 解决循环依赖
53   - private BpmTaskService taskService;
  56 + private BpmTaskService bpmTaskService;
  57 + @Resource
  58 + @Lazy // 解决循环依赖
  59 + private BpmProcessInstanceService bpmProcessInstanceService;
54 60 @Resource
55 61 private AdminUserApi adminUserApi;
56 62  
... ... @@ -60,6 +66,10 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy
60 66 return BpmProcessInstanceCopyConvert.INSTANCE.convert(bpmProcessInstanceCopyDO);
61 67 }
62 68  
  69 + // TODO @kyle:makeCopy 和 ccProcessInstance 的调用关系,感受上反了;
  70 + // makeCopy 有点像基于规则,查找抄送人,然后创建;
  71 + // ccProcessInstance 是已经有了抄送人,然后创建;
  72 + // 建议的改造:独立基于 processInstanceCopyMapper 做 insert
63 73 @Override
64 74 public boolean makeCopy(BpmCandidateSourceInfo sourceInfo) {
65 75 if (null == sourceInfo) {
... ... @@ -103,13 +113,13 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy
103 113 }
104 114  
105 115 @Override
106   - public boolean ccProcessInstance(Long loginUserId, BpmProcessInstanceCCReqVO reqVO) {
  116 + public boolean ccProcessInstance(Long userId, BpmProcessInstanceCCReqVO reqVO) {
107 117 // 在能正常审批的情况下抄送流程
108 118 BpmCandidateSourceInfo sourceInfo = new BpmCandidateSourceInfo();
109 119 sourceInfo.setTaskId(reqVO.getTaskKey());
110 120 sourceInfo.setProcessInstanceId(reqVO.getProcessInstanceKey());
111 121 sourceInfo.addRule(reqVO);
112   - sourceInfo.setCreator(String.valueOf(loginUserId));
  122 + sourceInfo.setCreator(String.valueOf(userId));
113 123 sourceInfo.setReason(reqVO.getReason());
114 124 if (!makeCopy(sourceInfo)) {
115 125 throw new RuntimeException("抄送任务失败");
... ... @@ -117,15 +127,20 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy
117 127 return false;
118 128 }
119 129  
120   - //获取流程抄送分页
  130 + //获取流程抄送分页 TODO @kyle:接口已经注释,这里不用注释了哈;
121 131 @Override
122 132 public PageResult<BpmProcessInstanceCCPageItemRespVO> getMyProcessInstanceCCPage(Long loginUserId, BpmProcessInstanceCCMyPageReqVO pageReqVO) {
123 133 // 通过 BpmProcessInstanceExtDO 表,先查询到对应的分页
  134 + // TODO @kyle:一般读逻辑,Service 返回 PageResult<BpmProcessInstanceCopyDO> 即可。关联数据的查询和拼接,交给 Controller;目的是:保证 Service 聚焦写逻辑,清晰简洁;
124 135 PageResult<BpmProcessInstanceCopyDO> pageResult = processInstanceCopyMapper.selectPage(loginUserId, pageReqVO);
125 136 if (CollUtil.isEmpty(pageResult.getList())) {
126 137 return new PageResult<>(pageResult.getTotal());
127 138 }
128 139  
  140 + // TODO @kyle:这种可以简洁点;参考如下
  141 +// Map<String, ProcessInstance> processInstanceMap = bpmProcessInstanceService.getProcessInstanceMap(
  142 +// convertSet(pageResult.getList(), BpmProcessInstanceCopyDO::getProcessInstanceId));
  143 +
129 144 Set<String/* taskId */> taskIds = new HashSet<>();
130 145 Set<String/* processInstaneId */> processInstaneIds = new HashSet<>();
131 146 Set<Long/* userId */> userIds = new HashSet<>();
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/cc/BpmProcessInstanceCopyVO.java
1 1 package cn.iocoder.yudao.module.bpm.service.cc;
2 2  
3   -import com.baomidou.mybatisplus.annotation.TableId;
4 3 import io.swagger.v3.oas.annotations.media.Schema;
5 4 import lombok.Data;
6 5  
7 6 import java.time.LocalDateTime;
8   -import java.util.Date;
9   -
10 7  
  8 +// TODO @kyle:看看是不是要删除
11 9 /**
12 10 * 流程抄送视图对象 wf_copy
13 11 *
... ...
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/util/FlowableUtils.java
... ... @@ -88,6 +88,7 @@ public class FlowableUtils {
88 88 return task.getName();
89 89 }
90 90  
  91 + // TODO @kyle:Utils 里不做查询;可以封装到 bpmTaskService 里
91 92 public static Map<String/* taskId */, String/* taskName */> getTaskNameByTaskIds(Collection<String> taskIds) {
92 93 TaskService taskService = SpringUtil.getBean(TaskService.class);
93 94 List<Task> tasks = taskService.createTaskQuery().taskIds(taskIds).list();
... ... @@ -109,6 +110,7 @@ public class FlowableUtils {
109 110 return processInstance.getName();
110 111 }
111 112  
  113 + // TODO @kyle:Utils 里不做查询;可以封装到 bpmTaskService 里
112 114 public static Map<String/* processInstaneId */, String/* processInstaneName */> getProcessInstanceNameByTaskIds(Set<String> taskIds) {
113 115 RuntimeService runtimeService = SpringUtil.getBean(RuntimeService.class);
114 116 List<ProcessInstance> processInstances = runtimeService.createProcessInstanceQuery().processInstanceIds(taskIds).list();
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/ip/AreaController.java
... ... @@ -2,11 +2,11 @@ package cn.iocoder.yudao.module.system.controller.admin.ip;
2 2  
3 3 import cn.hutool.core.lang.Assert;
4 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  5 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 6 import cn.iocoder.yudao.framework.ip.core.Area;
6 7 import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils;
7 8 import cn.iocoder.yudao.framework.ip.core.utils.IPUtils;
8 9 import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeRespVO;
9   -import cn.iocoder.yudao.module.system.convert.ip.AreaConvert;
10 10 import io.swagger.v3.oas.annotations.Operation;
11 11 import io.swagger.v3.oas.annotations.Parameter;
12 12 import io.swagger.v3.oas.annotations.tags.Tag;
... ... @@ -31,7 +31,7 @@ public class AreaController {
31 31 public CommonResult<List<AreaNodeRespVO>> getAreaTree() {
32 32 Area area = AreaUtils.getArea(Area.ID_CHINA);
33 33 Assert.notNull(area, "获取不到中国");
34   - return success(AreaConvert.INSTANCE.convertList(area.getChildren()));
  34 + return success(BeanUtils.toBean(area.getChildren(), AreaNodeRespVO.class));
35 35 }
36 36  
37 37 @GetMapping("/get-by-ip")
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/socail/vo/user/SocialUserBindReqVO.java
... ... @@ -31,7 +31,4 @@ public class SocialUserBindReqVO {
31 31 @NotEmpty(message = "state 不能为空")
32 32 private String state;
33 33  
34   - public Integer getType() {
35   - return type;
36   - }
37 34 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/ip/AppAreaController.java
... ... @@ -2,10 +2,10 @@ package cn.iocoder.yudao.module.system.controller.app.ip;
2 2  
3 3 import cn.hutool.core.lang.Assert;
4 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  5 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 6 import cn.iocoder.yudao.framework.ip.core.Area;
6 7 import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils;
7 8 import cn.iocoder.yudao.module.system.controller.app.ip.vo.AppAreaNodeRespVO;
8   -import cn.iocoder.yudao.module.system.convert.ip.AreaConvert;
9 9 import io.swagger.v3.oas.annotations.Operation;
10 10 import io.swagger.v3.oas.annotations.tags.Tag;
11 11 import org.springframework.validation.annotation.Validated;
... ... @@ -28,7 +28,7 @@ public class AppAreaController {
28 28 public CommonResult<List<AppAreaNodeRespVO>> getAreaTree() {
29 29 Area area = AreaUtils.getArea(Area.ID_CHINA);
30 30 Assert.notNull(area, "获取不到中国");
31   - return success(AreaConvert.INSTANCE.convertList3(area.getChildren()));
  31 + return success(BeanUtils.toBean(area.getChildren(), AppAreaNodeRespVO.class));
32 32 }
33 33  
34 34 }
... ...
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/ip/AreaConvert.java deleted
1   -package cn.iocoder.yudao.module.system.convert.ip;
2   -
3   -import cn.iocoder.yudao.framework.ip.core.Area;
4   -import cn.iocoder.yudao.module.system.controller.admin.ip.vo.AreaNodeRespVO;
5   -import cn.iocoder.yudao.module.system.controller.app.ip.vo.AppAreaNodeRespVO;
6   -import org.mapstruct.Mapper;
7   -import org.mapstruct.factory.Mappers;
8   -
9   -import java.util.List;
10   -
11   -@Mapper
12   -public interface AreaConvert {
13   -
14   - AreaConvert INSTANCE = Mappers.getMapper(AreaConvert.class);
15   -
16   - List<AreaNodeRespVO> convertList(List<Area> list);
17   -
18   - List<AppAreaNodeRespVO> convertList3(List<Area> list);
19   -
20   - /**
21   - * 缺少单个转换
22   - * @param value
23   - * @return
24   - */
25   - AreaNodeRespVO map(Area value);
26   -
27   - AppAreaNodeRespVO map3(Area value);
28   -}