Browse Source

根据合同名称查询对应的运维单位,创建日常巡检任务时设置默认交付内容

ops-management-platform-backend-dev
gjh 4 weeks ago
parent
commit
aa9ab78bda
  1. 12
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/ContractInfoController.java
  2. 5
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/RoutineInspectionInfoController.java
  3. 3
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/domain/vo/PointInfoVo.java
  4. 2
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/IContractInfoService.java
  5. 11
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ContractInfoServiceImpl.java
  6. 14
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/PointInfoServiceImpl.java
  7. 1
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/RoutineInspectionInfoServiceImpl.java
  8. 155
      ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/WorkOrderInfoServiceImpl.java

12
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/ContractInfoController.java

@ -135,4 +135,16 @@ public class ContractInfoController extends BaseController {
List<ContractSelectVo> rs = contractInfoService.getContractNamesByProjectName(projectName);
return R.ok(rs);
}
/**
* 获取合同对应的运维单位 (乙方)
*
*/
@SaCheckPermission("platform:contractInfo:getIoCompany")
@GetMapping("/getIoCompany")
public R<String> getIoCompany(@Param("name") String name) {
String rs = contractInfoService.getIoCompany(name);
return R.ok("获取合同对应的运维单位", rs);
}
}

5
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/controller/RoutineInspectionInfoController.java

