|
|
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
|
|
|
import jakarta.annotation.Resource; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.dromara.common.core.domain.model.LoginUser; |
|
|
|
import org.dromara.common.core.utils.DateUtils; |
|
|
|
import org.dromara.common.core.utils.MapstructUtils; |
|
|
|
import org.dromara.common.core.utils.StringUtils; |
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo; |
|
|
@ -15,13 +16,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
import org.dromara.common.satoken.utils.LoginHelper; |
|
|
|
import org.dromara.platform.domain.*; |
|
|
|
import org.dromara.platform.domain.bo.WorkOrderProcessBo; |
|
|
|
import org.dromara.platform.domain.bo.WorkReviewInfoBo; |
|
|
|
import org.dromara.platform.domain.bo.*; |
|
|
|
import org.dromara.platform.mapper.WorkDealInfoMapper; |
|
|
|
import org.dromara.platform.mapper.WorkOrderDelayMapper; |
|
|
|
import org.dromara.platform.mapper.WorkOrderProcessMapper; |
|
|
|
import org.dromara.platform.service.IProjectInfoService; |
|
|
|
import org.dromara.platform.service.IWorkOrderProcessService; |
|
|
|
import org.dromara.platform.service.IWorkReviewInfoService; |
|
|
|
import org.dromara.platform.service.*; |
|
|
|
import org.dromara.workflow.domain.bo.StartProcessBo; |
|
|
|
import org.dromara.workflow.domain.bo.TaskBo; |
|
|
|
import org.dromara.workflow.domain.bo.TestLeaveBo; |
|
|
@ -30,10 +29,8 @@ import org.flowable.engine.RuntimeService; |
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.dromara.platform.domain.bo.WorkOrderInfoBo; |
|
|
|
import org.dromara.platform.domain.vo.WorkOrderInfoVo; |
|
|
|
import org.dromara.platform.mapper.WorkOrderInfoMapper; |
|
|
|
import org.dromara.platform.service.IWorkOrderInfoService; |
|
|
|
import org.dromara.workflow.service.IActTaskService; |
|
|
|
|
|
|
|
import java.time.Duration; |
|
|
@ -67,6 +64,12 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
@Resource |
|
|
|
private IWorkReviewInfoService workReviewInfoService; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private IWorkOrderDelayService workOrderDelayService; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private WorkOrderDelayMapper workOrderDelayMapper; |
|
|
|
|
|
|
|
/** |
|
|
|
* 查询工单信息 |
|
|
|
* |
|
|
@ -83,12 +86,24 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
List<Attachment> attachments = serializer.deserializeAttachments(attachment); |
|
|
|
workOrderInfoVo.setAttachments(attachments); |
|
|
|
} |
|
|
|
// TaskBo taskBo = new TaskBo();
|
|
|
|
// PageQuery pageQuery = new PageQuery();
|
|
|
|
// pageQuery.setPageNum(1);
|
|
|
|
// pageQuery.setPageSize(10);
|
|
|
|
// TableDataInfo<TaskVo> pageByAllTaskWait = actTaskService.getPageByAllTaskWait(taskBo, pageQuery);
|
|
|
|
// log.info("待办任务:{}", pageByAllTaskWait.getRows());
|
|
|
|
String workOrderId = workOrderInfoVo.getId(); |
|
|
|
|
|
|
|
LambdaQueryWrapper<WorkOrderProcess> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
queryWrapper.eq(WorkOrderProcess::getWorkOrderId, workOrderId); |
|
|
|
queryWrapper.eq(WorkOrderProcess::getStage, "故障接单"); |
|
|
|
|
|
|
|
WorkOrderProcess target = workOrderProcessMapper.selectOne(queryWrapper); |
|
|
|
|
|
|
|
if (target != null && target.getOperationTime() != null) { |
|
|
|
Date operationTime = target.getOperationTime(); |
|
|
|
// 单位:小时
|
|
|
|
Long responseTime = workOrderInfoVo.getResponseTime(); |
|
|
|
// 设置剩余时间提示
|
|
|
|
workOrderInfoVo.setRestTime(getTimeLeft(operationTime, responseTime)); |
|
|
|
} else { |
|
|
|
// 如果没有找到接单记录或没有接单时间,可以设为默认值
|
|
|
|
workOrderInfoVo.setRestTime("暂无接单信息"); |
|
|
|
} |
|
|
|
return workOrderInfoVo; |
|
|
|
} |
|
|
|
|
|
|
@ -390,7 +405,8 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
Page<WorkOrderInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); |
|
|
|
List<WorkOrderInfoVo> records = result.getRecords(); |
|
|
|
List<WorkOrderInfoVo> filterRecords = records.stream() |
|
|
|
.filter(record -> record.getStatus() != null && record.getStatus() < 4) |
|
|
|
.filter(record -> record.getStatus() != null |
|
|
|
&& (record.getStatus() < 4 || record.getStatus() == 7)) |
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
|
|
// 封装
|
|
|
@ -471,7 +487,9 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
Page<WorkOrderInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); |
|
|
|
List<WorkOrderInfoVo> records = result.getRecords(); |
|
|
|
List<WorkOrderInfoVo> filterRecords = records.stream() |
|
|
|
.filter(record -> record.getStatus() != null && record.getStatus() >= 4) |
|
|
|
.filter(record -> record.getStatus() != null |
|
|
|
&& record.getStatus() >= 4 |
|
|
|
&& record.getStatus() != 7) |
|
|
|
.collect(Collectors.toList()); |
|
|
|
result.setRecords(filterRecords); |
|
|
|
return TableDataInfo.build(result); |
|
|
@ -808,4 +826,57 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService { |
|
|
|
log.info("运维单位处理时回退至派遣完毕,等待初审结果"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void delayOrder(WorkOrderInfoBo bo) { |
|
|
|
// 延期说明
|
|
|
|
String delayDescription = bo.getDelayDescription(); |
|
|
|
Long responseTime = bo.getResponseTime(); |
|
|
|
String workOrderId = bo.getId(); |
|
|
|
LoginUser loginUser = LoginHelper.getLoginUser(); |
|
|
|
LambdaQueryWrapper<WorkOrderProcess> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
queryWrapper.eq(WorkOrderProcess::getWorkOrderId, workOrderId); |
|
|
|
queryWrapper.eq(WorkOrderProcess::getStage, "故障接单"); |
|
|
|
WorkOrderProcess target = workOrderProcessMapper.selectOne(queryWrapper); |
|
|
|
Date operationTime = target.getOperationTime(); |
|
|
|
|
|
|
|
if (responseTime != null){ |
|
|
|
// 延期前时间 operationTime + responseTime(小时)
|
|
|
|
Date beforeDelayTime = DateUtils.addHours(operationTime, responseTime.intValue()); |
|
|
|
WorkOrderDelayBo delayBo = new WorkOrderDelayBo(); |
|
|
|
// 延期审核的id 设置为工单的id 关联
|
|
|
|
delayBo.setId(bo.getId()); |
|
|
|
delayBo.setBeforeDelayTime(beforeDelayTime); |
|
|
|
delayBo.setAfterDelayTime(bo.getDelayTime()); |
|
|
|
delayBo.setProjectName(bo.getProjectName()); |
|
|
|
delayBo.setContractName(bo.getContractName()); |
|
|
|
delayBo.setStatus(bo.getStatus()); |
|
|
|
delayBo.setDelayReason(delayDescription); |
|
|
|
delayBo.setHandler(bo.getRepairer()); |
|
|
|
delayBo.setHandleResult("待处理"); |
|
|
|
delayBo.setApprover(loginUser.getNickname()); |
|
|
|
workOrderDelayService.insertByBo(delayBo); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void delaySubmit(WorkOrderDelayBo bo) { |
|
|
|
String workOrderId = bo.getId(); |
|
|
|
String handleResult = bo.getHandleResult(); |
|
|
|
if (handleResult.equals("审核通过")) { |
|
|
|
LambdaUpdateWrapper<WorkOrderInfo> updateWrapper = new LambdaUpdateWrapper<>(); |
|
|
|
updateWrapper.eq(WorkOrderInfo::getId, workOrderId) |
|
|
|
// 处理中(已延期)
|
|
|
|
.set(WorkOrderInfo::getStatus,7); |
|
|
|
baseMapper.update(null, updateWrapper); |
|
|
|
|
|
|
|
LambdaUpdateWrapper<WorkOrderDelay> updateWrapper1 = new LambdaUpdateWrapper<>(); |
|
|
|
updateWrapper1.eq(WorkOrderDelay::getId,bo.getId()); |
|
|
|
updateWrapper1.set(WorkOrderDelay::getHandleResult,"审核通过"); |
|
|
|
workOrderDelayMapper.update(null,updateWrapper1); |
|
|
|
} |
|
|
|
// 根据 处理中(已延期) 去修改现在的超时时间
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|