Compare commits

..

35 Commits

Author SHA1 Message Date
lg
dd5cb05649 Merge remote-tracking branch 'origin/dev' into dev 2025-09-28 17:24:05 +08:00
lg
01b4d80adb ys提交 2025-09-28 17:23:10 +08:00
49a31edad2 09-28-实验管理,实验问题 2025-09-28 17:21:39 +08:00
5d0a83cf1c 09-28-允许更新null值 2025-09-28 16:23:35 +08:00
bd5108bb7e 09-28-允许更新null值 2025-09-28 16:15:15 +08:00
40dc44374b 09-25-修复节点完成率 2025-09-25 16:36:24 +08:00
f6e18851de 09-25-试验任务完善试验记录 2025-09-25 15:23:06 +08:00
25188a80de 09-24-节点更新改为批量更新 2025-09-24 19:18:53 +08:00
2033a7d3c6 09-24-巡检任务更新用户类型,实验任务处理节点进度及回显信息 2025-09-24 17:15:58 +08:00
77095ac5a2 09-24-报修,抢修更新用户类型,实验任务处理节点进度及回显信息 2025-09-24 16:49:28 +08:00
4b37434057 09-24-更新用户类型,完善删除文件 2025-09-24 15:11:30 +08:00
4a810f3aef 09-23-完成工单纪录 2025-09-24 14:47:54 +08:00
56f6c9a446 09-23-工单纪录 2025-09-23 20:36:50 +08:00
b26cdfa495 09-23-完成工单,优化通用节点 2025-09-23 17:57:37 +08:00
9add81d728 09-23-工单 2025-09-23 16:53:12 +08:00
052c5c8ea0 09-23-抢修,报修优化 2025-09-23 15:56:12 +08:00
8cf7b0125d Merge remote-tracking branch 'origin/dev' into dev 2025-09-23 14:58:55 +08:00
700e8564ce 多团队配置修改 2025-09-23 14:58:18 +08:00
bcc1a5c6d1 09-23-抢修,报修优化 2025-09-23 11:39:18 +08:00
28ecf71e0c 综合管理模块排班类型添加项目id 2025-09-22 20:03:46 +08:00
a655f14188 综合管理模块 2025-09-22 19:01:09 +08:00
c17c53fd95 09-22-提交 2025-09-22 17:50:21 +08:00
959030fdb1 09-22-报修任务支持多上传 2025-09-22 15:27:33 +08:00
772b610bec 09-22-文件服务暴露删除方法 2025-09-22 15:05:41 +08:00
1e16cfd54e 09-22-巡检-试验管理-纪录搁置 2025-09-22 10:15:40 +08:00
f83c10a9ca 09-20-巡检-试验计划,任务,纪录 2025-09-20 21:11:42 +08:00
e0c6ab1bfb 09-20-巡检任务 2025-09-20 16:30:10 +08:00
1404911f53 09-19-巡检待办,计划,自定义巡检项 2025-09-19 19:51:52 +08:00
c6a63ade7f 09-19-巡检待办事项初始化 2025-09-19 12:46:01 +08:00
c975ef553a 运维模块补充 2025-09-18 19:56:40 +08:00
94e62580c3 运维模块补充 2025-09-17 16:34:02 +08:00
bc2d41ca89 运维模块重命名提交 2025-09-17 10:33:39 +08:00
ad55550d9f 运维模块补充 2025-09-17 10:25:03 +08:00
599df010ea 运维模块补充提交 2025-09-17 10:23:55 +08:00
36ee19b6e9 运维模块搭建 2025-09-17 10:18:16 +08:00
191 changed files with 15936 additions and 24 deletions

View File

@ -71,7 +71,7 @@
<properties> <properties>
<!-- 环境标识,需要与配置文件的名称相对应 --> <!-- 环境标识,需要与配置文件的名称相对应 -->
<profiles.active>dev</profiles.active> <profiles.active>dev</profiles.active>
<nacos.server>192.168.110.209:18848</nacos.server> <nacos.server>192.168.110.149:18848</nacos.server>
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group> <nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
<nacos.config.group>DEFAULT_GROUP</nacos.config.group> <nacos.config.group>DEFAULT_GROUP</nacos.config.group>
<nacos.username>nacos</nacos.username> <nacos.username>nacos</nacos.username>

View File

@ -3,6 +3,7 @@ package org.dromara.resource.api;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.resource.api.domain.RemoteFile; import org.dromara.resource.api.domain.RemoteFile;
import java.util.Collection;
import java.util.List; import java.util.List;
/** /**
@ -35,4 +36,7 @@ public interface RemoteFileService {
* @return 列表 * @return 列表
*/ */
List<RemoteFile> selectByIds(String ossIds); List<RemoteFile> selectByIds(String ossIds);
void deleteFile(Collection<String> urls);
} }

View File

@ -4,6 +4,7 @@ import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.resource.api.domain.RemoteFile; import org.dromara.resource.api.domain.RemoteFile;
import java.util.Collection;
import java.util.List; import java.util.List;
/** /**
@ -50,4 +51,9 @@ public class RemoteFileServiceMock implements RemoteFileService {
return List.of(); return List.of();
} }
@Override
public void deleteFile(Collection<String> urls){
log.warn("服务调用异常 -> 降级处理");
}
} }

View File

@ -1,5 +1,10 @@
package org.dromara.system.api; package org.dromara.system.api;
import jakarta.validation.constraints.NotNull;
import org.dromara.system.api.domain.vo.RemoteProjectVo;
import java.util.List;
/** /**
* @author lilemy * @author lilemy
* @date 2025-09-10 16:15 * @date 2025-09-10 16:15
@ -14,4 +19,19 @@ public interface RemoteProjectService {
*/ */
String selectProjectNameById(Long projectId); String selectProjectNameById(Long projectId);
/**
*校验用户是否拥有操作项目的权限
* @param projectId
* @param userId
*/
void validAuth(Long projectId, Long userId);
/**
* 判断项目是否存在
* @param projectId
* @return
*/
RemoteProjectVo getById(Long projectId);
void validAuth(List<Long> projectIdList, Long userId);
} }

View File

@ -189,4 +189,5 @@ public interface RemoteUserService {
*/ */
Map<Long, String> selectPostNamesByIds(List<Long> postIds); Map<Long, String> selectPostNamesByIds(List<Long> postIds);
RemoteUserVo selectUserByPhonenumber(String phone);
} }

View File

@ -0,0 +1,159 @@
package org.dromara.system.api.domain.vo;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 项目视图对象 project
*
* @author lilemy
* @date 2025-03-04
*/
@Data
@ExcelIgnoreUnannotated
public class RemoteProjectVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
private Long id;
/**
* 项目名称
*/
private String projectName;
/**
* 项目简称
*/
private String shortName;
/**
* 父项目id
*/
private Long parentId;
/**
* 状态0正常 1停用
*/
private String status;
/**
* 项目图片
*/
private String picUrl;
/**
* 经度
*/
private String lng;
/**
* 纬度
*/
private String lat;
/**
* 备注
*/
private String remark;
/**
* 项目类型
*/
private String projectType;
/**
* 项目阶段
*/
private String projectStage;
/**
* 项目地址
*/
private String projectSite;
/**
* 负责人
*/
private String principal;
/**
* 负责人电话
*/
private String principalPhone;
/**
* 实际容量
*/
private String actual;
/**
* 计划容量
*/
private String plan;
/**
* 开工时间
*/
private String onStreamTime;
/**
* 打卡范围09:00,18:00
*/
private String punchRange;
/**
* 打卡时间开始
*/
private String playCardStart;
/**
* 打卡时间结束
*/
private String playCardEnd;
/**
* 设计总量
*/
private Long designTotal;
/**
* 安全协议书
*/
private String securityAgreement;
/**
* 招标文件
*/
private String tenderFiles;
/**
* 显示隐藏0显示 1隐藏
*/
private String showHidden;
/**
* 排序字段
*/
private Long sort;
/**
* 创建时间
*/
private Date createTime;
}

View File

@ -0,0 +1,28 @@
package org.dromara.system.api.utils;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
* @author lilemy
* @date 2025/5/27 9:16
*/
public class BigDecimalUtil {
/**
* 计算百分比
*
* @param dividend 被除数
* @param divisor 除数
* @return 百分比保留2位小数如 12.34%
*/
public static BigDecimal toPercentage(BigDecimal dividend, BigDecimal divisor) {
if (dividend == null || divisor == null || divisor.compareTo(BigDecimal.ZERO) == 0) {
return BigDecimal.valueOf(0.00);
}
return dividend
.multiply(new BigDecimal("100"))
.divide(divisor, 2, RoundingMode.HALF_UP);
}
}

View File

@ -0,0 +1,100 @@
package org.dromara.system.api.utils;
import org.apache.poi.util.Units;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* @author lilemy
* @date 2025/4/17 14:53
*/
public class DocumentUtil {
/**
* 在给定的 run 里插入图片,并按原始大小(或缩放后大小)设置宽高。
*
* @param run 要插入图片的 XWPFRun
* @param imagePath 本地图片路径或 URL这里示例用本地文件
* @param document 当前文档对象
* @param maxWidthPx 最大允许宽度(像素),如果原图更宽就按比例缩放;设置为 <=0 则不缩放
*/
public static void insertImageDynamic(XWPFRun run,
String imagePath,
XWPFDocument document,
int maxWidthPx) throws Exception {
// 1. 先把图片读到 byte[]
byte[] imgBytes = Files.readAllBytes(Paths.get(imagePath));
// 2. 用 ImageIO 读出宽高(像素)
BufferedImage img = ImageIO.read(new ByteArrayInputStream(imgBytes));
int widthPx = img.getWidth();
int heightPx = img.getHeight();
// 3. 如果指定了最大宽度,而且原图更宽,则按比例缩放
if (maxWidthPx > 0 && widthPx > maxWidthPx) {
double ratio = (double) maxWidthPx / widthPx;
widthPx = maxWidthPx;
heightPx = (int) (heightPx * ratio);
}
// 4. 把像素转换成 EMU
int widthEmu = Units.pixelToEMU(widthPx);
int heightEmu = Units.pixelToEMU(heightPx);
// 5. 插入图片
String lower = imagePath.toLowerCase();
int format = lower.endsWith(".png") ? XWPFDocument.PICTURE_TYPE_PNG
: lower.endsWith(".gif") ? XWPFDocument.PICTURE_TYPE_GIF
: lower.endsWith(".jpeg") ? XWPFDocument.PICTURE_TYPE_JPEG
: lower.endsWith(".jpg") ? XWPFDocument.PICTURE_TYPE_JPEG
: XWPFDocument.PICTURE_TYPE_PNG; // 默认当 PNG
try (InputStream picIn = new ByteArrayInputStream(imgBytes)) {
run.addPicture(picIn, format, imagePath, widthEmu, heightEmu);
}
}
/**
* 递归将 sourceDir 中的所有文件和子目录,按照相对于 rootDir 的路径写入 ZipOutputStream。
*
* @param rootDir 源目录的根,用来计算相对路径
* @param sourceDir 当前递归到的目录
* @param zos ZIP 输出流
*/
public static void zipDirectory(Path rootDir, Path sourceDir, ZipOutputStream zos) throws IOException {
// 遍历当前目录下的所有文件和文件夹
try (DirectoryStream<Path> stream = Files.newDirectoryStream(sourceDir)) {
for (Path entry : stream) {
if (Files.isDirectory(entry)) {
// 如果是目录,递归
zipDirectory(rootDir, entry, zos);
} else {
// 如果是文件,创建一个 ZipEntry路径以 '/' 分隔
Path relativePath = rootDir.relativize(entry);
String zipEntryName = relativePath.toString().replace(File.separatorChar, '/');
ZipEntry zipEntry = new ZipEntry(zipEntryName);
zos.putNextEntry(zipEntry);
// 把文件内容写入 ZIP
try (InputStream is = Files.newInputStream(entry)) {
byte[] buffer = new byte[4096];
int len;
while ((len = is.read(buffer)) != -1) {
zos.write(buffer, 0, len);
}
}
zos.closeEntry();
}
}
}
}
}

View File

@ -0,0 +1,97 @@
package org.dromara.system.api.utils;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.exception.ServiceException;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.List;
/**
* @author lilemy
* @date 2025/4/23 10:42
*/
@Slf4j
public class Dxf2JsonUtil {
/**
* dxf转json
*
* @param exePath dxf2json.exe路径
* @param inputDXFPath 输入dxf文件路径
* @param outputJSONPath 输出json文件路径
* @param sourceEPSG 源坐标系
* @param targetEPSG 目标坐标系
*/
public static void dxf2json(String exePath, String inputDXFPath, String outputJSONPath, String sourceEPSG, String targetEPSG) {
// 判断对应文件是否存在
File exeFile = new File(exePath);
if (!exeFile.exists()) {
throw new ServiceException("转换程序不存在!");
}
File inputDXFFile = new File(inputDXFPath);
if (!inputDXFFile.exists()) {
throw new ServiceException("待转换 dxf 文件不存在!");
}
// 构造命令行参数
List<String> parameters = buildParameter(exePath, inputDXFPath, outputJSONPath, sourceEPSG, targetEPSG);
// 执行命令行
ProcessBuilder builder = new ProcessBuilder(parameters);
// 合并标准错误和输出
builder.redirectErrorStream(true);
try {
Process process = builder.start();
// 读取输出
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream(), "GBK")
);
String line;
log.info("dxf 转 json 程序开始执行,程序路径:{},输入 dxf 路径:{},输出 json 文件路径:{},源坐标系:{},模板坐标系:{}",
exePath, inputDXFPath, outputJSONPath, sourceEPSG, targetEPSG);
while ((line = reader.readLine()) != null) {
log.info("dxf 转 json 程序执行中:{}", line);
JSONObject jsonObject = JSONUtil.parseObj(line);
Integer code = jsonObject.get("code", Integer.class);
if (code != 0 && code != 200) {
throw new ServiceException("dxf 转 json 程序执行出错!");
}
}
int exitCode = process.waitFor();
log.info("dxf 转 json 程序执行完毕,程序退出码:{}", exitCode);
reader.close();
} catch (IOException | InterruptedException e) {
log.error("执行 dxf 转 json 命令行时出错", e);
}
}
/**
* 构造命令行参数
*
* @param exePath dxf2json.exe路径
* @param inputDXFPath 输入dxf文件路径
* @param outputJSONPath 输出json文件路径
* @param sourceEPSG 源坐标系
* @param targetEPSG 目标坐标系
* @return 命令行参数
*/
public static List<String> buildParameter(String exePath,
String inputDXFPath,
String outputJSONPath,
String sourceEPSG,
String targetEPSG) {
// 构造命令行
return Arrays.asList(
exePath,
inputDXFPath,
outputJSONPath,
sourceEPSG,
targetEPSG
);
}
}

View File

@ -0,0 +1,24 @@
package org.dromara.system.api.utils;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.net.http.HttpClient;
import java.time.Duration;
/**
* @Author 铁憨憨
* @Date 2025/7/18 10:16
* @Version 1.0
*
* HttpClient 设计为可重用、线程安全的组件,其内部维护了连接池等资源,适合在多个接口调用中共享使用,所以交给Spring Bean 管理
*/
@Configuration
public class HttpClientConfig {
@Bean
public HttpClient httpClient() {
return HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
}
}

View File

@ -0,0 +1,56 @@
package org.dromara.system.api.utils;
import cn.hutool.core.util.HexUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.AES;
import jakarta.annotation.PostConstruct;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* @author lilemy
* @date 2025/6/25 10:57
*/
@Slf4j
@Component
public class IdCardEncryptorUtil {
@Value("${id-card.encrypt-key}")
private String encryptKeyHex;
private AES aes;
@PostConstruct
public void init() {
byte[] keyBytes = HexUtil.decodeHex(encryptKeyHex);
this.aes = SecureUtil.aes(keyBytes);
log.info("身份证 AES 加解密工具初始化成功");
}
/**
* 加密
*
* @param idCard 身份证号码
* @return 加密后的身份证号码
*/
public String encrypt(String idCard) {
return aes.encryptBase64(idCard);
}
/**
* 解密
*
* @param encrypted 密文
* @return 解密后的身份证号码
*/
public String decrypt(String encrypted) {
if (encrypted == null) {
return null;
}
return aes.decryptStr(encrypted);
}
}

View File

