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;