修改定时任务相关

main
litao 3 years ago
parent 0117a2d5ea
commit f1958310e2
  1. 4
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/config/TaskConfig.java
  2. 4
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/database/controller/DataBaseController.java
  3. 52
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/controller/WorkOrderController.java
  4. 43
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/entity/WorkOrder.java
  5. 6
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/service/IWorkOrderService.java
  6. 135
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/operation/workorder/service/impl/WorkOrderServiceImpl.java
  7. 9
      lab-plugin/lab-workflow/src/main/java/org/springblade/plugin/workbench/service/impl/AutoStartModelServiceImpl.java

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.StringUtils;
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.workorder.entity.WorkOrder;
@ -69,8 +70,9 @@ public class TaskConfig {
workOrder.setOperateModule(autoStartModel.getOperateModule().toString());
workOrder.setProcessInstanceId(autoStartModel.getProcessInstanceId());
workOrder.setType(autoStartModel.getType());
workOrder.setTenantId(WfTaskUtil.getTenantId());
workOrder.setTenantId(autoStartModel.getTenantId());
workOrder.setUploadRecord(autoStartModel.getUploadRecord());
workOrder.setExpectedCompletionTime(autoStartModel.getNextEndTime().toString());
//新增
workOrderService.save(workOrder);
//修改nextFlag = 1,表示已经生成新工单了

@ -188,13 +188,13 @@ public class DataBaseController extends BladeController {
try {
// 4、将临时文件转存到指定位置
file.transferTo(new File(basePath + "/" + fileName));
file.transferTo(new File(basePath + "//" + fileName));
} catch (IOException e) {
e.printStackTrace();
}
UploadReturn uploadReturn = new UploadReturn();
uploadReturn.setName(originalFilename);
uploadReturn.setPath(basePath + "/" + fileName);
uploadReturn.setPath(basePath + "//" + fileName);
uploadReturn.setCreateUser(AuthUtil.getNickName());
uploadReturn.setCreateTime(new Date());
return R.data(uploadReturn);

@ -1,18 +1,27 @@
package org.springblade.plugin.operation.workorder.controller;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.support.Condition;
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.service.IDataBaseService;
import org.springblade.plugin.operation.database.service.IDataTableService;
import org.springblade.plugin.operation.system.service.IModuleInfoService;
import org.springblade.plugin.operation.system.service.IProjectInfoService;
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.system.cache.DictBizCache;
import org.springblade.system.entity.Dept;
@ -45,7 +54,7 @@ public class WorkOrderController extends BladeController {
private final IUserClient userClient;
/**
* 历史工单
* 流程中心
*/
@GetMapping("/historyWorkOrder")
public R<IPage<Map<String, Object>>> historyWorkOrder(WorkOrder workOrder, Query query) {
@ -93,7 +102,7 @@ public class WorkOrderController extends BladeController {
}
/**
* excel导出
* 流程中心导出
*/
@GetMapping("/exportExcel")
public void exportExcel(WorkOrder workOrder, HttpServletResponse response) throws ParseException {
@ -107,6 +116,7 @@ public class WorkOrderController extends BladeController {
public R submit(@RequestBody WorkOrder workOrder) {
workOrder.setIsFinish(1);
workOrder.setFinishTime(new Date());
workOrder.setUploadRecord(JSON.toJSONString(workOrder.getUploadRecords()));
return R.data(workOrderService.updateById(workOrder));
}
@ -115,12 +125,44 @@ public class WorkOrderController extends BladeController {
*/
@GetMapping("/workOrderRecord")
public R<IPage<WorkOrder>> workOrderRecord(WorkOrder workOrder, Query query) {
return R.data(workOrderService.myPage(workOrder, query));
}
/**
* 工单记录导出
*/
@GetMapping("/workOrderExcel")
public void workOrderExcel(WorkOrder workOrder, HttpServletResponse response) {
LambdaQueryWrapper<WorkOrder> wrapper = new LambdaQueryWrapper<>(workOrder);
wrapper.eq(WorkOrder::getManagement, AuthUtil.getDeptId());
wrapper.orderByDesc(WorkOrder::getCreateTime);
IPage<WorkOrder> page = workOrderService.page(Condition.getPage(query), wrapper);
return R.data(page);
if (workOrder.getTaskType() == null
&& workOrder.getTaskParent() == null
&& workOrder.getManagement() == null
&& workOrder.getTaskLevel() == null
&& workOrder.getIsFinish() == null
&& workOrder.getApplyUser() == null
&& workOrder.getStartTime() == null
&& workOrder.getEndTime() == null
&& workOrder.getStartTime2() == null
&& workOrder.getEndTime2() == null
) {
Calendar c = Calendar.getInstance();
//过去半年
c.setTime(new Date());
c.add(Calendar.MONTH, -6);
Date m3 = c.getTime();
wrapper.ge(WorkOrder::getCreateTime, m3);
}
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.orderByDesc(WorkOrder::getCreateTime);
List<WorkOrder> workOrderList = workOrderService.list(wrapper);
workOrderService.workOrderExcel(response, workOrderList);
}
}

@ -7,6 +7,8 @@ import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Data
@TableName("t_work_order")
@ -69,7 +71,7 @@ public class WorkOrder extends TenantEntity {
private Date endTime;
// 期望完成时间
@TableField(exist = false)
// @TableField(exist = false)
private String expectedCompletionTime;
@TableField(exist = false)
@ -86,4 +88,43 @@ public class WorkOrder extends TenantEntity {
//上传文件JSON
private String uploadRecord;
// 任务种类
@TableField(exist = false)
private String taskTypeName;
// 任务父类
@TableField(exist = false)
private String taskParentName;
// 分管部门
@TableField(exist = false)
private String managementName;
// 任务等级
@TableField(exist = false)
private String taskLevelName;
//重复模式id 字典
@TableField(exist = false)
private String repeatModeName;
// 运维公司
@TableField(exist = false)
private String maintenanceCompanyName;
// 发起人
@TableField(exist = false)
private String applyUserName;
//系统名称或数据库id
@TableField(exist = false)
private String operateSysName;
//模块或数据库表id
@TableField(exist = false)
private String operateModuleName;
@TableField(exist = false)
private List<Map> uploadRecords;
}

@ -11,6 +11,7 @@ import org.springblade.plugin.workflow.process.model.WfProcess;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.util.List;
import java.util.Map;
/**
@ -25,4 +26,9 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
IPage<WorkOrder> myToDo(WorkOrder workOrder, Query query);
void exportExcel(WorkOrder workOrder, HttpServletResponse response) throws ParseException;
IPage<WorkOrder> myPage(WorkOrder workOrder, Query query);
void workOrderExcel(HttpServletResponse response, List<WorkOrder> workOrderList);
}

@ -1,5 +1,7 @@
package org.springblade.plugin.operation.workorder.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -10,36 +12,36 @@ import org.flowable.engine.HistoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
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.HistoricTaskInstance;
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.base.BaseServiceImpl;
import org.springblade.core.mp.support.Condition;
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.database.service.IDataTableService;
import org.springblade.plugin.operation.system.entity.ProjectInfo;
import org.springblade.plugin.operation.system.service.IModuleInfoService;
import org.springblade.plugin.operation.system.service.IProjectInfoService;
import org.springblade.plugin.operation.task.entity.TaskInfo;
import org.springblade.plugin.operation.task.mapper.TaskInfoMapper;
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.mapper.WorkOrderMapper;
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.feign.ISysClient;
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;
@ -54,9 +56,13 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
private final TaskService taskService;
private final HistoryService historyService;
private final RuntimeService runtimeService;
private final ITaskInfoService taskInfoService;
private final ISysClient sysClient;
private final IUserClient userClient;
private final IProjectInfoService projectInfoService;
private final IDataBaseService dataBaseService;
private final IDataTableService dataTableService;
private final IProjectInfoService projectInfoService;
private final IModuleInfoService moduleInfoService;
@Override
@ -117,31 +123,31 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
Map<String, Object> variables = runtimeService.getVariables(task.getExecutionId());
// 任务种类
order.setTaskType(variables.get("$renwuzhonglei").toString());
order.setTaskTypeName(variables.get("$renwuzhonglei").toString());
// 任务父类
order.setTaskParent(DictBizCache.getById(Long.parseLong(variables.get("renwufulei").toString())).getDictValue());
order.setTaskParentName(DictBizCache.getById(Long.parseLong(variables.get("renwufulei").toString())).getDictValue());
// 操作模块
ProjectInfo projectInfo = projectInfoService.getById(variables.get("xitongmingchengshujuku").toString());
if (projectInfo != null) {
order.setOperateSys(projectInfo.getProjectName());
order.setOperateSysName(projectInfo.getProjectName());
} else {
order.setOperateSys(dataBaseService.getById(variables.get("xitongmingchengshujuku").toString()).getDataBaseName());
order.setOperateSysName(dataBaseService.getById(variables.get("xitongmingchengshujuku").toString()).getDataBaseName());
}
// 当前责任人
order.setCurrentResponsiblePerson(userClient.userInfoById(Long.parseLong(task.getAssignee())).getData().getRealName());
order.setManagement(variables.get("$guanlibumen").toString());
order.setManagementName(variables.get("$guanlibumen").toString());
// 运维公司
order.setMaintenanceCompany(userClient.userInfoById(Long.parseLong(variables.get("yunweigongsi").toString())).getData().getRealName());
order.setApplyUser(userClient.userInfoById(Long.parseLong(historicProcessInstance.getStartUserId())).getData().getRealName());
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.setApprovalStatus("待实施");
}
order.setCreateTime(historicProcessInstance.getStartTime());
order.setEndTime(historicProcessInstance.getEndTime());
@ -159,17 +165,19 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
LambdaQueryWrapper<WorkOrder> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(WorkOrder::getMaintenanceCompany, AuthUtil.getUserId());
wrapper.eq(WorkOrder::getIsFinish, 0);
List<WorkOrder> list = list(wrapper);
workOrders.addAll(list);
List<WorkOrder> records = list(wrapper);
setAllName(records);
workOrders.addAll(records);
// 任务父类
if (StringUtils.isNotBlank(workOrder.getTaskParent())) {
workOrders = workOrders.stream().filter(s -> s.getTaskParent().equals(workOrder.getTaskParent())).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.getTaskType())) {
workOrders = workOrders.stream().filter(s -> s.getTaskType().equals(workOrder.getTaskType())).collect(Collectors.toList());
if (StringUtils.isNotBlank(workOrder.getTaskTypeName())) {
workOrders = workOrders.stream().filter(s -> s.getTaskTypeName().equals(workOrder.getTaskTypeName())).collect(Collectors.toList());
}
// 当前责任人
@ -178,8 +186,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}
// 管理部门
if (StringUtils.isNotBlank(workOrder.getManagement())) {
workOrders = workOrders.stream().filter(s -> s.getManagement().equals(workOrder.getManagement())).collect(Collectors.toList());
if (StringUtils.isNotBlank(workOrder.getManagementName())) {
workOrders = workOrders.stream().filter(s -> s.getManagementName().equals(workOrder.getManagementName())).collect(Collectors.toList());
}
// 审批状态
@ -188,8 +196,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}
// 发起人
if (StringUtils.isNotBlank(workOrder.getApplyUser())) {
workOrders = workOrders.stream().filter(s -> s.getApplyUser().equals(workOrder.getApplyUser())).collect(Collectors.toList());
if (StringUtils.isNotBlank(workOrder.getApplyUserName())) {
workOrders = workOrders.stream().filter(s -> s.getApplyUserName().equals(workOrder.getApplyUserName())).collect(Collectors.toList());
}
// 创建时间范围
@ -244,7 +252,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
} else {
Calendar c = Calendar.getInstance();
//过去三个月
//过去半年
c.setTime(new Date());
c.add(Calendar.MONTH, -6);
Date m3 = c.getTime();
@ -340,6 +348,83 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
ExcelUtil.export(response, "工单记录" + DateUtil.time(), "工单记录", excels, WorkOrderExcel.class);
}
@Override
public IPage<WorkOrder> myPage(WorkOrder workOrder, Query query) {
LambdaQueryWrapper<WorkOrder> wrapper = new LambdaQueryWrapper<>(workOrder);
wrapper.eq(WorkOrder::getManagement, 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.orderByDesc(WorkOrder::getCreateTime);
IPage<WorkOrder> page = page(Condition.getPage(query), wrapper);
List<WorkOrder> records = page.getRecords();
setAllName(records);
return page;
}
@Override
public void workOrderExcel(HttpServletResponse response, List<WorkOrder> workOrderList) {
List<WorkOrderExcel> excels = new ArrayList<>();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(workOrderList)) {
for (WorkOrder record : workOrderList) {
WorkOrderExcel excel = new WorkOrderExcel();
excel.setTaskType(taskInfoService.getById(record.getTaskType()).getTaskTypeName());
excel.setTaskParent(DictBizCache.getById(Long.parseLong(record.getTaskParent())).getDictValue());
if (record.getType() == 1) {
excel.setOperationModule(projectInfoService.getById(record.getOperateSys()).getProjectName());
} else {
excel.setOperationModule(dataBaseService.getById(record.getOperateSys()).getSystemName());
}
excel.setDept(sysClient.getDeptName(Long.parseLong(record.getManagement())).getData());
excel.setLevel(DictBizCache.getById(Long.parseLong(record.getTaskLevel())).getDictValue());
excel.setCompany(userClient.userInfoById(Long.parseLong(record.getMaintenanceCompany())).getData().getName());
excel.setSponsor(userClient.userInfoById(Long.parseLong(record.getApplyUser())).getData().getName());
if (record.getIsFinish() == 0) {
excel.setApprovalStatus("待实施");
} else {
excel.setApprovalStatus("已完成");
}
excel.setCreateTime(format.format(record.getCreateTime()));
if (record.getFinishTime() != null) {
excel.setEndTime(format.format(record.getFinishTime()));
} else {
excel.setEndTime("");
}
excel.setExpectedCompletionTime(record.getExpectedCompletionTime());
excels.add(excel);
}
}
ExcelUtil.export(response, "工单记录" + DateUtil.time(), "工单记录", excels, WorkOrderExcel.class);
}
private void setAllName(List<WorkOrder> records) {
if (CollectionUtils.isNotEmpty(records)) {
for (WorkOrder record : records) {
record.setTaskTypeName(taskInfoService.getById(record.getTaskType()).getTaskTypeName());
record.setTaskParentName(DictBizCache.getById(Long.parseLong(record.getTaskParent())).getDictValue());
record.setManagementName(sysClient.getDeptName(Long.parseLong(record.getManagement())).getData());
record.setTaskLevelName(DictBizCache.getById(Long.parseLong(record.getTaskLevel())).getDictValue());
record.setRepeatModeName(DictBizCache.getById(Long.parseLong(record.getRepeatMode())).getDictValue());
record.setMaintenanceCompanyName(userClient.userInfoById(Long.parseLong(record.getMaintenanceCompany())).getData().getName());
record.setApplyUserName(userClient.userInfoById(Long.parseLong(record.getApplyUser())).getData().getName());
record.setCurrentResponsiblePerson(userClient.userInfoById(AuthUtil.getUserId()).getData().getName());
record.setApprovalStatus("待实施");
record.setUploadRecords(JSONObject.parseArray(record.getUploadRecord(), Map.class));
if (record.getType() == 1) {
record.setOperateSysName(projectInfoService.getById(record.getOperateSys()).getProjectName());
record.setOperateModuleName(moduleInfoService.getById(record.getOperateModule()).getModuleName());
} else {
record.setOperateSysName(dataBaseService.getById(record.getOperateSys()).getSystemName());
record.setOperateModuleName(dataTableService.getById(record.getOperateModule()).getSystemModuleName());
}
}
}
}
private List<Map<String, Object>> getList(WorkOrder workOrder) {
List<HistoricProcessInstance> list = historyService.createHistoricProcessInstanceQuery()
.orderByProcessInstanceStartTime()

@ -1,5 +1,6 @@
package org.springblade.plugin.workbench.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import liquibase.pro.packaged.E;
@ -51,6 +52,7 @@ import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import javax.validation.constraints.NotEmpty;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.util.*;
@ -365,10 +367,13 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
workOrder.setType(autoStartModel.getType());
workOrder.setOperateSys(autoStartModel.getOperateSys().toString());
workOrder.setOperateModule(autoStartModel.getOperateModule().toString());
workOrder.setUploadRecord(autoStartModel.getUploadRecord());
workOrder.setExpectedCompletionTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(qiwangwanchengshijian));
workOrder.setIsFinish(0);
//如果是运维公司发起的日常任务(普通),生成工单,并标记为已完成
if(StringUtils.equals(autoStartModel.getApplyRole(),"运维公司") && StringUtils.equals(autoStartModel.getTaskLevel().toString(),"1625035000825049090")){
workOrder.setIsFinish(1);
workOrder.setFinishTime(qiwangwanchengshijian);
workOrder.setFinishTime(new Date());
}
workOrderService.save(workOrder);
@ -399,7 +404,7 @@ public class AutoStartModelServiceImpl extends BaseServiceImpl<BladeManMadeMappe
autoStartModel.setOperateModule(Long.valueOf(variables.get("xitongmokuaishujubiao").toString()));
autoStartModel.setCreateTime(processInstance.getStartTime());
autoStartModel.setIsDeleted(0);
autoStartModel.setUploadRecord(variables.get("uploadrecord").toString());
autoStartModel.setUploadRecord(JSON.toJSONString(variables.get("uploadrecord")));
String deptId = AuthUtil.getDeptId();
Long userId = AuthUtil.getUser().getUserId();

Loading…
Cancel
Save