feat: 添加模型参数配置功能 - 数据库设计与后端实体类
1. 创建ccdi-project Maven模块 - 新建模块并配置pom.xml依赖 - 添加到根pom.xml的modules列表 - 在ruoyi-admin中添加模块依赖 2. 创建数据库表和初始化数据 - 建表语句: ccdi_model_param表 - 3个风险监测模型共15条参数配置 - 资产异常变动模型(5个参数) - 廉政风险评分模型(5个参数) - 关联交易监测模型(5个参数) 3. 创建后端实体类和DTO/VO - 实体类: CcdiModelParam.java - 查询DTO: ModelParamQueryDTO.java - 保存DTO: ModelParamSaveDTO.java (含验证注解) - 参数VO: ModelParamVO.java - 模型列表VO: ModelListVO.java 技术要点: - 使用@Data注解简化代码 - 不继承BaseEntity,独立定义审计字段 - DTO添加@NotBlank/@NotNull验证注解 - 包名遵循规范: com.ruoyi.ccdi.project - 项目编译通过: mvn clean compile
This commit is contained in:
35
ccdi-project/pom.xml
Normal file
35
ccdi-project/pom.xml
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>ruoyi</artifactId>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<version>3.9.1</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>ccdi-project</artifactId>
|
||||
|
||||
<description>
|
||||
纪检初核项目业务模块
|
||||
</description>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<!-- 通用工具-->
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi-common</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- lombok -->
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
@@ -0,0 +1,113 @@
|
||||
package com.ruoyi.ccdi.project.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 模型参数配置实体类
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Data
|
||||
@TableName("ccdi_model_param")
|
||||
public class CcdiModelParam implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 模型代码
|
||||
*/
|
||||
private String modelCode;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
*/
|
||||
private String modelName;
|
||||
|
||||
/**
|
||||
* 参数代码
|
||||
*/
|
||||
private String paramCode;
|
||||
|
||||
/**
|
||||
* 参数名称
|
||||
*/
|
||||
private String paramName;
|
||||
|
||||
/**
|
||||
* 参数值
|
||||
*/
|
||||
private String paramValue;
|
||||
|
||||
/**
|
||||
* 参数单位
|
||||
*/
|
||||
private String paramUnit;
|
||||
|
||||
/**
|
||||
* 参数类型(number-数值,string-字符串,boolean-布尔)
|
||||
*/
|
||||
private String paramType;
|
||||
|
||||
/**
|
||||
* 最小值(数值类型)
|
||||
*/
|
||||
private BigDecimal minValue;
|
||||
|
||||
/**
|
||||
* 最大值(数值类型)
|
||||
*/
|
||||
private BigDecimal maxValue;
|
||||
|
||||
/**
|
||||
* 参数描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 状态(0-正常,1-停用)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private String createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private String updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.ruoyi.ccdi.project.domain.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 模型参数查询DTO
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Data
|
||||
public class ModelParamQueryDTO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 模型代码
|
||||
*/
|
||||
private String modelCode;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
*/
|
||||
private String modelName;
|
||||
|
||||
/**
|
||||
* 参数代码
|
||||
*/
|
||||
private String paramCode;
|
||||
|
||||
/**
|
||||
* 参数名称
|
||||
*/
|
||||
private String paramName;
|
||||
|
||||
/**
|
||||
* 参数类型(number-数值,string-字符串,boolean-布尔)
|
||||
*/
|
||||
private String paramType;
|
||||
|
||||
/**
|
||||
* 状态(0-正常,1-停用)
|
||||
*/
|
||||
private String status;
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
package com.ruoyi.ccdi.project.domain.dto;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 模型参数保存DTO
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Data
|
||||
public class ModelParamSaveDTO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID(更新时必填)
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 模型代码
|
||||
*/
|
||||
@NotBlank(message = "模型代码不能为空")
|
||||
private String modelCode;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
*/
|
||||
@NotBlank(message = "模型名称不能为空")
|
||||
private String modelName;
|
||||
|
||||
/**
|
||||
* 参数代码
|
||||
*/
|
||||
@NotBlank(message = "参数代码不能为空")
|
||||
private String paramCode;
|
||||
|
||||
/**
|
||||
* 参数名称
|
||||
*/
|
||||
@NotBlank(message = "参数名称不能为空")
|
||||
private String paramName;
|
||||
|
||||
/**
|
||||
* 参数值
|
||||
*/
|
||||
@NotBlank(message = "参数值不能为空")
|
||||
private String paramValue;
|
||||
|
||||
/**
|
||||
* 参数单位
|
||||
*/
|
||||
private String paramUnit;
|
||||
|
||||
/**
|
||||
* 参数类型(number-数值,string-字符串,boolean-布尔)
|
||||
*/
|
||||
@NotBlank(message = "参数类型不能为空")
|
||||
private String paramType;
|
||||
|
||||
/**
|
||||
* 最小值(数值类型)
|
||||
*/
|
||||
private BigDecimal minValue;
|
||||
|
||||
/**
|
||||
* 最大值(数值类型)
|
||||
*/
|
||||
private BigDecimal maxValue;
|
||||
|
||||
/**
|
||||
* 参数描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@NotNull(message = "排序号不能为空")
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 状态(0-正常,1-停用)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.ruoyi.ccdi.project.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 模型列表VO
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Data
|
||||
public class ModelListVO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 模型代码
|
||||
*/
|
||||
private String modelCode;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
*/
|
||||
private String modelName;
|
||||
|
||||
/**
|
||||
* 参数数量
|
||||
*/
|
||||
private Integer paramCount;
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
package com.ruoyi.ccdi.project.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 模型参数VO
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Data
|
||||
public class ModelParamVO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 模型代码
|
||||
*/
|
||||
private String modelCode;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
*/
|
||||
private String modelName;
|
||||
|
||||
/**
|
||||
* 参数代码
|
||||
*/
|
||||
private String paramCode;
|
||||
|
||||
/**
|
||||
* 参数名称
|
||||
*/
|
||||
private String paramName;
|
||||
|
||||
/**
|
||||
* 参数值
|
||||
*/
|
||||
private String paramValue;
|
||||
|
||||
/**
|
||||
* 参数单位
|
||||
*/
|
||||
private String paramUnit;
|
||||
|
||||
/**
|
||||
* 参数类型(number-数值,string-字符串,boolean-布尔)
|
||||
*/
|
||||
private String paramType;
|
||||
|
||||
/**
|
||||
* 最小值(数值类型)
|
||||
*/
|
||||
private BigDecimal minValue;
|
||||
|
||||
/**
|
||||
* 最大值(数值类型)
|
||||
*/
|
||||
private BigDecimal maxValue;
|
||||
|
||||
/**
|
||||
* 参数描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 状态(0-正常,1-停用)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private String createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private String updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
}
|
||||
8
pom.xml
8
pom.xml
@@ -208,6 +208,13 @@
|
||||
<version>${ruoyi.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 纪检初核项目业务模块-->
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ccdi-project</artifactId>
|
||||
<version>${ruoyi.version}</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
@@ -219,6 +226,7 @@
|
||||
<module>ruoyi-generator</module>
|
||||
<module>ruoyi-common</module>
|
||||
<module>ruoyi-info-collection</module>
|
||||
<module>ccdi-project</module>
|
||||
</modules>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
|
||||
@@ -60,6 +60,12 @@
|
||||
<artifactId>ruoyi-info-collection</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 纪检初核项目业务模块-->
|
||||
<dependency>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ccdi-project</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
54
sql/ccdi_model_param.sql
Normal file
54
sql/ccdi_model_param.sql
Normal file
@@ -0,0 +1,54 @@
|
||||
-- ----------------------------
|
||||
-- 模型参数配置表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ccdi_model_param`;
|
||||
CREATE TABLE `ccdi_model_param` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`model_code` varchar(50) NOT NULL COMMENT '模型代码',
|
||||
`model_name` varchar(100) NOT NULL COMMENT '模型名称',
|
||||
`param_code` varchar(50) NOT NULL COMMENT '参数代码',
|
||||
`param_name` varchar(100) NOT NULL COMMENT '参数名称',
|
||||
`param_value` varchar(500) NOT NULL COMMENT '参数值',
|
||||
`param_unit` varchar(20) DEFAULT NULL COMMENT '参数单位',
|
||||
`param_type` varchar(20) NOT NULL COMMENT '参数类型(number-数值,string-字符串,boolean-布尔)',
|
||||
`min_value` decimal(20,4) DEFAULT NULL COMMENT '最小值(数值类型)',
|
||||
`max_value` decimal(20,4) DEFAULT NULL COMMENT '最大值(数值类型)',
|
||||
`description` varchar(500) DEFAULT NULL COMMENT '参数描述',
|
||||
`sort_order` int DEFAULT 0 COMMENT '排序号',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0-正常,1-停用)',
|
||||
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_model_param` (`model_code`, `param_code`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='模型参数配置表';
|
||||
|
||||
-- ----------------------------
|
||||
-- 初始化模型参数数据
|
||||
-- ----------------------------
|
||||
|
||||
-- 1. 资产异常变动模型参数 (5个参数)
|
||||
INSERT INTO `ccdi_model_param` (`model_code`, `model_name`, `param_code`, `param_name`, `param_value`, `param_unit`, `param_type`, `min_value`, `max_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `remark`) VALUES
|
||||
('ASSET_CHANGE', '资产异常变动模型', 'ASSET_THRESHOLD', '资产变动阈值', '50', '%', 'number', 0, 100, '资产变动百分比阈值,超过此值触发预警', 1, '0', 'admin', NOW(), NULL),
|
||||
('ASSET_CHANGE', '资产异常变动模型', 'MONITOR_PERIOD', '监控周期', '30', '天', 'number', 1, 365, '资产监控的统计周期', 2, '0', 'admin', NOW(), NULL),
|
||||
('ASSET_CHANGE', '资产异常变动模型', 'ALERT_FREQUENCY', '预警频率限制', '7', '天', 'number', 1, 30, '同一人员预警的最小间隔天数', 3, '0', 'admin', NOW(), NULL),
|
||||
('ASSET_CHANGE', '资产异常变动模型', 'MIN_AMOUNT', '最小监控金额', '10000', '元', 'number', 0, 999999999, '低于此金额的变动不监控', 4, '0', 'admin', NOW(), NULL),
|
||||
('ASSET_CHANGE', '资产异常变动模型', 'ENABLE_FAMILY', '是否监控家属', 'true', NULL, 'boolean', NULL, NULL, '是否同时监控员工家属资产变动', 5, '0', 'admin', NOW(), NULL);
|
||||
|
||||
-- 2. 廉政风险评分模型参数 (5个参数)
|
||||
INSERT INTO `ccdi_model_param` (`model_code`, `model_name`, `param_code`, `param_name`, `param_value`, `param_unit`, `param_type`, `min_value`, `max_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `remark`) VALUES
|
||||
('RISK_SCORE', '廉政风险评分模型', 'HIGH_RISK_THRESHOLD', '高风险阈值', '80', '分', 'number', 0, 100, '风险评分超过此值为高风险', 1, '0', 'admin', NOW(), NULL),
|
||||
('RISK_SCORE', '廉政风险评分模型', 'MEDIUM_RISK_THRESHOLD', '中风险阈值', '60', '分', 'number', 0, 100, '风险评分超过此值为中风险', 2, '0', 'admin', NOW(), NULL),
|
||||
('RISK_SCORE', '廉政风险评分模型', 'SCORE_VALIDITY', '评分有效期', '90', '天', 'number', 1, 365, '风险评分的有效期,过期需重新评估', 3, '0', 'admin', NOW(), NULL),
|
||||
('RISK_SCORE', '廉政风险评分模型', 'WEIGHT_BEHAVIOR', '行为异常权重', '0.4', NULL, 'number', 0, 1, '行为异常指标在总评分中的权重', 4, '0', 'admin', NOW(), NULL),
|
||||
('RISK_SCORE', '廉政风险评分模型', 'WEIGHT_RELATION', '关系异常权重', '0.3', NULL, 'number', 0, 1, '关系异常指标在总评分中的权重', 5, '0', 'admin', NOW(), NULL);
|
||||
|
||||
-- 3. 关联交易监测模型参数 (5个参数)
|
||||
INSERT INTO `ccdi_model_param` (`model_code`, `model_name`, `param_code`, `param_name`, `param_value`, `param_unit`, `param_type`, `min_value`, `max_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `remark`) VALUES
|
||||
('RELATED_TRANSACTION', '关联交易监测模型', 'TRANSACTION_THRESHOLD', '交易金额阈值', '50000', '元', 'number', 0, 999999999, '单笔交易金额超过此值触发监测', 1, '0', 'admin', NOW(), NULL),
|
||||
('RELATED_TRANSACTION', '关联交易监测模型', 'FREQUENCY_THRESHOLD', '交易频次阈值', '5', '次/月', 'number', 1, 100, '月交易频次超过此值触发监测', 2, '0', 'admin', NOW(), NULL),
|
||||
('RELATED_TRANSACTION', '关联交易监测模型', 'STATISTICS_WINDOW', '统计时间窗口', '180', '天', 'number', 30, 365, '交易统计的时间窗口', 3, '0', 'admin', NOW(), NULL),
|
||||
('RELATED_TRANSACTION', '关联交易监测模型', 'ENABLE_INTERMEDIARY', '监测中介关联', 'true', NULL, 'boolean', NULL, NULL, '是否监测通过中介的关联交易', 4, '0', 'admin', NOW(), NULL),
|
||||
('RELATED_TRANSACTION', '关联交易监测模型', 'BLACKLIST_CHECK', '黑名单校验开关', 'true', NULL, 'boolean', NULL, NULL, '是否对交易对方进行黑名单校验', 5, '0', 'admin', NOW(), NULL);
|
||||
Reference in New Issue
Block a user