Browse Source

延期审核流程

ops-management-platform-backend-dev
gjh 1 month ago
parent
commit
3aba8f46ee
  1. 114
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/WorkDelayProcessController.java
  2. 84
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkDelayProcess.java
  3. 86
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkDelayProcessBo.java
  4. 4
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkOrderInfoBo.java
  5. 95
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkDelayProcessVo.java
  6. 15
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkDelayProcessMapper.java
  7. 68
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IWorkDelayProcessService.java
  8. 147
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkDelayProcessServiceImpl.java
  9. 90
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java

114
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/WorkDelayProcessController.java

@ -0,0 +1,114 @@
package org.dromara.platform.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.platform.domain.bo.WorkOrderProcessBo;
import org.dromara.platform.domain.vo.WorkOrderProcessVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.platform.domain.vo.WorkDelayProcessVo;
import org.dromara.platform.domain.bo.WorkDelayProcessBo;
import org.dromara.platform.service.IWorkDelayProcessService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 工单延期流程信息
*
* @author gejunhao
* @date 2025-05-07
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/platform/delayProcess")
public class WorkDelayProcessController extends BaseController {
private final IWorkDelayProcessService workDelayProcessService;
/**
* 查询工单延期流程信息列表
*/
@SaCheckPermission("platform:delayProcess:list")
@GetMapping("/list")
public TableDataInfo<WorkDelayProcessVo> list(WorkDelayProcessBo bo, PageQuery pageQuery) {
return workDelayProcessService.queryPageList(bo, pageQuery);
}
/**
* 导出工单延期流程信息列表
*/
@SaCheckPermission("platform:delayProcess:export")
@Log(title = "工单延期流程信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WorkDelayProcessBo bo, HttpServletResponse response) {
List<WorkDelayProcessVo> list = workDelayProcessService.queryList(bo);
ExcelUtil.exportExcel(list, "工单延期流程信息", WorkDelayProcessVo.class, response);
}
/**
* 获取工单延期流程信息详细信息
*
* @param id 主键
*/
@SaCheckPermission("platform:delayProcess:query")
@GetMapping("/{id}")
public R<WorkDelayProcessVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable String id) {
return R.ok(workDelayProcessService.queryById(id));
}
/**
* 新增工单延期流程信息
*/
@SaCheckPermission("platform:delayProcess:add")
@Log(title = "工单延期流程信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WorkDelayProcessBo bo) {
return toAjax(workDelayProcessService.insertByBo(bo));
}
/**
* 修改工单延期流程信息
*/
@SaCheckPermission("platform:delayProcess:edit")
@Log(title = "工单延期流程信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WorkDelayProcessBo bo) {
return toAjax(workDelayProcessService.updateByBo(bo));
}
/**
* 删除工单延期流程信息
*
* @param ids 主键串
*/
@SaCheckPermission("platform:delayProcess:remove")
@Log(title = "工单延期流程信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable String[] ids) {
return toAjax(workDelayProcessService.deleteWithValidByIds(List.of(ids), true));
}
@SaCheckPermission("platform:delayProcess:queryProcess")
@GetMapping("/queryProcess")
public R<List<WorkDelayProcessVo>> queryProcess(WorkDelayProcessBo bo) {
List<WorkDelayProcessVo> rs = workDelayProcessService.queryList(bo);
return R.ok(rs);
}
}

84
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/WorkDelayProcess.java

@ -0,0 +1,84 @@
package org.dromara.platform.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 工单延期流程信息对象 work_delay_process
*
* @author gejunhao
* @date 2025-05-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("work_delay_process")
public class WorkDelayProcess extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 唯一标识符
*/
@TableId(value = "id")
private String id;
/**
* 关联的工单ID
*/
private String workOrderId;
/**
* 操作人
*/
private String operator;
/**
* 操作时间
*/
private Date operationTime;
/**
* 操作名称
*/
private String operationName;
/**
* 用时
*/
private String duration;
/**
* 操作描述
*/
private String description;
/**
* 环节
*/
private String stage;
/**
* 处理结果描述
*/
private String feedback;
/**
* 当前状态
*/
private Long status;
/**
* 删除标志0代表存在 2代表删除
*/
@TableLogic
private String delFlag;
}

