diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/homepage/enumutil/WorkingStatusEnum.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/homepage/enumutil/WorkingStatusEnum.java index d23857c..993f3ed 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/homepage/enumutil/WorkingStatusEnum.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/homepage/enumutil/WorkingStatusEnum.java @@ -18,8 +18,10 @@ package org.springblade.plugin.homepage.enumutil; * @Date 2023/2/24 0024 17:18 */ public enum WorkingStatusEnum { - 进行中("#4CA3FB"), + 已驳回("#F87171"), 审批中("#FF9130"), + 审批结束("#5774C4"), + 待实施("#4CA3FB"), 已完成("#2EE27C"); private String colorCode; diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/homepage/service/impl/HomePageServiceImpl.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/homepage/service/impl/HomePageServiceImpl.java index f044c3b..0c38d0b 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/homepage/service/impl/HomePageServiceImpl.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/homepage/service/impl/HomePageServiceImpl.java @@ -262,8 +262,7 @@ public class HomePageServiceImpl implements IHomePageService { } LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(WorkOrder::getManagement, deptId); - wrapper.eq(WorkOrder::getIsFinish, 0); + wrapper.in(WorkOrder::getManagement, nowUserDepts); wrapper.between(WorkOrder::getCreateTime, startTime(), endTime()); int count = workOrderService.count(wrapper); @@ -300,7 +299,7 @@ public class HomePageServiceImpl implements IHomePageService { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(WorkOrder::getManagement, deptId); + wrapper.in(WorkOrder::getManagement, nowUserDepts); wrapper.eq(WorkOrder::getIsFinish, 1); wrapper.between(WorkOrder::getFinishTime, startTime(), endTime()); int count = workOrderService.count(wrapper); @@ -562,18 +561,32 @@ public class HomePageServiceImpl implements IHomePageService { collect.forEach(hi -> { HistoricActivityInstance historicActivityInstance = historyService.createHistoricActivityInstanceQuery().processInstanceId(hi.getId()).unfinished().singleResult(); if (historicActivityInstance == null) { - map.put("已完成", map.get("已完成") == null ? 1 : map.get("已完成") + 1); + map.put("审批结束", map.get("审批结束") == null ? 1 : map.get("审批结束") + 1); } else { String activityName = historicActivityInstance.getActivityName(); if (StringUtils.contains(historicActivityInstance.getActivityName(), "审批")) { map.put("审批中", map.get("审批中") == null ? 1 : map.get("审批中") + 1); } else { - map.put("进行中", map.get("进行中") == null ? 1 : map.get("进行中") + 1); + map.put("已驳回", map.get("已驳回") == null ? 1 : map.get("已驳回") + 1); } // map.put(historicActivityInstance.getActivityName(), map.get(historicActivityInstance.getActivityName()) == null ? 1 : map.get(historicActivityInstance.getActivityName()) + 1); } }); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(WorkOrder::getManagement, nowUserDeptList); + wrapper.ge(WorkOrder::getCreateTime, lastMonthDate); + List orders = workOrderService.list(wrapper); + if (CollectionUtils.isNotEmpty(orders)) { + orders.forEach(workOrder -> { + if (workOrder.getIsFinish() == 1) { + map.put("已完成", map.get("已完成") == null ? 1 : map.get("已完成") + 1); + } else { + map.put("待实施", map.get("待实施") == null ? 1 : map.get("待实施") + 1); + } + }); + } + Iterator> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry next = iterator.next(); diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/listener/ProcessEndListener.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/listener/ProcessEndListener.java index 60e4c93..527cb37 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/listener/ProcessEndListener.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/listener/ProcessEndListener.java @@ -17,7 +17,6 @@ import java.util.Map; /** * @Description 流程结束监听器 * 流程结束时进行相关判断,如果是重复任务才会在autoStartModel表中建立记录 - * * @Author ytl * @Date 2023/3/2 0002 15:05 */ @@ -28,29 +27,29 @@ public class ProcessEndListener implements ExecutionListener { public void notify(DelegateExecution delegateExecution) { String event = delegateExecution.getEventName(); String processInstanceId = delegateExecution.getProcessInstanceId(); - Map variables = delegateExecution.getVariables(); - Map variablesMap = new HashMap<>(); + Map variables = delegateExecution.getVariables(); + Map variablesMap = new HashMap<>(); variablesMap.putAll(variables); switch (event) { - case "start" : - IAutoStartModelService autoStartModelService = (IAutoStartModelService)SpringContextHolder.getBean(AutoStartModelServiceImpl.class); + case "start": System.out.println("ProcessEndListener-start event-------------------"); - //判断工作流的的重复模式 - if(Func.isNotEmpty(variablesMap.get("chongfumoshi")) && !StringUtils.equals(RepeatEnum.不重复.getCode(),variablesMap.get("chongfumoshi").toString())){ + + break; + case "end": + IAutoStartModelService autoStartModelService = (IAutoStartModelService) SpringContextHolder.getBean(AutoStartModelServiceImpl.class); + //判断工作流的的重复模式1 + if (Func.isNotEmpty(variablesMap.get("chongfumoshi")) && !StringUtils.equals(RepeatEnum.不重复.getCode(), variablesMap.get("chongfumoshi").toString())) { //保存任务信息使任务工单可以被自动创建,测试一下是不是跟预想的一样是第一个执行的时候,第二个任务还有 - autoStartModelService.saveStartProcess(processInstanceId,variablesMap); + autoStartModelService.saveStartProcess(processInstanceId, variablesMap); //使任务可以自动开启,这里不用新建工单,因为TaskConfig会自动创建 // autoStartModelService.updateAutoStartModel(processInstanceId,variables); - }else{//不重复任务 - autoStartModelService.newWorkOrder(processInstanceId,variablesMap); + } else {//不重复任务 + autoStartModelService.newWorkOrder(processInstanceId, variablesMap); } - - break; - case "end" : System.out.println("ProcessEndListener-end event----------------------"); break; - case "take" : + case "take": System.out.println("ProcessEndListener-take event---------------------"); break; } diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/service/impl/DataBaseServiceImpl.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/service/impl/DataBaseServiceImpl.java index 716b381..eb2c7c0 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/service/impl/DataBaseServiceImpl.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/service/impl/DataBaseServiceImpl.java @@ -2,12 +2,11 @@ package org.springblade.plugin.operation.database.service.impl; 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.metadata.IPage; import lombok.AllArgsConstructor; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.base.BaseServiceImpl; -import org.springblade.core.mp.support.Query; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.plugin.operation.database.entity.DataBase; @@ -24,12 +23,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; -import java.util.ArrayList; import java.util.List; /** * 服务实现类 - * * @author BladeX */ @Service @@ -48,7 +45,11 @@ public class DataBaseServiceImpl extends BaseServiceImpl excelList = ExcelUtil.read(file, DatabaseExcel.class); if (CollectionUtils.isNotEmpty(excelList)) { // List dataTableList = new ArrayList<>(); - excelList.forEach(item -> { + for (DatabaseExcel item : excelList) { + // 如果数据库类型不存在,跳过这条数据 + if (StringUtils.isBlank(DictBizCache.getKey("database_type", item.getDataBaseType()))) { + continue; + } Integer databaseType = Integer.parseInt(DictBizCache.getKey("database_type", item.getDataBaseType())); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.select(DataBase::getId); @@ -85,7 +86,49 @@ public class DataBaseServiceImpl extends BaseServiceImpl { +// String key = DictBizCache.getKey("database_type", item.getDataBaseType()); +// if (StringUtils.isBlank(key)) { +// +// } +// Integer databaseType = Integer.parseInt(DictBizCache.getKey("database_type", item.getDataBaseType())); +// LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); +// wrapper.select(DataBase::getId); +// wrapper.eq(DataBase::getDataBaseName, item.getDataBaseName()); +//// wrapper.eq(DataBase::getDataBaseType, databaseType); +// wrapper.eq(DataBase::getDataBaseIp, item.getDataBaseIp()); +// wrapper.eq(DataBase::getDataBasePort,item.getDataBasePort()); +// DataBase base = getOne(wrapper); +// if (base == null) { +// // 数据库 +// DataBase dataBase = BeanUtil.copy(item, DataBase.class); +// String data = sysClient.getDeptIds(AuthUtil.getTenantId(), item.getDeptId()).getData(); +// User user = userClient.userInfoByName(AuthUtil.getTenantId(), item.getCompany()).getData(); +// dataBase.setDataBaseType(databaseType); +// dataBase.setDeptId(Long.parseLong(data)); +// dataBase.setCompany(user.getId()); +// save(dataBase); +// +// // 数据表 +// DataTable dataTable = BeanUtil.copy(item, DataTable.class); +// dataTable.setDataBaseId(dataBase.getId()); +//// dataTableList.add(dataTable); +// dataTableService.save(dataTable); +// } else { +// LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); +// queryWrapper.eq(DataTable::getDataBaseId, base.getId()); +// queryWrapper.eq(DataTable::getDataTableName, item.getDataTableName()); +// int count = dataTableService.count(queryWrapper); +// if (count <= 0) { +// // 数据表 +// DataTable dataTable = BeanUtil.copy(item, DataTable.class); +// dataTable.setDataBaseId(base.getId()); +// dataTableService.save(dataTable); +//// dataTableList.add(dataTable); +// } +// } +// }); // return dataTableService.saveBatch(dataTableList); return true; } diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/system/controller/ProjectInfoController.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/system/controller/ProjectInfoController.java index b8f8a20..8ac32ae 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/system/controller/ProjectInfoController.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/system/controller/ProjectInfoController.java @@ -190,7 +190,7 @@ public class ProjectInfoController extends BladeController { for (DataTable dataTable : dataTableList) { TaskAndDataBase taskAndDataBase = new TaskAndDataBase(); taskAndDataBase.setId(dataTable.getId()); - taskAndDataBase.setName(dataTable.getDataTableName()); + taskAndDataBase.setName(dataTable.getDataTableAlias() + "(" + dataTable.getDataTableName() + ")"); list.add(taskAndDataBase); } } 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 562fff4..d8529b2 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 @@ -144,13 +144,13 @@ public class TaskInfoController extends BladeController { @GetMapping("/taskTypeData") public R taskTypeData(String parentId) { QueryWrapper wrapper = new QueryWrapper<>(); -// if (StringUtils.isNotBlank(parentId)) { + if (StringUtils.isNotBlank(parentId)) { wrapper.eq("task_parent_id", parentId); -// } else { -// wrapper.select("DISTINCT task_type_name"); -// } - if (!"运维公司".equals(AuthUtil.getUser().getRoleName())) { - wrapper.ne("task_level", 1625035000825049090L); + if (!"运维公司".equals(AuthUtil.getUser().getRoleName())) { + wrapper.ne("task_level", 1625035000825049090L); + } + } else { + wrapper.select("DISTINCT task_type_name"); } return R.data(taskInfoService.list(wrapper)); } diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/excel/OrderExcel.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/excel/OrderExcel.java new file mode 100644 index 0000000..ec732ee --- /dev/null +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/excel/OrderExcel.java @@ -0,0 +1,58 @@ +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 OrderExcel implements Serializable { + + private static final long serialVersionUID = 1L; + + @ColumnWidth(20) + @ExcelProperty("任务父类") + private String taskParent; + + @ColumnWidth(20) + @ExcelProperty("任务种类") + private String taskType; + + @ColumnWidth(20) + @ExcelProperty("操作模块") + private String operationModule; + + @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/impl/WorkOrderServiceImpl.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/service/impl/WorkOrderServiceImpl.java index 3952882..b70e8b4 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 @@ -29,6 +29,7 @@ import org.springblade.plugin.operation.system.service.IModuleInfoService; import org.springblade.plugin.operation.system.service.IProjectInfoService; import org.springblade.plugin.operation.task.service.ITaskInfoService; import org.springblade.plugin.operation.workorder.entity.WorkOrder; +import org.springblade.plugin.operation.workorder.excel.OrderExcel; import org.springblade.plugin.operation.workorder.excel.WorkOrderExcel; import org.springblade.plugin.operation.workorder.mapper.WorkOrderMapper; import org.springblade.plugin.operation.workorder.service.IWorkOrderService; @@ -147,7 +148,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl objectPage = new Page<>(query.getCurrent() - (count / query.getSize()), query.getSize()); +// Page objectPage = new Page<>(query.getCurrent() - (workOrders.size() / query.getSize()), query.getSize()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(WorkOrder::getMaintenanceCompany, AuthUtil.getUserId()); wrapper.eq(WorkOrder::getIsFinish, 0); - wrapper.orderByDesc(WorkOrder::getCreateTime); if (workOrder.getIsBecomeDue() == 1) { wrapper.le(WorkOrder::getExpectedCompletionTime, new Date()); } -// IPage iPage = page(objectPage, wrapper); - - + wrapper.orderByDesc(WorkOrder::getCreateTime); List records = list(wrapper); + +// IPage iPage = page(objectPage, wrapper); // List orders = iPage.getRecords(); setAllName(records); workOrders.addAll(records); + if (workOrder.getIsBecomeDue() == 1) { workOrders = workOrders.stream().filter(s -> new Date().after(s.getExpectedCompletionTime())).collect(Collectors.toList()); } @@ -224,15 +225,168 @@ public class WorkOrderServiceImpl extends BaseServiceImpl (s.getCreateTime().after(workOrder.getStartTime())) && (s.getCreateTime().before(workOrder.getEndTime()))).collect(Collectors.toList()); } + // 排序 + workOrders = workOrders.stream().sorted(Comparator.comparing(WorkOrder::getCreateTime).reversed()).collect(Collectors.toList()); + // 总条数 page.setTotal(workOrders.size()); + // 分页 + workOrders = workOrders.stream().skip((query.getCurrent() - 1) * query.getSize()).limit(query.getSize()).collect(Collectors.toList()); +// workOrders = workOrders.stream().skip(0).limit(query.getSize()).collect(Collectors.toList()); + + // 数据 + page.setRecords(workOrders); + + // 当前页数 + page.setCurrent(query.getCurrent()); + + // 当前条数 + page.setSize(query.getSize()); + return page; + } + + public IPage myToDo2(WorkOrder workOrder, Query query) { + IPage page = new Page<>(); + + String taskUser = WfTaskUtil.getTaskUser(); +// String taskGroup = WfTaskUtil.getCandidateGroup(); + //当前获取登录人deptid +// String deptId = AuthUtil.getDeptId(); +// List nowUserDepts = Func.toLongList(deptId); + + + TaskQuery taskQuery = taskService.createTaskQuery() + .orderByTaskCreateTime() + .desc() + .taskTenantId(WfTaskUtil.getTenantId()) + .active(); + taskQuery.taskCandidateOrAssigned(taskUser); +// long count = taskQuery.count(); + +// List listNeedDo = taskQuery.listPage((query.getCurrent() - 1) * query.getSize(), query.getSize()); + List listNeedDo = taskQuery.list(); + + List workOrders = new ArrayList<>(); + + 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.setTaskTypeName(variables.get("$renwuzhonglei").toString()); + + // 任务父类 + order.setTaskParentName(DictBizCache.getById(Long.parseLong(variables.get("renwufulei").toString())).getDictValue()); + + // 操作模块 + ProjectInfo projectInfo = projectInfoService.getById(variables.get("xitongmingchengshujuku").toString()); + if (projectInfo != null) { + order.setOperateSysName(projectInfo.getProjectName()); + } else { + order.setOperateSysName(dataBaseService.getById(variables.get("xitongmingchengshujuku").toString()).getDataBaseName()); + } + + // 当前责任人 + order.setCurrentResponsiblePerson(userClient.userInfoById(Long.parseLong(task.getAssignee())).getData().getRealName()); + order.setManagementName(variables.get("$guanlibumen").toString()); + + // 运维公司 + order.setMaintenanceCompanyName(userClient.userInfoById(Long.parseLong(variables.get("yunweigongsi").toString())).getData().getRealName()); + order.setApplyUserName(userClient.userInfoById(Long.parseLong(historicProcessInstance.getStartUserId())).getData().getRealName()); + + if (task.getName().contains("审批")) { + order.setApprovalStatus("审批中"); + } else { + order.setApprovalStatus("已驳回"); + } + order.setCreateTime(historicProcessInstance.getStartTime()); + order.setEndTime(historicProcessInstance.getEndTime()); + + if (variables.get("qiwangwanchengshijian") != null) { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + order.setExpectedCompletionTime(dateFormat.parse(variables.get("qiwangwanchengshijian").toString())); + } catch (ParseException e) { + e.printStackTrace(); + } + } + order.setTaskId(task.getId()); + order.setProcessInstanceId(task.getProcessInstanceId()); + order.setStatus(0); + workOrders.add(order); + } + + + if (workOrder.getIsBecomeDue() == 1) { + workOrders = workOrders.stream().filter(s -> new Date().after(s.getExpectedCompletionTime())).collect(Collectors.toList()); + } + + // 任务父类 + if (StringUtils.isNotBlank(workOrder.getTaskParentName())) { + workOrders = workOrders.stream().filter(s -> s.getTaskParentName().equals(workOrder.getTaskParentName())).collect(Collectors.toList()); + } + + // 任务种类 + if (StringUtils.isNotBlank(workOrder.getTaskTypeName())) { + workOrders = workOrders.stream().filter(s -> s.getTaskTypeName().equals(workOrder.getTaskTypeName())).collect(Collectors.toList()); + } + + // 当前责任人 + if (StringUtils.isNotBlank(workOrder.getCurrentResponsiblePerson())) { + workOrders = workOrders.stream().filter(s -> s.getCurrentResponsiblePerson().equals(workOrder.getCurrentResponsiblePerson())).collect(Collectors.toList()); + } + + // 管理部门 + if (StringUtils.isNotBlank(workOrder.getManagementName())) { + workOrders = workOrders.stream().filter(s -> s.getManagementName().equals(workOrder.getManagementName())).collect(Collectors.toList()); + } + + // 审批状态 + if (StringUtils.isNotBlank(workOrder.getApprovalStatus())) { + workOrders = workOrders.stream().filter(s -> s.getApprovalStatus().equals(workOrder.getApprovalStatus())).collect(Collectors.toList()); + } + + // 发起人 + if (StringUtils.isNotBlank(workOrder.getApplyUserName())) { + workOrders = workOrders.stream().filter(s -> s.getApplyUserName().equals(workOrder.getApplyUserName())).collect(Collectors.toList()); + } + + // 创建时间范围 + 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()); + } + // 排序 workOrders = workOrders.stream().sorted(Comparator.comparing(WorkOrder::getCreateTime).reversed()).collect(Collectors.toList()); + // 工单记录 + Page objectPage = new Page<>(query.getCurrent() - (workOrders.size() / query.getSize()), query.getSize()); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(WorkOrder::getMaintenanceCompany, AuthUtil.getUserId()); + wrapper.eq(WorkOrder::getIsFinish, 0); + if (workOrder.getIsBecomeDue() == 1) { + wrapper.le(WorkOrder::getExpectedCompletionTime, new Date()); + } + wrapper.orderByDesc(WorkOrder::getCreateTime); + List records = list(wrapper); + + IPage iPage = page(objectPage, wrapper); + List orders = iPage.getRecords(); + + setAllName(orders); + + // 总条数 + page.setTotal(workOrders.size() + iPage.getTotal()); + + workOrders.addAll(orders); + // 分页 - workOrders = workOrders.stream().skip((query.getCurrent() - 1) * query.getSize()).limit(query.getSize()).collect(Collectors.toList()); -// workOrders = workOrders.stream().skip(0).limit(query.getSize()).collect(Collectors.toList()); +// workOrders = workOrders.stream().skip((query.getCurrent() - 1) * query.getSize()).limit(query.getSize()).collect(Collectors.toList()); + workOrders = workOrders.stream().skip(0).limit(query.getSize()).collect(Collectors.toList()); // 数据 page.setRecords(workOrders); @@ -317,7 +471,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl myPage(WorkOrder workOrder, Query query) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(workOrder); - wrapper.eq(WorkOrder::getManagement, AuthUtil.getDeptId()); + wrapper.in(WorkOrder::getManagement, Func.toStrList(AuthUtil.getDeptId())); if (workOrder.getStartTime() != null && workOrder.getEndTime() != null) { wrapper.between(WorkOrder::getCreateTime, workOrder.getStartTime(), workOrder.getEndTime()); - } - if (workOrder.getStartTime2() != null && workOrder.getEndTime2() != null) { - wrapper.between(WorkOrder::getFinishTime, workOrder.getStartTime2(), workOrder.getEndTime2()); + wrapper.ge(WorkOrder::getCreateTime, workOrder.getStartTime()); + wrapper.le(WorkOrder::getFinishTime, workOrder.getEndTime()); } wrapper.orderByDesc(WorkOrder::getCreateTime); IPage page = page(Condition.getPage(query), wrapper); @@ -380,11 +533,11 @@ public class WorkOrderServiceImpl extends BaseServiceImpl workOrderList) { - List excels = new ArrayList<>(); + List excels = new ArrayList<>(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(workOrderList)) { + if (CollectionUtils.isNotEmpty(workOrderList)) { for (WorkOrder record : workOrderList) { - WorkOrderExcel excel = new WorkOrderExcel(); + OrderExcel excel = new OrderExcel(); excel.setTaskType(taskInfoService.getById(record.getTaskType()).getTaskTypeName()); excel.setTaskParent(DictBizCache.getById(Long.parseLong(record.getTaskParent())).getDictValue()); if (record.getType() == 1) { @@ -412,7 +565,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl records) { @@ -483,11 +636,11 @@ public class WorkOrderServiceImpl extends BaseServiceImpl { - 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())); + return (format.parse(format.format(s.get("startTime"))).after(workOrder.getStartTime())) && + (format.parse(format.format(s.get("endTime"))).before(workOrder.getEndTime())); } catch (ParseException e) { e.printStackTrace(); } @@ -585,6 +724,21 @@ public class WorkOrderServiceImpl extends BaseServiceImpl +// { +// if (s.get("endTime") != null) { +// try { +// return format.parse(format.format(s.get("endTime"))).before(workOrder.getEndTime()); +// } catch (ParseException e) { +// e.printStackTrace(); +// } +// } +// return false; +// }).collect(Collectors.toList()); +// } return workOrders; } } diff --git a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/process/service/impl/WfProcessService.java b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/process/service/impl/WfProcessService.java index 1b8dfbb..236f3fc 100644 --- a/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/process/service/impl/WfProcessService.java +++ b/lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workflow/process/service/impl/WfProcessService.java @@ -1150,18 +1150,18 @@ public class WfProcessService implements IWfProcessService { .finished(); // ======start======只允许撤回一次,若需无限撤回可注释此段代码====== - long count = query.count(); - if (count > 1) { - return false; - } +// long count = query.count(); +// if (count > 1) { +// return false; +// } // ======end====== List list = query.list(); for (HistoricTaskInstance t : list) { // 判断已完成的任务是否都是当前登录人处理的,若是则可撤回 if (StringUtil.isNotBlank(t.getAssignee())) { - if (!currentUser.equals(t.getAssignee())) { - return false; - } +// if (!currentUser.equals(t.getAssignee())) { +// return false; +// } } else { WfTaskUser taskUser = this.getTaskUser(t.getProcessDefinitionId(), t.getProcessInstanceId(), t.getTaskDefinitionKey()); List userList = taskUser.getUserList();