cjl-dev #26

Merged
chenjiale merged 4 commits from cjl-dev into master 2 weeks ago
  1. 7
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/ModelController.java
  2. 2
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/ModelInfo.java
  3. 2
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java
  4. 72
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelVersion.java
  5. 18
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/ModelVersionMapper.java
  6. 13
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/ModelVersionService.java
  7. 22
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/ModelVersionServiceImpl.java
  8. 7
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/param/ModelTestParam.java
  9. 7
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/param/TrainParam.java
  10. 2
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/ModelService.java
  11. 42
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java
  12. 9
      yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/utils/EXAUtils.java
  13. 48
      yudao-module-alert/yudao-module-alert-biz/src/main/resources/mapper/ModelVersionMapper.xml
  14. 4
      yudao-server/src/main/resources/application-local.yaml

7
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/ModelController.java

@ -63,8 +63,13 @@ public class ModelController {
} }
@PostMapping("/test") @PostMapping("/test")
public CommonResult<ModelTestData> getTestData(ModelTestParam param) { public CommonResult<ModelTestData> getTestData(@RequestBody ModelTestParam param) {
ModelTestData modelTestData = modelService.getModelTestData(param); ModelTestData modelTestData = modelService.getModelTestData(param);
return CommonResult.success(modelTestData); return CommonResult.success(modelTestData);
} }
@PostMapping("/bottom/{id}")
public CommonResult<ModelInfoVO> bottomModel(@PathVariable Integer id) {
return CommonResult.success(modelService.bottomModel(id));
}
} }

2
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/ModelInfo.java

@ -115,7 +115,7 @@ public class ModelInfo {
private String alarmCondition; private String alarmCondition;
public static AlarmModelSet defaultInit() { public static AlarmModelSet defaultInit() {
return new AlarmModelSet("全工况运行", "1=1"); return new AlarmModelSet("全工况运行", "1==1");
} }
} }

2
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/controller/admin/model/model/Point.java

@ -24,7 +24,7 @@ public class Point {
@JsonProperty("Upper") @JsonProperty("Upper")
private BigDecimal Upper; private BigDecimal Upper;
private Boolean dead; private Boolean dead;
private String limit; private Boolean limit;
private Boolean lock; private Boolean lock;
/** /**
* 残差下限 * 残差下限

72
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/domain/ModelVersion.java

@ -0,0 +1,72 @@
package cn.iocoder.yudao.module.alert.dao.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* @TableName model_version
*/
@TableName(value ="model_version")
@Data
public class ModelVersion implements Serializable {
private Integer id;
private Integer modelId;
private Integer algorithmId;
private String modelName;
private String createName;
private String modelInfo;
private Integer status;
private Integer visible;
private String conditionInfo;
private Integer trash;
private String assessRes;
private Integer needToAssess;
private Double score;
private String clearOrNot;
private Integer effNumber;
private Integer needToClean;
private String origAssessRes;
private Double loadCover;
private String coverOutput;
private String version;
private String conditionName;
private Integer isOnline;
private String creator;
private Date createTime;
private String updater;
private Date updateTime;
private Boolean deleted;
private static final long serialVersionUID = 1L;
}

18
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/mapper/ModelVersionMapper.java

@ -0,0 +1,18 @@
package cn.iocoder.yudao.module.alert.dao.mapper;
import cn.iocoder.yudao.module.alert.dao.domain.ModelVersion;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @author 陈小黑
* @description 针对表model_version的数据库操作Mapper
* @createDate 2025-07-10 16:23:38
* @Entity cn.iocoder.yudao.module.alert.dao.domain.ModelVersion
*/
public interface ModelVersionMapper extends BaseMapper<ModelVersion> {
}

13
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/ModelVersionService.java

@ -0,0 +1,13 @@
package cn.iocoder.yudao.module.alert.dao.service;
import cn.iocoder.yudao.module.alert.dao.domain.ModelVersion;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @author 陈小黑
* @description 针对表model_version的数据库操作Service
* @createDate 2025-07-10 16:23:38
*/
public interface ModelVersionService extends IService<ModelVersion> {
}

22
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/dao/service/impl/ModelVersionServiceImpl.java

@ -0,0 +1,22 @@
package cn.iocoder.yudao.module.alert.dao.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.iocoder.yudao.module.alert.dao.domain.ModelVersion;
import cn.iocoder.yudao.module.alert.dao.service.ModelVersionService;
import cn.iocoder.yudao.module.alert.dao.mapper.ModelVersionMapper;
import org.springframework.stereotype.Service;
/**
* @author 陈小黑
* @description 针对表model_version的数据库操作Service实现
* @createDate 2025-07-10 16:23:38
*/
@Service
public class ModelVersionServiceImpl extends ServiceImpl<ModelVersionMapper, ModelVersion>
implements ModelVersionService{
}

7
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/param/ModelTestParam.java

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.alert.param; package cn.iocoder.yudao.module.alert.param;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@ -12,7 +13,11 @@ import java.util.List;
@NoArgsConstructor @NoArgsConstructor
public class ModelTestParam { public class ModelTestParam {
@JsonProperty("Test_Data") @JsonProperty("Test_Data")
@JsonAlias("Test_Data")
private TestData testData; private TestData testData;
@JsonProperty("Model_id")
@JsonAlias("Model_id")
private Integer modelId; private Integer modelId;
private String version; private String version;
@ -24,8 +29,10 @@ public class ModelTestParam {
private String points; private String points;
private Integer interval; private Integer interval;
@JsonProperty("AddBias") @JsonProperty("AddBias")
@JsonAlias("AddBias")
private List<Double> addBias; private List<Double> addBias;
@JsonProperty("AddBias_Time") @JsonProperty("AddBias_Time")
@JsonAlias("AddBias_Time")
private String addBiasTime; private String addBiasTime;
} }
} }

