diff --git a/ruoyi-ui/src/api/business/workflow/activiti/task.js b/ruoyi-ui/src/api/business/workflow/activiti/task.js index 4a9976e8..ff540420 100644 --- a/ruoyi-ui/src/api/business/workflow/activiti/task.js +++ b/ruoyi-ui/src/api/business/workflow/activiti/task.js @@ -9,6 +9,15 @@ export function listTask(query) { }) } +// 查询历史task列表 +export function listHistoryTask(query) { + return request({ + url: '/workflow/task/historyList', + method: 'get', + params: query + }) +} + // 查询表单 export function formDataShow(taskID) { return request({ diff --git a/ruoyi-ui/src/api/business/workflow/workflow/leave.js b/ruoyi-ui/src/api/business/workflow/workflow/leave.js index 05b3bf6f..673ba1b7 100644 --- a/ruoyi-ui/src/api/business/workflow/workflow/leave.js +++ b/ruoyi-ui/src/api/business/workflow/workflow/leave.js @@ -8,14 +8,6 @@ export function listLeave(query) { params: query }) } -// 查询请假列表 -export function listLeaveAll(query) { - return request({ - url: '/workflow/workflow/leave/listAll', - method: 'get', - params: query - }) -} // 查询请假详细 export function getLeave(id) { diff --git a/ruoyi-ui/src/views/business/workflow/activiti/task/history.vue b/ruoyi-ui/src/views/business/workflow/activiti/task/history.vue new file mode 100644 index 00000000..0bceb2a2 --- /dev/null +++ b/ruoyi-ui/src/views/business/workflow/activiti/task/history.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/ruoyi-ui/src/views/business/workflow/workflow/leave/leaveAll.vue b/ruoyi-ui/src/views/business/workflow/workflow/leave/leaveAll.vue deleted file mode 100644 index 0d2e61ec..00000000 --- a/ruoyi-ui/src/views/business/workflow/workflow/leave/leaveAll.vue +++ /dev/null @@ -1,228 +0,0 @@ - - - diff --git a/xjs-business/xjs-business-warning/src/main/java/com/xjs/server/MailServer.java b/xjs-business/xjs-business-warning/src/main/java/com/xjs/server/MailServer.java index bfb59e0e..b1fafecc 100644 --- a/xjs-business/xjs-business-warning/src/main/java/com/xjs/server/MailServer.java +++ b/xjs-business/xjs-business-warning/src/main/java/com/xjs/server/MailServer.java @@ -60,7 +60,8 @@ public class MailServer { * @param mailBean 邮箱实体 */ @MailLog - @Retryable(maxAttempts = 2, value = MailException.class) //当抛出MailException异常时,该方法重试两次 + //当抛出MailException异常时,该方法重试两次 + @Retryable(maxAttempts = 2, value = MailException.class) public Boolean sendMail(MailBean mailBean) { if (redisService.hasKey(MAIL_STATUS)) { diff --git a/xjs-business/xjs-business-webmagic/src/main/java/com/xjs/zol/service/impl/ZolNotebookServiceImpl.java b/xjs-business/xjs-business-webmagic/src/main/java/com/xjs/zol/service/impl/ZolNotebookServiceImpl.java index e5f9ae9e..1deed8f2 100644 --- a/xjs-business/xjs-business-webmagic/src/main/java/com/xjs/zol/service/impl/ZolNotebookServiceImpl.java +++ b/xjs-business/xjs-business-webmagic/src/main/java/com/xjs/zol/service/impl/ZolNotebookServiceImpl.java @@ -34,7 +34,7 @@ public class ZolNotebookServiceImpl extends ServiceImpl i }); //排序规则 - wr.orderByAsc(ZolPhone::getSort).orderByDesc(ZolPhone::getId); + wr.orderByDesc(ZolPhone::getId); return this.page(startPageMP,wr); } diff --git a/xjs-business/xjs-business-workflow/src/main/java/com/xjs/activiti/controller/TaskController.java b/xjs-business/xjs-business-workflow/src/main/java/com/xjs/activiti/controller/TaskController.java index d4d72069..799dfb12 100644 --- a/xjs-business/xjs-business-workflow/src/main/java/com/xjs/activiti/controller/TaskController.java +++ b/xjs-business/xjs-business-workflow/src/main/java/com/xjs/activiti/controller/TaskController.java @@ -35,11 +35,22 @@ public class TaskController extends BaseController { @RequiresPermissions("activiti:task:list") public TableDataInfo getTasks() { PageDomain pageDomain = TableSupport.buildPageRequest(); - Page hashMaps = actTaskService.selectProcessDefinitionList(pageDomain); + Page hashMaps = actTaskService.selectTaskList(pageDomain); return getDataTable(hashMaps); } + //获取我的历史任务 + @GetMapping("historyList") + @RequiresPermissions("activiti:task:historyList") + public TableDataInfo getHistoryTasks() { + PageDomain pageDomain = TableSupport.buildPageRequest(); + Page hashMaps = actTaskService.selectHistoryTaskList(pageDomain); + return getDataTable(hashMaps); + } + + + //渲染表单 @GetMapping(value = "/formDataShow/{taskID}") @RequiresPermissions("activiti:task:query") diff --git a/xjs-business/xjs-business-workflow/src/main/java/com/xjs/activiti/domain/dto/ActTaskDTO.java b/xjs-business/xjs-business-workflow/src/main/java/com/xjs/activiti/domain/dto/ActTaskDTO.java index d8cfc7e7..0b92d5f0 100644 --- a/xjs-business/xjs-business-workflow/src/main/java/com/xjs/activiti/domain/dto/ActTaskDTO.java +++ b/xjs-business/xjs-business-workflow/src/main/java/com/xjs/activiti/domain/dto/ActTaskDTO.java @@ -1,8 +1,9 @@ package com.xjs.activiti.domain.dto; -import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.web.domain.BaseEntity; import org.activiti.api.task.model.Task; +import org.activiti.engine.history.HistoricProcessInstance; +import org.activiti.engine.history.HistoricTaskInstance; import org.activiti.engine.runtime.ProcessInstance; import java.util.Date; @@ -24,8 +25,10 @@ public class ActTaskDTO extends BaseEntity { private String status; - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createdDate; + + private Date endDate; + private String instanceName; private String definitionKey; private String businessKey; @@ -49,6 +52,25 @@ public class ActTaskDTO extends BaseEntity { this.businessKey = processInstance.getBusinessKey(); } + public ActTaskDTO(HistoricTaskInstance historicTaskInstance, HistoricProcessInstance processInstance) { + this.id = historicTaskInstance.getId(); + this.processInstanceId = historicTaskInstance.getProcessInstanceId(); + this.name = historicTaskInstance.getName(); + this.createdDate = historicTaskInstance.getCreateTime(); + this.endDate = historicTaskInstance.getEndTime(); + this.instanceName = processInstance.getName(); + this.definitionKey = processInstance.getProcessDefinitionKey(); + this.businessKey = processInstance.getBusinessKey(); + } + + public Date getEndDate() { + return endDate; + } + + public void setEndDate(Date endDate) { + this.endDate = endDate; + } + public String getProcessInstanceId() { return processInstanceId; } diff --git a/xjs-business/xjs-business-workflow/src/main/java/com/xjs/activiti/service/IActTaskService.java b/xjs-business/xjs-business-workflow/src/main/java/com/xjs/activiti/service/IActTaskService.java index ccd25580..826528cf 100644 --- a/xjs-business/xjs-business-workflow/src/main/java/com/xjs/activiti/service/IActTaskService.java +++ b/xjs-business/xjs-business-workflow/src/main/java/com/xjs/activiti/service/IActTaskService.java @@ -17,11 +17,11 @@ import java.util.List; public interface IActTaskService { /** - * 查询流程定义列表 + * 查询待办任务列表 * @param pageDomain 分页参数 * @return */ - Page selectProcessDefinitionList(PageDomain pageDomain); + Page selectTaskList(PageDomain pageDomain); /** * 根据任务id查询表格数据 @@ -40,4 +40,11 @@ public interface IActTaskService { * @throws ParseException */ int formDataSave(String taskID, List awfs) throws ParseException; + + /** + * 查询已办任务 + * @param pageDomain -分页参数 + * @return page + */ + Page selectHistoryTaskList(PageDomain pageDomain); } diff --git a/xjs-business/xjs-business-workflow/src/main/java/com/xjs/activiti/service/impl/ActTaskServiceImpl.java b/xjs-business/xjs-business-workflow/src/main/java/com/xjs/activiti/service/impl/ActTaskServiceImpl.java index 6c0f5de3..76db7f36 100644 --- a/xjs-business/xjs-business-workflow/src/main/java/com/xjs/activiti/service/impl/ActTaskServiceImpl.java +++ b/xjs-business/xjs-business-workflow/src/main/java/com/xjs/activiti/service/impl/ActTaskServiceImpl.java @@ -21,7 +21,10 @@ import org.activiti.engine.HistoryService; import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; +import org.activiti.engine.history.HistoricProcessInstance; import org.activiti.engine.history.HistoricTaskInstance; +import org.activiti.engine.history.HistoricTaskInstanceQuery; +import org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntityImpl; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.TaskQuery; import org.activiti.runtime.api.model.impl.APITaskConverter; @@ -64,7 +67,7 @@ public class ActTaskServiceImpl implements IActTaskService { @Override - public Page selectProcessDefinitionList(PageDomain pageDomain) { + public Page selectTaskList(PageDomain pageDomain) { Page list = new Page(); //org.activiti.api.runtime.shared.query.Page pageTasks = taskRuntime @@ -109,6 +112,15 @@ public class ActTaskServiceImpl implements IActTaskService { org.activiti.engine.task.Task task = taskService.createTaskQuery().taskId(taskID).singleResult(); + UserTask userTask; + if (task == null) { + HistoricTaskInstance historicTask = historyService.createHistoricTaskInstanceQuery().taskId(taskID).singleResult(); + userTask = (UserTask) repositoryService.getBpmnModel(historicTask.getProcessDefinitionId()).getFlowElement(historicTask.getFormKey()); + + } else { + userTask = (UserTask) repositoryService.getBpmnModel(task.getProcessDefinitionId()).getFlowElement(task.getFormKey()); + } + /* ------------------------------------------------------------------------------ FormProperty_0ueitp2--__!!类型--__!!名称--__!!是否参数--__!!默认值 例子: @@ -121,7 +133,6 @@ public class ActTaskServiceImpl implements IActTaskService { */ //注意!!!!!!!!:表单Key必须要任务编号一模一样,因为参数需要任务key,但是无法获取,只能获取表单key“task.getFormKey()”当做任务key - UserTask userTask = (UserTask) repositoryService.getBpmnModel(task.getProcessDefinitionId()).getFlowElement(task.getFormKey()); if (userTask == null) { return null; @@ -171,6 +182,46 @@ public class ActTaskServiceImpl implements IActTaskService { return actWorkflowFormDataService.insertActWorkflowFormDatas(acwfds); } + @Override + public Page selectHistoryTaskList(PageDomain pageDomain) { + Page list = new Page(); + + Pageable pageable = Pageable.of((pageDomain.getPageNum() - 1) * pageDomain.getPageSize(), pageDomain.getPageSize()); + String username = SecurityUtils.getUsername(); + List postCode = SecurityUtils.getLoginUser().getSysUser().getPostCode(); + HistoricTaskInstanceQuery taskInstanceQuery = historyService.createHistoricTaskInstanceQuery() + .or() + .taskAssignee(username) + .taskOwner(username) + .taskCandidateUser(username, postCode) + .endOr(); + + List taskInstanceList = taskInstanceQuery.orderByHistoricTaskInstanceStartTime().desc().listPage(pageable.getStartIndex(), pageable.getMaxItems()); + + Set processInstanceIdIds = taskInstanceList.parallelStream().map(HistoricTaskInstance::getProcessInstanceId).collect(Collectors.toSet()); + List processInstanceList = new ArrayList<>(); + if (CollUtil.isNotEmpty(processInstanceIdIds)) { + processInstanceList = historyService.createHistoricProcessInstanceQuery().processInstanceIds(processInstanceIdIds).list(); + } + + List finalProcessInstanceList = processInstanceList; + List actTaskDTOS = taskInstanceList.stream() + .map(t -> + + new ActTaskDTO(t, finalProcessInstanceList.parallelStream() + .filter(pi -> + t.getProcessInstanceId().equals(pi.getId())).findAny().orElse(new HistoricProcessInstanceEntityImpl()) + ) + ) + .collect(Collectors.toList()); + list.addAll(actTaskDTOS); + + long count = taskInstanceQuery.count(); + list.setTotal(count); + + return list; + } + /** * task创建查询 @@ -188,7 +239,9 @@ public class ActTaskServiceImpl implements IActTaskService { .taskCandidateOrAssigned(username, postCode) .taskOwner(username) .endOr(); - List tasks = taskConverter.from(taskQuery.listPage(pageable.getStartIndex(), pageable.getMaxItems())); + + List list = taskQuery.listPage(pageable.getStartIndex(), pageable.getMaxItems()); + List tasks = taskConverter.from(list); return new PageImpl<>(tasks, Math.toIntExact(taskQuery.count())); } } diff --git a/xjs-business/xjs-business-workflow/src/main/java/com/xjs/workflow/leave/controller/WorkflowLeaveController.java b/xjs-business/xjs-business-workflow/src/main/java/com/xjs/workflow/leave/controller/WorkflowLeaveController.java index d052d36e..04ef9426 100644 --- a/xjs-business/xjs-business-workflow/src/main/java/com/xjs/workflow/leave/controller/WorkflowLeaveController.java +++ b/xjs-business/xjs-business-workflow/src/main/java/com/xjs/workflow/leave/controller/WorkflowLeaveController.java @@ -49,18 +49,6 @@ public class WorkflowLeaveController extends BaseController { return getDataTable(list); } - /** - * 查询请假列表 - */ - @GetMapping("/listAll") - @RequiresPermissions("workflow:leave:list") - @ApiOperation("查询请假列表") - public TableDataInfo listAll(WorkflowLeave workflowLeave) { - startPage(); - List list = workflowLeaveService.selectWorkflowLeaveList(workflowLeave); - return getDataTable(list); - } - /** * 导出请假列表 */