diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/task/controller/TaskInfoController.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/task/controller/TaskInfoController.java index bae3ca8..8f53ed4 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/task/controller/TaskInfoController.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/task/controller/TaskInfoController.java @@ -1,7 +1,6 @@ package org.springblade.plugin.operation.task.controller; -import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.common.utils.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -24,9 +23,13 @@ import org.springblade.core.tool.utils.Func; import org.springblade.plugin.operation.task.entity.TaskInfo; import org.springblade.plugin.operation.task.service.ITaskInfoService; +import org.springblade.system.cache.DictBizCache; +import org.springblade.system.entity.DictBiz; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.ArrayList; +import java.util.List; /** @@ -132,5 +135,22 @@ public class TaskInfoController extends BladeController { return R.data(taskInfoService.list(wrapper)); } + /** + * 任务等级 + */ + @GetMapping("/taskLevel") + public R taskParent() { + List taskParent = DictBizCache.getList("task_level"); + if ("运维公司".equals(AuthUtil.getUser().getRoleName())) { + return R.data(taskParent); + } + List taskParents = new ArrayList<>(); + for (DictBiz dictBiz : taskParent) { + if (!"3".equals(dictBiz.getDictKey())) { + taskParents.add(dictBiz); + } + } + return R.data(taskParents); + } } diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/controller/WorkOrderController.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/controller/WorkOrderController.java index 41633bd..d73b874 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/controller/WorkOrderController.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/controller/WorkOrderController.java @@ -5,17 +5,23 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.AllArgsConstructor; import org.flowable.engine.history.HistoricProcessInstance; import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.DateUtil; +import org.springblade.plugin.operation.database.excel.DatabaseExcel; import org.springblade.plugin.operation.task.entity.TaskInfo; import org.springblade.plugin.operation.task.service.ITaskInfoService; import org.springblade.plugin.operation.workorder.entity.WorkOrder; +import org.springblade.plugin.operation.workorder.excel.WorkOrderExcel; import org.springblade.plugin.operation.workorder.service.IWorkOrderService; import org.springblade.plugin.workflow.process.model.WfProcess; +import org.springblade.system.cache.DictBizCache; import org.springblade.system.entity.AuthClient; import org.springblade.system.entity.Dept; +import org.springblade.system.entity.DictBiz; import org.springblade.system.feign.ISysClient; import org.springblade.system.user.entity.User; import org.springblade.system.user.feign.IUserClient; @@ -23,6 +29,8 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -70,6 +78,15 @@ public class WorkOrderController extends BladeController { @GetMapping("/conditionalData") public R> conditionalData() { Map map = new HashMap<>(); + + // 任务父类 + List taskParent = DictBizCache.getList("task_parent"); + map.put("taskParent", taskParent); + + // 任务等级 + List taskLevel = DictBizCache.getList("task_level"); + map.put("taskLevel", taskLevel); + // 任务种类 List taskInfos = taskInfoService.list(Wrappers.lambdaQuery() .select(TaskInfo::getTaskTypeName, TaskInfo::getId)); @@ -84,9 +101,16 @@ public class WorkOrderController extends BladeController { List depts = sysClient.getDepts().getData(); map.put("depts", depts); - return R.data(map); } + /** + * excel导出 + */ + @GetMapping("/exportExcel") + public void exportExcel(WorkOrder workOrder, HttpServletResponse response) { + workOrderService.exportExcel(workOrder, response); + } + } diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/entity/WorkOrder.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/entity/WorkOrder.java index 4491cda..c5413ca 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/entity/WorkOrder.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/entity/WorkOrder.java @@ -22,6 +22,9 @@ public class WorkOrder { // 分管部门 private String dept; + // 任务等级 + private String level; + // 运维公司 private String company; @@ -42,8 +45,12 @@ public class WorkOrder { private String taskId; - private String processInsId; + private String processInstanceId; private Date startTime; + private Date startTime2; + + private Date endTime2; + } diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/excel/WorkOrderExcel.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/excel/WorkOrderExcel.java new file mode 100644 index 0000000..262c63b --- /dev/null +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/excel/WorkOrderExcel.java @@ -0,0 +1,62 @@ +package org.springblade.plugin.operation.workorder.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class WorkOrderExcel implements Serializable { + + private static final long serialVersionUID = 1L; + + @ColumnWidth(20) + @ExcelProperty("任务种类") + private String taskType; + + @ColumnWidth(20) + @ExcelProperty("任务父类") + private String taskParent; + + @ColumnWidth(20) + @ExcelProperty("操作模块") + private String operationModule; + + @ColumnWidth(20) + @ExcelProperty("当前责任人") + private String currentResponsiblePerson; + + @ColumnWidth(20) + @ExcelProperty("分管部门") + private String dept; + + @ColumnWidth(20) + @ExcelProperty("任务等级") + private String level; + + @ColumnWidth(20) + @ExcelProperty("运维公司") + private String company; + + @ColumnWidth(20) + @ExcelProperty("发起人") + private String sponsor; + + @ColumnWidth(20) + @ExcelProperty("审批状态") + private String approvalStatus; + + @ColumnWidth(20) + @ExcelProperty("创建时间") + private String createTime; + + @ColumnWidth(20) + @ExcelProperty("结束时间") + private String endTime; + + @ColumnWidth(20) + @ExcelProperty("期望完成时间") + private String expectedCompletionTime; + +} diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/service/IWorkOrderService.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/service/IWorkOrderService.java index 9520937..faa2ec8 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/service/IWorkOrderService.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/service/IWorkOrderService.java @@ -7,6 +7,7 @@ import org.springblade.core.tool.api.R; import org.springblade.plugin.operation.workorder.entity.WorkOrder; import org.springblade.plugin.workflow.process.model.WfProcess; +import javax.servlet.http.HttpServletResponse; import java.util.Map; /** @@ -19,4 +20,6 @@ public interface IWorkOrderService { IPage> historyWorkOrder(WorkOrder workOrder, Query query); IPage myToDo(WorkOrder workOrder, Query query); + + void exportExcel(WorkOrder workOrder, HttpServletResponse response); } diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/service/impl/WorkOrderServiceImpl.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/service/impl/WorkOrderServiceImpl.java index ecb55b9..eef9924 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/service/impl/WorkOrderServiceImpl.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/service/impl/WorkOrderServiceImpl.java @@ -12,17 +12,27 @@ import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.history.HistoricProcessInstanceQuery; import org.flowable.task.api.Task; import org.flowable.task.api.TaskQuery; +import org.flowable.task.api.history.HistoricTaskInstanceQuery; import org.flowable.variable.api.history.HistoricVariableInstance; +import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; +import org.springblade.plugin.operation.database.service.IDataBaseService; +import org.springblade.plugin.operation.system.entity.ProjectInfo; +import org.springblade.plugin.operation.system.service.IProjectInfoService; import org.springblade.plugin.operation.workorder.entity.WorkOrder; +import org.springblade.plugin.operation.workorder.excel.WorkOrderExcel; import org.springblade.plugin.operation.workorder.service.IWorkOrderService; import org.springblade.plugin.workflow.core.utils.WfTaskUtil; +import org.springblade.system.cache.DictBizCache; import org.springblade.system.user.feign.IUserClient; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletResponse; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.time.Duration; import java.util.*; import java.util.stream.Collectors; @@ -39,46 +49,21 @@ public class WorkOrderServiceImpl implements IWorkOrderService { private final HistoryService historyService; private final RuntimeService runtimeService; private final IUserClient userClient; + private final IProjectInfoService projectInfoService; + private final IDataBaseService dataBaseService; @Override public IPage> historyWorkOrder(WorkOrder workOrder, Query query) { IPage> page = new Page<>(); - List list = historyService.createHistoricProcessInstanceQuery() - .orderByProcessInstanceStartTime() - .desc() - .processInstanceTenantId(WfTaskUtil.getTenantId()) - .listPage((query.getCurrent() - 1) * query.getSize(), query.getSize()); - + List> workOrders = getList(workOrder); - List> workOrders = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(list)) { - for (HistoricProcessInstance historicProcessInstance : list) { - Map varMap = new HashMap<>(); - List historicVars = historyService.createHistoricVariableInstanceQuery() - .processInstanceId(historicProcessInstance.getId()).list(); - historicVars.forEach(var -> - varMap.put(var.getVariableName(), var.getValue())); + // 分页 + workOrders = workOrders.stream().skip((query.getCurrent() - 1) * query.getSize()).limit(query.getSize()).collect(Collectors.toList()); - Task task = taskService.createTaskQuery().processInstanceId(historicProcessInstance.getId()).singleResult(); - if (task != null) { - if (task.getAssignee() != null) { - varMap.put("currentResponsiblePerson", userClient.userInfoById(Long.parseLong(task.getAssignee())).getData().getRealName()); - } else { - varMap.put("currentResponsiblePerson", "--"); - } - varMap.put("status", "进行中"); - } else { - varMap.put("currentResponsiblePerson", "--"); - varMap.put("status", "已完成"); - } - varMap.put("startTime", historicProcessInstance.getStartTime()); - varMap.put("endTime", historicProcessInstance.getEndTime()); - varMap.put("startUserId", userClient.userInfoById(Long.parseLong(historicProcessInstance.getStartUserId())).getData().getRealName()); - workOrders.add(varMap); - } - } + // 排序 +// workOrders = workOrders.stream().sorted(Comparator.comparing(WorkOrder::getCreateTime).reversed()).collect(Collectors.toList()); // 数据 page.setRecords(workOrders); @@ -109,39 +94,57 @@ public class WorkOrderServiceImpl implements IWorkOrderService { .desc() .taskTenantId(WfTaskUtil.getTenantId()) .active(); -// taskQuery.taskCandidateOrAssigned(taskUser) -// .taskCandidateGroupIn(Func.toStrList(taskGroup)); + taskQuery.taskCandidateOrAssigned(taskUser); // List listNeedDo = taskQuery.listPage((query.getCurrent() - 1) * query.getSize(), query.getSize()); List listNeedDo = taskQuery.list(); List workOrders = new ArrayList<>(); - for(Task task : listNeedDo){ + for (Task task : listNeedDo) { HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult(); WorkOrder order = new WorkOrder(); String executionId = task.getExecutionId(); System.out.println("executionid--" + executionId); Map variables = runtimeService.getVariables(task.getExecutionId()); - order.setTaskType(variables.get("renwuzhonglei").toString()); - order.setTaskParent(variables.get("renwufulei").toString()); - order.setOperationModule(variables.get("xitongmingchengshujuku").toString()); - order.setCurrentResponsiblePerson(task.getAssignee()); + // 任务种类 + order.setTaskType(variables.get("$renwuzhonglei").toString()); + + // 任务父类 + order.setTaskParent(DictBizCache.getById(Long.parseLong(variables.get("renwufulei").toString())).getDictValue()); + + // 操作模块 + ProjectInfo projectInfo = projectInfoService.getById(variables.get("xitongmingchengshujuku").toString()); + if (projectInfo != null) { + order.setOperationModule(projectInfo.getProjectName()); + } else { + order.setOperationModule(dataBaseService.getById(variables.get("xitongmingchengshujuku").toString()).getDataBaseName()); + } + + // 当前责任人 + order.setCurrentResponsiblePerson(userClient.userInfoById(Long.parseLong(task.getAssignee())).getData().getRealName()); order.setDept(variables.get("$guanlibumen").toString()); - order.setCompany(variables.get("yunweigongsi").toString()); + + // 运维公司 + order.setCompany(userClient.userInfoById(Long.parseLong(variables.get("yunweigongsi").toString())).getData().getRealName()); order.setSponsor(userClient.userInfoById(Long.parseLong(historicProcessInstance.getStartUserId())).getData().getRealName()); - order.setApprovalStatus("未完成"); + + if (task.getName().contains("审批")) { + order.setApprovalStatus("审批中"); + } else { + order.setApprovalStatus("进行中"); + } order.setCreateTime(historicProcessInstance.getStartTime()); order.setEndTime(historicProcessInstance.getEndTime()); order.setExpectedCompletionTime(variables.get("qiwangwanchengshijian").toString()); order.setTaskId(task.getId()); - order.setProcessInsId(task.getProcessInstanceId()); + order.setProcessInstanceId(task.getProcessInstanceId()); workOrders.add(order); } // 任务父类 - if (StringUtils.isNotBlank(workOrder.getTaskType())) { + if (StringUtils.isNotBlank(workOrder.getTaskParent())) { workOrders = workOrders.stream().filter(s -> s.getTaskParent().equals(workOrder.getTaskParent())).collect(Collectors.toList()); } @@ -151,32 +154,32 @@ public class WorkOrderServiceImpl implements IWorkOrderService { } // 当前责任人 - if (StringUtils.isNotBlank(workOrder.getTaskType())) { + if (StringUtils.isNotBlank(workOrder.getCurrentResponsiblePerson())) { workOrders = workOrders.stream().filter(s -> s.getCurrentResponsiblePerson().equals(workOrder.getCurrentResponsiblePerson())).collect(Collectors.toList()); } // 管理部门 - if (StringUtils.isNotBlank(workOrder.getTaskType())) { + if (StringUtils.isNotBlank(workOrder.getDept())) { workOrders = workOrders.stream().filter(s -> s.getDept().equals(workOrder.getDept())).collect(Collectors.toList()); } // 任务级别 - if (StringUtils.isNotBlank(workOrder.getTaskType())) { - workOrders = workOrders.stream().filter(s -> s.getTaskType().equals(workOrder.getTaskType())).collect(Collectors.toList()); - } +// if (StringUtils.isNotBlank(workOrder.getTaskType())) { +// workOrders = workOrders.stream().filter(s -> s.getTaskType().equals(workOrder.getTaskType())).collect(Collectors.toList()); +// } // 审批状态 - if (StringUtils.isNotBlank(workOrder.getTaskType())) { + if (StringUtils.isNotBlank(workOrder.getApprovalStatus())) { workOrders = workOrders.stream().filter(s -> s.getApprovalStatus().equals(workOrder.getApprovalStatus())).collect(Collectors.toList()); } // 发起人 - if (StringUtils.isNotBlank(workOrder.getTaskType())) { + if (StringUtils.isNotBlank(workOrder.getSponsor())) { workOrders = workOrders.stream().filter(s -> s.getSponsor().equals(workOrder.getSponsor())).collect(Collectors.toList()); } // 创建时间范围 - if (StringUtils.isNotBlank(workOrder.getTaskType())) { + if (workOrder.getStartTime() != null && workOrder.getEndTime() != null) { workOrders = workOrders.stream().filter(s -> (s.getCreateTime().after(workOrder.getStartTime())) && (s.getCreateTime().before(workOrder.getEndTime()))).collect(Collectors.toList()); } @@ -194,7 +197,7 @@ public class WorkOrderServiceImpl implements IWorkOrderService { .orderByTaskCreateTime() .desc() .taskTenantId(WfTaskUtil.getTenantId()) - .active().count()); + .active().taskCandidateOrAssigned(taskUser).count()); // 当前页数 page.setCurrent(query.getCurrent()); @@ -204,4 +207,243 @@ public class WorkOrderServiceImpl implements IWorkOrderService { return page; } + @Override + public void exportExcel(WorkOrder workOrder, HttpServletResponse response) { + List excels = new ArrayList<>(); + List> workOrders = new ArrayList<>(); + + if (StringUtils.isNotBlank(workOrder.getTaskType()) || + StringUtils.isNotBlank(workOrder.getTaskParent()) || + StringUtils.isNotBlank(workOrder.getCurrentResponsiblePerson()) || + StringUtils.isNotBlank(workOrder.getDept()) || + StringUtils.isNotBlank(workOrder.getLevel()) || + StringUtils.isNotBlank(workOrder.getApprovalStatus()) || + StringUtils.isNotBlank(workOrder.getSponsor()) || + (workOrder.getStartTime() != null && workOrder.getEndTime() != null) || + (workOrder.getStartTime2() != null && workOrder.getEndTime2() != null)) { + workOrders = getList(workOrder); + + } else { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Calendar c = Calendar.getInstance(); + //过去三个月 + c.setTime(new Date()); + c.add(Calendar.MONTH, -6); + Date m3 = c.getTime(); + + List list = historyService.createHistoricProcessInstanceQuery() + // 完成前 +// .finishedBefore() + // 完成后 +// .finishedAfter() + // 开始之前 +// .startedBefore() + // 开始之后 + .startedAfter(m3) + .orderByProcessInstanceStartTime() + .desc() + .processInstanceTenantId(WfTaskUtil.getTenantId()).list(); + + if (CollectionUtils.isNotEmpty(list)) { + for (HistoricProcessInstance historicProcessInstance : list) { + Map varMap = new HashMap<>(); + List historicVars = historyService.createHistoricVariableInstanceQuery() + .processInstanceId(historicProcessInstance.getId()).list(); + historicVars.forEach(var -> + varMap.put(var.getVariableName(), var.getValue())); + + // 任务父类 + varMap.put("renwufulei", DictBizCache.getById(Long.parseLong(varMap.get("renwufulei").toString())).getDictValue()); + + // 操作模块 + ProjectInfo projectInfo = projectInfoService.getById(varMap.get("xitongmingchengshujuku").toString()); + if (projectInfo != null) { + varMap.put("xitongmingchengshujuku", projectInfo.getProjectName()); + } else { + varMap.put("xitongmingchengshujuku", dataBaseService.getById(varMap.get("xitongmingchengshujuku").toString()).getDataBaseName()); + } + + // 运维公司 + varMap.put("yunweigongsi", userClient.userInfoById(Long.parseLong(varMap.get("yunweigongsi").toString())).getData().getRealName()); + + Task task = taskService.createTaskQuery().processInstanceId(historicProcessInstance.getId()).singleResult(); + if (task != null) { + if (task.getAssignee() != null) { + varMap.put("currentResponsiblePerson", userClient.userInfoById(Long.parseLong(task.getAssignee())).getData().getRealName()); + } else { + varMap.put("currentResponsiblePerson", "--"); + } + + // 审批状态 + if (task.getName().contains("审批")) { + varMap.put("status", "审批中"); + } else { + varMap.put("status", "进行中"); + } + } else { + varMap.put("currentResponsiblePerson", "--"); + varMap.put("status", "已完成"); + } + varMap.put("startTime", historicProcessInstance.getStartTime()); + varMap.put("endTime", historicProcessInstance.getEndTime()); + varMap.put("startUserId", userClient.userInfoById(Long.parseLong(historicProcessInstance.getStartUserId())).getData().getRealName()); + varMap.put("processInstanceId", historicProcessInstance.getId()); + varMap.put("taskId", ""); + workOrders.add(varMap); + } + } + } + + if (CollectionUtils.isNotEmpty(workOrders)) { + for (Map order : workOrders) { + WorkOrderExcel excel = new WorkOrderExcel(); + excel.setTaskType(order.get("$renwuzhonglei").toString()); + excel.setTaskParent(order.get("renwufulei").toString()); + excel.setOperationModule(order.get("xitongmingchengshujuku").toString()); + excel.setCurrentResponsiblePerson(order.get("currentResponsiblePerson").toString()); + excel.setDept(order.get("$guanlibumen").toString()); + excel.setLevel(order.get("$renwudengji").toString()); + excel.setCompany(order.get("yunweigongsi").toString()); + excel.setSponsor(order.get("startUserId").toString()); + excel.setApprovalStatus(order.get("status").toString()); + excel.setCreateTime(order.get("startTime").toString()); + + if (order.get("endTime") != null) { + excel.setEndTime(order.get("endTime").toString()); + } else { + excel.setEndTime("未结束"); + } + + excel.setExpectedCompletionTime(order.get("qiwangwanchengshijian").toString()); + excels.add(excel); + } + } + + ExcelUtil.export(response, "工单记录" + DateUtil.time(), "工单记录", excels, WorkOrderExcel.class); + } + + private List> getList(WorkOrder workOrder) { + List list = historyService.createHistoricProcessInstanceQuery() + .orderByProcessInstanceStartTime() + .desc() + .processInstanceTenantId(WfTaskUtil.getTenantId()).list(); + + List> workOrders = new ArrayList<>(); + + if (CollectionUtils.isNotEmpty(list)) { + for (HistoricProcessInstance historicProcessInstance : list) { + Map varMap = new HashMap<>(); + List historicVars = historyService.createHistoricVariableInstanceQuery() + .processInstanceId(historicProcessInstance.getId()).list(); + historicVars.forEach(var -> + varMap.put(var.getVariableName(), var.getValue())); + + // 任务父类 + varMap.put("renwufulei", DictBizCache.getById(Long.parseLong(varMap.get("renwufulei").toString())).getDictValue()); + + // 操作模块 + ProjectInfo projectInfo = projectInfoService.getById(varMap.get("xitongmingchengshujuku").toString()); + if (projectInfo != null) { + varMap.put("xitongmingchengshujuku", projectInfo.getProjectName()); + } else { + varMap.put("xitongmingchengshujuku", dataBaseService.getById(varMap.get("xitongmingchengshujuku").toString()).getDataBaseName()); + } + + // 运维公司 + varMap.put("yunweigongsi", userClient.userInfoById(Long.parseLong(varMap.get("yunweigongsi").toString())).getData().getRealName()); + + Task task = taskService.createTaskQuery().processInstanceId(historicProcessInstance.getId()).singleResult(); + if (task != null) { + if (task.getAssignee() != null) { + varMap.put("currentResponsiblePerson", userClient.userInfoById(Long.parseLong(task.getAssignee())).getData().getRealName()); + } else { + varMap.put("currentResponsiblePerson", "--"); + } + + // 审批状态 + if (task.getName().contains("审批")) { + varMap.put("status", "审批中"); + } else { + varMap.put("status", "进行中"); + } + } else { + varMap.put("currentResponsiblePerson", "--"); + varMap.put("status", "已完成"); + } + varMap.put("startTime", historicProcessInstance.getStartTime()); + varMap.put("endTime", historicProcessInstance.getEndTime()); + varMap.put("startUserId", userClient.userInfoById(Long.parseLong(historicProcessInstance.getStartUserId())).getData().getRealName()); + varMap.put("processInstanceId", historicProcessInstance.getId()); + varMap.put("taskId", ""); + workOrders.add(varMap); + } + } + + // 任务父类 + if (StringUtils.isNotBlank(workOrder.getTaskParent())) { + workOrders = workOrders.stream().filter(s -> s.get("renwufulei").equals(workOrder.getTaskParent())).collect(Collectors.toList()); + } + + // 任务等级 + if (StringUtils.isNotBlank(workOrder.getLevel())) { + workOrders = workOrders.stream().filter(s -> s.get("$renwudengji").equals(workOrder.getLevel())).collect(Collectors.toList()); + } + + // 任务种类 + if (StringUtils.isNotBlank(workOrder.getTaskType())) { + workOrders = workOrders.stream().filter(s -> s.get("$renwuzhonglei").equals(workOrder.getTaskType())).collect(Collectors.toList()); + } + + // 当前责任人 + if (StringUtils.isNotBlank(workOrder.getCurrentResponsiblePerson())) { + workOrders = workOrders.stream().filter(s -> s.get("currentResponsiblePerson").equals(workOrder.getCurrentResponsiblePerson())).collect(Collectors.toList()); + } + + // 管理部门 + if (StringUtils.isNotBlank(workOrder.getDept())) { + workOrders = workOrders.stream().filter(s -> s.get("$guanlibumen").equals(workOrder.getDept())).collect(Collectors.toList()); + } + + // 审批状态 + if (StringUtils.isNotBlank(workOrder.getApprovalStatus())) { + workOrders = workOrders.stream().filter(s -> s.get("status").equals(workOrder.getApprovalStatus())).collect(Collectors.toList()); + } + + // 发起人 + if (StringUtils.isNotBlank(workOrder.getSponsor())) { + workOrders = workOrders.stream().filter(s -> s.get("startUserId").equals(workOrder.getSponsor())).collect(Collectors.toList()); + } + + // 创建时间范围 + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (workOrder.getStartTime() != null && workOrder.getEndTime() != null) { + workOrders = workOrders.stream().filter(s -> + { + format.format(s.get("startTime")); + try { + return (format.parse(format.format(s.get("startTime"))).after(workOrder.getStartTime())) && + (format.parse(format.format(s.get("startTime"))).before(workOrder.getEndTime())); + } catch (ParseException e) { + e.printStackTrace(); + } + return false; + }).collect(Collectors.toList()); + } + + // 结束时间范围 + if (workOrder.getStartTime2() != null && workOrder.getEndTime2() != null) { + workOrders = workOrders.stream().filter(s -> { + if (s.get("endTime") != null) { + try { + return (format.parse(format.format(s.get("endTime"))).after(workOrder.getStartTime2())) && + (format.parse(format.format(s.get("endTime"))).before(workOrder.getEndTime2())); + } catch (ParseException e) { + e.printStackTrace(); + } + } + return false; + }).collect(Collectors.toList()); + } + return workOrders; + } }