Browse Source

工单派遣,工单作废,再次延期判断

ops-management-platform-backend-dev
gjh 1 month ago
parent
commit
9fc9fba0fe
  1. 9
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/WorkOrderInfoController.java
  2. 3
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderInfo.java
  3. 7
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderInfoBo.java
  4. 7
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkOrderDelayVo.java
  5. 2
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IWorkOrderInfoService.java
  6. 8
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderDelayServiceImpl.java
  7. 100
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java

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

@ -118,6 +118,15 @@ public class WorkOrderInfoController extends BaseController {
return R.ok(rs);
}
@SaCheckPermission("platform:workOrder:dispatchOrder")
@PostMapping("/dispatchOrder")
public R<Void> dispatchOrder(@RequestBody WorkOrderInfoBo bo ) {
workOrderInfoService.dispatchOrder(bo);
return R.ok("派遣工单成功!");
}
@SaCheckPermission("platform:workOrder:takeOrder")
@GetMapping("/takeOrder")
public R<Void> takeOrder(String workOrderId ) {

3
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkOrderInfo.java

@ -147,6 +147,9 @@ public class WorkOrderInfo extends TenantEntity {
* 4 初审
* 5 终审
* 6 结案
* 7 处理中(已延期)
* 8 作废
*
*/
private Long status;

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

@ -128,7 +128,7 @@ public class WorkOrderInfoBo extends BaseEntity {
/**
* 维护要求 (0: 修复, 1: 新增, 2: 拆除, 3: 清除, 4: 其他)
*/
@NotBlank(message = "维护要求 (0: 修复, 1: 新增, 2: 拆除, 3: 清除, 4: 其他)不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotBlank(message = "维护要求 (0: 修复, 1: 新增, 2: 拆除, 3: 清除, 4: 其他)不能为空", groups = { AddGroup.class, EditGroup.class })
private String maintenanceRequirement;
/**
@ -210,4 +210,9 @@ public class WorkOrderInfoBo extends BaseEntity {
//TODO 延期图片
private String handleResult;
/**
* 操作处理
*/
private String handle;
}

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

@ -2,6 +2,7 @@ package org.dromara.platform.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.platform.domain.Attachment;
import org.dromara.platform.domain.WorkOrderDelay;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
@ -13,7 +14,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
@ -178,4 +179,8 @@ public class WorkOrderDelayVo implements Serializable {
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**
* 延期图片
*/
private List<Attachment> attachments;
}

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

@ -130,4 +130,6 @@ public interface IWorkOrderInfoService {
void delaySubmit(WorkOrderDelayBo bo);
TableDataInfo<WorkOrderInfoVo> dispatchList(WorkOrderInfoBo bo, PageQuery pageQuery);
void dispatchOrder(WorkOrderInfoBo bo);
}

8
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderDelayServiceImpl.java

@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.platform.domain.Attachment;
import org.dromara.platform.domain.AttachmentSerializer;
import org.springframework.stereotype.Service;
import org.dromara.platform.domain.bo.WorkOrderDelayBo;
import org.dromara.platform.domain.vo.WorkOrderDelayVo;
@ -41,6 +43,12 @@ public class WorkOrderDelayServiceImpl implements IWorkOrderDelayService {
public WorkOrderDelayVo queryById(Long id){
WorkOrderDelayVo workOrderDelayVo = baseMapper.selectVoById(id);
workOrderDelayVo.setHandler("监理人员、业主人员");
String attachment = workOrderDelayVo.getAttachment();
if (StringUtils.isNotBlank(attachment)) {
AttachmentSerializer serializer = new AttachmentSerializer();
List<Attachment> attachments = serializer.deserializeAttachments(attachment);
workOrderDelayVo.setAttachments(attachments);
}
return workOrderDelayVo;
}

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

@ -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("作废!");
}
}
}
}

Loading…
Cancel
Save