@ -0,0 +1,316 @@
//package org.dromara.system.api.utils;
//
//import cn.hutool.json.JSONUtil;
//import org.dromara.common.constant.GeoJsonConstant;
//import org.dromara.common.core.constant.HttpStatus;
//import org.dromara.common.core.exception.ServiceException;
//import org.dromara.common.domain.GeoPoint;
//import org.dromara.facility.domain.dto.geojson.FacFeatureByPlane;
//import org.dromara.facility.domain.dto.geojson.FacFeatureByPoint;
//import org.dromara.facility.domain.dto.geojson.FacGeometry;
//import org.dromara.facility.domain.dto.geojson.FacGeometryByPoint;
//import org.locationtech.jts.geom.*;
//import org.locationtech.jts.index.strtree.STRtree;
//
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.stream.Collectors;
//
///**
// * @author lilemy
// * @date 2025/4/24 11:48
// */
//public class JSTUtil {
//
// private static final GeometryFactory geometryFactory = new GeometryFactory();
//
// /**
// * 获取最近点的名称
// *
// * @param target 目标点
// * @param nameGeoJson 点对象列表
// * @return 最近点的名称
// */
// public static String findNearestText(List<Double> target, List<FacFeatureByPoint> nameGeoJson) {
// Point targetPoint = geometryFactory.createPoint(new Coordinate(target.get(0), target.get(1)));
// FacFeatureByPoint nearestFeature = null;
// double minDistance = Double.MAX_VALUE;
// for (FacFeatureByPoint feature : nameGeoJson) {
// FacGeometryByPoint geometry = feature.getGeometry();
// List<Double> coords = geometry.getCoordinates();
// if (coords != null && coords.size() == 2) {
// Point currentPoint = geometryFactory.createPoint(new Coordinate(coords.get(0), coords.get(1)));
// double distance = targetPoint.distance(currentPoint);
// if (distance < minDistance) {
// minDistance = distance;
// nearestFeature = feature;
// }
// }
// }
// if (nearestFeature != null && nearestFeature.getProperties() != null) {
// return nearestFeature.getProperties().getText();
// }
// return null; // 如果没找到合适的点
// }
//
// /**
// * 点是否在平面内
// *
// * @param planeLists 平面坐标
// * @param pointList 点坐标
// * @return 点是否在平面内
// */
// public static Boolean pointIsWithInPlane(List<List<Double>> planeLists, List<Double> pointList) {
// // 构建平面
// Coordinate[] coordinates = getPlaneCoordinate(planeLists);
// Polygon polygon = geometryFactory.createPolygon(coordinates);
// // 构建待判断点
// Point point = geometryFactory.createPoint(new Coordinate(pointList.get(0), pointList.get(1)));
// // 判断是否在多边形内
// return polygon.contains(point);
// }
//
// /**
// * 获取平面内点列表集合
// *
// * @param planeLists 平面坐标列表
// * @param pointLists 点坐标列表集合
// * @return 平面内点坐标列表集合
// */
// public static List<List<Double>> getPointInPlaneList(List<List<Double>> planeLists, List<List<Double>> pointLists) {
// // 构建平面
// Coordinate[] coordinates = getPlaneCoordinate(planeLists);
// LinearRing shell = geometryFactory.createLinearRing(coordinates);
// Polygon polygon = geometryFactory.createPolygon(shell);
// // 获取平面内点结合
// return pointLists.stream().filter(pointList -> {
// // 构建待判断点
// Point point = geometryFactory.createPoint(new Coordinate(pointList.get(0), pointList.get(1)));
// // 判断是否在多边形内
// return polygon.contains(point);
// }).toList();
// }
//
// /**
// * 平面是否在平面内
// *
// * @param referencePlane 参考平面
// * @param comparePlane 比较平面
// * @return 平面是否在平面内
// */
// public static Boolean planeIsWithInPlane(List<List<Double>> referencePlane, List<List<Double>> comparePlane) {
// // 构建参考平面
// Coordinate[] referenceCoordinates = getPlaneCoordinate(referencePlane);
// Polygon referencePolygon = geometryFactory.createPolygon(referenceCoordinates);
// // 构建比较平面
// Coordinate[] compareCoordinates = getPlaneCoordinate(comparePlane);
// Polygon comparePolygon = geometryFactory.createPolygon(compareCoordinates);
// // 判断是否在多边形内
// return referencePolygon.contains(comparePolygon);
// }
//
// /**
// * 判断两个平面是否相交
// *
// * @param referencePlane 参考平面
// * @param comparePlane 待比较平面
// * @return 平面是否相交
// */
// public static Boolean arePolygonsIntersecting(List<List<Double>> referencePlane, List<List<Double>> comparePlane) {
// // 构建 Polygon A参考面
// Coordinate[] coordsA = referencePlane.stream()
// .map(p -> new Coordinate(p.getFirst(), p.get(1)))
// .toArray(Coordinate[]::new);
// Polygon polygonA = geometryFactory.createPolygon(coordsA);
// // 构建 Polygon B比较面
// Coordinate[] coordsB = comparePlane.stream()
// .map(p -> new Coordinate(p.getFirst(), p.get(1)))
// .toArray(Coordinate[]::new);
// Polygon polygonB = geometryFactory.createPolygon(coordsB);
// // 使用 JTS 判断是否相交
// return polygonA.intersects(polygonB);
// }
//
// /**
// * 获取平面坐标数组
// *
// * @param planeLists 平面坐标列表
// * @return 平面坐标数组
// */
// public static Coordinate[] getPlaneCoordinate(List<List<Double>> planeLists) {
// return planeLists.stream().map(planeList ->
// new Coordinate(planeList.getFirst(), planeList.get(1)))
// .toList().toArray(new Coordinate[0]);
// }
//
// /**
// * 获取二维坐标
// *
// * @param geometry 几何对象
// * @return 二维坐标
// */
// public static List<List<Double>> getTwoDimensionalCoordinates(FacGeometry geometry) {
// String type = geometry.getType();
// List<Object> coordinates = geometry.getCoordinates();
// return switch (type) {
// case GeoJsonConstant.POINT -> throw new ServiceException("点位无法创建方阵", HttpStatus.BAD_REQUEST);
// case GeoJsonConstant.LINE -> coordinates.stream()
// .filter(obj -> obj instanceof List<?>)
// .map(obj -> ((List<?>) obj).stream()
// .filter(num -> num instanceof Number)
// .map(num -> ((Number) num).doubleValue())
// .collect(Collectors.toList()))
// .collect(Collectors.toList());
// case GeoJsonConstant.POLYGON -> coordinates.stream()
// .filter(obj -> obj instanceof List<?>)
// .flatMap(obj -> ((List<?>) obj).stream())
// .filter(pointObj -> pointObj instanceof List<?>)
// .map(pointObj -> ((List<?>) pointObj).stream()
// .filter(num -> num instanceof Number)
// .map(num -> ((Number) num).doubleValue())
// .collect(Collectors.toList()))
// .collect(Collectors.toList());
// default -> throw new ServiceException("暂不支持该类型", HttpStatus.BAD_REQUEST);
// };
// }
//
// /**
// * 匹配最近的点,获取该点的名称
// *
// * @param polygon 平面
// * @param points 点列表集合
// * @return 最近点的名称
// */
// public static String findNearestPointText(List<List<Double>> polygon, List<FacFeatureByPoint> points) {
// if (polygon == null || polygon.size() < 3 || points == null || points.isEmpty()) {
// return null;
// }
// // 1. 构建 Polygon
// Coordinate[] polygonCoords = polygon.stream()
// .map(coord -> new Coordinate(coord.getFirst(), coord.get(1)))
// .toArray(Coordinate[]::new);
// Polygon jtsPolygon = geometryFactory.createPolygon(polygonCoords);
// // 2. 构建空间索引JTS STRtree
// STRtree spatialIndex = new STRtree();
// Map<Coordinate, FacFeatureByPoint> coordToFeatureMap = new HashMap<>();
// for (FacFeatureByPoint feature : points) {
// List<Double> coords = feature.getGeometry().getCoordinates();
// if (coords == null || coords.size() != 2) continue;
// Coordinate coord = new Coordinate(coords.get(0), coords.get(1));
// Point point = geometryFactory.createPoint(coord);
// // 用点的 Envelope 加入索引
// spatialIndex.insert(point.getEnvelopeInternal(), point);
// coordToFeatureMap.put(coord, feature);
// }
// // 3. 查询距离 polygon 最近的点
// // 用 polygon 中心点附近构造 Envelope扩大一些范围
// Envelope searchEnv = jtsPolygon.getEnvelopeInternal();
// searchEnv.expandBy(10); // 扩大搜索半径
// @SuppressWarnings("unchecked")
// List<Point> candidatePoints = spatialIndex.query(searchEnv);
// double minDistance = Double.MAX_VALUE;
// Coordinate nearestCoord = null;
// for (Point point : candidatePoints) {
// double distance = point.distance(jtsPolygon);
// if (distance < minDistance) {
// minDistance = distance;
// nearestCoord = point.getCoordinate();
// }
// }
// if (nearestCoord != null) {
// FacFeatureByPoint nearestFeature = coordToFeatureMap.get(nearestCoord);
// if (nearestFeature != null && nearestFeature.getProperties() != null) {
// return nearestFeature.getProperties().getText();
// }
// }
// return null;
// }
//
// /**
// * 匹配最近的面,获取该面的信息
// *
// * @param pointFeature 点位
// * @param polygons 平面列表
// * @return 最近面的信息
// */
// public static FacFeatureByPlane findNearestOrContainingPolygon(
// FacFeatureByPoint pointFeature,
// List<FacFeatureByPlane> polygons
// ) {
// if (pointFeature == null || polygons == null || polygons.isEmpty()) {
// return null;
// }
// List<Double> coords = pointFeature.getGeometry().getCoordinates();
// if (coords == null || coords.size() != 2) return null;
// Coordinate pointCoord = new Coordinate(coords.get(0), coords.get(1));
// Point point = geometryFactory.createPoint(pointCoord);
// FacFeatureByPlane nearestPolygon = null;
// double minDistance = Double.MAX_VALUE;
// for (FacFeatureByPlane polygonFeature : polygons) {
// if (polygonFeature == null || polygonFeature.getGeometry() == null) {
// continue; // 跳过空对象
// }
// List<List<Double>> polyCoords = polygonFeature.getGeometry().getCoordinates().getFirst();
// Coordinate[] polygonCoords = polyCoords.stream()
// .map(c -> new Coordinate(c.getFirst(), c.get(1)))
// .toArray(Coordinate[]::new);
// Polygon polygon = geometryFactory.createPolygon(polygonCoords);
// // 优先使用包含点的 polygon
// if (polygon.contains(point)) {
// return polygonFeature;
// }
// double distance = polygon.distance(point);
// if (distance < minDistance) {
// minDistance = distance;
// nearestPolygon = polygonFeature;
// }
// }
// return nearestPolygon;
// }
//
// /**
// * 判断一个点是否在多个区域中,返回第一个匹配区域的点集合(否则 null
// *
// * @param lat 纬度
// * @param lng 经度
// * @param rangeListJson 多边形列表,每个为 JSON 数组(多边形的点数组)
// * @return 匹配区域的 List<Point>,否则 null
// */
// public static List<GeoPoint> findMatchingRange(String lat, String lng, List<String> rangeListJson) {
// double latitude = Double.parseDouble(lat);
// double longitude = Double.parseDouble(lng);
// Point point = geometryFactory.createPoint(new Coordinate(longitude, latitude));
// for (String rangeJson : rangeListJson) {
// List<GeoPoint> polygonPoints = JSONUtil.toList(rangeJson, GeoPoint.class);
// if (polygonPoints.size() < 3) continue; // 不是有效多边形
//
// Polygon polygon = buildPolygon(polygonPoints);
// if (polygon.contains(point)) {
// return polygonPoints; // 找到匹配范围
// }
// }
// return null;
// }
//
// /**
// * 将点集合转换为 JTS 多边形
// */
// private static Polygon buildPolygon(List<GeoPoint> points) {
// Coordinate[] coordinates = points.stream()
// .map(p -> new Coordinate(p.getLng(), p.getLat()))
// .toArray(Coordinate[]::new);
//
// // 需要闭合坐标环(首尾相连)
// if (!coordinates[0].equals2D(coordinates[coordinates.length - 1])) {
// Coordinate[] closed = new Coordinate[coordinates.length + 1];
// System.arraycopy(coordinates, 0, closed, 0, coordinates.length);
// closed[closed.length - 1] = coordinates[0];
// coordinates = closed;
// }
//
// LinearRing shell = geometryFactory.createLinearRing(coordinates);
// return geometryFactory.createPolygon(shell);
// }
//
//}

View File

@ -0,0 +1,24 @@
package org.dromara.system.api.utils;
import cn.hutool.json.JSONArray;
/**
* @author lilemy
* @date 2025/5/30 14:55
*/
public class JsonDimensionUtil {
/**
* 判断 JSONArray 的嵌套维度
*
* @param array 需要判断的 JSONArray
* @return 返回维度层级1 表示一维2 表示二维3 表示三维 ...
*/
public static int getJsonArrayDepth(Object array) {
if (array instanceof JSONArray jsonArray && !jsonArray.isEmpty()) {
return 1 + getJsonArrayDepth(jsonArray.getFirst());
}
return 0;
}
}

View File

@ -0,0 +1,34 @@
//package org.dromara.system.api.utils;
//
//import cn.hutool.core.collection.CollUtil;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//
//import java.util.Collections;
//import java.util.List;
//import java.util.function.Function;
//
///**
// * @author lilemy
// * @date 2025/5/28 11:25
// */
//public class PageConvertUtil {
//
// /**
// * 将 Page<T> 转换为 Page<V>
// *
// * @param source 原始分页数据
// * @param mapper 实体 -> VO 的转换函数
// * @return Page<V>
// */
// public static <T, V> Page<V> convert(Page<T> source, Function<T, V> mapper) {
// Page<V> target = new Page<>(source.getCurrent(), source.getSize(), source.getTotal());
// if (CollUtil.isEmpty(source.getRecords())) {
// target.setRecords(Collections.emptyList());
// } else {
// List<V> voList = source.getRecords().stream().map(mapper).toList();
// target.setRecords(voList);
// }
// return target;
// }
//
//}

View File

@ -93,10 +93,10 @@
</dependency> </dependency>
<!-- 自定义负载均衡(多团队开发使用) --> <!-- 自定义负载均衡(多团队开发使用) -->
<!-- <dependency>--> <dependency>
<!-- <groupId>org.dromara</groupId>--> <groupId>org.dromara</groupId>
<!-- <artifactId>ruoyi-common-loadbalancer</artifactId>--> <artifactId>ruoyi-common-loadbalancer</artifactId>
<!-- </dependency>--> </dependency>
<!-- ELK 日志收集 --> <!-- ELK 日志收集 -->
<!-- <dependency>--> <!-- <dependency>-->

View File

@ -58,18 +58,19 @@
<dependency> <dependency>
<groupId>cn.hutool</groupId> <groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId> <artifactId>hutool-all</artifactId>
<version>5.8.38</version>
</dependency> </dependency>
<dependency> <!-- <dependency>-->
<groupId>cn.hutool</groupId> <!-- <groupId>cn.hutool</groupId>-->
<artifactId>hutool-http</artifactId> <!-- <artifactId>hutool-http</artifactId>-->
</dependency> <!-- </dependency>-->
<dependency> <!-- <dependency>-->
<groupId>cn.hutool</groupId> <!-- <groupId>cn.hutool</groupId>-->
<artifactId>hutool-extra</artifactId> <!-- <artifactId>hutool-extra</artifactId>-->
</dependency> <!-- </dependency>-->
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>

View File

@ -29,5 +29,6 @@ mybatis-plus:
# 逻辑未删除值 # 逻辑未删除值
logicNotDeleteValue: 0 logicNotDeleteValue: 0
insertStrategy: NOT_NULL insertStrategy: NOT_NULL
updateStrategy: NOT_NULL # updateStrategy: NOT_NULL
updateStrategy: ALWAYS
whereStrategy: NOT_NULL whereStrategy: NOT_NULL

View File

@ -89,10 +89,10 @@
</dependency> </dependency>
<!-- 自定义负载均衡(多团队开发使用) --> <!-- 自定义负载均衡(多团队开发使用) -->
<!-- <dependency>--> <dependency>
<!-- <groupId>org.dromara</groupId>--> <groupId>org.dromara</groupId>
<!-- <artifactId>ruoyi-common-loadbalancer</artifactId>--> <artifactId>ruoyi-common-loadbalancer</artifactId>
<!-- </dependency>--> </dependency>
<!-- ELK 日志收集 --> <!-- ELK 日志收集 -->
<!-- <dependency>--> <!-- <dependency>-->

View File

@ -15,6 +15,7 @@
<module>ruoyi-resource</module> <module>ruoyi-resource</module>
<module>ruoyi-workflow</module> <module>ruoyi-workflow</module>
<module>ruoyi-synjinlangyun</module> <module>ruoyi-synjinlangyun</module>
<module>xny-ops</module>
</modules> </modules>
<artifactId>ruoyi-modules</artifactId> <artifactId>ruoyi-modules</artifactId>
@ -26,10 +27,10 @@
<dependencies> <dependencies>
<!-- 自定义负载均衡(多团队开发使用) --> <!-- 自定义负载均衡(多团队开发使用) -->
<!-- <dependency>--> <dependency>
<!-- <groupId>org.dromara</groupId>--> <groupId>org.dromara</groupId>
<!-- <artifactId>ruoyi-common-loadbalancer</artifactId>--> <artifactId>ruoyi-common-loadbalancer</artifactId>
<!-- </dependency>--> </dependency>
<!-- ELK 日志收集 --> <!-- ELK 日志收集 -->
<!-- <dependency>--> <!-- <dependency>-->

View File

