|
|
@ -17,6 +17,7 @@ import lombok.RequiredArgsConstructor; |
|
|
|
import org.dromara.common.satoken.utils.LoginHelper; |
|
|
|
import org.dromara.platform.domain.*; |
|
|
|
import org.dromara.platform.domain.bo.*; |
|
|
|
import org.dromara.platform.domain.vo.WorkOrderDelayVo; |
|
|
|
import org.dromara.platform.mapper.*; |
|
|
|
import org.dromara.platform.service.*; |
|
|
|
import org.dromara.workflow.domain.bo.StartProcessBo; |
|
|
@ -490,7 +491,7 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
List<WorkOrderInfoVo> filterRecords = records.stream() |
|
|
|
.filter(record -> record.getStatus() != null |
|
|
|
&& record.getStatus() >= 4 |
|
|
|
&& record.getStatus() != 7) |
|
|
|
&& record.getStatus() != 7 && record.getStatus() != 8) |
|
|
|
.collect(Collectors.toList()); |
|
|
|
result.setRecords(filterRecords); |
|
|
|
return TableDataInfo.build(result); |
|
|
@ -835,6 +836,10 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
Long responseTime = bo.getResponseTime(); |
|
|
|
String workOrderId = bo.getId(); |
|
|
|
LoginUser loginUser = LoginHelper.getLoginUser(); |
|
|
|
List<Attachment> attachments = bo.getAttachments(); |
|
|
|
AttachmentSerializer serializer = new AttachmentSerializer(); |
|
|
|
String serializedAttachment = serializer.serializeAttachments(attachments); |
|
|
|
|
|
|
|
LambdaQueryWrapper<WorkOrderProcess> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
queryWrapper.eq(WorkOrderProcess::getWorkOrderId, workOrderId); |
|
|
|
queryWrapper.eq(WorkOrderProcess::getStage, "故障接单"); |
|
|
@ -856,7 +861,15 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
delayBo.setHandler(bo.getRepairer()); |
|
|
|
delayBo.setHandleResult("待处理"); |
|
|
|
delayBo.setApprover(loginUser.getNickname()); |
|
|
|
workOrderDelayService.insertByBo(delayBo); |
|
|
|
delayBo.setAttachment(serializedAttachment); |
|
|
|
|
|
|
|
// 存在则更新,不存在则新增
|
|
|
|
WorkOrderDelayVo delayVo = workOrderDelayMapper.selectVoById(bo.getId()); |
|
|
|
if (delayVo != null){ |
|
|
|
workOrderDelayService.updateByBo(delayBo); |
|
|
|
}else { |
|
|
|
workOrderDelayService.insertByBo(delayBo); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
@ -902,4 +915,87 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
return TableDataInfo.build(result); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void dispatchOrder(WorkOrderInfoBo bo) { |
|
|
|
String handle = bo.getHandle(); |
|
|
|
LoginUser loginUser = LoginHelper.getLoginUser(); |
|
|
|
String workOrderId = bo.getId(); |
|
|
|
if (handle.equals("事件派遣")) { |
|
|
|
WorkOrderProcessBo workOrderProcess = new WorkOrderProcessBo(); |
|
|
|
workOrderProcess.setWorkOrderId(workOrderId); |
|
|
|
workOrderProcess.setOperator(loginUser.getNickname()); |
|
|
|
workOrderProcess.setStage("故障派遣"); |
|
|
|
workOrderProcess.setOperationName("故障派遣"); |
|
|
|
workOrderProcess.setDescription("在故障派遣环节进行了故障派遣操作"); |
|
|
|
// 获取最近一个节点的操作时间
|
|
|
|
LambdaQueryWrapper<WorkOrderProcess> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
wrapper.eq(WorkOrderProcess::getWorkOrderId, workOrderId) |
|
|
|
.orderByDesc(WorkOrderProcess::getOperationTime) |
|
|
|
.last("LIMIT 1"); |
|
|
|
WorkOrderProcess recentTarget = workOrderProcessMapper.selectOne(wrapper); |
|
|
|
log.info("最近一个节点:{}-->操作时间{}", recentTarget.getOperationName(), recentTarget.getOperationTime()); |
|
|
|
Date lastTime = recentTarget.getOperationTime(); |
|
|
|
LocalDateTime time1 = LocalDateTime.ofInstant(lastTime.toInstant(), ZoneId.systemDefault()); |
|
|
|
// 设置操作时间
|
|
|
|
LocalDateTime time2 = LocalDateTime.now(); |
|
|
|
Date date2 = Date.from(time2.atZone(ZoneId.systemDefault()).toInstant()); |
|
|
|
workOrderProcess.setOperationTime(date2); |
|
|
|
// 设置派遣意见返回
|
|
|
|
workOrderProcess.setFeedback(bo.getDispatchOpinion()); |
|
|
|
// 计算时间差
|
|
|
|
Duration duration = Duration.between(time1, time2); |
|
|
|
long durationInSeconds = duration.getSeconds(); |
|
|
|
String formatDuration = formatDuration((int) durationInSeconds); |
|
|
|
workOrderProcess.setDuration(formatDuration); |
|
|
|
|
|
|
|
Boolean flag = workOrderProcessService.insertByBo(workOrderProcess); |
|
|
|
|
|
|
|
if (flag) { |
|
|
|
LambdaUpdateWrapper<WorkOrderInfo> updateWrapper = new LambdaUpdateWrapper<>(); |
|
|
|
updateWrapper.eq(WorkOrderInfo::getId, workOrderId) |
|
|
|
.set(WorkOrderInfo::getStatus, 1); |
|
|
|
baseMapper.update(null, updateWrapper); |
|
|
|
log.info("已派遣至运维单位!"); |
|
|
|
} |
|
|
|
}else if (handle.equals("事件作废")){ |
|
|
|
WorkOrderProcessBo workOrderProcess = new WorkOrderProcessBo(); |
|
|
|
workOrderProcess.setWorkOrderId(workOrderId); |
|
|
|
workOrderProcess.setOperator(loginUser.getNickname()); |
|
|
|
workOrderProcess.setStage("故障派遣"); |
|
|
|
workOrderProcess.setOperationName("事件作废"); |
|
|
|
workOrderProcess.setDescription("在故障派遣环节进行了事件作废操作"); |
|
|
|
// 获取最近一个节点的操作时间
|
|
|
|
LambdaQueryWrapper<WorkOrderProcess> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
wrapper.eq(WorkOrderProcess::getWorkOrderId, workOrderId) |
|
|
|
.orderByDesc(WorkOrderProcess::getOperationTime) |
|
|
|
.last("LIMIT 1"); |
|
|
|
WorkOrderProcess recentTarget = workOrderProcessMapper.selectOne(wrapper); |
|
|
|
log.info("最近一个节点:{}-->操作时间{}", recentTarget.getOperationName(), recentTarget.getOperationTime()); |
|
|
|
Date lastTime = recentTarget.getOperationTime(); |
|
|
|
LocalDateTime time1 = LocalDateTime.ofInstant(lastTime.toInstant(), ZoneId.systemDefault()); |
|
|
|
// 设置操作时间
|
|
|
|
LocalDateTime time2 = LocalDateTime.now(); |
|
|
|
Date date2 = Date.from(time2.atZone(ZoneId.systemDefault()).toInstant()); |
|
|
|
workOrderProcess.setOperationTime(date2); |
|
|
|
// 设置派遣意见返回
|
|
|
|
workOrderProcess.setFeedback(bo.getDispatchOpinion()); |
|
|
|
// 计算时间差
|
|
|
|
Duration duration = Duration.between(time1, time2); |
|
|
|
long durationInSeconds = duration.getSeconds(); |
|
|
|
String formatDuration = formatDuration((int) durationInSeconds); |
|
|
|
workOrderProcess.setDuration(formatDuration); |
|
|
|
|
|
|
|
Boolean flag = workOrderProcessService.insertByBo(workOrderProcess); |
|
|
|
|
|
|
|
if (flag) { |
|
|
|
LambdaUpdateWrapper<WorkOrderInfo> updateWrapper = new LambdaUpdateWrapper<>(); |
|
|
|
updateWrapper.eq(WorkOrderInfo::getId, workOrderId) |
|
|
|
.set(WorkOrderInfo::getStatus, 8); |
|
|
|
baseMapper.update(null, updateWrapper); |
|
|
|
log.info("作废!"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|