1. 查询登录用户的待办任务

private List<Task> queryMyTasks(){
String username = SecurityUtils.getUsername();
String roles = String.join(",", tokenService.getLoginUser().getRoles());
//待办
List<String> assignedTaskIds = taskService.createTaskQuery()
.taskAssignee(username)
// .taskCandidateOrAssigned(username)
.list().stream().map(TaskInfo::getId).collect(Collectors.toList());
//待签收
List<String> waitClaimTaskIdsByCandidateUser = actRuIdentityLinkMapper.queryTaskIdsByCandidateUser(username);
List<String> waitClaimTaskIdsByCandidateGroup = actRuIdentityLinkMapper.queryTaskIdsByCandidateGroup(roles);
//待签收任务合并去重
waitClaimTaskIdsByCandidateUser.removeAll(waitClaimTaskIdsByCandidateGroup);
waitClaimTaskIdsByCandidateUser.addAll(waitClaimTaskIdsByCandidateGroup); //待办、待签收合并去重
assignedTaskIds.removeAll(waitClaimTaskIdsByCandidateUser);
assignedTaskIds.addAll(waitClaimTaskIdsByCandidateUser); return assignedTaskIds.stream().map(taskId -> taskService.createTaskQuery().taskId(taskId).singleResult()).collect(Collectors.toList());
}

2.审批

注:查询待办任务时并没有使当前用户进行任务拾取,而是等他办理审批时确定拾取人是当前用户

如果是申请用户调整申请,则允许修改实体类+审批(对于申请用户并没有审批的功能,只是判断他是否继续申请还是取消申请)。如果是继续申请,则点击同意并修改实体类;取消申请则没必要对实体类进行修改了

public AjaxResult formDataSave(@PathVariable("taskID") String taskID,
@RequestBody List<ActWorkflowFormDataDTO> formData ) throws ParseException {
return toAjax(actTaskService.formDataSave(taskID, formData));
} public int formDataSave(String taskID, List<ActWorkflowFormDataDTO> awfs) throws ParseException {
// Task task = taskRuntime.task(taskID);
Task task = taskService.createTaskQuery().taskId(taskID).singleResult();
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult(); Boolean hasVariables = false;//没有任何参数
HashMap<String, Object> variables = new HashMap<String, Object>();
//前端传来的字符串,拆分成每个控件
List<ActWorkflowFormData> acwfds = new ArrayList<>();
for (ActWorkflowFormDataDTO awf : awfs) {
ActWorkflowFormData actWorkflowFormData = new ActWorkflowFormData(processInstance.getBusinessKey(),awf, task);
acwfds.add(actWorkflowFormData);
//构建参数集合
if(!"f".equals(awf.getControlIsParam())) {
variables.put(awf.getControlId(), awf.getControlValue());
hasVariables = true;
}
}
if (task.getAssignee() == null) {
// taskService.claim(TaskPayloadBuilder.claim().withTaskId(task.getId()).build());
//拾取任务
taskService.claim(task.getId(),SecurityUtils.getUsername());
}
if (hasVariables) {
//带参数完成任务
/* taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(taskID)
.withVariables(variables)
.build());*/
taskService.complete(taskID,variables);
} else {
/* taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(taskID)
.build());*/
taskService.complete(taskID);
}
// //写入数据库 这张表是自己设计的,在查看历史任务是会用到
return actWorkflowFormDataService.insertActWorkflowFormDatas(acwfds);
}

