增加当前流程审核记录和当前流程图

master
pengqiang 2021-11-16 10:32:02 +08:00
parent 0dbf746912
commit f09f66dcaf
8 changed files with 86 additions and 12 deletions

View File

@ -12,9 +12,9 @@ public class ActConstant {
public static final String PROC_DEF_KEY="procDefKey";
/**
*
*
*/
public static final int TASK_INDEX_FIRST_USER_TASK= 1;
public static final int TASK_INDEX_FIRST_USER_TASK= 2;
/**

View File

@ -2,6 +2,7 @@ package cn.palmte.work.controller.backend;
import cn.palmte.work.bean.*;
import cn.palmte.work.model.*;
import cn.palmte.work.pojo.ActHisTask;
import cn.palmte.work.service.ProjectBudgetService;
import cn.palmte.work.service.ProjectEstimateService;
import cn.palmte.work.service.ProjectFinalSevice;
@ -14,6 +15,9 @@ import cn.palmte.work.utils.excel.ExportUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.activiti.engine.HistoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.history.HistoricProcessInstance;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -55,6 +59,10 @@ public class ProjectController extends BaseController {
private ProjectInstanceRelationRepository projectInstanceRelationRepository;
@Autowired
private ProjectFinalSevice projectFinalSevice;
@Autowired
private HistoryService historyService;
@Autowired
private ActTaskDefService actTaskDefService;
/**
*
@ -411,6 +419,20 @@ public class ProjectController extends BaseController {
if (list != null && !list.isEmpty()) {
model.put("list", list);
}
List<ProjectInstanceRelation> relationList = projectInstanceRelationRepository.findByProjectIdOrderByCreateTimeDesc(projectId);
if (relationList != null && !relationList.isEmpty()) {
String procInsId = relationList.get(0).getProcessInsId();
List<ActHisTask> hisTaskList = actTaskDefService.hisTaskList(procInsId);
model.put("taskList", hisTaskList);
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(procInsId).singleResult();
if (historicProcessInstance != null) {
model.put("procDefName", historicProcessInstance.getProcessDefinitionName());
}
}
return "admin/project_task_record_list";
}

View File

@ -49,7 +49,7 @@ public class ActTaskDef {
private String rollbackTaskKey;
/**
* -1 0- 1-
* -1 0- 1- 2-
*/
@Column(name = "task_index")
private int taskIndex;

View File

@ -63,4 +63,10 @@ public class ProjectTaskRecord {
@Transient
private String roleName;
/**
* -1 0- 1- 2-
*/
@Column(name = "task_index")
private int taskIndex;
}

View File

@ -25,6 +25,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import top.jfunc.common.db.QueryHelper;
import top.jfunc.common.db.bean.Page;
import top.jfunc.common.db.utils.Pagination;
@ -72,6 +74,7 @@ public class ActProcInsService {
* @param variables
* @return
*/
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public String startProcessInstance(String procDefKey, String businessKey, Map<String, Object> variables) throws Exception {
List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery().processDefinitionKey(procDefKey).active().orderByProcessDefinitionVersion().desc().list();
if (list == null || list.isEmpty()) {
@ -92,18 +95,18 @@ public class ActProcInsService {
throw new Exception("procDefKey(" + procDefKey + ")启动异常");
}
//设置发起人为办理人 然后完成任务 任务转入下一个审批节点
task.setAssignee(adminId);
String taskId = task.getId();
String comment = "提交" + processDefinition.getName();
Authentication.setAuthenticatedUserId(adminId);
taskService.addComment(taskId, procInsId, comment);
taskService.complete(taskId);
//设置发起人为办理人 然后完成任务 任务转入下一个审批节点
task.setAssignee(adminId);
taskService.complete(taskId);
if (actUtil.isProjectProcessIns(processInstance)) {
projectTaskRecordService.saveTaskRecord(Integer.parseInt(processInstance.getBusinessKey()),
task, ApproveStatusEnum.APPROVAL_PENDING.getApproveStatus(), comment);
task, ApproveStatusEnum.APPROVAL_PENDING.getApproveStatus(), ActConstant.TASK_INDEX_FIRST_USER_TASK, comment);
}
return processInstance.getId();

View File

@ -30,7 +30,7 @@ public class ActTaskDefService {
@Autowired
private ProjectTaskRecordService projectTaskRecordService;
@Autowired
private RepositoryService repositoryService;
private HistoryService historyService;
@Autowired
private TaskService taskService; //任务管理 与正在执行的任务管理相关的Service
@Autowired
@ -80,7 +80,8 @@ public class ActTaskDefService {
if (actUtil.isProjectProcessIns(processInstance)) {
//保存审批记录
projectTaskRecordService.saveTaskRecord(Integer.parseInt(processInstance.getBusinessKey()), currentTask, type, message);
projectTaskRecordService.saveTaskRecord(Integer.parseInt(processInstance.getBusinessKey()),
currentTask, type, actTaskDef.getTaskIndex(), message);
}
}

View File

@ -36,7 +36,7 @@ public class ProjectTaskRecordService {
* @param status
* @param comment
*/
public void saveTaskRecord(int projectId, Task task, int status, String comment) {
public void saveTaskRecord(int projectId, Task task, int status, int taskIndex, String comment) {
task.getProcessDefinitionId();
ProjectTaskRecord record = new ProjectTaskRecord();
record.setProjectId(projectId);
@ -48,6 +48,7 @@ public class ProjectTaskRecordService {
record.setTaskStatus(status);
record.setAssigneeId(InterfaceUtil.getAdminId() + "");
record.setAssigneeName(InterfaceUtil.getAdmin().getRealName());
record.setTaskIndex(taskIndex);
record.setCreateTime(new Date());
try {
projectTaskRecordRepository.save(record);

View File

@ -11,8 +11,9 @@
</div>
<div class="am-tabs am-margin" data-am-tabs>
<ul class="am-tabs-nav am-nav am-nav-tabs">
<li class="am-active"><a href="#tab1">审核记录</a></li>
<li><a href="#tab2">流程图</a></li>
<li class="am-active"><a href="#tab1">项目整体审核记录</a></li>
<li><a href="#tab2">当前流程审核记录</a></li>
<li><a href="#tab3">当前流程图</a></li>
</ul>
<div class="am-tabs-bd">
@ -47,6 +48,46 @@
<div class="am-tabs-bd">
<div class="am-tab-panel am-fade am-in" id="tab2">
<h1>${procDefName!}</h1>
<div class="am-u-sm-12 am-scrollable-horizontal">
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
<table class="am-table am-table-striped am-table-hover table-main">
<thead>
<tr class="am-text-nowrap">
<th class="table-title">序号</th>
<th class="table-title">任务节点</th>
<th class="table-title">处理人</th>
<th class="table-date">开始时间</th>
<th class="table-date">结束时间</th>
<th class="table-date">用时</th>
<th class="table-set am-text-center">意见</th>
</tr>
</thead>
<tbody>
<#if (taskList)?exists>
<#list taskList as list>
<tr>
<td>${list_index+1!}</td>
<td>${list.taskName!}</td>
<td>${list.assign!}</td>
<td>${list.startTime?datetime}</td>
<td><#if list.endTime??>
${list.endTime?datetime}
</#if></td>
<td>${list.duration!}</td>
<td>${list.comments!}</td>
</tr>
</#list>
</#if>
</tbody>
</table>
</div>
</div>
</div>
<div class="am-tabs-bd">
<div class="am-tab-panel am-fade am-in" id="tab3">
<h1>${procDefName!}</h1>
<img id="img" name="img" style="width: 950px" src="${base}/project/procInsPng/${projectId}">
</div>
</div>