86
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/bo/WorkDelayProcessBo.java

@ -0,0 +1,86 @@
package org.dromara.platform.domain.bo;
import org.dromara.platform.domain.WorkDelayProcess;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 工单延期流程信息业务对象 work_delay_process
*
* @author gejunhao
* @date 2025-05-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = WorkDelayProcess.class, reverseConvertGenerate = false)
public class WorkDelayProcessBo extends BaseEntity {
/**
* 唯一标识符
*/
@NotBlank(message = "唯一标识符不能为空", groups = { EditGroup.class })
private String id;
/**
* 关联的工单ID
*/
//@NotBlank(message = "关联的工单ID不能为空", groups = { AddGroup.class, EditGroup.class })
private String workOrderId;
/**
* 操作人
*/
//@NotBlank(message = "操作人不能为空", groups = { AddGroup.class, EditGroup.class })
private String operator;
/**
* 操作时间
*/
//@NotNull(message = "操作时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date operationTime;
/**
* 操作名称
*/
//@NotBlank(message = "操作名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String operationName;
/**
* 用时
*/
//@NotBlank(message = "用时不能为空", groups = { AddGroup.class, EditGroup.class })
private String duration;
/**
* 操作描述
*/
//@NotBlank(message = "操作描述不能为空", groups = { AddGroup.class, EditGroup.class })
private String description;
/**
* 环节
*/
//@NotBlank(message = "环节不能为空", groups = { AddGroup.class, EditGroup.class })
private String stage;
/**
* 处理结果描述
*/
//@NotBlank(message = "处理结果描述不能为空", groups = { AddGroup.class, EditGroup.class })
private String feedback;
/**
* 当前状态
*/
//@NotNull(message = "当前状态不能为空", groups = { AddGroup.class, EditGroup.class })
private Long status;
}

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