@ -195,7 +195,7 @@ public class GenController extends BaseController {
*/ */
private void genCode(HttpServletResponse response, byte[] data) throws IOException { private void genCode(HttpServletResponse response, byte[] data) throws IOException {
response.reset(); response.reset();
response.addHeader("Access-Control-Allow-Origin", "*"); // response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Expose-Headers", "Content-Disposition"); response.addHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\""); response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\"");
response.addHeader("Content-Length", "" + data.length); response.addHeader("Content-Length", "" + data.length);

View File

@ -18,6 +18,7 @@ import org.dromara.resource.service.ISysOssService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List; import java.util.List;
/** /**
@ -86,4 +87,13 @@ public class RemoteFileServiceImpl implements RemoteFileService {
List<SysOssVo> sysOssVos = sysOssService.listByIds(StringUtils.splitTo(ossIds, Convert::toLong)); List<SysOssVo> sysOssVos = sysOssService.listByIds(StringUtils.splitTo(ossIds, Convert::toLong));
return MapstructUtils.convert(sysOssVos, RemoteFile.class); return MapstructUtils.convert(sysOssVos, RemoteFile.class);
} }
@Override
public void deleteFile(Collection<String> urls){
OssClient storage = OssFactory.instance();
for (String url : urls) {
storage.delete(url);
}
}
} }

View File

@ -1,11 +1,23 @@
package org.dromara.system.dubbo; package org.dromara.system.dubbo;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService; import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.common.core.constant.HttpStatus;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.system.api.RemoteProjectService; import org.dromara.system.api.RemoteProjectService;
import org.dromara.system.api.domain.vo.RemoteProjectVo;
import org.dromara.system.domain.BusProject;
import org.dromara.system.domain.BusUserProjectRelevancy;
import org.dromara.system.service.IBusProjectService; import org.dromara.system.service.IBusProjectService;
import org.dromara.system.service.IBusUserProjectRelevancyService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/** /**
* @author lilemy * @author lilemy
* @date 2025-09-11 18:33 * @date 2025-09-11 18:33
@ -27,4 +39,22 @@ public class RemoteProjectServiceImpl implements RemoteProjectService {
public String selectProjectNameById(Long projectId) { public String selectProjectNameById(Long projectId) {
return projectService.getProjectNameById(projectId); return projectService.getProjectNameById(projectId);
} }
@Override
public void validAuth(Long projectId, Long userId) {
projectService.validAuth(projectId, userId);
}
@Override
public RemoteProjectVo getById(Long projectId) {
BusProject byId = projectService.getById(projectId);
RemoteProjectVo remoteProjectVo = new RemoteProjectVo();
BeanUtils.copyProperties(byId, remoteProjectVo);
return remoteProjectVo;
}
@Override
public void validAuth(List<Long> projectIdList, Long userId) {
projectService.validAuth(projectIdList, userId);
}
} }

View File

@ -488,4 +488,10 @@ public class RemoteUserServiceImpl implements RemoteUserService {
.collect(Collectors.toMap(SysPost::getPostId, SysPost::getPostName)); .collect(Collectors.toMap(SysPost::getPostId, SysPost::getPostName));
} }
@Override
public RemoteUserVo selectUserByPhonenumber(String phone) {
SysUserVo sysUserVo = userMapper.selectVoOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getPhonenumber, phone));
return BeanUtil.copyProperties(sysUserVo, RemoteUserVo.class);
}
} }

View File

@ -0,0 +1,27 @@
# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/
FROM bellsoft/liberica-openjdk-rocky:17.0.15-cds
#FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds
#FROM findepi/graalvm:java17-native
LABEL maintainer="Lion Li"
RUN mkdir -p /xny/ops/logs \
/xny/ops/temp \
/ruoyi/skywalking/agent
WORKDIR /xny/ops
ENV SERVER_PORT=19301 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""
EXPOSE ${SERVER_PORT}
ADD ./target/xny-ops.jar ./app.jar
SHELL ["/bin/bash", "-c"]
ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -Dserver.port=${SERVER_PORT} \
#-Dskywalking.agent.service_name=xny-ops \
#-javaagent:/ruoyi/skywalking/agent/skywalking-agent.jar \
-XX:+HeapDumpOnOutOfMemoryError -XX:+UseZGC ${JAVA_OPTS} \
-jar app.jar

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-modules</artifactId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>xny-ops</artifactId>
<description>
xny-ops模块
</description>
<dependencies>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-nacos</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-sentinel</artifactId>
</dependency>
<!-- RuoYi Common Log -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-log</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-service-impl</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-doc</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-web</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-mybatis</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-dubbo</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-seata</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-idempotent</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-tenant</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-security</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-translation</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-sensitive</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-encrypt</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,23 @@
package org.dromara;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup;
/**
* 运维模块
*/
@EnableDubbo
@SpringBootApplication
public class OpsApplication {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(OpsApplication.class);
application.setApplicationStartup(new BufferingApplicationStartup(2048));
application.run(args);
System.out.println("(♥◠‿◠)ノ゙ 运维模块启动成功 ლ(´ڡ`ლ)゙ ");
}
}

View File

@ -0,0 +1,106 @@
package org.dromara.inspection.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.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.inspection.domain.vo.OpsInspectionItemVo;
import org.dromara.inspection.domain.bo.OpsInspectionItemBo;
import org.dromara.inspection.service.IOpsInspectionItemService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 运维-巡检-自定义巡检项
* 前端访问路由地址为:/inspection/item
*
* @author LionLi
* @date 2025-09-19
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/item")
public class OpsInspectionItemController extends BaseController {
private final IOpsInspectionItemService opsInspectionItemService;
/**
* 查询运维-巡检-自定义巡检项列表
*/
@SaCheckPermission("inspection:item:list")
@GetMapping("/list")
public TableDataInfo<OpsInspectionItemVo> list(OpsInspectionItemBo bo, PageQuery pageQuery) {
return opsInspectionItemService.queryPageList(bo, pageQuery);
}
/**
* 导出运维-巡检-自定义巡检项列表
*/
@SaCheckPermission("inspection:item:export")
@Log(title = "运维-巡检-自定义巡检项", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OpsInspectionItemBo bo, HttpServletResponse response) {
List<OpsInspectionItemVo> list = opsInspectionItemService.queryList(bo);
ExcelUtil.exportExcel(list, "运维-巡检-自定义巡检项", OpsInspectionItemVo.class, response);
}
/**
* 获取运维-巡检-自定义巡检项详细信息
*
* @param id 主键
*/
@SaCheckPermission("inspection:item:query")
@GetMapping("/{id}")
public R<OpsInspectionItemVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return R.ok(opsInspectionItemService.queryById(id));
}
/**
* 新增运维-巡检-自定义巡检项
*/
@SaCheckPermission("inspection:item:add")
@Log(title = "运维-巡检-自定义巡检项", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OpsInspectionItemBo bo) {
return toAjax(opsInspectionItemService.insertByBo(bo));
}
/**
* 修改运维-巡检-自定义巡检项
*/
@SaCheckPermission("inspection:item:edit")
@Log(title = "运维-巡检-自定义巡检项", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OpsInspectionItemBo bo) {
return toAjax(opsInspectionItemService.updateByBo(bo));
}
/**
* 删除运维-巡检-自定义巡检项
*
* @param ids 主键串
*/
@SaCheckPermission("inspection:item:remove")
@Log(title = "运维-巡检-自定义巡检项", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("ids") Long[] ids) {
return toAjax(opsInspectionItemService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,106 @@
package org.dromara.inspection.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.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.inspection.domain.vo.OpsInspectionMatterVo;
import org.dromara.inspection.domain.bo.OpsInspectionMatterBo;
import org.dromara.inspection.service.IOpsInspectionMatterService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 运维-巡检-待办
* 前端访问路由地址为:/inspection/matter
*
* @author LionLi
* @date 2025-09-19
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/matter")
public class OpsInspectionMatterController extends BaseController {
private final IOpsInspectionMatterService opsInspectionMatterService;
/**
* 查询运维-巡检-待办列表
*/
@SaCheckPermission("inspection:matter:list")
@GetMapping("/list")
public TableDataInfo<OpsInspectionMatterVo> list(OpsInspectionMatterBo bo, PageQuery pageQuery) {
return opsInspectionMatterService.queryPageList(bo, pageQuery);
}
/**
* 导出运维-巡检-待办列表
*/
@SaCheckPermission("inspection:matter:export")
@Log(title = "运维-巡检-待办", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OpsInspectionMatterBo bo, HttpServletResponse response) {
List<OpsInspectionMatterVo> list = opsInspectionMatterService.queryList(bo);
ExcelUtil.exportExcel(list, "运维-巡检-待办", OpsInspectionMatterVo.class, response);
}
/**
* 获取运维-巡检-待办详细信息
*
* @param id 主键
*/
@SaCheckPermission("inspection:matter:query")
@GetMapping("/{id}")
public R<OpsInspectionMatterVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return R.ok(opsInspectionMatterService.queryById(id));
}
/**
* 新增运维-巡检-待办
*/
@SaCheckPermission("inspection:matter:add")
@Log(title = "运维-巡检-待办", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OpsInspectionMatterBo bo) {
return toAjax(opsInspectionMatterService.insertByBo(bo));
}
/**
* 修改运维-巡检-待办
*/
@SaCheckPermission("inspection:matter:edit")
@Log(title = "运维-巡检-待办", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OpsInspectionMatterBo bo) {
return toAjax(opsInspectionMatterService.updateByBo(bo));
}
/**
* 删除运维-巡检-待办
*
* @param ids 主键串
*/
@SaCheckPermission("inspection:matter:remove")
@Log(title = "运维-巡检-待办", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("ids") Long[] ids) {
return toAjax(opsInspectionMatterService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,108 @@
package org.dromara.inspection.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.springframework.transaction.annotation.Transactional;
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.inspection.domain.vo.OpsInspectionNodeVo;
import org.dromara.inspection.domain.bo.OpsInspectionNodeBo;
import org.dromara.inspection.service.IOpsInspectionNodeService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 运维-巡检-通用节点
* 前端访问路由地址为:/inspection/node
*
* @author LionLi
* @date 2025-09-23
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/node")
public class OpsInspectionNodeController extends BaseController {
private final IOpsInspectionNodeService opsInspectionNodeService;
/**
* 查询运维-巡检-通用节点列表
*/
@SaCheckPermission("inspection:node:list")
@GetMapping("/list")
public TableDataInfo<OpsInspectionNodeVo> list(OpsInspectionNodeBo bo, PageQuery pageQuery) {
return opsInspectionNodeService.queryPageList(bo, pageQuery);
}
/**
* 导出运维-巡检-通用节点列表
*/
@SaCheckPermission("inspection:node:export")
@Log(title = "运维-巡检-通用节点", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OpsInspectionNodeBo bo, HttpServletResponse response) {
List<OpsInspectionNodeVo> list = opsInspectionNodeService.queryList(bo);
ExcelUtil.exportExcel(list, "运维-巡检-通用节点", OpsInspectionNodeVo.class, response);
}
/**
* 获取运维-巡检-通用节点详细信息
*
* @param id 主键
*/
@SaCheckPermission("inspection:node:query")
@GetMapping("/{id}")
public R<OpsInspectionNodeVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return R.ok(opsInspectionNodeService.queryById(id));
}
/**
* 新增运维-巡检-通用节点
*/
@SaCheckPermission("inspection:node:add")
@Log(title = "运维-巡检-通用节点", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
@Transactional
public R<String> add(@Validated(AddGroup.class) @RequestBody List<OpsInspectionNodeBo> bo) {
return opsInspectionNodeService.insertByBo(bo);
}
/**
* 修改运维-巡检-通用节点
*/
@SaCheckPermission("inspection:node:edit")
@Log(title = "运维-巡检-通用节点", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody List<OpsInspectionNodeBo> bo) {
return toAjax(opsInspectionNodeService.updateByBo(bo));
}
/**
* 删除运维-巡检-通用节点
*
* @param ids 主键串
*/
@SaCheckPermission("inspection:node:remove")
@Log(title = "运维-巡检-通用节点", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("ids") Long[] ids) {
return toAjax(opsInspectionNodeService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,117 @@
package org.dromara.inspection.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.inspection.domain.vo.OrderRecordVo;
import org.dromara.inspection.service.impl.OpsInspectionOrderServiceImpl;
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.inspection.domain.vo.OpsInspectionOrderVo;
import org.dromara.inspection.domain.bo.OpsInspectionOrderBo;
import org.dromara.inspection.service.IOpsInspectionOrderService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 运维-巡检-工单
* 前端访问路由地址为:/inspection/order
*
* @author LionLi
* @date 2025-09-23
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/order")
public class OpsInspectionOrderController extends BaseController {
private final OpsInspectionOrderServiceImpl opsInspectionOrderService;
/**
* 查询运维-巡检-工单列表
*/
@SaCheckPermission("inspection:order:list")
@GetMapping("/list")
public TableDataInfo<OpsInspectionOrderVo> list(OpsInspectionOrderBo bo, PageQuery pageQuery) {
return opsInspectionOrderService.queryPageList(bo, pageQuery);
}
/**
* 导出运维-巡检-工单列表
*/
@SaCheckPermission("inspection:order:export")
@Log(title = "运维-巡检-工单", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OpsInspectionOrderBo bo, HttpServletResponse response) {
List<OpsInspectionOrderVo> list = opsInspectionOrderService.queryList(bo);
ExcelUtil.exportExcel(list, "运维-巡检-工单", OpsInspectionOrderVo.class, response);
}
/**
* 获取运维-巡检-工单详细信息
*
* @param id 主键
*/
@SaCheckPermission("inspection:order:query")
@GetMapping("/{id}")
public R<OpsInspectionOrderVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return R.ok(opsInspectionOrderService.queryById(id));
}
/**
* 新增运维-巡检-工单
*/
@SaCheckPermission("inspection:order:add")
@Log(title = "运维-巡检-工单", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OpsInspectionOrderBo bo) {
return toAjax(opsInspectionOrderService.insertByBo(bo));
}
/**
* 修改运维-巡检-工单
*/
@SaCheckPermission("inspection:order:edit")
@Log(title = "运维-巡检-工单", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OpsInspectionOrderBo bo) {
return toAjax(opsInspectionOrderService.updateByBo(bo));
}
/**
* 删除运维-巡检-工单
*
* @param ids 主键串
*/
@SaCheckPermission("inspection:order:remove")
@Log(title = "运维-巡检-工单", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("ids") Long[] ids) {
return toAjax(opsInspectionOrderService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 获取纪录
*/
@SaCheckPermission("inspection:order:record")
@GetMapping("/record")
public R<OrderRecordVo> record(Long projectId) {
return opsInspectionOrderService.record(projectId);
}
}

View File

@ -0,0 +1,106 @@
package org.dromara.inspection.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.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.inspection.domain.vo.OpsInspectionPlanVo;
import org.dromara.inspection.domain.bo.OpsInspectionPlanBo;
import org.dromara.inspection.service.IOpsInspectionPlanService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 运维-巡检-计划
* 前端访问路由地址为:/inspection/plan
*
* @author LionLi
* @date 2025-09-19
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/plan")
public class OpsInspectionPlanController extends BaseController {
private final IOpsInspectionPlanService opsInspectionPlanService;
/**
* 查询运维-巡检-计划列表
*/
@SaCheckPermission("inspection:plan:list")
@GetMapping("/list")
public TableDataInfo<OpsInspectionPlanVo> list(OpsInspectionPlanBo bo, PageQuery pageQuery) {
return opsInspectionPlanService.queryPageList(bo, pageQuery);
}
/**
* 导出运维-巡检-计划列表
*/
@SaCheckPermission("inspection:plan:export")
@Log(title = "运维-巡检-计划", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OpsInspectionPlanBo bo, HttpServletResponse response) {
List<OpsInspectionPlanVo> list = opsInspectionPlanService.queryList(bo);
ExcelUtil.exportExcel(list, "运维-巡检-计划", OpsInspectionPlanVo.class, response);
}
/**
* 获取运维-巡检-计划详细信息
*
* @param id 主键
*/
@SaCheckPermission("inspection:plan:query")
@GetMapping("/{id}")
public R<OpsInspectionPlanVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return R.ok(opsInspectionPlanService.queryById(id));
}
/**
* 新增运维-巡检-计划
*/
@SaCheckPermission("inspection:plan:add")
@Log(title = "运维-巡检-计划", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OpsInspectionPlanBo bo) {
return toAjax(opsInspectionPlanService.insertByBo(bo));
}
/**
* 修改运维-巡检-计划
*/
@SaCheckPermission("inspection:plan:edit")
@Log(title = "运维-巡检-计划", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OpsInspectionPlanBo bo) {
return toAjax(opsInspectionPlanService.updateByBo(bo));
}
/**
* 删除运维-巡检-计划
*
* @param ids 主键串
*/
@SaCheckPermission("inspection:plan:remove")
@Log(title = "运维-巡检-计划", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("ids") Long[] ids) {
return toAjax(opsInspectionPlanService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,119 @@
package org.dromara.inspection.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.inspection.domain.vo.OpsInspectionReportRecordVo;
import org.dromara.inspection.service.impl.OpsInspectionRepairServiceImpl;
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.inspection.domain.vo.OpsInspectionRepairVo;
import org.dromara.inspection.domain.bo.OpsInspectionRepairBo;
import org.dromara.inspection.service.IOpsInspectionRepairService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 运维-巡检-抢修
* 前端访问路由地址为:/inspection/repair
*
* @author LionLi
* @date 2025-09-22
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/repair")
public class OpsInspectionRepairController extends BaseController {
private final OpsInspectionRepairServiceImpl opsInspectionRepairService;
/**
* 查询运维-巡检-抢修列表
*/
@SaCheckPermission("inspection:repair:list")
@GetMapping("/list")
public TableDataInfo<OpsInspectionRepairVo> list(OpsInspectionRepairBo bo, PageQuery pageQuery) {
return opsInspectionRepairService.queryPageList(bo, pageQuery);
}
/**
* 导出运维-巡检-抢修列表
*/
@SaCheckPermission("inspection:repair:export")
@Log(title = "运维-巡检-抢修", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OpsInspectionRepairBo bo, HttpServletResponse response) {
List<OpsInspectionRepairVo> list = opsInspectionRepairService.queryList(bo);
ExcelUtil.exportExcel(list, "运维-巡检-抢修", OpsInspectionRepairVo.class, response);
}
/**
* 获取运维-巡检-抢修详细信息
*
* @param id 主键
*/
@SaCheckPermission("inspection:repair:query")
@GetMapping("/{id}")
public R<OpsInspectionRepairVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return R.ok(opsInspectionRepairService.queryById(id));
}
/**
* 新增运维-巡检-抢修
*/
@SaCheckPermission("inspection:repair:add")
@Log(title = "运维-巡检-抢修", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OpsInspectionRepairBo bo) {
return toAjax(opsInspectionRepairService.insertByBo(bo));
}
/**
* 修改运维-巡检-抢修
*/
@SaCheckPermission("inspection:repair:edit")
@Log(title = "运维-巡检-抢修", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OpsInspectionRepairBo bo) {
return toAjax(opsInspectionRepairService.updateByBo(bo));
}
/**
* 删除运维-巡检-抢修
*
* @param ids 主键串
*/
@SaCheckPermission("inspection:repair:remove")
@Log(title = "运维-巡检-抢修", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("ids") Long[] ids) {
return toAjax(opsInspectionRepairService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 生成纪录
*/
@SaCheckPermission("inspection:repair:record")
@GetMapping("/record")
public R<OpsInspectionReportRecordVo> record(@RequestParam Long projectId){
return opsInspectionRepairService.record(projectId);
}
}

View File

@ -0,0 +1,120 @@
package org.dromara.inspection.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.inspection.domain.vo.OpsInspectionReportRecordVo;
import org.dromara.inspection.service.impl.OpsInspectionReportServiceImpl;
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.inspection.domain.vo.OpsInspectionReportVo;
import org.dromara.inspection.domain.bo.OpsInspectionReportBo;
import org.dromara.inspection.service.IOpsInspectionReportService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;
/**
* 运维-巡检-报修
* 前端访问路由地址为:/inspection/report
*
* @author LionLi
* @date 2025-09-22
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/report")
public class OpsInspectionReportController extends BaseController {
private final OpsInspectionReportServiceImpl opsInspectionReportService;
/**
* 查询运维-巡检-报修列表
*/
@SaCheckPermission("inspection:report:list")
@GetMapping("/list")
public TableDataInfo<OpsInspectionReportVo> list(OpsInspectionReportBo bo, PageQuery pageQuery) {
return opsInspectionReportService.queryPageList(bo, pageQuery);
}
/**
* 导出运维-巡检-报修列表
*/
@SaCheckPermission("inspection:report:export")
@Log(title = "运维-巡检-报修", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OpsInspectionReportBo bo, HttpServletResponse response) {
List<OpsInspectionReportVo> list = opsInspectionReportService.queryList(bo);
ExcelUtil.exportExcel(list, "运维-巡检-报修", OpsInspectionReportVo.class, response);
}
/**
* 获取运维-巡检-报修详细信息
*
* @param id 主键
*/
@SaCheckPermission("inspection:report:query")
@GetMapping("/{id}")
public R<OpsInspectionReportVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return R.ok(opsInspectionReportService.queryById(id));
}
/**
* 新增运维-巡检-报修
*/
@SaCheckPermission("inspection:report:add")
@Log(title = "运维-巡检-报修", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OpsInspectionReportBo bo) {
return toAjax(opsInspectionReportService.insertByBo(bo));
}
/**
* 修改运维-巡检-报修
*/
@SaCheckPermission("inspection:report:edit")
@Log(title = "运维-巡检-报修", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OpsInspectionReportBo bo) {
return toAjax(opsInspectionReportService.updateByBo(bo));
}
/**
* 删除运维-巡检-报修
*
* @param ids 主键串
*/
@SaCheckPermission("inspection:report:remove")
@Log(title = "运维-巡检-报修", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("ids") Long[] ids) {
return toAjax(opsInspectionReportService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 生成纪录
*/
@SaCheckPermission("inspection:report:record")
@GetMapping("/record")
public R<OpsInspectionReportRecordVo> record(@RequestParam Long projectId){
return opsInspectionReportService.record(projectId);
}
}

View File

@ -0,0 +1,117 @@
package org.dromara.inspection.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.inspection.domain.vo.OpsInspectionRecordVo;
import org.dromara.inspection.service.impl.OpsInspectionTaskServiceImpl;
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.inspection.domain.vo.OpsInspectionTaskVo;
import org.dromara.inspection.domain.bo.OpsInspectionTaskBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 运维-巡检计划-任务
* 前端访问路由地址为:/inspection/task
*
* @author LionLi
* @date 2025-09-20
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/task")
public class OpsInspectionTaskController extends BaseController {
private final OpsInspectionTaskServiceImpl opsInspectionTaskService;
/**
* 查询运维-巡检计划-任务列表
*/
@SaCheckPermission("inspection:task:list")
@GetMapping("/list")
public TableDataInfo<OpsInspectionTaskVo> list(OpsInspectionTaskBo bo, PageQuery pageQuery) {
return opsInspectionTaskService.queryPageList(bo, pageQuery);
}
/**
* 导出运维-巡检计划-任务列表
*/
@SaCheckPermission("inspection:task:export")
@Log(title = "运维-巡检计划-任务", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OpsInspectionTaskBo bo, HttpServletResponse response) {
List<OpsInspectionTaskVo> list = opsInspectionTaskService.queryList(bo);
ExcelUtil.exportExcel(list, "运维-巡检计划-任务", OpsInspectionTaskVo.class, response);
}
/**
* 获取运维-巡检计划-任务详细信息
*
* @param id 主键
*/
@SaCheckPermission("inspection:task:query")
@GetMapping("/{id}")
public R<OpsInspectionTaskVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return R.ok(opsInspectionTaskService.queryById(id));
}
/**
* 新增运维-巡检计划-任务
*/
@SaCheckPermission("inspection:task:add")
@Log(title = "运维-巡检计划-任务", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OpsInspectionTaskBo bo) {
return toAjax(opsInspectionTaskService.insertByBo(bo));
}
/**
* 修改运维-巡检计划-任务
*/
@SaCheckPermission("inspection:task:edit")
@Log(title = "运维-巡检计划-任务", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OpsInspectionTaskBo bo) {
return opsInspectionTaskService.updateByBo(bo);
}
/**
* 删除运维-巡检计划-任务
*
* @param ids 主键串
*/
@SaCheckPermission("inspection:task:remove")
@Log(title = "运维-巡检计划-任务", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("ids") Long[] ids) {
return toAjax(opsInspectionTaskService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 巡检记录统计
*/
@SaCheckPermission("inspection:task:record")
@GetMapping("/record")
public R<OpsInspectionRecordVo> record(@RequestParam String type,@RequestParam Long projectId) {
return opsInspectionTaskService.record(type,projectId);
}
}

View File

@ -0,0 +1,106 @@
package org.dromara.inspection.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.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.inspection.domain.vo.OpsInspectionTaskProblemVo;
import org.dromara.inspection.domain.bo.OpsInspectionTaskProblemBo;
import org.dromara.inspection.service.IOpsInspectionTaskProblemService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 运维-巡检-任务-问题
* 前端访问路由地址为:/inspection/problem
*
* @author LionLi
* @date 2025-09-26
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/problem")
public class OpsInspectionTaskProblemController extends BaseController {
private final IOpsInspectionTaskProblemService opsInspectionTaskProblemService;
/**
* 查询运维-巡检-任务-问题列表
*/
@SaCheckPermission("inspection:problem:list")
@GetMapping("/list")
public TableDataInfo<OpsInspectionTaskProblemVo> list(OpsInspectionTaskProblemBo bo, PageQuery pageQuery) {
return opsInspectionTaskProblemService.queryPageList(bo, pageQuery);
}
/**
* 导出运维-巡检-任务-问题列表
*/
@SaCheckPermission("inspection:problem:export")
@Log(title = "运维-巡检-任务-问题", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OpsInspectionTaskProblemBo bo, HttpServletResponse response) {
List<OpsInspectionTaskProblemVo> list = opsInspectionTaskProblemService.queryList(bo);
ExcelUtil.exportExcel(list, "运维-巡检-任务-问题", OpsInspectionTaskProblemVo.class, response);
}
/**
* 获取运维-巡检-任务-问题详细信息
*
* @param id 主键
*/
@SaCheckPermission("inspection:problem:query")
@GetMapping("/{id}")
public R<OpsInspectionTaskProblemVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return R.ok(opsInspectionTaskProblemService.queryById(id));
}
/**
* 新增运维-巡检-任务-问题
*/
@SaCheckPermission("inspection:problem:add")
@Log(title = "运维-巡检-任务-问题", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OpsInspectionTaskProblemBo bo) {
return toAjax(opsInspectionTaskProblemService.insertByBo(bo));
}
/**
* 修改运维-巡检-任务-问题
*/
@SaCheckPermission("inspection:problem:edit")
@Log(title = "运维-巡检-任务-问题", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OpsInspectionTaskProblemBo bo) {
return toAjax(opsInspectionTaskProblemService.updateByBo(bo));
}
/**
* 删除运维-巡检-任务-问题
*
* @param ids 主键串
*/
@SaCheckPermission("inspection:problem:remove")
@Log(title = "运维-巡检-任务-问题", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("ids") Long[] ids) {
return toAjax(opsInspectionTaskProblemService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,106 @@
package org.dromara.inspection.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.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.inspection.domain.vo.OpsInspectionTestPlanVo;
import org.dromara.inspection.domain.bo.OpsInspectionTestPlanBo;
import org.dromara.inspection.service.IOpsInspectionTestPlanService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 运维-巡检-试验计划
* 前端访问路由地址为:/inspection/testPlan
*
* @author LionLi
* @date 2025-09-20
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/testPlan")
public class OpsInspectionTestPlanController extends BaseController {
private final IOpsInspectionTestPlanService opsInspectionTestPlanService;
/**
* 查询运维-巡检-试验计划列表
*/
@SaCheckPermission("inspection:testPlan:list")
@GetMapping("/list")
public TableDataInfo<OpsInspectionTestPlanVo> list(OpsInspectionTestPlanBo bo, PageQuery pageQuery) {
return opsInspectionTestPlanService.queryPageList(bo, pageQuery);
}
/**
* 导出运维-巡检-试验计划列表
*/
@SaCheckPermission("inspection:testPlan:export")
@Log(title = "运维-巡检-试验计划", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OpsInspectionTestPlanBo bo, HttpServletResponse response) {
List<OpsInspectionTestPlanVo> list = opsInspectionTestPlanService.queryList(bo);
ExcelUtil.exportExcel(list, "运维-巡检-试验计划", OpsInspectionTestPlanVo.class, response);
}
/**
* 获取运维-巡检-试验计划详细信息
*
* @param id 主键
*/
@SaCheckPermission("inspection:testPlan:query")
@GetMapping("/{id}")
public R<OpsInspectionTestPlanVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return R.ok(opsInspectionTestPlanService.queryById(id));
}
/**
* 新增运维-巡检-试验计划
*/
@SaCheckPermission("inspection:testPlan:add")
@Log(title = "运维-巡检-试验计划", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OpsInspectionTestPlanBo bo) {
return toAjax(opsInspectionTestPlanService.insertByBo(bo));
}
/**
* 修改运维-巡检-试验计划
*/
@SaCheckPermission("inspection:testPlan:edit")
@Log(title = "运维-巡检-试验计划", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OpsInspectionTestPlanBo bo) {
return toAjax(opsInspectionTestPlanService.updateByBo(bo));
}
/**
* 删除运维-巡检-试验计划
*
* @param ids 主键串
*/
@SaCheckPermission("inspection:testPlan:remove")
@Log(title = "运维-巡检-试验计划", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("ids") Long[] ids) {
return toAjax(opsInspectionTestPlanService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,121 @@
package org.dromara.inspection.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.inspection.service.impl.OpsInspectionTestTaskServiceImpl;
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.inspection.domain.vo.OpsInspectionTestTaskVo;
import org.dromara.inspection.domain.bo.OpsInspectionTestTaskBo;
import org.dromara.inspection.service.IOpsInspectionTestTaskService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 运维-巡检-试验任务
* 前端访问路由地址为:/inspection/testTask
*
* @author LionLi
* @date 2025-09-20
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/testTask")
public class OpsInspectionTestTaskController extends BaseController {
private final OpsInspectionTestTaskServiceImpl opsInspectionTestTaskService;
/**
* 查询运维-巡检-试验任务列表
*/
@SaCheckPermission("inspection:testTask:list")
@GetMapping("/list")
public TableDataInfo<OpsInspectionTestTaskVo> list(OpsInspectionTestTaskBo bo, PageQuery pageQuery) {
return opsInspectionTestTaskService.queryPageList(bo, pageQuery);
}
/**
* 导出运维-巡检-试验任务列表
*/
@SaCheckPermission("inspection:testTask:export")
@Log(title = "运维-巡检-试验任务", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OpsInspectionTestTaskBo bo, HttpServletResponse response) {
List<OpsInspectionTestTaskVo> list = opsInspectionTestTaskService.queryList(bo);
ExcelUtil.exportExcel(list, "运维-巡检-试验任务", OpsInspectionTestTaskVo.class, response);
}
/**
* 获取运维-巡检-试验任务详细信息
*
* @param id 主键
*/
@SaCheckPermission("inspection:testTask:query")
@GetMapping("/{id}")
public R<OpsInspectionTestTaskVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return R.ok(opsInspectionTestTaskService.queryById(id));
}
/**
* 新增运维-巡检-试验任务
*/
@SaCheckPermission("inspection:testTask:add")
@Log(title = "运维-巡检-试验任务", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OpsInspectionTestTaskBo bo) {
return toAjax(opsInspectionTestTaskService.insertByBo(bo));
}
/**
* 修改运维-巡检-试验任务
*/
@SaCheckPermission("inspection:testTask:edit")
@Log(title = "运维-巡检-试验任务", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OpsInspectionTestTaskBo bo) {
return opsInspectionTestTaskService.updateByBo(bo);
}
/**
* 删除运维-巡检-试验任务
*
* @param ids 主键串
*/
@SaCheckPermission("inspection:testTask:remove")
@Log(title = "运维-巡检-试验任务", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("ids") Long[] ids) {
return toAjax(opsInspectionTestTaskService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 获取运维-巡检-试验任务记录
*
* @param projectId 项目ID
*/
@SaCheckPermission("inspection:testTask:record")
@GetMapping("/record")
public R<Object> record(@RequestParam Long projectId){
return opsInspectionTestTaskService.record(projectId);
}
}

View File

@ -0,0 +1,46 @@
package org.dromara.inspection.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 运维-巡检-自定义巡检项对象 ops_inspection_item
*
* @author LionLi
* @date 2025-09-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ops_inspection_item")
public class OpsInspectionItem extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "id")
private Long id;
/**
* 电站id
*/
private Long projectId;
/**
* 自定义巡检项名称
*/
private String name;
/**
* 业务id巡检计划1
*/
private String type;
}

View File

@ -0,0 +1,77 @@
package org.dromara.inspection.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import java.io.Serial;
/**
* 运维-巡检-待办对象 ops_inspection_matter
*
* @author LionLi
* @date 2025-09-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ops_inspection_matter")
public class OpsInspectionMatter extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "id")
private Long id;
/**
* (任务)电站id
*/
private Long projectId;
/**
* 任务名称
*/
private String taskName;
/**
* 任务描述
*/
private String describeValue;
/**
* 任务开始时间
*/
private Date taskBeginTime;
/**
* 任务结束时间
*/
private Date taskEndTime;
/**
* 时间段
*/
private String taskTimeInfo;
/**
* 等级,常规,重要,紧急
*/
private String taskLevel;
/**
* 任务类型
*/
private String taskType;
/**
* 状态
*/
private String status;
}

View File

@ -0,0 +1,77 @@
package org.dromara.inspection.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import java.io.Serial;
/**
* 运维-巡检-通用节点对象 ops_inspection_node
*
* @author LionLi
* @date 2025-09-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ops_inspection_node")
public class OpsInspectionNode extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 节点ID
*/
@TableId(value = "id")
private Long id;
/**
* 所用模块1工单2巡检任务3试验任务
*/
private String module;
/**
* 工单ID
*/
private Long orderId;
/**
* 顺序编号
*/
private Long code;
/**
* 节点名称
*/
private String name;
/**
* 预期目的
*/
private String intendedPurpose;
/**
* 预期完成时间
*/
private Date intendedTime;
/**
* 实际完成时间
*/
private Date finishTime;
/**
* 备注
*/
private String remark;
/**
* 状态1完成2未完成3失败
*/
private String status;
}

View File

@ -0,0 +1,137 @@
package org.dromara.inspection.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import java.io.Serial;
/**
* 运维-巡检-工单对象 ops_inspection_order
*
* @author LionLi
* @date 2025-09-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ops_inspection_order")
public class OpsInspectionOrder extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主要id
*/
@TableId(value = "id")
private Long id;
/**
* 项目(电站)id
*/
private Long projectId;
/**
* 工单标题
*/
private String title;
/**
* 工单类型1维护保养2检查检测3安装调试4升级改造
*/
private String type;
/**
* 工单优先级1低2中3高
*/
private String level;
/**
* 截止时间
*/
private Date endTime;
/**
* 工单描述
*/
private String info;
/**
* 执行地点
*/
private String position;
/**
* 相关设备/系统
*/
private String device;
/**
* 文件ID
*/
private String fileId;
/**
* 文件路径
*/
private String fileUrl;
/**
* 节点ids
*/
private String nodeIds;
/**
* 预期成果
*/
private String results;
/**
* 是否需要执行人,1是2否(取消使用)
*/
private String executor;
/**
* 执行人ids(取消使用)
*/
private String executorIds;
/**
* 工单状态1待派单2已派单3执行中4已完成
*/
private String status;
/**
* 派单时间
*/
private Date sendOrderTime;
/**
* 接单时间
*/
private Date getOrderTime;
/**
* 接单人
*/
private Long getOrderPerson;
/**
* 完成时间
*/
private Date finishiOrderTime;
/**
* 验收结果1通过2需整改
*/
private String orderResult;
/**
* 是否重点跟踪1是2否
*/
private String point;
}

View File

@ -0,0 +1,100 @@
package org.dromara.inspection.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
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;
import java.util.List;
/**
* 运维-巡检-计划对象 ops_inspection_plan
*
* @author LionLi
* @date 2025-09-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ops_inspection_plan")
public class OpsInspectionPlan extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 电站id
*/
private Long projectId;
/**
* 计划名称
*/
private String planName;
/**
* 计划类型1每日巡检2每周巡检3每月巡检4每季度巡检
*/
private String planType;
/**
* 巡检对象1服务器2网络设备3应用系统4基础设施
*/
private String objectType;
/**
* 开始日期
*/
private Date beginTime;
/**
* 结束日期
*/
private Date endTime;
/**
* 巡检频率
*/
private String inspectionFrequency;
/**
* 计划开始时间
*/
private String planBeginTime;
/**
* 持续时间(分钟)
*/
private Long duration;
/**
* 负责人ID
*/
private Long person;
/**
* 巡检项IDS
*/
private String inspectionItemId;
/**
* 1启用2停用
*/
private String status;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,112 @@
package org.dromara.inspection.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import java.io.Serial;
/**
* 运维-巡检-抢修对象 ops_inspection_repair
*
* @author LionLi
* @date 2025-09-22
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ops_inspection_repair")
public class OpsInspectionRepair extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "id")
private Long id;
/**
*
*/
private Long projectId;
/**
* 1常规2紧急3致命
*/
private String level;
/**
* 1待处理2处理中3已完成
*/
private String status;
/**
* 抢修类型1电力2设备3供水4网络5设施
*/
private String type;
/**
* 报修名称
*/
private String name;
/**
* 指派维修人
*/
private Long sendPerson;
/**
* 详细信息
*/
private String reportInfo;
/**
* 故障位置
*/
private String position;
/**
* 文件IDS
*/
private String fileId;
/**
* 文件路径
*/
private String fileUrl;
/**
* 报修人姓名
*/
private String reportName;
/**
* 报修人联系电话
*/
private String reportPhone;
/**
* 维修结果
*/
// private String reportFinal;
/**
* 预计完成时间
*/
private String expectedTime;
/**
* 完成时间
*/
private Date reportFinishTime;
/**
* 支援,1需要2不需要
*/
private String support;
}

View File

@ -0,0 +1,95 @@
package org.dromara.inspection.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
import java.util.Date;
/**
* 运维-巡检-报修对象 ops_inspection_report
*
* @author LionLi
* @date 2025-09-22
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ops_inspection_report")
public class OpsInspectionReport extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "id")
private Long id;
/**
* 项目ID(电站ID)
*/
private Long projectId;
/**
* 1低优先2中优先3高优先
*/
private String level;
/**
* 1待处理2处理中3已完成
*/
private String status;
/**
* 报修类型1硬件2软件
*/
private String type;
/**
* 报修名称
*/
private String name;
/**
* 指派维修人
*/
private Long sendPerson;
/**
* 详细信息
*/
private String reportInfo;
/**
* 故障位置
*/
private String position;
/**
* 文件ID 多个用逗号分隔
*/
private String fileId;
/**
* 文件路径
*/
private String fileUrl;
/**
* 报修人姓名
*/
private String reportName;
/**
* 报修人联系电话
*/
private String reportPhone;
private String reportFinal;
private Date reportFinishTime;
}

View File

@ -0,0 +1,96 @@
package org.dromara.inspection.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 运维-巡检计划-任务对象 ops_inspection_task
*
* @author LionLi
* @date 2025-09-20
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ops_inspection_task")
public class OpsInspectionTask extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "id")
private Long id;
private Long projectId;
/**
* 任务名
*/
private String taskName;
/**
* 巡检对象
*/
private String inspectionObject;
/**
*
*/
private Date beginTime;
/**
*
*/
private Date endTime;
/**
* 时间段
*/
private String timeInfo;
/**
* 计划ID
*/
private Long planId;
/**
* 执行人ID
*/
private Long personId;
/**
* 节点ids
*/
private String nodeIds;
/**
* 状态 1待执行2已延期3执行中4已完成
*/
private String taskType;
/**
* 发现问题种类,1磁盘使用率2内存使用率3服务状态4响应时间5设备运行状态
*/
private String problemType;
/**
* 开始时间
*/
private Date startTime;
/**
* 完成时间
*/
private Date finishTime;
}

View File

@ -0,0 +1,68 @@
package org.dromara.inspection.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
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;
/**
* 运维-巡检-任务-问题对象 ops_inspection_task_problem
*
* @author LionLi
* @date 2025-09-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ops_inspection_task_problem")
public class OpsInspectionTaskProblem extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "id")
private Long id;
/**
* 电站id
*/
private Long projectId;
/**
* 巡检任务ID
*/
private Long taskId;
/**
* 发现问题类型1磁盘使用率2内存使用率3服务状态4响应时间5设备运行状态
*/
private String type;
/**
* 问题详细信息
*/
private String info;
/**
* 发现日期
*/
private Date findTime;
/**
* 是否解决1解决2未解决
*/
private String finish;
/**
* 解决日期
*/
private Date finishTime;
}

View File

@ -0,0 +1,109 @@
package org.dromara.inspection.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
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;
/**
* 运维-巡检-试验计划对象 ops_inspection_test_plan
*
* @author LionLi
* @date 2025-09-20
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ops_inspection_test_plan")
public class OpsInspectionTestPlan extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "id")
private Long id;
/**
* 电站ID
*/
private Long projectId;
/**
* 计划名称
*/
private String planName;
/**
* 计划编号
*/
private String planCode;
/**
* 实验对象类型,1安全试验2网络实验3性能试验4
*/
private String testObject;
/**
*
*/
private Date beginTime;
/**
*
*/
private Date endTime;
/**
* 试验目的与预期结果
*/
private String testInfo;
/**
* 实验环境
*/
private String testSetting;
/**
* 负责人ID
*/
private Long personCharge;
/**
* 参与人员IDS
*/
private String personIds;
/**
* 自定义检查项
*/
private String inspectionItems;
/**
* 实验步骤
*/
private String testStep;
/**
* 所需资源与设备
*/
private String testDevice;
/**
* 风险评估与应对措施
*/
private String testSolutions;
/**
* 申请状态 1已批准2进行中3已完成4草稿5未通过
*/
private String testStatus;
//1启动2停止
private String testPlanType;
}

View File

@ -0,0 +1,157 @@
package org.dromara.inspection.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
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;
/**
* 运维-巡检-试验任务对象 ops_inspection_test_task
*
* @author LionLi
* @date 2025-09-20
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ops_inspection_test_task")
public class OpsInspectionTestTask extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "id")
private Long id;
/**
* 项目ID(电站ID)
*/
private Long projectId;
/**
* 任务名称
*/
private String taskName;
/**
* 测试对象
*/
private String testObject;
/**
*
*/
private Date beginTime;
/**
*
*/
private Date endTime;
/**
*
*/
private String timeInfo;
/**
* 执行人员
*/
private Long person;
/**
* 节点IDS
*/
private String nodeIds;
/**
* 状态,1待执行2暂停3失败4执行中5已完成
*/
private String status;
/**
* 是否已分析1未分析2已分析
*/
private String unPack;
/**
* 关联测试计划ID
*/
private Long testPlanId;
/**
* 试验环境
*/
private String testSetting;
/**
* 开始时间
*/
private Date planBeginTime;
/**
* 进度
*/
// private Long progress;
/**
* 失败原因
*/
private String failReason;
/**
* 失败时间
*/
private Date failTime;
/**
* 失败阶段
*/
private Long failPhase;
/**
* 失败原因分析
*/
private String faileAnalyze;
/**
* 改进建议
*/
private String faileTips;
/**
* 试验时长(分钟)
*/
private Long testLongTime;
/**
* 结果
*/
private String testFinal;
/**
* 结果详情
*/
private String finalInfo;
/**
* 暂停原因
*/
private String pauseFor;
/**
* 暂停时间
*/
private Date pauseTime;
/**
* 计划完成时间
*/
private Date planFinishTime;
}

View File

@ -0,0 +1,43 @@
package org.dromara.inspection.domain.bo;
import org.dromara.inspection.domain.OpsInspectionItem;
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.*;
/**
* 运维-巡检-自定义巡检项业务对象 ops_inspection_item
*
* @author LionLi
* @date 2025-09-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OpsInspectionItem.class, reverseConvertGenerate = false)
public class OpsInspectionItemBo extends BaseEntity {
private Long id;
/**
* 电站id
*/
private Long projectId;
/**
* 自定义巡检项名称
*/
@NotBlank(message = "自定义巡检项名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String name;
/**
* 业务id巡检计划1
*/
@NotBlank(message = "业务id巡检计划1不能为空", groups = { AddGroup.class, EditGroup.class })
private String type;
}

View File

@ -0,0 +1,81 @@
package org.dromara.inspection.domain.bo;
import org.dromara.inspection.domain.OpsInspectionMatter;
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;
/**
* 运维-巡检-待办业务对象 ops_inspection_matter
*
* @author LionLi
* @date 2025-09-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OpsInspectionMatter.class, reverseConvertGenerate = false)
public class OpsInspectionMatterBo extends BaseEntity {
private Long id;
/**
* (任务)电站id
*/
@NotNull(message = "(任务)电站id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectId;
/**
* 任务名称
*/
@NotBlank(message = "任务名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskName;
/**
* 任务描述
*/
@NotBlank(message = "任务描述不能为空", groups = { AddGroup.class, EditGroup.class })
private String describeValue;
/**
* 任务开始时间
*/
@NotNull(message = "任务开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date taskBeginTime;
/**
* 任务结束时间
*/
@NotNull(message = "任务结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date taskEndTime;
/**
* 时间段
*/
@NotBlank(message = "时间段不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskTimeInfo;
/**
* 等级1常规2重要3紧急
*/
@NotBlank(message = "等级1常规2重要3紧急不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskLevel;
/**
* 任务类型
*/
@NotBlank(message = "任务类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskType;
/**
* 状态
*/
// @NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String status;
}

View File

@ -0,0 +1,83 @@
package org.dromara.inspection.domain.bo;
import org.dromara.inspection.domain.OpsInspectionNode;
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;
/**
* 运维-巡检-通用节点业务对象 ops_inspection_node
*
* @author LionLi
* @date 2025-09-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OpsInspectionNode.class, reverseConvertGenerate = false)
public class OpsInspectionNodeBo extends BaseEntity {
/**
* 节点ID
*/
private Long id;
/**
* 所用模块1工单2巡检任务3试验任务
*/
@NotBlank(message = "所用模块1工单2巡检任务3试验任务不能为空", groups = { AddGroup.class, EditGroup.class })
private String module;
/**
* 工单ID
*/
@NotNull(message = "工单ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long orderId;
/**
* 顺序编号
*/
@NotNull(message = "顺序编号不能为空", groups = { AddGroup.class, EditGroup.class })
private Long code;
/**
* 节点名称
*/
@NotBlank(message = "节点名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String name;
/**
* 预期目的
*/
// @NotBlank(message = "预期目的不能为空", groups = { AddGroup.class, EditGroup.class })
private String intendedPurpose;
/**
* 预期完成时间
*/
// @NotNull(message = "预期完成时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date intendedTime;
/**
* 实际完成时间
*/
// @NotNull(message = "实际完成时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date finishTime;
/**
* 备注
*/
private String remark;
/**
* 状态1完成2未完成3失败
*/
@NotBlank(message = "状态1完成2未完成不能为空", groups = { AddGroup.class, EditGroup.class })
private String status;
}

View File

@ -0,0 +1,153 @@
package org.dromara.inspection.domain.bo;
import org.dromara.inspection.domain.OpsInspectionOrder;
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 org.dromara.system.api.domain.vo.RemoteUserVo;
import java.util.Date;
/**
* 运维-巡检-工单业务对象 ops_inspection_order
*
* @author LionLi
* @date 2025-09-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OpsInspectionOrder.class, reverseConvertGenerate = false)
public class OpsInspectionOrderBo extends BaseEntity {
/**
* 主要id
*/
private Long id;
/**
* 项目(电站)id
*/
@NotNull(message = "项目(电站)id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectId;
/**
* 工单标题
*/
@NotBlank(message = "工单标题不能为空", groups = { AddGroup.class, EditGroup.class })
private String title;
/**
* 工单类型1维护保养2检查检测3安装调试4升级改造
*/
@NotBlank(message = "工单类型1维护保养2检查检测3安装调试4升级改造不能为空", groups = { AddGroup.class, EditGroup.class })
private String type;
/**
* 工单优先级1低2中3高
*/
@NotBlank(message = "工单优先级1低2中3高不能为空", groups = { AddGroup.class, EditGroup.class })
private String level;
/**
* 截止时间
*/
@NotNull(message = "截止时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date endTime;
/**
* 工单描述
*/
@NotBlank(message = "工单描述不能为空", groups = { AddGroup.class, EditGroup.class })
private String info;
/**
* 执行地点
*/
@NotBlank(message = "执行地点不能为空", groups = { AddGroup.class, EditGroup.class })
private String position;
/**
* 相关设备/系统
*/
@NotBlank(message = "相关设备/系统不能为空", groups = { AddGroup.class, EditGroup.class })
private String device;
/**
* 文件ID
*/
private String fileId;
/**
* 文件路径
*/
private String fileUrl;
/**
* 节点ids
*/
@NotBlank(message = "节点ids不能为空", groups = { AddGroup.class, EditGroup.class })
private String nodeIds;
/**
* 预期成果
*/
@NotBlank(message = "预期成果不能为空", groups = { AddGroup.class, EditGroup.class })
private String results;
/**
* 是否需要执行人,1是2否(取消使用)
*/
private String executor;
/**
* 执行人ids(取消使用)
*/
private String executorIds;
/**
* 工单状态1待派单2已派单3执行中4已完成
*/
@NotBlank(message = "工单状态1待派单2已派单3执行中4已完成不能为空", groups = { AddGroup.class, EditGroup.class })
private String status;
/**
* 派单时间
*/
private Date sendOrderTime;
/**
* 接单时间
*/
private Date getOrderTime;
/**
* 接单人
*/
private Long getOrderPerson;
/**
* 接单人信息
*/
private RemoteUserVo getOrderPersonVo;
/**
* 完成时间
*/
private Date finishiOrderTime;
/**
* 验收结果1通过2需整改
*/
private String orderResult;
/**
* 是否重点跟踪1是2否
*/
private String point;
}

View File

@ -0,0 +1,108 @@
package org.dromara.inspection.domain.bo;
import org.dromara.inspection.domain.OpsInspectionPlan;
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 java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 运维-巡检-计划业务对象 ops_inspection_plan
*
* @author LionLi
* @date 2025-09-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OpsInspectionPlan.class, reverseConvertGenerate = false)
public class OpsInspectionPlanBo extends BaseEntity {
/**
* id
*/
private Long id;
/**
* 电站id
*/
private Long projectId;
/**
* 计划名称
*/
@NotNull(message = "计划名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String planName;
/**
* 计划类型1每日巡检2每周巡检3每月巡检4每季度巡检
*/
@NotBlank(message = "计划类型1每日巡检2每周巡检3每月巡检4每季度巡检不能为空", groups = { AddGroup.class, EditGroup.class })
private String planType;
/**
* 巡检对象1服务器2网络设备3应用系统4基础设施
*/
@NotBlank(message = "巡检对象1服务器2网络设备3应用系统4基础设施不能为空", groups = { AddGroup.class, EditGroup.class })
private String objectType;
/**
* 开始日期
*/
@NotNull(message = "开始日期不能为空", groups = { AddGroup.class, EditGroup.class })
private Date beginTime;
/**
* 结束日期
*/
@NotNull(message = "结束日期不能为空", groups = { AddGroup.class, EditGroup.class })
private Date endTime;
/**
* 巡检频率
*/
@NotBlank(message = "巡检频率不能为空", groups = { AddGroup.class, EditGroup.class })
private String inspectionFrequency;
/**
* 计划开始时间
*/
@NotBlank(message = "计划开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
private String planBeginTime;
/**
* 持续时间(分钟)
*/
@NotNull(message = "持续时间(分钟)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long duration;
/**
* 负责人ID
*/
@NotNull(message = "负责人ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long person;
/**
* 巡检项IDS
*/
private String inspectionItemId;
/**
* 1启用2停用
*/
@NotBlank(message = "1启用2停用不能为空", groups = { AddGroup.class, EditGroup.class })
private String status;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,124 @@
package org.dromara.inspection.domain.bo;
import org.dromara.inspection.domain.OpsInspectionRepair;
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;
/**
* 运维-巡检-抢修业务对象 ops_inspection_repair
*
* @author LionLi
* @date 2025-09-22
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OpsInspectionRepair.class, reverseConvertGenerate = false)
public class OpsInspectionRepairBo extends BaseEntity {
/**
*
*/
private Long id;
/**
*
*/
@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectId;
/**
* 1常规2紧急3致命
*/
@NotBlank(message = "1常规2紧急3致命不能为空", groups = { AddGroup.class, EditGroup.class })
private String level;
/**
* 1待处理2处理中3已完成
*/
@NotBlank(message = "1待处理2处理中3已完成不能为空", groups = { AddGroup.class, EditGroup.class })
private String status;
/**
* 抢修类型1电力2设备3供水4网络5设施
*/
@NotBlank(message = "抢修类型1电力2设备3供水4网络5设施不能为空", groups = { AddGroup.class, EditGroup.class })
private String type;
/**
* 报修名称
*/
@NotBlank(message = "报修名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String name;
/**
* 指派维修人
*/
// @NotNull(message = "指派维修人不能为空", groups = { AddGroup.class, EditGroup.class })
private Long sendPerson;
/**
* 详细信息
*/
@NotBlank(message = "详细信息不能为空", groups = { AddGroup.class, EditGroup.class })
private String reportInfo;
/**
* 故障位置
*/
@NotBlank(message = "故障位置不能为空", groups = { AddGroup.class, EditGroup.class })
private String position;
/**
* 文件IDS
*/
private String fileId;
/**
* 文件路径
*/
private String fileUrl;
/**
* 报修人姓名
*/
// @NotBlank(message = "报修人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
private String reportName;
/**
* 报修人联系电话
*/
// @NotBlank(message = "报修人联系电话不能为空", groups = { AddGroup.class, EditGroup.class })
private String reportPhone;
/**
* 维修结果
*/
// @NotBlank(message = "维修结果不能为空", groups = { AddGroup.class, EditGroup.class })
// private String reportFinal;
/**
* 预计完成时间
*/
@NotBlank(message = "预计完成时间不能为空", groups = { AddGroup.class, EditGroup.class })
private String expectedTime;
/**
* 完成时间
*/
// @NotNull(message = "完成时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date reportFinishTime;
/**
* 支援,1需要2不需要
*/
@NotBlank(message = "支援,1需要2不需要不能为空", groups = { AddGroup.class, EditGroup.class })
private String support;
}

View File

@ -0,0 +1,104 @@
package org.dromara.inspection.domain.bo;
import org.dromara.inspection.domain.OpsInspectionReport;
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;
/**
* 运维-巡检-报修业务对象 ops_inspection_report
*
* @author LionLi
* @date 2025-09-22
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OpsInspectionReport.class, reverseConvertGenerate = false)
public class OpsInspectionReportBo extends BaseEntity {
/**
* id
*/
private Long id;
/**
* 项目ID(电站ID)
*/
@NotNull(message = "项目ID(电站ID)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectId;
/**
* 1低优先2中优先3高优先
*/
@NotBlank(message = "优先级不能为空", groups = {AddGroup.class, EditGroup.class})
private String level;
/**
* 1待处理2处理中3已完成
*/
private String status;
/**
* 报修类型1硬件2软件
*/
@NotBlank(message = "报修类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String type;
/**
* 报修名称
*/
@NotBlank(message = "报修名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String name;
/**
* 指派维修人
*/
// @NotNull(message = "指派维修人不能为空", groups = { AddGroup.class, EditGroup.class })
private Long sendPerson;
/**
* 详细信息
*/
@NotBlank(message = "详细信息不能为空", groups = {AddGroup.class, EditGroup.class})
private String reportInfo;
/**
* 故障位置
*/
@NotBlank(message = "故障位置不能为空", groups = {AddGroup.class, EditGroup.class})
private String position;
/**
* 文件ID
*/
// @NotBlank(message = "文件不能为空", groups = {AddGroup.class, EditGroup.class})
private String fileId;
/**
* 文件路径
*/
private String fileUrl;
/**
* 报修人姓名
*/
// @NotBlank(message = "姓名不能为空", groups = {AddGroup.class, EditGroup.class})
private String reportName;
/**
* 报修人联系电话
*/
// @NotBlank(message = "电话不能为空", groups = {AddGroup.class, EditGroup.class})
private String reportPhone;
private String reportFinal;
private Date reportFinishTime;
}

View File

@ -0,0 +1,103 @@
package org.dromara.inspection.domain.bo;
import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.inspection.domain.OpsInspectionTask;
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.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 运维-巡检计划-任务业务对象 ops_inspection_task
*
* @author LionLi
* @date 2025-09-20
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OpsInspectionTask.class, reverseConvertGenerate = false)
public class OpsInspectionTaskBo extends BaseEntity {
/**
*
*/
private Long id;
private Long projectId;
/**
* 任务名
*/
@NotBlank(message = "任务名不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskName;
/**
* 巡检对象
*/
@NotBlank(message = "巡检对象不能为空", groups = { AddGroup.class, EditGroup.class })
private String inspectionObject;
/**
*
*/
@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
private Date beginTime;
/**
*
*/
@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
private Date endTime;
/**
* 时间段
*/
@NotBlank(message = "时间段不能为空", groups = { AddGroup.class, EditGroup.class })
private String timeInfo;
/**
* 计划ID
*/
@NotNull(message = "计划ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long planId;
/**
* 执行人ID
*/
@NotNull(message = "执行人ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long personId;
/**
* 节点ids
*/
private String nodeIds;
/**
* 状态 1待执行2已延期3执行中4已完成
*/
@NotNull(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskType;
/**
* 发现问题种类,1磁盘使用率2内存使用率3服务状态4响应时间5设备运行状态
*/
private String problemType;
/**
* 开始时间
*/
private Date startTime;
/**
* 完成时间
*/
private Date finishTime;
}

View File

@ -0,0 +1,72 @@
package org.dromara.inspection.domain.bo;
import org.dromara.inspection.domain.OpsInspectionTaskProblem;
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;
/**
* 运维-巡检-任务-问题业务对象 ops_inspection_task_problem
*
* @author LionLi
* @date 2025-09-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OpsInspectionTaskProblem.class, reverseConvertGenerate = false)
public class OpsInspectionTaskProblemBo extends BaseEntity {
/**
*
*/
private Long id;
/**
* 巡检任务ID
*/
@NotNull(message = "巡检任务ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long taskId;
/**
* 电站id
*/
@NotNull(message = "电站ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectId;
/**
* 发现问题类型1磁盘使用率2内存使用率3服务状态4响应时间5设备运行状态
*/
@NotBlank(message = "发现问题类型1磁盘使用率2内存使用率3服务状态4响应时间5设备运行状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String type;
/**
* 问题详细信息
*/
@NotBlank(message = "问题详细信息不能为空", groups = { AddGroup.class, EditGroup.class })
private String info;
/**
* 发现日期
*/
@NotNull(message = "发现日期不能为空", groups = { AddGroup.class, EditGroup.class })
private Date findTime;
/**
* 是否解决1解决2未解决
*/
@NotBlank(message = "是否解决1解决2未解决不能为空", groups = { AddGroup.class, EditGroup.class })
private String finish;
/**
* 解决日期
*/
private Date finishTime;
}

View File

@ -0,0 +1,121 @@
package org.dromara.inspection.domain.bo;
import org.dromara.inspection.domain.OpsInspectionTestPlan;
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;
/**
* 运维-巡检-试验计划业务对象 ops_inspection_test_plan
*
* @author LionLi
* @date 2025-09-20
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OpsInspectionTestPlan.class, reverseConvertGenerate = false)
public class OpsInspectionTestPlanBo extends BaseEntity {
/**
*
*/
private Long id;
/**
* 电站ID
*/
@NotNull(message = "电站ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectId;
/**
* 计划名称
*/
@NotBlank(message = "计划名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String planName;
/**
* 计划编号
*/
@NotBlank(message = "计划编号不能为空", groups = { AddGroup.class, EditGroup.class })
private String planCode;
/**
* 实验对象类型,1安全试验2网络实验3性能试验4
*/
@NotBlank(message = "实验对象类型,1安全试验2网络实验3性能试验4不能为空", groups = { AddGroup.class, EditGroup.class })
private String testObject;
/**
*
*/
@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
private Date beginTime;
/**
*
*/
@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
private Date endTime;
/**
* 试验目的与预期结果
*/
@NotBlank(message = "试验目的与预期结果不能为空", groups = { AddGroup.class, EditGroup.class })
private String testInfo;
/**
* 实验环境
*/
@NotBlank(message = "实验环境不能为空", groups = { AddGroup.class, EditGroup.class })
private String testSetting;
/**
* 负责人ID
*/
@NotNull(message = "负责人ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long personCharge;
/**
* 参与人员IDS
*/
@NotBlank(message = "参与人员IDS不能为空", groups = { AddGroup.class, EditGroup.class })
private String personIds;
/**
* 自定义检查项
*/
// @NotBlank(message = "自定义检查项不能为空", groups = { AddGroup.class, EditGroup.class })
private String inspectionItems;
/**
* 实验步骤
*/
private String testStep;
/**
* 所需资源与设备
*/
private String testDevice;
/**
* 风险评估与应对措施
*/
@NotBlank(message = "风险评估与应对措施不能为空", groups = { AddGroup.class, EditGroup.class })
private String testSolutions;
/**
* 申请状态 1已批准2进行中3已完成4草稿5未通过
*/
@NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String testStatus;
//1启动2停止
private String testPlanType;
}

View File

@ -0,0 +1,165 @@
package org.dromara.inspection.domain.bo;
import org.dromara.inspection.domain.OpsInspectionTestTask;
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;
/**
* 运维-巡检-试验任务业务对象 ops_inspection_test_task
*
* @author LionLi
* @date 2025-09-20
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OpsInspectionTestTask.class, reverseConvertGenerate = false)
public class OpsInspectionTestTaskBo extends BaseEntity {
/**
*
*/
private Long id;
/**
* 项目ID(电站ID)
*/
@NotNull(message = "项目ID(电站ID)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectId;
/**
* 任务名称
*/
@NotBlank(message = "任务名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String taskName;
/**
* 测试对象
*/
@NotBlank(message = "测试对象不能为空", groups = { AddGroup.class, EditGroup.class })
private String testObject;
/**
*
*/
@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
private Date beginTime;
/**
*
*/
@NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
private Date endTime;
/**
*
*/
@NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
private String timeInfo;
/**
* 执行人员
*/
@NotNull(message = "执行人员不能为空", groups = { AddGroup.class, EditGroup.class })
private Long person;
/**
* 节点IDS
*/
@NotNull(message = "节点不能为空", groups = { AddGroup.class, EditGroup.class })
private String nodeIds;
/**
* 状态,1待执行2暂停3失败4执行中5已完成
*/
@NotBlank(message = "状态,1待执行2暂停3失败4执行中5已完成不能为空", groups = { AddGroup.class, EditGroup.class })
private String status;
/**
* 是否已分析1未分析2已分析
*/
private String unPack;
/**
* 关联测试计划ID
*/
@NotNull(message = "关联测试计划ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long testPlanId;
/**
* 试验环境
*/
private String testSetting;
/**
* 开始时间
*/
private Date planBeginTime;
/**
* 进度
*/
// private Long progress;
/**
* 失败原因
*/
private String failReason;
/**
* 失败时间
*/
private Date failTime;
/**
* 失败阶段
*/
private Long failPhase;
/**
* 失败原因分析
*/
private String faileAnalyze;
/**
* 改进建议
*/
private String faileTips;
/**
* 试验时长(分钟)
*/
private Long testLongTime;
/**
* 结果
*/
private String testFinal;
/**
* 结果详情
*/
private String finalInfo;
/**
* 暂停原因
*/
private String pauseFor;
/**
* 暂停时间
*/
private Date pauseTime;
/**
* 计划完成时间
*/
private Date planFinishTime;
}

View File

@ -0,0 +1,55 @@
package org.dromara.inspection.domain.vo;
import org.dromara.inspection.domain.OpsInspectionItem;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.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;
/**
* 运维-巡检-自定义巡检项视图对象 ops_inspection_item
*
* @author LionLi
* @date 2025-09-19
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OpsInspectionItem.class)
public class OpsInspectionItemVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "")
private Long id;
/**
* 电站id
*/
private Long projectId;
/**
* 自定义巡检项名称
*/
@ExcelProperty(value = "自定义巡检项名称")
private String name;
/**
* 业务id巡检计划1
*/
@ExcelProperty(value = "业务id巡检计划1")
private String type;
}

View File

@ -0,0 +1,86 @@
package org.dromara.inspection.domain.vo;
import java.util.Date;
import org.dromara.inspection.domain.OpsInspectionMatter;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 运维-巡检-待办视图对象 ops_inspection_matter
*
* @author LionLi
* @date 2025-09-19
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OpsInspectionMatter.class)
public class OpsInspectionMatterVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long id;
/**
* (任务)电站id
*/
@ExcelProperty(value = "(任务)电站id")
private Long projectId;
/**
* 任务名称
*/
@ExcelProperty(value = "任务名称")
private String taskName;
/**
* 任务描述
*/
@ExcelProperty(value = "任务描述")
private String describeValue;
/**
* 任务开始时间
*/
@ExcelProperty(value = "任务开始时间")
private Date taskBeginTime;
/**
* 任务结束时间
*/
@ExcelProperty(value = "任务结束时间")
private Date taskEndTime;
/**
* 时间段
*/
@ExcelProperty(value = "时间段")
private String taskTimeInfo;
/**
* 等级1常规2重要3紧急
*/
@ExcelProperty(value = "等级1常规2重要3紧急")
private String taskLevel;
/**
* 任务类型
*/
@ExcelProperty(value = "任务类型")
private String taskType;
@ExcelProperty(value = "状态")
private String status;
}

View File

@ -0,0 +1,90 @@
package org.dromara.inspection.domain.vo;
import java.util.Date;
import org.dromara.inspection.domain.OpsInspectionNode;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 运维-巡检-通用节点视图对象 ops_inspection_node
*
* @author LionLi
* @date 2025-09-23
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OpsInspectionNode.class)
public class OpsInspectionNodeVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 节点ID
*/
@ExcelProperty(value = "节点ID")
private Long id;
/**
* 所用模块1工单2巡检任务3试验任务
*/
@ExcelProperty(value = "所用模块1工单2巡检任务3试验任务")
private String module;
/**
* 工单ID
*/
@ExcelProperty(value = "工单ID")
private Long orderId;
/**
* 顺序编号
*/
@ExcelProperty(value = "顺序编号")
private Long code;
/**
* 节点名称
*/
@ExcelProperty(value = "节点名称")
private String name;
/**
* 预期目的
*/
@ExcelProperty(value = "预期目的")
private String intendedPurpose;
/**
* 预期完成时间
*/
@ExcelProperty(value = "预期完成时间")
private Date intendedTime;
/**
* 实际完成时间
*/
@ExcelProperty(value = "实际完成时间")
private Date finishTime;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 状态1完成2未完成3失败
*/
@ExcelProperty(value = "状态1完成2未完成")
private String status;
}

View File

@ -0,0 +1,179 @@
package org.dromara.inspection.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import org.dromara.inspection.domain.OpsInspectionOrder;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.personnel.domain.vo.OpsUserVo;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
/**
* 运维-巡检-工单视图对象 ops_inspection_order
*
* @author LionLi
* @date 2025-09-23
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OpsInspectionOrder.class)
public class OpsInspectionOrderVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主要id
*/
@ExcelProperty(value = "主要id")
private Long id;
/**
* 项目(电站)id
*/
@ExcelProperty(value = "项目(电站)id")
private Long projectId;
/**
* 工单标题
*/
@ExcelProperty(value = "工单标题")
private String title;
/**
* 工单类型1维护保养2检查检测3安装调试4升级改造
*/
@ExcelProperty(value = "工单类型1维护保养2检查检测3安装调试4升级改造")
private String type;
/**
* 工单优先级1低2中3高
*/
@ExcelProperty(value = "工单优先级1低2中3高")
private String level;
/**
* 截止时间
*/
@ExcelProperty(value = "截止时间")
private Date endTime;
/**
* 工单描述
*/
@ExcelProperty(value = "工单描述")
private String info;
/**
* 执行地点
*/
@ExcelProperty(value = "执行地点")
private String position;
/**
* 相关设备/系统
*/
@ExcelProperty(value = "相关设备/系统")
private String device;
/**
* 文件ID
*/
@ExcelProperty(value = "文件ID")
private String fileId;
/**
* 文件路径
*/
@ExcelProperty(value = "文件路径")
private String fileUrl;
/**
* 节点ids
*/
@ExcelProperty(value = "节点ids")
private String nodeIds;
/**
* 工单进度
*/
private BigDecimal progress;
/**
* 工单节点
*/
private List<OpsInspectionNodeVo> nodes;
/**
* 预期成果
*/
@ExcelProperty(value = "预期成果")
private String results;
/**
* 是否需要执行人,1是2否(取消使用)
*/
@ExcelProperty(value = "是否需要执行人,1是2否(取消使用)")
private String executor;
/**
* 执行人ids(取消使用)
*/
@ExcelProperty(value = "执行人ids(取消使用)")
private String executorIds;
/**
* 工单状态1待派单2已派单3执行中4已完成
*/
@ExcelProperty(value = "工单状态1待派单2已派单3执行中4已完成")
private String status;
/**
* 派单时间
*/
@ExcelProperty(value = "派单时间")
private Date sendOrderTime;
/**
* 接单时间
*/
@ExcelProperty(value = "接单时间")
private Date getOrderTime;
private Long getOrderPerson;
private RemoteUserVo getOrderPersonVo;
/**
* 完成时间
*/
@ExcelProperty(value = "完成时间")
private Date finishiOrderTime;
/**
* 验收结果1通过2需整改
*/
@ExcelProperty(value = "验收结果1通过2需整改")
private String orderResult;
/**
* 是否重点跟踪1是2否
*/
@ExcelProperty(value = "是否重点跟踪1是2否")
private String point;
private Date createTime;
private Long createBy;
private RemoteUserVo sendOrderPersonVo;
}

View File

@ -0,0 +1,123 @@
package org.dromara.inspection.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.inspection.domain.OpsInspectionPlan;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.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;
import java.util.List;
/**
* 运维-巡检-计划视图对象 ops_inspection_plan
*
* @author LionLi
* @date 2025-09-19
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OpsInspectionPlan.class)
public class OpsInspectionPlanVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 电站id
*/
private Long projectId;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 计划名称
*/
@ExcelProperty(value = "计划名称")
private String planName;
/**
* 计划类型1每日巡检2每周巡检3每月巡检4每季度巡检
*/
@ExcelProperty(value = "计划类型1每日巡检2每周巡检3每月巡检4每季度巡检")
private String planType;
/**
* 巡检对象1服务器2网络设备3应用系统4基础设施
*/
@ExcelProperty(value = "巡检对象1服务器2网络设备3应用系统4基础设施")
private String objectType;
/**
* 开始日期
*/
@ExcelProperty(value = "开始日期")
private Date beginTime;
/**
* 结束日期
*/
@ExcelProperty(value = "结束日期")
private Date endTime;
/**
* 巡检频率
*/
@ExcelProperty(value = "巡检频率")
private String inspectionFrequency;
/**
* 计划开始时间
*/
@ExcelProperty(value = "计划开始时间")
private String planBeginTime;
/**
* 持续时间(分钟)
*/
@ExcelProperty(value = "持续时间(分钟)")
private Long duration;
/**
* 负责人ID
*/
@ExcelProperty(value = "负责人ID")
private Long person;
/**
* 负责人姓名
*/
private String nickName;
/**
* 负责人头像
*/
private String avatar;
/**
* 巡检项IDS
*/
@ExcelProperty(value = "巡检项ID")
private String inspectionItemId;
private List<OpsInspectionItemVo> itemVoList;
/**
* 1启用2停用
*/
@ExcelProperty(value = "1启用2停用")
private String status;
}

View File

@ -0,0 +1,79 @@
package org.dromara.inspection.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
/**
* 巡检记录
*/
@Data
public class OpsInspectionRecordVo {
/**
* 类型 1月 2周 3日
*/
// private String type;
/**
* 完成巡检数量
*/
private Long finishInspectionCount;
/**
* 问题数量
*/
private Long problemCount;
/**
* 已解决问题数量
*/
private Long solvedProblemCount;
/**
* 平均完成时间
*/
private Long averageCompletionTime;
/**
* 巡检完成率
*/
private String xjwcl;
/**
* 已解决率
*/
// private String yjjl;
/**
* 解决效率
*/
private BigDecimal jjxl;
/**
* 磁盘使用率类型问题数量
*/
private Long cpsyl;
/**
* 内存使用率类型问题数量
*/
private Long ncsyl;
/**
* 服务状态类型问题数量
*/
private Long fwzt;
/**
* 响应时间类型问题数量
*/
private Long xysj;
/**
* 设备运行状态类型问题数量
*/
private Long sbyxzt;
}

View File

@ -0,0 +1,143 @@
package org.dromara.inspection.domain.vo;
import java.util.Date;
import org.dromara.inspection.domain.OpsInspectionRepair;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.personnel.domain.vo.OpsUserVo;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import java.io.Serial;
import java.io.Serializable;
/**
* 运维-巡检-抢修视图对象 ops_inspection_repair
*
* @author LionLi
* @date 2025-09-22
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OpsInspectionRepair.class)
public class OpsInspectionRepairVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long id;
/**
*
*/
@ExcelProperty(value = "")
private Long projectId;
/**
* 1常规2紧急3致命
*/
@ExcelProperty(value = "1常规2紧急3致命")
private String level;
/**
* 1待处理2处理中3已完成
*/
@ExcelProperty(value = "1待处理2处理中3已完成")
private String status;
/**
* 抢修类型1电力2设备3供水4网络5设施
*/
@ExcelProperty(value = "抢修类型1电力2设备3供水4网络5设施")
private String type;
/**
* 报修名称
*/
@ExcelProperty(value = "报修名称")
private String name;
/**
* 指派维修人
*/
@ExcelProperty(value = "指派维修人")
private Long sendPerson;
private RemoteUserVo sendPersonVo;
/**
* 详细信息
*/
@ExcelProperty(value = "详细信息")
private String reportInfo;
/**
* 故障位置
*/
@ExcelProperty(value = "故障位置")
private String position;
/**
* 文件IDS
*/
@ExcelProperty(value = "文件IDS")
private String fileId;
/**
* 文件路径
*/
@ExcelProperty(value = "文件路径")
private String fileUrl;
/**
* 报修人姓名
*/
@ExcelProperty(value = "报修人姓名")
private String reportName;
/**
* 报修人联系电话
*/
@ExcelProperty(value = "报修人联系电话")
private String reportPhone;
/**
* 维修结果
*/
// @ExcelProperty(value = "维修结果")
// private String reportFinal;
/**
* 预计完成时间
*/
@ExcelProperty(value = "预计完成时间")
private String expectedTime;
/**
* 完成时间
*/
@ExcelProperty(value = "完成时间")
private Date reportFinishTime;
/**
* 支援,1需要2不需要
*/
@ExcelProperty(value = "支援,1需要2不需要")
private String support;
/**
* 分钟数
*/
private String minute;
private Date createTime;
private Long createBy;
}

View File

@ -0,0 +1,30 @@
package org.dromara.inspection.domain.vo;
import lombok.Data;
@Data
public class OpsInspectionReportRecordVo {
//本月总报修数
private String byzbxs;
//报修数较上周增长率
private String bxsjszzzl;
//平均处理时长
private String pjclsc;
//处理时长较上周增长率
private String clscjszzzl;
//待处理报修
private String dclbx;
//完成率
private String wcl;
//完成率较上周增长率
private String wcljszzzl;
}

View File

@ -0,0 +1,122 @@
package org.dromara.inspection.domain.vo;
import org.dromara.inspection.domain.OpsInspectionReport;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.personnel.domain.vo.OpsUserVo;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 运维-巡检-报修视图对象 ops_inspection_report
*
* @author LionLi
* @date 2025-09-22
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OpsInspectionReport.class)
public class OpsInspectionReportVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "")
private Long id;
/**
* 项目ID(电站ID)
*/
private Long projectId;
/**
* 1低优先2中优先3高优先
*/
@ExcelProperty(value = "1低优先2中优先3高优先")
private String level;
/**
* 1待处理2处理中3已完成
*/
@ExcelProperty(value = "1待处理2处理中3已完成")
private String status;
/**
* 报修类型1硬件2软件
*/
@ExcelProperty(value = "报修类型1硬件2软件")
private String type;
/**
* 报修名称
*/
@ExcelProperty(value = "报修名称")
private String name;
/**
* 指派维修人ID
*/
@ExcelProperty(value = "指派维修人")
private Long sendPerson;
/**
* 指派维修人
*/
private RemoteUserVo sendPersonVo;
/**
* 详细信息
*/
@ExcelProperty(value = "详细信息")
private String reportInfo;
/**
* 故障位置
*/
@ExcelProperty(value = "故障位置")
private String position;
/**
* 文件ID
*/
@ExcelProperty(value = "文件ID")
private String fileId;
/**
* 文件路径
*/
@ExcelProperty(value = "文件路径")
private String fileUrl;
/**
* 报修人姓名
*/
@ExcelProperty(value = "报修人姓名")
private String reportName;
/**
* 报修人联系电话
*/
@ExcelProperty(value = "报修人联系电话")
private String reportPhone;
@ExcelProperty(value = "维修结果")
private String reportFinal;
@ExcelProperty(value = "完成时间")
private Date reportFinishTime;
private Date createTime;
private Long createBy;
}

View File

@ -0,0 +1,88 @@
package org.dromara.inspection.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotNull;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.inspection.domain.OpsInspectionTaskProblem;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.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;
/**
* 运维-巡检-任务-问题视图对象 ops_inspection_task_problem
*
* @author LionLi
* @date 2025-09-26
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OpsInspectionTaskProblem.class)
public class OpsInspectionTaskProblemVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long id;
/**
* 电站id
*/
private Long projectId;
/**
* 巡检任务ID
*/
@ExcelProperty(value = "巡检任务ID")
private Long taskId;
/**
* 发现问题类型1磁盘使用率2内存使用率3服务状态4响应时间5设备运行状态
*/
@ExcelProperty(value = "发现问题类型1磁盘使用率2内存使用率3服务状态4响应时间5设备运行状态")
private String type;
/**
* 问题详细信息
*/
@ExcelProperty(value = "问题详细信息")
private String info;
/**
* 发现日期
*/
@ExcelProperty(value = "发现日期")
private Date findTime;
/**
* 是否解决1解决2未解决
*/
@ExcelProperty(value = "是否解决1解决2未解决")
private String finish;
/**
* 解决日期
*/
@ExcelProperty(value = "解决日期")
private Date finishTime;
/**
* 创建时间
*/
private Date createTime;
}

View File

@ -0,0 +1,128 @@
package org.dromara.inspection.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.inspection.domain.OpsInspectionTask;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.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 org.dromara.personnel.domain.vo.OpsUserVo;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 运维-巡检计划-任务视图对象 ops_inspection_task
*
* @author LionLi
* @date 2025-09-20
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OpsInspectionTask.class)
public class OpsInspectionTaskVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long id;
private Long projectId;
/**
* 任务名
*/
@ExcelProperty(value = "任务名")
private String taskName;
/**
* 巡检对象
*/
@ExcelProperty(value = "巡检对象")
private String inspectionObject;
/**
*
*/
@ExcelProperty(value = "")
private Date beginTime;
/**
*
*/
@ExcelProperty(value = "")
private Date endTime;
/**
* 时间段
*/
@ExcelProperty(value = "时间段")
private String timeInfo;
/**
* 计划ID
*/
@ExcelProperty(value = "计划ID")
private Long planId;
private OpsInspectionPlanVo plan;
/**
* 执行人ID
*/
@ExcelProperty(value = "执行人ID")
private Long personId;
private RemoteUserVo person;
/**
* 进度
*/
private BigDecimal taskProgress;
/**
* 节点ids
*/
private String nodeIds;
private List<OpsInspectionNodeVo> nodes;
/**
* 问题列表
*/
private List<OpsInspectionTaskProblemVo> problems;
/**
* 状态 1待执行2已延期3执行中4已完成
*/
private String taskType;
/**
* 发现问题种类,1磁盘使用率2内存使用率3服务状态4响应时间5设备运行状态
*/
private String problemType;
/**
* 开始时间
*/
private Date startTime;
private Date finishTime;
private Date createTime;
}

View File

@ -0,0 +1,142 @@
package org.dromara.inspection.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.inspection.domain.OpsInspectionItem;
import org.dromara.inspection.domain.OpsInspectionTestPlan;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.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 org.dromara.personnel.domain.OpsUser;
import org.dromara.personnel.domain.vo.OpsUserVo;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 运维-巡检-试验计划视图对象 ops_inspection_test_plan
*
* @author LionLi
* @date 2025-09-20
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OpsInspectionTestPlan.class)
public class OpsInspectionTestPlanVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long id;
/**
* 电站ID
*/
@ExcelProperty(value = "电站ID")
private Long projectId;
/**
* 计划名称
*/
@ExcelProperty(value = "计划名称")
private String planName;
/**
* 计划编号
*/
@ExcelProperty(value = "计划编号")
private String planCode;
/**
* 实验对象类型,1安全试验2网络实验3性能试验4
*/
@ExcelProperty(value = "实验对象类型,1安全试验2网络实验3性能试验4")
private String testObject;
/**
*
*/
@ExcelProperty(value = "")
private Date beginTime;
/**
*
*/
@ExcelProperty(value = "")
private Date endTime;
/**
* 试验目的与预期结果
*/
@ExcelProperty(value = "试验目的与预期结果")
private String testInfo;
/**
* 实验环境
*/
@ExcelProperty(value = "实验环境")
private String testSetting;
/**
* 负责人ID
*/
@ExcelProperty(value = "负责人ID")
private Long personCharge;
private RemoteUserVo person;
/**
* 参与人员IDS
*/
@ExcelProperty(value = "参与人员IDS")
private String personIds;
private List<RemoteUserVo> persons;
/**
* 自定义检查项
*/
@ExcelProperty(value = "自定义检查项")
private String inspectionItems;
private List<OpsInspectionItem> inspectionItemList;
/**
* 实验步骤
*/
@ExcelProperty(value = "实验步骤")
private String testStep;
/**
* 所需资源与设备
*/
@ExcelProperty(value = "所需资源与设备")
private String testDevice;
/**
* 风险评估与应对措施
*/
@ExcelProperty(value = "风险评估与应对措施")
private String testSolutions;
/**
* 申请状态 1已批准2进行中3已完成4草稿5未通过
*/
@ExcelProperty(value = "状态")
private String testStatus;
//1启动2停止
private String testPlanType;
}

View File

@ -0,0 +1,45 @@
package org.dromara.inspection.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class OpsInspectionTestTaskRecord {
/**
* 本月完成数
*/
private String finishCount;
/**
* 上月增加数
*/
private String finishCountAdd;
/**
* 本月通过率
*/
private String passValue;
/**
* 通过增长率
*/
private String passValueAdd;
/**
* 待分析数
*/
private String failCount;
/**
* 平均测试时间
*/
private String averageTestTime;
/**
* 平均测试时间数增长率
*/
private String averageTestTimeAdd;
}

View File

@ -0,0 +1,203 @@
package org.dromara.inspection.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.inspection.domain.OpsInspectionTestTask;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.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 org.dromara.personnel.domain.vo.OpsUserVo;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 运维-巡检-试验任务视图对象 ops_inspection_test_task
*
* @author LionLi
* @date 2025-09-20
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = OpsInspectionTestTask.class)
public class OpsInspectionTestTaskVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long id;
/**
* 项目ID(电站ID)
*/
@ExcelProperty(value = "项目ID(电站ID)")
private Long projectId;
/**
* 任务名称
*/
@ExcelProperty(value = "任务名称")
private String taskName;
/**
* 测试对象
*/
@ExcelProperty(value = "测试对象")
private String testObject;
/**
*
*/
@ExcelProperty(value = "开始时间")
private Date beginTime;
/**
*
*/
@ExcelProperty(value = "结束时间")
private Date endTime;
/**
*
*/
@ExcelProperty(value = "时间段")
private String timeInfo;
/**
* 执行人员
*/
@ExcelProperty(value = "执行人员")
private Long person;
private RemoteUserVo personInfo;
/**
* 节点IDS
*/
private String nodeIds;
/**
* 节点列表
*/
private List<OpsInspectionNodeVo> nodes;
/**
* 状态,1待执行2暂停3失败4执行中5已完成
*/
@ExcelProperty(value = "状态,1待执行2暂停3失败4执行中5已完成")
private String status;
/**
* 是否已分析1未分析2已分析
*/
private String unPack;
/**
* 关联测试计划ID
*/
@ExcelProperty(value = "关联测试计划ID")
private Long testPlanId;
private OpsInspectionTestPlanVo testPlan;
/**
* 试验环境
*/
@ExcelProperty(value = "试验环境")
private String testSetting;
/**
* 开始时间
*/
@ExcelProperty(value = "开始时间")
private Date planBeginTime;
/**
* 进度
*/
@ExcelProperty(value = "进度")
private BigDecimal progress;
/**
* 失败原因
*/
@ExcelProperty(value = "失败原因")
private String failReason;
/**
* 失败时间
*/
@ExcelProperty(value = "失败时间")
private Date failTime;
/**
* 失败阶段
*/
@ExcelProperty(value = "失败阶段")
private Long failPhase;
/**
* 失败原因分析
*/
@ExcelProperty(value = "失败原因分析")
private String faileAnalyze;
/**
* 改进建议
*/
@ExcelProperty(value = "改进建议")
private String faileTips;
/**
* 试验时长(分钟)
*/
@ExcelProperty(value = "试验时长(分钟)")
private Long testLongTime;
/**
* 结果
*/
@ExcelProperty(value = "结果")
private String testFinal;
/**
* 结果详情
*/
@ExcelProperty(value = "结果详情")
private String finalInfo;
/**
* 暂停原因
*/
@ExcelProperty(value = "暂停原因")
private String pauseFor;
/**
* 暂停时间
*/
@ExcelProperty(value = "暂停时间")
private Date pauseTime;
/**
* 计划完成时间
*/
private Date planFinishTime;
/**
* 创建 时间
*/
private Date createTime;
}

View File

@ -0,0 +1,43 @@
package org.dromara.inspection.domain.vo;
import lombok.Data;
@Data
public class OrderRecordVo {
/**
* 本月派单数
*/
private String bypds;
/**
* 拍单数增长率
*/
private String pdzzl;
/**
* 平均响应时间
*/
private String pjxysj;
/**
* 响应时间增长率
*/
private String xysjzzl;
/**
* 待接收工单
*/
private String djsgd;
/**
* 按时完成率
*/
private String aswcl;
/**
* 完成增长率
*/
private String wczzl;
}

View File

@ -0,0 +1,15 @@
package org.dromara.inspection.mapper;
import org.dromara.inspection.domain.OpsInspectionItem;
import org.dromara.inspection.domain.vo.OpsInspectionItemVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 运维-巡检-自定义巡检项Mapper接口
*
* @author LionLi
* @date 2025-09-19
*/
public interface OpsInspectionItemMapper extends BaseMapperPlus<OpsInspectionItem, OpsInspectionItemVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.inspection.mapper;
import org.dromara.inspection.domain.OpsInspectionMatter;
import org.dromara.inspection.domain.vo.OpsInspectionMatterVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 运维-巡检-待办Mapper接口
*
* @author LionLi
* @date 2025-09-19
*/
public interface OpsInspectionMatterMapper extends BaseMapperPlus<OpsInspectionMatter, OpsInspectionMatterVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.inspection.mapper;
import org.dromara.inspection.domain.OpsInspectionNode;
import org.dromara.inspection.domain.vo.OpsInspectionNodeVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 运维-巡检-通用节点Mapper接口
*
* @author LionLi
* @date 2025-09-23
*/
public interface OpsInspectionNodeMapper extends BaseMapperPlus<OpsInspectionNode, OpsInspectionNodeVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.inspection.mapper;
import org.dromara.inspection.domain.OpsInspectionOrder;
import org.dromara.inspection.domain.vo.OpsInspectionOrderVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 运维-巡检-工单Mapper接口
*
* @author LionLi
* @date 2025-09-23
*/
public interface OpsInspectionOrderMapper extends BaseMapperPlus<OpsInspectionOrder, OpsInspectionOrderVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.inspection.mapper;
import org.dromara.inspection.domain.OpsInspectionPlan;
import org.dromara.inspection.domain.vo.OpsInspectionPlanVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 运维-巡检-计划Mapper接口
*
* @author LionLi
* @date 2025-09-19
*/
public interface OpsInspectionPlanMapper extends BaseMapperPlus<OpsInspectionPlan, OpsInspectionPlanVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.inspection.mapper;
import org.dromara.inspection.domain.OpsInspectionRepair;
import org.dromara.inspection.domain.vo.OpsInspectionRepairVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 运维-巡检-抢修Mapper接口
*
* @author LionLi
* @date 2025-09-22
*/
public interface OpsInspectionRepairMapper extends BaseMapperPlus<OpsInspectionRepair, OpsInspectionRepairVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.inspection.mapper;
import org.dromara.inspection.domain.OpsInspectionReport;
import org.dromara.inspection.domain.vo.OpsInspectionReportVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 运维-巡检-报修Mapper接口
*
* @author LionLi
* @date 2025-09-22
*/
public interface OpsInspectionReportMapper extends BaseMapperPlus<OpsInspectionReport, OpsInspectionReportVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.inspection.mapper;
import org.dromara.inspection.domain.OpsInspectionTask;
import org.dromara.inspection.domain.vo.OpsInspectionTaskVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 运维-巡检计划-任务Mapper接口
*
* @author LionLi
* @date 2025-09-20
*/
public interface OpsInspectionTaskMapper extends BaseMapperPlus<OpsInspectionTask, OpsInspectionTaskVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.inspection.mapper;
import org.dromara.inspection.domain.OpsInspectionTaskProblem;
import org.dromara.inspection.domain.vo.OpsInspectionTaskProblemVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 运维-巡检-任务-问题Mapper接口
*
* @author LionLi
* @date 2025-09-26
*/
public interface OpsInspectionTaskProblemMapper extends BaseMapperPlus<OpsInspectionTaskProblem, OpsInspectionTaskProblemVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.inspection.mapper;
import org.dromara.inspection.domain.OpsInspectionTestPlan;
import org.dromara.inspection.domain.vo.OpsInspectionTestPlanVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 运维-巡检-试验计划Mapper接口
*
* @author LionLi
* @date 2025-09-20
*/
public interface OpsInspectionTestPlanMapper extends BaseMapperPlus<OpsInspectionTestPlan, OpsInspectionTestPlanVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.inspection.mapper;
import org.dromara.inspection.domain.OpsInspectionTestTask;
import org.dromara.inspection.domain.vo.OpsInspectionTestTaskVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 运维-巡检-试验任务Mapper接口
*
* @author LionLi
* @date 2025-09-20
*/
public interface OpsInspectionTestTaskMapper extends BaseMapperPlus<OpsInspectionTestTask, OpsInspectionTestTaskVo> {
}

View File

@ -0,0 +1,69 @@
package org.dromara.inspection.service;
import org.dromara.inspection.domain.OpsInspectionItem;
import org.dromara.inspection.domain.vo.OpsInspectionItemVo;
import org.dromara.inspection.domain.bo.OpsInspectionItemBo;
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 LionLi
* @date 2025-09-19
*/
public interface IOpsInspectionItemService {
/**
* 查询运维-巡检-自定义巡检项
*
* @param id 主键
* @return 运维-巡检-自定义巡检项
*/
OpsInspectionItemVo queryById(Long id);
/**
* 分页查询运维-巡检-自定义巡检项列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 运维-巡检-自定义巡检项分页列表
*/
TableDataInfo<OpsInspectionItemVo> queryPageList(OpsInspectionItemBo bo, PageQuery pageQuery);
/**
* 查询符合条件的运维-巡检-自定义巡检项列表
*
* @param bo 查询条件
* @return 运维-巡检-自定义巡检项列表
*/
List<OpsInspectionItemVo> queryList(OpsInspectionItemBo bo);
/**
* 新增运维-巡检-自定义巡检项
*
* @param bo 运维-巡检-自定义巡检项
* @return 是否新增成功
*/
Boolean insertByBo(OpsInspectionItemBo bo);
/**
* 修改运维-巡检-自定义巡检项
*
* @param bo 运维-巡检-自定义巡检项
* @return 是否修改成功
*/
Boolean updateByBo(OpsInspectionItemBo bo);
/**
* 校验并批量删除运维-巡检-自定义巡检项信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,68 @@
package org.dromara.inspection.service;
import org.dromara.inspection.domain.vo.OpsInspectionMatterVo;
import org.dromara.inspection.domain.bo.OpsInspectionMatterBo;
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 LionLi
* @date 2025-09-19
*/
public interface IOpsInspectionMatterService {
/**
* 查询运维-巡检-待办
*
* @param id 主键
* @return 运维-巡检-待办
*/
OpsInspectionMatterVo queryById(Long id);
/**
* 分页查询运维-巡检-待办列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 运维-巡检-待办分页列表
*/
TableDataInfo<OpsInspectionMatterVo> queryPageList(OpsInspectionMatterBo bo, PageQuery pageQuery);
/**
* 查询符合条件的运维-巡检-待办列表
*
* @param bo 查询条件
* @return 运维-巡检-待办列表
*/
List<OpsInspectionMatterVo> queryList(OpsInspectionMatterBo bo);
/**
* 新增运维-巡检-待办
*
* @param bo 运维-巡检-待办
* @return 是否新增成功
*/
Boolean insertByBo(OpsInspectionMatterBo bo);
/**
* 修改运维-巡检-待办
*
* @param bo 运维-巡检-待办
* @return 是否修改成功
*/
Boolean updateByBo(OpsInspectionMatterBo bo);
/**
* 校验并批量删除运维-巡检-待办信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,69 @@
package org.dromara.inspection.service;
import org.dromara.common.core.domain.R;
import org.dromara.inspection.domain.vo.OpsInspectionNodeVo;
import org.dromara.inspection.domain.bo.OpsInspectionNodeBo;
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 LionLi
* @date 2025-09-23
*/
public interface IOpsInspectionNodeService {
/**
* 查询运维-巡检-通用节点
*
* @param id 主键
* @return 运维-巡检-通用节点
*/
OpsInspectionNodeVo queryById(Long id);
/**
* 分页查询运维-巡检-通用节点列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 运维-巡检-通用节点分页列表
*/
TableDataInfo<OpsInspectionNodeVo> queryPageList(OpsInspectionNodeBo bo, PageQuery pageQuery);
/**
* 查询符合条件的运维-巡检-通用节点列表
*
* @param bo 查询条件
* @return 运维-巡检-通用节点列表
*/
List<OpsInspectionNodeVo> queryList(OpsInspectionNodeBo bo);
/**
* 新增运维-巡检-通用节点
*
* @param bo 运维-巡检-通用节点
* @return 是否新增成功
*/
R<String> insertByBo(List<OpsInspectionNodeBo> bo);
/**
* 修改运维-巡检-通用节点
*
* @param bo 运维-巡检-通用节点
* @return 是否修改成功
*/
Boolean updateByBo(List<OpsInspectionNodeBo> bo);
/**
* 校验并批量删除运维-巡检-通用节点信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,68 @@
package org.dromara.inspection.service;
import org.dromara.inspection.domain.vo.OpsInspectionOrderVo;
import org.dromara.inspection.domain.bo.OpsInspectionOrderBo;
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 LionLi
* @date 2025-09-23
*/
public interface IOpsInspectionOrderService {
/**
* 查询运维-巡检-工单
*
* @param id 主键
* @return 运维-巡检-工单
*/
OpsInspectionOrderVo queryById(Long id);
/**
* 分页查询运维-巡检-工单列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 运维-巡检-工单分页列表
*/
TableDataInfo<OpsInspectionOrderVo> queryPageList(OpsInspectionOrderBo bo, PageQuery pageQuery);
/**
* 查询符合条件的运维-巡检-工单列表
*
* @param bo 查询条件
* @return 运维-巡检-工单列表
*/
List<OpsInspectionOrderVo> queryList(OpsInspectionOrderBo bo);
/**
* 新增运维-巡检-工单
*
* @param bo 运维-巡检-工单
* @return 是否新增成功
*/
Boolean insertByBo(OpsInspectionOrderBo bo);
/**
* 修改运维-巡检-工单
*
* @param bo 运维-巡检-工单
* @return 是否修改成功
*/
Boolean updateByBo(OpsInspectionOrderBo bo);
/**
* 校验并批量删除运维-巡检-工单信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,69 @@
package org.dromara.inspection.service;
import org.dromara.inspection.domain.OpsInspectionPlan;
import org.dromara.inspection.domain.vo.OpsInspectionPlanVo;
import org.dromara.inspection.domain.bo.OpsInspectionPlanBo;
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 LionLi
* @date 2025-09-19
*/
public interface IOpsInspectionPlanService {
/**
* 查询运维-巡检-计划
*
* @param id 主键
* @return 运维-巡检-计划
*/
OpsInspectionPlanVo queryById(Long id);
/**
* 分页查询运维-巡检-计划列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 运维-巡检-计划分页列表
*/
TableDataInfo<OpsInspectionPlanVo> queryPageList(OpsInspectionPlanBo bo, PageQuery pageQuery);
/**
* 查询符合条件的运维-巡检-计划列表
*
* @param bo 查询条件
* @return 运维-巡检-计划列表
*/
List<OpsInspectionPlanVo> queryList(OpsInspectionPlanBo bo);
/**
* 新增运维-巡检-计划
*
* @param bo 运维-巡检-计划
* @return 是否新增成功
*/
Boolean insertByBo(OpsInspectionPlanBo bo);
/**
* 修改运维-巡检-计划
*
* @param bo 运维-巡检-计划
* @return 是否修改成功
*/
Boolean updateByBo(OpsInspectionPlanBo bo);
/**
* 校验并批量删除运维-巡检-计划信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,68 @@
package org.dromara.inspection.service;
import org.dromara.inspection.domain.vo.OpsInspectionRepairVo;
import org.dromara.inspection.domain.bo.OpsInspectionRepairBo;
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 LionLi
* @date 2025-09-22
*/
public interface IOpsInspectionRepairService {
/**
* 查询运维-巡检-抢修
*
* @param id 主键
* @return 运维-巡检-抢修
*/
OpsInspectionRepairVo queryById(Long id);
/**
* 分页查询运维-巡检-抢修列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 运维-巡检-抢修分页列表
*/
TableDataInfo<OpsInspectionRepairVo> queryPageList(OpsInspectionRepairBo bo, PageQuery pageQuery);
/**
* 查询符合条件的运维-巡检-抢修列表
*
* @param bo 查询条件
* @return 运维-巡检-抢修列表
*/
List<OpsInspectionRepairVo> queryList(OpsInspectionRepairBo bo);
/**
* 新增运维-巡检-抢修
*
* @param bo 运维-巡检-抢修
* @return 是否新增成功
*/
Boolean insertByBo(OpsInspectionRepairBo bo);
/**
* 修改运维-巡检-抢修
*
* @param bo 运维-巡检-抢修
* @return 是否修改成功
*/
Boolean updateByBo(OpsInspectionRepairBo bo);
/**
* 校验并批量删除运维-巡检-抢修信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,69 @@
package org.dromara.inspection.service;
import org.dromara.inspection.domain.vo.OpsInspectionReportVo;
import org.dromara.inspection.domain.bo.OpsInspectionReportBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.springframework.web.multipart.MultipartFile;
import java.util.Collection;
import java.util.List;
/**
* 运维-巡检-报修Service接口
*
* @author LionLi
* @date 2025-09-22
*/
public interface IOpsInspectionReportService {
/**
* 查询运维-巡检-报修
*
* @param id 主键
* @return 运维-巡检-报修
*/
OpsInspectionReportVo queryById(Long id);
/**
* 分页查询运维-巡检-报修列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 运维-巡检-报修分页列表
*/
TableDataInfo<OpsInspectionReportVo> queryPageList(OpsInspectionReportBo bo, PageQuery pageQuery);
/**
* 查询符合条件的运维-巡检-报修列表
*
* @param bo 查询条件
* @return 运维-巡检-报修列表
*/
List<OpsInspectionReportVo> queryList(OpsInspectionReportBo bo);
/**
* 新增运维-巡检-报修
*
* @param bo 运维-巡检-报修
* @return 是否新增成功
*/
Boolean insertByBo(OpsInspectionReportBo bo);
/**
* 修改运维-巡检-报修
*
* @param bo 运维-巡检-报修
* @return 是否修改成功
*/
Boolean updateByBo(OpsInspectionReportBo bo);
/**
* 校验并批量删除运维-巡检-报修信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,69 @@
package org.dromara.inspection.service;
import org.dromara.inspection.domain.OpsInspectionTaskProblem;
import org.dromara.inspection.domain.vo.OpsInspectionTaskProblemVo;
import org.dromara.inspection.domain.bo.OpsInspectionTaskProblemBo;
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 LionLi
* @date 2025-09-26
*/
public interface IOpsInspectionTaskProblemService {
/**
* 查询运维-巡检-任务-问题
*
* @param id 主键
* @return 运维-巡检-任务-问题
*/
OpsInspectionTaskProblemVo queryById(Long id);
/**
* 分页查询运维-巡检-任务-问题列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 运维-巡检-任务-问题分页列表
*/
TableDataInfo<OpsInspectionTaskProblemVo> queryPageList(OpsInspectionTaskProblemBo bo, PageQuery pageQuery);
/**
* 查询符合条件的运维-巡检-任务-问题列表
*
* @param bo 查询条件
* @return 运维-巡检-任务-问题列表
*/
List<OpsInspectionTaskProblemVo> queryList(OpsInspectionTaskProblemBo bo);
/**
* 新增运维-巡检-任务-问题
*
* @param bo 运维-巡检-任务-问题
* @return 是否新增成功
*/
Boolean insertByBo(OpsInspectionTaskProblemBo bo);
/**
* 修改运维-巡检-任务-问题
*
* @param bo 运维-巡检-任务-问题
* @return 是否修改成功
*/
Boolean updateByBo(OpsInspectionTaskProblemBo bo);
/**
* 校验并批量删除运维-巡检-任务-问题信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,70 @@
package org.dromara.inspection.service;
import org.dromara.common.core.domain.R;
import org.dromara.inspection.domain.OpsInspectionTask;
import org.dromara.inspection.domain.vo.OpsInspectionTaskVo;
import org.dromara.inspection.domain.bo.OpsInspectionTaskBo;
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 LionLi
* @date 2025-09-20
*/
public interface IOpsInspectionTaskService {
/**
* 查询运维-巡检计划-任务
*
* @param id 主键
* @return 运维-巡检计划-任务
*/
OpsInspectionTaskVo queryById(Long id);
/**
* 分页查询运维-巡检计划-任务列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 运维-巡检计划-任务分页列表
*/
TableDataInfo<OpsInspectionTaskVo> queryPageList(OpsInspectionTaskBo bo, PageQuery pageQuery);
/**
* 查询符合条件的运维-巡检计划-任务列表
*
* @param bo 查询条件
* @return 运维-巡检计划-任务列表
*/
List<OpsInspectionTaskVo> queryList(OpsInspectionTaskBo bo);
/**
* 新增运维-巡检计划-任务
*
* @param bo 运维-巡检计划-任务
* @return 是否新增成功
*/
Boolean insertByBo(OpsInspectionTaskBo bo);
/**
* 修改运维-巡检计划-任务
*
* @param bo 运维-巡检计划-任务
* @return 是否修改成功
*/
R<Void> updateByBo(OpsInspectionTaskBo bo);
/**
* 校验并批量删除运维-巡检计划-任务信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,69 @@
package org.dromara.inspection.service;
import org.dromara.inspection.domain.OpsInspectionTestPlan;
import org.dromara.inspection.domain.vo.OpsInspectionTestPlanVo;
import org.dromara.inspection.domain.bo.OpsInspectionTestPlanBo;
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 LionLi
* @date 2025-09-20
*/
public interface IOpsInspectionTestPlanService {
/**
* 查询运维-巡检-试验计划
*
* @param id 主键
* @return 运维-巡检-试验计划
*/
OpsInspectionTestPlanVo queryById(Long id);
/**
* 分页查询运维-巡检-试验计划列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 运维-巡检-试验计划分页列表
*/
TableDataInfo<OpsInspectionTestPlanVo> queryPageList(OpsInspectionTestPlanBo bo, PageQuery pageQuery);
/**
* 查询符合条件的运维-巡检-试验计划列表
*
* @param bo 查询条件
* @return 运维-巡检-试验计划列表
*/
List<OpsInspectionTestPlanVo> queryList(OpsInspectionTestPlanBo bo);
/**
* 新增运维-巡检-试验计划
*
* @param bo 运维-巡检-试验计划
* @return 是否新增成功
*/
Boolean insertByBo(OpsInspectionTestPlanBo bo);
/**
* 修改运维-巡检-试验计划
*
* @param bo 运维-巡检-试验计划
* @return 是否修改成功
*/
Boolean updateByBo(OpsInspectionTestPlanBo bo);
/**
* 校验并批量删除运维-巡检-试验计划信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,70 @@
package org.dromara.inspection.service;
import org.dromara.common.core.domain.R;
import org.dromara.inspection.domain.OpsInspectionTestTask;
import org.dromara.inspection.domain.vo.OpsInspectionTestTaskVo;
import org.dromara.inspection.domain.bo.OpsInspectionTestTaskBo;
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 LionLi
* @date 2025-09-20
*/
public interface IOpsInspectionTestTaskService {
/**
* 查询运维-巡检-试验任务
*
* @param id 主键
* @return 运维-巡检-试验任务
*/
OpsInspectionTestTaskVo queryById(Long id);
/**
* 分页查询运维-巡检-试验任务列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 运维-巡检-试验任务分页列表
*/
TableDataInfo<OpsInspectionTestTaskVo> queryPageList(OpsInspectionTestTaskBo bo, PageQuery pageQuery);
/**
* 查询符合条件的运维-巡检-试验任务列表
*
* @param bo 查询条件
* @return 运维-巡检-试验任务列表
*/
List<OpsInspectionTestTaskVo> queryList(OpsInspectionTestTaskBo bo);
/**
* 新增运维-巡检-试验任务
*
* @param bo 运维-巡检-试验任务
* @return 是否新增成功
*/
Boolean insertByBo(OpsInspectionTestTaskBo bo);
/**
* 修改运维-巡检-试验任务
*
* @param bo 运维-巡检-试验任务
* @return 是否修改成功
*/
R<Void> updateByBo(OpsInspectionTestTaskBo bo);
/**
* 校验并批量删除运维-巡检-试验任务信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,134 @@
package org.dromara.inspection.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 lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.dromara.inspection.domain.bo.OpsInspectionItemBo;
import org.dromara.inspection.domain.vo.OpsInspectionItemVo;
import org.dromara.inspection.domain.OpsInspectionItem;
import org.dromara.inspection.mapper.OpsInspectionItemMapper;
import org.dromara.inspection.service.IOpsInspectionItemService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 运维-巡检-自定义巡检项Service业务层处理
*
* @author LionLi
* @date 2025-09-19
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class OpsInspectionItemServiceImpl implements IOpsInspectionItemService {
private final OpsInspectionItemMapper baseMapper;
/**
* 查询运维-巡检-自定义巡检项
*
* @param id 主键
* @return 运维-巡检-自定义巡检项
*/
@Override
public OpsInspectionItemVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询运维-巡检-自定义巡检项列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 运维-巡检-自定义巡检项分页列表
*/
@Override
public TableDataInfo<OpsInspectionItemVo> queryPageList(OpsInspectionItemBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<OpsInspectionItem> lqw = buildQueryWrapper(bo);
Page<OpsInspectionItemVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的运维-巡检-自定义巡检项列表
*
* @param bo 查询条件
* @return 运维-巡检-自定义巡检项列表
*/
@Override
public List<OpsInspectionItemVo> queryList(OpsInspectionItemBo bo) {
LambdaQueryWrapper<OpsInspectionItem> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<OpsInspectionItem> buildQueryWrapper(OpsInspectionItemBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<OpsInspectionItem> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(OpsInspectionItem::getId);
lqw.eq(bo.getProjectId() != null, OpsInspectionItem::getProjectId, bo.getProjectId());
lqw.like(StringUtils.isNotBlank(bo.getName()), OpsInspectionItem::getName, bo.getName());
lqw.eq(StringUtils.isNotBlank(bo.getType()), OpsInspectionItem::getType, bo.getType());
return lqw;
}
/**
* 新增运维-巡检-自定义巡检项
*
* @param bo 运维-巡检-自定义巡检项
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(OpsInspectionItemBo bo) {
OpsInspectionItem add = MapstructUtils.convert(bo, OpsInspectionItem.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改运维-巡检-自定义巡检项
*
* @param bo 运维-巡检-自定义巡检项
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(OpsInspectionItemBo bo) {
OpsInspectionItem update = MapstructUtils.convert(bo, OpsInspectionItem.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(OpsInspectionItem entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除运维-巡检-自定义巡检项信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -0,0 +1,139 @@
package org.dromara.inspection.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 lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.dromara.inspection.domain.bo.OpsInspectionMatterBo;
import org.dromara.inspection.domain.vo.OpsInspectionMatterVo;
import org.dromara.inspection.domain.OpsInspectionMatter;
import org.dromara.inspection.mapper.OpsInspectionMatterMapper;
import org.dromara.inspection.service.IOpsInspectionMatterService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 运维-巡检-待办Service业务层处理
*
* @author LionLi
* @date 2025-09-19
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class OpsInspectionMatterServiceImpl implements IOpsInspectionMatterService {
private final OpsInspectionMatterMapper baseMapper;
/**
* 查询运维-巡检-待办
*
* @param id 主键
* @return 运维-巡检-待办
*/
@Override
public OpsInspectionMatterVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询运维-巡检-待办列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 运维-巡检-待办分页列表
*/
@Override
public TableDataInfo<OpsInspectionMatterVo> queryPageList(OpsInspectionMatterBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<OpsInspectionMatter> lqw = buildQueryWrapper(bo);
Page<OpsInspectionMatterVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的运维-巡检-待办列表
*
* @param bo 查询条件
* @return 运维-巡检-待办列表
*/
@Override
public List<OpsInspectionMatterVo> queryList(OpsInspectionMatterBo bo) {
LambdaQueryWrapper<OpsInspectionMatter> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<OpsInspectionMatter> buildQueryWrapper(OpsInspectionMatterBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<OpsInspectionMatter> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(OpsInspectionMatter::getId);
lqw.eq(bo.getProjectId() != null, OpsInspectionMatter::getProjectId, bo.getProjectId());
lqw.like(StringUtils.isNotBlank(bo.getTaskName()), OpsInspectionMatter::getTaskName, bo.getTaskName());
lqw.eq(StringUtils.isNotBlank(bo.getDescribeValue()), OpsInspectionMatter::getDescribeValue, bo.getDescribeValue());
lqw.eq(bo.getTaskBeginTime() != null, OpsInspectionMatter::getTaskBeginTime, bo.getTaskBeginTime());
lqw.eq(bo.getTaskEndTime() != null, OpsInspectionMatter::getTaskEndTime, bo.getTaskEndTime());
lqw.eq(StringUtils.isNotBlank(bo.getTaskTimeInfo()), OpsInspectionMatter::getTaskTimeInfo, bo.getTaskTimeInfo());
lqw.eq(StringUtils.isNotBlank(bo.getTaskLevel()), OpsInspectionMatter::getTaskLevel, bo.getTaskLevel());
lqw.eq(StringUtils.isNotBlank(bo.getTaskType()), OpsInspectionMatter::getTaskType, bo.getTaskType());
return lqw;
}
/**
* 新增运维-巡检-待办
*
* @param bo 运维-巡检-待办
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(OpsInspectionMatterBo bo) {
OpsInspectionMatter add = MapstructUtils.convert(bo, OpsInspectionMatter.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改运维-巡检-待办
*
* @param bo 运维-巡检-待办
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(OpsInspectionMatterBo bo) {
OpsInspectionMatter update = MapstructUtils.convert(bo, OpsInspectionMatter.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(OpsInspectionMatter entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除运维-巡检-待办信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -0,0 +1,153 @@
package org.dromara.inspection.service.impl;
import org.dromara.common.core.domain.R;
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 lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.dromara.inspection.domain.bo.OpsInspectionNodeBo;
import org.dromara.inspection.domain.vo.OpsInspectionNodeVo;
import org.dromara.inspection.domain.OpsInspectionNode;
import org.dromara.inspection.mapper.OpsInspectionNodeMapper;
import org.dromara.inspection.service.IOpsInspectionNodeService;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 运维-巡检-通用节点Service业务层处理
*
* @author LionLi
* @date 2025-09-23
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class OpsInspectionNodeServiceImpl implements IOpsInspectionNodeService {
private final OpsInspectionNodeMapper baseMapper;
/**
* 查询运维-巡检-通用节点
*
* @param id 主键
* @return 运维-巡检-通用节点
*/
@Override
public OpsInspectionNodeVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询运维-巡检-通用节点列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 运维-巡检-通用节点分页列表
*/
@Override
public TableDataInfo<OpsInspectionNodeVo> queryPageList(OpsInspectionNodeBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<OpsInspectionNode> lqw = buildQueryWrapper(bo);
Page<OpsInspectionNodeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的运维-巡检-通用节点列表
*
* @param bo 查询条件
* @return 运维-巡检-通用节点列表
*/
@Override
public List<OpsInspectionNodeVo> queryList(OpsInspectionNodeBo bo) {
LambdaQueryWrapper<OpsInspectionNode> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<OpsInspectionNode> buildQueryWrapper(OpsInspectionNodeBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<OpsInspectionNode> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(OpsInspectionNode::getId);
lqw.eq(StringUtils.isNotBlank(bo.getModule()), OpsInspectionNode::getModule, bo.getModule());
lqw.eq(bo.getOrderId() != null, OpsInspectionNode::getOrderId, bo.getOrderId());
lqw.eq(bo.getCode() != null, OpsInspectionNode::getCode, bo.getCode());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), OpsInspectionNode::getStatus, bo.getStatus());
return lqw;
}
/**
* 新增运维-巡检-通用节点
*
* @param bo 运维-巡检-通用节点
* @return 是否新增成功
*/
@Override
public R<String> insertByBo(List<OpsInspectionNodeBo> bo) {
List<String> ids = new ArrayList<>();
if (bo != null) {
for (OpsInspectionNodeBo nodeBo : bo) {
OpsInspectionNode add = MapstructUtils.convert(nodeBo, OpsInspectionNode.class);
validEntityBeforeSave(add);
int insert = baseMapper.insert(add);
if (insert > 0){
if (add != null) {
ids.add(add.getId().toString());
}
}
}
// log.info("{}", StringUtils.join(ids, ","));
return R.ok(StringUtils.join(ids, ","));
}else{
return R.fail();
}
}
/**
* 修改运维-巡检-通用节点
*
* @param bo 运维-巡检-通用节点
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(List<OpsInspectionNodeBo> bo) {
for (OpsInspectionNodeBo nodeBo : bo) {
OpsInspectionNode update = MapstructUtils.convert(nodeBo, OpsInspectionNode.class);
validEntityBeforeSave(update);
baseMapper.updateById(update);
}
return true;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(OpsInspectionNode entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除运维-巡检-通用节点信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -0,0 +1,395 @@
package org.dromara.inspection.service.impl;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.domain.R;
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 lombok.extern.slf4j.Slf4j;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.inspection.domain.OpsInspectionNode;
import org.dromara.inspection.domain.bo.OpsInspectionRepairBo;
import org.dromara.inspection.domain.vo.*;
import org.dromara.inspection.mapper.OpsInspectionNodeMapper;
import org.dromara.personnel.domain.vo.OpsUserVo;
import org.dromara.personnel.mapper.OpsUserMapper;
import org.dromara.resource.api.RemoteFileService;
import org.dromara.system.api.RemoteUserService;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.dromara.inspection.domain.bo.OpsInspectionOrderBo;
import org.dromara.inspection.domain.OpsInspectionOrder;
import org.dromara.inspection.mapper.OpsInspectionOrderMapper;
import org.dromara.inspection.service.IOpsInspectionOrderService;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
import java.util.concurrent.TimeUnit;
/**
* 运维-巡检-工单Service业务层处理
*
* @author LionLi
* @date 2025-09-23
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class OpsInspectionOrderServiceImpl implements IOpsInspectionOrderService {
private final OpsInspectionOrderMapper baseMapper;
private final OpsInspectionNodeMapper nodeMapper;
@DubboReference
private RemoteFileService remoteFileService;
@DubboReference
private RemoteUserService remoteUserService;
/**
* 查询运维-巡检-工单
*
* @param id 主键
* @return 运维-巡检-工单
*/
@Override
public OpsInspectionOrderVo queryById(Long id){
OpsInspectionOrderVo opsInspectionOrderVo = baseMapper.selectVoById(id);
List<OpsInspectionOrderVo> opsInspectionOrderVo1 = List.of(opsInspectionOrderVo);
setValue(opsInspectionOrderVo1);
return opsInspectionOrderVo1.getFirst();
}
/**
* 分页查询运维-巡检-工单列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 运维-巡检-工单分页列表
*/
@Override
public TableDataInfo<OpsInspectionOrderVo> queryPageList(OpsInspectionOrderBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<OpsInspectionOrder> lqw = buildQueryWrapper(bo);
Page<OpsInspectionOrderVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
setValue(result.getRecords());
return TableDataInfo.build(result);
}
/**
* 查询符合条件的运维-巡检-工单列表
*
* @param bo 查询条件
* @return 运维-巡检-工单列表
*/
@Override
public List<OpsInspectionOrderVo> queryList(OpsInspectionOrderBo bo) {
LambdaQueryWrapper<OpsInspectionOrder> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<OpsInspectionOrder> buildQueryWrapper(OpsInspectionOrderBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<OpsInspectionOrder> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(OpsInspectionOrder::getId);
lqw.eq(bo.getProjectId() != null, OpsInspectionOrder::getProjectId, bo.getProjectId());
lqw.eq(StringUtils.isNotBlank(bo.getType()), OpsInspectionOrder::getType, bo.getType());
lqw.eq(StringUtils.isNotBlank(bo.getLevel()), OpsInspectionOrder::getLevel, bo.getLevel());
lqw.eq(StringUtils.isNotBlank(bo.getPoint()), OpsInspectionOrder::getPoint, bo.getPoint());
lqw.eq(bo.getCreateTime() != null, OpsInspectionOrder::getCreateTime, bo.getCreateTime());
return lqw;
}
/**
* 新增运维-巡检-工单
*
* @param bo 运维-巡检-工单
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(OpsInspectionOrderBo bo) {
OpsInspectionOrder add = MapstructUtils.convert(bo, OpsInspectionOrder.class);
validEntityBeforeSave(add);
if (add.getFileId() != null){
String[] split = add.getFileId().split(",");
List<String> urls = new ArrayList<>();
for (String s : split) {
String ossUrl = remoteFileService.selectUrlByIds(s);
if (ossUrl != null){
urls.add(ossUrl);
}
}
String join = String.join(",", urls);
add.setFileUrl(join);
bo.setFileUrl(join);
}
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改运维-巡检-工单
*
* @param bo 运维-巡检-工单
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(OpsInspectionOrderBo bo) {
OpsInspectionOrder update = MapstructUtils.convert(bo, OpsInspectionOrder.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(OpsInspectionOrder entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除运维-巡检-工单信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
List<String> urls = new ArrayList<>();
List<Long> nodeIds = new ArrayList<>();
for (Long id : ids) {
OpsInspectionOrderVo vo = queryById(id);
if (vo != null){
if (vo.getFileUrl()!=null) {
urls.add(vo.getFileUrl());
}
for (String nodeId : List.of(vo.getNodeIds().split(","))) {
nodeIds.add(Long.valueOf(nodeId));
}
}
}
if (!urls.isEmpty()) {
for (String url : urls) {
List<String> list = Arrays.asList(url.split(","));
remoteFileService.deleteFile(list);
}
}
//同时删除节点
if (!nodeIds.isEmpty()) {
nodeMapper.deleteByIds(nodeIds);
}
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 处理回显数据
*/
private void setValue(List<OpsInspectionOrderVo> list){
LambdaQueryWrapper<OpsInspectionNode> nodeWrapper = new LambdaQueryWrapper<>();
for (OpsInspectionOrderVo vo : list) {
List<String> split = Arrays.stream(vo.getNodeIds().split(",")).toList();
nodeWrapper.clear();
nodeWrapper.in(OpsInspectionNode::getId, split);
List<OpsInspectionNodeVo> nodeVoList = nodeMapper.selectVoList(nodeWrapper);
//处理进度百分比 完成节点 / 总节点 * 100
if (nodeVoList != null && !nodeVoList.isEmpty()){
//统计完成节点
int finishCount = nodeVoList.stream().filter(nodeVo -> nodeVo.getStatus().equals("1")).toList().size();
if (finishCount == nodeVoList.size()){
vo.setProgress(new BigDecimal("100"));
}else {
vo.setProgress(BigDecimal.valueOf(finishCount).divide(BigDecimal.valueOf(nodeVoList.size()), 2, RoundingMode.DOWN).multiply(BigDecimal.valueOf(100.00)));
}
}
//处理派单人
List<RemoteUserVo> remoteUserVos = remoteUserService.selectListByIds(List.of(vo.getCreateBy()));
if (remoteUserVos != null && !remoteUserVos.isEmpty()){
vo.setSendOrderPersonVo(remoteUserVos.getFirst());
}
//处理接单人
if (vo.getGetOrderPerson() != null){
remoteUserVos = remoteUserService.selectListByIds(Collections.singletonList(vo.getGetOrderPerson()));
if (remoteUserVos != null && !remoteUserVos.isEmpty()){
vo.setGetOrderPersonVo(remoteUserVos.getFirst());
}
}
//处理节点列表
if (vo.getNodeIds() != null && !vo.getNodeIds().isEmpty()){
String[] ids = vo.getNodeIds().split(",");
List<OpsInspectionNodeVo> nodeVos = new ArrayList<>();
for (String id : ids) {
OpsInspectionNodeVo nodeVo = nodeMapper.selectVoById(id);
if (nodeVo != null) {
nodeVos.add(nodeVo);
}
}
vo.setNodes(nodeVos);
}
}
}
/**
* 获取纪录
*/
public R<OrderRecordVo> record(Long projectId){
//变量初始化
OrderRecordVo recordVo = new OrderRecordVo();
OpsInspectionOrderBo bo = new OpsInspectionOrderBo();
bo.setProjectId(projectId);
//日期初始化
Date startDate = Date.from(LocalDate.now().withDayOfMonth(1).atStartOfDay(ZoneId.systemDefault()).toInstant());
Date endDate = Date.from(LocalDate.now().withDayOfMonth(1).plusMonths(1).minusDays(1).atTime(23, 59, 59).atZone(ZoneId.systemDefault()).toInstant());
//查询当前项目的数据
List<OpsInspectionOrderVo> vos = queryList(bo);
//过滤本月数据
List<OpsInspectionOrderVo> thisMonth = vos.stream()
.filter(vo -> vo.getCreateTime().after(startDate))
.filter(vo -> vo.getCreateTime().before(endDate))
.toList();
//本月派单总数
BigDecimal bypdzs = BigDecimal.valueOf(thisMonth.size());
//统计平均响应时间
Long zgxysj = 0L;//总共响应时间
for (OpsInspectionOrderVo orderVo : thisMonth) {
if (orderVo.getGetOrderTime() != null) {
zgxysj += orderVo.getGetOrderTime().getTime() - orderVo.getCreateTime().getTime();
}
}
//平均响应时间
BigDecimal avg = BigDecimal.valueOf(TimeUnit.MILLISECONDS.toMinutes(zgxysj));
//统计待接收工单
int waiting = thisMonth.stream().filter(vo -> vo.getStatus().equals("2")).toList().size();
//待接单数
BigDecimal djds = BigDecimal.valueOf(waiting);
//按时完成率 找到完成的工单 获取工单完成时间
//获取所有完成数
int sywcs = thisMonth.stream()
.filter(vo -> vo.getStatus().equals("4"))
.toList().size();
//获取按时完成数
int aswcs = thisMonth.stream()
.filter(vo -> vo.getStatus().equals("4"))
.filter(vo -> vo.getFinishiOrderTime().before(endDate))
.toList().size();
//按时完成率
BigDecimal aswcl;
if (sywcs > 0) {
aswcl = BigDecimal.valueOf(aswcs).divide(BigDecimal.valueOf(sywcs), 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100.00));
}else {
aswcl = BigDecimal.valueOf(0);
}
recordVo.setBypds(String.valueOf(bypdzs));
recordVo.setPjxysj(String.valueOf(avg));
recordVo.setDjsgd(String.valueOf(djds));
recordVo.setAswcl(String.valueOf(aswcl));
//获取上月数据列表
Date finalStartDate = Date.from(LocalDate.now().minusMonths(1).withDayOfMonth(1).atStartOfDay(ZoneId.systemDefault()).toInstant());
Date finalEndDate = Date.from(LocalDate.now().minusMonths(1).withDayOfMonth(1).plusMonths(1).minusDays(1).atTime(23, 59, 59).atZone(ZoneId.systemDefault()).toInstant());
thisMonth = vos.stream()
.filter(vo -> vo.getCreateTime().after(finalStartDate))
.filter(vo -> vo.getCreateTime().before(finalEndDate))
.toList();
//上月派单总数
BigDecimal sypdzs = BigDecimal.valueOf(thisMonth.size());
//统计上月平均响应时间
zgxysj = 0L;//总共响应时间
for (OpsInspectionOrderVo orderVo : thisMonth) {
if (orderVo.getGetOrderTime() != null) {
zgxysj += orderVo.getGetOrderTime().getTime() - orderVo.getCreateTime().getTime();
}
}
//上月平均响应时间
BigDecimal syavg = BigDecimal.valueOf(TimeUnit.MILLISECONDS.toMinutes(zgxysj));
//获取上月所有完成数
int sysywcs = thisMonth.stream()
.filter(vo -> vo.getStatus().equals("4"))
.toList().size();
//获取上月按时完成数
int syaswcs = thisMonth.stream()
.filter(vo -> vo.getStatus().equals("4"))
.filter(vo -> vo.getFinishiOrderTime().before(finalEndDate))
.toList().size();
//上月按时完成率
BigDecimal syaswcl;
if (sywcs > 0) {
syaswcl = BigDecimal.valueOf(syaswcs).divide(BigDecimal.valueOf(sysywcs), 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100.00));
}else {
syaswcl = BigDecimal.valueOf(0);
}
//本月完成 / 上月完成 * 100 = 增长率
BigDecimal wczzl;
if (syaswcl.compareTo(BigDecimal.ZERO) > 0) {
wczzl = BigDecimal.valueOf(Double.parseDouble(recordVo.getAswcl())).divide(syaswcl, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100"));
}else {
wczzl = BigDecimal.valueOf(0);
}
//上月完成率增长率
recordVo.setWczzl(wczzl.toString());
//派单增长率
BigDecimal pdzzl;
if (sypdzs.compareTo(BigDecimal.ZERO) > 0) {
pdzzl = BigDecimal.valueOf(Double.parseDouble(recordVo.getBypds())).divide(sypdzs, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100"));
}else {
pdzzl = BigDecimal.valueOf(0);
}
recordVo.setPdzzl(pdzzl.toString());
//响应时间增长率
BigDecimal xysjzzl;
if (BigDecimal.valueOf(Double.parseDouble(recordVo.getPjxysj())).compareTo(BigDecimal.ZERO) > 0){
xysjzzl = syavg.divide(BigDecimal.valueOf(Double.parseDouble(recordVo.getPjxysj())), 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100"));
}else {
xysjzzl = BigDecimal.ZERO;
}
recordVo.setXysjzzl(xysjzzl.toString());
return R.ok(recordVo);
}
}

Some files were not shown because too many files have changed in this diff Show More