From 55a74815b2f84fa6c9b68b31009eb3d044ff297b Mon Sep 17 00:00:00 2001
From: dk <1260500659@qq.com>
Date: Tue, 14 Jul 2026 16:38:11 +0800
Subject: [PATCH] =?UTF-8?q?feat(ai-report):=20=E6=96=B0=E5=A2=9EMinIO?=
=?UTF-8?q?=E6=96=87=E4=BB=B6=E5=AD=98=E5=82=A8=E6=9C=8D=E5=8A=A1=20-=20?=
=?UTF-8?q?=E6=B7=BB=E5=8A=A0AiReportFileConst=E5=92=8CAiReportFileExtensi?=
=?UTF-8?q?onConst=E5=B8=B8=E9=87=8F=E7=B1=BB=20-=20=E5=AE=9E=E7=8E=B0AiRe?=
=?UTF-8?q?portMinioStorageService=E5=AD=98=E5=82=A8=E6=9C=8D=E5=8A=A1=20-?=
=?UTF-8?q?=20=E6=B7=BB=E5=8A=A0AiReportMinioProperties=E9=85=8D=E7=BD=AE?=
=?UTF-8?q?=E7=B1=BB=20-=20=E9=9B=86=E6=88=90MinIO=E4=BE=9D=E8=B5=96?=
=?UTF-8?q?=E5=88=B0ai-report-common=E6=A8=A1=E5=9D=97=20-=20=E9=85=8D?=
=?UTF-8?q?=E7=BD=AE=E5=BA=94=E7=94=A8yml=E4=B8=AD=E7=9A=84ai-report?=
=?UTF-8?q?=E6=A1=B6=E8=AE=BE=E7=BD=AE=20-=20=E6=9B=B4=E6=96=B0=E6=8A=A5?=
=?UTF-8?q?=E5=91=8A=E6=A8=A1=E5=9E=8B=E6=8E=A7=E5=88=B6=E5=99=A8=E4=BD=BF?=
=?UTF-8?q?=E7=94=A8MinIO=E5=AD=98=E5=82=A8=E6=9C=8D=E5=8A=A1=20-=20?=
=?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8A=A5=E5=91=8A=E6=A8=A1=E5=9E=8B=E6=96=87?=
=?UTF-8?q?=E4=BB=B6=E5=AD=98=E5=82=A8=E7=BB=84=E4=BB=B6=E9=9B=86=E6=88=90?=
=?UTF-8?q?MinIO=20-=20=E6=B7=BB=E5=8A=A0=E7=9B=B8=E5=85=B3=E5=8D=95?=
=?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95=E9=AA=8C=E8=AF=81=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ai-report/ai-report-common/pom.xml | 35 +
.../config/AiReportMinioProperties.java | 36 +
.../common/constant/AiReportFileConst.java | 16 +
.../constant/AiReportFileExtensionConst.java | 27 +
.../storage/AiReportMinioStorageService.java | 384 +++++
ai-report/pom.xml | 1 +
ai-report/report-model/pom.xml | 6 +
.../ReportModelFileStorageService.java | 135 +-
.../controller/ReportModelController.java | 50 +-
.../service/impl/ReportModelServiceImpl.java | 20 +-
.../ReportModelFileStorageServiceTest.java | 38 +-
ai-report/test-device/pom.xml | 6 +
.../TestDeviceReportStorageService.java | 138 +-
.../controller/TestDeviceController.java | 12 +-
.../service/impl/TestDeviceServiceImpl.java | 12 +-
.../TestDeviceReportStorageServiceTest.java | 34 +-
.../controller/TestDeviceControllerTest.java | 12 +-
ai-report/test-report/pom.xml | 6 +
.../TestReportLedgerImportService.java | 21 +-
.../component/TestReportStorageService.java | 448 +++---
.../pojo/param/TestReportParam.java | 38 +-
.../testreport/pojo/po/TestReportPointPO.java | 5 -
.../testreport/pojo/vo/TestReportPointVO.java | 4 -
.../service/impl/TestReportServiceImpl.java | 101 +-
.../impl/TestReportServiceImplTest.java | 5 -
entrance/src/main/resources/application.yml | 1 +
tmp/cn_tool.sql | 1395 +++++++++++++----
tmp/sys-file.sql | 20 -
tmp/sys-user-signature.sql | 16 -
29 files changed, 2111 insertions(+), 911 deletions(-)
create mode 100644 ai-report/ai-report-common/pom.xml
create mode 100644 ai-report/ai-report-common/src/main/java/com/njcn/gather/aireport/common/config/AiReportMinioProperties.java
create mode 100644 ai-report/ai-report-common/src/main/java/com/njcn/gather/aireport/common/constant/AiReportFileConst.java
create mode 100644 ai-report/ai-report-common/src/main/java/com/njcn/gather/aireport/common/constant/AiReportFileExtensionConst.java
create mode 100644 ai-report/ai-report-common/src/main/java/com/njcn/gather/aireport/common/storage/AiReportMinioStorageService.java
delete mode 100644 tmp/sys-file.sql
delete mode 100644 tmp/sys-user-signature.sql
diff --git a/ai-report/ai-report-common/pom.xml b/ai-report/ai-report-common/pom.xml
new file mode 100644
index 0000000..5f8161a
--- /dev/null
+++ b/ai-report/ai-report-common/pom.xml
@@ -0,0 +1,35 @@
+
+
+ 4.0.0
+
+
+ com.njcn.gather
+ ai-report
+ 1.0.0
+
+
+ ai-report-common
+ jar
+
+
+
+ com.njcn
+ njcn-common
+ 0.0.1
+
+
+
+ com.njcn
+ spingboot2.3.12
+ 2.3.12
+
+
+
+ io.minio
+ minio
+ 8.4.3
+
+
+
diff --git a/ai-report/ai-report-common/src/main/java/com/njcn/gather/aireport/common/config/AiReportMinioProperties.java b/ai-report/ai-report-common/src/main/java/com/njcn/gather/aireport/common/config/AiReportMinioProperties.java
new file mode 100644
index 0000000..d99db35
--- /dev/null
+++ b/ai-report/ai-report-common/src/main/java/com/njcn/gather/aireport/common/config/AiReportMinioProperties.java
@@ -0,0 +1,36 @@
+package com.njcn.gather.aireport.common.config;
+
+import cn.hutool.core.util.StrUtil;
+import com.njcn.common.pojo.enums.response.CommonResponseEnum;
+import com.njcn.common.pojo.exception.BusinessException;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * ai-report MinIO 配置。
+ */
+@Data
+@Component
+@ConfigurationProperties(prefix = "storage.minio")
+public class AiReportMinioProperties {
+
+ private String endpoint;
+
+ private String accessKey;
+
+ private String secretKey;
+
+ private Map buckets = new LinkedHashMap();
+
+ public String requireBucket(String bucketKey) {
+ String bucketName = buckets.get(bucketKey);
+ if (StrUtil.isBlank(bucketName)) {
+ throw new BusinessException(CommonResponseEnum.FAIL, "MinIO桶配置缺失:" + bucketKey);
+ }
+ return bucketName;
+ }
+}
diff --git a/ai-report/ai-report-common/src/main/java/com/njcn/gather/aireport/common/constant/AiReportFileConst.java b/ai-report/ai-report-common/src/main/java/com/njcn/gather/aireport/common/constant/AiReportFileConst.java
new file mode 100644
index 0000000..363afbf
--- /dev/null
+++ b/ai-report/ai-report-common/src/main/java/com/njcn/gather/aireport/common/constant/AiReportFileConst.java
@@ -0,0 +1,16 @@
+package com.njcn.gather.aireport.common.constant;
+
+/**
+ * ai-report 文件常量。
+ */
+public final class AiReportFileConst {
+
+ private AiReportFileConst() {
+ }
+
+ public static final String BUCKET_KEY_AI_REPORT = "ai-report";
+
+ public static final String BIZ_DIR_REPORT_MODEL = "report-model";
+ public static final String BIZ_DIR_TEST_DEVICE = "test-device";
+ public static final String BIZ_DIR_TEST_REPORT = "test-report";
+}
diff --git a/ai-report/ai-report-common/src/main/java/com/njcn/gather/aireport/common/constant/AiReportFileExtensionConst.java b/ai-report/ai-report-common/src/main/java/com/njcn/gather/aireport/common/constant/AiReportFileExtensionConst.java
new file mode 100644
index 0000000..1e5f4ca
--- /dev/null
+++ b/ai-report/ai-report-common/src/main/java/com/njcn/gather/aireport/common/constant/AiReportFileExtensionConst.java
@@ -0,0 +1,27 @@
+package com.njcn.gather.aireport.common.constant;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+/**
+ * ai-report 文件扩展名白名单。
+ */
+public final class AiReportFileExtensionConst {
+
+ private AiReportFileExtensionConst() {
+ }
+
+ public static final Set ALLOWED_EXTENSIONS = unmodifiable("docx", "xlsx", "pdf");
+
+ public static final Set WORD_EXTENSIONS = unmodifiable("docx");
+
+ public static final Set EXCEL_EXTENSIONS = unmodifiable("xlsx");
+
+ public static final Set PDF_EXTENSIONS = unmodifiable("pdf");
+
+ private static Set unmodifiable(String... extensions) {
+ return Collections.unmodifiableSet(new LinkedHashSet(Arrays.asList(extensions)));
+ }
+}
diff --git a/ai-report/ai-report-common/src/main/java/com/njcn/gather/aireport/common/storage/AiReportMinioStorageService.java b/ai-report/ai-report-common/src/main/java/com/njcn/gather/aireport/common/storage/AiReportMinioStorageService.java
new file mode 100644
index 0000000..0a617ad
--- /dev/null
+++ b/ai-report/ai-report-common/src/main/java/com/njcn/gather/aireport/common/storage/AiReportMinioStorageService.java
@@ -0,0 +1,384 @@
+package com.njcn.gather.aireport.common.storage;
+
+import cn.hutool.core.util.StrUtil;
+import com.njcn.common.pojo.enums.response.CommonResponseEnum;
+import com.njcn.common.pojo.exception.BusinessException;
+import com.njcn.gather.aireport.common.config.AiReportMinioProperties;
+import com.njcn.gather.aireport.common.constant.AiReportFileConst;
+import io.minio.BucketExistsArgs;
+import io.minio.GetObjectArgs;
+import io.minio.GetObjectResponse;
+import io.minio.ListObjectsArgs;
+import io.minio.MakeBucketArgs;
+import io.minio.MinioClient;
+import io.minio.PutObjectArgs;
+import io.minio.RemoveObjectArgs;
+import io.minio.Result;
+import io.minio.StatObjectArgs;
+import io.minio.errors.ErrorResponseException;
+import io.minio.messages.Item;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.MediaType;
+import org.springframework.http.MediaTypeFactory;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.UUID;
+
+/**
+ * ai-report MinIO 存储服务。
+ */
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class AiReportMinioStorageService {
+
+ private final AiReportMinioProperties properties;
+
+ public StoredFile saveMultipartFile(String bizDir, String ownerId, MultipartFile file, boolean keepOriginalName) {
+ MultipartFile normalizedFile = requireFile(file);
+ String originalFileName = normalizeFileName(normalizedFile.getOriginalFilename());
+ String targetFileName = keepOriginalName ? sanitizeFileName(originalFileName) : buildStoredFileName(originalFileName);
+ String objectName = buildObjectName(bizDir, ownerId, targetFileName);
+ String bucketName = requireBucket();
+ String contentType = resolveContentType(normalizedFile.getContentType(), originalFileName);
+ try (InputStream inputStream = normalizedFile.getInputStream()) {
+ putObject(bucketName, objectName, inputStream, normalizedFile.getSize(), contentType);
+ return new StoredFile(bucketName, objectName, targetFileName, originalFileName, contentType, normalizedFile.getSize());
+ } catch (BusinessException exception) {
+ throw exception;
+ } catch (Exception exception) {
+ log.error("save multipart file to minio failed, objectName={}", objectName, exception);
+ throw new BusinessException(CommonResponseEnum.FAIL, "保存文件失败");
+ }
+ }
+
+ public StoredFile saveInputStream(String bizDir, String ownerId, String originalFileName, InputStream inputStream,
+ long size, String contentType, boolean keepOriginalName) {
+ String normalizedFileName = normalizeFileName(originalFileName);
+ String targetFileName = keepOriginalName ? sanitizeFileName(normalizedFileName) : buildStoredFileName(normalizedFileName);
+ String objectName = buildObjectName(bizDir, ownerId, targetFileName);
+ String bucketName = requireBucket();
+ try {
+ putObject(bucketName, objectName, inputStream, size, resolveContentType(contentType, normalizedFileName));
+ return new StoredFile(bucketName, objectName, targetFileName, normalizedFileName,
+ resolveContentType(contentType, normalizedFileName), size);
+ } catch (BusinessException exception) {
+ throw exception;
+ } catch (Exception exception) {
+ log.error("save input stream to minio failed, objectName={}", objectName, exception);
+ throw new BusinessException(CommonResponseEnum.FAIL, "保存文件失败");
+ }
+ }
+
+ public StoredFile saveBytes(String bizDir, String ownerId, String originalFileName, byte[] content,
+ String contentType, boolean keepOriginalName) {
+ byte[] fileContent = content == null ? new byte[0] : content;
+ return saveInputStream(bizDir, ownerId, originalFileName, new ByteArrayInputStream(fileContent),
+ fileContent.length, contentType, keepOriginalName);
+ }
+
+ public StoredObject getObject(String objectName) {
+ if (StrUtil.isBlank(objectName)) {
+ throw new BusinessException(CommonResponseEnum.FAIL, "文件不存在");
+ }
+ String bucketName = requireBucket();
+ try {
+ GetObjectResponse response = buildClient().getObject(GetObjectArgs.builder()
+ .bucket(bucketName)
+ .object(objectName)
+ .build());
+ return new StoredObject(bucketName, objectName, response);
+ } catch (BusinessException exception) {
+ throw exception;
+ } catch (Exception exception) {
+ log.error("read file from minio failed, objectName={}", objectName, exception);
+ throw new BusinessException(CommonResponseEnum.FAIL, "读取文件失败");
+ }
+ }
+
+ public byte[] readBytes(String objectName) {
+ try (StoredObject storedObject = getObject(objectName);
+ InputStream inputStream = storedObject.getInputStream();
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
+ byte[] buffer = new byte[8192];
+ int length;
+ while ((length = inputStream.read(buffer)) != -1) {
+ outputStream.write(buffer, 0, length);
+ }
+ return outputStream.toByteArray();
+ } catch (BusinessException exception) {
+ throw exception;
+ } catch (Exception exception) {
+ log.error("read file bytes from minio failed, objectName={}", objectName, exception);
+ throw new BusinessException(CommonResponseEnum.FAIL, "读取文件失败");
+ }
+ }
+
+ public Path downloadToTempFile(String objectName, String fileName) {
+ String normalizedFileName = normalizeFileName(fileName);
+ String extension = resolveExtension(normalizedFileName);
+ String suffix = StrUtil.isBlank(extension) ? ".tmp" : "." + extension;
+ try (StoredObject storedObject = getObject(objectName);
+ InputStream inputStream = storedObject.getInputStream()) {
+ Path tempFile = Files.createTempFile("ai-report-", suffix);
+ Files.copy(inputStream, tempFile, java.nio.file.StandardCopyOption.REPLACE_EXISTING);
+ return tempFile;
+ } catch (BusinessException exception) {
+ throw exception;
+ } catch (Exception exception) {
+ log.error("download minio object to temp file failed, objectName={}", objectName, exception);
+ throw new BusinessException(CommonResponseEnum.FAIL, "读取文件失败");
+ }
+ }
+
+ public List listFileNames(String prefix) {
+ List objectNames = listObjectNames(prefix);
+ List result = new ArrayList();
+ for (String objectName : objectNames) {
+ int slashIndex = objectName.lastIndexOf('/');
+ result.add(slashIndex >= 0 ? objectName.substring(slashIndex + 1) : objectName);
+ }
+ return result;
+ }
+
+ public List listObjectNames(String prefix) {
+ List result = new ArrayList();
+ if (StrUtil.isBlank(prefix)) {
+ return result;
+ }
+ try {
+ Iterable> iterable = buildClient().listObjects(ListObjectsArgs.builder()
+ .bucket(requireBucket())
+ .prefix(trimPath(prefix) + "/")
+ .recursive(true)
+ .build());
+ for (Result- itemResult : iterable) {
+ Item item = itemResult.get();
+ if (item == null || item.isDir()) {
+ continue;
+ }
+ String objectName = item.objectName();
+ if (StrUtil.isBlank(objectName)) {
+ continue;
+ }
+ result.add(objectName);
+ }
+ return result;
+ } catch (Exception exception) {
+ log.error("list minio objects failed, prefix={}", prefix, exception);
+ throw new BusinessException(CommonResponseEnum.FAIL, "读取文件失败");
+ }
+ }
+
+ public void deleteQuietly(String objectName) {
+ if (StrUtil.isBlank(objectName)) {
+ return;
+ }
+ try {
+ buildClient().removeObject(RemoveObjectArgs.builder()
+ .bucket(requireBucket())
+ .object(objectName)
+ .build());
+ } catch (Exception exception) {
+ log.warn("delete file from minio failed, objectName={}", objectName, exception);
+ }
+ }
+
+ public boolean exists(String objectName) {
+ if (StrUtil.isBlank(objectName)) {
+ return false;
+ }
+ try {
+ buildClient().statObject(StatObjectArgs.builder()
+ .bucket(requireBucket())
+ .object(objectName)
+ .build());
+ return true;
+ } catch (ErrorResponseException exception) {
+ String errorCode = exception.errorResponse() == null ? null : exception.errorResponse().code();
+ if ("NoSuchKey".equals(errorCode) || "NoSuchObject".equals(errorCode) || "NoSuchBucket".equals(errorCode)) {
+ return false;
+ }
+ log.error("stat minio object failed, objectName={}", objectName, exception);
+ throw new BusinessException(CommonResponseEnum.FAIL, "读取文件失败");
+ } catch (Exception exception) {
+ log.error("stat minio object failed, objectName={}", objectName, exception);
+ throw new BusinessException(CommonResponseEnum.FAIL, "读取文件失败");
+ }
+ }
+
+ public void deleteTempFileQuietly(Path tempFile) {
+ if (tempFile == null) {
+ return;
+ }
+ try {
+ Files.deleteIfExists(tempFile);
+ } catch (IOException ignored) {
+ // 临时文件清理失败不影响主流程。
+ }
+ }
+
+ private void putObject(String bucketName, String objectName, InputStream inputStream, long size, String contentType) throws Exception {
+ ensureBucket(buildClient(), bucketName);
+ buildClient().putObject(PutObjectArgs.builder()
+ .bucket(bucketName)
+ .object(objectName)
+ .stream(inputStream, size, -1)
+ .contentType(contentType)
+ .build());
+ }
+
+ private MultipartFile requireFile(MultipartFile file) {
+ if (file == null || file.isEmpty()) {
+ throw new BusinessException(CommonResponseEnum.FAIL, "上传文件不能为空");
+ }
+ return file;
+ }
+
+ private String requireBucket() {
+ validateConfig();
+ return properties.requireBucket(AiReportFileConst.BUCKET_KEY_AI_REPORT);
+ }
+
+ private void validateConfig() {
+ if (StrUtil.hasBlank(properties.getEndpoint(), properties.getAccessKey(), properties.getSecretKey())) {
+ throw new BusinessException(CommonResponseEnum.FAIL, "MinIO配置不完整");
+ }
+ }
+
+ private MinioClient buildClient() {
+ return MinioClient.builder()
+ .endpoint(properties.getEndpoint())
+ .credentials(properties.getAccessKey(), properties.getSecretKey())
+ .build();
+ }
+
+ private void ensureBucket(MinioClient client, String bucketName) throws Exception {
+ boolean exists = client.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
+ if (!exists) {
+ client.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
+ }
+ }
+
+ private String buildObjectName(String bizDir, String ownerId, String fileName) {
+ StringBuilder builder = new StringBuilder();
+ builder.append(trimPath(bizDir));
+ if (StrUtil.isNotBlank(ownerId)) {
+ builder.append("/").append(trimPath(ownerId));
+ }
+ builder.append("/").append(fileName);
+ return builder.toString();
+ }
+
+ private String buildStoredFileName(String originalFileName) {
+ return UUID.randomUUID().toString().replace("-", "") + "-" + sanitizeFileName(originalFileName);
+ }
+
+ private String sanitizeFileName(String originalFileName) {
+ String fileName = normalizeFileName(originalFileName);
+ int slashIndex = Math.max(fileName.lastIndexOf('/'), fileName.lastIndexOf('\\'));
+ String normalizedFileName = slashIndex >= 0 ? fileName.substring(slashIndex + 1) : fileName;
+ return normalizedFileName.replaceAll("[\\\\/:*?\"<>|]", "_");
+ }
+
+ private String normalizeFileName(String originalFileName) {
+ String fileName = StrUtil.trimToEmpty(originalFileName);
+ if (StrUtil.isBlank(fileName)) {
+ throw new BusinessException(CommonResponseEnum.FAIL, "文件名不能为空");
+ }
+ return fileName;
+ }
+
+ private String trimPath(String value) {
+ String normalized = StrUtil.trimToEmpty(value).replace("\\", "/");
+ while (normalized.startsWith("/")) {
+ normalized = normalized.substring(1);
+ }
+ while (normalized.endsWith("/")) {
+ normalized = normalized.substring(0, normalized.length() - 1);
+ }
+ if (StrUtil.isBlank(normalized)) {
+ throw new BusinessException(CommonResponseEnum.FAIL, "对象目录配置不合法");
+ }
+ return normalized;
+ }
+
+ private String resolveExtension(String fileName) {
+ int dotIndex = fileName.lastIndexOf('.');
+ if (dotIndex < 0 || dotIndex == fileName.length() - 1) {
+ return "";
+ }
+ return fileName.substring(dotIndex + 1).toLowerCase(Locale.ENGLISH);
+ }
+
+ private String resolveContentType(String contentType, String fileName) {
+ if (StrUtil.isNotBlank(contentType)) {
+ return contentType;
+ }
+ return MediaTypeFactory.getMediaType(fileName).map(MediaType::toString)
+ .orElse(MediaType.APPLICATION_OCTET_STREAM_VALUE);
+ }
+
+ @Getter
+ public static class StoredFile {
+ private final String bucketName;
+ private final String objectName;
+ private final String storedFileName;
+ private final String originalFileName;
+ private final String contentType;
+ private final long fileSize;
+
+ public StoredFile(String bucketName, String objectName, String storedFileName, String originalFileName,
+ String contentType, long fileSize) {
+ this.bucketName = bucketName;
+ this.objectName = objectName;
+ this.storedFileName = storedFileName;
+ this.originalFileName = originalFileName;
+ this.contentType = contentType;
+ this.fileSize = fileSize;
+ }
+ }
+
+ public static class StoredObject implements AutoCloseable {
+ private final String bucketName;
+ private final String objectName;
+ private final GetObjectResponse inputStream;
+
+ public StoredObject(String bucketName, String objectName, GetObjectResponse inputStream) {
+ this.bucketName = bucketName;
+ this.objectName = objectName;
+ this.inputStream = inputStream;
+ }
+
+ public String getBucketName() {
+ return bucketName;
+ }
+
+ public String getObjectName() {
+ return objectName;
+ }
+
+ public GetObjectResponse getInputStream() {
+ return inputStream;
+ }
+
+ @Override
+ public void close() throws Exception {
+ if (inputStream != null) {
+ inputStream.close();
+ }
+ }
+ }
+}
diff --git a/ai-report/pom.xml b/ai-report/pom.xml
index 74d4b7b..aa86366 100644
--- a/ai-report/pom.xml
+++ b/ai-report/pom.xml
@@ -16,6 +16,7 @@
AI report capability aggregator.
+ ai-report-common
report-model
client-unit
test-device
diff --git a/ai-report/report-model/pom.xml b/ai-report/report-model/pom.xml
index 1d6db0d..365486b 100644
--- a/ai-report/report-model/pom.xml
+++ b/ai-report/report-model/pom.xml
@@ -14,6 +14,12 @@
jar
+
+ com.njcn.gather
+ ai-report-common
+ 1.0.0
+
+
com.njcn.gather
comservice
diff --git a/ai-report/report-model/src/main/java/com/njcn/gather/aireport/reportmodel/component/ReportModelFileStorageService.java b/ai-report/report-model/src/main/java/com/njcn/gather/aireport/reportmodel/component/ReportModelFileStorageService.java
index b52b1a2..eb065d6 100644
--- a/ai-report/report-model/src/main/java/com/njcn/gather/aireport/reportmodel/component/ReportModelFileStorageService.java
+++ b/ai-report/report-model/src/main/java/com/njcn/gather/aireport/reportmodel/component/ReportModelFileStorageService.java
@@ -1,115 +1,84 @@
package com.njcn.gather.aireport.reportmodel.component;
-import org.springframework.beans.factory.annotation.Value;
+import cn.hutool.core.util.StrUtil;
+import com.njcn.common.pojo.enums.response.CommonResponseEnum;
+import com.njcn.common.pojo.exception.BusinessException;
+import com.njcn.gather.aireport.common.constant.AiReportFileConst;
+import com.njcn.gather.aireport.common.constant.AiReportFileExtensionConst;
+import com.njcn.gather.aireport.common.storage.AiReportMinioStorageService;
+import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
-import java.io.InputStream;
-import java.nio.file.Files;
import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.StandardCopyOption;
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
-import java.util.UUID;
+import java.util.Locale;
/**
- * Local storage for uploaded report model template files.
+ * 报告模板文件 MinIO 存储服务。
*/
@Component
+@RequiredArgsConstructor
public class ReportModelFileStorageService {
- private static final String DEFAULT_STORAGE_DIR = "data/report-model";
- private static final String REPORT_MODEL_STORAGE_DIR = "report-model";
- private static final DateTimeFormatter DATE_DIR_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
-
- @Value("${files.path:}")
- private String filesPath;
+ private final AiReportMinioStorageService minioStorageService;
public StoredFile save(MultipartFile templateFile) {
- if (templateFile == null || templateFile.isEmpty()) {
- throw new IllegalArgumentException("模板文件不能为空");
- }
- try {
- Path storageRoot = resolveStorageRoot();
- String dateDir = LocalDate.now().format(DATE_DIR_FORMATTER);
- Path storageDir = storageRoot.resolve(dateDir).normalize();
- if (!storageDir.startsWith(storageRoot)) {
- throw new IllegalArgumentException("模板文件存储路径不合法");
- }
- Files.createDirectories(storageDir);
- String sanitizedFileName = sanitizeFileName(templateFile.getOriginalFilename());
- String storedFileName = UUID.randomUUID().toString().replace("-", "") + "-" + sanitizedFileName;
- Path target = storageDir.resolve(storedFileName).normalize();
- ensurePathInRoot(storageRoot, target);
- try (InputStream inputStream = templateFile.getInputStream()) {
- Files.copy(inputStream, target, StandardCopyOption.REPLACE_EXISTING);
- }
- String storedPath = storageRoot.relativize(target).toString().replace('\\', '/');
- return new StoredFile(storedPath, sanitizedFileName);
- } catch (Exception exception) {
- throw new IllegalArgumentException("保存模板文件失败: " + exception.getMessage(), exception);
- }
+ validateTemplateFile(templateFile);
+ AiReportMinioStorageService.StoredFile storedFile = minioStorageService.saveMultipartFile(
+ AiReportFileConst.BIZ_DIR_REPORT_MODEL, null, templateFile, false);
+ return new StoredFile(storedFile.getObjectName(), storedFile.getOriginalFileName());
}
- public Path resolveDownloadPath(String storedPath) {
- if (trimToNull(storedPath) == null) {
- throw new IllegalArgumentException("模板文件路径不能为空");
- }
- Path storageRoot = resolveStorageRoot();
- Path target = storageRoot.resolve(storedPath).normalize();
- ensurePathInRoot(storageRoot, target);
- return target;
+ public AiReportMinioStorageService.StoredObject getObject(String storedPath) {
+ return minioStorageService.getObject(storedPath);
+ }
+
+ public byte[] readBytes(String storedPath) {
+ return minioStorageService.readBytes(storedPath);
+ }
+
+ public Path downloadToTempFile(String storedPath, String fileName) {
+ return minioStorageService.downloadToTempFile(storedPath, fileName);
}
public void deleteQuietly(String storedPath) {
- try {
- if (trimToNull(storedPath) != null) {
- Files.deleteIfExists(resolveDownloadPath(storedPath));
- }
- } catch (Exception ignored) {
- // Cleanup failure must not hide the original database error.
- }
+ minioStorageService.deleteQuietly(storedPath);
+ }
+
+ public void deleteTempFileQuietly(Path tempFile) {
+ minioStorageService.deleteTempFileQuietly(tempFile);
}
public String resolveDownloadFileName(String storedPath) {
- Path fileName = Paths.get(storedPath).getFileName();
- if (fileName == null) {
- return "report-model";
+ if (StrUtil.isBlank(storedPath)) {
+ return "report-model.docx";
}
- String name = fileName.toString();
- int separatorIndex = name.indexOf('-');
- return separatorIndex >= 0 && separatorIndex + 1 < name.length() ? name.substring(separatorIndex + 1) : name;
+ int slashIndex = storedPath.lastIndexOf('/');
+ String fileName = slashIndex >= 0 ? storedPath.substring(slashIndex + 1) : storedPath;
+ int separatorIndex = fileName.indexOf('-');
+ return separatorIndex >= 0 && separatorIndex + 1 < fileName.length() ? fileName.substring(separatorIndex + 1) : fileName;
}
- private Path resolveStorageRoot() {
- String configuredPath = trimToNull(filesPath);
- Path path = configuredPath == null ? Paths.get(DEFAULT_STORAGE_DIR) : Paths.get(configuredPath, REPORT_MODEL_STORAGE_DIR);
- return path.toAbsolutePath().normalize();
- }
-
- private void ensurePathInRoot(Path storageRoot, Path target) {
- if (!target.startsWith(storageRoot)) {
- throw new IllegalArgumentException("模板文件路径不合法");
+ private void validateTemplateFile(MultipartFile templateFile) {
+ if (templateFile == null || templateFile.isEmpty()) {
+ throw new IllegalArgumentException("模板文件不能为空");
+ }
+ String fileName = templateFile.getOriginalFilename();
+ if (StrUtil.isBlank(fileName)) {
+ throw new IllegalArgumentException("模板文件名不能为空");
+ }
+ String extension = resolveExtension(fileName);
+ if (!AiReportFileExtensionConst.WORD_EXTENSIONS.contains(extension)) {
+ throw new IllegalArgumentException("模板文件仅支持.docx格式");
}
}
- private String sanitizeFileName(String originalFilename) {
- String fileName = trimToNull(originalFilename);
- if (fileName == null) {
- return "unnamed";
+ private String resolveExtension(String fileName) {
+ int dotIndex = fileName.lastIndexOf('.');
+ if (dotIndex < 0 || dotIndex == fileName.length() - 1) {
+ return "";
}
- String normalizedName = Paths.get(fileName).getFileName().toString();
- String sanitized = normalizedName.replaceAll("[\\\\/:*?\"<>|]", "_");
- return trimToNull(sanitized) == null ? "unnamed" : sanitized;
- }
-
- private String trimToNull(String value) {
- if (value == null) {
- return null;
- }
- String text = value.trim();
- return text.isEmpty() ? null : text;
+ return fileName.substring(dotIndex + 1).toLowerCase(Locale.ENGLISH);
}
public static class StoredFile {
diff --git a/ai-report/report-model/src/main/java/com/njcn/gather/aireport/reportmodel/controller/ReportModelController.java b/ai-report/report-model/src/main/java/com/njcn/gather/aireport/reportmodel/controller/ReportModelController.java
index 1723975..e6404ac 100644
--- a/ai-report/report-model/src/main/java/com/njcn/gather/aireport/reportmodel/controller/ReportModelController.java
+++ b/ai-report/report-model/src/main/java/com/njcn/gather/aireport/reportmodel/controller/ReportModelController.java
@@ -7,6 +7,7 @@ import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
+import com.njcn.gather.aireport.common.storage.AiReportMinioStorageService;
import com.njcn.gather.aireport.reportmodel.component.ReportModelFileStorageService;
import com.njcn.gather.aireport.reportmodel.pojo.param.ReportModelParam;
import com.njcn.gather.aireport.reportmodel.pojo.po.ReportModelPO;
@@ -33,10 +34,8 @@ import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
-import java.io.InputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
@@ -110,21 +109,14 @@ public class ReportModelController extends BaseController {
@GetMapping("/{id}/download")
public ResponseEntity download(@PathVariable("id") String id) {
ReportModelPO model = reportModelService.requireNormal(id);
- Path filePath = reportModelFileStorageService.resolveDownloadPath(model.getPath());
- if (!Files.exists(filePath) || !Files.isRegularFile(filePath)) {
- throw new BusinessException(CommonResponseEnum.FAIL, "模板文件不存在");
- }
try {
- String fileName = model.getFileName();
- if (fileName == null || fileName.trim().isEmpty()) {
- fileName = reportModelFileStorageService.resolveDownloadFileName(model.getPath());
- }
+ String fileName = resolveFileName(model);
String encodedFileName = encodeFileName(fileName);
- InputStream inputStream = Files.newInputStream(filePath);
+ AiReportMinioStorageService.StoredObject storedObject = reportModelFileStorageService.getObject(model.getPath());
return ResponseEntity.ok()
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename*=UTF-8''" + encodedFileName)
- .body(new InputStreamResource(inputStream));
+ .body(new InputStreamResource(storedObject.getInputStream()));
} catch (Exception exception) {
throw new BusinessException(CommonResponseEnum.FAIL, "读取模板文件失败");
}
@@ -136,21 +128,19 @@ public class ReportModelController extends BaseController {
@GetMapping("/{id}/preview")
public ResponseEntity preview(@PathVariable("id") String id) {
ReportModelPO model = reportModelService.requireNormal(id);
- Path filePath = reportModelFileStorageService.resolveDownloadPath(model.getPath());
- if (!Files.exists(filePath) || !Files.isRegularFile(filePath)) {
- throw new BusinessException(CommonResponseEnum.FAIL, "模板文件不存在");
+ String fileName = resolveFileName(model);
+ Path tempFile = reportModelFileStorageService.downloadToTempFile(model.getPath(), fileName);
+ try {
+ FilePreviewService.PreviewContent previewContent = filePreviewService.preview(tempFile, fileName);
+ return ResponseEntity.ok()
+ .header(HttpHeaders.CONTENT_DISPOSITION,
+ "inline; filename*=UTF-8''" + encodeFileName(fileName))
+ .header(HttpHeaders.CACHE_CONTROL, "no-cache, no-store, must-revalidate")
+ .contentType(MediaType.parseMediaType(previewContent.getContentType()))
+ .body(previewContent.getContent());
+ } finally {
+ reportModelFileStorageService.deleteTempFileQuietly(tempFile);
}
- String fileName = model.getFileName();
- if (fileName == null || fileName.trim().isEmpty()) {
- fileName = reportModelFileStorageService.resolveDownloadFileName(model.getPath());
- }
- FilePreviewService.PreviewContent previewContent = filePreviewService.preview(filePath, fileName);
- return ResponseEntity.ok()
- .header(HttpHeaders.CONTENT_DISPOSITION,
- "inline; filename*=UTF-8''" + encodeFileName(fileName))
- .header(HttpHeaders.CACHE_CONTROL, "no-cache, no-store, must-revalidate")
- .contentType(MediaType.parseMediaType(previewContent.getContentType()))
- .body(previewContent.getContent());
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.UPDATE)
@@ -170,4 +160,12 @@ public class ReportModelController extends BaseController {
throw new BusinessException(CommonResponseEnum.FAIL, "编码模板文件名失败");
}
}
+
+ private String resolveFileName(ReportModelPO model) {
+ String fileName = model.getFileName();
+ if (fileName == null || fileName.trim().isEmpty()) {
+ return reportModelFileStorageService.resolveDownloadFileName(model.getPath());
+ }
+ return fileName;
+ }
}
diff --git a/ai-report/report-model/src/main/java/com/njcn/gather/aireport/reportmodel/service/impl/ReportModelServiceImpl.java b/ai-report/report-model/src/main/java/com/njcn/gather/aireport/reportmodel/service/impl/ReportModelServiceImpl.java
index 13070f7..918299b 100644
--- a/ai-report/report-model/src/main/java/com/njcn/gather/aireport/reportmodel/service/impl/ReportModelServiceImpl.java
+++ b/ai-report/report-model/src/main/java/com/njcn/gather/aireport/reportmodel/service/impl/ReportModelServiceImpl.java
@@ -107,6 +107,7 @@ public class ReportModelServiceImpl extends ServiceImpl models = this.lambdaQuery()
+ .in(ReportModelPO::getId, validIds)
+ .eq(ReportModelPO::getStatus, ReportModelConst.STATUS_NORMAL)
+ .list();
+ boolean deleted = this.lambdaUpdate()
.set(ReportModelPO::getStatus, ReportModelConst.STATUS_DELETED)
.set(ReportModelPO::getState, ReportModelConst.STATE_DELETED)
.set(ReportModelPO::getUpdateBy, resolveCurrentUserId())
@@ -143,6 +153,12 @@ public class ReportModelServiceImpl extends ServiceImpljar
+
+ com.njcn.gather
+ ai-report-common
+ 1.0.0
+
+
com.njcn
njcn-common
diff --git a/ai-report/test-device/src/main/java/com/njcn/gather/aireport/testdevice/component/TestDeviceReportStorageService.java b/ai-report/test-device/src/main/java/com/njcn/gather/aireport/testdevice/component/TestDeviceReportStorageService.java
index 6feb755..8587957 100644
--- a/ai-report/test-device/src/main/java/com/njcn/gather/aireport/testdevice/component/TestDeviceReportStorageService.java
+++ b/ai-report/test-device/src/main/java/com/njcn/gather/aireport/testdevice/component/TestDeviceReportStorageService.java
@@ -3,98 +3,65 @@ package com.njcn.gather.aireport.testdevice.component;
import cn.hutool.core.util.StrUtil;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
-import org.springframework.beans.factory.annotation.Value;
+import com.njcn.gather.aireport.common.constant.AiReportFileConst;
+import com.njcn.gather.aireport.common.constant.AiReportFileExtensionConst;
+import com.njcn.gather.aireport.common.storage.AiReportMinioStorageService;
+import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
-import java.io.IOException;
import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.StandardCopyOption;
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
-import java.util.UUID;
+import java.util.Locale;
@Component
+@RequiredArgsConstructor
public class TestDeviceReportStorageService {
- private static final String DEFAULT_STORAGE_DIR = "data/test-device-report";
- private static final String TEST_DEVICE_REPORT_STORAGE_DIR = "test-device-report";
- private static final DateTimeFormatter DATE_DIR_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
private static final long MAX_REPORT_SIZE = 10L * 1024L * 1024L;
private static final int MAX_ORIGINAL_NAME_LENGTH = 80;
- @Value("${files.path:}")
- private String filesPath;
+ private final AiReportMinioStorageService minioStorageService;
public String save(MultipartFile reportFile) {
if (reportFile == null || reportFile.isEmpty()) {
throw new BusinessException(CommonResponseEnum.FAIL, "校准报告不能为空");
}
validatePdf(reportFile.getOriginalFilename(), reportFile.getSize());
- try (InputStream inputStream = reportFile.getInputStream()) {
- return savePdf(reportFile.getOriginalFilename(), inputStream, reportFile.getSize());
- } catch (IOException exception) {
- throw new BusinessException(CommonResponseEnum.FAIL, "保存校准报告失败");
- }
+ return minioStorageService.saveMultipartFile(
+ AiReportFileConst.BIZ_DIR_TEST_DEVICE, null, reportFile, false).getObjectName();
}
public String savePdf(String originalFilename, InputStream inputStream, long size) {
validatePdf(originalFilename, size);
- try {
- Path storageRoot = resolveStorageRoot();
- String dateDir = LocalDate.now().format(DATE_DIR_FORMATTER);
- Path storageDir = storageRoot.resolve(dateDir).normalize();
- ensurePathInRoot(storageRoot, storageDir);
- Files.createDirectories(storageDir);
-
- String fileName = UUID.randomUUID().toString().replace("-", "") + "-" + sanitizeFileName(originalFilename);
- Path target = storageDir.resolve(fileName).normalize();
- ensurePathInRoot(storageRoot, target);
- copyWithSizeLimit(inputStream, target);
- return storageRoot.relativize(target).toString().replace('\\', '/');
- } catch (BusinessException exception) {
- throw exception;
- } catch (Exception exception) {
- throw new BusinessException(CommonResponseEnum.FAIL, "保存校准报告失败");
- }
+ return minioStorageService.saveInputStream(AiReportFileConst.BIZ_DIR_TEST_DEVICE, null,
+ trimFileName(originalFilename), inputStream, size, "application/pdf", false).getObjectName();
}
- public Path resolveDownloadPath(String storedPath) {
- if (StrUtil.isBlank(storedPath)) {
- throw new BusinessException(CommonResponseEnum.FAIL, "校准报告路径不能为空");
- }
- Path storageRoot = resolveStorageRoot();
- Path target = storageRoot.resolve(storedPath).normalize();
- ensurePathInRoot(storageRoot, target);
- return target;
+ public AiReportMinioStorageService.StoredObject getObject(String storedPath) {
+ return minioStorageService.getObject(storedPath);
}
public String resolveDownloadFileName(String storedPath) {
- Path fileName = Paths.get(storedPath).getFileName();
- if (fileName == null) {
+ if (StrUtil.isBlank(storedPath)) {
return "校准报告.pdf";
}
- String name = fileName.toString();
- int separatorIndex = name.indexOf('-');
- return separatorIndex >= 0 && separatorIndex + 1 < name.length() ? name.substring(separatorIndex + 1) : name;
+ int slashIndex = storedPath.lastIndexOf('/');
+ String fileName = slashIndex >= 0 ? storedPath.substring(slashIndex + 1) : storedPath;
+ int separatorIndex = fileName.indexOf('-');
+ return separatorIndex >= 0 && separatorIndex + 1 < fileName.length() ? fileName.substring(separatorIndex + 1) : fileName;
}
public void deleteQuietly(String storedPath) {
- try {
- if (StrUtil.isNotBlank(storedPath)) {
- Files.deleteIfExists(resolveDownloadPath(storedPath));
- }
- } catch (Exception ignored) {
- // 文件清理失败不能覆盖原始业务结果。
- }
+ minioStorageService.deleteQuietly(storedPath);
}
private void validatePdf(String originalFilename, long size) {
- if (StrUtil.isBlank(originalFilename) || !originalFilename.toLowerCase().endsWith(".pdf")) {
+ String fileName = trimFileName(originalFilename);
+ if (StrUtil.isBlank(fileName)) {
+ throw new BusinessException(CommonResponseEnum.FAIL, "校准报告文件名不能为空");
+ }
+ String extension = resolveExtension(fileName);
+ if (!AiReportFileExtensionConst.PDF_EXTENSIONS.contains(extension)) {
throw new BusinessException(CommonResponseEnum.FAIL, "校准报告仅支持PDF文件");
}
if (size > MAX_REPORT_SIZE) {
@@ -102,48 +69,27 @@ public class TestDeviceReportStorageService {
}
}
- private void copyWithSizeLimit(InputStream inputStream, Path target) throws IOException {
- Path tempFile = Files.createTempFile(target.getParent(), "upload-", ".tmp");
- long bytes = 0L;
- byte[] buffer = new byte[8192];
- try {
- int length;
- try (InputStream source = inputStream;
- OutputStream targetStream = Files.newOutputStream(tempFile)) {
- while ((length = source.read(buffer)) != -1) {
- bytes += length;
- if (bytes > MAX_REPORT_SIZE) {
- throw new BusinessException(CommonResponseEnum.FAIL, "校准报告不能超过10MB");
- }
- targetStream.write(buffer, 0, length);
- }
- }
- Files.move(tempFile, target, StandardCopyOption.REPLACE_EXISTING);
- } finally {
- Files.deleteIfExists(tempFile);
+ private String trimFileName(String originalFilename) {
+ String fileName = originalFilename == null ? null : originalFilename.trim();
+ if (StrUtil.isBlank(fileName)) {
+ return fileName;
}
- }
-
- private Path resolveStorageRoot() {
- String configuredPath = StrUtil.isBlank(filesPath) ? null : filesPath.trim();
- Path path = configuredPath == null ? Paths.get(DEFAULT_STORAGE_DIR) : Paths.get(configuredPath, TEST_DEVICE_REPORT_STORAGE_DIR);
- return path.toAbsolutePath().normalize();
- }
-
- private void ensurePathInRoot(Path storageRoot, Path target) {
- if (!target.startsWith(storageRoot)) {
- throw new BusinessException(CommonResponseEnum.FAIL, "校准报告路径不合法");
- }
- }
-
- private String sanitizeFileName(String originalFilename) {
- String fileName = Paths.get(originalFilename).getFileName().toString();
- String sanitized = fileName.replaceAll("[\\\\/:*?\"<>|]", "_");
+ int slashIndex = Math.max(fileName.lastIndexOf('/'), fileName.lastIndexOf('\\'));
+ String normalizedName = slashIndex >= 0 ? fileName.substring(slashIndex + 1) : fileName;
+ String sanitized = normalizedName.replaceAll("[\\\\/:*?\"<>|]", "_");
if (sanitized.length() > MAX_ORIGINAL_NAME_LENGTH) {
- String suffix = sanitized.toLowerCase().endsWith(".pdf") ? ".pdf" : "";
+ String suffix = sanitized.toLowerCase(Locale.ENGLISH).endsWith(".pdf") ? ".pdf" : "";
int keepLength = MAX_ORIGINAL_NAME_LENGTH - suffix.length();
sanitized = sanitized.substring(0, keepLength) + suffix;
}
- return StrUtil.isBlank(sanitized) ? "report.pdf" : sanitized;
+ return sanitized;
+ }
+
+ private String resolveExtension(String fileName) {
+ int dotIndex = fileName.lastIndexOf('.');
+ if (dotIndex < 0 || dotIndex == fileName.length() - 1) {
+ return "";
+ }
+ return fileName.substring(dotIndex + 1).toLowerCase(Locale.ENGLISH);
}
}
diff --git a/ai-report/test-device/src/main/java/com/njcn/gather/aireport/testdevice/controller/TestDeviceController.java b/ai-report/test-device/src/main/java/com/njcn/gather/aireport/testdevice/controller/TestDeviceController.java
index b298346..82f600a 100644
--- a/ai-report/test-device/src/main/java/com/njcn/gather/aireport/testdevice/controller/TestDeviceController.java
+++ b/ai-report/test-device/src/main/java/com/njcn/gather/aireport/testdevice/controller/TestDeviceController.java
@@ -7,6 +7,7 @@ import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
+import com.njcn.gather.aireport.common.storage.AiReportMinioStorageService;
import com.njcn.gather.aireport.testdevice.component.TestDeviceReportStorageService;
import com.njcn.gather.aireport.testdevice.pojo.param.TestDeviceParam;
import com.njcn.gather.aireport.testdevice.pojo.po.TestDevicePO;
@@ -34,10 +35,7 @@ import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
-import java.io.InputStream;
import java.net.URLEncoder;
-import java.nio.file.Files;
-import java.nio.file.Path;
import java.util.List;
@Api(tags = "检测设备管理")
@@ -145,19 +143,15 @@ public class TestDeviceController extends BaseController {
if (device == null || device.getValidityReport() == null || device.getValidityReport().trim().isEmpty()) {
throw new BusinessException(CommonResponseEnum.FAIL, "校准报告文件不存在");
}
- Path filePath = reportStorageService.resolveDownloadPath(device.getValidityReport());
- if (!Files.exists(filePath) || !Files.isRegularFile(filePath)) {
- throw new BusinessException(CommonResponseEnum.FAIL, "校准报告文件不存在");
- }
try {
String fileName = reportStorageService.resolveDownloadFileName(device.getValidityReport());
String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replace("+", "%20");
- InputStream inputStream = Files.newInputStream(filePath);
+ AiReportMinioStorageService.StoredObject storedObject = reportStorageService.getObject(device.getValidityReport());
return ResponseEntity.ok()
.contentType(preview ? MediaType.APPLICATION_PDF : MediaType.APPLICATION_OCTET_STREAM)
.header(HttpHeaders.CONTENT_DISPOSITION,
(preview ? "inline" : "attachment") + "; filename*=UTF-8''" + encodedFileName)
- .body(new InputStreamResource(inputStream));
+ .body(new InputStreamResource(storedObject.getInputStream()));
} catch (Exception exception) {
throw new BusinessException(CommonResponseEnum.FAIL, "读取校准报告失败");
}
diff --git a/ai-report/test-device/src/main/java/com/njcn/gather/aireport/testdevice/service/impl/TestDeviceServiceImpl.java b/ai-report/test-device/src/main/java/com/njcn/gather/aireport/testdevice/service/impl/TestDeviceServiceImpl.java
index 63c7573..c530873 100644
--- a/ai-report/test-device/src/main/java/com/njcn/gather/aireport/testdevice/service/impl/TestDeviceServiceImpl.java
+++ b/ai-report/test-device/src/main/java/com/njcn/gather/aireport/testdevice/service/impl/TestDeviceServiceImpl.java
@@ -163,13 +163,23 @@ public class TestDeviceServiceImpl extends ServiceImpl devices = this.lambdaQuery()
+ .in(TestDevicePO::getId, validIds)
+ .eq(TestDevicePO::getStatus, TestDeviceConst.STATUS_NORMAL)
+ .list();
+ boolean deleted = this.lambdaUpdate()
.set(TestDevicePO::getStatus, TestDeviceConst.STATUS_DELETED)
.set(TestDevicePO::getUpdateBy, resolveCurrentUserId())
.set(TestDevicePO::getUpdateTime, LocalDateTime.now())
.in(TestDevicePO::getId, validIds)
.eq(TestDevicePO::getStatus, TestDeviceConst.STATUS_NORMAL)
.update();
+ if (deleted) {
+ for (TestDevicePO device : devices) {
+ reportStorageService.deleteQuietly(device.getValidityReport());
+ }
+ }
+ return deleted;
}
@Override
diff --git a/ai-report/test-device/src/test/java/com/njcn/gather/aireport/testdevice/component/TestDeviceReportStorageServiceTest.java b/ai-report/test-device/src/test/java/com/njcn/gather/aireport/testdevice/component/TestDeviceReportStorageServiceTest.java
index 603ca6a..8de21d4 100644
--- a/ai-report/test-device/src/test/java/com/njcn/gather/aireport/testdevice/component/TestDeviceReportStorageServiceTest.java
+++ b/ai-report/test-device/src/test/java/com/njcn/gather/aireport/testdevice/component/TestDeviceReportStorageServiceTest.java
@@ -1,28 +1,34 @@
package com.njcn.gather.aireport.testdevice.component;
+import com.njcn.common.pojo.exception.BusinessException;
+import com.njcn.gather.aireport.common.storage.AiReportMinioStorageService;
import org.junit.Assert;
import org.junit.Test;
+import org.mockito.Mockito;
import org.springframework.mock.web.MockMultipartFile;
-import org.springframework.test.util.ReflectionTestUtils;
-
-import java.nio.file.Files;
-import java.nio.file.Path;
public class TestDeviceReportStorageServiceTest {
@Test
- public void saveUsesTestDeviceReportDirectoryUnderFilesRoot() throws Exception {
- Path filesRoot = Files.createTempDirectory("files-root");
- TestDeviceReportStorageService service = new TestDeviceReportStorageService();
- ReflectionTestUtils.setField(service, "filesPath", filesRoot.toString());
+ public void saveShouldDelegateToMinioStorage() {
+ AiReportMinioStorageService minioStorageService = Mockito.mock(AiReportMinioStorageService.class);
+ TestDeviceReportStorageService service = new TestDeviceReportStorageService(minioStorageService);
+ Mockito.when(minioStorageService.saveMultipartFile(Mockito.anyString(), Mockito.isNull(),
+ Mockito.any(MockMultipartFile.class), Mockito.eq(false)))
+ .thenReturn(new AiReportMinioStorageService.StoredFile("cn-tool-ai-report",
+ "test-device/report-id-report.pdf", "report-id-report.pdf", "report.pdf",
+ "application/pdf", 8L));
String storedPath = service.save(new MockMultipartFile("reportFile", "../report.pdf",
- "application/pdf", "%PDF-1.4".getBytes("UTF-8")));
+ "application/pdf", "%PDF-1.4".getBytes()));
- Path expectedRoot = filesRoot.resolve("test-device-report").toAbsolutePath().normalize();
- Path actualPath = service.resolveDownloadPath(storedPath);
- Assert.assertTrue(actualPath.startsWith(expectedRoot));
- Assert.assertTrue(storedPath.endsWith("-report.pdf"));
- Assert.assertTrue(Files.exists(actualPath));
+ Assert.assertEquals("test-device/report-id-report.pdf", storedPath);
+ }
+
+ @Test(expected = BusinessException.class)
+ public void saveShouldRejectNonPdfFile() {
+ TestDeviceReportStorageService service = new TestDeviceReportStorageService(Mockito.mock(AiReportMinioStorageService.class));
+ service.save(new MockMultipartFile("reportFile", "report.docx",
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document", new byte[]{1}));
}
}
diff --git a/ai-report/test-device/src/test/java/com/njcn/gather/aireport/testdevice/controller/TestDeviceControllerTest.java b/ai-report/test-device/src/test/java/com/njcn/gather/aireport/testdevice/controller/TestDeviceControllerTest.java
index e006151..4b0ea9f 100644
--- a/ai-report/test-device/src/test/java/com/njcn/gather/aireport/testdevice/controller/TestDeviceControllerTest.java
+++ b/ai-report/test-device/src/test/java/com/njcn/gather/aireport/testdevice/controller/TestDeviceControllerTest.java
@@ -1,8 +1,10 @@
package com.njcn.gather.aireport.testdevice.controller;
+import com.njcn.gather.aireport.common.storage.AiReportMinioStorageService;
import com.njcn.gather.aireport.testdevice.component.TestDeviceReportStorageService;
import com.njcn.gather.aireport.testdevice.pojo.po.TestDevicePO;
import com.njcn.gather.aireport.testdevice.service.TestDeviceService;
+import io.minio.GetObjectResponse;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
@@ -12,10 +14,6 @@ import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.test.util.ReflectionTestUtils;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-
class TestDeviceControllerTest {
private final TestDeviceService testDeviceService = Mockito.mock(TestDeviceService.class);
@@ -27,11 +25,11 @@ class TestDeviceControllerTest {
TestDevicePO device = new TestDevicePO();
device.setId("device-1");
device.setValidityReport("20260626/report.pdf");
- Path tempFile = Files.createTempFile("test-device-preview-", ".pdf");
- Files.write(tempFile, "%PDF-1.4".getBytes(StandardCharsets.UTF_8));
+ AiReportMinioStorageService.StoredObject storedObject = Mockito.mock(AiReportMinioStorageService.StoredObject.class);
Mockito.when(testDeviceService.requireNormal("device-1")).thenReturn(device);
- Mockito.when(reportStorageService.resolveDownloadPath("20260626/report.pdf")).thenReturn(tempFile);
Mockito.when(reportStorageService.resolveDownloadFileName("20260626/report.pdf")).thenReturn("report.pdf");
+ Mockito.when(reportStorageService.getObject("20260626/report.pdf")).thenReturn(storedObject);
+ Mockito.when(storedObject.getInputStream()).thenReturn(Mockito.mock(GetObjectResponse.class));
@SuppressWarnings("unchecked")
ResponseEntity response = (ResponseEntity)
diff --git a/ai-report/test-report/pom.xml b/ai-report/test-report/pom.xml
index 04ea811..0ef7814 100644
--- a/ai-report/test-report/pom.xml
+++ b/ai-report/test-report/pom.xml
@@ -14,6 +14,12 @@
jar
+
+ com.njcn.gather
+ ai-report-common
+ 1.0.0
+
+
com.njcn.gather
comservice
diff --git a/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/component/TestReportLedgerImportService.java b/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/component/TestReportLedgerImportService.java
index b6b2729..2c0ceaa 100644
--- a/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/component/TestReportLedgerImportService.java
+++ b/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/component/TestReportLedgerImportService.java
@@ -10,6 +10,7 @@ import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.gather.aireport.clientunit.mapper.ClientUnitMapper;
import com.njcn.gather.aireport.clientunit.pojo.constant.ClientUnitConst;
import com.njcn.gather.aireport.clientunit.pojo.po.ClientUnitPO;
+import com.njcn.gather.aireport.common.storage.AiReportMinioStorageService;
import com.njcn.gather.aireport.testdevice.mapper.TestDeviceMapper;
import com.njcn.gather.aireport.testdevice.pojo.constant.TestDeviceConst;
import com.njcn.gather.aireport.testdevice.pojo.po.TestDevicePO;
@@ -30,7 +31,6 @@ import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
-import java.nio.file.Files;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.Collections;
@@ -91,8 +91,9 @@ public class TestReportLedgerImportService {
persistValidateSessionResult(sessionId, result);
return result;
}
- try (InputStream inputStream = Files.newInputStream(
- testReportStorageService.resolveValidateSessionFile(sessionId, TestReportConst.LEDGER_SUMMARY_FILE_NAME))) {
+ try (AiReportMinioStorageService.StoredObject storedObject =
+ testReportStorageService.getValidateSessionObject(sessionId, TestReportConst.LEDGER_SUMMARY_FILE_NAME);
+ InputStream inputStream = storedObject.getInputStream()) {
TestReportLedgerExcelParser.ParsedLedger ledger = testReportLedgerExcelParser.parseForValidate(
TestReportConst.LEDGER_SUMMARY_FILE_NAME, inputStream);
Map dbDeviceMap = loadExistingDevices(collectDeviceNos(ledger));
@@ -136,6 +137,7 @@ public class TestReportLedgerImportService {
writeValidatedBatchMeta(report.getId(), batchId, uploadedBatch, ledger, userId);
return buildValidateSuccessResult(batchId, uploadedBatch.getTempStoragePath(), ledger, fileMap.size());
} catch (RuntimeException exception) {
+ testReportStorageService.deleteTempBatchQuietly(report.getId(), batchId);
throw exception;
}
}
@@ -168,11 +170,12 @@ public class TestReportLedgerImportService {
}
private TestReportLedgerExcelParser.ParsedLedger parseLedgerFromBatch(String reportId, String batchId, Collection fileNames) {
- try (InputStream inputStream = java.nio.file.Files.newInputStream(
- testReportStorageService.resolveTempBatchFile(reportId, batchId, TestReportConst.LEDGER_SUMMARY_FILE_NAME))) {
+ try (AiReportMinioStorageService.StoredObject storedObject =
+ testReportStorageService.getTempBatchObject(reportId, batchId, TestReportConst.LEDGER_SUMMARY_FILE_NAME);
+ InputStream inputStream = storedObject.getInputStream()) {
return testReportLedgerExcelParser.parse(TestReportConst.LEDGER_SUMMARY_FILE_NAME, inputStream,
buildAttachmentNameSet(fileNames));
- } catch (java.io.IOException exception) {
+ } catch (Exception exception) {
throw new BusinessException(CommonResponseEnum.FAIL, "校验文件阶段:读取台账汇总excel失败");
}
}
@@ -501,14 +504,9 @@ public class TestReportLedgerImportService {
point.setGroupNo(pointRow.getGroupNo());
point.setSubstationName(pointRow.getSubstationName());
point.setPointName(pointRow.getPointName());
- point.setTestDeviceNo(pointRow.getTestDeviceNo());
- point.setClientUnitName(pointRow.getClientUnitName());
point.setExcelAttachmentName(pointRow.getExcelAttachmentName());
point.setExcelStoragePath(testReportStorageService.savePointExcelFromTemp(reportId, batchId,
pointRow.getExcelAttachmentName()));
- point.setWordAttachmentName(pointRow.getWordAttachmentName());
- point.setWordStoragePath(testReportStorageService.savePointWordFromTemp(reportId, batchId,
- pointRow.getWordAttachmentName()));
point.setSortNo(sortNo++);
point.setDeleted(TestReportConst.DELETED_NO);
point.setCreateBy(userId);
@@ -526,7 +524,6 @@ public class TestReportLedgerImportService {
private void deleteOldFiles(List oldPoints, List oldGroupReports, String data) {
for (TestReportPointPO point : oldPoints) {
testReportStorageService.deleteQuietly(point.getExcelStoragePath());
- testReportStorageService.deleteQuietly(point.getWordStoragePath());
}
for (TestReportGroupReportPO groupReport : oldGroupReports) {
testReportStorageService.deleteQuietly(groupReport.getReportStoragePath());
diff --git a/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/component/TestReportStorageService.java b/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/component/TestReportStorageService.java
index fc1067f..874f3d4 100644
--- a/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/component/TestReportStorageService.java
+++ b/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/component/TestReportStorageService.java
@@ -3,326 +3,304 @@ package com.njcn.gather.aireport.testreport.component;
import cn.hutool.core.util.StrUtil;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
+import com.njcn.gather.aireport.common.constant.AiReportFileConst;
+import com.njcn.gather.aireport.common.constant.AiReportFileExtensionConst;
+import com.njcn.gather.aireport.common.storage.AiReportMinioStorageService;
import com.njcn.gather.aireport.testreport.pojo.constant.TestReportConst;
-import org.springframework.beans.factory.annotation.Value;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
-import java.io.IOException;
+import java.io.InputStream;
import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.StandardCopyOption;
-import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
-import java.util.UUID;
+import java.util.Set;
@Component
+@RequiredArgsConstructor
public class TestReportStorageService {
- @Value("${files.path}")
- private String filesRootPath;
+ private final AiReportMinioStorageService minioStorageService;
public String saveSourceExcel(String reportId, MultipartFile file) {
- return saveMultipartFile(reportId, TestReportConst.STORAGE_SOURCE_EXCEL_DIR, file, "淇濆瓨鍘熷Excel澶辫触");
+ validateMultipartFile(file, AiReportFileExtensionConst.EXCEL_EXTENSIONS, "原始Excel文件不能为空", "原始Excel仅允许xlsx格式");
+ return minioStorageService.saveMultipartFile(buildBusinessDir(reportId, TestReportConst.STORAGE_SOURCE_EXCEL_DIR),
+ null, file, false).getObjectName();
}
public String saveLedgerSummaryExcel(String reportId, MultipartFile file) {
- return saveMultipartFile(reportId, TestReportConst.STORAGE_LEDGER_SUMMARY_DIR, file, "淇濆瓨鍙拌处姹囨€籈xcel澶辫触");
+ validateMultipartFile(file, AiReportFileExtensionConst.EXCEL_EXTENSIONS, "台账汇总文件不能为空", "台账汇总仅允许xlsx格式");
+ return minioStorageService.saveMultipartFile(buildBusinessDir(reportId, TestReportConst.STORAGE_LEDGER_SUMMARY_DIR),
+ null, file, false).getObjectName();
}
public String savePointExcelAttachment(String reportId, MultipartFile file) {
- return saveMultipartFile(reportId, TestReportConst.STORAGE_POINT_EXCEL_DIR, file, "淇濆瓨鐩戞祴鐐笶xcel闄勪欢澶辫触");
+ validateMultipartFile(file, AiReportFileExtensionConst.EXCEL_EXTENSIONS, "监测点Excel附件不能为空", "监测点Excel附件仅允许xlsx格式");
+ return minioStorageService.saveMultipartFile(buildBusinessDir(reportId, TestReportConst.STORAGE_POINT_EXCEL_DIR),
+ null, file, false).getObjectName();
}
public String savePointWordAttachment(String reportId, MultipartFile file) {
- return saveMultipartFile(reportId, TestReportConst.STORAGE_POINT_WORD_DIR, file, "淇濆瓨鐩戞祴鐐筗ord闄勪欢澶辫触");
+ validateMultipartFile(file, AiReportFileExtensionConst.WORD_EXTENSIONS, "监测点Word附件不能为空", "监测点Word附件仅允许docx格式");
+ return minioStorageService.saveMultipartFile(buildBusinessDir(reportId, TestReportConst.STORAGE_POINT_WORD_DIR),
+ null, file, false).getObjectName();
}
public UploadedBatch saveTempBatchFiles(String reportId, String batchId, Map fileMap) {
- if (fileMap == null || fileMap.isEmpty()) {
- throw new BusinessException(CommonResponseEnum.FAIL, "文件不能为空");
- }
- Map storedFileMap = new LinkedHashMap();
- for (Map.Entry entry : fileMap.entrySet()) {
- String originalFileName = entry.getKey();
- MultipartFile file = entry.getValue();
- if (file == null || file.isEmpty() || StrUtil.isBlank(originalFileName)) {
- throw new BusinessException(CommonResponseEnum.FAIL, "文件不能为空");
- }
- String safeFileName = Paths.get(originalFileName).getFileName().toString();
- Path targetPath = resolveTempUploadDir(reportId, batchId).resolve(safeFileName);
- try {
- Files.createDirectories(targetPath.getParent());
- file.transferTo(targetPath.toFile());
- } catch (IOException exception) {
- throw new BusinessException(CommonResponseEnum.FAIL, "文件上传阶段:保存临时文件失败");
- }
- storedFileMap.put(originalFileName, buildTempUploadRelativePath(reportId, batchId, safeFileName));
- }
- UploadedBatch uploadedBatch = new UploadedBatch();
- uploadedBatch.setBatchId(batchId);
- uploadedBatch.setTempStoragePath(buildTempBatchRelativePath(reportId, batchId));
- uploadedBatch.setStoredFileMap(storedFileMap);
- return uploadedBatch;
+ return saveBatchFiles(buildTempUploadDir(reportId, batchId), buildTempBatchRelativePath(reportId, batchId),
+ batchId, fileMap, "文件上传阶段:保存临时文件失败");
}
public UploadedBatch saveValidateSessionFiles(String sessionId, Map fileMap) {
+ return saveBatchFiles(buildValidateSessionUploadDir(sessionId), buildValidateSessionRelativePath(sessionId),
+ sessionId, fileMap, "校验文件阶段:保存校验会话文件失败");
+ }
+
+ public AiReportMinioStorageService.StoredObject getTempBatchObject(String reportId, String batchId, String fileName) {
+ return minioStorageService.getObject(buildTempBatchFileObjectName(reportId, batchId, fileName));
+ }
+
+ public AiReportMinioStorageService.StoredObject getValidateSessionObject(String sessionId, String fileName) {
+ return minioStorageService.getObject(buildValidateSessionFileObjectName(sessionId, fileName));
+ }
+
+ public void writeTempBatchMeta(String reportId, String batchId, String content) {
+ writeText(buildTempBatchMetaObjectName(reportId, batchId), content, "校验文件阶段:保存批次元数据失败");
+ }
+
+ public void writeValidateSessionResult(String sessionId, String content) {
+ writeText(buildValidateSessionResultObjectName(sessionId), content, "校验文件阶段:保存校验结果失败");
+ }
+
+ public List listValidateSessionFileNames(String sessionId) {
+ return minioStorageService.listFileNames(buildValidateSessionUploadDir(sessionId));
+ }
+
+ public String readTempBatchMeta(String reportId, String batchId) {
+ String objectName = buildTempBatchMetaObjectName(reportId, batchId);
+ if (!minioStorageService.exists(objectName)) {
+ return null;
+ }
+ return new String(minioStorageService.readBytes(objectName), StandardCharsets.UTF_8);
+ }
+
+ public String saveLedgerSummaryFromTemp(String reportId, String batchId, String fileName) {
+ return copyTempBatchFile(reportId, batchId, fileName,
+ buildBusinessDir(reportId, TestReportConst.STORAGE_LEDGER_SUMMARY_DIR),
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "保存台账汇总excel失败");
+ }
+
+ public String savePointExcelFromTemp(String reportId, String batchId, String fileName) {
+ return copyTempBatchFile(reportId, batchId, fileName,
+ buildBusinessDir(reportId, TestReportConst.STORAGE_POINT_EXCEL_DIR),
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "保存监测点excel附件失败");
+ }
+
+ public String savePointWordFromTemp(String reportId, String batchId, String fileName) {
+ return copyTempBatchFile(reportId, batchId, fileName,
+ buildBusinessDir(reportId, TestReportConst.STORAGE_POINT_WORD_DIR),
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "保存监测点word附件失败");
+ }
+
+ public String saveGeneratedPlaceholder(String reportId, String fileName, byte[] content) {
+ validateFileName(fileName, AiReportFileExtensionConst.WORD_EXTENSIONS, "生成报告文件名不能为空", "生成报告仅允许docx格式");
+ return minioStorageService.saveBytes(buildBusinessDir(reportId, TestReportConst.STORAGE_GENERATED_REPORT_DIR),
+ null, fileName, content, MediaType.APPLICATION_OCTET_STREAM_VALUE, false).getObjectName();
+ }
+
+ public byte[] readBusinessBytes(String storedPath) {
+ return minioStorageService.readBytes(storedPath);
+ }
+
+ public void deleteQuietly(String storedPath) {
+ minioStorageService.deleteQuietly(storedPath);
+ }
+
+ public void deleteTempBatchQuietly(String reportId, String batchId) {
+ deletePrefixQuietly(buildTempBatchDir(reportId, batchId));
+ }
+
+ private UploadedBatch saveBatchFiles(String bizDir, String tempStoragePath, String batchId,
+ Map fileMap, String errorMessage) {
if (fileMap == null || fileMap.isEmpty()) {
- throw new BusinessException(CommonResponseEnum.FAIL, "鏂囦欢涓嶈兘涓虹┖");
+ throw new BusinessException(CommonResponseEnum.FAIL, "文件不能为空");
}
Map storedFileMap = new LinkedHashMap();
- for (Map.Entry entry : fileMap.entrySet()) {
- String originalFileName = entry.getKey();
- MultipartFile file = entry.getValue();
- if (file == null || file.isEmpty() || StrUtil.isBlank(originalFileName)) {
- throw new BusinessException(CommonResponseEnum.FAIL, "鏂囦欢涓嶈兘涓虹┖");
+ try {
+ for (Map.Entry entry : fileMap.entrySet()) {
+ String originalFileName = trimFileName(entry.getKey());
+ MultipartFile file = entry.getValue();
+ if (StrUtil.isBlank(originalFileName) || file == null || file.isEmpty()) {
+ throw new BusinessException(CommonResponseEnum.FAIL, "文件不能为空");
+ }
+ validateAllowedUploadFile(originalFileName);
+ try (InputStream inputStream = file.getInputStream()) {
+ AiReportMinioStorageService.StoredFile storedFile = minioStorageService.saveInputStream(
+ bizDir, null, originalFileName, inputStream, file.getSize(), file.getContentType(), true);
+ storedFileMap.put(originalFileName, storedFile.getObjectName());
+ }
}
- String safeFileName = Paths.get(originalFileName).getFileName().toString();
- Path targetPath = resolveValidateSessionUploadDir(sessionId).resolve(safeFileName);
- try {
- Files.createDirectories(targetPath.getParent());
- file.transferTo(targetPath.toFile());
- } catch (IOException exception) {
- throw new BusinessException(CommonResponseEnum.FAIL, "鏂囦欢涓婁紶闃舵锛氫繚瀛樻牎楠屼細璇濇枃浠跺け璐?");
- }
- storedFileMap.put(originalFileName, buildValidateSessionUploadRelativePath(sessionId, safeFileName));
+ } catch (BusinessException exception) {
+ cleanupStoredFiles(storedFileMap);
+ throw exception;
+ } catch (Exception exception) {
+ cleanupStoredFiles(storedFileMap);
+ throw new BusinessException(CommonResponseEnum.FAIL, errorMessage);
}
UploadedBatch uploadedBatch = new UploadedBatch();
- uploadedBatch.setBatchId(sessionId);
- uploadedBatch.setTempStoragePath(buildValidateSessionRelativePath(sessionId));
+ uploadedBatch.setBatchId(batchId);
+ uploadedBatch.setTempStoragePath(tempStoragePath);
uploadedBatch.setStoredFileMap(storedFileMap);
return uploadedBatch;
}
- public Path resolveTempBatchFile(String reportId, String batchId, String fileName) {
- return resolveTempUploadDir(reportId, batchId).resolve(Paths.get(fileName).getFileName().toString()).normalize();
- }
-
- public void writeTempBatchMeta(String reportId, String batchId, String content) {
- Path metaPath = resolveTempBatchMetaPath(reportId, batchId);
+ private void writeText(String objectName, String content, String errorMessage) {
try {
- Files.createDirectories(metaPath.getParent());
- Files.write(metaPath, content.getBytes(StandardCharsets.UTF_8));
- } catch (IOException exception) {
- throw new BusinessException(CommonResponseEnum.FAIL, "校验文件阶段:保存批次元数据失败");
+ minioStorageService.saveBytes(resolveParentDir(objectName), null, resolveFileName(objectName),
+ content == null ? new byte[0] : content.getBytes(StandardCharsets.UTF_8),
+ MediaType.APPLICATION_JSON_VALUE, true);
+ } catch (BusinessException exception) {
+ throw exception;
+ } catch (Exception exception) {
+ throw new BusinessException(CommonResponseEnum.FAIL, errorMessage);
}
}
- public void writeValidateSessionResult(String sessionId, String content) {
- Path resultPath = resolveValidateSessionResultPath(sessionId);
- try {
- Files.createDirectories(resultPath.getParent());
- Files.write(resultPath, content.getBytes(StandardCharsets.UTF_8));
- } catch (IOException exception) {
- throw new BusinessException(CommonResponseEnum.FAIL, "鏍¢獙鏂囦欢闃舵锛氫繚瀛樻牎楠岀粨鏋滃け璐?");
- }
- }
-
- public Path resolveValidateSessionFile(String sessionId, String fileName) {
- return resolveValidateSessionUploadDir(sessionId).resolve(Paths.get(fileName).getFileName().toString()).normalize();
- }
-
- public List listValidateSessionFileNames(String sessionId) {
- Path uploadDir = resolveValidateSessionUploadDir(sessionId);
- if (!Files.exists(uploadDir) || !Files.isDirectory(uploadDir)) {
- return new ArrayList();
- }
- try {
- List result = new ArrayList();
- Files.list(uploadDir)
- .filter(Files::isRegularFile)
- .forEach(path -> result.add(path.getFileName().toString()));
- return result;
- } catch (IOException exception) {
- throw new BusinessException(CommonResponseEnum.FAIL, "鏍¢獙鏂囦欢闃舵锛氳鍙栦細璇濇枃浠跺垪琛ㄥけ璐?");
- }
- }
-
- public String readTempBatchMeta(String reportId, String batchId) {
- Path metaPath = resolveTempBatchMetaPath(reportId, batchId);
- if (!Files.exists(metaPath) || !Files.isRegularFile(metaPath)) {
+ private String copyTempBatchFile(String reportId, String batchId, String fileName, String targetBizDir,
+ String contentType, String errorMessage) {
+ String normalizedFileName = trimFileName(fileName);
+ if (StrUtil.isBlank(normalizedFileName)) {
return null;
}
try {
- return new String(Files.readAllBytes(metaPath), StandardCharsets.UTF_8);
- } catch (IOException exception) {
- throw new BusinessException(CommonResponseEnum.FAIL, "璇诲彇瀵煎叆鎵规淇℃伅澶辫触");
- }
- }
-
- public String saveLedgerSummaryFromTemp(String reportId, String batchId, String fileName) {
- return savePathFile(reportId, TestReportConst.STORAGE_LEDGER_SUMMARY_DIR,
- resolveTempBatchFile(reportId, batchId, fileName), fileName, "淇濆瓨鍙拌处姹囨€籈xcel澶辫触");
- }
-
- public String savePointExcelFromTemp(String reportId, String batchId, String fileName) {
- return savePathFile(reportId, TestReportConst.STORAGE_POINT_EXCEL_DIR,
- resolveTempBatchFile(reportId, batchId, fileName), fileName, "淇濆瓨鐩戞祴鐐笶xcel闄勪欢澶辫触");
- }
-
- public String savePointWordFromTemp(String reportId, String batchId, String fileName) {
- return savePathFile(reportId, TestReportConst.STORAGE_POINT_WORD_DIR,
- resolveTempBatchFile(reportId, batchId, fileName), fileName, "淇濆瓨鐩戞祴鐐筗ord闄勪欢澶辫触");
- }
-
- public String saveGeneratedPlaceholder(String reportId, String fileName, byte[] content) {
- Path targetPath = resolveReportDir(reportId, TestReportConst.STORAGE_GENERATED_REPORT_DIR).resolve(fileName);
- try {
- Files.createDirectories(targetPath.getParent());
- Files.write(targetPath, content);
- } catch (IOException exception) {
- throw new BusinessException(CommonResponseEnum.FAIL, "淇濆瓨鐢熸垚鎶ュ憡澶辫触");
- }
- return buildRelativePath(reportId, TestReportConst.STORAGE_GENERATED_REPORT_DIR, fileName);
- }
-
- public Path resolveBusinessPath(String relativePath) {
- return Paths.get(filesRootPath, TestReportConst.STORAGE_DIR).resolve(relativePath).normalize();
- }
-
- public void deleteQuietly(String relativePath) {
- if (StrUtil.isBlank(relativePath)) {
- return;
- }
- try {
- Files.deleteIfExists(resolveBusinessPath(relativePath));
- } catch (IOException ignored) {
- // 鏂囦欢娓呯悊澶辫触涓嶅奖鍝嶄富娴佺▼
- }
- }
-
- public void deleteTempBatchQuietly(String reportId, String batchId) {
- if (StrUtil.isBlank(reportId) || StrUtil.isBlank(batchId)) {
- return;
- }
- deletePathQuietly(resolveTempBatchDir(reportId, batchId));
- }
-
- private String saveMultipartFile(String reportId, String childDir, MultipartFile file, String errorMessage) {
- String originalFileName = file == null ? null : file.getOriginalFilename();
- if (file == null || file.isEmpty() || StrUtil.isBlank(originalFileName)) {
- throw new BusinessException(CommonResponseEnum.FAIL, "文件不能为空");
- }
- return savePathFile(reportId, childDir, toTempTransferredPath(file), originalFileName, errorMessage);
- }
-
- private Path toTempTransferredPath(MultipartFile file) {
- try {
- Path tempFile = Files.createTempFile("test-report-", ".upload");
- file.transferTo(tempFile.toFile());
- return tempFile;
- } catch (IOException exception) {
- throw new BusinessException(CommonResponseEnum.FAIL, "文件上传失败");
- }
- }
-
- private String savePathFile(String reportId, String childDir, Path sourcePath, String originalFileName, String errorMessage) {
- String normalizedFileName = originalFileName == null ? null : Paths.get(originalFileName).getFileName().toString();
- if (sourcePath == null || StrUtil.isBlank(normalizedFileName) || !Files.exists(sourcePath)) {
- throw new BusinessException(CommonResponseEnum.FAIL, "文件不能为空");
- }
- String fileName = UUID.randomUUID().toString().replace("-", "") + "-" + normalizedFileName;
- Path targetPath = resolveReportDir(reportId, childDir).resolve(fileName);
- try {
- Files.createDirectories(targetPath.getParent());
- Files.copy(sourcePath, targetPath, StandardCopyOption.REPLACE_EXISTING);
- } catch (IOException exception) {
+ byte[] content = minioStorageService.readBytes(buildTempBatchFileObjectName(reportId, batchId, normalizedFileName));
+ return minioStorageService.saveBytes(targetBizDir, null, normalizedFileName, content, contentType, false)
+ .getObjectName();
+ } catch (BusinessException exception) {
+ throw exception;
+ } catch (Exception exception) {
throw new BusinessException(CommonResponseEnum.FAIL, errorMessage);
- } finally {
- deletePathQuietlyIfTemp(sourcePath);
}
- return buildRelativePath(reportId, childDir, fileName);
}
- private void deletePathQuietlyIfTemp(Path path) {
- if (path == null) {
+ private void deletePrefixQuietly(String prefix) {
+ List objectNames = minioStorageService.listObjectNames(prefix);
+ for (String objectName : objectNames) {
+ minioStorageService.deleteQuietly(objectName);
+ }
+ }
+
+ private void cleanupStoredFiles(Map storedFileMap) {
+ if (storedFileMap == null || storedFileMap.isEmpty()) {
return;
}
- String fileName = path.getFileName() == null ? null : path.getFileName().toString();
- if (fileName != null && fileName.startsWith("test-report-")) {
- deletePathQuietly(path);
+ for (String objectName : storedFileMap.values()) {
+ minioStorageService.deleteQuietly(objectName);
}
}
- private void deletePathQuietly(Path path) {
- if (path == null || !Files.exists(path)) {
- return;
+ private void validateMultipartFile(MultipartFile file, Set allowedExtensions,
+ String emptyMessage, String invalidMessage) {
+ if (file == null || file.isEmpty()) {
+ throw new BusinessException(CommonResponseEnum.FAIL, emptyMessage);
}
- try {
- if (Files.isDirectory(path)) {
- Files.walk(path)
- .sorted((left, right) -> right.getNameCount() - left.getNameCount())
- .forEach(this::deleteSingleQuietly);
- return;
- }
- Files.deleteIfExists(path);
- } catch (IOException ignored) {
- // 涓存椂鐩綍娓呯悊澶辫触涓嶅奖鍝嶄富娴佺▼
+ validateFileName(file.getOriginalFilename(), allowedExtensions, emptyMessage, invalidMessage);
+ }
+
+ private void validateAllowedUploadFile(String fileName) {
+ validateFileName(fileName, AiReportFileExtensionConst.ALLOWED_EXTENSIONS, "文件不能为空",
+ "仅允许上传docx、xlsx、pdf文件");
+ }
+
+ private void validateFileName(String fileName, Set allowedExtensions,
+ String emptyMessage, String invalidMessage) {
+ String normalizedFileName = trimFileName(fileName);
+ if (StrUtil.isBlank(normalizedFileName)) {
+ throw new BusinessException(CommonResponseEnum.FAIL, emptyMessage);
+ }
+ String extension = resolveExtension(normalizedFileName);
+ if (!allowedExtensions.contains(extension)) {
+ throw new BusinessException(CommonResponseEnum.FAIL, invalidMessage);
}
}
- private void deleteSingleQuietly(Path path) {
- try {
- Files.deleteIfExists(path);
- } catch (IOException ignored) {
- // ignore
- }
+ private String buildBusinessDir(String reportId, String childDir) {
+ return AiReportFileConst.BIZ_DIR_TEST_REPORT + "/" + reportId + "/" + childDir;
}
- private Path resolveReportDir(String reportId, String childDir) {
- return Paths.get(filesRootPath, TestReportConst.STORAGE_DIR, reportId, childDir).normalize();
+ private String buildTempBatchDir(String reportId, String batchId) {
+ return AiReportFileConst.BIZ_DIR_TEST_REPORT + "/" + reportId + "/"
+ + TestReportConst.STORAGE_IMPORT_TEMP_DIR + "/" + batchId;
}
- private Path resolveTempBatchDir(String reportId, String batchId) {
- return Paths.get(filesRootPath, TestReportConst.STORAGE_DIR, reportId,
- TestReportConst.STORAGE_IMPORT_TEMP_DIR, batchId).normalize();
+ private String buildTempUploadDir(String reportId, String batchId) {
+ return buildTempBatchDir(reportId, batchId) + "/" + TestReportConst.STORAGE_IMPORT_TEMP_UPLOAD_DIR;
}
- private Path resolveTempUploadDir(String reportId, String batchId) {
- return resolveTempBatchDir(reportId, batchId).resolve(TestReportConst.STORAGE_IMPORT_TEMP_UPLOAD_DIR);
+ private String buildValidateSessionDir(String sessionId) {
+ return AiReportFileConst.BIZ_DIR_TEST_REPORT + "/" + TestReportConst.STORAGE_VALIDATE_SESSION_DIR + "/" + sessionId;
}
- private Path resolveTempBatchMetaPath(String reportId, String batchId) {
- return resolveTempBatchDir(reportId, batchId).resolve(TestReportConst.STORAGE_IMPORT_META_FILE_NAME);
+ private String buildValidateSessionUploadDir(String sessionId) {
+ return buildValidateSessionDir(sessionId) + "/" + TestReportConst.STORAGE_IMPORT_TEMP_UPLOAD_DIR;
}
- private Path resolveValidateSessionDir(String sessionId) {
- return Paths.get(filesRootPath, TestReportConst.STORAGE_DIR,
- TestReportConst.STORAGE_VALIDATE_SESSION_DIR, sessionId).normalize();
+ private String buildTempBatchMetaObjectName(String reportId, String batchId) {
+ return buildTempBatchDir(reportId, batchId) + "/" + TestReportConst.STORAGE_IMPORT_META_FILE_NAME;
}
- private Path resolveValidateSessionUploadDir(String sessionId) {
- return resolveValidateSessionDir(sessionId).resolve(TestReportConst.STORAGE_IMPORT_TEMP_UPLOAD_DIR);
+ private String buildValidateSessionResultObjectName(String sessionId) {
+ return buildValidateSessionDir(sessionId) + "/" + TestReportConst.STORAGE_VALIDATE_RESULT_FILE_NAME;
}
- private Path resolveValidateSessionResultPath(String sessionId) {
- return resolveValidateSessionDir(sessionId).resolve(TestReportConst.STORAGE_VALIDATE_RESULT_FILE_NAME);
+ private String buildTempBatchFileObjectName(String reportId, String batchId, String fileName) {
+ return buildTempUploadDir(reportId, batchId) + "/" + trimFileName(fileName);
}
- private String buildRelativePath(String reportId, String childDir, String fileName) {
- return reportId + "/" + childDir + "/" + fileName;
+ private String buildValidateSessionFileObjectName(String sessionId, String fileName) {
+ return buildValidateSessionUploadDir(sessionId) + "/" + trimFileName(fileName);
}
private String buildTempBatchRelativePath(String reportId, String batchId) {
return reportId + "/" + TestReportConst.STORAGE_IMPORT_TEMP_DIR + "/" + batchId;
}
- private String buildTempUploadRelativePath(String reportId, String batchId, String fileName) {
- return buildTempBatchRelativePath(reportId, batchId) + "/"
- + TestReportConst.STORAGE_IMPORT_TEMP_UPLOAD_DIR + "/" + fileName;
- }
-
private String buildValidateSessionRelativePath(String sessionId) {
return TestReportConst.STORAGE_VALIDATE_SESSION_DIR + "/" + sessionId;
}
- private String buildValidateSessionUploadRelativePath(String sessionId, String fileName) {
- return buildValidateSessionRelativePath(sessionId) + "/"
- + TestReportConst.STORAGE_IMPORT_TEMP_UPLOAD_DIR + "/" + fileName;
+ private String resolveParentDir(String objectName) {
+ int slashIndex = objectName.lastIndexOf('/');
+ if (slashIndex <= 0) {
+ throw new BusinessException(CommonResponseEnum.FAIL, "对象目录配置不合法");
+ }
+ return objectName.substring(0, slashIndex);
+ }
+
+ private String resolveFileName(String objectName) {
+ int slashIndex = objectName.lastIndexOf('/');
+ return slashIndex >= 0 ? objectName.substring(slashIndex + 1) : objectName;
+ }
+
+ private String trimFileName(String fileName) {
+ String normalized = StrUtil.trimToEmpty(fileName);
+ if (StrUtil.isBlank(normalized)) {
+ return null;
+ }
+ int slashIndex = Math.max(normalized.lastIndexOf('/'), normalized.lastIndexOf('\\'));
+ return slashIndex >= 0 ? normalized.substring(slashIndex + 1) : normalized;
+ }
+
+ private String resolveExtension(String fileName) {
+ int dotIndex = fileName.lastIndexOf('.');
+ if (dotIndex < 0 || dotIndex == fileName.length() - 1) {
+ return "";
+ }
+ return fileName.substring(dotIndex + 1).toLowerCase(Locale.ENGLISH);
}
public static class UploadedBatch {
diff --git a/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/pojo/param/TestReportParam.java b/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/pojo/param/TestReportParam.java
index eabcdeb..098f009 100644
--- a/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/pojo/param/TestReportParam.java
+++ b/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/pojo/param/TestReportParam.java
@@ -1,12 +1,16 @@
package com.njcn.gather.aireport.testreport.pojo.param;
+import com.fasterxml.jackson.databind.JsonNode;
import com.njcn.web.pojo.param.BaseParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
+import java.util.List;
public class TestReportParam {
@@ -32,65 +36,65 @@ public class TestReportParam {
private String id;
@ApiModelProperty("普测报告编号")
- @NotBlank(message = "\u666e\u6d4b\u62a5\u544a\u7f16\u53f7\u4e0d\u80fd\u4e3a\u7a7a")
- @Size(max = 32, message = "\u666e\u6d4b\u62a5\u544a\u7f16\u53f7\u4e0d\u80fd\u8d85\u8fc732\u4e2a\u5b57\u7b26")
+ @NotBlank(message = "普测报告编号不能为空")
+ @Size(max = 32, message = "普测报告编号不能超过32个字符")
private String no;
@ApiModelProperty("委托单位ID")
- @NotBlank(message = "\u59d4\u6258\u5355\u4f4d\u4e0d\u80fd\u4e3a\u7a7a")
+ @NotBlank(message = "委托单位不能为空")
private String clientUnitId;
@ApiModelProperty("报告模板ID")
- @NotBlank(message = "\u62a5\u544a\u6a21\u677f\u4e0d\u80fd\u4e3a\u7a7a")
+ @NotBlank(message = "报告模板不能为空")
private String reportModelId;
@ApiModelProperty("检测公司ID")
- @NotBlank(message = "\u68c0\u6d4b\u516c\u53f8\u4e0d\u80fd\u4e3a\u7a7a")
+ @NotBlank(message = "检测公司不能为空")
private String createUnit;
@ApiModelProperty("合同编号")
- @NotBlank(message = "\u5408\u540c\u7f16\u53f7\u4e0d\u80fd\u4e3a\u7a7a")
- @Size(max = 32, message = "\u5408\u540c\u7f16\u53f7\u4e0d\u80fd\u8d85\u8fc732\u4e2a\u5b57\u7b26")
+ @NotBlank(message = "合同编号不能为空")
+ @Size(max = 32, message = "合同编号不能超过32个字符")
private String contractNumber;
- @ApiModelProperty("检测依据,JSON字符串数组")
- @NotBlank(message = "\u68c0\u6d4b\u4f9d\u636e\u4e0d\u80fd\u4e3a\u7a7a")
- private String standard;
+ @ApiModelProperty("检测依据,JSON数组")
+ @NotEmpty(message = "检测依据不能为空")
+ private List standard;
@ApiModelProperty("受资数据,JSON对象或JSON数组")
- @NotBlank(message = "\u53d7\u8d44\u6570\u636e\u4e0d\u80fd\u4e3a\u7a7a")
- private String data;
+ @NotNull(message = "受资数据不能为空")
+ private JsonNode data;
@ApiModelProperty("台账校验通过后返回的导入批次ID")
private String batchId;
@ApiModelProperty("联系电话")
- @Size(max = 32, message = "\u8054\u7cfb\u7535\u8bdd\u4e0d\u80fd\u8d85\u8fc732\u4e2a\u5b57\u7b26")
+ @Size(max = 32, message = "联系电话不能超过32个字符")
private String phonenumber;
}
@Data
public static class UpdateParam extends AddParam {
@ApiModelProperty("普测报告ID")
- @NotBlank(message = "\u666e\u6d4b\u62a5\u544aID\u4e0d\u80fd\u4e3a\u7a7a")
+ @NotBlank(message = "普测报告ID不能为空")
private String id;
}
@Data
public static class SubmitAuditParam {
@ApiModelProperty("普测报告ID")
- @NotBlank(message = "\u666e\u6d4b\u62a5\u544aID\u4e0d\u80fd\u4e3a\u7a7a")
+ @NotBlank(message = "普测报告ID不能为空")
private String id;
@ApiModelProperty("审核意见")
- @Size(max = 128, message = "\u5ba1\u6838\u610f\u89c1\u4e0d\u80fd\u8d85\u8fc7128\u4e2a\u5b57\u7b26")
+ @Size(max = 128, message = "审核意见不能超过128个字符")
private String checkResult;
}
@Data
public static class LedgerImportParam {
@ApiModelProperty("校验成功的导入批次ID")
- @NotBlank(message = "\u5bfc\u5165\u6279\u6b21ID\u4e0d\u80fd\u4e3a\u7a7a")
+ @NotBlank(message = "导入批次ID不能为空")
private String batchId;
}
}
diff --git a/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/pojo/po/TestReportPointPO.java b/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/pojo/po/TestReportPointPO.java
index b4b89a3..4862355 100644
--- a/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/pojo/po/TestReportPointPO.java
+++ b/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/pojo/po/TestReportPointPO.java
@@ -16,10 +16,7 @@ public class TestReportPointPO {
private String reportId;
private Integer groupNo;
private String substationName;
- private String deviceName;
private String pointName;
- private String testDeviceNo;
- private String clientUnitName;
private String monitorTime;
private String voltageLevel;
private String ptRatio;
@@ -30,8 +27,6 @@ public class TestReportPointPO {
private String powerSupplyCapacity;
private String excelAttachmentName;
private String excelStoragePath;
- private String wordAttachmentName;
- private String wordStoragePath;
private Integer sortNo;
private Integer deleted;
private String createBy;
diff --git a/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/pojo/vo/TestReportPointVO.java b/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/pojo/vo/TestReportPointVO.java
index 401e08b..7d73cf5 100644
--- a/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/pojo/vo/TestReportPointVO.java
+++ b/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/pojo/vo/TestReportPointVO.java
@@ -8,10 +8,7 @@ public class TestReportPointVO {
private String id;
private Integer groupNo;
private String substationName;
- private String deviceName;
private String pointName;
- private String testDeviceNo;
- private String clientUnitName;
private String monitorTime;
private String voltageLevel;
private String ptRatio;
@@ -21,5 +18,4 @@ public class TestReportPointVO {
private String protocolCapacity;
private String powerSupplyCapacity;
private String excelAttachmentName;
- private String wordAttachmentName;
}
diff --git a/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/service/impl/TestReportServiceImpl.java b/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/service/impl/TestReportServiceImpl.java
index 5d8e6bd..5953c76 100644
--- a/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/service/impl/TestReportServiceImpl.java
+++ b/ai-report/test-report/src/main/java/com/njcn/gather/aireport/testreport/service/impl/TestReportServiceImpl.java
@@ -54,7 +54,6 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
import java.nio.file.Path;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@@ -230,14 +229,28 @@ public class TestReportServiceImpl extends ServiceImpl reports = this.lambdaQuery()
+ .in(TestReportPO::getId, validIds)
+ .eq(TestReportPO::getStatus, TestReportConst.STATUS_NORMAL)
+ .list();
+ String userId = resolveCurrentUserId();
+ LocalDateTime now = LocalDateTime.now();
+ boolean deleted = this.lambdaUpdate()
.set(TestReportPO::getState, TestReportConst.STATE_DELETED)
.set(TestReportPO::getStatus, TestReportConst.STATUS_DELETED)
- .set(TestReportPO::getUpdateBy, resolveCurrentUserId())
- .set(TestReportPO::getUpdateTime, LocalDateTime.now())
+ .set(TestReportPO::getUpdateBy, userId)
+ .set(TestReportPO::getUpdateTime, now)
.in(TestReportPO::getId, validIds)
.eq(TestReportPO::getStatus, TestReportConst.STATUS_NORMAL)
.update();
+ if (deleted) {
+ for (TestReportPO report : reports) {
+ deletePointFiles(loadNormalPoints(report.getId()));
+ deleteGroupReportFiles(loadNormalGroupReports(report.getId()));
+ testReportStorageService.deleteQuietly(resolveSummaryStoragePath(report.getData()));
+ }
+ }
+ return deleted;
}
@Override
@@ -308,17 +321,18 @@ public class TestReportServiceImpl extends ServiceImpl previewTemplate(String id) {
TestReportPO report = requireNormal(id);
ReportModelPO model = requireReportModel(report.getReportModelId());
- Path filePath = reportModelFileStorageService.resolveDownloadPath(model.getPath());
- if (!Files.exists(filePath) || !Files.isRegularFile(filePath)) {
- throw new BusinessException(CommonResponseEnum.FAIL, MSG_TEMPLATE_FILE_NOT_FOUND);
- }
String fileName = resolvePreviewFileName(model);
- FilePreviewService.PreviewContent previewContent = filePreviewService.preview(filePath, fileName);
- return ResponseEntity.ok()
- .header(HttpHeaders.CONTENT_DISPOSITION, "inline; filename*=UTF-8''" + encodeFileName(fileName))
- .header(HttpHeaders.CACHE_CONTROL, "no-cache, no-store, must-revalidate")
- .contentType(MediaType.parseMediaType(previewContent.getContentType()))
- .body(previewContent.getContent());
+ Path tempFile = reportModelFileStorageService.downloadToTempFile(model.getPath(), fileName);
+ try {
+ FilePreviewService.PreviewContent previewContent = filePreviewService.preview(tempFile, fileName);
+ return ResponseEntity.ok()
+ .header(HttpHeaders.CONTENT_DISPOSITION, "inline; filename*=UTF-8''" + encodeFileName(fileName))
+ .header(HttpHeaders.CACHE_CONTROL, "no-cache, no-store, must-revalidate")
+ .contentType(MediaType.parseMediaType(previewContent.getContentType()))
+ .body(previewContent.getContent());
+ } finally {
+ reportModelFileStorageService.deleteTempFileQuietly(tempFile);
+ }
}
@Override
@@ -427,8 +441,7 @@ public class TestReportServiceImpl extends ServiceImpl 32) {
@@ -512,8 +525,8 @@ public class TestReportServiceImpl extends ServiceImpl pointWrapper = new LambdaQueryWrapper();
pointWrapper.eq(TestReportPointPO::getReportId, reportId);
@@ -760,10 +785,7 @@ public class TestReportServiceImpl extends ServiceImpl value, String blankMessage, String invalidMessage) {
+ if (value == null || value.isEmpty()) {
+ throw new BusinessException(CommonResponseEnum.FAIL, blankMessage);
+ }
try {
- JsonNode jsonNode = OBJECT_MAPPER.readTree(text);
- if (jsonNode == null || !(jsonNode.isObject() || jsonNode.isArray())) {
+ ArrayList normalizedItems = new ArrayList();
+ for (String item : value) {
+ String normalizedItem = trimToNull(item);
+ if (normalizedItem != null) {
+ normalizedItems.add(normalizedItem);
+ }
+ }
+ if (normalizedItems.isEmpty()) {
throw new BusinessException(CommonResponseEnum.FAIL, invalidMessage);
}
- return text;
+ return OBJECT_MAPPER.writeValueAsString(normalizedItems);
+ } catch (BusinessException exception) {
+ throw exception;
+ } catch (Exception exception) {
+ throw new BusinessException(CommonResponseEnum.FAIL, invalidMessage);
+ }
+ }
+
+ private String requireJsonObjectOrArrayText(JsonNode value, String blankMessage, String invalidMessage) {
+ if (value == null || value.isNull()) {
+ throw new BusinessException(CommonResponseEnum.FAIL, blankMessage);
+ }
+ try {
+ if (!(value.isObject() || value.isArray())) {
+ throw new BusinessException(CommonResponseEnum.FAIL, invalidMessage);
+ }
+ return OBJECT_MAPPER.writeValueAsString(value);
} catch (BusinessException exception) {
throw exception;
} catch (Exception exception) {
diff --git a/ai-report/test-report/src/test/java/com/njcn/gather/aireport/testreport/service/impl/TestReportServiceImplTest.java b/ai-report/test-report/src/test/java/com/njcn/gather/aireport/testreport/service/impl/TestReportServiceImplTest.java
index 843bfb9..c604f63 100644
--- a/ai-report/test-report/src/test/java/com/njcn/gather/aireport/testreport/service/impl/TestReportServiceImplTest.java
+++ b/ai-report/test-report/src/test/java/com/njcn/gather/aireport/testreport/service/impl/TestReportServiceImplTest.java
@@ -91,11 +91,6 @@
// }
//
// @Test
-// void pointVoShouldExposeDeviceName() throws Exception {
-// Assertions.assertNotNull(TestReportPointVO.class.getMethod("getDeviceName"));
-// }
-//
-// @Test
// void parserShouldReadNodeInfoSheetFromSampleXls() throws Exception {
// TestReportPointExcelParser parser = new TestReportPointExcelParser();
// try (InputStream inputStream = Files.newInputStream(
diff --git a/entrance/src/main/resources/application.yml b/entrance/src/main/resources/application.yml
index fb5b600..ea61dc0 100644
--- a/entrance/src/main/resources/application.yml
+++ b/entrance/src/main/resources/application.yml
@@ -72,6 +72,7 @@ storage:
secret-key: "minioadmin"
buckets:
user-signature: cn-tool-user-signature
+ ai-report: cn-tool-ai-report
activate:
private-key: "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcUyYhVqczGxblL+o/xZzF/8nf+LjrfUE/dS1aRHM7uMDD0cgCArhjtfneFePrMxt+Z7W8yNBzSarub8qsfhaVNikV7Es7oaeTygfjQXTi2n4AFkir3fM07J08RpWhl5M8f8uWTCuvFUYAw00gq55typqmnbkmJa2VIUy/iQf+cMCP7abz4/jNhUzUR3qA7TV4oMRgTdIEDUp63YF8dOC+JH8XxYrCVeHXV6fLCwmesdMzl0lB2VTEKMfLbXhOmF5g7P9y/16VCcN8UBuZlbyYfn+GAxJOSbeHi5HshOKfoSuD7Jz+3WQZpNavOWjIFExKIU38/CvnJCOP7XBCqpSTAgMBAAECggEAYeWokWRE3TpvwiOZnUpR/aVMdVi75a3ROL5XIpqPV61B+t/bU3cEpl0GF9C5pUeiRi0IoStZb3mI9D1KPW/REKyUWkhabQO1gFYbTnRlkNOn6MILzKX4cwJjDaZeeo4EBPU7N+qHyOOXrU6hdH5FfxhMdV983ajm5eeuupxER1C2kAcIklTeVpTX6EKOgZb5LBp5ssOVm2P42pOauvcRozRcvZmqnErXmukv0H4l3EVNt4rHpTn9riHUC63e8JfiYzVaF6zuNUxv6nHEft0/SRMw11XSTnNfDzcKqgjz6ksFBS/6eQQYKESk+ONC53HUuYHFAknkwsPupDCT2W8FIQKBgQDLHT/xCU3nxGr4vFKBDNaO2D5oK20ECbBO4oDvLWWmQG7f+6TsMy8PgVdMnoL4RfqGlwFAKEpS6KVFHnBVqnNEhcdy9uCI7x7Xx8UnyUtxj1EDTm76uta9Ki9OrlqB6tImDM9+Ya3vGktW37ht4WOx2OsJRhG1dbf6RLwFlH7DWwKBgQDFBxvi5I1BR6hg6Tj7xd2SqOT2Y+BED3xuSYENhWbmMhLJDResaB7mjztbxlYaY2mOE0holWm2uDmVFFhMh4jYXik4hYH8nmDzq9mDpZCZ9pyjYqnAP8THoAa8EbgrUWB8A6BPH4iL3KbMnBfBKY0pIr2xrvnjQjNBAgta7KDRKQKBgCe6oe4wxrdF2TKsC2tIqpMoQxS3Icy/ZGgZr+SYuaBKTCWtoDW/UT40K3JGMxIDBhzbXphBCUCsVt9tM8Xd4EwP6tJW7dZ7B0pnve2pVwNwaAVAiz6p2yUHIle+jN+Koe5lZRSwYIg7WW81tWpwwsJfzqFyvjYDP6hJV4mz4ROvAoGAaRcdnKvjXApomShMqJ4lTPChD3q+SA8qg3jZSOj6tZXHx00gb2kp8jg7pPvpOTIFPy6x1Ha9aCRjMk0ju84fA6lVuzwa1S907wOehUVuF3Eeo1cgy9Y3k3KbpPyeixxgpkUY4JslLdSHc2NemD0dee951qhJyRmqVOZOQDUuoeECgYEAqBw2cAFk3vM97WY06TSldGA8ajVHx3BYRjj+zl62NTQthy8fw3tqxb3c5e8toOmZWKjZvDhg2TRLhsDDQWEYg3LZG87REqVIjgEPcpjNLidjygGX8n3JF2o0O5I/EMvl0s/+LVQONfduOBvhwDqr8QNisbLsyneiAq7umewMolo="
diff --git a/tmp/cn_tool.sql b/tmp/cn_tool.sql
index 6246a5a..6242868 100644
--- a/tmp/cn_tool.sql
+++ b/tmp/cn_tool.sql
@@ -1,17 +1,17 @@
/*
Navicat Premium Dump SQL
- Source Server : 127.0.0.1
+ Source Server : mysql-local
Source Server Type : MySQL
- Source Server Version : 50730 (5.7.30-log)
+ Source Server Version : 80041 (8.0.41)
Source Host : localhost:3306
Source Schema : cn_tool
Target Server Type : MySQL
- Target Server Version : 50730 (5.7.30-log)
+ Target Server Version : 80041 (8.0.41)
File Encoding : 65001
- Date: 10/07/2026 13:16:05
+ Date: 14/07/2026 15:44:59
*/
SET NAMES utf8mb4;
@@ -33,7 +33,7 @@ CREATE TABLE `ai_clientunit` (
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`update_time` datetime NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '委托单位表' ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '委托单位表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of ai_clientunit
@@ -64,9 +64,9 @@ CREATE TABLE `ai_report_approval_log` (
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`update_time` datetime NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
- INDEX `idx_report_approval_log_report`(`report_type`, `report_id`) USING BTREE,
- INDEX `idx_report_approval_log_time`(`approval_time`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '报告审批日志表' ROW_FORMAT = Dynamic;
+ INDEX `idx_report_approval_log_report`(`report_type` ASC, `report_id` ASC) USING BTREE,
+ INDEX `idx_report_approval_log_time`(`approval_time` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '报告审批日志表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of ai_report_approval_log
@@ -92,13 +92,16 @@ CREATE TABLE `ai_reportmodel` (
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`update_time` datetime NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '报告模版表' ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '报告模版表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of ai_reportmodel
-- ----------------------------
-INSERT INTO `ai_reportmodel` VALUES ('2db0f651-756d-400f-be81-8d47a1371ccf', '测试报告', '03', 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-06-29 16:23:22', '同意', '20260626/53e4eea53cd047c5b48d0faabf00823a-北京系统升级改造方案(内部)20260612 V3.docx', '北京系统升级改造方案(内部)20260612 V3.docx', 1, 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-06-26 10:05:25', 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-06-29 16:23:22');
-INSERT INTO `ai_reportmodel` VALUES ('e210a6dc-1a60-4959-9355-7ce72a99a841', '测试报告2', '02', 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-06-26 13:14:14', NULL, '20260626/d5bc77d0770f495281da78a74d900596-安装linux系统的装机要求.docx', '安装linux系统的装机要求.docx', 1, 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-06-26 10:10:25', 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-06-26 13:14:14');
+INSERT INTO `ai_reportmodel` VALUES ('2db0f651-756d-400f-be81-8d47a1371ccf', '测试报告', '05', 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-06-29 16:23:22', '同意', '20260626/53e4eea53cd047c5b48d0faabf00823a-北京系统升级改造方案(内部)20260612 V3.docx', '北京系统升级改造方案(内部)20260612 V3.docx', 0, 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-06-26 10:05:25', 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-07-10 13:35:07');
+INSERT INTO `ai_reportmodel` VALUES ('43867890-942d-4d41-b3c8-959db5e722bc', '海宏模板', '05', NULL, NULL, NULL, '20260710/e977041b83ff4086b9f331923e5a139a-海宏槽位标注.docx', '海宏槽位标注.docx', 0, 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-07-10 13:40:31', 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-07-14 14:23:42');
+INSERT INTO `ai_reportmodel` VALUES ('456947c0-0e91-42c1-86a4-d0549f084ab5', '海宏槽位模板', '01', NULL, NULL, NULL, 'report-model/d1afbeb2ab4b4a078da400f5965baca1-海宏槽位模板.docx', '海宏槽位模板.docx', 1, 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-07-14 14:31:08', 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-07-14 14:35:47');
+INSERT INTO `ai_reportmodel` VALUES ('d1e89536-385c-49e4-b946-456d69471838', 'xxxx', '05', NULL, NULL, NULL, 'report-model/8f3fcbc995954c55be494f61bbcec1ee-海宏槽位模板.docx', '海宏槽位模板.docx', 0, 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-07-14 14:36:09', 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-07-14 14:37:58');
+INSERT INTO `ai_reportmodel` VALUES ('e210a6dc-1a60-4959-9355-7ce72a99a841', '测试报告2', '05', 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-06-26 13:14:14', NULL, '20260626/d5bc77d0770f495281da78a74d900596-安装linux系统的装机要求.docx', '安装linux系统的装机要求.docx', 0, 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-06-26 10:10:25', 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-07-10 13:35:09');
-- ----------------------------
-- Table structure for ai_testdevice
@@ -109,7 +112,7 @@ CREATE TABLE `ai_testdevice` (
`type` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '检测设备型号ID(GUID)',
`no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '检测设备编号',
`validity_period` date NOT NULL COMMENT '检测设备校准有效期',
- `validity_report` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '检测设备校准报告',
+ `validity_report` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '检测设备校准报告',
`state` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '检测设备状态:01-在运;02-退运',
`status` tinyint(1) NOT NULL COMMENT '状态(0:删除 1:正常)',
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
@@ -117,7 +120,7 @@ CREATE TABLE `ai_testdevice` (
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`update_time` datetime NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '检测设备表' ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '检测设备表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of ai_testdevice
@@ -150,12 +153,12 @@ CREATE TABLE `ai_testreport` (
`update_time` datetime NULL DEFAULT NULL,
`report_generate_state` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '普测报告表' ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '普测报告表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of ai_testreport
-- ----------------------------
-INSERT INTO `ai_testreport` VALUES ('e97256ff-508b-46a2-b7ce-75b574754464', '111', '214c83c6-3879-4f35-928d-c9284e943afc', 'e210a6dc-1a60-4959-9355-7ce72a99a841', '7f4c8fa6f2df4d1f9e1c8a2b20000001', '111', '[\"7f4c8fa6f2df4d1f9e1c8a2b30000001\", \"7f4c8fa6f2df4d1f9e1c8a2b30000002\"]', '3333', NULL, '01', NULL, NULL, NULL, 1, 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-06-30 10:22:46', 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-06-30 10:22:46', 0);
+INSERT INTO `ai_testreport` VALUES ('e97256ff-508b-46a2-b7ce-75b574754464', '111', '214c83c6-3879-4f35-928d-c9284e943afc', 'e210a6dc-1a60-4959-9355-7ce72a99a841', '7f4c8fa6f2df4d1f9e1c8a2b20000001', '111', '[\"7f4c8fa6f2df4d1f9e1c8a2b30000001\", \"7f4c8fa6f2df4d1f9e1c8a2b30000002\"]', '3333', NULL, '05', NULL, NULL, NULL, 0, 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-06-30 10:22:46', 'ce2bd33b7f7e45c7739f4b017a7abb29', '2026-07-10 13:48:40', 0);
-- ----------------------------
-- Table structure for ai_testreport_group_report
@@ -164,23 +167,23 @@ DROP TABLE IF EXISTS `ai_testreport_group_report`;
CREATE TABLE `ai_testreport_group_report` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`report_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
- `group_no` int(11) NOT NULL,
+ `group_no` int NOT NULL,
`report_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`report_file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`report_storage_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`generate_state` tinyint(1) NOT NULL DEFAULT 0,
`generate_message` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`generate_time` datetime NULL DEFAULT NULL,
- `sort_no` int(11) NOT NULL DEFAULT 0,
+ `sort_no` int NOT NULL DEFAULT 0,
`deleted` tinyint(1) NOT NULL DEFAULT 0,
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`create_time` datetime NULL DEFAULT NULL,
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`update_time` datetime NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
- UNIQUE INDEX `uk_ai_testreport_group_report_report_group`(`report_id`, `group_no`) USING BTREE,
- INDEX `idx_ai_testreport_group_report_report_id`(`report_id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+ UNIQUE INDEX `uk_ai_testreport_group_report_report_group`(`report_id` ASC, `group_no` ASC) USING BTREE,
+ INDEX `idx_ai_testreport_group_report_report_id`(`report_id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of ai_testreport_group_report
@@ -193,7 +196,7 @@ DROP TABLE IF EXISTS `ai_testreport_point`;
CREATE TABLE `ai_testreport_point` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`report_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
- `group_no` int(11) NULL DEFAULT NULL,
+ `group_no` int NULL DEFAULT NULL,
`substation_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`point_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`monitor_time` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
@@ -206,15 +209,15 @@ CREATE TABLE `ai_testreport_point` (
`power_supply_capacity` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`excel_attachment_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`excel_storage_path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
- `sort_no` int(11) NOT NULL DEFAULT 0,
+ `sort_no` int NOT NULL DEFAULT 0,
`deleted` tinyint(1) NOT NULL DEFAULT 0,
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`create_time` datetime NULL DEFAULT NULL,
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`update_time` datetime NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
- INDEX `idx_ai_testreport_point_report_id`(`report_id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+ INDEX `idx_ai_testreport_point_report_id`(`report_id` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of ai_testreport_point
@@ -231,7 +234,7 @@ CREATE TABLE `cs_dev_type` (
`power` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '工作电源',
`Dev_Volt` float NULL DEFAULT NULL COMMENT '额定电压',
`Dev_Curr` float NULL DEFAULT NULL COMMENT '额定电流',
- `Dev_Chns` int(11) NULL DEFAULT NULL COMMENT '通道数',
+ `Dev_Chns` int NULL DEFAULT NULL COMMENT '通道数',
`Wave_Cmd` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '录波指令',
`State` tinyint(1) NULL DEFAULT NULL,
`Create_By` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
@@ -286,7 +289,7 @@ CREATE TABLE `cs_device_unit` (
`positive_v` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '正序电压',
`no_positive_v` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '零序负序电压',
PRIMARY KEY (`dev_id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of cs_device_unit
@@ -297,19 +300,19 @@ CREATE TABLE `cs_device_unit` (
-- ----------------------------
DROP TABLE IF EXISTS `cs_engineering`;
CREATE TABLE `cs_engineering` (
- `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'id',
- `name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '工程名称',
- `province` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '省',
- `city` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '市',
- `description` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述',
+ `id` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT 'id',
+ `name` varchar(60) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '工程名称',
+ `province` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '省',
+ `city` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '市',
+ `description` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '描述',
`status` tinyint(1) NOT NULL COMMENT '状态(0:删除 1:正常)',
- `sort` int(11) NULL DEFAULT NULL COMMENT '排序',
- `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建用户',
+ `sort` int NULL DEFAULT NULL COMMENT '排序',
+ `create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建用户',
`create_time` datetime NOT NULL COMMENT '创建时间',
- `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新用户',
+ `update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新用户',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '工程信息表' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '工程信息表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of cs_engineering
@@ -321,35 +324,35 @@ INSERT INTO `cs_engineering` VALUES ('95f3d516ac6544b28e9943cf890b19ac', '灿能
-- ----------------------------
DROP TABLE IF EXISTS `cs_equipment_delivery`;
CREATE TABLE `cs_equipment_delivery` (
- `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'id',
- `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '装置名称',
- `ndid` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '网络设备ID',
- `mac` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '装置mac地址',
- `dev_type` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '装置类型(直连设备、网关、装置)',
- `dev_model` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '装置型号(pqs588、pqs680...)',
- `cntract_no` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '合同号',
+ `id` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT 'id',
+ `name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '装置名称',
+ `ndid` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '网络设备ID',
+ `mac` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '装置mac地址',
+ `dev_type` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '装置类型(直连设备、网关、装置)',
+ `dev_model` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '装置型号(pqs588、pqs680...)',
+ `cntract_no` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '合同号',
`run_status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '设备运行状态(0:删除 1:离线 2:在线)',
`status` tinyint(1) NOT NULL COMMENT '设备接入状态(1:未注册 2:注册 3:接入)',
- `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建用户',
+ `create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建用户',
`create_time` datetime NOT NULL COMMENT '创建时间',
- `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新用户',
+ `update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新用户',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
- `dev_access_method` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '装置接入方式(mqtt、cloud)',
- `softinfo_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '设备软件信息',
- `module_number` int(11) NULL DEFAULT NULL COMMENT '模块个数',
- `process` int(11) NOT NULL COMMENT '设备当前流程(1:设备登记,2:功能调试,3:出厂调试 4:设备投运)',
- `qr_path` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '二维码文件地址',
+ `dev_access_method` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '装置接入方式(mqtt、cloud)',
+ `softinfo_id` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '设备软件信息',
+ `module_number` int NULL DEFAULT NULL COMMENT '模块个数',
+ `process` int NOT NULL COMMENT '设备当前流程(1:设备登记,2:功能调试,3:出厂调试 4:设备投运)',
+ `qr_path` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '二维码文件地址',
`usage_status` tinyint(1) NULL DEFAULT 1 COMMENT '装置使用状态(0:停用 1:启用)',
- `sort` int(11) NULL DEFAULT NULL COMMENT '排序',
- `node_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '前置服务器IP',
- `node_process` int(11) NULL DEFAULT NULL COMMENT '前置进程号',
- `dev_log_level` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '日志等级(NORMAL、DEBUG、WARN、ERROR)',
- `associated_engineering` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '所属工程',
- `associated_project` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '所属项目',
- `icd` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '设备icd',
+ `sort` int NULL DEFAULT NULL COMMENT '排序',
+ `node_id` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '前置服务器IP',
+ `node_process` int NULL DEFAULT NULL COMMENT '前置进程号',
+ `dev_log_level` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '日志等级(NORMAL、DEBUG、WARN、ERROR)',
+ `associated_engineering` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '所属工程',
+ `associated_project` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '所属项目',
+ `icd` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '设备icd',
`upgrade` tinyint(1) NULL DEFAULT NULL COMMENT '是否支持升级 0否/1是',
PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '设备出厂表' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '设备出厂表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of cs_equipment_delivery
@@ -361,8 +364,8 @@ INSERT INTO `cs_equipment_delivery` VALUES ('4110c772e39444388867e533fc12a84f',
-- ----------------------------
DROP TABLE IF EXISTS `cs_icd_path`;
CREATE TABLE `cs_icd_path` (
- `ID` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'icdID',
- `Name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `ID` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT 'icdID',
+ `Name` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`Angle` tinyint(1) NULL DEFAULT 0 COMMENT '是否支持电压相角、电流相角指标,0表示否,1表示是',
`Use_Phase_Index` tinyint(1) NULL DEFAULT 0 COMMENT '角型接线时是否使用相别的指标来进行检测,0表示否,1表示是',
`State` tinyint(1) NOT NULL COMMENT '状态:0-删除 1-正常',
@@ -371,14 +374,14 @@ CREATE TABLE `cs_icd_path` (
`Update_By` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
`Update_Time` datetime NULL DEFAULT NULL,
`Json_Str` json NULL COMMENT 'ICD解析后的Json字符串',
- `Xml_Str` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT 'ICD解析后的xml字符串',
+ `Xml_Str` mediumtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT 'ICD解析后的xml字符串',
`Icd` mediumblob NULL COMMENT '二进制原文件',
`Result` tinyint(1) NULL DEFAULT NULL COMMENT '结论,是否与标准icd一致,0否、1是',
`Msg` json NULL COMMENT '结论描述信息',
`Type` tinyint(1) NULL DEFAULT NULL COMMENT '类型 1表示手动录入的标准icd、2表示手动录入的非标准icd、3表示上游解析传递的标准icd、4表示上游解析传递的非标准icd',
- `Reference_Icd_Id` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '参照的标准icd',
+ `Reference_Icd_Id` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '参照的标准icd',
PRIMARY KEY (`ID`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of cs_icd_path
@@ -397,20 +400,20 @@ INSERT INTO `cs_icd_path` VALUES ('e4cdd2953fa84d888822915677308872', 'PQS882_VX
-- ----------------------------
DROP TABLE IF EXISTS `cs_ledger`;
CREATE TABLE `cs_ledger` (
- `Id` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'id',
- `Pid` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '父节点(0为根节点)',
- `Pids` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '上层所有节点',
- `Name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名称',
+ `Id` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT 'id',
+ `Pid` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '父节点(0为根节点)',
+ `Pids` varchar(500) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '上层所有节点',
+ `Name` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '名称',
`Level` tinyint(1) NOT NULL COMMENT '等级:0-工程名称;1- 项目名称;2-终端;3-监测点;',
- `Sort` int(11) NOT NULL DEFAULT 0 COMMENT '排序(默认为0,有特殊排序需要时候人为输入)',
- `Remark` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',
+ `Sort` int NOT NULL DEFAULT 0 COMMENT '排序(默认为0,有特殊排序需要时候人为输入)',
+ `Remark` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '备注',
`State` tinyint(1) NOT NULL COMMENT '状态 0-删除;1-正常;默认正常',
- `Create_By` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `Create_By` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
`Create_Time` datetime NOT NULL,
- `Update_By` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `Update_By` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
`Update_Time` datetime NULL DEFAULT NULL,
PRIMARY KEY (`Id`, `State`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '台账表' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '台账表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of cs_ledger
@@ -426,39 +429,39 @@ INSERT INTO `cs_ledger` VALUES ('f828bc42132841c2aeebc6859f5a9b7c', '4110c772e39
-- ----------------------------
DROP TABLE IF EXISTS `cs_line`;
CREATE TABLE `cs_line` (
- `line_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '监测点id',
- `name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '监测点名称',
- `device_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '装置id',
- `data_set_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '数据集id',
- `data_model_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '模板id',
- `position` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '字典表:安装位置(负载侧,电网侧, 输出侧)',
+ `line_id` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '监测点id',
+ `name` varchar(60) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '监测点名称',
+ `device_id` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '装置id',
+ `data_set_id` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '数据集id',
+ `data_model_id` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '模板id',
+ `position` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '字典表:安装位置(负载侧,电网侧, 输出侧)',
`vol_grade` decimal(10, 4) NULL DEFAULT NULL COMMENT '电压等级(kv)',
- `run_status` int(11) NULL DEFAULT NULL COMMENT '运行状态(0:运行;1:检修;2:停运;3:调试;4:退运)',
- `conType` int(11) NULL DEFAULT NULL COMMENT '接线方式(0-星型 1-角型 2-V型)',
+ `run_status` int NULL DEFAULT NULL COMMENT '运行状态(0:运行;1:检修;2:停运;3:调试;4:退运)',
+ `conType` int NULL DEFAULT NULL COMMENT '接线方式(0-星型 1-角型 2-V型)',
`pt_ratio` decimal(10, 4) NULL DEFAULT NULL COMMENT 'PT变比',
`pt2_ratio` decimal(10, 4) NULL DEFAULT NULL COMMENT 'PT2变比',
`ct_ratio` decimal(10, 4) NULL DEFAULT NULL COMMENT 'CT变比',
`ct2_ratio` decimal(10, 4) NULL DEFAULT NULL COMMENT 'CT2变比',
`status` tinyint(1) NOT NULL COMMENT '状态(0:删除 1:正常)',
- `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
`create_time` datetime NOT NULL,
- `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
`update_time` datetime NULL DEFAULT NULL,
- `clDid` int(11) NULL DEFAULT NULL COMMENT '逻辑子设备id(与模板对应)',
- `line_interval` int(11) NULL DEFAULT NULL COMMENT '统计间隔',
- `line_no` int(11) NULL DEFAULT NULL COMMENT '线路号',
+ `clDid` int NULL DEFAULT NULL COMMENT '逻辑子设备id(与模板对应)',
+ `line_interval` int NULL DEFAULT NULL COMMENT '统计间隔',
+ `line_no` int NULL DEFAULT NULL COMMENT '线路号',
`short_circuit_capacity` decimal(10, 2) NULL DEFAULT NULL COMMENT '短路容量',
`dev_capacity` decimal(10, 2) NULL DEFAULT NULL COMMENT '设备容量',
`basic_capacity` decimal(10, 2) NULL DEFAULT NULL COMMENT '基准容量',
`protocol_capacity` decimal(10, 2) UNSIGNED ZEROFILL NULL DEFAULT NULL COMMENT '协议容量',
- `monitor_obj` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '监测对象类型',
- `is_govern` int(11) NULL DEFAULT NULL COMMENT '是否治理(0:未治理 1:已治理)',
- `monitor_user` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '敏感用户id',
- `report_file_path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '治理报告文件路径',
- `line_log_level` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '日志等级(NORMAL、DEBUG、WARN、ERROR)',
- `is_important` int(11) NULL DEFAULT NULL COMMENT '是否是主要监测点(0: 不是 1:是)',
+ `monitor_obj` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '监测对象类型',
+ `is_govern` int NULL DEFAULT NULL COMMENT '是否治理(0:未治理 1:已治理)',
+ `monitor_user` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '敏感用户id',
+ `report_file_path` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '治理报告文件路径',
+ `line_log_level` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '日志等级(NORMAL、DEBUG、WARN、ERROR)',
+ `is_important` int NULL DEFAULT NULL COMMENT '是否是主要监测点(0: 不是 1:是)',
PRIMARY KEY (`line_id`, `status`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '监测点表' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '监测点表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of cs_line
@@ -471,7 +474,7 @@ INSERT INTO `cs_line` VALUES ('f828bc42132841c2aeebc6859f5a9b7c', '进线2号',
-- ----------------------------
DROP TABLE IF EXISTS `cs_overlimit`;
CREATE TABLE `cs_overlimit` (
- `line_id` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `line_id` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`freq_dev` float(10, 2) NULL DEFAULT NULL,
`voltage_dev` float(10, 2) NULL DEFAULT NULL,
`uvoltage_dev` float(10, 2) NULL DEFAULT NULL,
@@ -596,7 +599,7 @@ CREATE TABLE `cs_overlimit` (
`inuharm_15` float(10, 2) NULL DEFAULT NULL,
`inuharm_16` float(10, 2) NULL DEFAULT NULL,
PRIMARY KEY (`line_id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '监测点限值表' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '监测点限值表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of cs_overlimit
@@ -1398,20 +1401,20 @@ CREATE TABLE `cs_pqdif_path` (
`ID` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键ID',
`Name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'PQDIF文件名称',
`File_Path` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'PQDIF原始文件存储路径',
- `Record_Count` bigint(20) NULL DEFAULT NULL COMMENT 'Record总数',
- `Observation_Count` bigint(20) NULL DEFAULT NULL COMMENT 'Observation Record总数',
- `Sample_Value_Count` int(11) NULL DEFAULT NULL COMMENT '每个Series返回的样例采样值数量',
- `Result` int(11) NULL DEFAULT NULL COMMENT '解析结果:1-成功,0-失败',
+ `Record_Count` bigint NULL DEFAULT NULL COMMENT 'Record总数',
+ `Observation_Count` bigint NULL DEFAULT NULL COMMENT 'Observation Record总数',
+ `Sample_Value_Count` int NULL DEFAULT NULL COMMENT '每个Series返回的样例采样值数量',
+ `Result` int NULL DEFAULT NULL COMMENT '解析结果:1-成功,0-失败',
`Msg` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '解析提示、失败原因或校验结论JSON',
- `State` int(11) NOT NULL DEFAULT 1 COMMENT '状态:1-正常,0-删除',
+ `State` int NOT NULL DEFAULT 1 COMMENT '状态:1-正常,0-删除',
`Create_By` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
`Create_Time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`Update_By` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
`Update_Time` datetime NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`) USING BTREE,
- INDEX `idx_cs_pqdif_path_result`(`Result`) USING BTREE,
- INDEX `idx_cs_pqdif_path_state_time`(`State`, `Update_Time`, `Create_Time`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'PQDIF文件解析结果表' ROW_FORMAT = Dynamic;
+ INDEX `idx_cs_pqdif_path_result`(`Result` ASC) USING BTREE,
+ INDEX `idx_cs_pqdif_path_state_time`(`State` ASC, `Update_Time` ASC, `Create_Time` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'PQDIF文件解析结果表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of cs_pqdif_path
@@ -1424,18 +1427,18 @@ INSERT INTO `cs_pqdif_path` VALUES ('fc3934a7e24446a0b3f135fb74ff1482', '2222',
-- ----------------------------
DROP TABLE IF EXISTS `cs_project`;
CREATE TABLE `cs_project` (
- `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目Id',
- `name` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '项目名称',
- `area` varchar(600) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '相对位置',
- `description` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '项目描述',
+ `id` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '项目Id',
+ `name` varchar(60) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '项目名称',
+ `area` varchar(600) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '相对位置',
+ `description` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '项目描述',
`status` tinyint(1) NOT NULL COMMENT '状态(0:删除 1:正常)',
- `sort` int(11) NULL DEFAULT NULL COMMENT '排序',
- `create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建用户',
+ `sort` int NULL DEFAULT NULL COMMENT '排序',
+ `create_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '创建用户',
`create_time` datetime NOT NULL COMMENT '创建时间',
- `update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新用户',
+ `update_by` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '更新用户',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '项目表' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '项目表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of cs_project
@@ -1447,16 +1450,16 @@ INSERT INTO `cs_project` VALUES ('28fb58942f924f77829af59ab7a2b612', 'A号', NUL
-- ----------------------------
DROP TABLE IF EXISTS `cs_soft_info`;
CREATE TABLE `cs_soft_info` (
- `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
- `op_attr` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '读写操作属性:“r”',
- `os_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作系统名称,裸机系统填Null',
- `os_version` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作系统版本,裸机系统填Null',
- `app_version` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '应用程序版本号',
+ `id` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `op_attr` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '读写操作属性:“r”',
+ `os_name` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '操作系统名称,裸机系统填Null',
+ `os_version` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '操作系统版本,裸机系统填Null',
+ `app_version` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '应用程序版本号',
`app_date` datetime NOT NULL COMMENT '应用程序发布日期',
- `app_check` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '应用程序校验码',
- `soft_update` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否支持远程升级程序',
+ `app_check` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '应用程序校验码',
+ `soft_update` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '是否支持远程升级程序',
PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '系统软件表' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '系统软件表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of cs_soft_info
@@ -1468,14 +1471,14 @@ CREATE TABLE `cs_soft_info` (
DROP TABLE IF EXISTS `data_flicker`;
CREATE TABLE `data_flicker` (
`TIMEID` datetime NOT NULL,
- `LINEID` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
- `PHASIC_TYPE` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `LINEID` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `PHASIC_TYPE` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`FLUC` double NOT NULL,
`PST` double NOT NULL,
`PLT` double NOT NULL,
`QUALITYFLAG` decimal(1, 0) NOT NULL,
PRIMARY KEY (`LINEID`, `TIMEID`, `PHASIC_TYPE`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of data_flicker
@@ -1487,13 +1490,13 @@ CREATE TABLE `data_flicker` (
DROP TABLE IF EXISTS `data_fluc`;
CREATE TABLE `data_fluc` (
`TIMEID` datetime NOT NULL,
- `LINEID` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
- `PHASIC_TYPE` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `LINEID` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `PHASIC_TYPE` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`FLUC` double NOT NULL,
`FLUCCF` double NOT NULL,
`QUALITYFLAG` decimal(1, 0) NOT NULL,
PRIMARY KEY (`LINEID`, `TIMEID`, `PHASIC_TYPE`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of data_fluc
@@ -1505,8 +1508,8 @@ CREATE TABLE `data_fluc` (
DROP TABLE IF EXISTS `data_harmphasic_i`;
CREATE TABLE `data_harmphasic_i` (
`TIMEID` datetime NOT NULL,
- `LINEID` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
- `PHASIC_TYPE` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `LINEID` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `PHASIC_TYPE` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`I_1` double NOT NULL,
`I_2` double NOT NULL,
`I_3` double NOT NULL,
@@ -1709,7 +1712,7 @@ CREATE TABLE `data_harmphasic_i` (
`I_50_CP95` double NOT NULL,
`QUALITYFLAG` decimal(1, 0) NOT NULL,
PRIMARY KEY (`LINEID`, `TIMEID`, `PHASIC_TYPE`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of data_harmphasic_i
@@ -1721,8 +1724,8 @@ CREATE TABLE `data_harmphasic_i` (
DROP TABLE IF EXISTS `data_harmphasic_v`;
CREATE TABLE `data_harmphasic_v` (
`TIMEID` datetime NOT NULL,
- `LINEID` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
- `PHASIC_TYPE` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `LINEID` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `PHASIC_TYPE` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`V_1` double NOT NULL,
`V_2` double NOT NULL,
`V_3` double NOT NULL,
@@ -1925,7 +1928,7 @@ CREATE TABLE `data_harmphasic_v` (
`V_50_CP95` double NOT NULL,
`QUALITYFLAG` decimal(1, 0) NOT NULL,
PRIMARY KEY (`LINEID`, `TIMEID`, `PHASIC_TYPE`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of data_harmphasic_v
@@ -1937,8 +1940,8 @@ CREATE TABLE `data_harmphasic_v` (
DROP TABLE IF EXISTS `data_harmpower_p`;
CREATE TABLE `data_harmpower_p` (
`TIMEID` datetime NOT NULL,
- `LINEID` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
- `PHASIC_TYPE` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `LINEID` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `PHASIC_TYPE` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`PF` double NOT NULL,
`DF` double NOT NULL,
`P` double NOT NULL,
@@ -2153,7 +2156,7 @@ CREATE TABLE `data_harmpower_p` (
`P_50_CP95` double NOT NULL,
`QUALITYFLAG` decimal(1, 0) NOT NULL,
PRIMARY KEY (`LINEID`, `TIMEID`, `PHASIC_TYPE`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of data_harmpower_p
@@ -2165,8 +2168,8 @@ CREATE TABLE `data_harmpower_p` (
DROP TABLE IF EXISTS `data_harmpower_q`;
CREATE TABLE `data_harmpower_q` (
`TIMEID` datetime NOT NULL,
- `LINEID` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
- `PHASIC_TYPE` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `LINEID` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `PHASIC_TYPE` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`Q` double NOT NULL,
`Q_1` double NOT NULL,
`Q_2` double NOT NULL,
@@ -2373,7 +2376,7 @@ CREATE TABLE `data_harmpower_q` (
`Q_50_CP95` double NOT NULL,
`QUALITYFLAG` decimal(1, 0) NOT NULL,
PRIMARY KEY (`LINEID`, `TIMEID`, `PHASIC_TYPE`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of data_harmpower_q
@@ -2385,8 +2388,8 @@ CREATE TABLE `data_harmpower_q` (
DROP TABLE IF EXISTS `data_harmpower_s`;
CREATE TABLE `data_harmpower_s` (
`TIMEID` datetime NOT NULL,
- `LINEID` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
- `PHASIC_TYPE` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `LINEID` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `PHASIC_TYPE` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`S` double NOT NULL,
`S_1` double NOT NULL,
`S_2` double NOT NULL,
@@ -2593,7 +2596,7 @@ CREATE TABLE `data_harmpower_s` (
`S_50_CP95` double NOT NULL,
`QUALITYFLAG` decimal(1, 0) NOT NULL,
PRIMARY KEY (`LINEID`, `TIMEID`, `PHASIC_TYPE`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of data_harmpower_s
@@ -2605,8 +2608,8 @@ CREATE TABLE `data_harmpower_s` (
DROP TABLE IF EXISTS `data_harmrate_i`;
CREATE TABLE `data_harmrate_i` (
`TIMEID` datetime NOT NULL,
- `LINEID` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
- `PHASIC_TYPE` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `LINEID` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `PHASIC_TYPE` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`I_1` double NOT NULL,
`I_2` double NOT NULL,
`I_3` double NOT NULL,
@@ -2809,7 +2812,7 @@ CREATE TABLE `data_harmrate_i` (
`I_50_CP95` double NOT NULL,
`QUALITYFLAG` decimal(1, 0) NOT NULL,
PRIMARY KEY (`LINEID`, `TIMEID`, `PHASIC_TYPE`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of data_harmrate_i
@@ -2821,8 +2824,8 @@ CREATE TABLE `data_harmrate_i` (
DROP TABLE IF EXISTS `data_harmrate_v`;
CREATE TABLE `data_harmrate_v` (
`TIMEID` datetime NOT NULL,
- `LINEID` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
- `PHASIC_TYPE` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `LINEID` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `PHASIC_TYPE` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`V_1` double NOT NULL,
`V_2` double NOT NULL,
`V_3` double NOT NULL,
@@ -3025,7 +3028,7 @@ CREATE TABLE `data_harmrate_v` (
`V_50_CP95` double NOT NULL,
`QUALITYFLAG` decimal(1, 0) NOT NULL,
PRIMARY KEY (`LINEID`, `TIMEID`, `PHASIC_TYPE`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of data_harmrate_v
@@ -3037,8 +3040,8 @@ CREATE TABLE `data_harmrate_v` (
DROP TABLE IF EXISTS `data_i`;
CREATE TABLE `data_i` (
`TIMEID` datetime NOT NULL,
- `LINEID` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
- `PHASIC_TYPE` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `LINEID` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `PHASIC_TYPE` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`RMS` double NOT NULL,
`I_UNBALANCE` double NOT NULL,
`I_POS` double NOT NULL,
@@ -3265,7 +3268,7 @@ CREATE TABLE `data_i` (
`I_50_CP95` double NOT NULL,
`QUALITYFLAG` decimal(1, 0) NOT NULL,
PRIMARY KEY (`LINEID`, `TIMEID`, `PHASIC_TYPE`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of data_i
@@ -3277,8 +3280,8 @@ CREATE TABLE `data_i` (
DROP TABLE IF EXISTS `data_inharm_i`;
CREATE TABLE `data_inharm_i` (
`TIMEID` datetime NOT NULL,
- `LINEID` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
- `PHASIC_TYPE` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `LINEID` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `PHASIC_TYPE` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`I_1` double NOT NULL,
`I_2` double NOT NULL,
`I_3` double NOT NULL,
@@ -3481,7 +3484,7 @@ CREATE TABLE `data_inharm_i` (
`I_50_CP95` double NOT NULL,
`QUALITYFLAG` decimal(1, 0) NOT NULL,
PRIMARY KEY (`LINEID`, `TIMEID`, `PHASIC_TYPE`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of data_inharm_i
@@ -3493,12 +3496,12 @@ CREATE TABLE `data_inharm_i` (
DROP TABLE IF EXISTS `data_plt`;
CREATE TABLE `data_plt` (
`TIMEID` datetime NOT NULL,
- `LINEID` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
- `PHASIC_TYPE` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `LINEID` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `PHASIC_TYPE` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`PLT` double NOT NULL,
`QUALITYFLAG` decimal(1, 0) NOT NULL,
PRIMARY KEY (`LINEID`, `TIMEID`, `PHASIC_TYPE`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of data_plt
@@ -3510,8 +3513,8 @@ CREATE TABLE `data_plt` (
DROP TABLE IF EXISTS `data_v`;
CREATE TABLE `data_v` (
`TIMEID` datetime NOT NULL,
- `LINEID` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
- `PHASIC_TYPE` varchar(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `LINEID` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `PHASIC_TYPE` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`RMS` double NOT NULL,
`RMSAB` double NOT NULL,
`RMSBC` double NOT NULL,
@@ -3766,7 +3769,7 @@ CREATE TABLE `data_v` (
`V_50_CP95` double NOT NULL,
`QUALITYFLAG` decimal(1, 0) NOT NULL,
PRIMARY KEY (`LINEID`, `TIMEID`, `PHASIC_TYPE`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of data_v
@@ -3796,20 +3799,20 @@ CREATE TABLE `dbms_backup_file` (
`file_path` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '服务端记\r\n 录的备份文件路径或目录对象映射路径',
`log_file_path` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备份日志\r\n 文件路径',
`metadata_file_path` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'JDBC_EXPORT 元数据文件路径',
- `file_size` bigint(20) NULL DEFAULT NULL COMMENT '文件大小,单位字\r\n 节',
+ `file_size` bigint NULL DEFAULT NULL COMMENT '文件大小,单位字\r\n 节',
`checksum` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文件校验值',
- `state` tinyint(4) NOT NULL DEFAULT 1 COMMENT '状态:0-\r\n 删除,1-正常',
+ `state` tinyint NOT NULL DEFAULT 1 COMMENT '状态:0-\r\n 删除,1-正常',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
- INDEX `idx_dbms_backup_task`(`task_id`) USING BTREE,
- INDEX `idx_dbms_backup_connection`(`connection_id`) USING BTREE,
- INDEX `idx_dbms_backup_db_type`(`db_type`) USING BTREE,
- INDEX `idx_dbms_backup_strategy`(`backup_strategy`) USING BTREE,
- INDEX `idx_dbms_backup_create_time`(`create_time`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据库\r\n 备份文件记录表' ROW_FORMAT = Dynamic;
+ INDEX `idx_dbms_backup_task`(`task_id` ASC) USING BTREE,
+ INDEX `idx_dbms_backup_connection`(`connection_id` ASC) USING BTREE,
+ INDEX `idx_dbms_backup_db_type`(`db_type` ASC) USING BTREE,
+ INDEX `idx_dbms_backup_strategy`(`backup_strategy` ASC) USING BTREE,
+ INDEX `idx_dbms_backup_create_time`(`create_time` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据库\r\n 备份文件记录表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of dbms_backup_file
@@ -3826,7 +3829,7 @@ CREATE TABLE `dbms_connection` (
`connection_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '连\r\n 接名称',
`db_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'ORACLE' COMMENT '数据库类型:ORACLE,后续可扩展 MYSQL、\r\n INFLUXDB',
`host` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据库主机地\r\n 址',
- `port` int(11) NOT NULL COMMENT '数据库端口',
+ `port` int NOT NULL COMMENT '数据库端口',
`connect_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '连接类型:\r\n SERVICE_NAME、SID,Oracle 使用',
`service_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '服务名,\r\n Oracle SERVICE_NAME 模式使用',
`sid` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'SID,Oracle SID 模\r\n 式使用',
@@ -3834,7 +3837,7 @@ CREATE TABLE `dbms_connection` (
`schema_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '默认\r\n Schema,Oracle 使用',
`username` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户名',
`password_cipher` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '加密后\r\n 的密码;为空表示不保存密码,执行时临时输入',
- `save_password` tinyint(4) NOT NULL DEFAULT 1 COMMENT '是否保存密码:0-否,1-是',
+ `save_password` tinyint NOT NULL DEFAULT 1 COMMENT '是否保存密码:0-否,1-是',
`directory_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '默认数据\r\n 库目录对象名称,Oracle Data Pump 使用',
`directory_path` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '目录对象\r\n 对应物理路径,仅用于展示和校验',
`extra_config_json` json NULL COMMENT '扩展配置\r\n JSON,用于保存不同数据库的差异配置',
@@ -3842,17 +3845,17 @@ CREATE TABLE `dbms_connection` (
`last_test_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '最近连\r\n 接测试状态:SUCCESS、FAIL',
`last_test_message` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '最近\r\n 连接测试结果说明',
`last_test_time` datetime NULL DEFAULT NULL COMMENT '最近连接测试\r\n 时间',
- `state` tinyint(4) NOT NULL DEFAULT 1 COMMENT '状态:0-\r\n 删除,1-正常',
+ `state` tinyint NOT NULL DEFAULT 1 COMMENT '状态:0-\r\n 删除,1-正常',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
- INDEX `idx_dbms_connection_state`(`state`) USING BTREE,
- INDEX `idx_dbms_connection_db_type`(`db_type`) USING BTREE,
- INDEX `idx_dbms_connection_name`(`connection_name`) USING BTREE,
- INDEX `idx_dbms_connection_schema`(`schema_name`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据库\r\n 连接配置表' ROW_FORMAT = Dynamic;
+ INDEX `idx_dbms_connection_state`(`state` ASC) USING BTREE,
+ INDEX `idx_dbms_connection_db_type`(`db_type` ASC) USING BTREE,
+ INDEX `idx_dbms_connection_name`(`connection_name` ASC) USING BTREE,
+ INDEX `idx_dbms_connection_schema`(`schema_name` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据库\r\n 连接配置表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of dbms_connection
@@ -3879,18 +3882,18 @@ CREATE TABLE `dbms_operation_task` (
`progress_percent` decimal(5, 2) NOT NULL DEFAULT 0.00 COMMENT '任务进度百分比',
`started_at` datetime NULL DEFAULT NULL COMMENT '任务开始时间',
`finished_at` datetime NULL DEFAULT NULL COMMENT '任务结束时间',
- `state` tinyint(4) NOT NULL DEFAULT 1 COMMENT '状态:0-\r\n 删除,1-正常',
+ `state` tinyint NOT NULL DEFAULT 1 COMMENT '状态:0-\r\n 删除,1-正常',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
- UNIQUE INDEX `uk_dbms_operation_task_no`(`task_no`) USING BTREE,
- INDEX `idx_dbms_operation_connection`(`connection_id`) USING BTREE,
- INDEX `idx_dbms_operation_db_type`(`db_type`) USING BTREE,
- INDEX `idx_dbms_operation_type_status`(`operation_type`, `task_status`) USING BTREE,
- INDEX `idx_dbms_operation_create_time`(`create_time`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据库\r\n 运维任务表' ROW_FORMAT = Dynamic;
+ UNIQUE INDEX `uk_dbms_operation_task_no`(`task_no` ASC) USING BTREE,
+ INDEX `idx_dbms_operation_connection`(`connection_id` ASC) USING BTREE,
+ INDEX `idx_dbms_operation_db_type`(`db_type` ASC) USING BTREE,
+ INDEX `idx_dbms_operation_type_status`(`operation_type` ASC, `task_status` ASC) USING BTREE,
+ INDEX `idx_dbms_operation_create_time`(`create_time` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据库\r\n 运维任务表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of dbms_operation_task
@@ -3914,19 +3917,19 @@ CREATE TABLE `dbms_restore_record` (
`target_schema_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '目标\r\n Schema',
`target_names_json` json NULL COMMENT '恢复对象名称\r\n 列表 JSON,例如表名列表',
`table_exists_action` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'Data\r\n Pump TABLE_EXISTS_ACTION:SKIP、APPEND、TRUNCATE、\r\n REPLACE',
- `overwrite_confirmed` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否已确认覆盖类操作:0-否,1-是',
+ `overwrite_confirmed` tinyint NOT NULL DEFAULT 0 COMMENT '是否已确认覆盖类操作:0-否,1-是',
`result_message` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '恢复结\r\n 果说明',
- `state` tinyint(4) NOT NULL DEFAULT 1 COMMENT '状态:0-\r\n 删除,1-正常',
+ `state` tinyint NOT NULL DEFAULT 1 COMMENT '状态:0-\r\n 删除,1-正常',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
- INDEX `idx_dbms_restore_task`(`task_id`) USING BTREE,
- INDEX `idx_dbms_restore_backup_file`(`backup_file_id`) USING BTREE,
- INDEX `idx_dbms_restore_connection`(`connection_id`) USING BTREE,
- INDEX `idx_dbms_restore_db_type`(`db_type`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据库\r\n 恢复记录表' ROW_FORMAT = Dynamic;
+ INDEX `idx_dbms_restore_task`(`task_id` ASC) USING BTREE,
+ INDEX `idx_dbms_restore_backup_file`(`backup_file_id` ASC) USING BTREE,
+ INDEX `idx_dbms_restore_connection`(`connection_id` ASC) USING BTREE,
+ INDEX `idx_dbms_restore_db_type`(`db_type` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据库\r\n 恢复记录表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of dbms_restore_record
@@ -3939,24 +3942,24 @@ INSERT INTO `dbms_restore_record` VALUES ('8dd6150e9ce94fedbbf7c2e663028762', '2
-- ----------------------------
DROP TABLE IF EXISTS `disk_monitor_job`;
CREATE TABLE `disk_monitor_job` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`job_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任务编号',
`job_source` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任务来源',
`planned_time` datetime NULL DEFAULT NULL COMMENT '计划执行时间',
`started_at` datetime NOT NULL COMMENT '开始时间',
`finished_at` datetime NULL DEFAULT NULL COMMENT '结束时间',
`job_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任务状态',
- `target_count` int(11) NOT NULL DEFAULT 0 COMMENT '计划扫描盘符数量',
- `success_count` int(11) NOT NULL DEFAULT 0 COMMENT '成功扫描数量',
- `warning_count` int(11) NOT NULL DEFAULT 0 COMMENT '预警数量',
- `alarm_count` int(11) NOT NULL DEFAULT 0 COMMENT '告警数量',
+ `target_count` int NOT NULL DEFAULT 0 COMMENT '计划扫描盘符数量',
+ `success_count` int NOT NULL DEFAULT 0 COMMENT '成功扫描数量',
+ `warning_count` int NOT NULL DEFAULT 0 COMMENT '预警数量',
+ `alarm_count` int NOT NULL DEFAULT 0 COMMENT '告警数量',
`message` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '结果说明',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
- UNIQUE INDEX `uk_job_no`(`job_no`) USING BTREE,
- INDEX `idx_job_source`(`job_source`) USING BTREE,
- INDEX `idx_started_at`(`started_at`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 253 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '磁盘监控任务批次表' ROW_FORMAT = Dynamic;
+ UNIQUE INDEX `uk_job_no`(`job_no` ASC) USING BTREE,
+ INDEX `idx_job_source`(`job_source` ASC) USING BTREE,
+ INDEX `idx_started_at`(`started_at` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 266 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '磁盘监控任务批次表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of disk_monitor_job
@@ -4213,16 +4216,29 @@ INSERT INTO `disk_monitor_job` VALUES (249, 'DM20260707075522787', 'APP_START',
INSERT INTO `disk_monitor_job` VALUES (250, 'DM20260707093000070', 'DAILY_SCHEDULE', '2026-07-07 09:30:00', '2026-07-07 09:30:00', '2026-07-07 09:30:00', 'PARTIAL_SUCCESS', 3, 2, 0, 0, NULL, '2026-07-07 09:30:00');
INSERT INTO `disk_monitor_job` VALUES (251, 'DM20260709100305559', 'APP_START', '2026-07-09 10:03:06', '2026-07-09 10:03:06', '2026-07-09 10:03:06', 'PARTIAL_SUCCESS', 3, 2, 0, 0, NULL, '2026-07-09 10:03:05');
INSERT INTO `disk_monitor_job` VALUES (252, 'DM20260710103441550', 'APP_START', '2026-07-10 10:34:42', '2026-07-10 10:34:42', '2026-07-10 10:34:42', 'PARTIAL_SUCCESS', 3, 2, 0, 0, NULL, '2026-07-10 10:34:41');
+INSERT INTO `disk_monitor_job` VALUES (253, 'DM20260710131926360', 'APP_START', '2026-07-10 13:19:26', '2026-07-10 13:19:26', '2026-07-10 13:19:26', 'SUCCESS', 3, 3, 0, 0, NULL, '2026-07-10 13:19:26');
+INSERT INTO `disk_monitor_job` VALUES (254, 'DM20260713085225076', 'APP_START', '2026-07-13 08:52:25', '2026-07-13 08:52:25', '2026-07-13 08:52:25', 'SUCCESS', 3, 3, 0, 0, NULL, '2026-07-13 08:52:25');
+INSERT INTO `disk_monitor_job` VALUES (255, 'DM20260713092959936', 'DAILY_SCHEDULE', '2026-07-13 09:30:00', '2026-07-13 09:30:00', '2026-07-13 09:30:00', 'SUCCESS', 3, 3, 0, 0, NULL, '2026-07-13 09:29:59');
+INSERT INTO `disk_monitor_job` VALUES (256, 'DM20260713093000018', 'DAILY_SCHEDULE', '2026-07-13 09:30:00', '2026-07-13 09:30:00', '2026-07-13 09:30:00', 'SUCCESS', 3, 3, 0, 0, NULL, '2026-07-13 09:30:00');
+INSERT INTO `disk_monitor_job` VALUES (257, 'DM20260713105610811', 'APP_START', '2026-07-13 10:56:11', '2026-07-13 10:56:11', '2026-07-13 10:56:11', 'SUCCESS', 3, 3, 0, 0, NULL, '2026-07-13 10:56:10');
+INSERT INTO `disk_monitor_job` VALUES (258, 'DM20260713112124060', 'APP_START', '2026-07-13 11:21:24', '2026-07-13 11:21:24', '2026-07-13 11:21:24', 'SUCCESS', 3, 3, 0, 0, NULL, '2026-07-13 11:21:24');
+INSERT INTO `disk_monitor_job` VALUES (259, 'DM20260713113017587', 'APP_START', '2026-07-13 11:30:18', '2026-07-13 11:30:18', '2026-07-13 11:30:18', 'SUCCESS', 3, 3, 0, 0, NULL, '2026-07-13 11:30:17');
+INSERT INTO `disk_monitor_job` VALUES (260, 'DM20260713133821141', 'APP_START', '2026-07-13 13:38:21', '2026-07-13 13:38:21', '2026-07-13 13:38:21', 'SUCCESS', 3, 3, 0, 0, NULL, '2026-07-13 13:38:21');
+INSERT INTO `disk_monitor_job` VALUES (261, 'DM20260713211705382', 'APP_START', '2026-07-13 21:17:05', '2026-07-13 21:17:05', '2026-07-13 21:17:05', 'SUCCESS', 3, 3, 0, 0, NULL, '2026-07-13 21:17:05');
+INSERT INTO `disk_monitor_job` VALUES (262, 'DM20260713215433151', 'APP_START', '2026-07-13 21:54:33', '2026-07-13 21:54:33', '2026-07-13 21:54:33', 'SUCCESS', 3, 3, 0, 0, NULL, '2026-07-13 21:54:33');
+INSERT INTO `disk_monitor_job` VALUES (263, 'DM20260714131704200', 'APP_START', '2026-07-14 13:17:04', '2026-07-14 13:17:04', '2026-07-14 13:17:04', 'SUCCESS', 3, 3, 0, 0, NULL, '2026-07-14 13:17:04');
+INSERT INTO `disk_monitor_job` VALUES (264, 'DM20260714141907258', 'APP_START', '2026-07-14 14:19:07', '2026-07-14 14:19:07', '2026-07-14 14:19:07', 'SUCCESS', 3, 3, 0, 0, NULL, '2026-07-14 14:19:07');
+INSERT INTO `disk_monitor_job` VALUES (265, 'DM20260714145841671', 'APP_START', '2026-07-14 14:58:42', '2026-07-14 14:58:42', '2026-07-14 14:58:42', 'SUCCESS', 3, 3, 0, 0, NULL, '2026-07-14 14:58:41');
-- ----------------------------
-- Table structure for disk_monitor_notify_log
-- ----------------------------
DROP TABLE IF EXISTS `disk_monitor_notify_log`;
CREATE TABLE `disk_monitor_notify_log` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
- `job_id` bigint(20) NOT NULL COMMENT '任务ID',
- `result_id` bigint(20) NOT NULL COMMENT '结果ID',
- `target_id` bigint(20) NOT NULL COMMENT '盘符配置ID',
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `job_id` bigint NOT NULL COMMENT '任务ID',
+ `result_id` bigint NOT NULL COMMENT '结果ID',
+ `target_id` bigint NOT NULL COMMENT '盘符配置ID',
`drive_letter` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '盘符',
`notify_level` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '通知级别',
`channel_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '通知通道类型',
@@ -4233,11 +4249,11 @@ CREATE TABLE `disk_monitor_notify_log` (
`response_message` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '响应结果或异常信息',
`sent_at` datetime NOT NULL COMMENT '发送时间',
PRIMARY KEY (`id`) USING BTREE,
- INDEX `idx_job_id`(`job_id`) USING BTREE,
- INDEX `idx_result_id`(`result_id`) USING BTREE,
- INDEX `idx_target_id`(`target_id`) USING BTREE,
- INDEX `idx_sent_at`(`sent_at`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '磁盘监控通知日志表' ROW_FORMAT = Dynamic;
+ INDEX `idx_job_id`(`job_id` ASC) USING BTREE,
+ INDEX `idx_result_id`(`result_id` ASC) USING BTREE,
+ INDEX `idx_target_id`(`target_id` ASC) USING BTREE,
+ INDEX `idx_sent_at`(`sent_at` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '磁盘监控通知日志表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of disk_monitor_notify_log
@@ -4248,39 +4264,39 @@ CREATE TABLE `disk_monitor_notify_log` (
-- ----------------------------
DROP TABLE IF EXISTS `disk_monitor_policy`;
CREATE TABLE `disk_monitor_policy` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`policy_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '默认磁盘监控策略' COMMENT '策略名称',
`monitor_enabled` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否启用监控:0否 1是',
`run_on_app_start` tinyint(1) NOT NULL DEFAULT 1 COMMENT '应用启动后是否执行一次:0否 1是',
`daily_run_time` time NOT NULL COMMENT '每日统一执行时间',
`warning_notify_mode` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'STATUS_CHANGE' COMMENT '预警通知模式',
`alarm_notify_mode` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'EVERY_TIME' COMMENT '告警通知模式',
- `last_job_id` bigint(20) NULL DEFAULT NULL COMMENT '最近一次任务ID',
+ `last_job_id` bigint NULL DEFAULT NULL COMMENT '最近一次任务ID',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
`created_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '磁盘监控全局策略表' ROW_FORMAT = Dynamic;
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '磁盘监控全局策略表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of disk_monitor_policy
-- ----------------------------
-INSERT INTO `disk_monitor_policy` VALUES (2, '默认磁盘监控策略', 1, 1, '09:30:00', 'STATUS_CHANGE', 'EVERY_TIME', 252, NULL, NULL, '2026-04-23 08:28:21', NULL, '2026-04-23 08:28:21');
+INSERT INTO `disk_monitor_policy` VALUES (2, '默认磁盘监控策略', 1, 1, '09:30:00', 'STATUS_CHANGE', 'EVERY_TIME', 265, NULL, NULL, '2026-04-23 08:28:21', NULL, '2026-04-23 08:28:21');
-- ----------------------------
-- Table structure for disk_monitor_result
-- ----------------------------
DROP TABLE IF EXISTS `disk_monitor_result`;
CREATE TABLE `disk_monitor_result` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
- `job_id` bigint(20) NOT NULL COMMENT '任务ID',
- `target_id` bigint(20) NOT NULL COMMENT '盘符配置ID',
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `job_id` bigint NOT NULL COMMENT '任务ID',
+ `target_id` bigint NOT NULL COMMENT '盘符配置ID',
`drive_letter` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '盘符',
- `total_bytes` bigint(20) UNSIGNED NOT NULL DEFAULT 0 COMMENT '总容量字节数',
- `used_bytes` bigint(20) UNSIGNED NOT NULL DEFAULT 0 COMMENT '已使用字节数',
- `free_bytes` bigint(20) UNSIGNED NOT NULL DEFAULT 0 COMMENT '剩余字节数',
+ `total_bytes` bigint UNSIGNED NOT NULL DEFAULT 0 COMMENT '总容量字节数',
+ `used_bytes` bigint UNSIGNED NOT NULL DEFAULT 0 COMMENT '已使用字节数',
+ `free_bytes` bigint UNSIGNED NOT NULL DEFAULT 0 COMMENT '剩余字节数',
`used_percent` decimal(5, 2) NOT NULL DEFAULT 0.00 COMMENT '使用率',
`current_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '当前状态',
`previous_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'UNKNOWN' COMMENT '上一次状态',
@@ -4290,11 +4306,11 @@ CREATE TABLE `disk_monitor_result` (
`scan_time` datetime NOT NULL COMMENT '扫描时间',
`message` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '扫描说明',
PRIMARY KEY (`id`) USING BTREE,
- INDEX `idx_job_id`(`job_id`) USING BTREE,
- INDEX `idx_target_id`(`target_id`) USING BTREE,
- INDEX `idx_drive_letter`(`drive_letter`) USING BTREE,
- INDEX `idx_scan_time`(`scan_time`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 753 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '磁盘监控结果表' ROW_FORMAT = Dynamic;
+ INDEX `idx_job_id`(`job_id` ASC) USING BTREE,
+ INDEX `idx_target_id`(`target_id` ASC) USING BTREE,
+ INDEX `idx_drive_letter`(`drive_letter` ASC) USING BTREE,
+ INDEX `idx_scan_time`(`scan_time` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 792 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '磁盘监控结果表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of disk_monitor_result
@@ -5051,18 +5067,57 @@ INSERT INTO `disk_monitor_result` VALUES (749, 251, 3, 'E:', 0, 0, 0, 0.00, 'UNK
INSERT INTO `disk_monitor_result` VALUES (750, 252, 1, 'C:', 321477378048, 154595917824, 166881460224, 48.09, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-10 10:34:42', NULL);
INSERT INTO `disk_monitor_result` VALUES (751, 252, 2, 'D:', 701453926400, 505567617024, 195886309376, 72.07, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-10 10:34:42', NULL);
INSERT INTO `disk_monitor_result` VALUES (752, 252, 3, 'E:', 0, 0, 0, 0.00, 'UNKNOWN', 'UNKNOWN', 0, 0, 'NO_NOTIFY', '2026-07-10 10:34:42', '盘符不存在或当前运行账户无访问权限');
+INSERT INTO `disk_monitor_result` VALUES (753, 253, 1, 'C:', 491368697856, 168461344768, 322907353088, 34.28, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-10 13:19:26', NULL);
+INSERT INTO `disk_monitor_result` VALUES (754, 253, 2, 'D:', 128847966208, 22991564800, 105856401408, 17.84, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-10 13:19:26', NULL);
+INSERT INTO `disk_monitor_result` VALUES (755, 253, 3, 'E:', 355408539648, 13012226048, 342396313600, 3.66, 'NORMAL', 'UNKNOWN', 1, 0, 'NO_NOTIFY', '2026-07-10 13:19:26', NULL);
+INSERT INTO `disk_monitor_result` VALUES (756, 254, 1, 'C:', 491368697856, 169113747456, 322254950400, 34.42, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 08:52:25', NULL);
+INSERT INTO `disk_monitor_result` VALUES (757, 254, 2, 'D:', 128847966208, 22991638528, 105856327680, 17.84, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 08:52:25', NULL);
+INSERT INTO `disk_monitor_result` VALUES (758, 254, 3, 'E:', 355408539648, 13012279296, 342396260352, 3.66, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 08:52:25', NULL);
+INSERT INTO `disk_monitor_result` VALUES (759, 255, 1, 'C:', 491368697856, 169554391040, 321814306816, 34.51, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 09:30:00', NULL);
+INSERT INTO `disk_monitor_result` VALUES (760, 255, 2, 'D:', 128847966208, 22991646720, 105856319488, 17.84, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 09:30:00', NULL);
+INSERT INTO `disk_monitor_result` VALUES (761, 255, 3, 'E:', 355408539648, 13012279296, 342396260352, 3.66, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 09:30:00', NULL);
+INSERT INTO `disk_monitor_result` VALUES (762, 256, 1, 'C:', 491368697856, 169554391040, 321814306816, 34.51, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 09:30:00', NULL);
+INSERT INTO `disk_monitor_result` VALUES (763, 256, 2, 'D:', 128847966208, 22991650816, 105856315392, 17.84, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 09:30:00', NULL);
+INSERT INTO `disk_monitor_result` VALUES (764, 256, 3, 'E:', 355408539648, 13012279296, 342396260352, 3.66, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 09:30:00', NULL);
+INSERT INTO `disk_monitor_result` VALUES (765, 257, 1, 'C:', 491368697856, 169911599104, 321457098752, 34.58, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 10:56:11', NULL);
+INSERT INTO `disk_monitor_result` VALUES (766, 257, 2, 'D:', 128847966208, 22991654912, 105856311296, 17.84, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 10:56:11', NULL);
+INSERT INTO `disk_monitor_result` VALUES (767, 257, 3, 'E:', 355408539648, 13012279296, 342396260352, 3.66, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 10:56:11', NULL);
+INSERT INTO `disk_monitor_result` VALUES (768, 258, 1, 'C:', 491368697856, 170084610048, 321284087808, 34.61, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 11:21:24', NULL);
+INSERT INTO `disk_monitor_result` VALUES (769, 258, 2, 'D:', 128847966208, 23268589568, 105579376640, 18.06, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 11:21:24', NULL);
+INSERT INTO `disk_monitor_result` VALUES (770, 258, 3, 'E:', 355408539648, 13012279296, 342396260352, 3.66, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 11:21:24', NULL);
+INSERT INTO `disk_monitor_result` VALUES (771, 259, 1, 'C:', 491368697856, 170332180480, 321036517376, 34.66, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 11:30:18', NULL);
+INSERT INTO `disk_monitor_result` VALUES (772, 259, 2, 'D:', 128847966208, 23268593664, 105579372544, 18.06, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 11:30:18', NULL);
+INSERT INTO `disk_monitor_result` VALUES (773, 259, 3, 'E:', 355408539648, 13012279296, 342396260352, 3.66, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 11:30:18', NULL);
+INSERT INTO `disk_monitor_result` VALUES (774, 260, 1, 'C:', 491368697856, 170208120832, 321160577024, 34.64, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 13:38:21', NULL);
+INSERT INTO `disk_monitor_result` VALUES (775, 260, 2, 'D:', 128847966208, 23303184384, 105544781824, 18.09, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 13:38:21', NULL);
+INSERT INTO `disk_monitor_result` VALUES (776, 260, 3, 'E:', 355408539648, 13012279296, 342396260352, 3.66, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 13:38:21', NULL);
+INSERT INTO `disk_monitor_result` VALUES (777, 261, 1, 'C:', 491368697856, 169577197568, 321791500288, 34.51, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 21:17:05', NULL);
+INSERT INTO `disk_monitor_result` VALUES (778, 261, 2, 'D:', 128847966208, 23306022912, 105541943296, 18.09, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 21:17:05', NULL);
+INSERT INTO `disk_monitor_result` VALUES (779, 261, 3, 'E:', 355408539648, 13125296128, 342283243520, 3.69, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 21:17:05', NULL);
+INSERT INTO `disk_monitor_result` VALUES (780, 262, 1, 'C:', 491368697856, 169615233024, 321753464832, 34.52, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 21:54:33', NULL);
+INSERT INTO `disk_monitor_result` VALUES (781, 262, 2, 'D:', 128847966208, 23306035200, 105541931008, 18.09, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 21:54:33', NULL);
+INSERT INTO `disk_monitor_result` VALUES (782, 262, 3, 'E:', 355408539648, 13125296128, 342283243520, 3.69, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-13 21:54:33', NULL);
+INSERT INTO `disk_monitor_result` VALUES (783, 263, 1, 'C:', 491368697856, 167744548864, 323624148992, 34.14, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-14 13:17:04', NULL);
+INSERT INTO `disk_monitor_result` VALUES (784, 263, 2, 'D:', 128847966208, 23306625024, 105541341184, 18.09, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-14 13:17:04', NULL);
+INSERT INTO `disk_monitor_result` VALUES (785, 263, 3, 'E:', 355408539648, 13125308416, 342283231232, 3.69, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-14 13:17:04', NULL);
+INSERT INTO `disk_monitor_result` VALUES (786, 264, 1, 'C:', 491368697856, 168802349056, 322566348800, 34.35, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-14 14:19:07', NULL);
+INSERT INTO `disk_monitor_result` VALUES (787, 264, 2, 'D:', 128847966208, 23341252608, 105506713600, 18.12, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-14 14:19:07', NULL);
+INSERT INTO `disk_monitor_result` VALUES (788, 264, 3, 'E:', 355408539648, 13125308416, 342283231232, 3.69, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-14 14:19:07', NULL);
+INSERT INTO `disk_monitor_result` VALUES (789, 265, 1, 'C:', 491368697856, 170015248384, 321353449472, 34.60, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-14 14:58:42', NULL);
+INSERT INTO `disk_monitor_result` VALUES (790, 265, 2, 'D:', 128847966208, 23368646656, 105479319552, 18.14, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-14 14:58:42', NULL);
+INSERT INTO `disk_monitor_result` VALUES (791, 265, 3, 'E:', 355408539648, 13125308416, 342283231232, 3.69, 'NORMAL', 'NORMAL', 0, 0, 'NO_NOTIFY', '2026-07-14 14:58:42', NULL);
-- ----------------------------
-- Table structure for disk_monitor_target
-- ----------------------------
DROP TABLE IF EXISTS `disk_monitor_target`;
CREATE TABLE `disk_monitor_target` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
- `policy_id` bigint(20) NOT NULL COMMENT '策略ID',
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `policy_id` bigint NOT NULL COMMENT '策略ID',
`drive_letter` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '盘符,例如 C:',
`monitor_enabled` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否启用监控:0否 1是',
- `warning_usage_percent` tinyint(3) UNSIGNED NOT NULL COMMENT '预警使用率阈值',
- `alarm_usage_percent` tinyint(3) UNSIGNED NOT NULL COMMENT '告警使用率阈值',
+ `warning_usage_percent` tinyint UNSIGNED NOT NULL COMMENT '预警使用率阈值',
+ `alarm_usage_percent` tinyint UNSIGNED NOT NULL COMMENT '告警使用率阈值',
`notify_path_enabled` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否启用路径通知:0否 1是',
`notify_path_list_json` json NULL COMMENT '路径通知目标列表JSON',
`notify_http_enabled` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否启用HTTP通知:0否 1是',
@@ -5076,16 +5131,16 @@ CREATE TABLE `disk_monitor_target` (
`updated_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
- UNIQUE INDEX `uk_drive_letter`(`drive_letter`) USING BTREE,
- INDEX `idx_policy_id`(`policy_id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '磁盘监控盘符配置表' ROW_FORMAT = Dynamic;
+ UNIQUE INDEX `uk_drive_letter`(`drive_letter` ASC) USING BTREE,
+ INDEX `idx_policy_id`(`policy_id` ASC) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '磁盘监控盘符配置表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of disk_monitor_target
-- ----------------------------
-INSERT INTO `disk_monitor_target` VALUES (1, 2, 'C:', 1, 80, 90, 0, '[]', 0, '[]', 'NORMAL', '2026-07-10 10:34:42', 48.09, '', NULL, '2026-04-24 14:29:22', NULL, '2026-04-24 14:29:22');
-INSERT INTO `disk_monitor_target` VALUES (2, 2, 'D:', 1, 80, 90, 0, '[]', 0, '[]', 'NORMAL', '2026-07-10 10:34:42', 72.07, '', NULL, '2026-04-24 14:30:23', NULL, '2026-04-24 14:30:23');
-INSERT INTO `disk_monitor_target` VALUES (3, 2, 'E:', 1, 80, 90, 0, '[]', 0, '[]', 'UNKNOWN', '2026-07-10 10:34:42', 0.00, '', NULL, '2026-04-24 21:15:03', NULL, '2026-04-24 21:15:03');
+INSERT INTO `disk_monitor_target` VALUES (1, 2, 'C:', 1, 80, 90, 0, '[]', 0, '[]', 'NORMAL', '2026-07-14 14:58:42', 34.60, '', NULL, '2026-04-24 14:29:22', NULL, '2026-04-24 14:29:22');
+INSERT INTO `disk_monitor_target` VALUES (2, 2, 'D:', 1, 80, 90, 0, '[]', 0, '[]', 'NORMAL', '2026-07-14 14:58:42', 18.14, '', NULL, '2026-04-24 14:30:23', NULL, '2026-04-24 14:30:23');
+INSERT INTO `disk_monitor_target` VALUES (3, 2, 'E:', 1, 80, 90, 0, '[]', 0, '[]', 'NORMAL', '2026-07-14 14:58:42', 3.69, '', NULL, '2026-04-24 21:15:03', NULL, '2026-04-24 21:15:03');
-- ----------------------------
-- Table structure for r_mp_event_detail
@@ -5103,7 +5158,7 @@ CREATE TABLE `r_mp_event_detail` (
`eventass_index` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '事件关联分析表Guid',
`dq_time` double(10, 2) NULL DEFAULT NULL,
`deal_time` datetime NULL DEFAULT NULL COMMENT '特征值计算更新时间(外键PQS_Relevance的Time字段)',
- `num` int(11) NULL DEFAULT NULL COMMENT '默认事件个数为0',
+ `num` int NULL DEFAULT NULL COMMENT '默认事件个数为0',
`file_flag` tinyint(1) NULL DEFAULT NULL COMMENT '波形文件是否从装置招到本地(0:未招,1:已招)默认值为0',
`deal_flag` tinyint(1) NULL DEFAULT NULL COMMENT '特征值计算标志(0,未处理;1,已处理; 2,已处理,无结果;3,计算失败)默认值为0',
`first_time` datetime NULL DEFAULT NULL COMMENT '处理结果第一条事件发生时间(读comtra文件获取)',
@@ -5143,15 +5198,15 @@ CREATE TABLE `steady_checksquare_detail` (
`end_time` datetime NULL DEFAULT NULL COMMENT '区间结束时间',
`point_time` datetime NULL DEFAULT NULL COMMENT '异常点时间',
`segment_status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '区间状态:NORMAL/MISSING',
- `missing_point_count` int(11) NULL DEFAULT NULL COMMENT '缺失点数',
- `duration_minutes` int(11) NULL DEFAULT NULL COMMENT '持续时长,单位分钟',
+ `missing_point_count` int NULL DEFAULT NULL COMMENT '缺失点数',
+ `duration_minutes` int NULL DEFAULT NULL COMMENT '持续时长,单位分钟',
`phase` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '相别',
- `harmonic_order` int(11) NULL DEFAULT NULL COMMENT '谐波次数',
+ `harmonic_order` int NULL DEFAULT NULL COMMENT '谐波次数',
`max_value` decimal(24, 8) NULL DEFAULT NULL COMMENT '最大值',
`min_value` decimal(24, 8) NULL DEFAULT NULL COMMENT '最小值',
`avg_value` decimal(24, 8) NULL DEFAULT NULL COMMENT '平均值',
`cp95_value` decimal(24, 8) NULL DEFAULT NULL COMMENT 'CP95值',
- `even_harmonic_order` int(11) NULL DEFAULT NULL COMMENT '偶次谐波次数',
+ `even_harmonic_order` int NULL DEFAULT NULL COMMENT '偶次谐波次数',
`even_value` decimal(24, 8) NULL DEFAULT NULL COMMENT '偶次谐波值',
`odd_harmonic_orders_json` json NULL COMMENT '参与比较的奇次谐波次数',
`odd_values_json` json NULL COMMENT '参与比较的奇次谐波值',
@@ -5159,10 +5214,10 @@ CREATE TABLE `steady_checksquare_detail` (
`threshold_multiplier` decimal(12, 6) NULL DEFAULT NULL COMMENT '异常阈值倍数',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
- INDEX `idx_steady_checksquare_detail_item_type`(`item_id`, `detail_type`) USING BTREE,
- INDEX `idx_steady_checksquare_detail_point_time`(`point_time`) USING BTREE,
- INDEX `idx_steady_checksquare_detail_segment`(`start_time`, `end_time`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '稳态数据校验明细表' ROW_FORMAT = Dynamic;
+ INDEX `idx_steady_checksquare_detail_item_type`(`item_id` ASC, `detail_type` ASC) USING BTREE,
+ INDEX `idx_steady_checksquare_detail_point_time`(`point_time` ASC) USING BTREE,
+ INDEX `idx_steady_checksquare_detail_segment`(`start_time` ASC, `end_time` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '稳态数据校验明细表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of steady_checksquare_detail
@@ -5180,27 +5235,27 @@ CREATE TABLE `steady_checksquare_item` (
`line_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '监测点名称',
`indicator_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '指标编码',
`indicator_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '指标名称',
- `harmonic_order` int(11) NULL DEFAULT NULL COMMENT '谐波次数;聚合项为空',
- `interval_minutes` int(11) NULL DEFAULT NULL COMMENT '当前检测项统计间隔,单位分钟',
- `has_data` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否存在任意数据:0-否,1-是',
- `expected_point_count` int(11) NOT NULL DEFAULT 0 COMMENT '期望点数',
- `actual_point_count` int(11) NOT NULL DEFAULT 0 COMMENT '实际点数',
- `missing_point_count` int(11) NOT NULL DEFAULT 0 COMMENT '缺失点数',
+ `harmonic_order` int NULL DEFAULT NULL COMMENT '谐波次数;聚合项为空',
+ `interval_minutes` int NULL DEFAULT NULL COMMENT '当前检测项统计间隔,单位分钟',
+ `has_data` tinyint NOT NULL DEFAULT 0 COMMENT '是否存在任意数据:0-否,1-是',
+ `expected_point_count` int NOT NULL DEFAULT 0 COMMENT '期望点数',
+ `actual_point_count` int NOT NULL DEFAULT 0 COMMENT '实际点数',
+ `missing_point_count` int NOT NULL DEFAULT 0 COMMENT '缺失点数',
`data_integrity` decimal(12, 6) NOT NULL DEFAULT 0.000000 COMMENT '数据完整性',
`data_integrity_text` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '数据完整性文本',
- `abnormal` tinyint(4) NOT NULL DEFAULT 0 COMMENT '指标值大小关系是否异常',
- `abnormal_point_count` int(11) NOT NULL DEFAULT 0 COMMENT '大小关系异常点数',
- `harmonic_parity_abnormal` tinyint(4) NOT NULL DEFAULT 0 COMMENT '谐波奇偶关系是否异常',
- `harmonic_parity_abnormal_point_count` int(11) NOT NULL DEFAULT 0 COMMENT '谐波奇偶关系异常点数',
- `state` tinyint(4) NOT NULL DEFAULT 1 COMMENT '状态:0-删除,1-正常',
+ `abnormal` tinyint NOT NULL DEFAULT 0 COMMENT '指标值大小关系是否异常',
+ `abnormal_point_count` int NOT NULL DEFAULT 0 COMMENT '大小关系异常点数',
+ `harmonic_parity_abnormal` tinyint NOT NULL DEFAULT 0 COMMENT '谐波奇偶关系是否异常',
+ `harmonic_parity_abnormal_point_count` int NOT NULL DEFAULT 0 COMMENT '谐波奇偶关系异常点数',
+ `state` tinyint NOT NULL DEFAULT 1 COMMENT '状态:0-删除,1-正常',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
- UNIQUE INDEX `uk_steady_checksquare_item`(`task_id`, `item_key`) USING BTREE,
- INDEX `idx_steady_checksquare_item_indicator`(`indicator_code`) USING BTREE,
- INDEX `idx_steady_checksquare_item_abnormal`(`abnormal`, `harmonic_parity_abnormal`) USING BTREE,
- INDEX `idx_steady_checksquare_item_data_integrity`(`data_integrity`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '稳态数据校验检测项表' ROW_FORMAT = Dynamic;
+ UNIQUE INDEX `uk_steady_checksquare_item`(`task_id` ASC, `item_key` ASC) USING BTREE,
+ INDEX `idx_steady_checksquare_item_indicator`(`indicator_code` ASC) USING BTREE,
+ INDEX `idx_steady_checksquare_item_abnormal`(`abnormal` ASC, `harmonic_parity_abnormal` ASC) USING BTREE,
+ INDEX `idx_steady_checksquare_item_data_integrity`(`data_integrity` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '稳态数据校验检测项表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of steady_checksquare_item
@@ -5266,18 +5321,18 @@ CREATE TABLE `steady_checksquare_stat_summary` (
`id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`item_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '检测项ID',
`stat_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '统计类型:AVG/MAX/MIN/CP95',
- `supported` tinyint(4) NOT NULL DEFAULT 1 COMMENT '是否支持',
- `has_data` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否存在数据',
- `expected_point_count` int(11) NOT NULL DEFAULT 0 COMMENT '期望点数',
- `actual_point_count` int(11) NOT NULL DEFAULT 0 COMMENT '实际点数',
- `missing_point_count` int(11) NOT NULL DEFAULT 0 COMMENT '缺失点数',
+ `supported` tinyint NOT NULL DEFAULT 1 COMMENT '是否支持',
+ `has_data` tinyint NOT NULL DEFAULT 0 COMMENT '是否存在数据',
+ `expected_point_count` int NOT NULL DEFAULT 0 COMMENT '期望点数',
+ `actual_point_count` int NOT NULL DEFAULT 0 COMMENT '实际点数',
+ `missing_point_count` int NOT NULL DEFAULT 0 COMMENT '缺失点数',
`data_integrity` decimal(12, 6) NOT NULL DEFAULT 0.000000 COMMENT '数据完整性',
`data_integrity_text` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '数据完整性文本',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
- UNIQUE INDEX `uk_steady_checksquare_stat`(`item_id`, `stat_type`) USING BTREE,
- INDEX `idx_steady_checksquare_stat_type`(`stat_type`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '稳态数据校验统计摘要表' ROW_FORMAT = Dynamic;
+ UNIQUE INDEX `uk_steady_checksquare_stat`(`item_id` ASC, `stat_type` ASC) USING BTREE,
+ INDEX `idx_steady_checksquare_stat_type`(`stat_type` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '稳态数据校验统计摘要表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of steady_checksquare_stat_summary
@@ -5477,27 +5532,27 @@ CREATE TABLE `steady_checksquare_task` (
`line_ids_text` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '璇锋眰鐩戞祴鐐笽D妫?储鏂囨湰锛屾牸寮?|line1|line2|',
`time_start` datetime NOT NULL COMMENT '检测开始时间',
`time_end` datetime NOT NULL COMMENT '检测结束时间',
- `interval_minutes` int(11) NULL DEFAULT NULL COMMENT '默认统计间隔,单位分钟',
+ `interval_minutes` int NULL DEFAULT NULL COMMENT '默认统计间隔,单位分钟',
`indicator_codes_json` json NULL COMMENT '请求指标编码列表',
`indicator_codes_text` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求指标编码检索文本,格式 |code1|code2|',
`task_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'SUCCESS' COMMENT '任务状态:SUCCESS/FAIL',
- `item_count` int(11) NOT NULL DEFAULT 0 COMMENT '检测项数量',
- `abnormal_item_count` int(11) NOT NULL DEFAULT 0 COMMENT '异常检测项数量',
+ `item_count` int NOT NULL DEFAULT 0 COMMENT '检测项数量',
+ `abnormal_item_count` int NOT NULL DEFAULT 0 COMMENT '异常检测项数量',
`min_data_integrity` decimal(12, 6) NOT NULL DEFAULT 0.000000 COMMENT '最低数据完整性',
`result_message` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '执行结果说明',
- `state` tinyint(4) NOT NULL DEFAULT 1 COMMENT '状态:0-删除,1-正常',
+ `state` tinyint NOT NULL DEFAULT 1 COMMENT '状态:0-删除,1-正常',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
- UNIQUE INDEX `uk_steady_checksquare_task_no`(`task_no`) USING BTREE,
- INDEX `idx_steady_checksquare_task_line_time`(`line_id`, `time_start`, `time_end`) USING BTREE,
- INDEX `idx_steady_checksquare_task_status`(`task_status`) USING BTREE,
- INDEX `idx_steady_checksquare_task_indicator_text`(`indicator_codes_text`(255)) USING BTREE,
- INDEX `idx_steady_checksquare_task_create_time`(`create_time`) USING BTREE,
- INDEX `idx_steady_checksquare_task_line_ids_text`(`line_ids_text`(255)) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '稳态数据校验任务表' ROW_FORMAT = Dynamic;
+ UNIQUE INDEX `uk_steady_checksquare_task_no`(`task_no` ASC) USING BTREE,
+ INDEX `idx_steady_checksquare_task_line_time`(`line_id` ASC, `time_start` ASC, `time_end` ASC) USING BTREE,
+ INDEX `idx_steady_checksquare_task_status`(`task_status` ASC) USING BTREE,
+ INDEX `idx_steady_checksquare_task_indicator_text`(`indicator_codes_text`(255) ASC) USING BTREE,
+ INDEX `idx_steady_checksquare_task_create_time`(`create_time` ASC) USING BTREE,
+ INDEX `idx_steady_checksquare_task_line_ids_text`(`line_ids_text`(255) ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '稳态数据校验任务表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of steady_checksquare_task
@@ -5539,9 +5594,9 @@ CREATE TABLE `sys_dict_data` (
`Type_Id` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '字典类型表Id',
`Name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '名称',
`Code` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '编码',
- `Sort` smallint(6) NOT NULL COMMENT '排序',
+ `Sort` smallint NOT NULL COMMENT '排序',
`Level` tinyint(1) NULL DEFAULT 0 COMMENT '事件等级:0-普通;1-中等;2-严重(默认为0)',
- `Algo_Describe` smallint(6) NULL DEFAULT NULL COMMENT '与高级算法内部Id描述对应;',
+ `Algo_Describe` smallint NULL DEFAULT NULL COMMENT '与高级算法内部Id描述对应;',
`open_Value` tinyint(1) NULL DEFAULT NULL COMMENT '是否开启使用Value字段:0-关闭、1-开启',
`Value` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '字典针对电压等级',
`State` tinyint(1) NOT NULL COMMENT '状态:0-删除 1-正常',
@@ -5809,22 +5864,22 @@ INSERT INTO `sys_dict_data` VALUES ('fbdf308ff5cf3e96ac8db2df7582d0d6', 'd12d7f2
-- ----------------------------
DROP TABLE IF EXISTS `sys_dict_tree`;
CREATE TABLE `sys_dict_tree` (
- `Id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
- `Pid` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
- `Pids` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
- `Name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
- `Code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
- `Sort` int(11) NULL DEFAULT NULL,
- `Remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
- `Extend` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '对应type,不同类型可自定义配置',
- `Type` tinyint(4) NULL DEFAULT NULL COMMENT '用于区分多种类型的字典树 0.台账对象类型 1.自定义报表指标类型',
- `State` tinyint(4) NULL DEFAULT NULL COMMENT '状态(字典 0正常 1停用 2删除)',
+ `Id` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `Pid` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
+ `Pids` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `Name` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
+ `Code` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
+ `Sort` int NULL DEFAULT NULL,
+ `Remark` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
+ `Extend` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '对应type,不同类型可自定义配置',
+ `Type` tinyint NULL DEFAULT NULL COMMENT '用于区分多种类型的字典树 0.台账对象类型 1.自定义报表指标类型',
+ `State` tinyint NULL DEFAULT NULL COMMENT '状态(字典 0正常 1停用 2删除)',
`Create_Time` datetime NULL DEFAULT NULL,
- `Create_By` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `Create_By` varchar(36) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
`Update_Time` datetime NULL DEFAULT NULL,
- `Update_By` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `Update_By` varchar(36) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`Id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of sys_dict_tree
@@ -5961,7 +6016,7 @@ CREATE TABLE `sys_dict_type` (
`Id` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '字典类型表Id',
`Name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '名称',
`Code` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '编码',
- `Sort` smallint(6) NOT NULL DEFAULT 100 COMMENT '排序',
+ `Sort` smallint NOT NULL DEFAULT 100 COMMENT '排序',
`Open_Level` tinyint(1) NOT NULL DEFAULT 0 COMMENT '开启等级:0-不开启;1-开启,默认不开启',
`Open_Describe` tinyint(1) NOT NULL DEFAULT 0 COMMENT '开启描述:0-不开启;1-开启,默认不开启',
`Remark` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '描述',
@@ -6017,6 +6072,39 @@ INSERT INTO `sys_dict_type` VALUES ('e53e3e23e31afb7afabd92254ab2bcf4', '单位'
INSERT INTO `sys_dict_type` VALUES ('ea004426ccdd218f814e3e2f5cfe35b2', '检测源-设备类型-比对式', 'S_Dev_Type_Contrast', 17, 0, 0, '', 1, 'f8516cc81d964cd8b4b771a3b3985cd4', '2024-11-29 18:23:43', 'f8516cc81d964cd8b4b771a3b3985cd4', '2024-12-06 15:29:18');
INSERT INTO `sys_dict_type` VALUES ('eff091236faaedcfed137eff325eb57b', '模式', 'Pattern', 3, 0, 0, '包含有数字式、模拟式、比对式', 1, 'f8516cc81d964cd8b4b771a3b3985cd4', '2024-11-15 20:19:59', 'f8516cc81d964cd8b4b771a3b3985cd4', '2024-11-15 20:19:59');
+-- ----------------------------
+-- Table structure for sys_file
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_file`;
+CREATE TABLE `sys_file` (
+ `id` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '文件ID',
+ `biz_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '业务类型',
+ `file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '原始文件名',
+ `bucket_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 'MinIO桶名称',
+ `object_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 'MinIO对象名称',
+ `content_type` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '文件类型',
+ `file_size` bigint NULL DEFAULT NULL COMMENT '文件大小(字节)',
+ `storage_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '存储类型',
+ `status` tinyint(1) NOT NULL COMMENT '状态(0:删除 1:正常)',
+ `create_by` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建用户',
+ `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+ `update_by` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新用户',
+ `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `uk_sys_file_bucket_object`(`bucket_name` ASC, `object_name` ASC) USING BTREE,
+ INDEX `idx_sys_file_biz_type`(`biz_type` ASC) USING BTREE,
+ INDEX `idx_sys_file_status`(`status` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '通用文件表' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of sys_file
+-- ----------------------------
+INSERT INTO `sys_file` VALUES ('1160eb4c949c46b990ea4b78abed7771', 'USER_SIGNATURE', '叶细宝-signature.png', 'cn-tool-user-signature', 'user-signature/ce2bd33b7f7e45c7739f4b017a7abb29/1160eb4c949c46b990ea4b78abed7771.png', 'image/png', 18132, 'MINIO', 0, '7015afa698c5e7714813d0b1355c0f3a', '2026-07-13 21:55:18', '7015afa698c5e7714813d0b1355c0f3a', '2026-07-13 21:55:18');
+INSERT INTO `sys_file` VALUES ('1bff0a05e9624eb7bff92d257834f43b', 'USER_SIGNATURE', '叶细宝-signature.png', 'cn-tool-user-signature', 'user-signature/ce2bd33b7f7e45c7739f4b017a7abb29/1bff0a05e9624eb7bff92d257834f43b.png', 'image/png', 18132, 'MINIO', 0, '7015afa698c5e7714813d0b1355c0f3a', '2026-07-14 14:22:16', '7015afa698c5e7714813d0b1355c0f3a', '2026-07-14 14:22:16');
+INSERT INTO `sys_file` VALUES ('21974a976fb048e8b701dafe1c65cee5', 'USER_SIGNATURE', '戴坤-signature.png', 'cn-tool-user-signature', 'user-signature/2db43d757d374793860ff624dd673afb/21974a976fb048e8b701dafe1c65cee5.png', 'image/png', 6671, 'MINIO', 0, '7015afa698c5e7714813d0b1355c0f3a', '2026-07-13 21:57:17', '7015afa698c5e7714813d0b1355c0f3a', '2026-07-13 21:57:17');
+INSERT INTO `sys_file` VALUES ('c2e10c118e4343cfba2526fe0b27edd5', 'USER_SIGNATURE', '叶细宝-signature.png', 'cn-tool-user-signature', 'user-signature/ce2bd33b7f7e45c7739f4b017a7abb29/c2e10c118e4343cfba2526fe0b27edd5.png', 'image/png', 6114, 'MINIO', 1, '7015afa698c5e7714813d0b1355c0f3a', '2026-07-14 14:22:54', '7015afa698c5e7714813d0b1355c0f3a', '2026-07-14 14:22:54');
+INSERT INTO `sys_file` VALUES ('c92e61308eef4d41913866e7236c06b2', 'USER_SIGNATURE', '洪圣文-signature.png', 'cn-tool-user-signature', 'user-signature/ce2bd33b7f7e45c7739f4b017a7abb29/c92e61308eef4d41913866e7236c06b2.png', 'image/png', 5141, 'MINIO', 0, '7015afa698c5e7714813d0b1355c0f3a', '2026-07-14 14:22:06', '7015afa698c5e7714813d0b1355c0f3a', '2026-07-14 14:22:06');
+
-- ----------------------------
-- Table structure for sys_function
-- ----------------------------
@@ -6030,7 +6118,7 @@ CREATE TABLE `sys_function` (
`Path` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '路径',
`Component` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '组件地址',
`Icon` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT 'Null' COMMENT '图标(没有图标默认为:“Null”)',
- `Sort` smallint(6) NOT NULL COMMENT '排序',
+ `Sort` smallint NOT NULL COMMENT '排序',
`Type` tinyint(1) NOT NULL COMMENT '资源类型:0-菜单、1-按钮、2-公共资源、3-服务间调用资源',
`Remark` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '权限资源描述',
`State` tinyint(1) NOT NULL COMMENT '权限资源状态:0-删除 1-正常',
@@ -6133,6 +6221,668 @@ CREATE TABLE `sys_log_audit` (
-- ----------------------------
-- Records of sys_log_audit
-- ----------------------------
+INSERT INTO `sys_log_audit` VALUES ('000b08bebcc9be9bfdd5730d5792cc6e', 'admin', '管理员', '127.0.0.1', '获取所有字典数据缓存到前端', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:55:09');
+INSERT INTO `sys_log_audit` VALUES ('01456780a0e47be673148249bab7284a', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 08:57:07');
+INSERT INTO `sys_log_audit` VALUES ('01e9f83d130bef1434862e7cba4f0ec0', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:34:04');
+INSERT INTO `sys_log_audit` VALUES ('01fe5c0aab1012cfe66cdabc5ce210cd', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '', '失败', '请求中参数的媒体方式不支持', 1, 0, 0, '2026-07-13 10:06:22');
+INSERT INTO `sys_log_audit` VALUES ('03258947a9079d3147f38d042a019e0c', 'yexb', 'yexb', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:54:46');
+INSERT INTO `sys_log_audit` VALUES ('036d24b3644aec097491cd689ee71294', 'yexb', '测试账号', '127.0.0.1', '新增普测报告', '新增', '失败', '失败: 受资数据格式不正确', 0, 0, 0, '2026-07-14 15:01:09');
+INSERT INTO `sys_log_audit` VALUES ('03714d186a238b643d3b00304924d822', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:54:48');
+INSERT INTO `sys_log_audit` VALUES ('03f8ffc37167015808693e9d3877d108', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '成功', NULL, 0, 0, 0, '2026-07-13 11:31:19');
+INSERT INTO `sys_log_audit` VALUES ('0438345a03e679e999c66968dcefb9b5', 'yexb', '测试账号', '127.0.0.1', '新增普测报告', '新增', '失败', '失败: 基础信息维护阶段:检测设备sheet第2行设备状态不正确', 0, 0, 0, '2026-07-14 15:36:03');
+INSERT INTO `sys_log_audit` VALUES ('044c5b207e7ae10b527eab528c453828', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 10:58:05');
+INSERT INTO `sys_log_audit` VALUES ('04a530f75094820fa45334604285758f', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 13:20:01');
+INSERT INTO `sys_log_audit` VALUES ('04c7d8bf95d23221e3ebff4e312c7696', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 11:31:06');
+INSERT INTO `sys_log_audit` VALUES ('04f6e7b47d66bfc84884d3de57af1d8d', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:33:09');
+INSERT INTO `sys_log_audit` VALUES ('05555f4047c44a218468fb298417fb48', 'yexb', '测试账号', '127.0.0.1', '新增普测报告', '新增', '失败', '失败: 基础信息维护阶段:检测设备sheet第2行设备状态不正确', 0, 0, 0, '2026-07-14 15:35:19');
+INSERT INTO `sys_log_audit` VALUES ('0563fc4df937c18061688afe57f7174e', 'admin', '管理员', '127.0.0.1', '查询所有角色作为下拉框', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 08:56:45');
+INSERT INTO `sys_log_audit` VALUES ('059a148527b0a4ecc5c6cb77eb1faa65', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:22:08');
+INSERT INTO `sys_log_audit` VALUES ('05abb3eba913f3b5d80f547ce458cbe2', 'admin', '管理员', '127.0.0.1', '分页查询角色', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:27:19');
+INSERT INTO `sys_log_audit` VALUES ('065567e9f4d44515fe537e146a44741e', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:03:23');
+INSERT INTO `sys_log_audit` VALUES ('0656f5d2dced01c8bcc4c30a1e53ccee', 'admin', '管理员', '127.0.0.1', '分页查询用户列表', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:55:18');
+INSERT INTO `sys_log_audit` VALUES ('07722dbbffa9e018548cd6932973bf20', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 13:20:01');
+INSERT INTO `sys_log_audit` VALUES ('0aaeccdb6b3f7e1b39626d2965e78cb0', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:58:38');
+INSERT INTO `sys_log_audit` VALUES ('0aba12789379ed680ba06edc4e7527b7', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:06:54');
+INSERT INTO `sys_log_audit` VALUES ('0ae9095b318b48a495f86db48dbceab5', 'yexb', 'yexb', '127.0.0.1', '登录', '认证', '成功', NULL, 1, 0, 0, '2026-07-14 15:21:16');
+INSERT INTO `sys_log_audit` VALUES ('0b83a4b6ac21157778eba09110b17e5d', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 11:21:06');
+INSERT INTO `sys_log_audit` VALUES ('0bb5ed16a27f5ada50c72c776f8a8c5c', 'yexb', 'yexb', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 13:18:08');
+INSERT INTO `sys_log_audit` VALUES ('0c3a9d724c61a94b71a876d78d6c90a2', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 10:41:13');
+INSERT INTO `sys_log_audit` VALUES ('0c4aa351fc969c25f6787c191f927975', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 10:58:06');
+INSERT INTO `sys_log_audit` VALUES ('0ca66dc3854caa6fac9c2a1d12056eb5', 'root', 'root', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:23:16');
+INSERT INTO `sys_log_audit` VALUES ('0cc25e7c4386ab9b2dd99854b88c8956', 'yexb', '测试账号', '127.0.0.1', '获取所有字典数据缓存到前端', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:54:48');
+INSERT INTO `sys_log_audit` VALUES ('0cf526543d4fae71746ff775b8dc387d', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 14:24:18');
+INSERT INTO `sys_log_audit` VALUES ('0e13288f83d2b5499c40c0962d06b946', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:26');
+INSERT INTO `sys_log_audit` VALUES ('0e99690a7136e7dfb97c80a8993eeca0', 'admin', '管理员', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 08:56:08');
+INSERT INTO `sys_log_audit` VALUES ('0ea13be90a1c08960c3bbf4250406a35', 'admin', '管理员', '127.0.0.1', 'unknown operate', '', '失败', '后台接口异常', 1, 0, 0, '2026-07-13 21:43:11');
+INSERT INTO `sys_log_audit` VALUES ('10aacc566a17b5a403eb899b0c03202b', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:39:29');
+INSERT INTO `sys_log_audit` VALUES ('10bc04df76c9f266584e7034994a11a1', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:30:01');
+INSERT INTO `sys_log_audit` VALUES ('113a0f77af0604b6f5ad1badaa9abb3a', 'admin', 'admin', '127.0.0.1', '登录', '认证', '成功', NULL, 1, 0, 0, '2026-07-14 14:20:01');
+INSERT INTO `sys_log_audit` VALUES ('1152798cf0ea799315eb2074809fa485', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:24:31');
+INSERT INTO `sys_log_audit` VALUES ('12b3e674d2499369ccdfc3015d17d609', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '', '失败', '请求中参数的媒体方式不支持', 1, 0, 0, '2026-07-13 09:02:39');
+INSERT INTO `sys_log_audit` VALUES ('1328fde0d88bfe18e47f26892cbc2a36', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 11:16:28');
+INSERT INTO `sys_log_audit` VALUES ('13bb65d3b7cb2231f7c3e35997a670eb', 'yexb', '测试账号', '127.0.0.1', '查询磁盘监控配置详情', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 10:04:37');
+INSERT INTO `sys_log_audit` VALUES ('13cb0f6a98deff40f405298017e1eaf9', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 15:00:25');
+INSERT INTO `sys_log_audit` VALUES ('140493c1b83ccdfddbbaf7e7e2628f15', 'admin', '管理员', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:20:02');
+INSERT INTO `sys_log_audit` VALUES ('15194c4fb71beb76467435971ef8b460', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:23:46');
+INSERT INTO `sys_log_audit` VALUES ('157ba0a4bfa126869e46d60e76995a2c', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:56:28');
+INSERT INTO `sys_log_audit` VALUES ('158fc4ef7beef71b3476048e96258959', 'admin', 'admin', '127.0.0.1', '登录', '认证', '失败', NULL, 1, 0, 0, '2026-07-10 13:23:42');
+INSERT INTO `sys_log_audit` VALUES ('168b00c5f40afba8502a10ae5122c9b7', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:24:03');
+INSERT INTO `sys_log_audit` VALUES ('16ad9e54cbc10f55aefa78b9332250d6', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:22');
+INSERT INTO `sys_log_audit` VALUES ('1705ec1e6c536365ab03ca68fac9833a', 'admin', '管理员', '127.0.0.1', '注销登录', '注销', '成功', NULL, 1, 2, 0, '2026-07-13 21:58:45');
+INSERT INTO `sys_log_audit` VALUES ('17693ca53b48eea14b0e89523d51f1f5', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:06:17');
+INSERT INTO `sys_log_audit` VALUES ('1809b8f3582e8230877fda10c53d82b1', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-10 13:34:24');
+INSERT INTO `sys_log_audit` VALUES ('187f11ebbd7d1f742a98c90cbd7cbd24', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 11:31:09');
+INSERT INTO `sys_log_audit` VALUES ('19e9d2152c5a9af7b98ee79d92efe264', 'admin', '管理员', '127.0.0.1', '查询所有角色作为下拉框', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:20:05');
+INSERT INTO `sys_log_audit` VALUES ('1acb09d6142279117cc1762d2c49ba40', 'admin', 'admin', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:23:52');
+INSERT INTO `sys_log_audit` VALUES ('1b57623e97738ef9e5272219cfda5d51', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:57:59');
+INSERT INTO `sys_log_audit` VALUES ('1baf1eba4b9a4d84d16402549b4ce0d6', 'admin', '管理员', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:17:33');
+INSERT INTO `sys_log_audit` VALUES ('1bc7b4831305e0fa148c3c7d6105162c', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:23:18');
+INSERT INTO `sys_log_audit` VALUES ('1bf0d202d1a985a17ddd9c4f819a49d2', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:28:45');
+INSERT INTO `sys_log_audit` VALUES ('1c7d7a19cdb0e4e3a56b12d17c51fa3e', 'admin', '管理员', '127.0.0.1', '修改用户', '更新', '成功', NULL, 1, 0, 0, '2026-07-14 14:22:06');
+INSERT INTO `sys_log_audit` VALUES ('1ce5c003a26b1e63a5a527b394c45778', 'admin', '管理员', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:26:21');
+INSERT INTO `sys_log_audit` VALUES ('1ce99a2527be57b7bf6be60b34442aa2', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 13:19:14');
+INSERT INTO `sys_log_audit` VALUES ('1d1b3f7bf23b3519685be798a7f01ff8', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-13 11:00:17');
+INSERT INTO `sys_log_audit` VALUES ('1d3091a3e4283bfd53dddcec5f76bc93', 'yexb', '测试账号', '127.0.0.1', '查询稳态趋势台账树', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:39:00');
+INSERT INTO `sys_log_audit` VALUES ('1d9ae00b9bdaeadaf1e31ec8f9e8b31c', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:23:29');
+INSERT INTO `sys_log_audit` VALUES ('1e3b6c0bd734c2d8fc5309ffa357fa3d', 'yexb', '测试账号', '127.0.0.1', '分页查询磁盘监控任务列表', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:29:08');
+INSERT INTO `sys_log_audit` VALUES ('1edd406404da227e077469b48e85480e', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '失败', '失败: 校验文件阶段:缺少台账信息汇总.xlsx', 0, 0, 0, '2026-07-13 10:59:36');
+INSERT INTO `sys_log_audit` VALUES ('1ef1f1e0cf53c2d81d4b5f3bbaa6ca63', 'yexb', '测试账号', '127.0.0.1', '注销登录', '注销', '成功', NULL, 1, 2, 0, '2026-07-14 15:21:08');
+INSERT INTO `sys_log_audit` VALUES ('1efb554c331fb1dde8c028c9e452c8e6', 'admin', '管理员', '127.0.0.1', '查询所有角色作为下拉框', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:33:37');
+INSERT INTO `sys_log_audit` VALUES ('1f32a23b1d1932cb180dd90ff2176bb0', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:59:09');
+INSERT INTO `sys_log_audit` VALUES ('1f77497e6a2ccf4bc0fbd7905d1f9ad5', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:05:23');
+INSERT INTO `sys_log_audit` VALUES ('1f847d0a292fb67c58bb020562848c1b', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '成功', NULL, 0, 0, 0, '2026-07-14 15:41:33');
+INSERT INTO `sys_log_audit` VALUES ('1f9346f169e657d92b745f288c744307', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 15:21:17');
+INSERT INTO `sys_log_audit` VALUES ('1fa1878acb70074839d296ec95780d40', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '成功', NULL, 0, 0, 0, '2026-07-14 15:34:51');
+INSERT INTO `sys_log_audit` VALUES ('1fa59f017d0bf8320449d372aa570c5a', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:34:39');
+INSERT INTO `sys_log_audit` VALUES ('200db4556c8ddb361ac7a181db6c9778', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:41:20');
+INSERT INTO `sys_log_audit` VALUES ('206a2365e2fdad1b4bad53e595ff96f2', 'admin', '管理员', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 21:33:09');
+INSERT INTO `sys_log_audit` VALUES ('2138ae4255627c4656e0ba80b78529f9', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-13 11:05:15');
+INSERT INTO `sys_log_audit` VALUES ('217cb3ebc21baad986681bb779827d07', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:23:09');
+INSERT INTO `sys_log_audit` VALUES ('219d9cb9e6af164bd46298b68de25a47', 'yexb', 'yexb', '127.0.0.1', '登录', '认证', '成功', NULL, 1, 0, 0, '2026-07-14 14:23:09');
+INSERT INTO `sys_log_audit` VALUES ('21a09051aabb6a452ee66c55d0373594', 'yexb', 'yexb', '127.0.0.1', '登录', '认证', '成功', NULL, 1, 0, 0, '2026-07-13 21:54:47');
+INSERT INTO `sys_log_audit` VALUES ('21a32832b9acec3834a3fe8c3576d423', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 08:56:59');
+INSERT INTO `sys_log_audit` VALUES ('21e36d873c853bdfdc100be74aca86a2', 'yexb', '测试账号', '127.0.0.1', '下载报告模板文件', '查询', '失败', '失败: 模板文件不存在', 0, 0, 0, '2026-07-10 13:34:45');
+INSERT INTO `sys_log_audit` VALUES ('21ef994931cb96a115e9fdb0951992c3', 'admin', '管理员', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:41:34');
+INSERT INTO `sys_log_audit` VALUES ('21f196d7110f0c55fab07c194ac0c12d', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-10 13:34:07');
+INSERT INTO `sys_log_audit` VALUES ('22570e59209008c3175b984e17562cd2', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-13 11:05:21');
+INSERT INTO `sys_log_audit` VALUES ('22d4dcda73e8e2b3689225712d7e7680', 'yxb', 'yxb', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 08:55:31');
+INSERT INTO `sys_log_audit` VALUES ('22f38c146ce4cedd64a5776b36ca9841', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '失败', '失败: 校验文件阶段:第2行缺少标准报告文件名', 0, 0, 0, '2026-07-13 11:07:59');
+INSERT INTO `sys_log_audit` VALUES ('2364438e542e9b4aae06597a493352cd', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:40:46');
+INSERT INTO `sys_log_audit` VALUES ('236adfec7f766611403f9fded63a10c0', 'yexb', 'yexb', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 10:58:04');
+INSERT INTO `sys_log_audit` VALUES ('23786e500f67b551399066095597594d', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:19:46');
+INSERT INTO `sys_log_audit` VALUES ('23acd1e4c9199b8d80fd7a80495d134d', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:56:09');
+INSERT INTO `sys_log_audit` VALUES ('23d5e3e8fc178a7981c6a99ef036b91c', 'yexb', '测试账号', '127.0.0.1', '获取所有字典数据缓存到前端', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 15:21:17');
+INSERT INTO `sys_log_audit` VALUES ('240ab5d32e2794882b71762f42ead496', 'yexb', '测试账号', '127.0.0.1', '查询设备类型列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:28:24');
+INSERT INTO `sys_log_audit` VALUES ('2474e23c608c1462d41ec18d5d2c8570', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:28:46');
+INSERT INTO `sys_log_audit` VALUES ('24e9dc180fe948dc2a4d05fe6ee8d6c4', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:37:02');
+INSERT INTO `sys_log_audit` VALUES ('26103efb2c4ac9358a3446ceb54b0777', 'yexb', '测试账号', '127.0.0.1', '查询设备类型列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:56:18');
+INSERT INTO `sys_log_audit` VALUES ('263989a44e89b85b655971c217824e8b', 'admin', '管理员', '127.0.0.1', '查询所有角色作为下拉框', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:55:11');
+INSERT INTO `sys_log_audit` VALUES ('2657b09492303c5afc45f6b36f3d1a4e', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 10:58:18');
+INSERT INTO `sys_log_audit` VALUES ('26b961821be8222b5bd0ce3e7603e6a3', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:33:37');
+INSERT INTO `sys_log_audit` VALUES ('273bcc71b0b61741b594fc1c34ce41b9', 'admin', '管理员', '127.0.0.1', '新增用户', '新增', '成功', NULL, 1, 0, 0, '2026-07-13 21:57:17');
+INSERT INTO `sys_log_audit` VALUES ('277f4f0be021598cd21fbf9a49d5cab7', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '', '失败', '请求中参数的媒体方式不支持', 1, 0, 0, '2026-07-13 10:27:32');
+INSERT INTO `sys_log_audit` VALUES ('27d7a83842736ffb7da86cfea9ea4d18', 'admin', '管理员', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:31:16');
+INSERT INTO `sys_log_audit` VALUES ('2803f949e6f38e5970f65e3d7310343e', 'admin', '管理员', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:26:45');
+INSERT INTO `sys_log_audit` VALUES ('2815b0d5d3e91b80a4836687b2b03978', 'admin', '管理员', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 08:56:08');
+INSERT INTO `sys_log_audit` VALUES ('282e4bc135bf96f78a809d39579f6ecb', 'yexb', '测试账号', '127.0.0.1', '查询备份文件', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 13:18:43');
+INSERT INTO `sys_log_audit` VALUES ('2896810adcd15c7a0210a1396d723a5b', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:29:10');
+INSERT INTO `sys_log_audit` VALUES ('2899ed5ad101c4893b892c86b5d116f6', 'admin', 'admin', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 13:19:14');
+INSERT INTO `sys_log_audit` VALUES ('28a6af4d6a49ebf896a4a491e3bd09d7', 'root', 'root', '127.0.0.1', '登录', '认证', '失败', NULL, 1, 0, 0, '2026-07-10 13:23:16');
+INSERT INTO `sys_log_audit` VALUES ('28bf35c9e3809ac6d6fca2f20cfbe077', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:38:41');
+INSERT INTO `sys_log_audit` VALUES ('2919a603ffbf5ad57af589eebdc76eea', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:24:15');
+INSERT INTO `sys_log_audit` VALUES ('296f40a4bbc0f6847a5238ade37eb260', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:00');
+INSERT INTO `sys_log_audit` VALUES ('29dcab66940365eae204c598a705e93c', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:30:18');
+INSERT INTO `sys_log_audit` VALUES ('2aaea257e5e037d2fb811698bbd56899', 'admin', '管理员', '127.0.0.1', '修改用户', '更新', '失败', '失败: 上传文件失败', 1, 0, 0, '2026-07-14 14:20:42');
+INSERT INTO `sys_log_audit` VALUES ('2ac6465fad045adb87dda56f10709645', 'yexb', '测试账号', '127.0.0.1', '查询备份任务', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 13:18:43');
+INSERT INTO `sys_log_audit` VALUES ('2b53c09ec71dc49ca9447b8f526eb294', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 08:57:09');
+INSERT INTO `sys_log_audit` VALUES ('2bf7b219f82ba758c962fc728de5153b', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:56:30');
+INSERT INTO `sys_log_audit` VALUES ('2bfd57a7ac74855dabb912c04a840f70', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 11:21:06');
+INSERT INTO `sys_log_audit` VALUES ('2c0ff583280f6545c917e3482009009e', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:04:46');
+INSERT INTO `sys_log_audit` VALUES ('2c932042b83e68c46bd6538320357b08', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:58:33');
+INSERT INTO `sys_log_audit` VALUES ('2d2dc49c9ce15a1794fefb41cc58f322', 'yexb', '测试账号', '127.0.0.1', '提交普测报告审核', '更新', '失败', '失败: 仅编制或退回状态的普测报告允许提交审核', 0, 0, 0, '2026-07-10 13:47:30');
+INSERT INTO `sys_log_audit` VALUES ('2d2feae19ad07c531ab6a2de9a050a9c', 'admin', '管理员', '127.0.0.1', '注销登录', '注销', '成功', NULL, 1, 2, 0, '2026-07-13 08:56:53');
+INSERT INTO `sys_log_audit` VALUES ('2d6efe8e2a7bbcade40edf676ad3c49c', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:37:55');
+INSERT INTO `sys_log_audit` VALUES ('2d99ec2edcf96239a7794064dc82b79f', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:24:22');
+INSERT INTO `sys_log_audit` VALUES ('2dddb172ec636c88deed941ee52debbf', 'yexb', 'yexb', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 11:31:04');
+INSERT INTO `sys_log_audit` VALUES ('2e19b39f73ccd9c870b40c4476e7ad9a', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 15:34:40');
+INSERT INTO `sys_log_audit` VALUES ('2e316ed19b121ca9650835706f93986e', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:29:32');
+INSERT INTO `sys_log_audit` VALUES ('2fb1d7c5af09769cf8df55d8324d9fa7', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:38:28');
+INSERT INTO `sys_log_audit` VALUES ('2ff227235887260da5b1d04c770996af', 'admin', '管理员', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:26:14');
+INSERT INTO `sys_log_audit` VALUES ('300d60c473abbc9dca46e5e351f54fca', 'yexb', '测试账号', '127.0.0.1', '获取所有字典数据缓存到前端', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 13:18:09');
+INSERT INTO `sys_log_audit` VALUES ('3043b56f8e0a1b82ccbd74b66af04e6b', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '', '失败', '请求中参数的媒体方式不支持', 1, 0, 0, '2026-07-13 10:24:02');
+INSERT INTO `sys_log_audit` VALUES ('304db6645497f2608d87bafdac44af26', 'yexb', '测试账号', '127.0.0.1', '分页查询磁盘监控任务列表', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 10:04:37');
+INSERT INTO `sys_log_audit` VALUES ('306ef0483182173223381ae3fe6ef351', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:48');
+INSERT INTO `sys_log_audit` VALUES ('314f5e656d52494e5436360ad360c76a', 'yexb', '测试账号', '127.0.0.1', '新增报告模板', '新增', '成功', NULL, 0, 0, 0, '2026-07-10 13:40:31');
+INSERT INTO `sys_log_audit` VALUES ('31627a942425492a4f5e561181fd1ee6', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:04:45');
+INSERT INTO `sys_log_audit` VALUES ('31e359ec8e91cf2316b9e87936301288', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:28:20');
+INSERT INTO `sys_log_audit` VALUES ('32cceab9fcd9d484a3576a4a570948c9', 'admin', '管理员', '127.0.0.1', '预览用户签名', '查询', '失败', '失败: 读取文件失败', 1, 0, 0, '2026-07-14 14:20:19');
+INSERT INTO `sys_log_audit` VALUES ('333843ac627146c518fd7c7202a701dc', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:24:27');
+INSERT INTO `sys_log_audit` VALUES ('3351e84b9f6eff495306920d9aae0a83', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:54:50');
+INSERT INTO `sys_log_audit` VALUES ('3385315cd9dab53db5cebbf44484a66c', 'yexb', '测试账号', '127.0.0.1', '分页查询暂态事件列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:28:45');
+INSERT INTO `sys_log_audit` VALUES ('34de2fd9397228d837a523f2e868cd2a', 'yexb', '测试账号', '127.0.0.1', '删除报告模板', '删除', '成功', NULL, 0, 0, 0, '2026-07-10 13:35:07');
+INSERT INTO `sys_log_audit` VALUES ('352b6b0be30b563521937e51a3604da7', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:04:50');
+INSERT INTO `sys_log_audit` VALUES ('365db2a0d8a8bc4f9f0ac62799d9bdb0', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:23:38');
+INSERT INTO `sys_log_audit` VALUES ('3770337efcbf563b7b017c67b4bab9d0', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '失败', '失败: 校验文件阶段:第2行缺少Excel附件', 0, 0, 0, '2026-07-14 13:20:41');
+INSERT INTO `sys_log_audit` VALUES ('37901afb066d15771d2c209b639f2174', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:31:39');
+INSERT INTO `sys_log_audit` VALUES ('3879d88e65141516974dbbd5d3a75b1c', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 13:19:37');
+INSERT INTO `sys_log_audit` VALUES ('38e6c02b416c2eca0edc3acc0417388f', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 10:41:13');
+INSERT INTO `sys_log_audit` VALUES ('395361136f4ac0cc1e2a66c141c90306', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:23:10');
+INSERT INTO `sys_log_audit` VALUES ('39fcd5f4e5c45355903231879bcbbe19', 'yexb', 'yexb', '127.0.0.1', '登录', '认证', '成功', NULL, 1, 0, 0, '2026-07-10 13:28:09');
+INSERT INTO `sys_log_audit` VALUES ('3b212e3c81620e50484455e8ef0c5c9c', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '', '失败', '请求中参数的媒体方式不支持', 1, 0, 0, '2026-07-13 09:22:16');
+INSERT INTO `sys_log_audit` VALUES ('3b3c174806b6411ff7f4b743855c4282', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:27:17');
+INSERT INTO `sys_log_audit` VALUES ('3b467816430cdb893daaeed353994598', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 15:22:28');
+INSERT INTO `sys_log_audit` VALUES ('3b47fbfabbad191ecbb521811b7fb55f', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-10 13:36:56');
+INSERT INTO `sys_log_audit` VALUES ('3b754d673acdc6ebd8eed03419afd536', 'admin', '管理员', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 21:55:09');
+INSERT INTO `sys_log_audit` VALUES ('3b8fdc5773cad1e54d28da3089a0299c', 'admin', '管理员', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:32:06');
+INSERT INTO `sys_log_audit` VALUES ('3bef666d2b8df06be86e1002408209d5', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:25');
+INSERT INTO `sys_log_audit` VALUES ('3c810c076e602205186b3234aa2d1201', 'admin', '管理员', '127.0.0.1', '获取角色id绑定的菜单(资源)', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:27:30');
+INSERT INTO `sys_log_audit` VALUES ('3c872a9018d00e455c518742bf416cec', 'yexb', '测试账号', '127.0.0.1', '查询 Oracle 表列表', '查询', '失败', '失败: Public Key Retrieval is not allowed', 0, 0, 0, '2026-07-13 13:18:50');
+INSERT INTO `sys_log_audit` VALUES ('3c95f91e8b4f0bec3245d01a1a15e7ae', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:31:42');
+INSERT INTO `sys_log_audit` VALUES ('3c974d9b074f8b717f552572714a4146', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 13:19:37');
+INSERT INTO `sys_log_audit` VALUES ('3cde671609f732a5710892e7cdf155f9', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:42:24');
+INSERT INTO `sys_log_audit` VALUES ('3d0514754094713e3f7295978b0c6ac4', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:23:43');
+INSERT INTO `sys_log_audit` VALUES ('3d3d308d228332a7d13542346e4b52ad', 'admin', '管理员', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:41:34');
+INSERT INTO `sys_log_audit` VALUES ('3d432e520f768ec27c2b8d655beb2539', 'yexb', 'yexb', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 13:18:00');
+INSERT INTO `sys_log_audit` VALUES ('3dd0ec5d5fee83df8574855716cf5749', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-10 13:37:10');
+INSERT INTO `sys_log_audit` VALUES ('3dd4c25d93192e589533819cedadbaac', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:19:56');
+INSERT INTO `sys_log_audit` VALUES ('3dfd4cc3a45407c6471db536dd8a813e', 'yexb', '测试账号', '127.0.0.1', '删除普测报告', '删除', '成功', NULL, 0, 0, 0, '2026-07-10 13:48:40');
+INSERT INTO `sys_log_audit` VALUES ('3e09b0235018a7014e0e49559297c513', 'admin', '管理员', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:24:02');
+INSERT INTO `sys_log_audit` VALUES ('3f16524c38e6d861388ead757730909d', 'yexb', '测试账号', '127.0.0.1', '查询备份文件', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 13:18:42');
+INSERT INTO `sys_log_audit` VALUES ('3f85002bd15cae8588fb986f39765ca3', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:35:10');
+INSERT INTO `sys_log_audit` VALUES ('3f8874f64401b9d112bcf04af81aacf1', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:07:13');
+INSERT INTO `sys_log_audit` VALUES ('40a95eb82871a182e3ec7b27774df698', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 15:34:30');
+INSERT INTO `sys_log_audit` VALUES ('41230b0fa51e2d6e172e94ff844ac955', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:39:12');
+INSERT INTO `sys_log_audit` VALUES ('4149c6b523d0b40702cf9502d0b05b98', 'yexb', '测试账号', '127.0.0.1', '下载报告模板文件', '查询', '失败', '失败: 读取模板文件失败', 0, 0, 0, '2026-07-14 14:23:28');
+INSERT INTO `sys_log_audit` VALUES ('418d4f1860a628ba96ebc7dd5bf0b3b5', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:03:23');
+INSERT INTO `sys_log_audit` VALUES ('42184ad1babf8e960b5c7d1964b449dd', 'yexb', 'yexb', '127.0.0.1', '登录', '认证', '成功', NULL, 1, 0, 0, '2026-07-14 14:19:32');
+INSERT INTO `sys_log_audit` VALUES ('4263949ad271335b5c5fa348501a0846', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:19:32');
+INSERT INTO `sys_log_audit` VALUES ('4267453a257555e050440368f7e86b9c', 'admin', '管理员', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:32:06');
+INSERT INTO `sys_log_audit` VALUES ('43b61410935907f84336d2429c076280', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:56:38');
+INSERT INTO `sys_log_audit` VALUES ('43b769076d2248e7b88b361828ff6728', 'yexb', '测试账号', '127.0.0.1', '查询稳态趋势台账树', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:38:53');
+INSERT INTO `sys_log_audit` VALUES ('43ba7b9c290536af9716d31fac6e32c0', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-13 11:07:59');
+INSERT INTO `sys_log_audit` VALUES ('4434d07886fa311d780652268defd108', 'yexb', '测试账号', '127.0.0.1', '获取所有字典数据缓存到前端', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 13:19:14');
+INSERT INTO `sys_log_audit` VALUES ('44e18a701e5f8273b81368e0951ad9b1', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 13:18:09');
+INSERT INTO `sys_log_audit` VALUES ('44ec7cc437ed9dd2215a7ff90b8286c3', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:31:09');
+INSERT INTO `sys_log_audit` VALUES ('451d8c0a6c047c312af8268c4211ab08', 'admin', '管理员', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:41:30');
+INSERT INTO `sys_log_audit` VALUES ('4589e25ef93cead7d9e85decb4703f7f', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:19:21');
+INSERT INTO `sys_log_audit` VALUES ('459f4f55a95969bd14bae4841b8d42ff', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:23:46');
+INSERT INTO `sys_log_audit` VALUES ('459fa5479ede3ba8a85cc5e3116ebf01', 'admin', '管理员', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:20:02');
+INSERT INTO `sys_log_audit` VALUES ('45c8f5c6561755fc6585c84672f728e6', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 15:36:03');
+INSERT INTO `sys_log_audit` VALUES ('45d376e4e3c9c1333e3245b7cd520fda', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:24:06');
+INSERT INTO `sys_log_audit` VALUES ('45ecd61c819372d6e0c55eb48540edf0', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:23:31');
+INSERT INTO `sys_log_audit` VALUES ('45f2aec2ba9a9d4b8f0ed89a2ae35109', 'yexb', 'yexb', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:19:32');
+INSERT INTO `sys_log_audit` VALUES ('45fa6496cd450cec2a7a80bc29f24f7f', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:24:49');
+INSERT INTO `sys_log_audit` VALUES ('46067a7d440d7fd3e67ac754ca071f2f', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:24:22');
+INSERT INTO `sys_log_audit` VALUES ('46b802f62efd20f02c563699616f4a8b', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-10 13:47:24');
+INSERT INTO `sys_log_audit` VALUES ('46f84c3208cf4d71093c626628a92646', 'admin', '管理员', '127.0.0.1', '分页查询用户列表', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 13:19:18');
+INSERT INTO `sys_log_audit` VALUES ('482e9eda9e7babe8c74dd6eccd53bfe7', 'admin', '管理员', '127.0.0.1', '查询所有角色作为下拉框', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:33:09');
+INSERT INTO `sys_log_audit` VALUES ('483104db608efb1e69803fb255810e74', 'yexb', '测试账号', '127.0.0.1', '查询 Oracle 表列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 13:18:30');
+INSERT INTO `sys_log_audit` VALUES ('48742f4785db63af55609a9a928c015f', 'admin', '管理员', '127.0.0.1', '分页查询用户列表', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:17:37');
+INSERT INTO `sys_log_audit` VALUES ('48d767e02cfeae933f6a42d3418e4649', 'yexb', 'yexb', '127.0.0.1', '登录', '认证', '失败', NULL, 1, 0, 0, '2026-07-10 13:28:00');
+INSERT INTO `sys_log_audit` VALUES ('4a570a13dd56b5e6f6c0238025c36039', 'yexb', 'yexb', '127.0.0.1', '登录', '认证', '失败', NULL, 1, 0, 0, '2026-07-13 13:18:00');
+INSERT INTO `sys_log_audit` VALUES ('4a8f0872da805248035984b141da7279', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:38:16');
+INSERT INTO `sys_log_audit` VALUES ('4a9357c3d1e0c5c42e62196799bc231e', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:19:14');
+INSERT INTO `sys_log_audit` VALUES ('4b311c67c1bccc5be184dd82ca3c5e2e', 'yexb', '测试账号', '127.0.0.1', '查询备份文件', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 13:18:27');
+INSERT INTO `sys_log_audit` VALUES ('4b4d1ebe728ea7c9a73f89df4068aa72', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:58:24');
+INSERT INTO `sys_log_audit` VALUES ('4cbe745fb3c8ca19cd498b6a19e8de69', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:41:52');
+INSERT INTO `sys_log_audit` VALUES ('4cd7080a119e8a1db9846765ffac9e85', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:55:01');
+INSERT INTO `sys_log_audit` VALUES ('4d096ffb6e453e234d8eb60690ac4561', 'yexb', '测试账号', '127.0.0.1', '注销登录', '注销', '成功', NULL, 1, 2, 0, '2026-07-13 13:19:08');
+INSERT INTO `sys_log_audit` VALUES ('4dcaac29e0ab596d3a3e3648657774a9', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:39:29');
+INSERT INTO `sys_log_audit` VALUES ('4dd62a280aee9056f08869468dff731d', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '', '失败', '后台接口异常', 1, 0, 0, '2026-07-14 14:45:42');
+INSERT INTO `sys_log_audit` VALUES ('4df5cb282e6bb45af2081560fe7f6d36', 'yexb', '测试账号', '127.0.0.1', '查询设备类型列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:37:17');
+INSERT INTO `sys_log_audit` VALUES ('4e43ca521584392e7e2608fc0d1a4a04', 'yexb', 'yexb', '127.0.0.1', '登录', '认证', '成功', NULL, 1, 0, 0, '2026-07-13 08:56:58');
+INSERT INTO `sys_log_audit` VALUES ('4e5ea91cc23138fdd84d00a1ea82f3fa', 'admin', '管理员', '127.0.0.1', '分页查询用户列表', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:41:35');
+INSERT INTO `sys_log_audit` VALUES ('4fa9802d7977e0282e95201bfd3ee12a', 'admin', 'admin', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:55:08');
+INSERT INTO `sys_log_audit` VALUES ('50ac1197061a7a7b22e4d2177a121bb3', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:19:37');
+INSERT INTO `sys_log_audit` VALUES ('50de24ff07e3df3bcb3de20c208c7f64', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:20');
+INSERT INTO `sys_log_audit` VALUES ('5118ed64280927e4acf827299cbfc2a9', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:12:16');
+INSERT INTO `sys_log_audit` VALUES ('51ad613aa95faef5385da897e4e91b64', 'admin', '管理员', '127.0.0.1', '获取所有字典数据缓存到前端', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 08:56:07');
+INSERT INTO `sys_log_audit` VALUES ('523cf7194ecb5a9b0caadb105f94262f', 'yexb', '测试账号', '127.0.0.1', '提交普测报告审核', '更新', '失败', '失败: 仅编制或退回状态的普测报告允许提交审核', 0, 0, 0, '2026-07-10 13:47:24');
+INSERT INTO `sys_log_audit` VALUES ('5268d99a929dfc23465eb83d645ccc29', 'admin', '管理员', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:17:33');
+INSERT INTO `sys_log_audit` VALUES ('527c07807674d6ec85203666f272591d', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:38:16');
+INSERT INTO `sys_log_audit` VALUES ('53cfce5171c882e8d6ae653aca266592', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '', '失败', '请求中参数的媒体方式不支持', 1, 0, 0, '2026-07-13 09:06:34');
+INSERT INTO `sys_log_audit` VALUES ('548d4d476d0a37ccc9ec4990492c4884', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:05:39');
+INSERT INTO `sys_log_audit` VALUES ('54a11efb9f122bdffd5e910e2d979710', 'admin', '管理员', '127.0.0.1', '获取所有字典数据缓存到前端', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:20:02');
+INSERT INTO `sys_log_audit` VALUES ('552916814468abfff7a5f52980fb9d64', 'yexb', '测试账号', '127.0.0.1', '获取所有字典数据缓存到前端', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 11:31:05');
+INSERT INTO `sys_log_audit` VALUES ('55582562f149f417c6e08b2b68e2a8fb', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 13:19:14');
+INSERT INTO `sys_log_audit` VALUES ('555beae721835cf33a90b6c1e5bb3637', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:23:43');
+INSERT INTO `sys_log_audit` VALUES ('5576209b37faf56ef84b98c0dcfda202', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:54');
+INSERT INTO `sys_log_audit` VALUES ('56e016ada4fd8bd83ef1a0ec7300aad0', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '失败', '失败: 校验文件阶段:第2行缺少Excel附件', 0, 0, 0, '2026-07-14 13:24:54');
+INSERT INTO `sys_log_audit` VALUES ('5711abe996abe245be0e928a2f3842e7', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:41:50');
+INSERT INTO `sys_log_audit` VALUES ('57730a3e03527d8cc9b1b5e015f9dd13', 'yexb', '测试账号', '127.0.0.1', '新增普测报告', '新增', '失败', '失败: 受资数据格式不正确', 0, 0, 0, '2026-07-14 15:20:59');
+INSERT INTO `sys_log_audit` VALUES ('57b7d2c42263649b82c8c0182a59ce5f', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:59:06');
+INSERT INTO `sys_log_audit` VALUES ('57cfb1c057493d5500b73ce0ef1bdfbb', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:29');
+INSERT INTO `sys_log_audit` VALUES ('583d3bf0d82672c2152346f0d0f10203', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', '失败: 读取校准报告失败', 0, 0, 0, '2026-07-14 14:24:18');
+INSERT INTO `sys_log_audit` VALUES ('5856aa77ef5385923bf1f95b666fb036', 'admin', '管理员', '127.0.0.1', '分页查询用户列表', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 08:56:45');
+INSERT INTO `sys_log_audit` VALUES ('5930f7638ad681af86c90b9e0ef7f409', 'admin', '管理员', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:23:54');
+INSERT INTO `sys_log_audit` VALUES ('598dff7ad647536f3bb9bd3f8e3a4bc7', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 11:07:54');
+INSERT INTO `sys_log_audit` VALUES ('59c24163bac211727a43303998fa8e00', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:59:17');
+INSERT INTO `sys_log_audit` VALUES ('5a8d90b209d8a8dfc02c7ca61935b86f', 'admin', '管理员', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:26:45');
+INSERT INTO `sys_log_audit` VALUES ('5aa4785d5871130a86351ffad26d3585', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:04');
+INSERT INTO `sys_log_audit` VALUES ('5adbf3afd4ff21f472089d7d054b5218', 'admin', '管理员', '127.0.0.1', '获取所有字典数据缓存到前端', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:17:33');
+INSERT INTO `sys_log_audit` VALUES ('5af86e49cdd190d78241fe30fb4c3602', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '', '失败', '请求中参数的媒体方式不支持', 1, 0, 0, '2026-07-13 09:06:20');
+INSERT INTO `sys_log_audit` VALUES ('5b2f858a353ed29f995b3c0d43a2a61c', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 11:31:06');
+INSERT INTO `sys_log_audit` VALUES ('5b8fdc152f05626d66c0302fcfb46447', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:58:35');
+INSERT INTO `sys_log_audit` VALUES ('5be37a7202afc747771fc32b7dd5f916', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:28:40');
+INSERT INTO `sys_log_audit` VALUES ('5c30fd050b0e4cd4fc626b246f112bca', 'yexb', '测试账号', '127.0.0.1', '查询设备类型列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:56:21');
+INSERT INTO `sys_log_audit` VALUES ('5cd8c3786120b4b21d16b38be36b2327', 'yexb', '测试账号', '127.0.0.1', '查询备份任务', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 13:18:40');
+INSERT INTO `sys_log_audit` VALUES ('5cf5d1ba84103f04c8b57f3d1358bcee', 'yexb', 'yexb', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 15:21:16');
+INSERT INTO `sys_log_audit` VALUES ('5da44e7059fa710ce286c11ad13623da', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:56:17');
+INSERT INTO `sys_log_audit` VALUES ('5e502f3247b80ba4b23273bbc2a474c4', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:54:50');
+INSERT INTO `sys_log_audit` VALUES ('5e88284226899c38a00ccca5ea8e3242', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '', '失败', '后台接口异常', 1, 0, 0, '2026-07-14 14:46:59');
+INSERT INTO `sys_log_audit` VALUES ('5eba92099125796808044e8115d914db', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 11:05:10');
+INSERT INTO `sys_log_audit` VALUES ('5ec5f142dde656f0d703f513f2b0e463', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '', '失败', '请求中参数的媒体方式不支持', 1, 0, 0, '2026-07-13 10:23:56');
+INSERT INTO `sys_log_audit` VALUES ('5ee497ad6e7b3d52c2288b17f2040c09', 'yexb', '测试账号', '127.0.0.1', '新增普测报告', '新增', '失败', '失败: 基础信息维护阶段:检测设备sheet第2行设备状态不正确', 0, 0, 0, '2026-07-14 15:38:55');
+INSERT INTO `sys_log_audit` VALUES ('5fc51e0a34125e5ad3c32c6502c60af5', 'admin', 'admin', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:20:01');
+INSERT INTO `sys_log_audit` VALUES ('602c356d8db08cfe4349159f1488f280', 'yexb', '测试账号', '127.0.0.1', '获取所有字典数据缓存到前端', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:59:05');
+INSERT INTO `sys_log_audit` VALUES ('60a22bee6d09c329ad3bf9711758a1b2', 'admin', '管理员', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:55:09');
+INSERT INTO `sys_log_audit` VALUES ('6109a3b434a27518f2d25e0bc712aa79', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:23:22');
+INSERT INTO `sys_log_audit` VALUES ('6133b20643382533c6a56cd0b223af8c', 'yexb', '测试账号', '127.0.0.1', '查询普测报告详情', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:33:37');
+INSERT INTO `sys_log_audit` VALUES ('6175a9875cde72140fa151d8f207a511', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:54:33');
+INSERT INTO `sys_log_audit` VALUES ('6370f5a69d25c9ccc847aa36ace4ef8b', 'yexb', '测试账号', '127.0.0.1', '提交报告模板审核', '更新', '成功', NULL, 0, 0, 0, '2026-07-10 13:41:49');
+INSERT INTO `sys_log_audit` VALUES ('63b246615eecb3ccf4686d9661493917', 'yexb', '测试账号', '127.0.0.1', '删除报告模板', '删除', '成功', NULL, 0, 0, 0, '2026-07-14 14:37:58');
+INSERT INTO `sys_log_audit` VALUES ('65056ac9d4e6ee75125c2e26233633b0', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:29:38');
+INSERT INTO `sys_log_audit` VALUES ('657c06691e5958ffa14cf23db09f6b21', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:26');
+INSERT INTO `sys_log_audit` VALUES ('659484694f84299121632538fee5b9e1', 'admin', '管理员', '127.0.0.1', '修改用户', '更新', '成功', NULL, 1, 0, 0, '2026-07-14 14:22:54');
+INSERT INTO `sys_log_audit` VALUES ('659c0c1bd7cd6930ee36f17e1afb5709', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:31:10');
+INSERT INTO `sys_log_audit` VALUES ('65af796aff0a79840f97e0b2f99cdf91', 'yexb', 'yexb', '127.0.0.1', '登录', '认证', '成功', NULL, 1, 0, 0, '2026-07-13 13:18:08');
+INSERT INTO `sys_log_audit` VALUES ('65ea4615bd924d5b27ee9a8230df2b15', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:38:41');
+INSERT INTO `sys_log_audit` VALUES ('66366ac88ccc113d409bde5feca3bf0f', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:19:42');
+INSERT INTO `sys_log_audit` VALUES ('67e1a53285794a43e192de5add0718df', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:40:31');
+INSERT INTO `sys_log_audit` VALUES ('67f0e3c57c5bdc17580927c7243dd876', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:24:26');
+INSERT INTO `sys_log_audit` VALUES ('687a8e32283edfc4cee24310743aff2b', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:27:23');
+INSERT INTO `sys_log_audit` VALUES ('68836165d9c3e1c0dacb94511e335173', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:29');
+INSERT INTO `sys_log_audit` VALUES ('689ecb82769720f323c4c7d542bea556', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:42:52');
+INSERT INTO `sys_log_audit` VALUES ('68cab6ed43a9351e1256fb7a9d7c0737', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:38:46');
+INSERT INTO `sys_log_audit` VALUES ('692b4e451530939d33a16ed975014f8a', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:28:21');
+INSERT INTO `sys_log_audit` VALUES ('69cec8f4cee75a8c941cfb291d16ff03', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '', '失败', '请求中参数的媒体方式不支持', 1, 0, 0, '2026-07-13 09:07:23');
+INSERT INTO `sys_log_audit` VALUES ('69cf579b42ad2504bf9f0571401d3683', 'yexb', '测试账号', '127.0.0.1', '新增普测报告', '新增', '失败', '失败: 基础信息维护阶段:检测设备sheet第2行设备状态不正确', 0, 0, 0, '2026-07-14 15:36:01');
+INSERT INTO `sys_log_audit` VALUES ('6a62883318e24fbc7263e7c4883c5e0b', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:05:23');
+INSERT INTO `sys_log_audit` VALUES ('6a7283da1acfb72233035fbccb79b94e', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 11:31:11');
+INSERT INTO `sys_log_audit` VALUES ('6ae870ce49b14ebc050e1ce46117e755', 'yexb', '测试账号', '127.0.0.1', '查询设备类型列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:54:38');
+INSERT INTO `sys_log_audit` VALUES ('6ae8880a02ecdda98c1a8cb6d2761af1', 'admin', '管理员', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:23:54');
+INSERT INTO `sys_log_audit` VALUES ('6b4cd4b64d1727af44b54603af26c6b2', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:02');
+INSERT INTO `sys_log_audit` VALUES ('6b6d5c0250eea9191f572915b9a20825', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '失败', '失败: 校验文件阶段:检测设备sheet第2行标准有效期格式必须为yyyy-MM-dd', 0, 0, 0, '2026-07-13 11:05:15');
+INSERT INTO `sys_log_audit` VALUES ('6b949660c506b9966d3c78ae50299309', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-13 13:18:50');
+INSERT INTO `sys_log_audit` VALUES ('6ba98fabda864d7b6a263bae32306236', 'admin', 'admin', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:22:51');
+INSERT INTO `sys_log_audit` VALUES ('6c0f02a3df9a080b5031436f9dce4b92', 'admin', '管理员', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:26:21');
+INSERT INTO `sys_log_audit` VALUES ('6cc1edb0fd03f4aaa44b3556e5c34bc4', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:04:04');
+INSERT INTO `sys_log_audit` VALUES ('6ced1682854f58397fa8b022522bcab5', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:29:41');
+INSERT INTO `sys_log_audit` VALUES ('6cf4caa9804325316344d6b697aded1a', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:06:17');
+INSERT INTO `sys_log_audit` VALUES ('6d095da64788b8fe13a66127a3e48525', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 15:34:30');
+INSERT INTO `sys_log_audit` VALUES ('6d9ec5a938c366e2ec26f679fa3defc3', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:29:21');
+INSERT INTO `sys_log_audit` VALUES ('6daddb2ae1a7d90d7b77d4210c81ff88', 'admin', '管理员', '127.0.0.1', '查询所有角色作为下拉框', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 13:19:18');
+INSERT INTO `sys_log_audit` VALUES ('6e52299f98feeac00ba64dd1362a6d55', 'yexb', '测试账号', '127.0.0.1', '查询稳态趋势指标树', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:38:53');
+INSERT INTO `sys_log_audit` VALUES ('6eda9bc0b6f4c801e9bf1cee35e03c82', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:49');
+INSERT INTO `sys_log_audit` VALUES ('6f3447baa25b291103de7249691ee8b2', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:27');
+INSERT INTO `sys_log_audit` VALUES ('6f4d5757a4fcf003bf1dc46b32000da5', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 11:07:54');
+INSERT INTO `sys_log_audit` VALUES ('6f5015285f2aa3e7f872a18b5b5825cb', 'admin', '管理员', '127.0.0.1', '分页查询用户列表', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:57:34');
+INSERT INTO `sys_log_audit` VALUES ('6ff76a484e65540462bf1e52c7f87d4e', 'admin', '管理员', '127.0.0.1', '获取所有字典数据缓存到前端', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:23:53');
+INSERT INTO `sys_log_audit` VALUES ('70f0b0b854fe2dcf563ab100dd9e66a0', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 15:39:18');
+INSERT INTO `sys_log_audit` VALUES ('71101354b544d8341b0e91cb9a812e92', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:05:49');
+INSERT INTO `sys_log_audit` VALUES ('711555513b475c92dc3fb333931d6db0', 'admin', '管理员', '127.0.0.1', '注销登录', '注销', '成功', NULL, 1, 2, 0, '2026-07-10 13:27:50');
+INSERT INTO `sys_log_audit` VALUES ('7131bc38f9d30b166a0f60dfa8bf2885', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 13:20:04');
+INSERT INTO `sys_log_audit` VALUES ('7295d4436c6b862c08242e4994964cd1', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '', '失败', '请求中参数的媒体方式不支持', 1, 0, 0, '2026-07-13 10:08:02');
+INSERT INTO `sys_log_audit` VALUES ('735b462381fe00a5ab21f2803660a6f0', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:42:51');
+INSERT INTO `sys_log_audit` VALUES ('7376c18957fd304408c9fc59106cb5c6', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '', '失败', '请求中参数的媒体方式不支持', 1, 0, 0, '2026-07-13 10:12:31');
+INSERT INTO `sys_log_audit` VALUES ('73bb6eea71817669fc0d593cfcd81981', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:23:49');
+INSERT INTO `sys_log_audit` VALUES ('74162e8a057a50d011dcc78689193192', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:19:33');
+INSERT INTO `sys_log_audit` VALUES ('756f72362d044a42f197bca8b29f61fc', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 15:34:45');
+INSERT INTO `sys_log_audit` VALUES ('759dcddbc26a75422bfe26282dafe3d0', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 13:19:46');
+INSERT INTO `sys_log_audit` VALUES ('75eb7549696e65c7d920c109bd8d8ed1', 'admin', '管理员', '127.0.0.1', '查询所有角色作为下拉框', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:40:52');
+INSERT INTO `sys_log_audit` VALUES ('7687a00719d68c3674265b7b2fb0da15', 'yexb', '测试账号', '127.0.0.1', '查询委托单位详情', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:35:56');
+INSERT INTO `sys_log_audit` VALUES ('771ed59f0ff6f66ffd2773afe323b1c8', 'admin', '管理员', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 21:41:35');
+INSERT INTO `sys_log_audit` VALUES ('7780a0e54104977aead0bc2eac9e2077', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:31:38');
+INSERT INTO `sys_log_audit` VALUES ('78bfccabd4b1f0f737810315f9fa29c6', 'yexb', '测试账号', '127.0.0.1', '新增报告模板', '新增', '成功', NULL, 0, 0, 0, '2026-07-14 14:36:09');
+INSERT INTO `sys_log_audit` VALUES ('79371924ae0fcac2d3c5b3358f4b3720', 'admin', 'admin', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:26:12');
+INSERT INTO `sys_log_audit` VALUES ('795a4e3d1752be307dde5ceca6fce555', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:23');
+INSERT INTO `sys_log_audit` VALUES ('79a25f7d452dd4785e206f2643d3dd62', 'yexb', '测试账号', '127.0.0.1', '查询备份任务', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 13:18:27');
+INSERT INTO `sys_log_audit` VALUES ('79f9d14c180285f9f5bdd50042935df7', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 13:20:41');
+INSERT INTO `sys_log_audit` VALUES ('7a0bca2dae4fd1e2adad79b5f1f5cf4a', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:34:01');
+INSERT INTO `sys_log_audit` VALUES ('7aa764c97776e6d01fb7088d6240d83d', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:54:59');
+INSERT INTO `sys_log_audit` VALUES ('7aa81b7c126bbb8246b6e0341d232f71', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:23:34');
+INSERT INTO `sys_log_audit` VALUES ('7aada6ddbc58dfeba38ddc6933b15f2d', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:58:36');
+INSERT INTO `sys_log_audit` VALUES ('7b069c0865a16845d34211e4888e6957', 'admin', '管理员', '127.0.0.1', '查询所有角色作为下拉框', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:26:57');
+INSERT INTO `sys_log_audit` VALUES ('7b83936b395c3fca05eb71a664438064', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:23:48');
+INSERT INTO `sys_log_audit` VALUES ('7ba15f77371d4728325689ac2ee4d6f8', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '失败', '失败: 校验文件阶段:检测设备sheet第2行标准有效期格式必须为yyyy-MM-dd', 0, 0, 0, '2026-07-13 11:05:21');
+INSERT INTO `sys_log_audit` VALUES ('7c357e2e89d348ffc4d2077ae178e47c', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 10:23:33');
+INSERT INTO `sys_log_audit` VALUES ('7c636b1d22922588612e1f6fe0412162', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:31:42');
+INSERT INTO `sys_log_audit` VALUES ('7cdba4b912e96a470c02ac231effd94a', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:51:18');
+INSERT INTO `sys_log_audit` VALUES ('7d8d55acea89adc2ee5257ca03065056', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:09');
+INSERT INTO `sys_log_audit` VALUES ('7dc9dbf27e77141133b4e96a042ee144', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:31:41');
+INSERT INTO `sys_log_audit` VALUES ('7ddbaddc0c9c923bdf93a96816ee2200', 'admin', '管理员', '127.0.0.1', '分页查询用户列表', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:57:18');
+INSERT INTO `sys_log_audit` VALUES ('7df2ba0b6f351be8a142d15f6c5f0e62', 'yexb', '测试账号', '127.0.0.1', '查询数据库连接配置', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 13:18:25');
+INSERT INTO `sys_log_audit` VALUES ('7e2cb8f7f9303bf9a0058edbab274cd7', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '成功', NULL, 0, 0, 0, '2026-07-14 15:22:44');
+INSERT INTO `sys_log_audit` VALUES ('7ed2b2382a1514856d2dd0e88312bd34', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 15:23:13');
+INSERT INTO `sys_log_audit` VALUES ('7efdc283ce7fed2c688cbe6d4e4a5327', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:29:44');
+INSERT INTO `sys_log_audit` VALUES ('7f34a2657105b032b76eafd61d41da4c', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 10:58:18');
+INSERT INTO `sys_log_audit` VALUES ('7f364ea19f575404be0caeba0449f86e', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:19:57');
+INSERT INTO `sys_log_audit` VALUES ('7fa6072e6a171292fae37bacb80212cc', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:31:38');
+INSERT INTO `sys_log_audit` VALUES ('7fb51d0429e694bb1a8f22b5d2b586d8', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 13:19:21');
+INSERT INTO `sys_log_audit` VALUES ('7fedca960112a10aa5c6e8c39bf094bc', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 15:21:17');
+INSERT INTO `sys_log_audit` VALUES ('801ccb4757145c7f82eb7aac93de9351', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-10 13:47:44');
+INSERT INTO `sys_log_audit` VALUES ('8028acb42fea0d81343fda8b814ea1bd', 'admin', '管理员', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:33:08');
+INSERT INTO `sys_log_audit` VALUES ('8099aa786770216e05e41cbb6438ff98', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '', '失败', '请求中参数的媒体方式不支持', 1, 0, 0, '2026-07-13 09:06:14');
+INSERT INTO `sys_log_audit` VALUES ('80bb60ae7b5ba19c2e81bc2a0e5653ea', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '成功', NULL, 0, 0, 0, '2026-07-14 14:24:57');
+INSERT INTO `sys_log_audit` VALUES ('80dafbc3075b897f5e9d9e72d844035c', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 08:57:11');
+INSERT INTO `sys_log_audit` VALUES ('82d5e3b6b94b4cdbf5cadf713b642a38', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '', '失败', '请求中参数的媒体方式不支持', 1, 0, 0, '2026-07-13 09:02:57');
+INSERT INTO `sys_log_audit` VALUES ('82f0183c21717b2d0909e788d4c0f8b5', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '失败', '失败: 校验文件阶段:缺少台账信息汇总.xlsx', 0, 0, 0, '2026-07-13 10:58:50');
+INSERT INTO `sys_log_audit` VALUES ('8339b2cfc920fa12f9eb65ac2147cd53', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:41:14');
+INSERT INTO `sys_log_audit` VALUES ('84e38a1d27bf51291a43209a1ccf72b3', 'yexb', '测试账号', '127.0.0.1', '新增普测报告', '新增', '失败', '后台接口异常', 0, 0, 0, '2026-07-14 15:41:45');
+INSERT INTO `sys_log_audit` VALUES ('8513386e6a031397e32f25ccc6558809', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-10 13:47:30');
+INSERT INTO `sys_log_audit` VALUES ('85a8f51b3fe0067b8f73ca112d2ea900', 'admin', '管理员', '127.0.0.1', '分页查询用户列表', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:22:17');
+INSERT INTO `sys_log_audit` VALUES ('8681465b801c29e0218afb62e7a2d9a0', 'yexb', 'yexb', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 10:58:01');
+INSERT INTO `sys_log_audit` VALUES ('869a328d09ddc37ff871f3291f975763', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:38:28');
+INSERT INTO `sys_log_audit` VALUES ('86e224f1275941a32fbe56b9ce1a8bdb', 'yexb', '测试账号', '127.0.0.1', '查询稳态趋势指标树', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:39:00');
+INSERT INTO `sys_log_audit` VALUES ('87650c0bf30b5501777f01a10befd5e6', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-13 10:58:50');
+INSERT INTO `sys_log_audit` VALUES ('8775605dce2ee835a948b31d0e18f2d5', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:28:10');
+INSERT INTO `sys_log_audit` VALUES ('87911ef7c6778b364ddd0efc703b8b63', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:04:05');
+INSERT INTO `sys_log_audit` VALUES ('87afac71e60aa70abd424db7357355ce', 'yexb', 'yexb', '127.0.0.1', '登录', '认证', '成功', NULL, 1, 0, 0, '2026-07-14 13:19:13');
+INSERT INTO `sys_log_audit` VALUES ('88091803b884cd34f42dc915525b44c4', 'yexb', '测试账号', '127.0.0.1', '新增普测报告', '新增', '失败', '失败: 基础信息维护阶段:检测设备sheet第2行设备状态不正确', 0, 0, 0, '2026-07-14 15:36:04');
+INSERT INTO `sys_log_audit` VALUES ('88755d889105ae73e968d0d84f65c1dd', 'yexb', '测试账号', '127.0.0.1', '注销登录', '注销', '成功', NULL, 1, 2, 0, '2026-07-13 21:54:53');
+INSERT INTO `sys_log_audit` VALUES ('88e85bef29c9e64e38735fd9a576376b', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:36:40');
+INSERT INTO `sys_log_audit` VALUES ('893a542b3e7fcc4dc31fcebbc8010f6d', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:34:37');
+INSERT INTO `sys_log_audit` VALUES ('89decb04fef1a866a6f1f1d5709e9d8b', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:58:18');
+INSERT INTO `sys_log_audit` VALUES ('8a413971e938f3b1f67bf0603b05e22e', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:29:47');
+INSERT INTO `sys_log_audit` VALUES ('8a9862a5789082a6a10e7df2539dc566', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:56:28');
+INSERT INTO `sys_log_audit` VALUES ('8a9d2b7b1829a9d818cf5bdd902bfd3e', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:29:43');
+INSERT INTO `sys_log_audit` VALUES ('8aa620c712299d5ee43fdf0caf200b45', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 11:31:13');
+INSERT INTO `sys_log_audit` VALUES ('8b0203f8df98db26491eed9cc1d8711e', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:31:41');
+INSERT INTO `sys_log_audit` VALUES ('8b0792b7d4da0fd6251cc7be9588dc64', 'yexb', 'yexb', '127.0.0.1', '登录', '认证', '成功', NULL, 1, 0, 0, '2026-07-13 10:58:04');
+INSERT INTO `sys_log_audit` VALUES ('8b5c69cc1010ab2cb465ad398b6090d9', 'admin', 'admin', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:23:42');
+INSERT INTO `sys_log_audit` VALUES ('8b5fa32c5a9477d0bb94841896860121', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:08');
+INSERT INTO `sys_log_audit` VALUES ('8b72253e9c921db69bc572fd04d47355', 'admin', '管理员', '127.0.0.1', '获取所有字典数据缓存到前端', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 13:19:15');
+INSERT INTO `sys_log_audit` VALUES ('8bb02de4bb2dc4c258ead3f37c573577', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:54:48');
+INSERT INTO `sys_log_audit` VALUES ('8bf4445e3a7f22a72fcac3342509026a', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:00:24');
+INSERT INTO `sys_log_audit` VALUES ('8c16cde07c52fac1a5232c09fb8094a8', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:28:21');
+INSERT INTO `sys_log_audit` VALUES ('8c6036d634b167795438e57f59db457d', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:27:23');
+INSERT INTO `sys_log_audit` VALUES ('8c689165503b8cf92ea698b54d94bf47', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:40:25');
+INSERT INTO `sys_log_audit` VALUES ('8c97a4ba145e565d76f29b2b571ba2fa', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:23:54');
+INSERT INTO `sys_log_audit` VALUES ('8ca62ca12b6869d1b7b906b90be10970', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:23:17');
+INSERT INTO `sys_log_audit` VALUES ('8ca7358cdc43b7564c8bb742a22a1558', 'admin', '管理员', '127.0.0.1', '查询所有角色作为下拉框', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:17:37');
+INSERT INTO `sys_log_audit` VALUES ('8cbaaf5f958118e36f9c1f859785a209', 'admin', 'admin', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 08:56:06');
+INSERT INTO `sys_log_audit` VALUES ('8d29107cfba72b70ef203778dcc02858', 'yexb', '测试账号', '127.0.0.1', '获取所有字典数据缓存到前端', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 10:58:05');
+INSERT INTO `sys_log_audit` VALUES ('8deaea072fd861b50d1b6006583c4031', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 13:28:12');
+INSERT INTO `sys_log_audit` VALUES ('8df587eaeca5ca6a16a67374e9ef1d7c', 'admin', '管理员', '127.0.0.1', '修改用户', '更新', '成功', NULL, 1, 0, 0, '2026-07-13 21:55:18');
+INSERT INTO `sys_log_audit` VALUES ('8e593ebb486307688e03ab0ae9724a2c', 'admin', '管理员', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 13:19:15');
+INSERT INTO `sys_log_audit` VALUES ('8e637ec50a02aaa696b694f5f244b8ad', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:23:15');
+INSERT INTO `sys_log_audit` VALUES ('8efd034c9427a4b866074b44c68feccb', 'admin', '管理员', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:26:45');
+INSERT INTO `sys_log_audit` VALUES ('8f43a0b45d8fa71f4af577f533df97a0', 'yexb', '测试账号', '127.0.0.1', '查询备份文件', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 13:18:40');
+INSERT INTO `sys_log_audit` VALUES ('8f8681b6fd4ea19f92f844911c800d31', 'admin', '管理员', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 08:56:07');
+INSERT INTO `sys_log_audit` VALUES ('8f9703109994b6e4e834caf2b64b3112', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 15:34:45');
+INSERT INTO `sys_log_audit` VALUES ('8fcc1ba888dc11ccfe33b44c4cd15121', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:36:47');
+INSERT INTO `sys_log_audit` VALUES ('905b4d190b04a1e19be5706cb10c9a63', 'yexb', '测试账号', '127.0.0.1', '查询磁盘监控配置详情', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:29:08');
+INSERT INTO `sys_log_audit` VALUES ('90dfd097b3dcbc8b96c090aa007e0700', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:19:32');
+INSERT INTO `sys_log_audit` VALUES ('911d30e17ccaf73486e309469e635c99', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', '失败: 校准报告文件不存在', 0, 0, 0, '2026-07-10 13:36:56');
+INSERT INTO `sys_log_audit` VALUES ('91299315043cbbb41a47a938816d5b5c', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 15:38:09');
+INSERT INTO `sys_log_audit` VALUES ('920c98601cd253f29154151e910b6508', 'yexb', '测试账号', '127.0.0.1', '查询委托单位详情', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:35:58');
+INSERT INTO `sys_log_audit` VALUES ('924e987d74a36939be24fb907bffc859', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:48:40');
+INSERT INTO `sys_log_audit` VALUES ('92e0e327ae746786f542d46cc0cb9def', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:56:13');
+INSERT INTO `sys_log_audit` VALUES ('9317a9e0859cb007c90c953cd6262f55', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:57:55');
+INSERT INTO `sys_log_audit` VALUES ('938fe810efd58319cfb66a7ec65c6f6c', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:58:32');
+INSERT INTO `sys_log_audit` VALUES ('94477eedf1b698422c19a1cfa3a5038a', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:23:13');
+INSERT INTO `sys_log_audit` VALUES ('9484bd6ca13bf4795d076656db326cb8', 'yexb', '测试账号', '127.0.0.1', '查询设备类型列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:24:22');
+INSERT INTO `sys_log_audit` VALUES ('95cd53e638197e8222427c450efd77bb', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:47:14');
+INSERT INTO `sys_log_audit` VALUES ('9618d79910b6cb475683de526eccca59', 'admin', '管理员', '127.0.0.1', '分页查询用户列表', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:22:06');
+INSERT INTO `sys_log_audit` VALUES ('96bdbc3b09e378cfe5a8cf703bd643f5', 'yexb', '测试账号', '127.0.0.1', '查询报告模板详情', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:34:14');
+INSERT INTO `sys_log_audit` VALUES ('97145e237b66f3ea0bb6ba3ab8ebbe03', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '失败', '失败: 校验文件阶段:缺少台账信息汇总.xlsx', 0, 0, 0, '2026-07-13 11:00:37');
+INSERT INTO `sys_log_audit` VALUES ('97d47727d0783071abb625fffb287d15', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 11:31:05');
+INSERT INTO `sys_log_audit` VALUES ('9807899f9ce57a06b5b16869e60aeed5', 'yexb', '测试账号', '127.0.0.1', '获取所有字典数据缓存到前端', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:19:32');
+INSERT INTO `sys_log_audit` VALUES ('987b2592609eb54210368628a2aa9d05', 'admin', '管理员', '127.0.0.1', '修改用户', '更新', '成功', NULL, 1, 0, 0, '2026-07-14 14:22:17');
+INSERT INTO `sys_log_audit` VALUES ('98fcc4993420f042b52098310f628cc3', 'yexb', 'yexb', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:28:00');
+INSERT INTO `sys_log_audit` VALUES ('9917db3ac9d1a111595fc2872dcd02fb', 'yexb', '测试账号', '127.0.0.1', '查询委托单位详情', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:35:50');
+INSERT INTO `sys_log_audit` VALUES ('99f95ad3447750724e2f47e6a653170b', 'yexb', '测试账号', '127.0.0.1', '编辑报告模板', '更新', '成功', NULL, 0, 0, 0, '2026-07-14 14:35:47');
+INSERT INTO `sys_log_audit` VALUES ('9a27e65e260d9271822f10c4e51f2a9d', 'yexb', '测试账号', '127.0.0.1', '新增普测报告', '新增', '失败', '后台接口异常', 0, 0, 0, '2026-07-14 15:42:58');
+INSERT INTO `sys_log_audit` VALUES ('9a972c6cbf6d3b7b759cf5a77041e832', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:48:44');
+INSERT INTO `sys_log_audit` VALUES ('9b6ed7267abff6001ed2bb7eb667d00a', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:39:33');
+INSERT INTO `sys_log_audit` VALUES ('9bb75a40a6392a1c6da68f40054194e8', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:04:03');
+INSERT INTO `sys_log_audit` VALUES ('9c71e2db9c77a7a856bbff3fbc5196f0', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:31:47');
+INSERT INTO `sys_log_audit` VALUES ('9c8de5313d189016e7dfc3fb658533dc', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '', '失败', '后台接口异常', 1, 0, 0, '2026-07-14 14:44:47');
+INSERT INTO `sys_log_audit` VALUES ('9d54ea922dd4208cfcf61f8f4bc48ad5', 'admin', 'admin', '127.0.0.1', '登录', '认证', '失败', NULL, 1, 0, 0, '2026-07-10 13:22:51');
+INSERT INTO `sys_log_audit` VALUES ('9e25d8c69ab812e4ed323fd3beaecad1', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:04:51');
+INSERT INTO `sys_log_audit` VALUES ('9e92d9b6f825f7586543076adca47bf7', 'admin', '管理员', '127.0.0.1', '分页查询用户列表', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:26:57');
+INSERT INTO `sys_log_audit` VALUES ('9f2e11a17b9d0461a1c0268ee19ff107', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 15:35:19');
+INSERT INTO `sys_log_audit` VALUES ('9f3dd562568f5928af65639162c42ff4', 'admin', '管理员', '127.0.0.1', '获取所有字典数据缓存到前端', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:26:13');
+INSERT INTO `sys_log_audit` VALUES ('a057f18fd96ebbcfa8e3784084692ec3', 'yexb', '测试账号', '127.0.0.1', '下载报告模板文件', '查询', '失败', '失败: 模板文件不存在', 0, 0, 0, '2026-07-10 13:34:49');
+INSERT INTO `sys_log_audit` VALUES ('a16719681beb336921fb92f5d9071b71', 'admin', '管理员', '127.0.0.1', '批量删除用户', '删除', '成功', NULL, 1, 0, 0, '2026-07-13 21:57:34');
+INSERT INTO `sys_log_audit` VALUES ('a1ae51662238f2c9e299c737ca960dd6', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 11:31:13');
+INSERT INTO `sys_log_audit` VALUES ('a1b325cab7095b029901498e9861e187', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:11');
+INSERT INTO `sys_log_audit` VALUES ('a24058ea58b54ad55f5bae55b233dbcb', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:28:07');
+INSERT INTO `sys_log_audit` VALUES ('a25cafc727b8b0c2069fc9e5fb5ed9cb', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:42:24');
+INSERT INTO `sys_log_audit` VALUES ('a32953e646fb893c6a9cb45d825a3f17', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', '失败: 校准报告文件不存在', 0, 0, 0, '2026-07-14 13:28:18');
+INSERT INTO `sys_log_audit` VALUES ('a344d75542a8f71887e2be9c014033dc', 'admin', '管理员', '127.0.0.1', '分页查询角色', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 13:19:20');
+INSERT INTO `sys_log_audit` VALUES ('a374577078e1ed7fd3260950870f66f2', 'admin', '管理员', '127.0.0.1', '分页查询用户列表', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:41:31');
+INSERT INTO `sys_log_audit` VALUES ('a3f3b11de33ae35e1352f46a0dc52b49', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 11:31:12');
+INSERT INTO `sys_log_audit` VALUES ('a3f712f9a868367350004d63390964a2', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 15:01:09');
+INSERT INTO `sys_log_audit` VALUES ('a4204a09c10ca71fef3b4764125ee0cd', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 15:36:04');
+INSERT INTO `sys_log_audit` VALUES ('a42345bec5db72e010c9e4b212f8e489', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 15:21:18');
+INSERT INTO `sys_log_audit` VALUES ('a4f7b3e38853f0b586ab8734a5de7da6', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:29:35');
+INSERT INTO `sys_log_audit` VALUES ('a53401ff90059924dc5f6afddab193ae', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:59:06');
+INSERT INTO `sys_log_audit` VALUES ('a5636ce0767bb71268a515b7a1dad037', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:29:43');
+INSERT INTO `sys_log_audit` VALUES ('a57870d54954a2ecd170d916ca09627b', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:12:16');
+INSERT INTO `sys_log_audit` VALUES ('a67941a56c4daef43d412844daece742', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 08:57:17');
+INSERT INTO `sys_log_audit` VALUES ('a721321df10ec349103033a4846f37e3', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 14:23:28');
+INSERT INTO `sys_log_audit` VALUES ('a8779b693ffe80a56f4b60962bcddf8b', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:19:45');
+INSERT INTO `sys_log_audit` VALUES ('a885ca94288d82ebe136704c5f034607', 'admin', '管理员', '127.0.0.1', '分页查询用户列表', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:20:05');
+INSERT INTO `sys_log_audit` VALUES ('a8ad46c8dd362ded79a496d34fcd9516', 'admin', 'admin', '127.0.0.1', '登录', '认证', '成功', NULL, 1, 0, 0, '2026-07-13 13:19:14');
+INSERT INTO `sys_log_audit` VALUES ('a9a602568d8be5d54e3b800c4a69868c', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 14:02:42');
+INSERT INTO `sys_log_audit` VALUES ('a9e9a8aab5700a0eb4d4b1cdf2d62eea', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:25:10');
+INSERT INTO `sys_log_audit` VALUES ('aa3a85763fb48608b43a88e3601ccaa8', 'admin', 'admin', '127.0.0.1', '登录', '认证', '成功', NULL, 1, 0, 0, '2026-07-13 21:55:08');
+INSERT INTO `sys_log_audit` VALUES ('aa47898e017dffb07fd27c3665c5d91a', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:40:25');
+INSERT INTO `sys_log_audit` VALUES ('aa8698d0213ed9448dadcbd2f44aef33', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:23:20');
+INSERT INTO `sys_log_audit` VALUES ('ab05ae88147fbe65bf5be12218090a7c', 'admin', '管理员', '127.0.0.1', '分页查询用户列表', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:40:52');
+INSERT INTO `sys_log_audit` VALUES ('ab2dc28db40ee4967087453bda4df90e', 'admin', '管理员', '127.0.0.1', '查询所有角色作为下拉框', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:41:31');
+INSERT INTO `sys_log_audit` VALUES ('ab331d0b8615da5a313a6ff88b2c87eb', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 13:19:02');
+INSERT INTO `sys_log_audit` VALUES ('ab842095dfc64f2ef5699e98ed4fc449', 'admin', '管理员', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:26:36');
+INSERT INTO `sys_log_audit` VALUES ('ab877ac0e7e685db6fd4e87abc4516ed', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:36:09');
+INSERT INTO `sys_log_audit` VALUES ('abd24372fb8450cd96c7df8b344edf9e', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:23:47');
+INSERT INTO `sys_log_audit` VALUES ('ac02873cd4e1add397d665754fd59638', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', '失败: 校准报告文件不存在', 0, 0, 0, '2026-07-14 13:28:12');
+INSERT INTO `sys_log_audit` VALUES ('ac6107fb51509de6aacd571612a46889', 'yexb', '测试账号', '127.0.0.1', '查询普测报告详情', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:33:46');
+INSERT INTO `sys_log_audit` VALUES ('aca26a3afb9f64a068a38f34942b3e45', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 08:57:11');
+INSERT INTO `sys_log_audit` VALUES ('ad04d0d723112e65c42373151d494466', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:59:05');
+INSERT INTO `sys_log_audit` VALUES ('ad1ad4db8794b31cb153d9934911de1a', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 13:19:02');
+INSERT INTO `sys_log_audit` VALUES ('ad8600f45ecba44e997489b392996e7a', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:50:11');
+INSERT INTO `sys_log_audit` VALUES ('ae49cfb8722cd2734a282990b4c40355', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 08:56:59');
+INSERT INTO `sys_log_audit` VALUES ('af3778155497e9e4eae66a1e3d099c83', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:23:20');
+INSERT INTO `sys_log_audit` VALUES ('af83482b71b90cacbb06cf32529b61c2', 'yexb', '测试账号', '127.0.0.1', '获取所有字典数据缓存到前端', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:28:10');
+INSERT INTO `sys_log_audit` VALUES ('afd64d031961994c15360b0e38a38194', 'admin', '管理员', '127.0.0.1', '按照名称模糊查询菜单树', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:27:19');
+INSERT INTO `sys_log_audit` VALUES ('affdb775ff6fe2b3f151586e3f730185', 'admin', '管理员', '127.0.0.1', '获取角色id绑定的菜单(资源)', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:27:23');
+INSERT INTO `sys_log_audit` VALUES ('b01581eb24507062a73f5d7ea27895e1', 'admin', '管理员', '127.0.0.1', '分页查询用户列表', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:33:37');
+INSERT INTO `sys_log_audit` VALUES ('b0b31cfffbd0610875fd0316e13ef3ed', 'admin', '管理员', '127.0.0.1', '分页查询用户列表', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:55:11');
+INSERT INTO `sys_log_audit` VALUES ('b1c7492271a4fdd2995baba86ed271f8', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 15:22:36');
+INSERT INTO `sys_log_audit` VALUES ('b20d89b4a2812a35fa7c8b4ff6323e0e', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 08:56:59');
+INSERT INTO `sys_log_audit` VALUES ('b239b5cba960ce47106fb8c721cb6c23', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:14');
+INSERT INTO `sys_log_audit` VALUES ('b2739be83c631416fc7cd06a3d001329', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:58:22');
+INSERT INTO `sys_log_audit` VALUES ('b3c6653538c75005455c1fe5f4e1a7e9', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:54:56');
+INSERT INTO `sys_log_audit` VALUES ('b3cbc94c4aa37e9eac00ee63358fdce9', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 15:36:01');
+INSERT INTO `sys_log_audit` VALUES ('b4e1bc25cfb2c473d99c091119d50f1b', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:56:36');
+INSERT INTO `sys_log_audit` VALUES ('b53a55e2ab642483046ae8479408add7', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:58:37');
+INSERT INTO `sys_log_audit` VALUES ('b5ad04c0ba49fea9a16ba784a5dda6ef', 'yexb', '测试账号', '127.0.0.1', '新增普测报告', '新增', '失败', '失败: 基础信息维护阶段:检测设备sheet第2行设备状态不正确', 0, 0, 0, '2026-07-14 15:39:59');
+INSERT INTO `sys_log_audit` VALUES ('b664133a179241b1febafaf14b7d41ce', 'yexb', '测试账号', '127.0.0.1', '下载报告模板文件', '查询', '失败', '失败: 模板文件不存在', 0, 0, 0, '2026-07-10 13:34:07');
+INSERT INTO `sys_log_audit` VALUES ('b7ae4518f59e9524c455903fe82fed15', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:42:36');
+INSERT INTO `sys_log_audit` VALUES ('b7bf11491c9059737910cf573fd21613', 'admin', '管理员', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 14:20:19');
+INSERT INTO `sys_log_audit` VALUES ('b80b793b2d714e6c17a91ebf07975f30', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-13 11:00:37');
+INSERT INTO `sys_log_audit` VALUES ('b83588f29bd62919bcd79c3658864042', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:29:09');
+INSERT INTO `sys_log_audit` VALUES ('b88bb190ba84b3e5e38b6a88b8bd3b1a', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:28:10');
+INSERT INTO `sys_log_audit` VALUES ('b8bb7a55308626ebdbd15b4e2e56fe7e', 'yexb', 'yexb', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:59:05');
+INSERT INTO `sys_log_audit` VALUES ('b98a581611d474f8759edbb14ac346ef', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:34:03');
+INSERT INTO `sys_log_audit` VALUES ('b99a4a01a23f8f211c7abd0789eba52e', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '成功', NULL, 0, 0, 0, '2026-07-14 14:59:24');
+INSERT INTO `sys_log_audit` VALUES ('ba464f418dcd9afb3af73a9ef88ecdbf', 'admin', 'admin', '127.0.0.1', '登录', '认证', '成功', NULL, 1, 0, 0, '2026-07-10 13:23:53');
+INSERT INTO `sys_log_audit` VALUES ('baec082609c15a156e43f5f3195b9777', 'admin', '管理员', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:41:30');
+INSERT INTO `sys_log_audit` VALUES ('bb0c72928ff2e2d1fe5c49f997eab828', 'admin', '管理员', '127.0.0.1', '预览用户签名', '查询', '失败', '失败: 读取文件失败', 1, 0, 0, '2026-07-14 14:20:13');
+INSERT INTO `sys_log_audit` VALUES ('bb3ea4b3902ab5bcf2856ccfc9606976', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 14:02:42');
+INSERT INTO `sys_log_audit` VALUES ('bb43ff7ae8c0087b2c3eeed89d10fb22', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:37:58');
+INSERT INTO `sys_log_audit` VALUES ('bb511617fdf508875bbf012c270cbe43', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 21:54:47');
+INSERT INTO `sys_log_audit` VALUES ('bb521703a852019a195a7955e6b2f73e', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '成功', NULL, 0, 0, 0, '2026-07-14 14:40:52');
+INSERT INTO `sys_log_audit` VALUES ('bb5669ae48ac6df5c025a7e6ce0c1a7e', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:06:54');
+INSERT INTO `sys_log_audit` VALUES ('bbb33261b22ab3baad4015a0e8a06d93', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:19:55');
+INSERT INTO `sys_log_audit` VALUES ('bbb988a76371e9e572ecdab7ace6caf8', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', '失败: 校准报告文件不存在', 0, 0, 0, '2026-07-10 13:37:10');
+INSERT INTO `sys_log_audit` VALUES ('bc92eeb87bc3a07855dbfdb2a2173a28', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:24:29');
+INSERT INTO `sys_log_audit` VALUES ('bcfa95755640e1ab1d0f686f51ef569a', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:30:18');
+INSERT INTO `sys_log_audit` VALUES ('bd317a748ed8bf17ea7f020b1442e2d3', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:39:38');
+INSERT INTO `sys_log_audit` VALUES ('bdfb40f6e1c682d9a73944f2d1d3e87b', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:28:38');
+INSERT INTO `sys_log_audit` VALUES ('c0759d810e9dd17ed5936d97d1ceff3a', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:31:08');
+INSERT INTO `sys_log_audit` VALUES ('c0879f7d17c69c699072021733ebe849', 'admin', '管理员', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 13:19:15');
+INSERT INTO `sys_log_audit` VALUES ('c197d5aed15d72763d3e49cde0c37a00', 'admin', '管理员', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:26:37');
+INSERT INTO `sys_log_audit` VALUES ('c1a3555e1d32d6577b2d71a0c3917514', 'yexb', 'yexb', '127.0.0.1', '登录', '认证', '失败', NULL, 1, 0, 0, '2026-07-13 10:58:01');
+INSERT INTO `sys_log_audit` VALUES ('c2403262b06bad87bfe4306c8c7ad9f5', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:28:38');
+INSERT INTO `sys_log_audit` VALUES ('c2440db474c176010b124a7063c72683', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:41:20');
+INSERT INTO `sys_log_audit` VALUES ('c251f03a060edac080cfc2a5e9e70764', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 14:01:29');
+INSERT INTO `sys_log_audit` VALUES ('c2680b3164a3c8fdd0e544be9817dc2f', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:22:08');
+INSERT INTO `sys_log_audit` VALUES ('c3c4b991dc41a7e2129113ee82b0ac89', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:39:07');
+INSERT INTO `sys_log_audit` VALUES ('c47131557132b9db70e4c02c80de23f4', 'yexb', '测试账号', '127.0.0.1', '删除报告模板', '删除', '成功', NULL, 0, 0, 0, '2026-07-10 13:35:09');
+INSERT INTO `sys_log_audit` VALUES ('c49d872349bb4c7763308831327fea88', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:04:43');
+INSERT INTO `sys_log_audit` VALUES ('c528753cb82b03b502c376d73cb5191d', 'admin', '管理员', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 21:32:06');
+INSERT INTO `sys_log_audit` VALUES ('c5421b4315600254093c2324f02bf5dc', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 08:57:05');
+INSERT INTO `sys_log_audit` VALUES ('c58891efc360dc460b7707c68b2860dc', 'yexb', '测试账号', '127.0.0.1', '注销登录', '注销', '成功', NULL, 1, 2, 0, '2026-07-13 11:32:44');
+INSERT INTO `sys_log_audit` VALUES ('c58fc6d6abafbf31ffaa1ec24ac8a088', 'yexb', '测试账号', '127.0.0.1', '下载报告模板文件', '查询', '失败', '失败: 模板文件不存在', 0, 0, 0, '2026-07-10 13:34:24');
+INSERT INTO `sys_log_audit` VALUES ('c5d0ed9853c4b71d7b110b0ca973d5af', 'admin', '管理员', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 13:19:15');
+INSERT INTO `sys_log_audit` VALUES ('c73894ec9873e416c5b16984312267db', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 13:19:03');
+INSERT INTO `sys_log_audit` VALUES ('c85670590a3815d5a5d646dd72d8e2a9', 'admin', '管理员', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 14:20:13');
+INSERT INTO `sys_log_audit` VALUES ('c8cf97c94325494b8dd17e6b5790bde4', 'yexb', '测试账号', '127.0.0.1', '查询备份任务', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 13:18:42');
+INSERT INTO `sys_log_audit` VALUES ('c9117a55021eb1c13a42fdfa6f672602', 'admin', '管理员', '127.0.0.1', '按照名称模糊查询菜单树', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:26:44');
+INSERT INTO `sys_log_audit` VALUES ('c91d13dc873ed6291b09b7b1664445bb', 'yexb', 'yexb', '127.0.0.1', '登录', '认证', '成功', NULL, 1, 0, 0, '2026-07-13 11:31:05');
+INSERT INTO `sys_log_audit` VALUES ('c93fc5ca73e3fb9eacf7d5a81664a69f', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:14');
+INSERT INTO `sys_log_audit` VALUES ('ca6784b0fa0eea61911c48d6f8ff92a1', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:42:42');
+INSERT INTO `sys_log_audit` VALUES ('ca6d1f73dc489a3370181939f49ebd94', 'admin', '管理员', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 21:41:30');
+INSERT INTO `sys_log_audit` VALUES ('ca82ecc9743ba5a9c25f2913724f3dad', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:29:21');
+INSERT INTO `sys_log_audit` VALUES ('ca882e20900491f1c75f54361497494e', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:29:45');
+INSERT INTO `sys_log_audit` VALUES ('ca97b18725c49f87d3961b1c23e06132', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-13 10:59:36');
+INSERT INTO `sys_log_audit` VALUES ('caf50f964756b14f87440546807227e9', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:04:03');
+INSERT INTO `sys_log_audit` VALUES ('cb5132f31a5a0cf5fd16cc297dcb0031', 'admin', 'admin', '127.0.0.1', '登录', '认证', '失败', NULL, 1, 0, 0, '2026-07-10 13:23:31');
+INSERT INTO `sys_log_audit` VALUES ('cbafdd555f4045154574886280bc56f4', 'yexb', 'yexb', '127.0.0.1', '登录', '认证', '成功', NULL, 1, 0, 0, '2026-07-14 14:59:05');
+INSERT INTO `sys_log_audit` VALUES ('ccbb1b13238089dd8c16c3010c71c53d', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:47:13');
+INSERT INTO `sys_log_audit` VALUES ('ccbf134a4b02f302610be1e22869cc37', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 15:38:55');
+INSERT INTO `sys_log_audit` VALUES ('cd1bef985201aa47b6272d9c795e74b8', 'yexb', '测试账号', '127.0.0.1', '新增普测报告', '新增', '失败', '失败: 受资数据格式不正确', 0, 0, 0, '2026-07-14 15:23:13');
+INSERT INTO `sys_log_audit` VALUES ('cd826c23b028bf59becb75f35c65063f', 'admin', 'admin', '127.0.0.1', '登录', '认证', '成功', NULL, 1, 0, 0, '2026-07-10 13:26:12');
+INSERT INTO `sys_log_audit` VALUES ('cdc20e84d4ef6a3bcd3fa3df314e7c17', 'yxb', 'yxb', '127.0.0.1', '登录', '认证', '失败', NULL, 1, 0, 0, '2026-07-13 08:55:31');
+INSERT INTO `sys_log_audit` VALUES ('cdd981d817959fe8354401efbd938612', 'admin', '管理员', '127.0.0.1', 'unknown operate', '', '失败', '后台接口异常', 1, 0, 0, '2026-07-13 21:43:48');
+INSERT INTO `sys_log_audit` VALUES ('ce0950bcf93eacbf7f4a0c6e8fe2ba41', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:39:07');
+INSERT INTO `sys_log_audit` VALUES ('ce836f69084fb456b4e7a0387cd6267c', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:40:46');
+INSERT INTO `sys_log_audit` VALUES ('ceb2db7dce41e63785b0ccf569694b4c', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:33:37');
+INSERT INTO `sys_log_audit` VALUES ('ced34d9c166cf31572de89ae021e7b4b', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:23:10');
+INSERT INTO `sys_log_audit` VALUES ('cf13e8db6567838ac8e2454221d0d1e8', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:28:45');
+INSERT INTO `sys_log_audit` VALUES ('cf2060151171b99a33bbce5cf7fc67c2', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:05:49');
+INSERT INTO `sys_log_audit` VALUES ('cf8dbf82574cbd5932459a81586b1e9a', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:05:39');
+INSERT INTO `sys_log_audit` VALUES ('d0957acc2c505e32b802811ef00d3193', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:34:00');
+INSERT INTO `sys_log_audit` VALUES ('d130aff1e3306ddd7f3bb18cd47b71de', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 15:39:59');
+INSERT INTO `sys_log_audit` VALUES ('d145f46018b56bd610b1253ba5a3f1f5', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:47:21');
+INSERT INTO `sys_log_audit` VALUES ('d24936506374ae8ed153a448351c438c', 'yexb', 'yexb', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 13:19:12');
+INSERT INTO `sys_log_audit` VALUES ('d24fc2df4c818b7e10d386e772b11c86', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:29:59');
+INSERT INTO `sys_log_audit` VALUES ('d275e6719b230a0fa1c507fd66f28fa5', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:23:45');
+INSERT INTO `sys_log_audit` VALUES ('d28b47c6a16d1047c506d7bc8978b4dd', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:56:38');
+INSERT INTO `sys_log_audit` VALUES ('d2c01f6b6b436be7a078157c1e832bb2', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:24:49');
+INSERT INTO `sys_log_audit` VALUES ('d3bcb327ee09098be571ac701ab1fa3f', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:42:07');
+INSERT INTO `sys_log_audit` VALUES ('d4657c3109a29cd7da5cf0199acf0561', 'admin', '管理员', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 21:17:32');
+INSERT INTO `sys_log_audit` VALUES ('d54d172c30216d12d01463a4c94a9860', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:48:44');
+INSERT INTO `sys_log_audit` VALUES ('d5da57de8cb9be3d5577e418d9b21db0', 'admin', '管理员', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:31:16');
+INSERT INTO `sys_log_audit` VALUES ('d678ac888f4ef19a0ebd5a4d3e828af3', 'admin', '管理员', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:24:01');
+INSERT INTO `sys_log_audit` VALUES ('d6f613a1ad5cf69edaa5df41407611bb', 'yexb', '测试账号', '127.0.0.1', '查询分组报告结果', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:33:46');
+INSERT INTO `sys_log_audit` VALUES ('d779e090e2e76b19cdf32f9d8fe30ff0', 'yexb', '测试账号', '127.0.0.1', '删除报告模板', '删除', '成功', NULL, 0, 0, 0, '2026-07-14 14:23:42');
+INSERT INTO `sys_log_audit` VALUES ('d7ba6825d4886142e4116ae64a2c0cc0', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:23:41');
+INSERT INTO `sys_log_audit` VALUES ('d80d15cc430f42ccff1f4417edf87e67', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-10 13:36:52');
+INSERT INTO `sys_log_audit` VALUES ('d85691dd350af54706a555dd14202832', 'yexb', '测试账号', '127.0.0.1', '新增报告模板', '新增', '成功', NULL, 0, 0, 0, '2026-07-14 14:31:08');
+INSERT INTO `sys_log_audit` VALUES ('d87764e4b97272930c7186282df16e58', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:28:41');
+INSERT INTO `sys_log_audit` VALUES ('d9253dd9c10e6c88a9580b9e49281f1c', 'yexb', '测试账号', '127.0.0.1', '新增普测报告', '新增', '失败', '失败: 基础信息维护阶段:检测设备sheet第2行设备状态不正确', 0, 0, 0, '2026-07-14 15:38:09');
+INSERT INTO `sys_log_audit` VALUES ('da3c3f665ca08823483ff75aeeb40d15', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:23:49');
+INSERT INTO `sys_log_audit` VALUES ('da6e36c3f74a044a7ab295990e4973f3', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:07:13');
+INSERT INTO `sys_log_audit` VALUES ('da8c904a48714bd5af975c3443572431', 'admin', '管理员', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:33:08');
+INSERT INTO `sys_log_audit` VALUES ('dab7d874ea30f801b59c89bfe7320a33', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:48:56');
+INSERT INTO `sys_log_audit` VALUES ('daff59bec007efdf1377b45d2c29299c', 'admin', '管理员', '127.0.0.1', '查询所有角色作为下拉框', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:41:35');
+INSERT INTO `sys_log_audit` VALUES ('db08845463761263952d1adf07f44743', 'admin', '管理员', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:26:21');
+INSERT INTO `sys_log_audit` VALUES ('db8cd10d598f51a510b72755c1e9342d', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:29:21');
+INSERT INTO `sys_log_audit` VALUES ('dbdab33a49aa3a24b9651dc0afda5612', 'yexb', 'yexb', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:28:09');
+INSERT INTO `sys_log_audit` VALUES ('dc9a356d4d869a1c2f50953bb1ae8708', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:00:24');
+INSERT INTO `sys_log_audit` VALUES ('dc9f70212add64e666abd370a591b0c8', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:35:07');
+INSERT INTO `sys_log_audit` VALUES ('dd65550c9f5a2757c929f29ab914d330', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:41:51');
+INSERT INTO `sys_log_audit` VALUES ('de40dd779a36328b390227e62632c1a5', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:24:30');
+INSERT INTO `sys_log_audit` VALUES ('df177a7e3b9cd96ea10bbc5c41cd337a', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:31:42');
+INSERT INTO `sys_log_audit` VALUES ('dfb626a3e21f341354488496e53a546a', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:09');
+INSERT INTO `sys_log_audit` VALUES ('dfdea4f3ef8a872e835bebbcc0b5eef2', 'admin', '管理员', '127.0.0.1', '分页查询用户列表', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:33:09');
+INSERT INTO `sys_log_audit` VALUES ('dffb82e890c403244e866b6e1e6dd030', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 15:22:36');
+INSERT INTO `sys_log_audit` VALUES ('e02a4a31388c104ee48300d8633dca95', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 08:57:06');
+INSERT INTO `sys_log_audit` VALUES ('e09f45c02989f729d9a2f53335d6e8ca', 'admin', '管理员', '127.0.0.1', '注销登录', '注销', '成功', NULL, 1, 2, 0, '2026-07-14 14:23:01');
+INSERT INTO `sys_log_audit` VALUES ('e15170136d87bec70ede8465e8369d23', 'admin', '管理员', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:23:53');
+INSERT INTO `sys_log_audit` VALUES ('e1fd21acb12a399b0eb657c01d9325e4', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:23:29');
+INSERT INTO `sys_log_audit` VALUES ('e20c403adecbfb2ac214140066de1111', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 13:24:54');
+INSERT INTO `sys_log_audit` VALUES ('e2478dac79dbae2c1877c6b1ba947242', 'admin', '管理员', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:26:14');
+INSERT INTO `sys_log_audit` VALUES ('e26449f99897569a42742024e2b6999e', 'admin', '管理员', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:24:01');
+INSERT INTO `sys_log_audit` VALUES ('e28f2a7173d880f439458ab6cabe2a2a', 'yexb', '测试账号', '127.0.0.1', '获取所有字典数据缓存到前端', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 08:56:59');
+INSERT INTO `sys_log_audit` VALUES ('e2c31685d6783aaec4a4710d493918ca', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:33:57');
+INSERT INTO `sys_log_audit` VALUES ('e378ac75b85eb90aab783512127b47a7', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:57:59');
+INSERT INTO `sys_log_audit` VALUES ('e3e103c71316dc3076762e8796d83e92', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:38:16');
+INSERT INTO `sys_log_audit` VALUES ('e4ade5bb394f74a8cf10b14df2de1b45', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:38:44');
+INSERT INTO `sys_log_audit` VALUES ('e58989765db7a3542ed71ac82961efc4', 'yexb', '测试账号', '127.0.0.1', '新增普测报告', '新增', '失败', '失败: 受资数据格式不正确', 0, 0, 0, '2026-07-14 15:00:25');
+INSERT INTO `sys_log_audit` VALUES ('e5b3a4b1279bda3332510a82102fbffe', 'admin', '管理员', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:26:36');
+INSERT INTO `sys_log_audit` VALUES ('e633e026311696a14fc9cbbc550ae16a', 'yexb', 'yexb', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 08:56:58');
+INSERT INTO `sys_log_audit` VALUES ('e680f82f225f401a6945352596499797', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:58:26');
+INSERT INTO `sys_log_audit` VALUES ('e698279a392c1d790ae641490774c756', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:58:37');
+INSERT INTO `sys_log_audit` VALUES ('e729dfd6b9854bdcd46f79cf91a97168', 'yexb', '测试账号', '127.0.0.1', '获取所有字典数据缓存到前端', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:23:09');
+INSERT INTO `sys_log_audit` VALUES ('e76fafbb28e6e104d4a8ef6ebf64474f', 'yexb', '测试账号', '127.0.0.1', '提交普测报告审核', '更新', '成功', NULL, 0, 0, 0, '2026-07-10 13:42:42');
+INSERT INTO `sys_log_audit` VALUES ('e84a4c59b42f0c7acfd058837c3a6c1d', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:20:14');
+INSERT INTO `sys_log_audit` VALUES ('e8c4e1aef30722baaf49e1de218b5713', 'admin', '管理员', '127.0.0.1', '按照名称模糊查询菜单树', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 13:19:20');
+INSERT INTO `sys_log_audit` VALUES ('e90a8e9af2a48d325c53d78ac096bc7b', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 13:19:46');
+INSERT INTO `sys_log_audit` VALUES ('e951a928da8fc9ea6eb0ac0f314f0a93', 'admin', '管理员', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:20:02');
+INSERT INTO `sys_log_audit` VALUES ('e97be08d2e2be9a86c6cc31a92c2f446', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:38:42');
+INSERT INTO `sys_log_audit` VALUES ('e9920dccc122068cc4474401448599c0', 'yexb', '测试账号', '127.0.0.1', '注销登录', '注销', '成功', NULL, 1, 2, 0, '2026-07-14 14:19:54');
+INSERT INTO `sys_log_audit` VALUES ('ea3e648222d3f34449679354fd61fec7', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 13:19:21');
+INSERT INTO `sys_log_audit` VALUES ('ea9b8e36a1d6d07120ce316f84b3cb26', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '成功', NULL, 0, 0, 0, '2026-07-14 14:41:49');
+INSERT INTO `sys_log_audit` VALUES ('eb36ceaa0c9a0544315eb62ec8f8ed31', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:38:44');
+INSERT INTO `sys_log_audit` VALUES ('eb96bcfd275ecc2ad93a9f9f7e818072', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '失败', '失败: 校验文件阶段:缺少台账信息汇总.xlsx', 0, 0, 0, '2026-07-13 10:59:30');
+INSERT INTO `sys_log_audit` VALUES ('ebeb1c9025269d35fe78622a2fd516c2', 'admin', '管理员', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 14:20:42');
+INSERT INTO `sys_log_audit` VALUES ('ec5927043c8baf52ef3ef73f569747b0', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 15:20:59');
+INSERT INTO `sys_log_audit` VALUES ('ec5e5f3e795b35c5ca23a3d5b127cc78', 'yexb', '测试账号', '127.0.0.1', '查询检测设备详情', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:37:14');
+INSERT INTO `sys_log_audit` VALUES ('ec61841761f1ef7f05daff1c2bf93446', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '失败', '失败: 校验文件阶段:缺少台账信息汇总.xlsx', 0, 0, 0, '2026-07-13 11:00:17');
+INSERT INTO `sys_log_audit` VALUES ('ed4b6a5c650d04e7d57402a2bd925125', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 09:23:45');
+INSERT INTO `sys_log_audit` VALUES ('eda683011a6edd61df20143cb46ee734', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-14 13:28:18');
+INSERT INTO `sys_log_audit` VALUES ('edc5c046ab0c6bc7fbe827e48c76af5b', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:57:57');
+INSERT INTO `sys_log_audit` VALUES ('edcda558e140e76e60b2231dd9a731b9', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:35:11');
+INSERT INTO `sys_log_audit` VALUES ('ee2dda2aa6ee054e75086a66361ab239', 'yexb', '测试账号', '127.0.0.1', '查询普测报告列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 08:57:13');
+INSERT INTO `sys_log_audit` VALUES ('ee54311636f070ba609d157d73e5cf7d', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 13:20:04');
+INSERT INTO `sys_log_audit` VALUES ('ee73a4d16cb2d932bdb3238d56151a49', 'yexb', '测试账号', '127.0.0.1', '查询数据库连接配置', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 13:19:04');
+INSERT INTO `sys_log_audit` VALUES ('ee74af2e845dc3248862a89b4934e3ab', 'yexb', '测试账号', '127.0.0.1', '新增普测报告', '新增', '失败', '失败: 基础信息维护阶段:检测设备sheet第2行设备状态不正确', 0, 0, 0, '2026-07-14 15:39:18');
+INSERT INTO `sys_log_audit` VALUES ('ee9cb3bb71227fa175b6b32554273111', 'admin', '管理员', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 21:31:16');
+INSERT INTO `sys_log_audit` VALUES ('eee264ed2c888c59f8ef4df42c6212b8', 'yexb', '测试账号', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:28:11');
+INSERT INTO `sys_log_audit` VALUES ('eff1057f210e0c612d47d0edf208c7db', 'admin', 'admin', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:17:31');
+INSERT INTO `sys_log_audit` VALUES ('f00520feb3b12c00f94f225cf5232698', 'admin', '管理员', '127.0.0.1', '分页查询用户列表', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:22:55');
+INSERT INTO `sys_log_audit` VALUES ('f036dc34011d59376a5c0572c60b7567', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-10 13:34:45');
+INSERT INTO `sys_log_audit` VALUES ('f0bf2c5432af573025f513367d0d8ffe', 'yexb', 'yexb', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-14 14:23:09');
+INSERT INTO `sys_log_audit` VALUES ('f1061e1b5e4792664eb2b98d908ef9c4', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', '失败: 校准报告文件不存在', 0, 0, 0, '2026-07-10 13:36:52');
+INSERT INTO `sys_log_audit` VALUES ('f12e878a73238d5b90788079c22e8bf3', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:59:17');
+INSERT INTO `sys_log_audit` VALUES ('f19a5ec1c1c651244cd3b3c5a91ec350', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:35:47');
+INSERT INTO `sys_log_audit` VALUES ('f1b9f6374cd08c772a9ae712f8ade8d5', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-13 10:59:30');
+INSERT INTO `sys_log_audit` VALUES ('f2b415db9bbc2dfd63762cbf295f32ea', 'admin', 'admin', '127.0.0.1', '获取RSA公钥', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:23:31');
+INSERT INTO `sys_log_audit` VALUES ('f3eb27ff273b327650e4f817ae86a882', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:28:11');
+INSERT INTO `sys_log_audit` VALUES ('f43c3d8700b7e5d468c977ff78822f9b', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 08:57:16');
+INSERT INTO `sys_log_audit` VALUES ('f47d8c1d9b1cbeee54822b4ec1027b44', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:58:39');
+INSERT INTO `sys_log_audit` VALUES ('f4d9d8e11ff017600a623d8184071c00', 'admin', '管理员', '127.0.0.1', '获取菜单', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 21:55:09');
+INSERT INTO `sys_log_audit` VALUES ('f4f12cb6f401c8c1d9f9b50d516f0751', 'yexb', '测试账号', '127.0.0.1', '编辑报告模板', '更新', '成功', NULL, 0, 0, 0, '2026-07-14 14:33:09');
+INSERT INTO `sys_log_audit` VALUES ('f5421d34d8eff715b914173bc9e3cb5d', 'yexb', '测试账号', '127.0.0.1', '查询审批日志分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:36:43');
+INSERT INTO `sys_log_audit` VALUES ('f551408050ff7428bb7c7391c49174e3', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 13:18:10');
+INSERT INTO `sys_log_audit` VALUES ('f63ed8a16f22bc1ef7a3803052e51681', 'yexb', '测试账号', '127.0.0.1', '查询检测设备列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:33:58');
+INSERT INTO `sys_log_audit` VALUES ('f6a678473ae7965196b2628ee6597913', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '', '失败', '请求中参数的媒体方式不支持', 1, 0, 0, '2026-07-13 10:06:11');
+INSERT INTO `sys_log_audit` VALUES ('f6c7fc435d19feac122a7a728e225abc', 'yexb', '测试账号', '127.0.0.1', 'unknown operate', '查询', '失败', NULL, 0, 0, 0, '2026-07-10 13:34:49');
+INSERT INTO `sys_log_audit` VALUES ('f6fbaad851ef7168f13290e0e714af08', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:58:05');
+INSERT INTO `sys_log_audit` VALUES ('f70276bb59134f9d0941102bdd03b402', 'yexb', '测试账号', '127.0.0.1', '提交普测报告审核', '更新', '失败', '失败: 仅编制或退回状态的普测报告允许提交审核', 0, 0, 0, '2026-07-10 13:47:44');
+INSERT INTO `sys_log_audit` VALUES ('f7367385ed15ee4e88fa856d7fba74ed', 'yexb', '测试账号', '127.0.0.1', '查询报告模板详情', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:40:57');
+INSERT INTO `sys_log_audit` VALUES ('f7796271aad01e0762ffd9b53a470428', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 14:01:29');
+INSERT INTO `sys_log_audit` VALUES ('f7e06f9cd2a6bf610b8423830c79a36d', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 15:34:31');
+INSERT INTO `sys_log_audit` VALUES ('f7ea78705663122a4fca74736e7721b5', 'admin', 'admin', '127.0.0.1', '登录', '认证', '成功', NULL, 1, 0, 0, '2026-07-13 08:56:06');
+INSERT INTO `sys_log_audit` VALUES ('f7ed42527f579cae213d036a64c08c9d', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:30:01');
+INSERT INTO `sys_log_audit` VALUES ('f7ff1b141ea922687ab5758d49d7b5cd', 'admin', 'admin', '127.0.0.1', '登录', '认证', '成功', NULL, 1, 0, 0, '2026-07-13 21:17:32');
+INSERT INTO `sys_log_audit` VALUES ('f847972aa076b7d74d6e3eb0a0106faf', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:29:39');
+INSERT INTO `sys_log_audit` VALUES ('f8a7d1647d4b9aa5683246075e2d48dd', 'yexb', '测试账号', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 13:18:09');
+INSERT INTO `sys_log_audit` VALUES ('f8c312909fa22c751c8e3c617b8e88d0', 'yexb', '测试账号', '127.0.0.1', '校验台账汇总与监测点附件', '更新', '成功', NULL, 0, 0, 0, '2026-07-14 14:38:49');
+INSERT INTO `sys_log_audit` VALUES ('f8ffa12978afb5d0692645d758c7c4d0', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 10:58:39');
+INSERT INTO `sys_log_audit` VALUES ('f9369f639ec41f9299bb57d28220da7b', 'yexb', '测试账号', '127.0.0.1', '查询报告模板详情', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 14:23:25');
+INSERT INTO `sys_log_audit` VALUES ('fb32a0d3cfd19f718fa8ad5bef44b229', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:29:09');
+INSERT INTO `sys_log_audit` VALUES ('fbf91c78bd6bab0820c5bb7646c31a01', 'yexb', '测试账号', '127.0.0.1', '查询待审报告分页', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:36:43');
+INSERT INTO `sys_log_audit` VALUES ('fbff751f42ae79893d47b33c0d57c168', 'admin', '管理员', '127.0.0.1', '获取许可信息', '查询', '成功', NULL, 0, 0, 0, '2026-07-10 13:26:13');
+INSERT INTO `sys_log_audit` VALUES ('fd798451e237933fcff15e5de792fe69', 'yexb', '测试账号', '127.0.0.1', '查询报告模板列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 11:16:28');
+INSERT INTO `sys_log_audit` VALUES ('fdc59cd6398c3bdc01472b91e152acc8', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-14 13:34:39');
+INSERT INTO `sys_log_audit` VALUES ('feb15726fccd7442d02ca718f5ea52ed', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-13 10:23:33');
+INSERT INTO `sys_log_audit` VALUES ('ff6692ae149856f4f78634c86ba73426', 'yexb', '测试账号', '127.0.0.1', '查询委托单位列表', '查询', '成功', NULL, 0, 0, 0, '2026-07-13 11:05:10');
+INSERT INTO `sys_log_audit` VALUES ('ffd0884641b7181655d8d611a5fd96ab', 'yexb', '测试账号', '127.0.0.1', '获取按钮', '查询', '成功', NULL, 1, 0, 0, '2026-07-10 13:28:21');
-- ----------------------------
-- Table structure for sys_log_run
@@ -6164,10 +6914,10 @@ CREATE TABLE `sys_reg_res` (
`Code` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '注册码',
`License_Key` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '密钥',
`Expire_Date` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '到期时间',
- `Wave_Record` int(11) NULL DEFAULT NULL COMMENT '录波数据有效组数',
- `Real_Time` int(11) NULL DEFAULT NULL COMMENT '实时数据有效组数',
- `Statistics` int(11) NULL DEFAULT NULL COMMENT '统计数据有效组数',
- `Flicker` int(11) NULL DEFAULT NULL COMMENT '短闪数据有效组数',
+ `Wave_Record` int NULL DEFAULT NULL COMMENT '录波数据有效组数',
+ `Real_Time` int NULL DEFAULT NULL COMMENT '实时数据有效组数',
+ `Statistics` int NULL DEFAULT NULL COMMENT '统计数据有效组数',
+ `Flicker` int NULL DEFAULT NULL COMMENT '短闪数据有效组数',
`State` tinyint(1) NOT NULL COMMENT '状态:0-删除 1-正常',
`Create_By` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建用户',
`Create_Time` datetime NULL DEFAULT NULL COMMENT '创建时间',
@@ -6188,15 +6938,15 @@ INSERT INTO `sys_reg_res` VALUES ('a303b2224845fcc6f60098b8ca23dcb7', 'a303b2224
-- ----------------------------
DROP TABLE IF EXISTS `sys_role`;
CREATE TABLE `sys_role` (
- `Id` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色表Id',
- `Name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色名称',
- `Code` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色代码',
- `Remark` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色描述',
+ `Id` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '角色表Id',
+ `Name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '角色名称',
+ `Code` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '角色代码',
+ `Remark` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '角色描述',
`State` tinyint(1) NULL DEFAULT NULL COMMENT '角色状态0-删除;1-正常;默认正常',
`Type` tinyint(1) NULL DEFAULT NULL COMMENT '角色类型 0:超级管理员;1:管理员;2:普通用户;',
- `Create_By` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `Create_By` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
`Create_Time` datetime NULL DEFAULT NULL,
- `Update_By` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `Update_By` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
`Update_Time` datetime NULL DEFAULT NULL,
PRIMARY KEY (`Id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '角色表' ROW_FORMAT = DYNAMIC;
@@ -6335,15 +7085,15 @@ DROP TABLE IF EXISTS `sys_test_config`;
CREATE TABLE `sys_test_config` (
`Id` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '系统配置表Id',
`Auto_Generate` tinyint(1) NOT NULL COMMENT '检测报告是否自动生成: 0 否;1 是',
- `Max_Time` tinyint(4) NOT NULL DEFAULT 3 COMMENT '最大复检次数,默认3次',
+ `Max_Time` tinyint NOT NULL DEFAULT 3 COMMENT '最大复检次数,默认3次',
`Scene` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '业务场景',
`State` tinyint(1) NOT NULL COMMENT '状态:0-删除 1-正常',
`Create_By` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建用户',
`Create_Time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`Update_By` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新用户',
`Update_Time` datetime NULL DEFAULT NULL COMMENT '更新时间',
- `Scale` tinyint(3) UNSIGNED NULL DEFAULT 4 COMMENT '小数位数',
- `Coefficient` tinyint(3) UNSIGNED NULL DEFAULT 0 COMMENT '比对监测后,当电压、电流不符合时,是否对标准设备进行系数校准',
+ `Scale` tinyint UNSIGNED NULL DEFAULT 4 COMMENT '小数位数',
+ `Coefficient` tinyint UNSIGNED NULL DEFAULT 0 COMMENT '比对监测后,当电压、电流不符合时,是否对标准设备进行系数校准',
PRIMARY KEY (`Id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '系统配置表' ROW_FORMAT = DYNAMIC;
@@ -6365,7 +7115,7 @@ CREATE TABLE `sys_user` (
`Phone` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '电话号码',
`Email` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '邮箱',
`Login_Time` datetime NULL DEFAULT NULL COMMENT '最后一次登录时间',
- `Login_Error_Times` tinyint(4) NOT NULL COMMENT '密码错误次数',
+ `Login_Error_Times` tinyint NOT NULL COMMENT '密码错误次数',
`Lock_Time` datetime NULL DEFAULT NULL COMMENT '用户密码错误锁定时间',
`State` tinyint(1) NOT NULL COMMENT '0-删除;1-正常;2-锁定;3-待审核;4-休眠;5-密码过期',
`Create_By` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建用户',
@@ -6379,8 +7129,9 @@ CREATE TABLE `sys_user` (
-- Records of sys_user
-- ----------------------------
INSERT INTO `sys_user` VALUES ('28929fa3d618e9b86fa617049a6425a3', 'usertest', 'usertest', '70bYrk4+uaUFcsS9eptCBA==', NULL, '', '', '2025-09-10 15:40:57', 0, NULL, 1, 'f8516cc81d964cd8b4b771a3b3985cd4', '2025-08-19 15:13:26', 'f8516cc81d964cd8b4b771a3b3985cd4', '2025-08-19 15:13:26');
-INSERT INTO `sys_user` VALUES ('7015afa698c5e7714813d0b1355c0f3a', '管理员', 'admin', '7XBviIe/uW9OMkiQoRewKw==', NULL, '', '', '2026-05-15 21:29:06', 0, NULL, 1, 'f8516cc81d964cd8b4b771a3b3985cd4', '2025-05-29 10:38:14', 'f8516cc81d964cd8b4b771a3b3985cd4', '2025-05-29 10:38:14');
-INSERT INTO `sys_user` VALUES ('ce2bd33b7f7e45c7739f4b017a7abb29', '测试账号', 'yexb', '4k8tZiCfl1QbGvAWnTyFhg==', NULL, '', '', '2026-07-07 07:59:46', 0, NULL, 1, 'f8516cc81d964cd8b4b771a3b3985cd4', '2026-05-06 08:50:31', 'f8516cc81d964cd8b4b771a3b3985cd4', '2026-05-06 08:50:31');
+INSERT INTO `sys_user` VALUES ('2db43d757d374793860ff624dd673afb', 'test', 'test', 'qRP+pQnKpdPEn+v+YTfOoQ==', NULL, NULL, NULL, '2026-07-13 21:57:17', 0, NULL, 0, '7015afa698c5e7714813d0b1355c0f3a', '2026-07-13 21:57:17', '7015afa698c5e7714813d0b1355c0f3a', '2026-07-13 21:57:17');
+INSERT INTO `sys_user` VALUES ('7015afa698c5e7714813d0b1355c0f3a', '管理员', 'admin', '7XBviIe/uW9OMkiQoRewKw==', NULL, '', '', '2026-07-14 14:20:01', 0, NULL, 1, 'f8516cc81d964cd8b4b771a3b3985cd4', '2025-05-29 10:38:14', 'f8516cc81d964cd8b4b771a3b3985cd4', '2025-05-29 10:38:14');
+INSERT INTO `sys_user` VALUES ('ce2bd33b7f7e45c7739f4b017a7abb29', '测试账号', 'yexb', '4k8tZiCfl1QbGvAWnTyFhg==', NULL, '', '', '2026-07-14 15:21:16', 0, NULL, 1, 'f8516cc81d964cd8b4b771a3b3985cd4', '2026-05-06 08:50:31', '7015afa698c5e7714813d0b1355c0f3a', '2026-07-14 14:22:54');
INSERT INTO `sys_user` VALUES ('f8181891f67bf9688df4964c502377d4', '普通用户A', 'user', 'PfSDcrDxpBPYlTxRWTNixQ==', NULL, '', '', '2026-06-26 09:09:58', 0, NULL, 1, 'f8516cc81d964cd8b4b771a3b3985cd4', '2024-11-20 14:32:09', 'f8516cc81d964cd8b4b771a3b3985cd4', '2025-05-29 10:33:16');
INSERT INTO `sys_user` VALUES ('f8516cc81d964cd8b4b771a3b3985cd4', '超级管理员', 'root', 'v8uL8gcqPYYa1mdnGojfvg==', '', '', '', '2026-06-26 15:57:21', 0, NULL, 1, 'f8516cc81d964cd8b4b771a3b3985cd4', '2024-11-20 10:04:33', 'f8516cc81d964cd8b4b771a3b3985cd4', '2025-05-29 10:33:28');
@@ -6389,10 +7140,10 @@ INSERT INTO `sys_user` VALUES ('f8516cc81d964cd8b4b771a3b3985cd4', '超级管理
-- ----------------------------
DROP TABLE IF EXISTS `sys_user_role`;
CREATE TABLE `sys_user_role` (
- `User_Id` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
- `Role_Id` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `User_Id` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
+ `Role_Id` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
PRIMARY KEY (`User_Id`, `Role_Id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户、角色关系表' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '用户、角色关系表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of sys_user_role
@@ -6403,4 +7154,30 @@ INSERT INTO `sys_user_role` VALUES ('ce2bd33b7f7e45c7739f4b017a7abb29', '3ecbb61
INSERT INTO `sys_user_role` VALUES ('f8181891f67bf9688df4964c502377d4', '3ecbb616a3c88080a8e34a87bfd31d5a');
INSERT INTO `sys_user_role` VALUES ('f8516cc81d964cd8b4b771a3b3985cd4', '9ea9f93b37d90ed16f0531076f82de8c');
+-- ----------------------------
+-- Table structure for sys_user_signature
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_user_signature`;
+CREATE TABLE `sys_user_signature` (
+ `id` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '用户签名ID',
+ `user_id` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '用户ID',
+ `user_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '用户名',
+ `file_id` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '通用文件ID',
+ `status` tinyint(1) NOT NULL COMMENT '状态(0:删除 1:正常)',
+ `create_by` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建用户',
+ `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
+ `update_by` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新用户',
+ `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `uk_sys_user_signature_user_id`(`user_id` ASC) USING BTREE,
+ UNIQUE INDEX `uk_sys_user_signature_file_id`(`file_id` ASC) USING BTREE,
+ INDEX `idx_sys_user_signature_status`(`status` ASC) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '用户签名表' ROW_FORMAT = DYNAMIC;
+
+-- ----------------------------
+-- Records of sys_user_signature
+-- ----------------------------
+INSERT INTO `sys_user_signature` VALUES ('a54667cc416a4d228ad78af50ed307d0', '2db43d757d374793860ff624dd673afb', 'test', '21974a976fb048e8b701dafe1c65cee5', 0, '7015afa698c5e7714813d0b1355c0f3a', '2026-07-13 21:57:17', '7015afa698c5e7714813d0b1355c0f3a', '2026-07-13 21:57:17');
+INSERT INTO `sys_user_signature` VALUES ('af7590b929c64ec89d42a5f5213fdc50', 'ce2bd33b7f7e45c7739f4b017a7abb29', '测试账号', 'c2e10c118e4343cfba2526fe0b27edd5', 1, '7015afa698c5e7714813d0b1355c0f3a', '2026-07-13 21:55:18', '7015afa698c5e7714813d0b1355c0f3a', '2026-07-13 21:55:18');
+
SET FOREIGN_KEY_CHECKS = 1;
diff --git a/tmp/sys-file.sql b/tmp/sys-file.sql
deleted file mode 100644
index 71d02ab..0000000
--- a/tmp/sys-file.sql
+++ /dev/null
@@ -1,20 +0,0 @@
-DROP TABLE IF EXISTS `sys_file`;
-CREATE TABLE `sys_file` (
- `id` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '文件ID',
- `biz_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '业务类型',
- `file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '原始文件名',
- `bucket_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 'MinIO桶名称',
- `object_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 'MinIO对象名称',
- `content_type` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '文件类型',
- `file_size` bigint(20) NULL DEFAULT NULL COMMENT '文件大小(字节)',
- `storage_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '存储类型',
- `status` tinyint(1) NOT NULL COMMENT '状态(0:删除 1:正常)',
- `create_by` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建用户',
- `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
- `update_by` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新用户',
- `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
- PRIMARY KEY (`id`) USING BTREE,
- UNIQUE KEY `uk_sys_file_bucket_object` (`bucket_name`,`object_name`) USING BTREE,
- KEY `idx_sys_file_biz_type` (`biz_type`) USING BTREE,
- KEY `idx_sys_file_status` (`status`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '通用文件表' ROW_FORMAT = DYNAMIC;
diff --git a/tmp/sys-user-signature.sql b/tmp/sys-user-signature.sql
deleted file mode 100644
index bc77385..0000000
--- a/tmp/sys-user-signature.sql
+++ /dev/null
@@ -1,16 +0,0 @@
-DROP TABLE IF EXISTS `sys_user_signature`;
-CREATE TABLE `sys_user_signature` (
- `id` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '用户签名ID',
- `user_id` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '用户ID',
- `user_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '用户名',
- `file_id` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '通用文件ID',
- `status` tinyint(1) NOT NULL COMMENT '状态(0:删除 1:正常)',
- `create_by` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建用户',
- `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
- `update_by` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新用户',
- `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
- PRIMARY KEY (`id`) USING BTREE,
- UNIQUE KEY `uk_sys_user_signature_user_id` (`user_id`) USING BTREE,
- UNIQUE KEY `uk_sys_user_signature_file_id` (`file_id`) USING BTREE,
- KEY `idx_sys_user_signature_status` (`status`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '用户签名表' ROW_FORMAT = DYNAMIC;