这里写目录标题
DataTable
javascript
复制代码
package com.cqupt.software_1.common;
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 com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.sql.Timestamp;
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName(value ="data_table")
public class DataTable implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
@TableField("table_desc")
private String table_desc;
@TableField("table_name")
private String table_name;
private Integer featurenumber;
private Integer samplesize;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Timestamp create_time;
@TableField("tableType")
private String table_type;
private String disease;
private String creator;
}
根据您的代码片段,您定义了一个名为`DataTable`的Java类,位于`com.cqupt.software_1.common`包中。这个类使用了一些注解和字段定义,让我们一起来看一下这些元素的作用:
- `@Data`: Lombok注解,自动生成类中的getter、setter、toString、equals、hashCode等方法。
- `@NoArgsConstructor`: Lombok注解,自动生成无参构造函数。
- `@AllArgsConstructor`: Lombok注解,自动生成全参构造函数。
- `@TableName(value ="data_table")`: MyBatis Plus注解,用于指定该类对应的数据库表名为"data_table"。
- `@TableId(type = IdType.AUTO)`: MyBatis Plus注解,用于指定该字段为表的主键,并且采用自增的方式生成主键值。
- `@TableField("table_desc")`和`@TableField("table_name")`: MyBatis Plus注解,用于指定表字段和对应的数据库字段名。
- `@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8)`: Jackson注解,用于指定日期类型字段的序列化格式。
- `private Integer id`: 代表表的ID字段。
- `private String table_desc`: 代表表的描述字段。
- `private String table_name`: 代表表的名称字段。
- `private Integer featurenumber`: 代表特征数量字段。
- `private Integer samplesize`: 代表样本大小字段。
- `private Timestamp create_time`: 代表创建时间字段。
- `private String table_type`: 代表表类型字段。
- `private String disease`: 代表疾病字段
ExecState
根据您提供的代码片段,这是一个名为`ExecState`的枚举类型(Enum),位于`com.cqupt.software_1.common`包中。这个枚举定义了三个枚举常量:`SUCCESS`、`FAILED`和`RUNNING`,表示不同的执行状态。
通过`@Data`注解,Lombok会自动生成枚举类中常用的方法,比如getter、setter、equals、toString等。枚举类型通常用于表示一组相关的常量。在这种情况下,`ExecState`用于表示执行状态的不同选项。
javascript
复制代码
package com.cqupt.software_1.common;
import lombok.Data;
public enum ExecState {
SUCCESS,FAILED,RUNNING;
}
FeatureType
这段代码定义了一个名为`FeatureType`的枚举类型,位于`com.cqupt.software_1.common`包中。
1. 枚举常量:
- `DIAGNOSIS`:表示诊断,对应的代码为0,名称为"is_demography"。
- `PATHOLOGY`:表示病理,对应的代码为2,名称为"is_sociology"。
- `VITAL_SIGNS`:表示生理,对应的代码为3,名称为"is_physiological"。
2. 枚举构造方法:
- 构造方法接受一个整数类型的`code`和一个字符串类型的`name`参数,并将其赋值给枚举常量的对应属性。
3. 公共方法:
- `getCode()`:返回枚举常量的代码。
- `getName()`:返回枚举常量的名称。
这个枚举类型用于表示不同的特征类型,每个特征类型都有一个唯一的代码和名称。
javascript
复制代码
package com.cqupt.software_1.common;
// TODO 公共模块新增
public enum FeatureType {
DIAGNOSIS(0, "is_demography"),
// EXAMINE(1, "examine"),
PATHOLOGY(2, "is_sociology"),
VITAL_SIGNS(3, "is_physiological");
private final int code;
private final String name;
FeatureType(int code, String name) {
this.code = code;
this.name = name;
}
public int getCode() {
return code;
}
public String getName() {
return name;
}
}
MissDataCompleteMethods
这个 Java 类名为 `MissDataCompleteMethods`,主要用于提供处理缺失数据的方法。让我们逐步解释一下:
### 类:`MissDataCompleteMethods`
- **包**:`com.cqupt.software_1.common`
- 该类位于 `com.cqupt.software_1` 包中的 `common` 子包下。
### 成员:
- **`methodMap`**:
- 类型:`HashMap<String, String>`
- 目的:这个哈希映射用于存储处理缺失数据的方法名及其对应的方法标识(可能是方法名或函数引用)。
### 构造方法:
- **`MissDataCompleteMethods()`**:
- 这是类的构造方法。
- **初始化**:初始化了 `methodMap` 哈希映射。
- **填充 `methodMap`**:添加了多个条目,其中每个键都是处理缺失数据的方法的描述性名称(例如,"众数填充"表示众数填充),每个值可能是方法的引用(例如,"modePadding")。
### 目的:
- **功能**:
- 提供了一系列预定义方法(如 `modePadding`、`nearestNeighborInterpolation`、`forwardFilling` 等)来处理缺失数据。
- 这些方法封装了常见的技术,如统计替换(均值、中位数)、回归分析和其他针对特定数据插补需求的策略。
### 概要:
`MissDataCompleteMethods` 类封装了一系列方法,存储在哈希映射中,用于处理软件系统中不同的缺失数据场景。这种设计使得这些方法在需要数据完整性策略的任何地方都可以轻松访问和使用。
javascript
复制代码
package com.cqupt.software_1.common;
import java.util.HashMap;
public class MissDataCompleteMethods {
public HashMap<String,String> methodMap;
public MissDataCompleteMethods() {
methodMap = new HashMap<>();
methodMap.put("众数填充","modePadding");
methodMap.put("最邻近插值","nearestNeighborInterpolation");
methodMap.put("前向填充","forwardFilling");
methodMap.put("均数替换","meanReplacement");
methodMap.put("回归分析替换","regressionAnalysisReplacement");
methodMap.put("热卡填充","eucarFilling");
methodMap.put("中位数替换","medianReplacement");
}
}
R
这个 Java 类 `R` 是一个通用的响应类,用于在应用程序中返回统一格式的响应消息。下面是对它的详细解释:
### 类:`R`
- **包**:`com.cqupt.software_1.common`
- 该类位于 `com.cqupt.software_1` 包中的 `common` 子包下。
### 成员变量:
- **`code`**:
- 类型:`Integer`
- 目的:用于存储响应状态码。
- **`msg`**:
- 类型:`String`
- 目的:用于存储响应消息。
- **`data`**:
- 类型:`Object`
- 目的:用于存储响应数据。
- **`total`**:
- 类型:`Integer`
- 目的:用于存储数据总量(可选)。
### 构造方法:
- **`R()`**:
- 默认构造方法。
- **`R(Integer code, String msg, Object data)`**:
- 构造方法,用于设置响应状态码、消息和数据。
### 静态方法:
- **`success()`**:
- 返回操作成功的响应对象。
- **`fail()`**:
- 返回操作失败的响应对象。
### 实例方法:
- **`getData()`**、**`setData()`**、**`getMsg()`**、**`setMsg()`**、**`getCode()`**、**`setCode()`**:
- 用于获取和设置成员变量的方法。
### 目的:
- **功能**:
- 提供了一种标准的响应消息格式,以便在应用程序中统一处理响应。
- 可以方便地返回成功或失败的响应,并携带相应的数据和消息。
### 概要:
`R` 类是一个通用的响应类,用于在应用程序中返回统一格式的响应消息,包括状态码、消息和数据。通过定义标准的成功和失败响应方法,可以简化应用程序中的响应处理过程。
javascript
复制代码
package com.cqupt.software_1.common;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class R<T>{
private Integer code ;
private String msg;
private Object data;
private Integer total;
public R(){}
public R(Integer code, String msg, Object data) {
this.code = code;
this.msg = msg;
this.data = data;
}
// 操作成功返回数据
public static R success(Object data) {
return success(200, "操作成功", data);
}
public static R success(int code ,String msg) {
return success(code, msg, null);
}
public static R success(String msg, Object data) {
return success(200,msg,data);
}
public static R fail(String msg) {
return fail(400,msg,null);
}
public static R fail(int code, String msg) {
return fail(code,msg,"null");
}
public static R fail(String msg, Object data) {
return fail(400,msg,data);
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public static R success(int code, String msg, Object data) {
R r = new R();
r.setCode(code);
r.setMsg(msg);
r.setData(data);
return r;
}
// 操作异常返回
public static R fail(int code, String msg, Object data) {
R r = new R();
r.setCode(code);
r.setMsg(msg);
r.setData(data);
return r;
}
}
RunPyEntity
这个 Java 类 `RunPyEntity` 用于存储运行 Python 程序所需的实体信息。让我解释一下:
### 类:`RunPyEntity`
- **包**:`com.cqupt.software_1.common`
- 该类位于 `com.cqupt.software_1` 包中的 `common` 子包下。
### 成员变量:
- **`tableName`**:
- 类型:`String`
- 目的:存储运行的表名。
- **`aiName`**:
- 类型:`String`
- 目的:存储运行的算法名。
- **`runParams`**:
- 类型:`List<String>`
- 目的:存储运行算法所需的参数列表。
- **`n_clusters`**:
- 类型:`Integer`
- 目的:存储聚类算法中的簇数量。
### 构造方法:
- **`RunPyEntity()`**:
- 默认构造方法。
- **`RunPyEntity(String tableName, String aiName, List<String> runParams, Integer n_clusters)`**:
- 构造方法,用于设置表名、算法名、参数列表和簇数量。
### 目的:
- **功能**:
- 存储运行 Python 程序所需的实体信息,包括表名、算法名、参数列表和簇数量。
- 通过定义一个实体类,使得在程序中传递和处理这些信息更加方便和规范。
### 概要:
`RunPyEntity` 类用于存储运行 Python 程序所需的实体信息,如表名、算法名、参数列表和簇数量。通过将这些信息封装在一个类中,可以更好地组织和管理程序中的数据。
javascript
复制代码
package com.cqupt.software_1.common;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RunPyEntity {
// 运行表名
private String tableName;
// 运行算法名
private String aiName;
// 运行算法参数列表
private List<String> runParams;
// 运行表名
private Integer n_clusters;
}
RunPyR
这个新的 Java 类 `RunPyR` 看起来像是一个通用的响应类,但用于存储运行 Python 程序后的响应信息。下面是对它的详细解释:
### 类:`RunPyR`
- **包**:`com.cqupt.software_1.common`
- 该类位于 `com.cqupt.software_1` 包中的 `common` 子包下。
### 成员变量:
- **`code`**:
- 类型:`Integer`
- 目的:存储响应状态码。
- **`msg`**:
- 类型:`String`
- 目的:存储响应消息。
- **`data`**:
- 类型:泛型 `T`
- 目的:存储响应数据。
### 构造方法:
- **`RunPyR()`**:
- 默认构造方法。
- **`RunPyR(Integer code, String msg, T data)`**:
- 构造方法,用于设置响应状态码、消息和数据。
### 目的:
- **功能**:
- 提供了一种通用的响应格式,以便在应用程序中统一处理运行 Python 程序后的响应信息。
- 可以方便地返回包含状态码、消息和数据的响应对象,以便客户端进行后续处理。
### 概要:
`RunPyR` 类是一个通用的响应类,用于存储运行 Python 程序后的响应信息,包括状态码、消息和数据。通过定义一个通用的响应类,可以简化应用程序中对运行结果的处理过程。
javascript
复制代码
package com.cqupt.software_1.common;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RunPyR<T> {
private Integer code ;
private String msg;
private T data;
}
这个 Java 类 `TableHeaderDTO` 看起来是用来表示数据表的列头信息的。下面是对它的详细解释:
### 类:`TableHeaderDTO`
- **包**:`com.cqupt.software_1.common`
- 该类位于 `com.cqupt.software_1` 包中的 `common` 子包下。
### 成员变量:
- **`fieldName`**:
- 类型:`String`
- 目的:存储字段名。
- **`isDemography`**:
- 类型:`String`
- 目的:表示是否为人口统计学字段。
- **`isPhysiological`**:
- 类型:`String`
- 目的:表示是否为生理学字段。
- **`isSociology`**:
- 类型:`String`
- 目的:表示是否为社会学字段。
- **`isLabel`**:
- 类型:`String`
- 目的:表示是否为标签字段。
### 构造方法:
- **`TableHeaderDTO()`**:
- 默认构造方法。
- **`TableHeaderDTO(String fieldName, String isDemography, String isPhysiological, String isSociology, String isLabel)`**:
- 构造方法,用于设置字段名和字段类型信息。
### 目的:
- **功能**:
- 提供了一种表示数据表列头信息的数据结构,包括字段名和字段类型。
- 可以方便地在应用程序中处理数据表的列头信息,例如识别字段类型等。
### 概要:
`TableHeaderDTO` 类用于表示数据表的列头信息,包括字段名和字段类型。通过定义一个专门的类来处理列头信息,可以提高程序的可读性和可维护性。
javascript
复制代码
package com.cqupt.software_1.common;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TableHeaderDTO {
private String fieldName;
private String isDemography;
private String isPhysiological;
private String isSociology;
private String isLabel;
// 构造函数、getter和setter方法省略
}
TableManagerDTO
这个新的 Java 类 `TableManagerDTO` 似乎是用来管理数据表信息的,让我解释一下:
### 类:`TableManagerDTO`
- **包**:`com.cqupt.software_1.common`
- 该类位于 `com.cqupt.software_1` 包中的 `common` 子包下。
### 成员变量:
- **`tableName`**:
- 类型:`String`
- 目的:存储数据表名。
- **`tableHeaders`**:
- 类型:`List<TableHeaderDTO>`
- 目的:存储数据表的列头信息列表。
### 构造方法:
- **`TableManagerDTO()`**:
- 默认构造方法。
- **`TableManagerDTO(String tableName, List<TableHeaderDTO> tableHeaders)`**:
- 构造方法,用于设置数据表名和列头信息列表。
### 目的:
- **功能**:
- 提供了一种管理数据表信息的数据结构,包括数据表名和列头信息列表。
- 可以方便地在应用程序中管理数据表信息,例如获取表头信息、查询表名等操作。
### 概要:
`TableManagerDTO` 类用于管理数据表信息,包括数据表名和列头信息列表。通过定义一个专门的类来管理数据表信息,可以提高程序的可读性和可维护性。
javascript
复制代码
package com.cqupt.software_1.common;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TableManagerDTO {
private String tableName;
private List<TableHeaderDTO> tableHeaders;
}
TaskRequest
这个 `TaskRequest` 类看起来是用来表示任务请求的信息,让我为你解释一下:
### 类:`TaskRequest`
- **包**:`com.cqupt.software_1.common`
- 该类位于 `com.cqupt.software_1` 包中的 `common` 子包下。
### 成员变量:
- **`taskName`**:
- 类型:`String`
- 目的:存储任务名称。
- **`leader`**:
- 类型:`String`
- 目的:存储任务负责人。
- **`participant`**:
- 类型:`String`
- 目的:存储任务参与者。
- **`disease`**:
- 类型:`String`
- 目的:存储任务关联的疾病信息。
- **`model`**:
- 类型:`String`
- 目的:存储任务关联的模型信息。
- **`remark`**:
- 类型:`String`
- 目的:存储任务备注信息。
- **`time`**:
- 类型:`double`
- 目的:存储任务时间信息。
- **`ratio`**:
- 类型:`String`
- 目的:存储任务比例信息。
- **`ci`**:
- 类型:`int`
- 目的:存储任务 CI(信心指数)信息。
- **`dataset`**:
- 类型:`String`
- 目的:存储任务关联的数据集信息。
- **`feature`**:
- 类型:`String[]`
- 目的:存储任务特征信息。
- **`para`**:
- 类型:`String[]`
- 目的:存储任务参数信息。
- **`paraValue`**:
- 类型:`String[]`
- 目的:存储任务参数值信息。
- **`targetcolumn`**:
- 类型:`String[]`
- 目的:存储任务目标列信息。
- **`res`**:
- 类型:`String[][]`
- 目的:存储任务结果信息。
- **`uid`**:
- 类型:`Integer`
- 目的:存储任务的用户ID。
### 构造方法:
- **`TaskRequest()`**:
- 默认构造方法。
- **`TaskRequest(String taskName, String leader, String participant, String disease, String model, String remark, double time, String ratio, int ci, String dataset, String[] feature, String[] para, String[] paraValue, String[] targetcolumn, String[][] res, Integer uid)`**:
- 构造方法,用于设置任务请求的各个信息。
### 目的:
- **功能**:
- 提供了一种表示任务请求信息的数据结构,包括任务名称、负责人、参与者等信息。
- 可以方便地在应用程序中管理任务请求信息,例如创建新任务、查询任务详情等操作。
### 概要:
`TaskRequest` 类用于表示任务请求的信息,包括任务名称、负责人、参与者等信息。通过定义一个专门的类来管理任务请求信息,可以提高程序的可读性和可维护性。
javascript
复制代码
package com.cqupt.software_1.common;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TaskRequest {
private String taskName;
private String leader;
private String participant;
private String disease;
private String model;
private String remark;
private double time;
private String ratio;
private int ci;
private String dataset;
private String[] feature;
private String[] para;
private String[] paraValue;
private String[] targetcolumn;
private String[][] res;
private Integer uid;
}
UploadResult
这个 `UploadResult` 类似乎是用来表示上传结果的信息,让我为你解释一下:
### 类:`UploadResult`
- **包**:`com.cqupt.software_1.common`
- 该类位于 `com.cqupt.software_1` 包中的 `common` 子包下。
### 成员变量:
- **`tableName`**:
- 类型:`String`
- 目的:存储上传的数据表名称。
- **`tableHeaders`**:
- 类型:`List<String>`
- 目的:存储上传数据表的列头信息。
- **`res`**:
- 类型:`List<DataTable>`
- 目的:存储上传数据表的结果信息。
- **`code`**:
- 类型:`Integer`
- 目的:存储上传结果的状态码。
- **`e`**:
- 类型:`Exception`
- 目的:存储上传过程中出现的异常信息。
### 构造方法:
- **`UploadResult()`**:
- 默认构造方法。
- **`UploadResult(String tableName, List<String> tableHeaders, List<DataTable> res, Integer code, Exception e)`**:
- 构造方法,用于设置上传结果的各个信息。
### 目的:
- **功能**:
- 提供了一种表示上传结果信息的数据结构,包括上传的数据表名称、列头信息、上传结果等。
- 可以方便地在应用程序中管理上传结果信息,例如处理上传结果、异常处理等操作。
### 概要:
`UploadResult` 类用于表示上传结果的信息,包括上传的数据表名称、列头信息、上传结果等。通过定义一个专门的类来管理上传结果信息,可以提高程序的可读性和可维护性。
javascript
复制代码
package com.cqupt.software_1.common;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UploadResult {
private String tableName;
private List<String> tableHeaders;
private List<DataTable> res;
private Integer code;
private Exception e;
}
UserThreadLocal
这段代码定义了一个 `UserThreadLocal` 类,主要用来在线程中存储用户信息 `User`,让我详细解释一下:
### 类:`UserThreadLocal`
- **包**:`com.cqupt.software_1.common`
- 该类位于 `com.cqupt.software_1` 包中的 `common` 子包下。
### 成员变量:
- **`LOCAL`**:
- 类型:`ThreadLocal<User>`
- 目的:存储每个线程对应的 `User` 对象。
### 构造方法:
- **`UserThreadLocal()`**:
- 私有构造方法,用以限制外部实例化该类。
### 方法:
- **`put(User sysUser)`**:
- 功能:将指定的 `User` 对象存储在当前线程的 `ThreadLocal` 中。
- **`get()`**:
- 功能:获取当前线程中存储的 `User` 对象。
- **`remove()`**:
- 功能:移除当前线程中存储的 `User` 对象。
### 目的:
- **功能**:
- 提供了一种在线程中存储用户信息的机制,通过 `ThreadLocal` 实现线程内部数据共享。
- 可以在多线程环境中方便地存取用户信息,避免跨线程数据混乱。
### 概要:
`UserThreadLocal` 类通过 `ThreadLocal` 实现了线程级别的用户信息存储,可以确保每个线程访问的用户数据是独立的,避免了线程安全问题。通常用于在Web应用中存储当前登录用户的信息,方便在整个请求处理过程中访问用户信息。
javascript
复制代码
package com.cqupt.software_1.common;
import com.cqupt.software_1.entity.User;
/**
* @author huing
* @create 2022-06-24 14:01
*/
public class UserThreadLocal {
private UserThreadLocal(){}
private static final ThreadLocal<User> LOCAL = new ThreadLocal<>();
public static void put(User sysUser){
LOCAL.set(sysUser);
}
public static User get(){
return LOCAL.get();
}
public static void remove(){
LOCAL.remove();
}
}