Activiti7开发(四)-我的待办的更多相关文章

  1. JAVA EE企业级开发四步走完全攻略 [转]

    http://bbs.51cto.com/thread-550558-1.html 本文是J2EE企业级开发四步走完全攻略索引,因内容比较广泛,涉及整个JAVA EE开发相关知识,这是一个长期的计划, ...

  2. C#的百度地图开发(四)前端显示与定位

    原文:C#的百度地图开发(四)前端显示与定位 有了这些定位信息,那要如何在前端的页面上显示出来呢?这需要用到百度地图的JavaScript的API.下面是示例代码. 前端代码 <%@ Page  ...

  3. 【JAVA EE企业级开发四步走完全攻略】

    本文是J2EE企业级开发四步走完全攻略索引,因内容比较广泛,涉及整个JAVA EE开发相关知识,这是一个长期的计划,单个发blog比较零散,所以整理此索引,决定以后每发一季JAVA EE blog后会 ...

  4. 从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装

    标题:从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11260750. ...

  5. STC8H开发(四): FwLib_STC8 封装库的介绍和注意事项

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  6. 【开学季】自学嵌入式开发|四核开发板|4412开发板|ARM+Android+linux技术

    淘宝店铺:迅为开发板http://arm-board.taobao.com 网站:http://www.topeetboard.com QQ咨询:2551456065 电话咨询:010-5895758 ...

  7. EOS智能合约开发(四):智能合约部署及调试(附编程示例)

    EOS智能合约开发(一):EOS环境搭建和创建节点 EOS智能合约开发(二):EOS创建和管理钱包 EOS智能合约开发(三):EOS创建和管理账号 部署智能合约的示例代码如下: $ cleos set ...

  8. 响应式开发(四)-----Bootstrap CSS----------Bootstrap CSS概览和相关注意事项

    本章先记录一些与Bootstrap CSS相关的一些特点和注意事项以及兼容性. HTML 5 文档类型(Doctype) Bootstrap 使用了一些 HTML5 元素和 CSS 属性.为了让这些正 ...

  9. web开发四个作用域

    web开发一共有四个作用域,范围从高到低分为appliaction作用域(全局作用域),session作用域,request作用域和page作用域.${base}是el表达式语法,它会自动先从page ...

  10. 基于Python的Webservice开发(四)-泛微OA的SOAP接口

    一.功能需求 泛微e-cology可以在流程中调用Webservice接口实现与其他系统的联动等复杂功能.但是目前泛微文档中仅提供了调用的方法,但是没有关于接口的相关开发信息. 本次案例是用Pytho ...

随机推荐

  1. 搭建Spring的源码环境

    搭建Spring的源码环境,包括以下几个步骤: 1.从Spring官网一步步找到Spring源码在github上的位置,并拉取Spring源码 2.安装和配置Gradle,用于构建Spring的源码 ...

  2. HDFS 内部工作机制

    HDFS 内部工作机制 HDFS集群分为两大角色:NameNode.DataNode (Secondary Namenode) NameNode 负责管理整个文件系统的元数据 DataNode 负责管 ...

  3. python+scrcpy实现将安卓设备录屏并保存到pc本地

    一)scrcpy下载及安装 参考链接:https://zhuanlan.zhihu.com/p/80264357 二)python+scrcpy实现将安卓设备录屏并保存到pc本地 示例代码: impo ...

  4. IOS弹出系统键盘后,页面不恢复

    <script> var u = navigator.userAgent, app = navigator.appVersion var isIOS = !!u.match(/\(i[^; ...

  5. 20200921--同行列对角线的格(奥赛一本通P89 2 二维数组)

    输入三个自然数n,i,j(1<=i<=n,1<=j<=n),输出在一个n*n格的棋盘中(行列均从1开始编号),与格子(i,j)同行,同列,同一对角线的所有格子的位置. 如:n= ...

  6. Linux命令之nc命令

    1.简介 nc是netcat的简写,是一个功能强大的网络工具,有着网络界的瑞士军刀美誉.nc命令在linux系统中实际命令是ncat,nc是软连接到ncat.nc命令的主要作用如下: 实现任意TCP/ ...

  7. vue 打包后可放置在任意名称的文件夹下

    1. build->utils.js: 2. build->webpack.prod.conf.js: 3. config->index.js:

  8. 问题记录[ PPOME 修改子屏幕日期弹框,No changes to data, periods undone. Message no. 5A496 ]

    最近在做组织信息增强,将子屏幕嵌入PPOME后,修改日期后会弹出信息框并重置300屏幕的开始日期.且PO13和PP01无异常 刚开始以为7000屏幕配置问题,但是对比后并没发现异常.跟踪消息号发现函数 ...

  9. PTA1002 写出这个数 (20 分)

    1002 写出这个数 (20 分) 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 1 ...

  10. 《JavaScript高级程序设计》Chapter03 JavaScript语言基础

    目录 Syntax Variable var let const Data Type Undefined Null Boolean Number String Symbol Object Operat ...