Compare commits
19 Commits
master
...
8cf7b0125d
| Author | SHA1 | Date | |
|---|---|---|---|
| 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>
|
||||
<!-- 环境标识,需要与配置文件的名称相对应 -->
|
||||
<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.config.group>DEFAULT_GROUP</nacos.config.group>
|
||||
<nacos.username>nacos</nacos.username>
|
||||
|
||||
@ -3,6 +3,7 @@ package org.dromara.resource.api;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.resource.api.domain.RemoteFile;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -35,4 +36,7 @@ public interface RemoteFileService {
|
||||
* @return 列表
|
||||
*/
|
||||
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.resource.api.domain.RemoteFile;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -50,4 +51,9 @@ public class RemoteFileServiceMock implements RemoteFileService {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteFile(Collection<String> urls){
|
||||
log.warn("服务调用异常 -> 降级处理");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,5 +1,10 @@
|
||||
package org.dromara.system.api;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import org.dromara.system.api.domain.vo.RemoteProjectVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lilemy
|
||||
* @date 2025-09-10 16:15
|
||||
@ -14,4 +19,19 @@ public interface RemoteProjectService {
|
||||
*/
|
||||
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);
|
||||
|
||||
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>-->
|
||||
<!-- <groupId>org.dromara</groupId>-->
|
||||
<!-- <artifactId>ruoyi-common-loadbalancer</artifactId>-->
|
||||
<!-- </dependency>-->
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-loadbalancer</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- ELK 日志收集 -->
|
||||
<!-- <dependency>-->
|
||||
|
||||
@ -58,18 +58,19 @@
|
||||
|
||||
<dependency>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-core</artifactId>
|
||||
<artifactId>hutool-all</artifactId>
|
||||
<version>5.8.38</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-http</artifactId>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>cn.hutool</groupId>-->
|
||||
<!-- <artifactId>hutool-http</artifactId>-->
|
||||
<!-- </dependency>-->
|
||||
|
||||
<dependency>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-extra</artifactId>
|
||||
</dependency>
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>cn.hutool</groupId>-->
|
||||
<!-- <artifactId>hutool-extra</artifactId>-->
|
||||
<!-- </dependency>-->
|
||||
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
|
||||
@ -89,10 +89,10 @@
|
||||
</dependency>
|
||||
|
||||
<!-- 自定义负载均衡(多团队开发使用) -->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.dromara</groupId>-->
|
||||
<!-- <artifactId>ruoyi-common-loadbalancer</artifactId>-->
|
||||
<!-- </dependency>-->
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-loadbalancer</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- ELK 日志收集 -->
|
||||
<!-- <dependency>-->
|
||||
|
||||
@ -15,6 +15,7 @@
|
||||
<module>ruoyi-resource</module>
|
||||
<module>ruoyi-workflow</module>
|
||||
<module>ruoyi-synjinlangyun</module>
|
||||
<module>xny-ops</module>
|
||||
</modules>
|
||||
|
||||
<artifactId>ruoyi-modules</artifactId>
|
||||
@ -26,10 +27,10 @@
|
||||
|
||||
<dependencies>
|
||||
<!-- 自定义负载均衡(多团队开发使用) -->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.dromara</groupId>-->
|
||||
<!-- <artifactId>ruoyi-common-loadbalancer</artifactId>-->
|
||||
<!-- </dependency>-->
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-loadbalancer</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- ELK 日志收集 -->
|
||||
<!-- <dependency>-->
|
||||
|
||||
@ -195,7 +195,7 @@ public class GenController extends BaseController {
|
||||
*/
|
||||
private void genCode(HttpServletResponse response, byte[] data) throws IOException {
|
||||
response.reset();
|
||||
response.addHeader("Access-Control-Allow-Origin", "*");
|
||||
// response.addHeader("Access-Control-Allow-Origin", "*");
|
||||
response.addHeader("Access-Control-Expose-Headers", "Content-Disposition");
|
||||
response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\"");
|
||||
response.addHeader("Content-Length", "" + data.length);
|
||||
|
||||
@ -18,6 +18,7 @@ import org.dromara.resource.service.ISysOssService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -86,4 +87,13 @@ public class RemoteFileServiceImpl implements RemoteFileService {
|
||||
List<SysOssVo> sysOssVos = sysOssService.listByIds(StringUtils.splitTo(ossIds, Convert::toLong));
|
||||
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;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
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.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.IBusUserProjectRelevancyService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author lilemy
|
||||
* @date 2025-09-11 18:33
|
||||
@ -27,4 +39,22 @@ public class RemoteProjectServiceImpl implements RemoteProjectService {
|
||||
public String selectProjectNameById(Long 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));
|
||||
}
|
||||
|
||||
@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,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 toAjax(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.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 toAjax(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,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 Long 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,92 @@
|
||||
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;
|
||||
|
||||
/**
|
||||
* 进度
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private BigDecimal taskProgress;
|
||||
|
||||
/**
|
||||
* 状态 1待执行2已延期3执行中4已完成
|
||||
*/
|
||||
private String taskType;
|
||||
|
||||
/**
|
||||
* 发现问题种类,1磁盘使用率2内存使用率3服务状态4响应时间5设备运行状态
|
||||
*/
|
||||
private String problemType;
|
||||
|
||||
/**
|
||||
* 完成时间
|
||||
*/
|
||||
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,147 @@
|
||||
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;
|
||||
|
||||
/**
|
||||
* 状态,1待执行2暂停3失败4执行中5已完成
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 关联测试计划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,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 Long 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,100 @@
|
||||
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;
|
||||
|
||||
|
||||
/**
|
||||
* 进度
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private BigDecimal taskProgress;
|
||||
|
||||
/**
|
||||
* 状态 1待执行2已延期3执行中4已完成
|
||||
*/
|
||||
@NotNull(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String taskType;
|
||||
|
||||
/**
|
||||
* 发现问题种类,1磁盘使用率2内存使用率3服务状态4响应时间5设备运行状态
|
||||
*/
|
||||
private String problemType;
|
||||
|
||||
/**
|
||||
* 完成时间
|
||||
*/
|
||||
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,154 @@
|
||||
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;
|
||||
|
||||
/**
|
||||
* 状态,1待执行2暂停3失败4执行中5已完成
|
||||
*/
|
||||
@NotBlank(message = "状态,1待执行2暂停3失败4执行中5已完成不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 关联测试计划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,121 @@
|
||||
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 Long 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;
|
||||
|
||||
/**
|
||||
* 1启用2停用
|
||||
*/
|
||||
@ExcelProperty(value = "1启用2停用")
|
||||
private String status;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
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 BigDecimal solveEfficiency;
|
||||
|
||||
/**
|
||||
* 磁盘使用率类型问题数量
|
||||
*/
|
||||
private Long cpsyl;
|
||||
|
||||
/**
|
||||
* 内存使用率类型问题数量
|
||||
*/
|
||||
private Long ncsyl;
|
||||
|
||||
/**
|
||||
* 服务状态类型问题数量
|
||||
*/
|
||||
private Long fwzt;
|
||||
|
||||
/**
|
||||
* 响应时间类型问题数量
|
||||
*/
|
||||
private Long xysj;
|
||||
|
||||
/**
|
||||
* 设备运行状态类型问题数量
|
||||
*/
|
||||
private Long sbyxzt;
|
||||
|
||||
}
|
||||
@ -0,0 +1,141 @@
|
||||
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 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 OpsUserVo 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;
|
||||
|
||||
}
|
||||
@ -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,119 @@
|
||||
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 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 OpsUserVo 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;
|
||||
|
||||
}
|
||||
@ -0,0 +1,110 @@
|
||||
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 java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 运维-巡检计划-任务视图对象 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 OpsUserVo person;
|
||||
|
||||
/**
|
||||
* 进度
|
||||
*/
|
||||
private BigDecimal taskProgress;
|
||||
|
||||
/**
|
||||
* 状态 1待执行2已延期3执行中4已完成
|
||||
*/
|
||||
private String taskType;
|
||||
|
||||
/**
|
||||
* 发现问题种类,1磁盘使用率2内存使用率3服务状态4响应时间5设备运行状态
|
||||
*/
|
||||
private String problemType;
|
||||
|
||||
private Date finishTime;
|
||||
|
||||
private Date createTime;
|
||||
|
||||
}
|
||||
@ -0,0 +1,141 @@
|
||||
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 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 OpsUserVo person;
|
||||
|
||||
/**
|
||||
* 参与人员IDS
|
||||
*/
|
||||
@ExcelProperty(value = "参与人员IDS")
|
||||
private String personIds;
|
||||
|
||||
private List<OpsUserVo> 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 Long finishCount;
|
||||
|
||||
/**
|
||||
* 上月增加数
|
||||
*/
|
||||
private BigDecimal finishCountAdd;
|
||||
|
||||
/**
|
||||
* 本月通过率
|
||||
*/
|
||||
private BigDecimal passValue;
|
||||
|
||||
/**
|
||||
* 通过增长率
|
||||
*/
|
||||
private BigDecimal passValueAdd;
|
||||
|
||||
/**
|
||||
* 待分析数
|
||||
*/
|
||||
private Long failCount;
|
||||
|
||||
/**
|
||||
* 平均测试时间
|
||||
*/
|
||||
private Long averageTestTime;
|
||||
|
||||
/**
|
||||
* 平均测试时间数增长率
|
||||
*/
|
||||
private BigDecimal averageTestTimeAdd;
|
||||
|
||||
}
|
||||
@ -0,0 +1,181 @@
|
||||
package org.dromara.inspection.domain.vo;
|
||||
|
||||
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 java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 运维-巡检-试验任务视图对象 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 OpsUserVo personInfo;
|
||||
|
||||
/**
|
||||
* 状态,1待执行2暂停3失败4执行中5已完成
|
||||
*/
|
||||
@ExcelProperty(value = "状态,1待执行2暂停3失败4执行中5已完成")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 关联测试计划ID
|
||||
*/
|
||||
@ExcelProperty(value = "关联测试计划ID")
|
||||
private Long testPlanId;
|
||||
|
||||
private OpsInspectionTestPlanVo testPlan;
|
||||
|
||||
/**
|
||||
* 试验环境
|
||||
*/
|
||||
@ExcelProperty(value = "试验环境")
|
||||
private String testSetting;
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
*/
|
||||
@ExcelProperty(value = "开始时间")
|
||||
private Date planBeginTime;
|
||||
|
||||
/**
|
||||
* 进度
|
||||
*/
|
||||
@ExcelProperty(value = "进度")
|
||||
private Long 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;
|
||||
|
||||
}
|
||||
@ -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.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.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.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.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 是否修改成功
|
||||
*/
|
||||
Boolean 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,69 @@
|
||||
package org.dromara.inspection.service;
|
||||
|
||||
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 是否修改成功
|
||||
*/
|
||||
Boolean 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,167 @@
|
||||
package org.dromara.inspection.service.impl;
|
||||
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
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.personnel.domain.OpsUser;
|
||||
import org.dromara.personnel.service.impl.OpsUserServiceImpl;
|
||||
import org.dromara.system.api.RemoteUserService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.inspection.domain.bo.OpsInspectionPlanBo;
|
||||
import org.dromara.inspection.domain.vo.OpsInspectionPlanVo;
|
||||
import org.dromara.inspection.domain.OpsInspectionPlan;
|
||||
import org.dromara.inspection.mapper.OpsInspectionPlanMapper;
|
||||
import org.dromara.inspection.service.IOpsInspectionPlanService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 运维-巡检-计划Service业务层处理
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-19
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class OpsInspectionPlanServiceImpl implements IOpsInspectionPlanService {
|
||||
|
||||
@DubboReference
|
||||
private RemoteUserService remoteUserService;
|
||||
@Autowired
|
||||
private OpsUserServiceImpl opsUserService;
|
||||
|
||||
private final OpsInspectionPlanMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询运维-巡检-计划
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 运维-巡检-计划
|
||||
*/
|
||||
@Override
|
||||
public OpsInspectionPlanVo queryById(Long id){
|
||||
OpsInspectionPlanVo opsInspectionPlanVo = baseMapper.selectVoById(id);
|
||||
if (opsInspectionPlanVo == null){
|
||||
return null;
|
||||
}
|
||||
List<OpsInspectionPlanVo> opsInspectionPlanVo1 = List.of(opsInspectionPlanVo);
|
||||
setValue(opsInspectionPlanVo1);
|
||||
return opsInspectionPlanVo1.getFirst();
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询运维-巡检-计划列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 运维-巡检-计划分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<OpsInspectionPlanVo> queryPageList(OpsInspectionPlanBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<OpsInspectionPlan> lqw = buildQueryWrapper(bo);
|
||||
Page<OpsInspectionPlanVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
setValue(result.getRecords());
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的运维-巡检-计划列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 运维-巡检-计划列表
|
||||
*/
|
||||
@Override
|
||||
public List<OpsInspectionPlanVo> queryList(OpsInspectionPlanBo bo) {
|
||||
LambdaQueryWrapper<OpsInspectionPlan> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<OpsInspectionPlan> buildQueryWrapper(OpsInspectionPlanBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<OpsInspectionPlan> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByAsc(OpsInspectionPlan::getId);
|
||||
lqw.eq(bo.getProjectId() != null, OpsInspectionPlan::getProjectId, bo.getProjectId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getPlanType()), OpsInspectionPlan::getPlanType, bo.getPlanType());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getObjectType()), OpsInspectionPlan::getObjectType, bo.getObjectType());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), OpsInspectionPlan::getStatus, bo.getStatus());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增运维-巡检-计划
|
||||
*
|
||||
* @param bo 运维-巡检-计划
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(OpsInspectionPlanBo bo) {
|
||||
OpsInspectionPlan add = MapstructUtils.convert(bo, OpsInspectionPlan.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改运维-巡检-计划
|
||||
*
|
||||
* @param bo 运维-巡检-计划
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(OpsInspectionPlanBo bo) {
|
||||
OpsInspectionPlan update = MapstructUtils.convert(bo, OpsInspectionPlan.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(OpsInspectionPlan entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除运维-巡检-计划信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 回显信息赋值
|
||||
*/
|
||||
private void setValue(List<OpsInspectionPlanVo> list){
|
||||
list.forEach(record -> {
|
||||
OpsUser byId = opsUserService.getById(record.getPerson());
|
||||
if (byId != null){
|
||||
record.setNickName(byId.getUserName());
|
||||
}else{
|
||||
record.setNickName("未知用户");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,331 @@
|
||||
package org.dromara.inspection.service.impl;
|
||||
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.apache.seata.spring.annotation.GlobalTransactional;
|
||||
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.inspection.domain.bo.OpsInspectionReportBo;
|
||||
import org.dromara.inspection.domain.vo.OpsInspectionReportRecordVo;
|
||||
import org.dromara.inspection.domain.vo.OpsInspectionReportVo;
|
||||
import org.dromara.inspection.service.IOpsInspectionRepairService;
|
||||
import org.dromara.personnel.domain.vo.OpsUserVo;
|
||||
import org.dromara.personnel.service.impl.OpsUserServiceImpl;
|
||||
import org.dromara.resource.api.RemoteFileService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.inspection.domain.bo.OpsInspectionRepairBo;
|
||||
import org.dromara.inspection.domain.vo.OpsInspectionRepairVo;
|
||||
import org.dromara.inspection.domain.OpsInspectionRepair;
|
||||
import org.dromara.inspection.mapper.OpsInspectionRepairMapper;
|
||||
|
||||
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-22
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class OpsInspectionRepairServiceImpl implements IOpsInspectionRepairService {
|
||||
|
||||
private final OpsInspectionRepairMapper baseMapper;
|
||||
|
||||
@DubboReference
|
||||
private RemoteFileService remoteFileService;
|
||||
@Autowired
|
||||
private OpsUserServiceImpl opsUserService;
|
||||
|
||||
/**
|
||||
* 查询运维-巡检-抢修
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 运维-巡检-抢修
|
||||
*/
|
||||
@Override
|
||||
public OpsInspectionRepairVo queryById(Long id){
|
||||
OpsInspectionRepairVo vo = baseMapper.selectVoById(id);
|
||||
List<OpsInspectionRepairVo> vo1 = List.of(vo);
|
||||
setValue(vo1);
|
||||
return vo1.getFirst();
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询运维-巡检-抢修列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 运维-巡检-抢修分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<OpsInspectionRepairVo> queryPageList(OpsInspectionRepairBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<OpsInspectionRepair> lqw = buildQueryWrapper(bo);
|
||||
Page<OpsInspectionRepairVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
setValue(result.getRecords());
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的运维-巡检-抢修列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 运维-巡检-抢修列表
|
||||
*/
|
||||
@Override
|
||||
public List<OpsInspectionRepairVo> queryList(OpsInspectionRepairBo bo) {
|
||||
LambdaQueryWrapper<OpsInspectionRepair> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<OpsInspectionRepair> buildQueryWrapper(OpsInspectionRepairBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<OpsInspectionRepair> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByAsc(OpsInspectionRepair::getId);
|
||||
lqw.eq(bo.getProjectId() != null, OpsInspectionRepair::getProjectId, bo.getProjectId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getLevel()), OpsInspectionRepair::getLevel, bo.getLevel());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), OpsInspectionRepair::getStatus, bo.getStatus());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getType()), OpsInspectionRepair::getType, bo.getType());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增运维-巡检-抢修
|
||||
*
|
||||
* @param bo 运维-巡检-抢修
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(OpsInspectionRepairBo bo) {
|
||||
OpsInspectionRepair add = MapstructUtils.convert(bo, OpsInspectionRepair.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(OpsInspectionRepairBo bo) {
|
||||
OpsInspectionRepair update = MapstructUtils.convert(bo, OpsInspectionRepair.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(OpsInspectionRepair entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除运维-巡检-抢修信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
@GlobalTransactional
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
|
||||
List<String> urls = new ArrayList<>();
|
||||
for (Long id : ids) {
|
||||
OpsInspectionRepairVo vo = queryById(id);
|
||||
if (vo != null){
|
||||
if (vo.getFileUrl()!=null) {
|
||||
urls.add(vo.getFileUrl());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!urls.isEmpty()) {
|
||||
for (String url : urls) {
|
||||
List<String> list = Arrays.asList(url.split(","));
|
||||
remoteFileService.deleteFile(list);
|
||||
}
|
||||
}
|
||||
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理回显数据
|
||||
*/
|
||||
private void setValue(List<OpsInspectionRepairVo> list){
|
||||
if (list == null || list.isEmpty()){
|
||||
return;
|
||||
}
|
||||
|
||||
for (OpsInspectionRepairVo vo : list) {
|
||||
|
||||
if (vo.getSendPerson() == null){
|
||||
continue;
|
||||
}
|
||||
|
||||
OpsUserVo opsUserVo = opsUserService.queryById(vo.getSendPerson());
|
||||
if (opsUserVo == null){
|
||||
continue;
|
||||
}
|
||||
|
||||
vo.setSendPersonVo(opsUserVo);
|
||||
|
||||
|
||||
//处理分钟数
|
||||
if (vo.getStatus().equals("3")){
|
||||
long time = vo.getReportFinishTime().getTime() - vo.getCreateTime().getTime();
|
||||
vo.setMinute(String.valueOf(TimeUnit.MILLISECONDS.toMinutes( time)));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public R<OpsInspectionReportRecordVo> record(Long projectId) {
|
||||
//变量初始化
|
||||
OpsInspectionReportRecordVo recordVo = new OpsInspectionReportRecordVo();
|
||||
OpsInspectionRepairBo bo = new OpsInspectionRepairBo();
|
||||
bo.setProjectId(projectId);
|
||||
//日期初始化
|
||||
LocalDate firstDay = LocalDate.now().withDayOfMonth(1);
|
||||
LocalDate lastDay = firstDay.plusMonths(1).minusDays(1);
|
||||
Date startDate = Date.from(firstDay.atStartOfDay(ZoneId.systemDefault()).toInstant());
|
||||
Date endDate = Date.from(lastDay.atTime(23, 59, 59).atZone(ZoneId.systemDefault()).toInstant());
|
||||
//查询当前项目的报修数据
|
||||
List<OpsInspectionRepairVo> vos = queryList(bo);
|
||||
|
||||
//过滤本月数据
|
||||
List<OpsInspectionRepairVo> thisMonth = vos.stream()
|
||||
.filter(vo -> vo.getCreateTime().after(startDate))
|
||||
.filter(vo -> vo.getCreateTime().before(endDate))
|
||||
.toList();
|
||||
//本月总报修数
|
||||
recordVo.setByzbxs(String.valueOf(thisMonth.size()));
|
||||
|
||||
//平均处理时长 完成时间-创建时间 转为 分钟 / 总报
|
||||
Long time = 0L;//总共完成时间
|
||||
for (OpsInspectionRepairVo vo : thisMonth) {
|
||||
if (vo.getStatus().equals("3")){
|
||||
time += vo.getReportFinishTime().getTime() - vo.getCreateTime().getTime();
|
||||
}
|
||||
}
|
||||
time = TimeUnit.MILLISECONDS.toMinutes(time);
|
||||
BigDecimal divide1 = BigDecimal.valueOf(time).divide(BigDecimal.valueOf(thisMonth.size()), 0, RoundingMode.HALF_UP);
|
||||
long hours = TimeUnit.MINUTES.toHours(Long.parseLong(divide1.toString()));
|
||||
|
||||
//平均处理时长
|
||||
recordVo.setPjclsc(Long.toString(hours));
|
||||
|
||||
//待处理报修
|
||||
int size = thisMonth.stream().filter(vo -> vo.getStatus().equals("1")).toList().size();
|
||||
recordVo.setDclbx(String.valueOf(size));
|
||||
|
||||
//完成率
|
||||
//完成数
|
||||
int finishCount = thisMonth.stream().filter(vo -> vo.getStatus().equals("3")).toList().size();
|
||||
BigDecimal divide = BigDecimal.valueOf(finishCount).divide(BigDecimal.valueOf(thisMonth.size()), 2, RoundingMode.HALF_UP);
|
||||
recordVo.setWcl(divide.multiply(new BigDecimal("100")).toString());
|
||||
|
||||
//统计上一月的数据
|
||||
firstDay = LocalDate.now().minusMonths(1).withDayOfMonth(1);
|
||||
lastDay = firstDay.plusMonths(1).minusDays(1);
|
||||
Date finalStartDate = Date.from(firstDay.atStartOfDay(ZoneId.systemDefault()).toInstant());
|
||||
Date finalEndDate = Date.from(lastDay.atTime(23, 59, 59).atZone(ZoneId.systemDefault()).toInstant());
|
||||
|
||||
|
||||
thisMonth = vos.stream()
|
||||
.filter(vo -> vo.getCreateTime().after(finalStartDate))
|
||||
.filter(vo -> vo.getCreateTime().before(finalEndDate))
|
||||
.toList();
|
||||
|
||||
//上一月总报修数
|
||||
Long lastMonth = (long) thisMonth.size();
|
||||
//上一月平均处理时长
|
||||
BigDecimal avg;
|
||||
time = 0L;
|
||||
for (OpsInspectionRepairVo vo : thisMonth) {
|
||||
if (vo.getStatus().equals("3")){
|
||||
time += vo.getReportFinishTime().getTime() - vo.getCreateTime().getTime();
|
||||
}
|
||||
}
|
||||
time = TimeUnit.MILLISECONDS.toMinutes(time);
|
||||
|
||||
if (thisMonth.isEmpty()){
|
||||
avg = BigDecimal.ZERO;
|
||||
}else {
|
||||
avg = BigDecimal.valueOf(time).divide(BigDecimal.valueOf(thisMonth.size()),2, RoundingMode.HALF_UP);
|
||||
}
|
||||
//上一月完成率
|
||||
finishCount = thisMonth.stream().filter(vo -> vo.getStatus().equals("3")).toList().size();
|
||||
|
||||
if (!thisMonth.isEmpty()) {
|
||||
divide = BigDecimal.valueOf(finishCount).divide(BigDecimal.valueOf(thisMonth.size()), 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
|
||||
}else {
|
||||
divide = BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
//总报修数增长率
|
||||
BigDecimal multiply;
|
||||
if (lastMonth != 0) {
|
||||
multiply = BigDecimal.valueOf(Long.parseLong(recordVo.getByzbxs())).divide(BigDecimal.valueOf(lastMonth), 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100"));
|
||||
}else {
|
||||
multiply = BigDecimal.ZERO;
|
||||
}
|
||||
recordVo.setBxsjszzzl(multiply.toString());
|
||||
|
||||
//平均处理时长增长率 本月 / 上月 * 100
|
||||
if (!avg.equals(BigDecimal.ZERO)) {
|
||||
recordVo.setClscjszzzl(BigDecimal.valueOf(Long.parseLong(recordVo.getPjclsc())).divide(avg, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).toString());
|
||||
}else{
|
||||
recordVo.setClscjszzzl("0");
|
||||
}
|
||||
|
||||
//完成率增长率 本月 / 上月 * 100
|
||||
if (!divide.equals(BigDecimal.ZERO)) {
|
||||
recordVo.setWcljszzzl(BigDecimal.valueOf(Long.parseLong(recordVo.getWcl())).divide(divide, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).toString());
|
||||
}else {
|
||||
recordVo.setWcljszzzl("0");
|
||||
}
|
||||
return R.ok(recordVo);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,337 @@
|
||||
package org.dromara.inspection.service.impl;
|
||||
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.apache.dubbo.config.annotation.DubboService;
|
||||
import org.apache.seata.spring.annotation.GlobalTransactional;
|
||||
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.inspection.domain.vo.OpsInspectionReportRecordVo;
|
||||
import org.dromara.personnel.domain.vo.OpsUserVo;
|
||||
import org.dromara.personnel.service.impl.OpsUserServiceImpl;
|
||||
import org.dromara.resource.api.RemoteFileService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.inspection.domain.bo.OpsInspectionReportBo;
|
||||
import org.dromara.inspection.domain.vo.OpsInspectionReportVo;
|
||||
import org.dromara.inspection.domain.OpsInspectionReport;
|
||||
import org.dromara.inspection.mapper.OpsInspectionReportMapper;
|
||||
import org.dromara.inspection.service.IOpsInspectionReportService;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
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-22
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class OpsInspectionReportServiceImpl implements IOpsInspectionReportService {
|
||||
|
||||
private final OpsInspectionReportMapper baseMapper;
|
||||
|
||||
@DubboReference
|
||||
private RemoteFileService remoteFileService;
|
||||
@Autowired
|
||||
private OpsUserServiceImpl opsUserService;
|
||||
|
||||
/**
|
||||
* 查询运维-巡检-报修
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 运维-巡检-报修
|
||||
*/
|
||||
@Override
|
||||
public OpsInspectionReportVo queryById(Long id){
|
||||
OpsInspectionReportVo opsInspectionReportVo = baseMapper.selectVoById(id);
|
||||
List<OpsInspectionReportVo> opsInspectionReportVo1 = List.of(opsInspectionReportVo);
|
||||
setValue(opsInspectionReportVo1);
|
||||
return opsInspectionReportVo1.getFirst();
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询运维-巡检-报修列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 运维-巡检-报修分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<OpsInspectionReportVo> queryPageList(OpsInspectionReportBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<OpsInspectionReport> lqw = buildQueryWrapper(bo);
|
||||
Page<OpsInspectionReportVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
setValue(result.getRecords());
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的运维-巡检-报修列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 运维-巡检-报修列表
|
||||
*/
|
||||
@Override
|
||||
public List<OpsInspectionReportVo> queryList(OpsInspectionReportBo bo) {
|
||||
LambdaQueryWrapper<OpsInspectionReport> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<OpsInspectionReport> buildQueryWrapper(OpsInspectionReportBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<OpsInspectionReport> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByAsc(OpsInspectionReport::getId);
|
||||
lqw.eq(bo.getProjectId() != null, OpsInspectionReport::getProjectId, bo.getProjectId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getLevel()), OpsInspectionReport::getLevel, bo.getLevel());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), OpsInspectionReport::getStatus, bo.getStatus());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getType()), OpsInspectionReport::getType, bo.getType());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getName()), OpsInspectionReport::getName, bo.getName());
|
||||
lqw.eq(bo.getSendPerson() != null, OpsInspectionReport::getSendPerson, bo.getSendPerson());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getReportInfo()), OpsInspectionReport::getReportInfo, bo.getReportInfo());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getPosition()), OpsInspectionReport::getPosition, bo.getPosition());
|
||||
lqw.eq(bo.getFileId() != null, OpsInspectionReport::getFileId, bo.getFileId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getFileUrl()), OpsInspectionReport::getFileUrl, bo.getFileUrl());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getReportName()), OpsInspectionReport::getReportName, bo.getReportName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getReportPhone()), OpsInspectionReport::getReportPhone, bo.getReportPhone());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增运维-巡检-报修
|
||||
*
|
||||
* @param bo 运维-巡检-报修
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
@GlobalTransactional
|
||||
public Boolean insertByBo(OpsInspectionReportBo bo) {
|
||||
OpsInspectionReport add = MapstructUtils.convert(bo, OpsInspectionReport.class);
|
||||
validEntityBeforeSave(add);
|
||||
|
||||
if (add == null){
|
||||
return false;
|
||||
}
|
||||
|
||||
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(OpsInspectionReportBo bo) {
|
||||
OpsInspectionReport update = MapstructUtils.convert(bo, OpsInspectionReport.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(OpsInspectionReport entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除运维-巡检-报修信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
@GlobalTransactional
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
|
||||
List<String> urls = new ArrayList<>();
|
||||
for (Long id : ids) {
|
||||
OpsInspectionReportVo opsInspectionReportVo = queryById(id);
|
||||
if (opsInspectionReportVo != null){
|
||||
if (opsInspectionReportVo.getFileUrl()!=null) {
|
||||
urls.add(opsInspectionReportVo.getFileUrl());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!urls.isEmpty()) {
|
||||
for (String url : urls) {
|
||||
List<String> list = Arrays.asList(url.split(","));
|
||||
remoteFileService.deleteFile(list);
|
||||
}
|
||||
}
|
||||
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理回显数据
|
||||
*/
|
||||
private void setValue(List<OpsInspectionReportVo> list){
|
||||
if (list == null || list.isEmpty()){
|
||||
return;
|
||||
}
|
||||
|
||||
for (OpsInspectionReportVo vo : list) {
|
||||
|
||||
if (vo.getSendPerson() == null){
|
||||
continue;
|
||||
}
|
||||
|
||||
OpsUserVo opsUserVo = opsUserService.queryById(vo.getSendPerson());
|
||||
if (opsUserVo == null){
|
||||
continue;
|
||||
}
|
||||
|
||||
vo.setSendPersonVo(opsUserVo);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public R<OpsInspectionReportRecordVo> record(Long projectId) {
|
||||
//变量初始化
|
||||
OpsInspectionReportRecordVo recordVo = new OpsInspectionReportRecordVo();
|
||||
OpsInspectionReportBo bo = new OpsInspectionReportBo();
|
||||
bo.setProjectId(projectId);
|
||||
//日期初始化
|
||||
LocalDate firstDay = LocalDate.now().withDayOfMonth(1);
|
||||
LocalDate lastDay = firstDay.plusMonths(1).minusDays(1);
|
||||
Date startDate = Date.from(firstDay.atStartOfDay(ZoneId.systemDefault()).toInstant());
|
||||
Date endDate = Date.from(lastDay.atTime(23, 59, 59).atZone(ZoneId.systemDefault()).toInstant());
|
||||
//查询当前项目的报修数据
|
||||
List<OpsInspectionReportVo> opsInspectionReportVos = queryList(bo);
|
||||
|
||||
//过滤本月数据
|
||||
List<OpsInspectionReportVo> thisMonth = opsInspectionReportVos.stream()
|
||||
.filter(vo -> vo.getCreateTime().after(startDate))
|
||||
.filter(vo -> vo.getCreateTime().before(endDate))
|
||||
.toList();
|
||||
//本月总报修数
|
||||
recordVo.setByzbxs(String.valueOf(thisMonth.size()));
|
||||
|
||||
//平均处理时长 完成时间-创建时间 转为 分钟 / 总报
|
||||
Long time = 0L;//总共完成时间
|
||||
for (OpsInspectionReportVo vo : thisMonth) {
|
||||
if (vo.getStatus().equals("3")){
|
||||
time += vo.getReportFinishTime().getTime() - vo.getCreateTime().getTime();
|
||||
}
|
||||
}
|
||||
time = TimeUnit.MILLISECONDS.toMinutes(time);
|
||||
BigDecimal divide1 = BigDecimal.valueOf(time).divide(BigDecimal.valueOf(thisMonth.size()), 0, RoundingMode.HALF_UP);
|
||||
long hours = TimeUnit.MINUTES.toHours(Long.parseLong(divide1.toString()));
|
||||
|
||||
//平均处理时长
|
||||
recordVo.setPjclsc(Long.toString(hours));
|
||||
|
||||
//待处理报修
|
||||
int size = thisMonth.stream().filter(vo -> vo.getStatus().equals("1")).toList().size();
|
||||
recordVo.setDclbx(String.valueOf(size));
|
||||
|
||||
//完成率
|
||||
//完成数
|
||||
int finishCount = thisMonth.stream().filter(vo -> vo.getStatus().equals("3")).toList().size();
|
||||
BigDecimal divide = BigDecimal.valueOf(finishCount).divide(BigDecimal.valueOf(thisMonth.size()), 2, RoundingMode.HALF_UP);
|
||||
recordVo.setWcl(divide.multiply(new BigDecimal("100")).toString());
|
||||
|
||||
//统计上一月的数据
|
||||
firstDay = LocalDate.now().minusMonths(1).withDayOfMonth(1);
|
||||
lastDay = firstDay.plusMonths(1).minusDays(1);
|
||||
Date finalStartDate = Date.from(firstDay.atStartOfDay(ZoneId.systemDefault()).toInstant());
|
||||
Date finalEndDate = Date.from(lastDay.atTime(23, 59, 59).atZone(ZoneId.systemDefault()).toInstant());
|
||||
|
||||
|
||||
thisMonth = opsInspectionReportVos.stream()
|
||||
.filter(vo -> vo.getCreateTime().after(finalStartDate))
|
||||
.filter(vo -> vo.getCreateTime().before(finalEndDate))
|
||||
.toList();
|
||||
|
||||
//上一月总报修数
|
||||
Long lastMonth = (long) thisMonth.size();
|
||||
//上一月平均处理时长
|
||||
BigDecimal avg;
|
||||
time = 0L;
|
||||
for (OpsInspectionReportVo vo : thisMonth) {
|
||||
if (vo.getStatus().equals("3")){
|
||||
time += vo.getReportFinishTime().getTime() - vo.getCreateTime().getTime();
|
||||
}
|
||||
}
|
||||
time = TimeUnit.MILLISECONDS.toMinutes(time);
|
||||
|
||||
if (thisMonth.isEmpty()){
|
||||
avg = BigDecimal.ZERO;
|
||||
}else {
|
||||
avg = BigDecimal.valueOf(time).divide(BigDecimal.valueOf(thisMonth.size()),2, RoundingMode.HALF_UP);
|
||||
}
|
||||
//上一月完成率
|
||||
finishCount = thisMonth.stream().filter(vo -> vo.getStatus().equals("3")).toList().size();
|
||||
|
||||
if (!thisMonth.isEmpty()) {
|
||||
divide = BigDecimal.valueOf(finishCount).divide(BigDecimal.valueOf(thisMonth.size()), 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
|
||||
}else {
|
||||
divide = BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
//总报修数增长率
|
||||
BigDecimal multiply;
|
||||
if (lastMonth != 0) {
|
||||
multiply = BigDecimal.valueOf(Long.parseLong(recordVo.getByzbxs())).divide(BigDecimal.valueOf(lastMonth), 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100"));
|
||||
}else {
|
||||
multiply = BigDecimal.ZERO;
|
||||
}
|
||||
recordVo.setBxsjszzzl(multiply.toString());
|
||||
|
||||
//平均处理时长增长率 本月 / 上月 * 100
|
||||
if (!avg.equals(BigDecimal.ZERO)) {
|
||||
recordVo.setClscjszzzl(BigDecimal.valueOf(Long.parseLong(recordVo.getPjclsc())).divide(avg, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).toString());
|
||||
}else{
|
||||
recordVo.setClscjszzzl("0");
|
||||
}
|
||||
|
||||
//完成率增长率 本月 / 上月 * 100
|
||||
if (!divide.equals(BigDecimal.ZERO)) {
|
||||
recordVo.setWcljszzzl(BigDecimal.valueOf(Long.parseLong(recordVo.getWcl())).divide(divide, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).toString());
|
||||
}else {
|
||||
recordVo.setWcljszzzl("0");
|
||||
}
|
||||
return R.ok(recordVo);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,300 @@
|
||||
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.dromara.inspection.domain.vo.OpsInspectionPlanVo;
|
||||
import org.dromara.inspection.domain.vo.OpsInspectionRecordVo;
|
||||
import org.dromara.personnel.domain.vo.OpsUserVo;
|
||||
import org.dromara.personnel.service.impl.OpsUserServiceImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.inspection.domain.bo.OpsInspectionTaskBo;
|
||||
import org.dromara.inspection.domain.vo.OpsInspectionTaskVo;
|
||||
import org.dromara.inspection.domain.OpsInspectionTask;
|
||||
import org.dromara.inspection.mapper.OpsInspectionTaskMapper;
|
||||
import org.dromara.inspection.service.IOpsInspectionTaskService;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.ZoneId;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 运维-巡检计划-任务Service业务层处理
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-20
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class OpsInspectionTaskServiceImpl implements IOpsInspectionTaskService {
|
||||
|
||||
private final OpsInspectionTaskMapper baseMapper;
|
||||
@Autowired
|
||||
private OpsInspectionPlanServiceImpl opsInspectionPlanService;
|
||||
@Autowired
|
||||
private OpsUserServiceImpl opsUserService;
|
||||
|
||||
/**
|
||||
* 查询运维-巡检计划-任务
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 运维-巡检计划-任务
|
||||
*/
|
||||
@Override
|
||||
public OpsInspectionTaskVo queryById(Long id){
|
||||
OpsInspectionTaskVo opsInspectionTaskVo = baseMapper.selectVoById(id);
|
||||
List<OpsInspectionTaskVo> opsInspectionTaskVo1 = List.of(opsInspectionTaskVo);
|
||||
buildEcho(opsInspectionTaskVo1);
|
||||
return opsInspectionTaskVo1.getFirst();
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询运维-巡检计划-任务列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 运维-巡检计划-任务分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<OpsInspectionTaskVo> queryPageList(OpsInspectionTaskBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<OpsInspectionTask> lqw = buildQueryWrapper(bo);
|
||||
Page<OpsInspectionTaskVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
buildEcho(result.getRecords());
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的运维-巡检计划-任务列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 运维-巡检计划-任务列表
|
||||
*/
|
||||
@Override
|
||||
public List<OpsInspectionTaskVo> queryList(OpsInspectionTaskBo bo) {
|
||||
LambdaQueryWrapper<OpsInspectionTask> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<OpsInspectionTask> buildQueryWrapper(OpsInspectionTaskBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<OpsInspectionTask> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(bo.getId() != null, OpsInspectionTask::getId, bo.getId());
|
||||
lqw.eq(bo.getPersonId()!= null, OpsInspectionTask::getPersonId, bo.getPersonId());
|
||||
lqw.orderByAsc(OpsInspectionTask::getId);
|
||||
lqw.like(StringUtils.isNotBlank(bo.getTaskName()), OpsInspectionTask::getTaskName, bo.getTaskName());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getInspectionObject()), OpsInspectionTask::getInspectionObject, bo.getInspectionObject());
|
||||
lqw.eq(bo.getBeginTime() != null, OpsInspectionTask::getBeginTime, bo.getBeginTime());
|
||||
lqw.eq(bo.getEndTime() != null, OpsInspectionTask::getEndTime, bo.getEndTime());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getTimeInfo()), OpsInspectionTask::getTimeInfo, bo.getTimeInfo());
|
||||
lqw.eq(bo.getPlanId() != null, OpsInspectionTask::getPlanId, bo.getPlanId());
|
||||
lqw.eq(bo.getProjectId() != null, OpsInspectionTask::getProjectId, bo.getProjectId());
|
||||
lqw.eq(bo.getTaskType() != null, OpsInspectionTask::getTaskType, bo.getTaskType());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增运维-巡检计划-任务
|
||||
*
|
||||
* @param bo 运维-巡检计划-任务
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(OpsInspectionTaskBo bo) {
|
||||
OpsInspectionTask add = MapstructUtils.convert(bo, OpsInspectionTask.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改运维-巡检计划-任务
|
||||
*
|
||||
* @param bo 运维-巡检计划-任务
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(OpsInspectionTaskBo bo) {
|
||||
OpsInspectionTask update = MapstructUtils.convert(bo, OpsInspectionTask.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(OpsInspectionTask entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除运维-巡检计划-任务信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 巡检记录统计 1月 2周 3日
|
||||
*/
|
||||
public R<OpsInspectionRecordVo> record(String type,Long projectId){
|
||||
//从任务列表中统计
|
||||
OpsInspectionTaskBo opsInspectionTaskBo = new OpsInspectionTaskBo();
|
||||
opsInspectionTaskBo.setProjectId(projectId);
|
||||
List<OpsInspectionTaskVo> opsInspectionTaskVos = this.queryList(opsInspectionTaskBo);
|
||||
|
||||
Long cpsyl = 0L;
|
||||
Long ncsyl = 0L;
|
||||
Long fwzt = 0L;
|
||||
Long xysj = 0L;
|
||||
Long sbyxzt = 0L;
|
||||
|
||||
Date startDate;
|
||||
Date endDate;
|
||||
|
||||
OpsInspectionRecordVo recordVo = new OpsInspectionRecordVo();
|
||||
switch ( type){
|
||||
//统计今天
|
||||
case "1" ->{
|
||||
// 设置时间范围:今天的00:00:00到23:59:59
|
||||
startDate = Date.from(LocalDateTime.of(LocalDate.now(), LocalTime.MIN).atZone(ZoneId.systemDefault()).toInstant());
|
||||
endDate = Date.from(LocalDateTime.of(LocalDate.now(), LocalTime.MAX).atZone(ZoneId.systemDefault()).toInstant());
|
||||
|
||||
}
|
||||
|
||||
//统计本周
|
||||
case "2" ->{
|
||||
LocalDate today = LocalDate.now();
|
||||
LocalDate start = today.minusDays(today.getDayOfWeek().getValue() - 1);
|
||||
LocalDate end = start.plusDays(6);
|
||||
startDate = Date.from(start.atStartOfDay(ZoneId.systemDefault()).toInstant());
|
||||
endDate = Date.from(end.atTime(23, 59, 59).atZone(ZoneId.systemDefault()).toInstant());
|
||||
}
|
||||
|
||||
//统计本月
|
||||
case "3" ->{
|
||||
LocalDate firstDay = LocalDate.now().withDayOfMonth(1);
|
||||
LocalDate lastDay = firstDay.plusMonths(1).minusDays(1);
|
||||
startDate = Date.from(firstDay.atStartOfDay(ZoneId.systemDefault()).toInstant());
|
||||
endDate = Date.from(lastDay.atTime(23, 59, 59).atZone(ZoneId.systemDefault()).toInstant());
|
||||
}
|
||||
|
||||
default -> {
|
||||
return R.fail("未知类型");
|
||||
}
|
||||
}
|
||||
|
||||
//完成巡检数
|
||||
Date finalStartDate = startDate;
|
||||
Date finalEndDate = endDate;
|
||||
|
||||
Long finishInspectionCount = (long) opsInspectionTaskVos.stream()
|
||||
.filter(taskVo -> taskVo.getFinishTime().after(finalStartDate) && taskVo.getFinishTime().before(finalEndDate))
|
||||
.toList().size();
|
||||
recordVo.setFinishInspectionCount(finishInspectionCount);
|
||||
|
||||
//发现问题数 通过createTime统计
|
||||
int problemCount = opsInspectionTaskVos.stream()
|
||||
.filter(taskVo -> taskVo.getCreateTime().after(finalStartDate) && taskVo.getCreateTime().before(finalEndDate))
|
||||
.toList().size();
|
||||
recordVo.setProblemCount((long) problemCount);
|
||||
|
||||
//已解决数 获取列表以供通用
|
||||
List<OpsInspectionTaskVo> list = opsInspectionTaskVos.stream()
|
||||
.filter(taskVo -> taskVo.getCreateTime().after(finalStartDate) && taskVo.getCreateTime().before(finalEndDate))
|
||||
.filter(taskVo -> taskVo.getTaskType().equals("4"))
|
||||
.toList();
|
||||
recordVo.setSolvedProblemCount((long) list.size());
|
||||
|
||||
// 计算总共耗时(毫秒)
|
||||
long durationMillis = 0L;
|
||||
for (OpsInspectionTaskVo opsInspectionTaskVo : list) {
|
||||
durationMillis += opsInspectionTaskVo.getFinishTime().getTime() - opsInspectionTaskVo.getCreateTime().getTime();
|
||||
}
|
||||
//赋值分钟
|
||||
if (list.isEmpty()){
|
||||
recordVo.setAverageCompletionTime(0L);
|
||||
}else {
|
||||
recordVo.setAverageCompletionTime(TimeUnit.MILLISECONDS.toMinutes(durationMillis) / list.size());
|
||||
}
|
||||
|
||||
//解决效率 已解决数 / 总共数量 * 100
|
||||
BigDecimal problemCountBigDecimal = BigDecimal.valueOf(recordVo.getProblemCount());
|
||||
BigDecimal solvedProblemCountBigDecimal = BigDecimal.valueOf(recordVo.getSolvedProblemCount());
|
||||
if (solvedProblemCountBigDecimal.compareTo(BigDecimal.ZERO) == 0 || problemCountBigDecimal.compareTo(BigDecimal.ZERO) == 0){
|
||||
recordVo.setSolveEfficiency(BigDecimal.valueOf(0));
|
||||
}else {
|
||||
BigDecimal bigDecimal = solvedProblemCountBigDecimal.divide(problemCountBigDecimal, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).setScale(0, RoundingMode.HALF_UP);
|
||||
recordVo.setSolveEfficiency(bigDecimal);
|
||||
}
|
||||
for (OpsInspectionTaskVo opsInspectionTaskVo : opsInspectionTaskVos) {
|
||||
if (opsInspectionTaskVo.getCreateTime().after(startDate) && opsInspectionTaskVo.getCreateTime().before(endDate)){
|
||||
switch (opsInspectionTaskVo.getProblemType()){
|
||||
case "1" -> cpsyl++;
|
||||
case "2" -> ncsyl++;
|
||||
case "3" -> fwzt++;
|
||||
case "4" -> xysj++;
|
||||
case "5" -> sbyxzt++;
|
||||
}
|
||||
}
|
||||
}
|
||||
recordVo.setCpsyl(cpsyl);
|
||||
recordVo.setNcsyl(ncsyl);
|
||||
recordVo.setFwzt(fwzt);
|
||||
recordVo.setXysj(xysj);
|
||||
recordVo.setSbyxzt(sbyxzt);
|
||||
|
||||
return R.ok(recordVo);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 构造回显信息
|
||||
*/
|
||||
private void buildEcho(List<OpsInspectionTaskVo> taskVos) {
|
||||
//TODO 回显信息
|
||||
taskVos.forEach(taskVo -> {
|
||||
if (taskVo.getPlanId()!=null) {
|
||||
OpsInspectionPlanVo opsInspectionPlanVo = opsInspectionPlanService.queryById(taskVo.getPlanId());
|
||||
if (opsInspectionPlanVo != null) {
|
||||
taskVo.setPlan(opsInspectionPlanVo);
|
||||
}
|
||||
}
|
||||
if (taskVo.getPersonId()!=null) {
|
||||
OpsUserVo opsUserVo = opsUserService.queryById(taskVo.getPersonId());
|
||||
if (opsUserVo != null) {
|
||||
taskVo.setPerson(opsUserVo);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,201 @@
|
||||
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.dromara.inspection.domain.vo.OpsInspectionItemVo;
|
||||
import org.dromara.personnel.domain.OpsUser;
|
||||
import org.dromara.personnel.domain.bo.OpsUserBo;
|
||||
import org.dromara.personnel.domain.vo.OpsUserVo;
|
||||
import org.dromara.personnel.service.impl.OpsUserServiceImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.inspection.domain.bo.OpsInspectionTestPlanBo;
|
||||
import org.dromara.inspection.domain.vo.OpsInspectionTestPlanVo;
|
||||
import org.dromara.inspection.domain.OpsInspectionTestPlan;
|
||||
import org.dromara.inspection.mapper.OpsInspectionTestPlanMapper;
|
||||
import org.dromara.inspection.service.IOpsInspectionTestPlanService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 运维-巡检-试验计划Service业务层处理
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-20
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class OpsInspectionTestPlanServiceImpl implements IOpsInspectionTestPlanService {
|
||||
|
||||
@Autowired
|
||||
private OpsUserServiceImpl opsUserService;
|
||||
@Autowired
|
||||
private OpsInspectionItemServiceImpl inspectionItemService;
|
||||
|
||||
private final OpsInspectionTestPlanMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询运维-巡检-试验计划
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 运维-巡检-试验计划
|
||||
*/
|
||||
@Override
|
||||
public OpsInspectionTestPlanVo queryById(Long id){
|
||||
OpsInspectionTestPlanVo opsInspectionTestPlanVo = baseMapper.selectVoById(id);
|
||||
List<OpsInspectionTestPlanVo> opsInspectionTestPlanVo1 = List.of(opsInspectionTestPlanVo);
|
||||
setValue(opsInspectionTestPlanVo1);
|
||||
return opsInspectionTestPlanVo1.getFirst();
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询运维-巡检-试验计划列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 运维-巡检-试验计划分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<OpsInspectionTestPlanVo> queryPageList(OpsInspectionTestPlanBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<OpsInspectionTestPlan> lqw = buildQueryWrapper(bo);
|
||||
Page<OpsInspectionTestPlanVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
setValue(result.getRecords());
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的运维-巡检-试验计划列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 运维-巡检-试验计划列表
|
||||
*/
|
||||
@Override
|
||||
public List<OpsInspectionTestPlanVo> queryList(OpsInspectionTestPlanBo bo) {
|
||||
LambdaQueryWrapper<OpsInspectionTestPlan> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<OpsInspectionTestPlan> buildQueryWrapper(OpsInspectionTestPlanBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<OpsInspectionTestPlan> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByAsc(OpsInspectionTestPlan::getId);
|
||||
lqw.eq(bo.getProjectId() != null, OpsInspectionTestPlan::getProjectId, bo.getProjectId());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getPlanName()), OpsInspectionTestPlan::getPlanName, bo.getPlanName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getPlanCode()), OpsInspectionTestPlan::getPlanCode, bo.getPlanCode());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getTestObject()), OpsInspectionTestPlan::getTestObject, bo.getTestObject());
|
||||
lqw.eq(bo.getBeginTime() != null, OpsInspectionTestPlan::getBeginTime, bo.getBeginTime());
|
||||
lqw.eq(bo.getEndTime() != null, OpsInspectionTestPlan::getEndTime, bo.getEndTime());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getTestInfo()), OpsInspectionTestPlan::getTestInfo, bo.getTestInfo());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getTestSetting()), OpsInspectionTestPlan::getTestSetting, bo.getTestSetting());
|
||||
lqw.eq(bo.getPersonCharge() != null, OpsInspectionTestPlan::getPersonCharge, bo.getPersonCharge());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getPersonIds()), OpsInspectionTestPlan::getPersonIds, bo.getPersonIds());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getInspectionItems()), OpsInspectionTestPlan::getInspectionItems, bo.getInspectionItems());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getTestStep()), OpsInspectionTestPlan::getTestStep, bo.getTestStep());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getTestDevice()), OpsInspectionTestPlan::getTestDevice, bo.getTestDevice());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getTestSolutions()), OpsInspectionTestPlan::getTestSolutions, bo.getTestSolutions());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增运维-巡检-试验计划
|
||||
*
|
||||
* @param bo 运维-巡检-试验计划
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(OpsInspectionTestPlanBo bo) {
|
||||
OpsInspectionTestPlan add = MapstructUtils.convert(bo, OpsInspectionTestPlan.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改运维-巡检-试验计划
|
||||
*
|
||||
* @param bo 运维-巡检-试验计划
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(OpsInspectionTestPlanBo bo) {
|
||||
OpsInspectionTestPlan update = MapstructUtils.convert(bo, OpsInspectionTestPlan.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(OpsInspectionTestPlan entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除运维-巡检-试验计划信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理回显数据
|
||||
*/
|
||||
public void setValue(List<OpsInspectionTestPlanVo> list){
|
||||
for (OpsInspectionTestPlanVo opsInspectionTestPlanVo : list) {
|
||||
|
||||
if(opsInspectionTestPlanVo.getPersonCharge()!=null) {
|
||||
OpsUserVo byId = opsUserService.queryById(opsInspectionTestPlanVo.getPersonCharge());
|
||||
if (byId != null) {
|
||||
opsInspectionTestPlanVo.setPerson(byId);
|
||||
}
|
||||
}
|
||||
|
||||
if (opsInspectionTestPlanVo.getPersonIds() != null){
|
||||
String[] split = opsInspectionTestPlanVo.getPersonIds().split(",");
|
||||
List<OpsUserVo> opsUserVos = new ArrayList<>();
|
||||
for (String s : split) {
|
||||
OpsUserVo opsUserVo = opsUserService.queryById(Long.parseLong(s));
|
||||
if (opsUserVo != null){
|
||||
opsUserVos.add(opsUserVo);
|
||||
}
|
||||
}
|
||||
opsInspectionTestPlanVo.setPersons(opsUserVos);
|
||||
}
|
||||
|
||||
// if (opsInspectionTestPlanVo.getInspectionItems()!=null){
|
||||
// String[] split = opsInspectionTestPlanVo.getInspectionItems().split(",");
|
||||
// List<OpsInspectionItemVo> opsInspectionItemVos = new ArrayList<>();
|
||||
// for (String s : split) {
|
||||
// OpsInspectionItemVo opsInspectionItemVo = inspectionItemService.queryById(Long.parseLong(s));
|
||||
// if (opsInspectionItemVo != null){
|
||||
// opsInspectionItemVos.add(opsInspectionItemVo);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,256 @@
|
||||
package org.dromara.inspection.service.impl;
|
||||
|
||||
import lombok.Data;
|
||||
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.inspection.domain.vo.OpsInspectionTestPlanVo;
|
||||
import org.dromara.inspection.domain.vo.OpsInspectionTestTaskRecord;
|
||||
import org.dromara.personnel.domain.vo.OpsUserVo;
|
||||
import org.dromara.personnel.service.impl.OpsUserServiceImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.inspection.domain.bo.OpsInspectionTestTaskBo;
|
||||
import org.dromara.inspection.domain.vo.OpsInspectionTestTaskVo;
|
||||
import org.dromara.inspection.domain.OpsInspectionTestTask;
|
||||
import org.dromara.inspection.mapper.OpsInspectionTestTaskMapper;
|
||||
import org.dromara.inspection.service.IOpsInspectionTestTaskService;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDate;
|
||||
import java.time.ZoneId;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 运维-巡检-试验任务Service业务层处理
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-20
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class OpsInspectionTestTaskServiceImpl implements IOpsInspectionTestTaskService {
|
||||
|
||||
private final OpsInspectionTestTaskMapper baseMapper;
|
||||
@Autowired
|
||||
private OpsUserServiceImpl opsUserService;
|
||||
@Autowired
|
||||
private OpsInspectionTestPlanServiceImpl opsInspectionTestPlanService;
|
||||
|
||||
/**
|
||||
* 查询运维-巡检-试验任务
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 运维-巡检-试验任务
|
||||
*/
|
||||
@Override
|
||||
public OpsInspectionTestTaskVo queryById(Long id){
|
||||
OpsInspectionTestTaskVo opsInspectionTestTaskVo = baseMapper.selectVoById(id);
|
||||
List<OpsInspectionTestTaskVo> opsInspectionTestTaskVo1 = List.of(opsInspectionTestTaskVo);
|
||||
setValue(opsInspectionTestTaskVo1);
|
||||
return opsInspectionTestTaskVo1.getFirst();
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询运维-巡检-试验任务列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 运维-巡检-试验任务分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<OpsInspectionTestTaskVo> queryPageList(OpsInspectionTestTaskBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<OpsInspectionTestTask> lqw = buildQueryWrapper(bo);
|
||||
Page<OpsInspectionTestTaskVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
setValue(result.getRecords());
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的运维-巡检-试验任务列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 运维-巡检-试验任务列表
|
||||
*/
|
||||
@Override
|
||||
public List<OpsInspectionTestTaskVo> queryList(OpsInspectionTestTaskBo bo) {
|
||||
LambdaQueryWrapper<OpsInspectionTestTask> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<OpsInspectionTestTask> buildQueryWrapper(OpsInspectionTestTaskBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<OpsInspectionTestTask> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByAsc(OpsInspectionTestTask::getId);
|
||||
lqw.eq(bo.getProjectId() != null, OpsInspectionTestTask::getProjectId, bo.getProjectId());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getTaskName()), OpsInspectionTestTask::getTaskName, bo.getTaskName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getTestObject()), OpsInspectionTestTask::getTestObject, bo.getTestObject());
|
||||
lqw.eq(bo.getBeginTime() != null, OpsInspectionTestTask::getBeginTime, bo.getBeginTime());
|
||||
lqw.eq(bo.getEndTime() != null, OpsInspectionTestTask::getEndTime, bo.getEndTime());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getTimeInfo()), OpsInspectionTestTask::getTimeInfo, bo.getTimeInfo());
|
||||
lqw.eq(bo.getPerson() != null, OpsInspectionTestTask::getPerson, bo.getPerson());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), OpsInspectionTestTask::getStatus, bo.getStatus());
|
||||
lqw.eq(bo.getTestPlanId() != null, OpsInspectionTestTask::getTestPlanId, bo.getTestPlanId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getTestSetting()), OpsInspectionTestTask::getTestSetting, bo.getTestSetting());
|
||||
lqw.eq(bo.getPlanBeginTime() != null, OpsInspectionTestTask::getPlanBeginTime, bo.getPlanBeginTime());
|
||||
lqw.eq(bo.getProgress() != null, OpsInspectionTestTask::getProgress, bo.getProgress());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getFailReason()), OpsInspectionTestTask::getFailReason, bo.getFailReason());
|
||||
lqw.eq(bo.getFailTime() != null, OpsInspectionTestTask::getFailTime, bo.getFailTime());
|
||||
lqw.eq(bo.getFailPhase() != null, OpsInspectionTestTask::getFailPhase, bo.getFailPhase());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getFaileAnalyze()), OpsInspectionTestTask::getFaileAnalyze, bo.getFaileAnalyze());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getFaileTips()), OpsInspectionTestTask::getFaileTips, bo.getFaileTips());
|
||||
lqw.eq(bo.getTestLongTime() != null, OpsInspectionTestTask::getTestLongTime, bo.getTestLongTime());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getTestFinal()), OpsInspectionTestTask::getTestFinal, bo.getTestFinal());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getFinalInfo()), OpsInspectionTestTask::getFinalInfo, bo.getFinalInfo());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getPauseFor()), OpsInspectionTestTask::getPauseFor, bo.getPauseFor());
|
||||
lqw.eq(bo.getPauseTime() != null, OpsInspectionTestTask::getPauseTime, bo.getPauseTime());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增运维-巡检-试验任务
|
||||
*
|
||||
* @param bo 运维-巡检-试验任务
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(OpsInspectionTestTaskBo bo) {
|
||||
OpsInspectionTestTask add = MapstructUtils.convert(bo, OpsInspectionTestTask.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改运维-巡检-试验任务
|
||||
*
|
||||
* @param bo 运维-巡检-试验任务
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(OpsInspectionTestTaskBo bo) {
|
||||
OpsInspectionTestTask update = MapstructUtils.convert(bo, OpsInspectionTestTask.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(OpsInspectionTestTask entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除运维-巡检-试验任务信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理回显信息
|
||||
*/
|
||||
private void setValue(List<OpsInspectionTestTaskVo> list){
|
||||
for (OpsInspectionTestTaskVo opsInspectionTestTaskVo : list) {
|
||||
if(opsInspectionTestTaskVo.getPerson()!= null){
|
||||
OpsUserVo opsUserVo = opsUserService.queryById(opsInspectionTestTaskVo.getPerson());
|
||||
if (opsUserVo != null){
|
||||
opsInspectionTestTaskVo.setPersonInfo(opsUserVo);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (opsInspectionTestTaskVo.getTestPlanId() != null){
|
||||
OpsInspectionTestPlanVo opsInspectionTestPlanVo = opsInspectionTestPlanService.queryById(opsInspectionTestTaskVo.getTestPlanId());
|
||||
if (opsInspectionTestPlanVo != null){
|
||||
opsInspectionTestTaskVo.setTestPlan(opsInspectionTestPlanVo);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 统计记录
|
||||
*/
|
||||
public R<Object> record(Long projectId){
|
||||
|
||||
LocalDate firstDay = LocalDate.now().withDayOfMonth(1);
|
||||
LocalDate lastDay = firstDay.plusMonths(1).minusDays(1);
|
||||
Date startDate = Date.from(firstDay.atStartOfDay(ZoneId.systemDefault()).toInstant());
|
||||
Date endDate = Date.from(lastDay.atTime(23, 59, 59).atZone(ZoneId.systemDefault()).toInstant());
|
||||
|
||||
LambdaQueryWrapper<OpsInspectionTestTask> lqw = new LambdaQueryWrapper<>();
|
||||
lqw.eq(OpsInspectionTestTask::getProjectId,projectId);
|
||||
|
||||
OpsInspectionTestTaskBo opsInspectionTestTaskBo = new OpsInspectionTestTaskBo();
|
||||
opsInspectionTestTaskBo.setProjectId(projectId);
|
||||
|
||||
List<OpsInspectionTestTaskVo> list = queryList(opsInspectionTestTaskBo);
|
||||
if (list==null || list.isEmpty()){
|
||||
return R.fail("没有数据");
|
||||
}
|
||||
OpsInspectionTestTaskRecord record = new OpsInspectionTestTaskRecord();
|
||||
|
||||
//完成实验数
|
||||
Long finishCount = 0L;
|
||||
//待分析记录
|
||||
Long failCount = 0L;
|
||||
//总共完成时间
|
||||
Long totalTestTime = 0L;
|
||||
|
||||
for (OpsInspectionTestTaskVo opsInspectionTestTaskVo : list) {
|
||||
if (opsInspectionTestTaskVo.getPlanFinishTime().after(startDate) && opsInspectionTestTaskVo.getPlanFinishTime().before(endDate) && opsInspectionTestTaskVo.getStatus().equals("5")){
|
||||
finishCount++;
|
||||
totalTestTime += opsInspectionTestTaskVo.getPlanFinishTime().getTime() - opsInspectionTestTaskVo.getPlanBeginTime().getTime();
|
||||
}
|
||||
if (opsInspectionTestTaskVo.getPlanFinishTime().after(startDate) && opsInspectionTestTaskVo.getPlanFinishTime().before(endDate) && opsInspectionTestTaskVo.getStatus().equals("3")){
|
||||
failCount++;
|
||||
}
|
||||
}
|
||||
record.setFinishCount(finishCount);
|
||||
record.setFailCount(failCount);
|
||||
record.setPassValue(BigDecimal.valueOf(finishCount).divide(BigDecimal.valueOf(list.size()), 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
|
||||
record.setAverageTestTime(totalTestTime/finishCount);
|
||||
|
||||
//统计上一月的数据
|
||||
firstDay = LocalDate.now().minusMonths(1).withDayOfMonth(1);
|
||||
lastDay = firstDay.plusMonths(1).minusDays(1);
|
||||
Date finalEndDate = Date.from(firstDay.atStartOfDay(ZoneId.systemDefault()).toInstant());
|
||||
Date finalStartDate = Date.from(lastDay.atTime(23, 59, 59).atZone(ZoneId.systemDefault()).toInstant());
|
||||
|
||||
//上月数据列表
|
||||
List<OpsInspectionTestTaskVo> lastMonth = list.stream().filter(testTaskVo -> testTaskVo.getPlanBeginTime().before(finalEndDate) && testTaskVo.getPlanFinishTime().after(finalStartDate))
|
||||
.toList();
|
||||
|
||||
|
||||
|
||||
return R.ok(record);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,106 @@
|
||||
package org.dromara.personnel.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.personnel.domain.vo.OpsEquipmentVo;
|
||||
import org.dromara.personnel.domain.bo.OpsEquipmentBo;
|
||||
import org.dromara.personnel.service.IOpsEquipmentService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 运维-设备
|
||||
* 前端访问路由地址为:/personnel/equipment
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-19
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/personnel/equipment")
|
||||
public class OpsEquipmentController extends BaseController {
|
||||
|
||||
private final IOpsEquipmentService opsEquipmentService;
|
||||
|
||||
/**
|
||||
* 查询运维-设备列表
|
||||
*/
|
||||
@SaCheckPermission("personnel:equipment:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<OpsEquipmentVo> list(OpsEquipmentBo bo, PageQuery pageQuery) {
|
||||
return opsEquipmentService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出运维-设备列表
|
||||
*/
|
||||
@SaCheckPermission("personnel:equipment:export")
|
||||
@Log(title = "运维-设备", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(OpsEquipmentBo bo, HttpServletResponse response) {
|
||||
List<OpsEquipmentVo> list = opsEquipmentService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "运维-设备", OpsEquipmentVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取运维-设备详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("personnel:equipment:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<OpsEquipmentVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable("id") Long id) {
|
||||
return R.ok(opsEquipmentService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增运维-设备
|
||||
*/
|
||||
@SaCheckPermission("personnel:equipment:add")
|
||||
@Log(title = "运维-设备", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody OpsEquipmentBo bo) {
|
||||
return toAjax(opsEquipmentService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改运维-设备
|
||||
*/
|
||||
@SaCheckPermission("personnel:equipment:edit")
|
||||
@Log(title = "运维-设备", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OpsEquipmentBo bo) {
|
||||
return toAjax(opsEquipmentService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除运维-设备
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("personnel:equipment:remove")
|
||||
@Log(title = "运维-设备", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable("ids") Long[] ids) {
|
||||
return toAjax(opsEquipmentService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,134 @@
|
||||
package org.dromara.personnel.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.common.core.exception.ServiceException;
|
||||
import org.dromara.personnel.domain.bo.OpsSchedulingReq;
|
||||
import org.dromara.personnel.domain.dto.SchedulingUserGroupDTO;
|
||||
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.personnel.domain.vo.OpsSchedulingVo;
|
||||
import org.dromara.personnel.domain.bo.OpsSchedulingBo;
|
||||
import org.dromara.personnel.service.IOpsSchedulingService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 运维-人员排班
|
||||
* 前端访问路由地址为:/personnel/scheduling
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-19
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/personnel/scheduling")
|
||||
public class OpsSchedulingController extends BaseController {
|
||||
|
||||
private final IOpsSchedulingService opsSchedulingService;
|
||||
|
||||
/**
|
||||
* 查询运维-人员排班列表
|
||||
*/
|
||||
@SaCheckPermission("personnel:scheduling:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<OpsSchedulingVo> list(OpsSchedulingBo bo, PageQuery pageQuery) {
|
||||
return opsSchedulingService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询运维-人员排班列表
|
||||
*/
|
||||
@SaCheckPermission("personnel:scheduling:list")
|
||||
@GetMapping("/getRiLiList")
|
||||
public R<List<SchedulingUserGroupDTO>> getRiLiList(OpsSchedulingReq req) {
|
||||
return R.ok(opsSchedulingService.getRiLiList(req));
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出运维-人员排班列表
|
||||
*/
|
||||
@SaCheckPermission("personnel:scheduling:export")
|
||||
@Log(title = "运维-人员排班", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(OpsSchedulingBo bo, HttpServletResponse response) {
|
||||
List<OpsSchedulingVo> list = opsSchedulingService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "运维-人员排班", OpsSchedulingVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取运维-人员排班详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("personnel:scheduling:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<OpsSchedulingVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable("id") Long id) {
|
||||
return R.ok(opsSchedulingService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增运维-人员排班
|
||||
*/
|
||||
@SaCheckPermission("personnel:scheduling:add")
|
||||
@Log(title = "运维-人员排班", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody OpsSchedulingBo bo) {
|
||||
return toAjax(opsSchedulingService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改运维-人员排班
|
||||
*/
|
||||
@SaCheckPermission("personnel:scheduling:edit")
|
||||
@Log(title = "运维-人员排班", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/all")
|
||||
public R<Void> allEdit(@RequestBody OpsSchedulingBo bo) {
|
||||
if (bo.getProjectId() == null) {
|
||||
throw new ServiceException("项目id不能为空");
|
||||
}
|
||||
if (bo.getSchedulingDate() == null) {
|
||||
throw new ServiceException("排班日期不能为空");
|
||||
}
|
||||
return toAjax(opsSchedulingService.allEdit(bo));
|
||||
}
|
||||
/**
|
||||
* 修改运维-人员排班
|
||||
*/
|
||||
@SaCheckPermission("personnel:scheduling:edit")
|
||||
@Log(title = "运维-人员排班", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OpsSchedulingBo bo) {
|
||||
return toAjax(opsSchedulingService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除运维-人员排班
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("personnel:scheduling:remove")
|
||||
@Log(title = "运维-人员排班", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable("ids") Long[] ids) {
|
||||
return toAjax(opsSchedulingService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,106 @@
|
||||
package org.dromara.personnel.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.personnel.domain.vo.OpsSchedulingDateVo;
|
||||
import org.dromara.personnel.domain.bo.OpsSchedulingDateBo;
|
||||
import org.dromara.personnel.service.IOpsSchedulingDateService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 运维-排班时间类型
|
||||
* 前端访问路由地址为:/personnel/schedulingDate
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-19
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/personnel/schedulingDate")
|
||||
public class OpsSchedulingDateController extends BaseController {
|
||||
|
||||
private final IOpsSchedulingDateService opsSchedulingDateService;
|
||||
|
||||
/**
|
||||
* 查询运维-排班时间类型列表
|
||||
*/
|
||||
// @SaCheckPermission("personnel:schedulingDate:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<OpsSchedulingDateVo> list(OpsSchedulingDateBo bo, PageQuery pageQuery) {
|
||||
return opsSchedulingDateService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出运维-排班时间类型列表
|
||||
*/
|
||||
@SaCheckPermission("personnel:schedulingDate:export")
|
||||
@Log(title = "运维-排班时间类型", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(OpsSchedulingDateBo bo, HttpServletResponse response) {
|
||||
List<OpsSchedulingDateVo> list = opsSchedulingDateService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "运维-排班时间类型", OpsSchedulingDateVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取运维-排班时间类型详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("personnel:schedulingDate:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<OpsSchedulingDateVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable("id") Long id) {
|
||||
return R.ok(opsSchedulingDateService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增运维-排班时间类型
|
||||
*/
|
||||
@SaCheckPermission("personnel:schedulingDate:add")
|
||||
@Log(title = "运维-排班时间类型", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody OpsSchedulingDateBo bo) {
|
||||
return toAjax(opsSchedulingDateService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改运维-排班时间类型
|
||||
*/
|
||||
@SaCheckPermission("personnel:schedulingDate:edit")
|
||||
@Log(title = "运维-排班时间类型", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OpsSchedulingDateBo bo) {
|
||||
return toAjax(opsSchedulingDateService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除运维-排班时间类型
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("personnel:schedulingDate:remove")
|
||||
@Log(title = "运维-排班时间类型", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable("ids") Long[] ids) {
|
||||
return toAjax(opsSchedulingDateService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,106 @@
|
||||
package org.dromara.personnel.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.personnel.domain.vo.OpsUserVo;
|
||||
import org.dromara.personnel.domain.bo.OpsUserBo;
|
||||
import org.dromara.personnel.service.IOpsUserService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 运维人员
|
||||
* 前端访问路由地址为:/personnel/constructionUser
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-16
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/constructionUser")
|
||||
public class OpsUserController extends BaseController {
|
||||
|
||||
private final IOpsUserService subConstructionUserService;
|
||||
|
||||
/**
|
||||
* 查询运维人员列表
|
||||
*/
|
||||
@SaCheckPermission("personnel:constructionUser:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<OpsUserVo> list(OpsUserBo bo, PageQuery pageQuery) {
|
||||
return subConstructionUserService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出运维人员列表
|
||||
*/
|
||||
@SaCheckPermission("personnel:constructionUser:export")
|
||||
@Log(title = "运维人员", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(OpsUserBo bo, HttpServletResponse response) {
|
||||
List<OpsUserVo> list = subConstructionUserService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "运维人员", OpsUserVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取运维人员详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("personnel:constructionUser:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<OpsUserVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable("id") Long id) {
|
||||
return R.ok(subConstructionUserService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增运维人员
|
||||
*/
|
||||
@SaCheckPermission("personnel:constructionUser:add")
|
||||
@Log(title = "运维人员", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody OpsUserBo bo) {
|
||||
return toAjax(subConstructionUserService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改运维人员
|
||||
*/
|
||||
@SaCheckPermission("personnel:constructionUser:edit")
|
||||
@Log(title = "运维人员", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OpsUserBo bo) {
|
||||
return toAjax(subConstructionUserService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除运维人员
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("personnel:constructionUser:remove")
|
||||
@Log(title = "运维人员", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable("ids") Long[] ids) {
|
||||
return toAjax(subConstructionUserService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,106 @@
|
||||
package org.dromara.personnel.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.personnel.domain.vo.OpsUserFilesVo;
|
||||
import org.dromara.personnel.domain.bo.OpsUserFilesBo;
|
||||
import org.dromara.personnel.service.IOpsUserFilesService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 运维人员文件
|
||||
* 前端访问路由地址为:/personnel/userFiles
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-17
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/userFiles")
|
||||
public class OpsUserFilesController extends BaseController {
|
||||
|
||||
private final IOpsUserFilesService opsUserFilesService;
|
||||
|
||||
/**
|
||||
* 查询运维人员文件列表
|
||||
*/
|
||||
@SaCheckPermission("personnel:userFiles:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<OpsUserFilesVo> list(OpsUserFilesBo bo, PageQuery pageQuery) {
|
||||
return opsUserFilesService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出运维人员文件列表
|
||||
*/
|
||||
@SaCheckPermission("personnel:userFiles:export")
|
||||
@Log(title = "运维人员文件", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(OpsUserFilesBo bo, HttpServletResponse response) {
|
||||
List<OpsUserFilesVo> list = opsUserFilesService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "运维人员文件", OpsUserFilesVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取运维人员文件详细信息
|
||||
*
|
||||
* @param opsUserId 主键
|
||||
*/
|
||||
@SaCheckPermission("personnel:userFiles:query")
|
||||
@GetMapping("/{opsUserId}")
|
||||
public R<OpsUserFilesVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable("opsUserId") Long opsUserId) {
|
||||
return R.ok(opsUserFilesService.queryById(opsUserId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增运维人员文件
|
||||
*/
|
||||
@SaCheckPermission("personnel:userFiles:add")
|
||||
@Log(title = "运维人员文件", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody OpsUserFilesBo bo) {
|
||||
return toAjax(opsUserFilesService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改运维人员文件
|
||||
*/
|
||||
@SaCheckPermission("personnel:userFiles:edit")
|
||||
@Log(title = "运维人员文件", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OpsUserFilesBo bo) {
|
||||
return toAjax(opsUserFilesService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除运维人员文件
|
||||
*
|
||||
* @param opsUserIds 主键串
|
||||
*/
|
||||
@SaCheckPermission("personnel:userFiles:remove")
|
||||
@Log(title = "运维人员文件", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{opsUserIds}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable("opsUserIds") Long[] opsUserIds) {
|
||||
return toAjax(opsUserFilesService.deleteWithValidByIds(List.of(opsUserIds), true));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,106 @@
|
||||
package org.dromara.personnel.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.personnel.domain.vo.OpsWorkWageVo;
|
||||
import org.dromara.personnel.domain.bo.OpsWorkWageBo;
|
||||
import org.dromara.personnel.service.IOpsWorkWageService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 工种薪水
|
||||
* 前端访问路由地址为:/personnel/workWage
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-17
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/workWage")
|
||||
public class OpsWorkWageController extends BaseController {
|
||||
|
||||
private final IOpsWorkWageService opsWorkWageService;
|
||||
|
||||
/**
|
||||
* 查询工种薪水列表
|
||||
*/
|
||||
@SaCheckPermission("personnel:workWage:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<OpsWorkWageVo> list(OpsWorkWageBo bo, PageQuery pageQuery) {
|
||||
return opsWorkWageService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出工种薪水列表
|
||||
*/
|
||||
@SaCheckPermission("personnel:workWage:export")
|
||||
@Log(title = "工种薪水", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(OpsWorkWageBo bo, HttpServletResponse response) {
|
||||
List<OpsWorkWageVo> list = opsWorkWageService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "工种薪水", OpsWorkWageVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取工种薪水详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("personnel:workWage:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<OpsWorkWageVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable("id") Long id) {
|
||||
return R.ok(opsWorkWageService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增工种薪水
|
||||
*/
|
||||
@SaCheckPermission("personnel:workWage:add")
|
||||
@Log(title = "工种薪水", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody OpsWorkWageBo bo) {
|
||||
return toAjax(opsWorkWageService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改工种薪水
|
||||
*/
|
||||
@SaCheckPermission("personnel:workWage:edit")
|
||||
@Log(title = "工种薪水", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OpsWorkWageBo bo) {
|
||||
return toAjax(opsWorkWageService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除工种薪水
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("personnel:workWage:remove")
|
||||
@Log(title = "工种薪水", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable("ids") Long[] ids) {
|
||||
return toAjax(opsWorkWageService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,73 @@
|
||||
package org.dromara.personnel.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_equipment
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-19
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("ops_equipment")
|
||||
public class OpsEquipment extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 设备id
|
||||
*/
|
||||
private String deviceId;
|
||||
|
||||
/**
|
||||
* 设备名称
|
||||
*/
|
||||
private String deviceName;
|
||||
|
||||
/**
|
||||
* 设备类型
|
||||
*/
|
||||
private String deviceType;
|
||||
|
||||
/**
|
||||
* 所属电站
|
||||
*/
|
||||
private String affiliationPowerStation;
|
||||
|
||||
/**
|
||||
* 通讯协议
|
||||
*/
|
||||
private String commProtocol;
|
||||
|
||||
/**
|
||||
* IP地址
|
||||
*/
|
||||
private String ipAdd;
|
||||
|
||||
/**
|
||||
* 最后在线时间
|
||||
*/
|
||||
private Date lastOnlineTime;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private String status;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
package org.dromara.personnel.domain;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 运维-人员排班对象 ops_scheduling
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-19
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("ops_scheduling")
|
||||
public class OpsScheduling extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 运维人员id
|
||||
*/
|
||||
private Long opsUserId;
|
||||
|
||||
/**
|
||||
* 排班类型ID
|
||||
*/
|
||||
private Long schedulingType;
|
||||
|
||||
/**
|
||||
* 排班日期
|
||||
*/
|
||||
private LocalDate schedulingDate;
|
||||
|
||||
/**
|
||||
* 排班开始时间
|
||||
*/
|
||||
private LocalDateTime schedulingStartTime;
|
||||
|
||||
/**
|
||||
* 排班结束时间
|
||||
*/
|
||||
private LocalDateTime schedulingEndTime;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,60 @@
|
||||
package org.dromara.personnel.domain;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.time.LocalTime;
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 运维-排班时间类型对象 ops_scheduling_date
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-19
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("ops_scheduling_date")
|
||||
public class OpsSchedulingDate extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 排班名称
|
||||
*/
|
||||
private String schedulingName;
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
*/
|
||||
private LocalTime startTime;
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
*/
|
||||
private LocalTime endTime;
|
||||
|
||||
/**
|
||||
* 时长
|
||||
*/
|
||||
private Double duration;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,198 @@
|
||||
package org.dromara.personnel.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;
|
||||
|
||||
/**
|
||||
* 运维人员对象 sub_construction_user
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-16
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("ops_user")
|
||||
public class OpsUser extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 人脸照
|
||||
*/
|
||||
private String facePic;
|
||||
|
||||
/**
|
||||
* 系统用户id
|
||||
*/
|
||||
private Long sysUserId;
|
||||
|
||||
/**
|
||||
* 人员姓名
|
||||
*/
|
||||
private String userName;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
|
||||
/**
|
||||
* 班组id
|
||||
*/
|
||||
private Long teamId;
|
||||
|
||||
/**
|
||||
* 班组名称
|
||||
*/
|
||||
private String teamName;
|
||||
|
||||
/**
|
||||
* 状态(0在职 1离职)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 性别(0:保密 1:男 2女)
|
||||
*/
|
||||
private String sex;
|
||||
|
||||
/**
|
||||
* 民族
|
||||
*/
|
||||
private String nation;
|
||||
|
||||
/**
|
||||
* 身份证正面图片
|
||||
*/
|
||||
private String sfzFrontPic;
|
||||
|
||||
/**
|
||||
* 身份证背面图片
|
||||
*/
|
||||
private String sfzBackPic;
|
||||
|
||||
/**
|
||||
* 身份证号码
|
||||
*/
|
||||
private String sfzNumber;
|
||||
|
||||
/**
|
||||
* 身份证有效开始期
|
||||
*/
|
||||
private Date sfzStart;
|
||||
|
||||
/**
|
||||
* 身份证有效结束期
|
||||
*/
|
||||
private Date sfzEnd;
|
||||
|
||||
/**
|
||||
* 身份证地址
|
||||
*/
|
||||
private String sfzSite;
|
||||
|
||||
/**
|
||||
* 身份证出生日期
|
||||
*/
|
||||
private Date sfzBirth;
|
||||
|
||||
/**
|
||||
* 籍贯
|
||||
*/
|
||||
private String nativePlace;
|
||||
|
||||
/**
|
||||
* 银行卡图片
|
||||
*/
|
||||
private String yhkPic;
|
||||
|
||||
/**
|
||||
* 银行卡号
|
||||
*/
|
||||
private String yhkNumber;
|
||||
|
||||
/**
|
||||
* 开户行
|
||||
*/
|
||||
private String yhkOpeningBank;
|
||||
|
||||
/**
|
||||
* 持卡人
|
||||
*/
|
||||
private String yhkCardholder;
|
||||
|
||||
/**
|
||||
* 工种(字典type_of_work)
|
||||
*/
|
||||
private String typeOfWork;
|
||||
|
||||
/**
|
||||
* 工资计量单位
|
||||
*/
|
||||
private String wageMeasureUnit;
|
||||
|
||||
/**
|
||||
* 特种作业证图片
|
||||
*/
|
||||
private String specialWorkPic;
|
||||
|
||||
/**
|
||||
* 打卡(0启用打卡 1禁止打卡)
|
||||
*/
|
||||
private String clock;
|
||||
|
||||
/**
|
||||
* 入场时间
|
||||
*/
|
||||
private String entryDate;
|
||||
|
||||
/**
|
||||
* 离场时间
|
||||
*/
|
||||
private String leaveDate;
|
||||
|
||||
/**
|
||||
* 薪水
|
||||
*/
|
||||
private Long salary;
|
||||
|
||||
/**
|
||||
* 用户角色(1=普通用户,2=管理员)
|
||||
*/
|
||||
private String userRole;
|
||||
|
||||
/**
|
||||
* 退场状态(0未退场 1退场未提交材料 2已退场)
|
||||
*/
|
||||
private String exitStatus;
|
||||
|
||||
/**
|
||||
* 首次进入项目的时间
|
||||
*/
|
||||
private Date firstDate;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,46 @@
|
||||
package org.dromara.personnel.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_user_files
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("ops_user_files")
|
||||
public class OpsUserFiles extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 运维人员id
|
||||
*/
|
||||
@TableId(value = "ops_user_id")
|
||||
private Long opsUserId;
|
||||
|
||||
/**
|
||||
* 文件id
|
||||
*/
|
||||
private Long fileId;
|
||||
|
||||
/**
|
||||
* 文件名称
|
||||
*/
|
||||
private String fileName;
|
||||
|
||||
/**
|
||||
* 文件类型(1、特种作业证图片)
|
||||
*/
|
||||
private String fileType;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,66 @@
|
||||
package org.dromara.personnel.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_work_wage
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("ops_work_wage")
|
||||
public class OpsWorkWage extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 工种
|
||||
*/
|
||||
private String workType;
|
||||
|
||||
/**
|
||||
* 是否是特种兵(1是 2否)
|
||||
*/
|
||||
private String isSpecialType;
|
||||
|
||||
/**
|
||||
* 工资计算方式(1计时 2计件)
|
||||
*/
|
||||
private String wageCalculationType;
|
||||
|
||||
/**
|
||||
* 工资标准
|
||||
*/
|
||||
private Long wage;
|
||||
|
||||
/**
|
||||
* 工资计量单位
|
||||
*/
|
||||
private String wageMeasureUnit;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,78 @@
|
||||
package org.dromara.personnel.domain.bo;
|
||||
|
||||
import org.dromara.personnel.domain.OpsEquipment;
|
||||
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_equipment
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-19
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = OpsEquipment.class, reverseConvertGenerate = false)
|
||||
public class OpsEquipmentBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 设备id
|
||||
*/
|
||||
private String deviceId;
|
||||
|
||||
/**
|
||||
* 设备名称
|
||||
*/
|
||||
@NotBlank(message = "设备名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String deviceName;
|
||||
|
||||
/**
|
||||
* 设备类型
|
||||
*/
|
||||
@NotBlank(message = "设备类型不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String deviceType;
|
||||
|
||||
/**
|
||||
* 所属电站
|
||||
*/
|
||||
@NotBlank(message = "所属电站不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String affiliationPowerStation;
|
||||
|
||||
/**
|
||||
* 通讯协议
|
||||
*/
|
||||
@NotBlank(message = "通讯协议不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String commProtocol;
|
||||
|
||||
/**
|
||||
* IP地址
|
||||
*/
|
||||
@NotBlank(message = "IP地址不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String ipAdd;
|
||||
|
||||
/**
|
||||
* 最后在线时间
|
||||
*/
|
||||
@NotNull(message = "最后在线时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Date lastOnlineTime;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
@NotBlank(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String status;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,76 @@
|
||||
package org.dromara.personnel.domain.bo;
|
||||
|
||||
import org.dromara.personnel.domain.OpsScheduling;
|
||||
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.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
/**
|
||||
* 运维-人员排班业务对象 ops_scheduling
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-19
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = OpsScheduling.class, reverseConvertGenerate = false)
|
||||
public class OpsSchedulingBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@NotNull(message = "id不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
@NotNull(message = "项目id不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 运维人员id
|
||||
*/
|
||||
private Long opsUserId;
|
||||
|
||||
@NotNull(message = "运维人员列表不能为null",groups = { AddGroup.class})
|
||||
@Size(min = 1, message = "运维人员列表至少包含一个元素")
|
||||
private List<SchedulingUserTypeBo> userTypeBos;
|
||||
|
||||
/**
|
||||
* 排班类型id
|
||||
*/
|
||||
// @NotBlank(message = "排班类型id不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long schedulingType;
|
||||
|
||||
/**
|
||||
* 排班日期
|
||||
*/
|
||||
// @NotNull(message = "排班日期不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private LocalDate schedulingDate;
|
||||
|
||||
/**
|
||||
* 排班开始时间
|
||||
*/
|
||||
// @NotNull(message = "排班开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private LocalDateTime schedulingStartTime;
|
||||
|
||||
/**
|
||||
* 排班结束时间
|
||||
*/
|
||||
// @NotNull(message = "排班结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private LocalDateTime schedulingEndTime;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,63 @@
|
||||
package org.dromara.personnel.domain.bo;
|
||||
|
||||
import org.dromara.personnel.domain.OpsSchedulingDate;
|
||||
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.time.LocalTime;
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
/**
|
||||
* 运维-排班时间类型业务对象 ops_scheduling_date
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-19
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = OpsSchedulingDate.class, reverseConvertGenerate = false)
|
||||
public class OpsSchedulingDateBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@NotNull(message = "id不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
@NotNull(message = "项目id不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 排班名称
|
||||
*/
|
||||
@NotBlank(message = "排班名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String schedulingName;
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
*/
|
||||
@NotNull(message = "开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private LocalTime startTime;
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
*/
|
||||
@NotNull(message = "结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private LocalTime endTime;
|
||||
|
||||
/**
|
||||
* 时长
|
||||
*/
|
||||
private Double duration;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,44 @@
|
||||
package org.dromara.personnel.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.personnel.domain.OpsScheduling;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 运维-人员排班业务对象 ops_scheduling
|
||||
*
|
||||
* @author LionLi
|
||||
* @date 2025-09-19
|
||||
*/
|
||||
@Data
|
||||
public class OpsSchedulingReq implements Serializable {
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
|
||||
/**
|
||||
* 排班开始日期
|
||||
*/
|
||||
private LocalDate schedulingStartDate;
|
||||
/**
|
||||
* 排班结束日期
|
||||
*/
|
||||
private LocalDate schedulingEndDate;
|
||||
|
||||
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user