diff --git a/src/main/java/cn/palmte/work/config/activiti/ActConstant.java b/src/main/java/cn/palmte/work/config/activiti/ActConstant.java index 2fa77d7..f030f9a 100644 --- a/src/main/java/cn/palmte/work/config/activiti/ActConstant.java +++ b/src/main/java/cn/palmte/work/config/activiti/ActConstant.java @@ -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; /** diff --git a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java index 9b4547d..5b479d4 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java @@ -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 relationList = projectInstanceRelationRepository.findByProjectIdOrderByCreateTimeDesc(projectId); + if (relationList != null && !relationList.isEmpty()) { + String procInsId = relationList.get(0).getProcessInsId(); + + List 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"; } diff --git a/src/main/java/cn/palmte/work/model/ActTaskDef.java b/src/main/java/cn/palmte/work/model/ActTaskDef.java index ea390a8..201a4e0 100644 --- a/src/main/java/cn/palmte/work/model/ActTaskDef.java +++ b/src/main/java/cn/palmte/work/model/ActTaskDef.java @@ -49,7 +49,7 @@ public class ActTaskDef { private String rollbackTaskKey; /** - * 节点位置 -1结束节点 0-开始节点 1-第一个用户任务 + * 任务节点位置 -1结束节点 0-未知或者其他节点 1-开始节点 2-发起审批节点 */ @Column(name = "task_index") private int taskIndex; diff --git a/src/main/java/cn/palmte/work/model/ProjectTaskRecord.java b/src/main/java/cn/palmte/work/model/ProjectTaskRecord.java index d20751d..639a75d 100644 --- a/src/main/java/cn/palmte/work/model/ProjectTaskRecord.java +++ b/src/main/java/cn/palmte/work/model/ProjectTaskRecord.java @@ -63,4 +63,10 @@ public class ProjectTaskRecord { @Transient private String roleName; + /** + * 任务节点位置 -1结束节点 0-未知或者其他节点 1-开始节点 2-发起审批节点 + */ + @Column(name = "task_index") + private int taskIndex; + } diff --git a/src/main/java/cn/palmte/work/service/ActProcInsService.java b/src/main/java/cn/palmte/work/service/ActProcInsService.java index 891650b..649d813 100644 --- a/src/main/java/cn/palmte/work/service/ActProcInsService.java +++ b/src/main/java/cn/palmte/work/service/ActProcInsService.java @@ -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 variables) throws Exception { List 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(); diff --git a/src/main/java/cn/palmte/work/service/ActTaskDefService.java b/src/main/java/cn/palmte/work/service/ActTaskDefService.java index 05abc07..bd3187c 100644 --- a/src/main/java/cn/palmte/work/service/ActTaskDefService.java +++ b/src/main/java/cn/palmte/work/service/ActTaskDefService.java @@ -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); } } diff --git a/src/main/java/cn/palmte/work/service/ProjectTaskRecordService.java b/src/main/java/cn/palmte/work/service/ProjectTaskRecordService.java index 377dbb1..70ad724 100644 --- a/src/main/java/cn/palmte/work/service/ProjectTaskRecordService.java +++ b/src/main/java/cn/palmte/work/service/ProjectTaskRecordService.java @@ -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); diff --git a/src/main/resources/templates/admin/project_task_record_list.ftl b/src/main/resources/templates/admin/project_task_record_list.ftl index d5355b8..aa002c1 100644 --- a/src/main/resources/templates/admin/project_task_record_list.ftl +++ b/src/main/resources/templates/admin/project_task_record_list.ftl @@ -11,8 +11,9 @@
@@ -47,6 +48,46 @@
+

${procDefName!}

+
+ + + + + + + + + + + + + + + <#if (taskList)?exists> + <#list taskList as list> + + + + + + + + + + + + +
序号任务节点处理人开始时间结束时间用时意见
${list_index+1!}${list.taskName!}${list.assign!}${list.startTime?datetime}<#if list.endTime??> + ${list.endTime?datetime} + ${list.duration!}${list.comments!}
+
+
+
+ +
+
+

${procDefName!}