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

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 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.bean.*;
import cn.palmte.work.model.*; import cn.palmte.work.model.*;
import cn.palmte.work.pojo.ActHisTask;
import cn.palmte.work.service.ProjectBudgetService; import cn.palmte.work.service.ProjectBudgetService;
import cn.palmte.work.service.ProjectEstimateService; import cn.palmte.work.service.ProjectEstimateService;
import cn.palmte.work.service.ProjectFinalSevice; 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.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; 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.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -55,6 +59,10 @@ public class ProjectController extends BaseController {
private ProjectInstanceRelationRepository projectInstanceRelationRepository; private ProjectInstanceRelationRepository projectInstanceRelationRepository;
@Autowired @Autowired
private ProjectFinalSevice projectFinalSevice; 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()) { if (list != null && !list.isEmpty()) {
model.put("list", list); 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"; return "admin/project_task_record_list";
} }

View File

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

View File

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

View File

@ -30,7 +30,7 @@ public class ActTaskDefService {
@Autowired @Autowired
private ProjectTaskRecordService projectTaskRecordService; private ProjectTaskRecordService projectTaskRecordService;
@Autowired @Autowired
private RepositoryService repositoryService; private HistoryService historyService;
@Autowired @Autowired
private TaskService taskService; //任务管理 与正在执行的任务管理相关的Service private TaskService taskService; //任务管理 与正在执行的任务管理相关的Service
@Autowired @Autowired
@ -80,7 +80,8 @@ public class ActTaskDefService {
if (actUtil.isProjectProcessIns(processInstance)) { 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 status
* @param comment * @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(); task.getProcessDefinitionId();
ProjectTaskRecord record = new ProjectTaskRecord(); ProjectTaskRecord record = new ProjectTaskRecord();
record.setProjectId(projectId); record.setProjectId(projectId);
@ -48,6 +48,7 @@ public class ProjectTaskRecordService {
record.setTaskStatus(status); record.setTaskStatus(status);
record.setAssigneeId(InterfaceUtil.getAdminId() + ""); record.setAssigneeId(InterfaceUtil.getAdminId() + "");
record.setAssigneeName(InterfaceUtil.getAdmin().getRealName()); record.setAssigneeName(InterfaceUtil.getAdmin().getRealName());
record.setTaskIndex(taskIndex);
record.setCreateTime(new Date()); record.setCreateTime(new Date());
try { try {
projectTaskRecordRepository.save(record); projectTaskRecordRepository.save(record);

View File

@ -11,8 +11,9 @@
</div> </div>
<div class="am-tabs am-margin" data-am-tabs> <div class="am-tabs am-margin" data-am-tabs>
<ul class="am-tabs-nav am-nav am-nav-tabs"> <ul class="am-tabs-nav am-nav am-nav-tabs">
<li class="am-active"><a href="#tab1">审核记录</a></li> <li class="am-active"><a href="#tab1">项目整体审核记录</a></li>
<li><a href="#tab2">流程图</a></li> <li><a href="#tab2">当前流程审核记录</a></li>
<li><a href="#tab3">当前流程图</a></li>
</ul> </ul>
<div class="am-tabs-bd"> <div class="am-tabs-bd">
@ -47,6 +48,46 @@
<div class="am-tabs-bd"> <div class="am-tabs-bd">
<div class="am-tab-panel am-fade am-in" id="tab2"> <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}"> <img id="img" name="img" style="width: 950px" src="${base}/project/procInsPng/${projectId}">
</div> </div>
</div> </div>