|
@@ -2552,7 +2552,7 @@ public class TaskController extends BladeController {
|
|
|
checkMiddleApp(dto, task, taskParallels);
|
|
|
}
|
|
|
//判断签字状态
|
|
|
- boolean isCurrentUserLastApprove = checkTheTaskPersonSort(taskParallels);
|
|
|
+ boolean isCurrentUserLastApprove = checkTheTaskPersonSort(taskParallels,task.getFixedFlowId());
|
|
|
|
|
|
/*单条业务数据状态*/
|
|
|
updateCopyDataStatus(task, dto);
|
|
@@ -3061,10 +3061,10 @@ public class TaskController extends BladeController {
|
|
|
private void check(Task task) {
|
|
|
String sql_2 = "SELECT * FROM u_task_parallel WHERE process_instance_id = ? ORDER BY sort";
|
|
|
List<TaskParallel> taskParallels = jdbcTemplate.query(sql_2, new Object[]{task.getProcessInstanceId()}, new BeanPropertyRowMapper<>(TaskParallel.class));
|
|
|
- checkTheTaskPersonSort(taskParallels);
|
|
|
+ checkTheTaskPersonSort(taskParallels,task.getFixedFlowId());
|
|
|
}
|
|
|
|
|
|
- private boolean checkTheTaskPersonSort(List<TaskParallel> taskParallels) {
|
|
|
+ private boolean checkTheTaskPersonSort(List<TaskParallel> taskParallels,Long fixedFlowId) {
|
|
|
|
|
|
List<TaskParallel> taskParallelList = BeanUtil.copyProperties(taskParallels, TaskParallel.class);
|
|
|
/*未完成审批人名称*/
|
|
@@ -3079,7 +3079,19 @@ public class TaskController extends BladeController {
|
|
|
throw new ServiceException("获取当前用户任务信息失败");
|
|
|
}
|
|
|
Integer currentSort = current.getSort();
|
|
|
- taskParallels.removeIf(f -> f.getSort().equals(currentSort) && !f.getTaskUser().equals(SecureUtil.getUserId().toString()));
|
|
|
+ List<Integer> currentFlowAll = new ArrayList<>();
|
|
|
+ if (fixedFlowId != null && fixedFlowId != 0L) {
|
|
|
+ //先查询所有预设流程信息
|
|
|
+ List<FixedFlowLink> flowLinks = jdbcTemplate.query("SELECT * from u_fixed_flow_link WHERE is_deleted = 0 and fixed_flow_id = ? and fixed_flow_link = (SELECT fixed_flow_link from u_fixed_flow_link WHERE fixed_flow_id = ? and fixed_flow_branch_sort = ?) ",
|
|
|
+ new Object[]{fixedFlowId,fixedFlowId,currentSort}, new BeanPropertyRowMapper<>(FixedFlowLink.class));
|
|
|
+ //再判断当前流程是否是平行审批
|
|
|
+ if (flowLinks.size() > 1 && flowLinks.get(0).getFixedFlowLinkType() == 2) {
|
|
|
+ //如果是平行审批,则移除相同流程的其他人
|
|
|
+ List<Integer> list = flowLinks.stream().map(FixedFlowLink::getFixedFlowBranchSort).collect(Collectors.toList());
|
|
|
+ taskParallels.removeIf(f -> list.contains(f.getSort()) && !f.getTaskUser().equals(SecureUtil.getUserId().toString()));
|
|
|
+ currentFlowAll = list;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/*解析*/
|
|
|
for (TaskParallel parallel : taskParallels) {
|
|
@@ -3100,8 +3112,9 @@ public class TaskController extends BladeController {
|
|
|
/*判断平行签情况:最后一个人如果为平行签人,那么判断是否还有同sort人员的审批状态*/
|
|
|
TaskParallel taskParallel_1 = taskParallelList.get(taskParallelList.size() - 1);
|
|
|
if (taskParallel_1.getTaskUser().equals(SecureUtil.getUserId().toString())) {
|
|
|
+ List<Integer> all = currentFlowAll;
|
|
|
/*其他人是否已完成,都完成的情况下才视为最终审批人*/
|
|
|
- List<TaskParallel> collect = taskParallelList.stream().filter(f -> f.getSort().equals(taskParallel_1.getSort()) && !f.getTaskUser().equals(SecureUtil.getUserId().toString())).collect(Collectors.toList());
|
|
|
+ List<TaskParallel> collect = taskParallelList.stream().filter(f -> all.contains(f.getSort()) && !f.getTaskUser().equals(SecureUtil.getUserId().toString())).collect(Collectors.toList());
|
|
|
/*如果还有待审批(status=1)的,那么非最终审批人;只有全部是已审批(status=2)才视为最终审批人*/
|
|
|
List<TaskParallel> collect1 = collect.stream().filter(f -> f.getStatus().equals(1)).collect(Collectors.toList());
|
|
|
if (collect1.size() == 0) {
|