Browse Source

工单延期

ops-management-platform-backend-dev
gjh 17 hours ago
parent
commit
0350f3decf
  1. 17
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/WorkOrderInfoController.java
  2. 13
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderInfoBo.java
  3. 9
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderDelayVo.java
  4. 13
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IWorkOrderInfoService.java
  5. 101
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java

17
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/WorkOrderInfoController.java

@ -12,6 +12,7 @@ import org.apache.ibatis.annotations.Param;
import org.dromara.platform.domain.InspectionPlanInfo;
import org.dromara.platform.domain.WorkOrderInfo;
import org.dromara.platform.domain.WorkReviewInfo;
import org.dromara.platform.domain.bo.WorkOrderDelayBo;
import org.dromara.platform.domain.bo.WorkReviewInfoBo;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
@ -141,6 +142,22 @@ public class WorkOrderInfoController extends BaseController {
}
@SaCheckPermission("platform:workOrder:delayOrder")
@PostMapping("/delayOrder")
public R<Void> delayOrder(@RequestBody WorkOrderInfoBo bo ) {
workOrderInfoService.delayOrder(bo);
return R.ok("工单延期成功!");
}
@SaCheckPermission("platform:workOrder:delaySubmit ")
@PostMapping("/delaySubmit")
public R<Void> delaySubmit (@RequestBody WorkOrderDelayBo bo ) {
workOrderInfoService.delaySubmit(bo);
return R.ok("工单延期审批成功!");
}
@SaCheckPermission("platform:workOrder:initReviewOrder")
@PostMapping("/initReviewOrder")
public R<Void> initReviewOrder(@RequestBody WorkReviewInfoBo bo ) {

13
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderInfoBo.java

@ -197,4 +197,17 @@ public class WorkOrderInfoBo extends BaseEntity {
*/
private String backReason;
/**
* 延期描述
*/
private String delayDescription;
/**
* 延期时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date delayTime;
//TODO 延期图片
private String handleResult;
}

9
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderDelayVo.java

@ -59,6 +59,8 @@ public class WorkOrderDelayVo implements Serializable {
*/
@ExcelProperty(value = "原定的预计结束时间", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "延=期前的时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date beforeDelayTime;
/**
@ -66,6 +68,7 @@ public class WorkOrderDelayVo implements Serializable {
*/
@ExcelProperty(value = "新的预计结束时间", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "延=期后的时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date afterDelayTime;
/**
@ -170,5 +173,9 @@ public class WorkOrderDelayVo implements Serializable {
@ExcelProperty(value = "当前状态")
private Long status;
/**
* 创建时间(申请时间) 用于延期信息
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
}

13
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IWorkOrderInfoService.java

@ -3,6 +3,7 @@ package org.dromara.platform.service;
import org.dromara.platform.domain.InspectionPlanInfo;
import org.dromara.platform.domain.WorkOrderInfo;
import org.dromara.platform.domain.WorkReviewInfo;
import org.dromara.platform.domain.bo.WorkOrderDelayBo;
import org.dromara.platform.domain.bo.WorkReviewInfoBo;
import org.dromara.platform.domain.vo.WorkOrderInfoVo;
import org.dromara.platform.domain.bo.WorkOrderInfoBo;
@ -115,4 +116,16 @@ public interface IWorkOrderInfoService {
* @param bo
*/
void rollBackOrder(WorkOrderInfoBo bo);
/**
* 延期工单
* @param bo
*/
void delayOrder(WorkOrderInfoBo bo);
/**
* 延期工单提交
* @param bo
*/
void delaySubmit(WorkOrderDelayBo bo);
}

101
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java

@ -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);
}
// 根据 处理中(已延期) 去修改现在的超时时间
}
}

Loading…
Cancel
Save