diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..fe67750 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,27 @@ +## 使用 JRE 运行,避免在镜像中重新构建 Jar +FROM docker.io/eclipse-temurin:21-jre + +## 允许在构建时传入已编译好的 Jar 路径与外部挂载的配置目录 +ARG JAR_PATH=/opt/alert/alert-backend/app.jar +ARG CONFIG_DIR=/opt/alert/alert-backend + +WORKDIR /yudao-server + +## 配置目录来自宿主机挂载,不在镜像内再生成 +ENV CONFIG_DIR=${CONFIG_DIR} +RUN mkdir -p ${CONFIG_DIR} +VOLUME ${CONFIG_DIR} + +## 拷贝已有的可执行 Jar +COPY ${JAR_PATH} app.jar + +## 基础运行时配置 +ENV TZ=Asia/Shanghai +ENV JAVA_OPTS="-Xms512m -Xmx512m -Djava.security.egd=file:/dev/./urandom" +ENV ARGS="" +ENV SPRING_CONFIG_ADDITIONAL_LOCATION=file:${CONFIG_DIR}/ +ENV LOGGING_CONFIG=${CONFIG_DIR}/logback-spring.xml + +EXPOSE 48080 + +CMD java ${JAVA_OPTS} -Dlogging.config=${LOGGING_CONFIG} -jar /yudao-server/app.jar --spring.config.additional-location=${SPRING_CONFIG_ADDITIONAL_LOCATION} $ARGS diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/databind/MultiDateDeserializer.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/databind/MultiDateDeserializer.java new file mode 100644 index 0000000..9c98be4 --- /dev/null +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/json/databind/MultiDateDeserializer.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.framework.common.util.json.databind; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; + +import java.io.IOException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * @author chenjiale + * @version 1.0 + * @date 2025-12-08 19:52 + */ +public class MultiDateDeserializer extends JsonDeserializer { + + private static final List FORMATS = Arrays.asList( + "yyyy-MM-dd HH:mm:ss", + "yyyy/MM/dd HH:mm:ss" + ); + + @Override + public Date deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + String text = p.getText().trim(); + for (String format : FORMATS) { + try { + return new SimpleDateFormat(format).parse(text); + } catch (ParseException ignored) { + } + } + throw new RuntimeException("Unsupported date format: " + text); + } +} diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/ModelInfo.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/ModelInfo.java index d5a923b..0b56f2b 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/ModelInfo.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/ModelInfo.java @@ -1,10 +1,12 @@ package cn.iocoder.yudao.module.alert.controller.admin.model.model; +import cn.iocoder.yudao.framework.common.util.json.databind.MultiDateDeserializer; import cn.iocoder.yudao.module.alert.common.enums.Algorithm; import cn.iocoder.yudao.module.alert.controller.admin.model.vo.TrainInfo; import com.alibaba.fastjson.annotation.JSONField; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import lombok.*; import java.util.Date; @@ -33,6 +35,7 @@ public class ModelInfo { @JsonProperty("founder") private String founder; + @JsonDeserialize(using = MultiDateDeserializer.class) @JsonProperty("creatTime") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; @@ -40,6 +43,7 @@ public class ModelInfo { @JsonProperty("Modifier") private String modifier; + @JsonDeserialize(using = MultiDateDeserializer.class) @JsonProperty("modifiedTime") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date modifiedTime; diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java index 7a18bc4..41042d8 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java @@ -16,7 +16,9 @@ import java.math.BigDecimal; @NoArgsConstructor @AllArgsConstructor public class Point { + @JsonProperty("PointId") private String PointId; + @JsonProperty("Description") private String Description; private String Unit; @JsonProperty("Lower") diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelCfg.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelCfg.java index 3361ffa..954c153 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelCfg.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelCfg.java @@ -1,5 +1,7 @@ package cn.iocoder.yudao.module.alert.dao.domain; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.AllArgsConstructor; import lombok.Builder; @@ -19,6 +21,7 @@ import java.util.Date; @AllArgsConstructor public class ModelCfg implements Serializable { private static final long serialVersionUID = 1L; + @TableId(value = "model_id") private Integer id; private Integer systemId; private Integer algorithmId; diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelVersion.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelVersion.java index fb1dda4..55adcdf 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelVersion.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelVersion.java @@ -13,6 +13,7 @@ import lombok.Data; @TableName(value ="model_version") @Data public class ModelVersion { + @TableId(value = "model_id") private Integer id; private Integer modelId; diff --git a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java index 08dfad7..a84b2b7 100644 --- a/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java +++ b/yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java @@ -83,7 +83,7 @@ public class ModelServiceImpl implements ModelService { List list = modelCfgService.list(queryWrapper); return list.stream().map(modelCfg -> ModelSimpleVO.builder() .id(modelCfg.getId()) - .name(modelCfg.getModelName().trim()) + .name(modelCfg.getModelName() == null ? null : modelCfg.getModelName().trim()) .creator(modelCfg.getCreator()) .createTime(modelCfg.getCreateTime()) .version(modelCfg.getCurVersion()) diff --git a/yudao-server/Dockerfile b/yudao-server/Dockerfile index ddd5ae6..3db3cb1 100644 --- a/yudao-server/Dockerfile +++ b/yudao-server/Dockerfile @@ -1,6 +1,6 @@ ## AdoptOpenJDK 停止发布 OpenJDK 二进制,而 Eclipse Temurin 是它的延伸,提供更好的稳定性 ## 感谢复旦核博士的建议!灰子哥,牛皮! -FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/eclipse-temurin:21-jre +FROM docker.io/eclipse-temurin:21-jre ## 创建目录,并使用它作为工作目录 RUN mkdir -p /yudao-server