@ -120,7 +120,7 @@ public class WorkOrderInfoBo extends BaseEntity {
private String faultDescription;
/**
* 故障图片
* 故障图片 或者 延期图片
*/
//@NotBlank(message = "故障图片不能为空", groups = { AddGroup.class, EditGroup.class })
private String attachment;
@ -207,7 +207,7 @@ public class WorkOrderInfoBo extends BaseEntity {
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date delayTime;
//TODO 延期图片
private String handleResult;

95
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/WorkDelayProcessVo.java

@ -0,0 +1,95 @@
package org.dromara.platform.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.platform.domain.WorkDelayProcess;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 工单延期流程信息视图对象 work_delay_process
*
* @author gejunhao
* @date 2025-05-07
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = WorkDelayProcess.class)
public class WorkDelayProcessVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 唯一标识符
*/
@ExcelProperty(value = "唯一标识符")
private String id;
/**
* 关联的工单ID
*/
@ExcelProperty(value = "关联的工单ID")
private String workOrderId;
/**
* 操作人
*/
@ExcelProperty(value = "操作人")
private String operator;
/**
* 操作时间
*/
@ExcelProperty(value = "操作时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date operationTime;
/**
* 操作名称
*/
@ExcelProperty(value = "操作名称")
private String operationName;
/**
* 用时
*/
@ExcelProperty(value = "用时")
private String duration;
/**
* 操作描述
*/
@ExcelProperty(value = "操作描述")
private String description;
/**
* 环节
*/
@ExcelProperty(value = "环节")
private String stage;
/**
* 处理结果描述
*/
@ExcelProperty(value = "处理结果描述")
private String feedback;
/**
* 当前状态
*/
@ExcelProperty(value = "当前状态")
private Long status;
}

15
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/mapper/WorkDelayProcessMapper.java

@ -0,0 +1,15 @@
package org.dromara.platform.mapper;
import org.dromara.platform.domain.WorkDelayProcess;
import org.dromara.platform.domain.vo.WorkDelayProcessVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 工单延期流程信息Mapper接口
*
* @author gejunhao
* @date 2025-05-07
*/
public interface WorkDelayProcessMapper extends BaseMapperPlus<WorkDelayProcess, WorkDelayProcessVo> {
}

68
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IWorkDelayProcessService.java

@ -0,0 +1,68 @@
package org.dromara.platform.service;
import org.dromara.platform.domain.vo.WorkDelayProcessVo;
import org.dromara.platform.domain.bo.WorkDelayProcessBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 工单延期流程信息Service接口
*
* @author gejunhao
* @date 2025-05-07
*/
public interface IWorkDelayProcessService {
/**
* 查询工单延期流程信息
*
* @param id 主键
* @return 工单延期流程信息
*/
WorkDelayProcessVo queryById(String id);
/**
* 分页查询工单延期流程信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 工单延期流程信息分页列表
*/
TableDataInfo<WorkDelayProcessVo> queryPageList(WorkDelayProcessBo bo, PageQuery pageQuery);
/**
* 查询符合条件的工单延期流程信息列表
*
* @param bo 查询条件
* @return 工单延期流程信息列表
*/
List<WorkDelayProcessVo> queryList(WorkDelayProcessBo bo);
/**
* 新增工单延期流程信息
*
* @param bo 工单延期流程信息
* @return 是否新增成功
*/
Boolean insertByBo(WorkDelayProcessBo bo);
/**
* 修改工单延期流程信息
*
* @param bo 工单延期流程信息
* @return 是否修改成功
*/
Boolean updateByBo(WorkDelayProcessBo bo);
/**
* 校验并批量删除工单延期流程信息信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
}

147
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkDelayProcessServiceImpl.java

@ -0,0 +1,147 @@
package org.dromara.platform.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
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.WorkOrderProcess;
import org.dromara.platform.domain.vo.WorkOrderProcessVo;
import org.springframework.stereotype.Service;
import org.dromara.platform.domain.bo.WorkDelayProcessBo;
import org.dromara.platform.domain.vo.WorkDelayProcessVo;
import org.dromara.platform.domain.WorkDelayProcess;
import org.dromara.platform.mapper.WorkDelayProcessMapper;
import org.dromara.platform.service.IWorkDelayProcessService;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.stream.Collectors;
/**
* 工单延期流程信息Service业务层处理
*
* @author gejunhao
* @date 2025-05-07
*/
@RequiredArgsConstructor
@Service
public class WorkDelayProcessServiceImpl implements IWorkDelayProcessService {
private final WorkDelayProcessMapper baseMapper;
/**
* 查询工单延期流程信息
*
* @param id 主键
* @return 工单延期流程信息
*/
@Override
public WorkDelayProcessVo queryById(String id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询工单延期流程信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 工单延期流程信息分页列表
*/
@Override
public TableDataInfo<WorkDelayProcessVo> queryPageList(WorkDelayProcessBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<WorkDelayProcess> lqw = buildQueryWrapper(bo);
Page<WorkDelayProcessVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的工单延期流程信息列表
*
* @param bo 查询条件
* @return 工单延期流程信息列表
*/
@Override
public List<WorkDelayProcessVo> queryList(WorkDelayProcessBo bo) {
LambdaQueryWrapper<WorkDelayProcess> lqw = buildQueryWrapper(bo);
List<WorkDelayProcessVo> workDelayProcessVos = baseMapper.selectVoList(lqw);
// 按照操作时间排序
List<WorkDelayProcessVo> sortedRecords = workDelayProcessVos.stream()
.sorted(Comparator.comparing(WorkDelayProcessVo::getOperationTime))
.collect(Collectors.toList());
return sortedRecords;
}
private LambdaQueryWrapper<WorkDelayProcess> buildQueryWrapper(WorkDelayProcessBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<WorkDelayProcess> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getWorkOrderId()), WorkDelayProcess::getWorkOrderId, bo.getWorkOrderId());
lqw.eq(StringUtils.isNotBlank(bo.getOperator()), WorkDelayProcess::getOperator, bo.getOperator());
lqw.eq(bo.getOperationTime() != null, WorkDelayProcess::getOperationTime, bo.getOperationTime());
lqw.like(StringUtils.isNotBlank(bo.getOperationName()), WorkDelayProcess::getOperationName, bo.getOperationName());
lqw.eq(StringUtils.isNotBlank(bo.getDuration()), WorkDelayProcess::getDuration, bo.getDuration());
lqw.eq(StringUtils.isNotBlank(bo.getDescription()), WorkDelayProcess::getDescription, bo.getDescription());
lqw.eq(StringUtils.isNotBlank(bo.getStage()), WorkDelayProcess::getStage, bo.getStage());
lqw.eq(StringUtils.isNotBlank(bo.getFeedback()), WorkDelayProcess::getFeedback, bo.getFeedback());
lqw.eq(bo.getStatus() != null, WorkDelayProcess::getStatus, bo.getStatus());
return lqw;
}
/**
* 新增工单延期流程信息
*
* @param bo 工单延期流程信息
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(WorkDelayProcessBo bo) {
WorkDelayProcess add = MapstructUtils.convert(bo, WorkDelayProcess.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改工单延期流程信息
*
* @param bo 工单延期流程信息
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(WorkDelayProcessBo bo) {
WorkDelayProcess update = MapstructUtils.convert(bo, WorkDelayProcess.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(WorkDelayProcess entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除工单延期流程信息信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

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

@ -34,6 +34,7 @@ import org.dromara.workflow.service.IActTaskService;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@ -62,6 +63,13 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
@Resource
private IWorkReviewInfoService workReviewInfoService;
@Resource
private IWorkDelayProcessService workDelayProcessService;
@Resource
private WorkDelayProcessMapper workDelayProcessMapper;
@Resource
private IWorkOrderDelayService workOrderDelayService;
@ -845,7 +853,7 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
queryWrapper.eq(WorkOrderProcess::getStage, "故障接单");
WorkOrderProcess target = workOrderProcessMapper.selectOne(queryWrapper);
Date operationTime = target.getOperationTime();
// 1.创建工单延期信息
if (responseTime != null){
// 延期前时间 operationTime + responseTime(小时)
Date beforeDelayTime = DateUtils.addHours(operationTime, responseTime.intValue());
@ -863,13 +871,38 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
delayBo.setApprover(loginUser.getNickname());
delayBo.setAttachment(serializedAttachment);
// 存在则更新,不存在则新增
// 2.更新工单延期信息
WorkOrderDelayVo delayVo = workOrderDelayMapper.selectVoById(bo.getId());
if (delayVo != null){
workOrderDelayService.updateByBo(delayBo);
}else {
workOrderDelayService.insertByBo(delayBo);
}
// 3.创建延期流程
WorkDelayProcess workDelayProcess = new WorkDelayProcess();
workDelayProcess.setWorkOrderId(workOrderId);
workDelayProcess.setOperator(loginUser.getNickname());
workDelayProcess.setStage("延期申请");
workDelayProcess.setOperationName("延期申请");
workDelayProcess.setDescription("在延期申请环节进行了延期申请操作");
LocalDateTime time = LocalDateTime.now();
Date date = Date.from(time.atZone(ZoneId.systemDefault()).toInstant());
workDelayProcess.setOperationTime(date);
// 4.设置延期描述
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedBefore = beforeDelayTime.toInstant()
.atZone(ZoneId.systemDefault())
.format(formatter);
String formattedAfter = bo.getDelayTime().toInstant()
.atZone(ZoneId.systemDefault())
.format(formatter);
String delayDesc = "申请从" + formattedBefore + "延期至" + formattedAfter;
workDelayProcess.setFeedback(delayDesc);
// 5.创建工单延期流程
workDelayProcessMapper.insert(workDelayProcess);
}
}
@ -878,6 +911,8 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
public void delaySubmit(WorkOrderDelayBo bo) {
String workOrderId = bo.getId();
String handleResult = bo.getHandleResult();
LoginUser loginUser = LoginHelper.getLoginUser();
if (handleResult.equals("审核通过")) {
LambdaUpdateWrapper<WorkOrderInfo> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(WorkOrderInfo::getId, workOrderId)
@ -889,6 +924,48 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
updateWrapper1.eq(WorkOrderDelay::getId,bo.getId());
updateWrapper1.set(WorkOrderDelay::getHandleResult,"审核通过");
workOrderDelayMapper.update(null,updateWrapper1);
// TODO 创建延期流程
WorkDelayProcess workDelayProcess = new WorkDelayProcess();
workDelayProcess.setWorkOrderId(workOrderId);
workDelayProcess.setOperator(loginUser.getNickname());
workDelayProcess.setStage("派单人审核");
workDelayProcess.setOperationName("派单人审核");
workDelayProcess.setDescription("在派单人审核环节进行了派单人审核操作");
workDelayProcess.setFeedback(bo.getAuditOpinion());
LambdaQueryWrapper<WorkDelayProcess> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(WorkDelayProcess::getWorkOrderId, workOrderId)
.orderByDesc(WorkDelayProcess::getOperationTime)
.last("LIMIT 1");
WorkDelayProcess recentTarget = workDelayProcessMapper.selectOne(wrapper);
if (recentTarget != null){
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());
workDelayProcess.setOperationTime(date2);
workDelayProcess.setFeedback(bo.getHandleResult());
// 计算时间差
Duration duration = Duration.between(time1, time2);
long durationInSeconds = duration.getSeconds();
String formatDuration = formatDuration((int) durationInSeconds);
workDelayProcess.setDuration(formatDuration);
workDelayProcessMapper.insert(workDelayProcess);
// 生成完成的流程
WorkDelayProcess workDelayProcessLast = new WorkDelayProcess();
workDelayProcessLast.setWorkOrderId(workOrderId);
workDelayProcessLast.setFeedback("完成");
workDelayProcessLast.setStage("完成");
workDelayProcessLast.setOperationName("完成");
workDelayProcessLast.setOperator(loginUser.getNickname());
workDelayProcessLast.setOperationTime(date2);
workDelayProcessMapper.insert(workDelayProcessLast);
}else {
throw new RuntimeException("延期申请不存在,无法审核!");
}
// TODO 根据 处理中(已延期) 去修改现在的超时时间
}
// 记录操作历史记录表
@ -918,9 +995,18 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
@Override
public void dispatchOrder(WorkOrderInfoBo bo) {
String handle = bo.getHandle();
//运维单位
String maintenanceUnit = bo.getMaintenanceUnit();
LoginUser loginUser = LoginHelper.getLoginUser();
String workOrderId = bo.getId();
if (handle.equals("事件派遣")) {
// 修改运维单位信息
LambdaUpdateWrapper<WorkOrderInfo> uw = new LambdaUpdateWrapper<>();
uw.eq(WorkOrderInfo::getId, workOrderId)
.set(WorkOrderInfo::getMaintenanceUnit, maintenanceUnit);
baseMapper.update(null, uw);
// 创建流程信息
WorkOrderProcessBo workOrderProcess = new WorkOrderProcessBo();
workOrderProcess.setWorkOrderId(workOrderId);
workOrderProcess.setOperator(loginUser.getNickname());

Loading…
Cancel
Save