diff --git a/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml b/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml index 5eb7972..9b6c516 100644 --- a/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml +++ b/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml @@ -12,8 +12,8 @@ PUBLIC "-//mybatis.org//DTD Config 3.0//EN" - - + + diff --git a/ruoyi-file/src/main/java/com/ruoyi/file/object/ProjectState.java b/ruoyi-file/src/main/java/com/ruoyi/file/object/ProjectState.java index 283292f..5f65017 100644 --- a/ruoyi-file/src/main/java/com/ruoyi/file/object/ProjectState.java +++ b/ruoyi-file/src/main/java/com/ruoyi/file/object/ProjectState.java @@ -2,6 +2,7 @@ package com.ruoyi.file.object; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; +import com.fasterxml.jackson.annotation.JsonFormat; import java.util.Date; import java.util.List; @@ -15,8 +16,11 @@ public final class ProjectState public long numUpload = 0; // 上传文件数 public long numWrite = 0; // 写入文件数 public long numError = 0; // 处理错误数 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS") public Date lastUploadTime; // 最近上传时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS") public Date lastWriteTime; // 最近写入时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS") public Date lastErrorTime; // 最近错误时间 public long maxUploadSize = 0; // 最大上传字节数 public long maxWriteSize = 0; // 最大写入字节数 @@ -96,9 +100,9 @@ public final class ProjectState if(state.maxUploadSize > maxUploadSize) maxUploadSize = state.maxUploadSize; if(state.maxWriteSize > maxWriteSize) - maxWriteSize += state.maxWriteSize; + maxWriteSize = state.maxWriteSize; if(state.maxHandleDuration > maxHandleDuration) - maxHandleDuration += state.maxHandleDuration; + maxHandleDuration = state.maxHandleDuration; } public String ToString(String split) diff --git a/ruoyi-file/src/main/java/com/ruoyi/file/object/StateMachine.java b/ruoyi-file/src/main/java/com/ruoyi/file/object/StateMachine.java index 7beb4b6..930d010 100644 --- a/ruoyi-file/src/main/java/com/ruoyi/file/object/StateMachine.java +++ b/ruoyi-file/src/main/java/com/ruoyi/file/object/StateMachine.java @@ -2,6 +2,7 @@ package com.ruoyi.file.object; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; +import com.fasterxml.jackson.annotation.JsonFormat; import java.util.ArrayList; import java.util.Date; @@ -16,18 +17,26 @@ public final class StateMachine public long numUpload = 0; // 上传文件数 public long numWrite = 0; // 写入文件数 public long numError = 0; // 处理错误数 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS") public Date lastUploadTime; // 最近上传时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS") public Date lastWriteTime; // 最近写入时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS") public Date lastErrorTime; // 最近错误时间 public long maxUploadSize = 0; // 最大上传字节数 public long maxWriteSize = 0; // 最大写入字节数 public long maxHandleDuration = 0; // 最长处理时间 public long gcCount; // GC次数 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS") public Date lastGCTime; // 最近GC时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS") public Date startTime = new Date(); // 本次开始时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS") public Date lastEndTime; // 上次结束时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS") + public Date lastDumpTime; // 上次dump时间 private final Map stateMap = new LinkedHashMap<>(); public static final StateMachine INSTANCE = new StateMachine(); @@ -58,9 +67,9 @@ public final class StateMachine if(state.maxUploadSize > this.maxUploadSize) this.maxUploadSize = state.maxUploadSize; if(state.maxWriteSize > this.maxWriteSize) - this.maxWriteSize += state.maxWriteSize; + this.maxWriteSize = state.maxWriteSize; if(state.maxHandleDuration > this.maxHandleDuration) - this.maxHandleDuration += state.maxHandleDuration; + this.maxHandleDuration = state.maxHandleDuration; } private ProjectState State(String token) @@ -187,7 +196,7 @@ public final class StateMachine public void FromMap(Map parms) { CopyOptions options = CopyOptions.create(); - options.setIgnoreProperties("startTime"); + options.setIgnoreProperties("startTime", "gcCount", "lastGCTime"); options.setIgnoreError(true); BeanUtil.fillBeanWithMap(parms, this, options); Object obj = parms.get("stateMap"); @@ -210,9 +219,15 @@ public final class StateMachine public void Finish() { + Save(); lastEndTime = new Date(); } + public void Save() + { + lastDumpTime = new Date(); + } + public String ToString(String split) { StringBuilder sb = new StringBuilder(); @@ -246,6 +261,8 @@ public final class StateMachine sb.append(split); sb.append("上次结束时间: ").append(lastEndTime); sb.append(split); + sb.append("上次dump时间: ").append(lastDumpTime); + sb.append(split); sb.append("记录数: ").append(stateMap.size()); return sb.toString(); } diff --git a/ruoyi-file/src/main/java/com/ruoyi/file/service/FileService.java b/ruoyi-file/src/main/java/com/ruoyi/file/service/FileService.java index 57cedd8..54597e3 100644 --- a/ruoyi-file/src/main/java/com/ruoyi/file/service/FileService.java +++ b/ruoyi-file/src/main/java/com/ruoyi/file/service/FileService.java @@ -39,7 +39,6 @@ import javax.servlet.http.HttpServletResponse; import java.nio.charset.StandardCharsets; import java.util.LinkedHashMap; import java.util.Map; -import java.util.TimerTask; @Service public class FileService @@ -234,7 +233,6 @@ public class FileService if(session.result.isSuccess()) { state.AddNumWrite(1); - state.AddUploadSize(session.task.UploadSize()); state.AddWriteSize(session.result.getFileSize()); state.AddWriteSize(session.result.getThumbnailFileSize()); state.SetLastWriteTime(session.result.getTime()); diff --git a/ruoyi-file/src/main/java/com/ruoyi/file/service/StateService.java b/ruoyi-file/src/main/java/com/ruoyi/file/service/StateService.java index 3d0540a..9bc957e 100644 --- a/ruoyi-file/src/main/java/com/ruoyi/file/service/StateService.java +++ b/ruoyi-file/src/main/java/com/ruoyi/file/service/StateService.java @@ -45,7 +45,25 @@ public class StateService public void dump() { - destroy(); + StateMachine.INSTANCE.Save(); + save(); + } + + private void save() + { + try + { + Map map = StateMachine.INSTANCE.ToMap(); + String json = JSON.toJSONString(map); + RedisCache redisCache = SpringUtils.getBean(RedisCache.class); + redisCache.setCacheObject(STATE_MACHINE_KEY, json); + log.info("备份持久化状态机信息: "); + log.info(StateMachine.INSTANCE.ToString("; ")); + } + catch(Exception e) + { + e.printStackTrace(); + } } @PostConstruct @@ -72,19 +90,7 @@ public class StateService @PreDestroy public void destroy() { - try - { - StateMachine.INSTANCE.Finish(); - Map map = StateMachine.INSTANCE.ToMap(); - String json = JSON.toJSONString(map); - RedisCache redisCache = SpringUtils.getBean(RedisCache.class); - redisCache.setCacheObject(STATE_MACHINE_KEY, json); - log.info("备份持久化状态机信息: "); - log.info(StateMachine.INSTANCE.ToString("; ")); - } - catch(Exception e) - { - e.printStackTrace(); - } + StateMachine.INSTANCE.Finish(); + save(); } } diff --git a/ruoyi-ui/src/utils/file.js b/ruoyi-ui/src/utils/file.js index 754e583..89336a0 100644 --- a/ruoyi-ui/src/utils/file.js +++ b/ruoyi-ui/src/utils/file.js @@ -2,6 +2,8 @@ /* 文件大小格式化 */ export function formatFileSize(size) { + if(size === null || size === undefined) + return '0'; const Unit = ["Bytes", "Kb", "Mb", "Gb", "Tb"]; //const Unit = ["byte", "K", "M", "G", "T"]; let s, i; diff --git a/ruoyi-ui/src/views/file/state/ProjectState.vue b/ruoyi-ui/src/views/file/state/ProjectState.vue index 7645a77..ac1633d 100644 --- a/ruoyi-ui/src/views/file/state/ProjectState.vue +++ b/ruoyi-ui/src/views/file/state/ProjectState.vue @@ -1,15 +1,15 @@ @@ -18,6 +18,7 @@ import Descriptions from "@/components/common/Descriptions.vue"; import {stateDetail} from "@/api/file/state"; +import {formatFileSize} from "@/utils/file"; export default { name: 'ProjectState', @@ -57,6 +58,9 @@ export default { this.getStateDetail(); }, }, + filters: { + formatFileSize, + }, } diff --git a/ruoyi-ui/src/views/file/state/index.vue b/ruoyi-ui/src/views/file/state/index.vue index fc907f5..309194b 100644 --- a/ruoyi-ui/src/views/file/state/index.vue +++ b/ruoyi-ui/src/views/file/state/index.vue @@ -18,21 +18,22 @@ - {{state.uploadSize}} - {{state.writeSize}} + {{state.uploadSize | formatFileSize}} + {{state.writeSize | formatFileSize}} {{state.numUpload}} {{state.numWrite}} {{state.numError}} {{state.lastUploadTime}} {{state.lastWriteTime}} {{state.lastErrorTime}} - {{state.maxUploadSize}} - {{state.maxWriteSize}} + {{state.maxUploadSize | formatFileSize}} + {{state.maxWriteSize | formatFileSize}} {{state.maxHandleDuration}} {{state.gcCount}} {{state.lastGCTime}} {{state.startTime}} {{state.lastEndTime}} + {{state.lastDumpTime}} {{total}} @@ -41,11 +42,11 @@ - + - +