7
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/param/TrainParam.java

@ -1,6 +1,5 @@
package cn.iocoder.yudao.module.alert.param; package cn.iocoder.yudao.module.alert.param;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -21,16 +20,17 @@ public class TrainParam {
@JsonProperty("Hyper_para") @JsonProperty("Hyper_para")
private HyperPara hyperPara; private HyperPara hyperPara;
private String type; private String type;
private String condition; private String conditon;
@JsonAlias("smote_config") @JsonAlias("smote_config")
@JsonProperty("smote_config") @JsonProperty("smote_config")
private String smoteConfig; private List<Object> smoteConfig;
private Boolean smote; private Boolean smote;
private String targetPoint; private String targetPoint;
@Data @Data
public static class Smote { public static class Smote {
private String pointId; private String pointId;
@ -55,5 +55,6 @@ public class TrainParam {
private String dead; private String dead;
private String limit; private String limit;
private String uplow; private String uplow;
private Integer interval;
} }
} }

2
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/ModelService.java

@ -48,4 +48,6 @@ public interface ModelService {
TrainInfo trainModel(TrainParam param); TrainInfo trainModel(TrainParam param);
ModelTestData getModelTestData(ModelTestParam param); ModelTestData getModelTestData(ModelTestParam param);
ModelInfoVO bottomModel(Integer id);
} }

42
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/service/model/impl/ModelServiceImpl.java

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.alert.service.model.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.iocoder.yudao.framework.common.util.http.HttpUtils; import cn.iocoder.yudao.framework.common.util.http.HttpUtils;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils; import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
@ -12,26 +13,26 @@ import cn.iocoder.yudao.module.alert.common.enums.ModelVisible;
import cn.iocoder.yudao.module.alert.controller.admin.model.model.ModelInfo; import cn.iocoder.yudao.module.alert.controller.admin.model.model.ModelInfo;
import cn.iocoder.yudao.module.alert.controller.admin.model.vo.*; import cn.iocoder.yudao.module.alert.controller.admin.model.vo.*;
import cn.iocoder.yudao.module.alert.dao.domain.ModelCfg; import cn.iocoder.yudao.module.alert.dao.domain.ModelCfg;
import cn.iocoder.yudao.module.alert.dao.domain.ModelVersion;
import cn.iocoder.yudao.module.alert.dao.domain.SystemCfg; import cn.iocoder.yudao.module.alert.dao.domain.SystemCfg;
import cn.iocoder.yudao.module.alert.dao.service.ModelCfgService; import cn.iocoder.yudao.module.alert.dao.service.ModelCfgService;
import cn.iocoder.yudao.module.alert.dao.service.ModelVersionService;
import cn.iocoder.yudao.module.alert.dao.service.SystemCfgService; import cn.iocoder.yudao.module.alert.dao.service.SystemCfgService;
import cn.iocoder.yudao.module.alert.param.ModelTestParam; import cn.iocoder.yudao.module.alert.param.ModelTestParam;
import cn.iocoder.yudao.module.alert.param.TrainParam; import cn.iocoder.yudao.module.alert.param.TrainParam;
import cn.iocoder.yudao.module.alert.service.model.ModelService; import cn.iocoder.yudao.module.alert.service.model.ModelService;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Date; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -47,6 +48,8 @@ public class ModelServiceImpl implements ModelService {
private final SystemCfgService systemCfgService; private final SystemCfgService systemCfgService;
private final ModelVersionService modelVersionService;
@Value("${algorithm.host}") @Value("${algorithm.host}")
private String algorithmHost; private String algorithmHost;
@ -119,6 +122,7 @@ public class ModelServiceImpl implements ModelService {
info.setName(model.getModelName()); info.setName(model.getModelName());
info.setDescription(model.getDescription()); info.setDescription(model.getDescription());
info.setRate(model.getRate()); info.setRate(model.getRate());
info.setTrainTime(new ArrayList<>());
modelCfg.setModelInfo(JsonUtils.toJsonString(info)); modelCfg.setModelInfo(JsonUtils.toJsonString(info));
modelCfgService.updateById(modelCfg); modelCfgService.updateById(modelCfg);
return modelId; return modelId;
@ -143,22 +147,42 @@ public class ModelServiceImpl implements ModelService {
@Override @Override
public TrainInfo trainModel(TrainParam param) { public TrainInfo trainModel(TrainParam param) {
String trainBody = HttpUtils.post(algorithmHost + "/api/get_smote_data", null, JsonUtils.toJsonString(param)); String trainBody = HttpUtils.post(algorithmHost + "/api/test/ClearTrain", null, JsonUtils.toJsonString(param));
if (trainBody.contains("error_msg")) { if (trainBody.contains("error_msg")) {
throw new RuntimeException("模型训练异常:" + JsonUtils.parseObject(trainBody, throw new RuntimeException("模型训练异常:" + JsonUtils.parseObject(trainBody,
new TypeReference<Map<String, String>>() { new TypeReference<Map<String, String>>() {
}).get("error_msg")); }).get("error_msg"));
} }
return JsonUtils.parseObject(trainBody, new TypeReference<List<TrainInfo>>() { return JsonUtils.parseObject(trainBody, new TypeReference<>() {
}).get(0); });
} }
@Override @Override
public ModelTestData getModelTestData(ModelTestParam param) { public ModelTestData getModelTestData(ModelTestParam param) {
String result = HttpUtils.post(algorithmHost + "/api/test/Test", null, JsonUtils.toJsonString(param)) String result = HttpUtils.post(algorithmHost + "/api/test/Test", null, JsonUtils.toJsonString(param))
.replace("NaN", "-1").replace("Infinity", "1"); .replace("NaN", "-1").replace("Infinity", "1");
return JsonUtils.parseObject(result, ModelTestData.class); return JsonUtils.parseObject(result, ModelTestData.class);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public ModelInfoVO bottomModel(Integer id) {
ModelCfg modelCfg = modelCfgService.getById(id);
ModelInfoVO modelInfo = JSON.parseObject(modelCfg.getModelInfo(), ModelInfoVO.class);
modelInfo.setBtmState(ModelStatus.FINISH.desc);
modelInfo.setVersion("v-" + DateUtil.now());
modelInfo.setModifier(SecurityFrameworkUtils.getLoginUserNickname());
modelInfo.setModifiedTime(new Date());
modelCfg.setModelInfo(JSON.toJSONString(modelInfo));
modelCfg.setUpdateTime(new Date());
modelCfg.setStatus(ModelStatus.FINISH.code);
modelCfgService.updateById(modelCfg);
ModelVersion modelVersion = BeanUtil.copyProperties(modelCfg, ModelVersion.class);
modelVersion.setId(null);
modelVersion.setModelId(id);
modelVersionService.save(modelVersion);
return modelInfo;
}
} }

9
yudao-module-alert/yudao-module-alert-biz/src/main/java/cn/iocoder/yudao/module/alert/utils/EXAUtils.java

@ -1,6 +1,9 @@
package cn.iocoder.yudao.module.alert.utils; package cn.iocoder.yudao.module.alert.utils;
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.*; import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.EXAHistoryReqVO;
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.EXAHttp;
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.EXAPageReqVO;
import cn.iocoder.yudao.module.alert.controller.admin.exa.vo.Point;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.google.gson.Gson; import com.google.gson.Gson;
@ -11,14 +14,11 @@ import org.apache.http.client.fluent.Request;
import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder; import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType; import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Value;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Type; import java.lang.reflect.Type;
@ -31,7 +31,6 @@ import java.util.List;
public class EXAUtils { public class EXAUtils {
/** /**
* 根据分页条件和测点名称测点描述模糊查询 * 根据分页条件和测点名称测点描述模糊查询
* *

48
yudao-module-alert/yudao-module-alert-biz/src/main/resources/mapper/ModelVersionMapper.xml

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.alert.dao.mapper.ModelVersionMapper">
<resultMap id="BaseResultMap" type="cn.iocoder.yudao.module.alert.dao.domain.ModelVersion">
<id property="id" column="id" jdbcType="INTEGER"/>
<result property="modelId" column="model_id" jdbcType="INTEGER"/>
<result property="algorithmId" column="algorithm_id" jdbcType="INTEGER"/>
<result property="modelName" column="model_name" jdbcType="VARCHAR"/>
<result property="createName" column="create_name" jdbcType="VARCHAR"/>
<result property="modelInfo" column="model_info" jdbcType="VARCHAR"/>
<result property="status" column="status" jdbcType="INTEGER"/>
<result property="visible" column="visible" jdbcType="INTEGER"/>
<result property="conditionInfo" column="condition_info" jdbcType="VARCHAR"/>
<result property="trash" column="trash" jdbcType="INTEGER"/>
<result property="assessRes" column="assess_res" jdbcType="VARCHAR"/>
<result property="needToAssess" column="need_to_assess" jdbcType="INTEGER"/>
<result property="score" column="score" jdbcType="FLOAT"/>
<result property="clearOrNot" column="clear_or_not" jdbcType="CHAR"/>
<result property="effNumber" column="eff_number" jdbcType="INTEGER"/>
<result property="needToClean" column="need_to_clean" jdbcType="INTEGER"/>
<result property="origAssessRes" column="orig_assess_res" jdbcType="VARCHAR"/>
<result property="loadCover" column="load_cover" jdbcType="FLOAT"/>
<result property="coverOutput" column="cover_output" jdbcType="VARCHAR"/>
<result property="version" column="version" jdbcType="VARCHAR"/>
<result property="conditionName" column="condition_name" jdbcType="VARCHAR"/>
<result property="isOnline" column="is_online" jdbcType="INTEGER"/>
<result property="creator" column="creator" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updater" column="updater" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="deleted" column="deleted" jdbcType="BIT"/>
</resultMap>
<sql id="Base_Column_List">
id,model_id,algorithm_id,
model_name,create_name,model_info,
status,visible,condition_info,
trash,assess_res,need_to_assess,
score,clear_or_not,eff_number,
need_to_clean,orig_assess_res,load_cover,
cover_output,version,condition_name,
is_online,creator,create_time,
updater,update_time,deleted
</sql>
</mapper>

4
yudao-server/src/main/resources/application-local.yaml

@ -273,8 +273,8 @@ pf4j:
# pluginsDir: /tmp/ # pluginsDir: /tmp/
pluginsDir: ../plugins pluginsDir: ../plugins
EXA: EXA:
ip: 120.27.236.75 ip: 120.26.116.243
point: point:
head: XN. head: XN.
algorithm: algorithm:
host: 47.98.32.148:8082 host: 120.26.116.243:8082
Loading…
Cancel
Save