camunda获流程的审批记录详情示例


//所有的审批意见都会存到 ACT_HI_COMMENT 的表中,因此需要如下接口获取
List<Comment> taskComments = taskService.getTaskComments(taskId);

//完整示例
@Test
public void taskGetComment(){
List<HistoricActivityInstance> list = historyService.createHistoricActivityInstanceQuery()
.processInstanceId("d66d9908-9a71-11ea-9906-40e230303674")
.orderByHistoricActivityInstanceStartTime()
.asc()
.list();
List<Map<String,Object>> result=new ArrayList<>(list.size());
System.out.println(list.size());
for (HistoricActivityInstance historicActivityInstance : list) {
Map<String,Object> map=new HashMap<>(5);
String taskId = historicActivityInstance.getTaskId();
List<Comment> taskComments = taskService.getTaskComments(taskId);
System.out.println(taskComments.size());
map.put("activityName",historicActivityInstance.getActivityName());
map.put("activityType",matching(historicActivityInstance.getActivityType()));
map.put("assignee",historicActivityInstance.getAssignee()==null?"":historicActivityInstance.getAssignee());
map.put("startTime",DateFormatUtils.format(historicActivityInstance.getStartTime(),"yyyy-MM-dd HH:mm:ss") );
map.put("endTime",DateFormatUtils.format(historicActivityInstance.getEndTime(),"yyyy-MM-dd HH:mm:ss"));
map.put("costTime",getDatePoor(historicActivityInstance.getEndTime(),historicActivityInstance.getStartTime()));

if (taskComments.size()>0){
map.put("message",taskComments.get(0).getFullMessage());
}else {
map.put("message","");
}
result.add(map);
}
System.out.println(JSON.toJSONString(result));
}

private String matching(String ActivityType){
String value="";
switch (ActivityType){
case "startEvent":
value="流程开始";
break;
case "userTask":
value="用户处理";
break;
case "noneEndEvent":
value="流程结束";
break;
default:
value="未知节点";
break;
}
return value;
}

public String getDatePoor(Date endDate, Date nowDate) {

long nd = 1000 * 24 * 60 * 60;
long nh = 1000 * 60 * 60;
long nm = 1000 * 60;
long ns = 1000;
// 获得两个时间的毫秒时间差异
long diff = endDate.getTime() - nowDate.getTime();
// 计算差多少天
long day = diff / nd;
// 计算差多少小时
long hour = diff % nd / nh;
// 计算差多少分钟
long min = diff % nd % nh / nm;
// 计算差多少秒//输出结果
long sec = diff % nd % nh % nm / ns;
return day + "" + hour + "小时" + min + "分钟"+ sec + "";
}
 //结果展示
[{
    "costTime": "0天0小时0分钟0秒",
    "activityName": "开始",
    "startTime": "2020-05-20 16:13:50",
    "assignee": "无",
    "endTime": "2020-05-20 16:13:50",
    "activityType": "流程开始",
    "message": "无"
}, {
    "costTime": "0天0小时1分钟2秒",
    "activityName": "数据处理",
    "startTime": "2020-05-20 16:13:50",
    "assignee": "ass001",
    "endTime": "2020-05-20 16:14:53",
    "activityType": "用户处理",
    "message": "无"
}, {
    "costTime": "0天0小时1分钟25秒",
    "activityName": "审批",
    "startTime": "2020-05-20 16:14:53",
    "assignee": "0000",
    "endTime": "2020-05-20 16:16:18",
    "activityType": "用户处理",
    "message": "驳回原因:数据又遗漏"
}, {
    "costTime": "0天0小时0分钟25秒",
    "activityName": "数据处理",
    "startTime": "2020-05-20 16:16:18",
    "assignee": "ass001",
    "endTime": "2020-05-20 16:16:44",
    "activityType": "用户处理",
    "message": "无"
}, {
    "costTime": "0天0小时0分钟19秒",
    "activityName": "审批",
    "startTime": "2020-05-20 16:16:44",
    "assignee": "0000",
    "endTime": "2020-05-20 16:17:03",
    "activityType": "用户处理",
    "message": "驳回原因:数据有空值"
}, {
    "costTime": "0天0小时0分钟5秒",
    "activityName": "数据处理",
    "startTime": "2020-05-20 16:17:03",
    "assignee": "ass001",
    "endTime": "2020-05-20 16:17:08",
    "activityType": "用户处理",
    "message": "无"
}, {
    "costTime": "0天0小时0分钟19秒",
    "activityName": "审批",
    "startTime": "2020-05-20 16:17:08",
    "assignee": "0000",
    "endTime": "2020-05-20 16:17:28",
    "activityType": "用户处理",
    "message": "数据审批通过"
}, {
    "costTime": "0天0小时0分钟0秒",
    "activityName": "结束",
    "startTime": "2020-05-20 16:17:28",
    "assignee": "无",
    "endTime": "2020-05-20 16:17:28",
    "activityType": "流程结束",
    "message": "无"
}]
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM