code review 工作流的驳回逻辑实现代码

pull/2/head
YunaiV 2022-05-28 22:39:56 +08:00
parent 5c3f30e60f
commit da4f300824
7 changed files with 17 additions and 5 deletions

View File

@ -10,17 +10,19 @@ import javax.validation.constraints.NotNull;
/**
* @author kemengkai
* @create 2022-05-07 08:05
* @create 2022-05-07 08:05 TODO kevo 使 swagger
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BpmTaskBackReqVO {
// TODO keuserId 应该使用后端的,不能前端传递,不然就越权了
@ApiModelProperty(value = "用户id", required = true, example = "1")
@NotEmpty(message = "用户id不能为空")
private String userId;
// TODO keprocInstId、taskId、oldTaskDefKey 三个,是不是只要传递一个 taskId字段不要存在推导关系
@ApiModelProperty(value = "流程编号id", required = true, example = "730da750-cc4f-11ec-b58e-1e429355e4a0")
@NotEmpty(message = "流程编号id不能为空")
private String procInstId;

View File

@ -9,11 +9,12 @@ import java.util.List;
/**
* @author kemengkai
* @create 2022-05-09 09:26
* @create 2022-05-09 09:26 TODO @ke@date ps dao
*/
@Mapper
public interface BpmActivityMapper extends BaseMapperX<BpmActivityDO> {
// TODO @ke这个方法是不是暂时用不到呀。如果是的话可以删除哈
/**
*
*
@ -21,6 +22,7 @@ public interface BpmActivityMapper extends BaseMapperX<BpmActivityDO> {
*/
List<BpmActivityDO> listAll();
// TODO @ke可以试试把 activiti 的表,映射成对应的实体,然后读取下。我们尽量避免 xml 操作,因为要做多 db 类型的支持,例如说 oracle 等。通过 mybatis plus 帮助我们生成不同数据库的表操作
/**
*
*

View File

@ -28,6 +28,7 @@ public interface BpmTaskExtMapper extends BaseMapperX<BpmTaskExtDO> {
return selectList(BpmTaskExtDO::getProcessInstanceId, processInstanceId);
}
// TODO @ke可以使用类上上面的 default 方法实现。然后,方法的命名上,要保持和 db 一样。因为 mapper 是数据层,不关注业务。例如说,这里,其实复用 updateByTaskId 方法即可
/**
*
*
@ -38,6 +39,7 @@ public interface BpmTaskExtMapper extends BaseMapperX<BpmTaskExtDO> {
*/
Boolean backByTaskId(@Param("taskId") String taskId, @Param("reason") String reason);
// TODO @ketong上哈
/**
*
*

View File

@ -29,7 +29,7 @@ public class BpmFlowableConfiguration {
ObjectProvider<FlowableEventListener> listeners,
BpmActivityBehaviorFactory bpmActivityBehaviorFactory) {
return configuration -> {
// 注册监听器,例如说 BpmActivitiEventListener
// 注册监听器,例如说 BpmActivityEventListener
configuration.setEventListeners(ListUtil.toList(listeners.iterator()));
// 设置 ActivityBehaviorFactory 实现类,用于流程任务的审核人的自定义
configuration.setActivityBehaviorFactory(bpmActivityBehaviorFactory);

View File

@ -39,4 +39,6 @@ public class BpmActivityBehaviorFactory extends DefaultActivityBehaviorFactory {
.setBpmTaskRuleService(bpmTaskRuleService);
}
// TODO @keSequentialMultiInstanceBehavior 这个抽空也可以看看
}

View File

@ -34,8 +34,9 @@ public class BpmActivityServiceImpl implements BpmActivityService {
@Override
@TenantIgnore
public List<BpmActivityRespVO> getActivityListByProcessInstanceId(String procInstId) {
// List<HistoricActivityInstance> activityList = historyService.createHistoricActivityInstanceQuery()
// .processInstanceId(procInstId).list();
// List<HistoricActivityInstance> activityList = historyService.createHistoricActivityInstanceQuery()
// .processInstanceId(procInstId).list();
// TODO @ke这个是想要过滤掉 aha.act_type_ != 'sequenceFlow' 类型么?
List<BpmActivityDO> bpmActivityDOList = bpmActivityMapper.listAllByProcInstIdAndDelete(procInstId);
return BpmActivityConvert.INSTANCE.convertList(bpmActivityDOList);
}

View File

@ -188,6 +188,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
// 拼接数据
// List<BpmTaskExtDO> tmpBpmTaskExtDOList = taskExtMapper.listByProcInstId(processInstanceId);
// TODO @ke这个钉钉是咋处理的得讨论下流程预测的需要程度哈。
List<BpmTaskExtDO> tmpBpmTaskExtDOList = taskExtMapper.selectListByProcessInstanceId(processInstanceId);
tmpBpmTaskExtDOList.sort(Comparator.comparing(BpmTaskExtDO::getCreateTime));
return hiTaskInstService.taskGetComment(tmpBpmTaskExtDOList, "");
@ -247,9 +248,11 @@ public class BpmTaskServiceImpl implements BpmTaskService {
// List<HistoricActivityInstance> hisActInstList =
// historyService.createHistoricActivityInstanceQuery().processInstanceId(reqVO.getProcInstId()).list();
// TODO @ke使用 historyService.createHistoricActivityInstanceQuery().processInstanceId(reqVO.getProcInstId()).list() 读取,会存在啥问题呀?
List<BpmActivityDO> bpmActivityDOList = bpmActivityMapper.listAllByProcInstIdAndDelete(reqVO.getProcInstId());
// List<BpmActivityDO> bpmActivityDOList = BpmTaskConvert.INSTANCE.copyList(hisActInstList, BpmActivityDO.class);
// bpmActivityDOList.forEach(bpmActivityDO -> log.info("bpmActivityDO = " + bpmActivityDO));
// TODO @ke如果 开始->a->b->c->d->结束,从 d 驳回到 b 的话,这样会不会导致 a 也被删除呀http://blog.wya1.com/article/636697030/details/7296 可以看看这篇文章哈。
List<String> taskIdList = bpmActivityDOList.stream().filter(
bpmActivityDO -> bpmActivityDO.getActivityId().equals(reqVO.getOldTaskDefKey())
&& !bpmActivityDO.getTaskId().equals(reqVO.getTaskId())).map(BpmActivityDO::getTaskId)