@ -113,6 +113,11 @@ public class RoutineInspectionInfoController extends BaseController {
return toAjax(routineInspectionInfoService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 创建日常巡检任务
* @param routineInspectionDto
* @return
*/
@SaCheckPermission("platform:routineInspectionInfo:createRoutineInspection")
@PostMapping("/createRoutineInspection")
public R<Void> createPlans(@RequestBody RoutineInspectionDto routineInspectionDto) {

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

@ -1,5 +1,6 @@
package org.dromara.platform.domain.vo;
import org.dromara.common.tenant.core.TenantEntity;
import org.dromara.platform.domain.PointInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
@ -23,7 +24,7 @@ import java.util.Date;
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = PointInfo.class)
public class PointInfoVo implements Serializable {
public class PointInfoVo extends TenantEntity implements Serializable {
@Serial
private static final long serialVersionUID = 1L;

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

@ -80,4 +80,6 @@ public interface IContractInfoService {
List<ContractSelectVo> getContractNamesByProjectName(String projectName);
//根据合同名称查询对应的运维单位
String getIoCompany(String name);
}

11
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/ContractInfoServiceImpl.java

@ -229,4 +229,15 @@ public class ContractInfoServiceImpl implements IContractInfoService {
}
return selectVoList;
}
@Override
public String getIoCompany(String name) {
LambdaQueryWrapper<ContractInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ContractInfo::getContractName, name);
ContractInfo contractInfo = baseMapper. selectOne(queryWrapper);
if (contractInfo != null){
return contractInfo.getPartyB();
}
return null;
}
}

14
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/PointInfoServiceImpl.java

@ -8,6 +8,7 @@ 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.vo.DailyInspectionReportVo;
import org.dromara.platform.domain.vo.PointSelectVo;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@ -17,10 +18,8 @@ import org.dromara.platform.domain.PointInfo;
import org.dromara.platform.mapper.PointInfoMapper;
import org.dromara.platform.service.IPointInfoService;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.*;
import java.util.stream.Collectors;
/**
* 点位信息Service业务层处理
@ -58,6 +57,13 @@ public class PointInfoServiceImpl implements IPointInfoService {
public TableDataInfo<PointInfoVo> queryPageList(PointInfoBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<PointInfo> lqw = buildQueryWrapper(bo);
Page<PointInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
List<PointInfoVo> records = result.getRecords();
List<PointInfoVo> sortedRecords = records.stream()
// 默认小到大 反转 为降序
.sorted(Comparator.comparing(PointInfoVo::getCreateTime).reversed())
.collect(Collectors.toList());
result.setRecords(sortedRecords);
return TableDataInfo.build(result);
}

1
ruoyi-modules/guoyan-platform/src/main/java/org/dromara/platform/service/impl/RoutineInspectionInfoServiceImpl.java

@ -168,6 +168,7 @@ public class RoutineInspectionInfoServiceImpl implements IRoutineInspectionInfoS
routineInspectionInfo.setDescription(description);
routineInspectionInfo.setServiceProject(serviceProject);
routineInspectionInfo.setIoCompany(ioCompany);
routineInspectionInfo.setDeliverContent("例行操作");
routineInspectionInfo.setPointName(pointName);
routineInspectionInfo.setScheduleStartDate(item.getScheduleStartDate());
routineInspectionInfo.setScheduleEndDate(item.getScheduleEndDate());

155
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.exception.ServiceException;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
@ -32,6 +33,7 @@ import org.dromara.platform.domain.vo.WorkOrderInfoVo;
import org.dromara.workflow.service.IActTaskService;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
@ -172,32 +174,7 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
@Autowired
private IActTaskService actTaskService;
@Autowired
private RuntimeService runtimeService;
public void startLeaveProcess(TestLeaveBo leaveBo) {
// 创建并保存请假记录
//TestLeaveVo leaveVo = testLeaveService.insertByBo(leaveBo);
// 启动流程参数
StartProcessBo startProcessBo = new StartProcessBo();
// 设置流程对应的业务表
startProcessBo.setTableName("work_order_info");
// 设置业务主键
//startProcessBo.setBusinessKey(leaveVo.getId().toString());
// 设置流程变量
// Map<String, Object> variables = new HashMap<>();
// variables.put("applyUserId", getUserId());
// variables.put("leaveType", leaveBo.getLeaveType());
// variables.put("startDate", leaveBo.getStartDate());
// variables.put("endDate", leaveBo.getEndDate());
// variables.put("leaveDays", leaveBo.getLeaveDays());
// variables.put("reason", leaveBo.getRemark());
// startProcessBo.setVariables(variables);
// 启动流程实例
Map<String, Object> result = actTaskService.startWorkFlow(startProcessBo);
}
/**
* 新增工单信息
*
@ -368,6 +345,11 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
@Override
public void takeOrder(String workOrderId) {
WorkOrderInfoVo workOrderInfoVo = baseMapper.selectVoById(workOrderId);
if (workOrderInfoVo.getStatus() != 1){
throw new ServiceException("当前工单状态未处于:待接单状态,不能进行接单操作!");
}
// 1.获取当前用户登录信息
LoginUser loginUser = LoginHelper.getLoginUser();
WorkOrderProcessBo workOrderProcess = new WorkOrderProcessBo();
@ -422,7 +404,6 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
// 封装
for (WorkOrderInfoVo record : filterRecords) {
String workOrderId = record.getId();
LambdaQueryWrapper<WorkOrderProcess> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(WorkOrderProcess::getWorkOrderId, workOrderId);
queryWrapper.eq(WorkOrderProcess::getStage, "故障接单");
@ -439,6 +420,18 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
// 如果没有找到接单记录或没有接单时间,可以设为默认值
record.setRestTime("暂无接单信息");
}
// 设置延期信息
if (record.getStatus() == 7){
WorkOrderDelayVo delayVo = workOrderDelayService.queryById(Long.valueOf(workOrderId));
if (delayVo != null){
Date afterDelayTime = delayVo.getAfterDelayTime();
// 将 Date 转换为 Instant
Instant instant = afterDelayTime.toInstant();
ZoneId zone = ZoneId.of("Asia/Shanghai");
LocalDateTime dueDateTime = instant.atZone(zone).toLocalDateTime();
record.setRestTime(getTimeLeft(dueDateTime));
}
}
}
@ -491,6 +484,32 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
}
}
public String getTimeLeft(LocalDateTime dueDateTime ) {
// 当前时间
LocalDateTime now = LocalDateTime.now();
Duration duration;
boolean isOverdue;
if (now.isAfter(dueDateTime)) {
duration = Duration.between(dueDateTime, now);
isOverdue = true;
} else {
duration = Duration.between(now, dueDateTime);
isOverdue = false;
}
long days = duration.toDays();
long hours = duration.toHours() % 24;
long minutes = duration.toMinutes() % 60;
if (isOverdue) {
return String.format("超时%d天%d小时%d分", days, hours, minutes);
} else {
return String.format("剩余%d天%d小时%d分", days, hours, minutes);
}
}
@Override
public TableDataInfo<WorkOrderInfoVo> reviewList(WorkOrderInfoBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<WorkOrderInfo> lqw = buildQueryWrapper(bo);
@ -520,7 +539,15 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
workDealInfo.setFixTime(new Date());
workDealInfo.setWorkOrderId(bo.getId());
// 3.创建处理信息
workDealInfoMapper.insert(workDealInfo);
LambdaQueryWrapper<WorkDealInfo> qw = new LambdaQueryWrapper<>();
qw.eq(WorkDealInfo::getWorkOrderId, bo.getId());
WorkDealInfo workDealInfoFromDb = workDealInfoMapper.selectOne(qw);
if (workDealInfoFromDb != null){
workDealInfo.setId(workDealInfoFromDb.getId());
workDealInfoMapper.updateById(workDealInfo);
}else {
workDealInfoMapper.insert(workDealInfo);
}
// 4.创建流程信息
String workOrderId = bo.getId();
@ -544,7 +571,7 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
LocalDateTime time2 = LocalDateTime.now();
Date date2 = Date.from(time2.atZone(ZoneId.systemDefault()).toInstant());
workOrderProcess.setOperationTime(date2);
// TODO 处理反馈信息 从表单中获取
// 处理反馈信息 从表单中获取
workOrderProcess.setFeedback(bo.getFixResult());
// 计算时间差
Duration duration = Duration.between(time1, time2);
@ -565,13 +592,14 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
@Override
public void initReviewOrder(WorkReviewInfoBo bo) {
LoginUser loginUser = LoginHelper.getLoginUser();
// 1.插入审核信息表
workReviewInfoService.insertByBo(bo);
// 2.根据处理结果判断
String handleResult = bo.getHandleResult();
String workOrderId = bo.getId();
bo.setId(null);
bo.setWorkOrderId(workOrderId);
LoginUser loginUser = LoginHelper.getLoginUser();
// 1.插入审核信息表
workReviewInfoService.insertByBo(bo);
if (handleResult.equals("通过")){
WorkOrderProcessBo workOrderProcess = new WorkOrderProcessBo();
// 设置基础信息
@ -613,8 +641,8 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
// 设置基础信息
workOrderProcess.setWorkOrderId(workOrderId);
workOrderProcess.setOperator(loginUser.getNickname());
workOrderProcess.setStage("故障处理");
workOrderProcess.setOperationName("故障处理");
workOrderProcess.setStage("初审");
workOrderProcess.setOperationName("初审");
workOrderProcess.setDescription("初审不通过需要重新处理工单");
// 获取最近一个节点的操作时间
LambdaQueryWrapper<WorkOrderProcess> wrapper = new LambdaQueryWrapper<>();
@ -675,7 +703,7 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
Duration duration = Duration.between(time1, time2);
long durationInSeconds = duration.getSeconds();
String formatDuration = formatDuration((int) durationInSeconds);
workOrderProcess.setDuration(formatDuration);
//workOrderProcess.setDuration(formatDuration);
Boolean flag = workOrderProcessService.insertByBo(workOrderProcess);
if (flag){
@ -700,13 +728,14 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
@Override
public void lastReviewOrder(WorkReviewInfoBo bo) {
String handleResult = bo.getHandleResult();
String workOrderId = bo.getId();
bo.setId(null);
bo.setWorkOrderId(workOrderId);
LoginUser loginUser = LoginHelper.getLoginUser();
// 1.插入审核信息表
workReviewInfoService.insertByBo(bo);
// 2.根据处理结果判断
String handleResult = bo.getHandleResult();
String workOrderId = bo.getId();
if (handleResult.equals("通过")){
WorkOrderProcessBo workOrderProcess = new WorkOrderProcessBo();
// 设置基础信息
@ -752,7 +781,8 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
endBo.setOperator(loginUser.getNickname());
workOrderProcessService.insertByBo(endBo);
}
}else {
}else if ("退回".equals(handleResult)){
// 终审不通过需要重新处理工单
WorkOrderProcessBo workOrderProcess = new WorkOrderProcessBo();
// 设置基础信息
workOrderProcess.setWorkOrderId(workOrderId);
@ -818,7 +848,7 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
LocalDateTime time2 = LocalDateTime.now();
Date date2 = Date.from(time2.atZone(ZoneId.systemDefault()).toInstant());
workOrderProcess.setOperationTime(date2);
// TODO 处理反馈信息 从表单中获取 回退原因
// 处理反馈信息 从表单中获取 回退原因
workOrderProcess.setFeedback(bo.getBackReason());
// 计算时间差
Duration duration = Duration.between(time1, time2);
@ -925,14 +955,15 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
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());
workDelayProcess.setFeedback("审核通过:"+bo.getAuditOpinion());
// 设置时间
LambdaQueryWrapper<WorkDelayProcess> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(WorkDelayProcess::getWorkOrderId, workOrderId)
.orderByDesc(WorkDelayProcess::getOperationTime)
@ -943,11 +974,9 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
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();
@ -966,7 +995,43 @@ public class WorkOrderInfoServiceImpl implements IWorkOrderInfoService {
}else {
throw new RuntimeException("延期申请不存在,无法审核!");
}
// TODO 根据 处理中(已延期) 去修改现在的超时时间
} else if (handleResult.equals("审核拒绝")) {
LambdaUpdateWrapper<WorkOrderDelay> updateWrapper1 = new LambdaUpdateWrapper<>();
updateWrapper1.eq(WorkOrderDelay::getId, bo.getId());
updateWrapper1.set(WorkOrderDelay::getHandleResult, "审核拒绝");
workOrderDelayMapper.update(null, updateWrapper1);
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);
// 计算时间差
Duration duration = Duration.between(time1, time2);
long durationInSeconds = duration.getSeconds();
String formatDuration = formatDuration((int) durationInSeconds);
workDelayProcess.setDuration(formatDuration);
workDelayProcessMapper.insert(workDelayProcess);
}else {
throw new RuntimeException("延期申请不存在,无法审核!");
}
}
// 记录操作历史记录表
WorkOrderDelayHistoryBo historyBo = new WorkOrderDelayHistoryBo();

Loading…
Cancel
Save