Compare commits
	
		
			33 Commits
		
	
	
		
			master
			...
			49a31edad2
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 49a31edad2 | |||
| 5d0a83cf1c | |||
| bd5108bb7e | |||
| 40dc44374b | |||
| f6e18851de | |||
| 25188a80de | |||
| 2033a7d3c6 | |||
| 77095ac5a2 | |||
| 4b37434057 | |||
| 4a810f3aef | |||
| 56f6c9a446 | |||
| b26cdfa495 | |||
| 9add81d728 | |||
| 052c5c8ea0 | |||
| 8cf7b0125d | |||
| 700e8564ce | |||
| bcc1a5c6d1 | |||
| 28ecf71e0c | |||
| a655f14188 | |||
| c17c53fd95 | |||
| 959030fdb1 | |||
| 772b610bec | |||
| 1e16cfd54e | |||
| f83c10a9ca | |||
| e0c6ab1bfb | |||
| 1404911f53 | |||
| c6a63ade7f | |||
| c975ef553a | |||
| 94e62580c3 | |||
| bc2d41ca89 | |||
| ad55550d9f | |||
| 599df010ea | |||
| 36ee19b6e9 | 
							
								
								
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							| @ -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> | ||||||
|  | |||||||
| @ -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); | ||||||
| } | } | ||||||
|  | |||||||
| @ -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("服务调用异常 -> 降级处理"); | ||||||
|  |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -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); | ||||||
| } | } | ||||||
|  | |||||||
| @ -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); | ||||||
| } | } | ||||||
|  | |||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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 | ||||||
|  |         ); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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(); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  | //    } | ||||||
|  | // | ||||||
|  | //} | ||||||
| @ -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; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  | //    } | ||||||
|  | // | ||||||
|  | //} | ||||||
| @ -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>--> | ||||||
|  | |||||||
| @ -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> | ||||||
|  | |||||||
| @ -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 | ||||||
|  | |||||||
| @ -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>--> | ||||||
|  | |||||||
| @ -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>--> | ||||||
|  | |||||||
| @ -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); | ||||||
|  | |||||||
| @ -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); | ||||||
|  |         } | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -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); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -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); | ||||||
|  |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										27
									
								
								ruoyi-modules/xny-ops/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								ruoyi-modules/xny-ops/Dockerfile
									
									
									
									
									
										Normal 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 | ||||||
|  |  | ||||||
							
								
								
									
										117
									
								
								ruoyi-modules/xny-ops/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								ruoyi-modules/xny-ops/pom.xml
									
									
									
									
									
										Normal 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> | ||||||
| @ -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("(♥◠‿◠)ノ゙  运维模块启动成功   ლ(´ڡ`ლ)゙  "); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -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)); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -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)); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -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)); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -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)); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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)); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -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)); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  | } | ||||||
| @ -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); | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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
		Reference in New Issue
	
	Block a user