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

This commit is contained in:
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 keprocInstIdtaskIdoldTaskDefKey 三个是不是只要传递一个 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

@ -36,6 +36,7 @@ public class BpmActivityServiceImpl implements BpmActivityService {
public List<BpmActivityRespVO> getActivityListByProcessInstanceId(String procInstId) {
// 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)