|
|
|
|
@ -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() |
|
|
|
|
|