init: 导入团队知识库内容

This commit is contained in:
yueqian-ai
2026-05-14 16:56:48 +08:00
commit acca2041f0
1681 changed files with 285734 additions and 0 deletions
+56
View File
@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright © 2026 Qiantong Technology Co., Ltd.
qModel Model Platform(Open Source Edition)
*
License:
Released under the Apache License, Version 2.0.
You may use, modify, and distribute this software for commercial purposes
under the terms of the License.
*
Special Notice:
All derivative versions are strictly prohibited from modifying or removing
the default system logo and copyright information.
For brand customization, please apply for brand customization authorization via official channels.
*
More information: https://qmodel.qiantong.tech/business.html
*
============================================================================
*
版权所有 © 2026 江苏千桐科技有限公司
qModel 模型平台(开源版)
*
许可协议:
本项目基于 Apache License 2.0 开源协议发布,
允许在遵守协议的前提下进行商用、修改和分发。
*
特别说明:
所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
如需定制品牌,请通过官方渠道申请品牌定制授权。
*
更多信息请访问:https://qmodel.qiantong.tech/business.html
-->
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>qModel</artifactId>
<groupId>tech.qiantong</groupId>
<version>1.0.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<modules>
<module>qmodel-module-model-api</module>
<module>qmodel-module-model-biz</module>
</modules>
<packaging>pom</packaging>
<artifactId>qmodel-module-model</artifactId>
<description>
anivia-module-example模块
</description>
</project>
@@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright © 2026 Qiantong Technology Co., Ltd.
qModel Model Platform(Open Source Edition)
*
License:
Released under the Apache License, Version 2.0.
You may use, modify, and distribute this software for commercial purposes
under the terms of the License.
*
Special Notice:
All derivative versions are strictly prohibited from modifying or removing
the default system logo and copyright information.
For brand customization, please apply for brand customization authorization via official channels.
*
More information: https://qmodel.qiantong.tech/business.html
*
============================================================================
*
版权所有 © 2026 江苏千桐科技有限公司
qModel 模型平台(开源版)
*
许可协议:
本项目基于 Apache License 2.0 开源协议发布,
允许在遵守协议的前提下进行商用、修改和分发。
*
特别说明:
所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
如需定制品牌,请通过官方渠道申请品牌定制授权。
*
更多信息请访问:https://qmodel.qiantong.tech/business.html
-->
<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>qmodel-module-model</artifactId>
<groupId>tech.qiantong</groupId>
<version>1.0.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>qmodel-module-model-api</artifactId>
<description>
system-api系统模块
</description>
<dependencies>
<!-- 通用工具-->
<dependency>
<groupId>tech.qiantong</groupId>
<artifactId>qmodel-common</artifactId>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,102 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.cacl.dto;
import lombok.Data;
import java.util.Date;
/**
* 模型计算重构 DTO 对象 MODEL_CACL_RECONSTITUTION
*
* @author qModel
* @date 2026-01-12
*/
@Data
public class ModelCaclReqDTO {
private static final long serialVersionUID = 1L;
/** 主键id */
private Long ID;
/** 企业id */
private Long companyId;
/** 计算编码 */
private String CODE;
/** 计算名称 */
private String NAME;
/** 模型id */
private Long modelId;
/** 模型名称 */
private String modelName;
/** 模型版本 */
private String modelVersion;
/** 开始时间 */
private Date startTime;
/** 结束时间 */
private Date endTime;
/** 计算状态 */
private Long STATUS;
/** 模型输入内容 */
private String inputContent;
/** 模型输出内容 */
private String outputContent;
/** 是否有效 0:无效,1:有效 */
private Boolean validFlag;
/** 删除标志 1:已删除,0:未删除 */
private Boolean delFlag;
/** 文件或接口地址id */
private Long addressId;
/** 判断是文件的id还是地址的id,0:文件,1:接口 */
private Long addressType;
/** 文件计算的历史方案id */
private Long mpProgrammeId;
}
@@ -0,0 +1,102 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.cacl.dto;
import lombok.Data;
import java.util.Date;
/**
* 模型计算重构 DTO 对象 MODEL_CACL_RECONSTITUTION
*
* @author qModel
* @date 2026-01-12
*/
@Data
public class ModelCaclRespDTO {
private static final long serialVersionUID = 1L;
/** 主键id */
private Long ID;
/** 企业id */
private Long companyId;
/** 计算编码 */
private String CODE;
/** 计算名称 */
private String NAME;
/** 模型id */
private Long modelId;
/** 模型名称 */
private String modelName;
/** 模型版本 */
private String modelVersion;
/** 开始时间 */
private Date startTime;
/** 结束时间 */
private Date endTime;
/** 计算状态 */
private Long STATUS;
/** 模型输入内容 */
private String inputContent;
/** 模型输出内容 */
private String outputContent;
/** 是否有效 0:无效,1:有效 */
private Boolean validFlag;
/** 删除标志 1:已删除,0:未删除 */
private Boolean delFlag;
/** 文件或接口地址id */
private Long addressId;
/** 判断是文件的id还是地址的id,0:文件,1:接口 */
private Long addressType;
/** 文件计算的历史方案id */
private Long mpProgrammeId;
}
@@ -0,0 +1,73 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.classify.dto;
import lombok.Data;
/**
* 模型分类 DTO 对象 MODEL_CLASSIFY
*
* @author qModel
* @date 2026-01-07
*/
@Data
public class ModelClassifyReqDTO {
private static final long serialVersionUID = 1L;
/** ID */
private Long id;
/** 企业id */
private Long companyId;
/** 父级id */
private Long parentId;
/** 祖籍列表 */
private String ancestors;
/** 分类名称 */
private String name;
/** 分类描述 */
private String description;
/** 是否有效 0:无效,1:有效 */
private Boolean validFlag;
/** 删除标志 1:已删除,0:未删除 */
private Boolean delFlag;
}
@@ -0,0 +1,75 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.classify.dto;
import lombok.Data;
/**
* 模型分类 DTO 对象 MODEL_CLASSIFY
*
* @author qModel
* @date 2026-01-07
*/
@Data
public class ModelClassifyRespDTO {
private static final long serialVersionUID = 1L;
/** ID */
private Long id;
/** 企业id */
private Long companyId;
/** 父级id */
private Long parentId;
/** 祖籍列表 */
private String ancestors;
/** 分类名称 */
private String name;
/** 分类描述 */
private String description;
/** 是否有效 0:无效,1:有效 */
private Boolean validFlag;
/** 删除标志 1:已删除,0:未删除 */
private Boolean delFlag;
}
@@ -0,0 +1,78 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.history.dto;
import lombok.Data;
import java.util.Date;
/**
* 模型历史 DTO 对象 MODEL_HISTORY
*
* @author qModel
* @date 2026-01-09
*/
@Data
public class ModelHistoryReqDTO {
private static final long serialVersionUID = 1L;
/** 主键id */
private Long id;
/** 企业id */
private Long companyId;
/** 所属模型id */
private Long modelId;
/** 所属模型名称 */
private String modelName;
/** 操作内容 */
private String context;
/** 启用时间 */
private Date startTime;
/** 启用版本号 */
private String modelVersion;
/** 是否有效 0:无效,1:有效 */
private Boolean validFlag;
/** 删除标志 1:已删除,0:未删除 */
private Boolean delFlag;
}
@@ -0,0 +1,78 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.history.dto;
import lombok.Data;
import java.util.Date;
/**
* 模型历史 DTO 对象 MODEL_HISTORY
*
* @author qModel
* @date 2026-01-09
*/
@Data
public class ModelHistoryRespDTO {
private static final long serialVersionUID = 1L;
/** 主键id */
private Long id;
/** 企业id */
private Long companyId;
/** 所属模型id */
private Long modelId;
/** 所属模型名称 */
private String modelName;
/** 操作内容 */
private String context;
/** 启用时间 */
private Date startTime;
/** 启用版本号 */
private String modelVersion;
/** 是否有效 0:无效,1:有效 */
private Boolean validFlag;
/** 删除标志 1:已删除,0:未删除 */
private Boolean delFlag;
}
@@ -0,0 +1,97 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.input.dto;
import lombok.Data;
/**
* 模型输入管理 DTO 对象 MODEL_INPUT
*
* @author qModel
* @date 2026-01-09
*/
@Data
public class ModelInputReqDTO {
private static final long serialVersionUID = 1L;
/** ID */
private Long id;
/** 企业Id */
private Long companyId;
/** 参数名称 */
private String name;
/** 英文名称 */
private String engName;
/** 参数类型 0:单值,1:多列数值,2:文件 */
private Long type;
/** 所属模型id */
private Long modelId;
/** 所属模型名称 */
private String modelName;
/** 所属模型版本 */
private String modelVersion;
/** 参数说明(描述) */
private String description;
/** 参数示例(文件上传) */
private String example;
/** 参数文件 */
private String paramFile;
/** 参数单值 */
private String singleContent;
/** 参数多列值 */
private String multipleContent;
/** 是否有效 0:无效,1:有效 */
private Boolean validFlag;
/** 删除标志 1:已删除,0:未删除 */
private Boolean delFlag;
/** 是否可变 */
private Boolean changeFlag;
}
@@ -0,0 +1,97 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.input.dto;
import lombok.Data;
/**
* 模型输入管理 DTO 对象 MODEL_INPUT
*
* @author qModel
* @date 2026-01-09
*/
@Data
public class ModelInputRespDTO {
private static final long serialVersionUID = 1L;
/** ID */
private Long id;
/** 企业Id */
private Long companyId;
/** 参数名称 */
private String name;
/** 英文名称 */
private String engName;
/** 参数类型 0:单值,1:多列数值,2:文件 */
private Long type;
/** 所属模型id */
private Long modelId;
/** 所属模型名称 */
private String modelName;
/** 所属模型版本 */
private String modelVersion;
/** 参数说明(描述) */
private String description;
/** 参数示例(文件上传) */
private String example;
/** 参数文件 */
private String paramFile;
/** 参数单值 */
private String singleContent;
/** 参数多列值 */
private String multipleContent;
/** 是否有效 0:无效,1:有效 */
private Boolean validFlag;
/** 删除标志 1:已删除,0:未删除 */
private Boolean delFlag;
/** 是否可变 */
private Boolean changeFlag;
}
@@ -0,0 +1,82 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.interfaceAddress.dto;
import lombok.Data;
/**
* 接口地址 DTO 对象 MODEL_INTERFACE_ADDRESS
*
* @author qModel
* @date 2026-01-09
*/
@Data
public class ModelInterfaceAddressReqDTO {
private static final long serialVersionUID = 1L;
/** id */
private Long id;
/** 企业id */
private Long companyId;
/** 模型id */
private Long modelId;
/** 接口地址 */
private String interfaceAddress;
/** 模型版本id */
private Long versionId;
/** 请求方式 */
private Integer requestMethod;
/** 输入参数 */
private String inputParameter;
/** 输出参数 */
private String outputParameter;
/** 删除标志 */
private Boolean delFlag;
/** 输入参数说明 */
private String inputParameterIllustrate;
/** 输出参数说明 */
private String outputParameterIllustrate;
}
@@ -0,0 +1,82 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.interfaceAddress.dto;
import lombok.Data;
/**
* 接口地址 DTO 对象 MODEL_INTERFACE_ADDRESS
*
* @author qModel
* @date 2026-01-09
*/
@Data
public class ModelInterfaceAddressRespDTO {
private static final long serialVersionUID = 1L;
/** id */
private Long id;
/** 企业id */
private Long companyId;
/** 模型id */
private Long modelId;
/** 接口地址 */
private String interfaceAddress;
/** 模型版本id */
private Long versionId;
/** 请求方式 */
private Integer requestMethod;
/** 输入参数 */
private String inputParameter;
/** 输出参数 */
private String outputParameter;
/** 删除标志 */
private Boolean delFlag;
/** 输入参数说明 */
private String inputParameterIllustrate;
/** 输出参数说明 */
private String outputParameterIllustrate;
}
@@ -0,0 +1,114 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.model.dto;
import lombok.Data;
import java.util.Date;
/**
* 模型管理 DTO 对象 MODEL
*
* @author qModel
* @date 2026-01-07
*/
@Data
public class ModelReqDTO {
private static final long serialVersionUID = 1L;
/** ID */
private Long id;
/** 企业id */
private Long companyId;
/** 分类id */
private Long classifyId;
/** 父级和自己id */
private String ancestors;
/** 模型名称 */
private String name;
/** 模型介绍 */
private String description;
/** 所属模型类别 0:水文,1:水动力,2:水质 */
private Long type;
/** 所属纬度 0:一维,1:二维,2:三维 */
private Long dimensions;
/** 模型版本号 */
private String version;
/** 模型调用接口 */
private String interfaceAddress;
/** 是否内置 0:否,1:是 */
private Long builtin;
/** 模型格式 */
private Long format;
/** 模型大小 0exe格式 */
private Long size;
/** 数据来源 */
private String source;
/** 上传状态 */
private Long uploadStatus;
/** 上传时间 */
private Date uploadTime;
/** 上传接口 */
private String uploadInterface;
/** 上传文件 */
private String uploadFile;
/** 文件地址 */
private String uploadLocation;
/** 是否有效 0:无效,1:有效 */
private Boolean validFlag;
/** 删除标志 1:已删除,0:未删除 */
private Boolean delFlag;
}
@@ -0,0 +1,114 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.model.dto;
import lombok.Data;
import java.util.Date;
/**
* 模型管理 DTO 对象 MODEL
*
* @author qModel
* @date 2026-01-07
*/
@Data
public class ModelRespDTO {
private static final long serialVersionUID = 1L;
/** ID */
private Long id;
/** 企业id */
private Long companyId;
/** 分类id */
private Long classifyId;
/** 父级和自己id */
private String ancestors;
/** 模型名称 */
private String name;
/** 模型介绍 */
private String description;
/** 所属模型类别 0:水文,1:水动力,2:水质 */
private Long type;
/** 所属纬度 0:一维,1:二维,2:三维 */
private Long dimensions;
/** 模型版本号 */
private String version;
/** 模型调用接口 */
private String interfaceAddress;
/** 是否内置 0:否,1:是 */
private Long builtin;
/** 模型格式 */
private Long format;
/** 模型大小 0exe格式 */
private Long size;
/** 数据来源 */
private String source;
/** 上传状态 */
private Long uploadStatus;
/** 上传时间 */
private Date uploadTime;
/** 上传接口 */
private String uploadInterface;
/** 上传文件 */
private String uploadFile;
/** 文件地址 */
private String uploadLocation;
/** 是否有效 0:无效,1:有效 */
private Boolean validFlag;
/** 删除标志 1:已删除,0:未删除 */
private Boolean delFlag;
}
@@ -0,0 +1,96 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.modelReconstitution.dto;
import lombok.Data;
import java.util.Date;
/**
* 模型库重构 DTO 对象 MODEL_RECONSTITUTION
*
* @author qModel
* @date 2026-01-12
*/
@Data
public class ModelReconstitutionReqDTO {
private static final long serialVersionUID = 1L;
/** id */
private Long id;
/** 企业id */
private Long companyId;
/** 模型名称 */
private String name;
/** 模型分类 */
private Long classifyId;
/** 是否预置 */
private Long builtin;
/** 接入方式 */
private Integer accessMode;
/** 请求方式 */
private Integer requestMethod;
/** 接口和文件的地址 */
private String interfaceorfileAddress;
/** 版本id */
private Long versionId;
/** 是否发布 */
private Long whetherPublish;
/** 发布时间 */
private Date publishTime;
/** 删除标志 */
private Boolean delFlag;
/** 接口的端口号 */
private String port;
/** 文件名称 */
private String filename;
/** 可执行文件相对路径 */
private String runnableFileAddress;
}
@@ -0,0 +1,96 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.modelReconstitution.dto;
import lombok.Data;
import java.util.Date;
/**
* 模型库重构 DTO 对象 MODEL_RECONSTITUTION
*
* @author qModel
* @date 2026-01-12
*/
@Data
public class ModelReconstitutionRespDTO {
private static final long serialVersionUID = 1L;
/** id */
private Long id;
/** 企业id */
private Long companyId;
/** 模型名称 */
private String name;
/** 模型分类 */
private Long classifyId;
/** 是否预置 */
private Long builtin;
/** 接入方式 */
private Integer accessMode;
/** 请求方式 */
private Integer requestMethod;
/** 接口和文件的地址 */
private String interfaceorfileAddress;
/** 版本id */
private Long versionId;
/** 是否发布 */
private Long whetherPublish;
/** 发布时间 */
private Date publishTime;
/** 删除标志 */
private Boolean delFlag;
/** 接口的端口号 */
private String port;
/** 文件名称 */
private String filename;
/** 可执行文件相对路径 */
private String runnableFileAddress;
}
@@ -0,0 +1,88 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.operate.dto;
import lombok.Data;
/**
* 模型历史管理 DTO 对象 MODEL_OPERATE
*
* @author qModel
* @date 2026-01-09
*/
@Data
public class ModelOperateReqDTO {
private static final long serialVersionUID = 1L;
/** ID */
private Long id;
/** 企业id */
private Long companyId;
/** 操作模块 */
private String moduleName;
/** 操作类型 */
private Long type;
/** 操作内容 */
private String content;
/** 请求方式 */
private String method;
/** 请求参数 */
private String reqContent;
/** 返回参数 */
private String respContent;
/** 操作地址(Ip) */
private String ip;
/** 操作地点 */
private String address;
/** 操作状态 */
private Integer status;
/** 是否有效 0:无效,1:有效 */
private Boolean validFlag;
/** 删除标志 1:已删除,0:未删除 */
private Boolean delFlag;
}
@@ -0,0 +1,88 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.operate.dto;
import lombok.Data;
/**
* 模型历史管理 DTO 对象 MODEL_OPERATE
*
* @author qModel
* @date 2026-01-09
*/
@Data
public class ModelOperateRespDTO {
private static final long serialVersionUID = 1L;
/** ID */
private Long id;
/** 企业id */
private Long companyId;
/** 操作模块 */
private String moduleName;
/** 操作类型 */
private Long type;
/** 操作内容 */
private String content;
/** 请求方式 */
private String method;
/** 请求参数 */
private String reqContent;
/** 返回参数 */
private String respContent;
/** 操作地址(Ip) */
private String ip;
/** 操作地点 */
private String address;
/** 操作状态 */
private Integer status;
/** 是否有效 0:无效,1:有效 */
private Boolean validFlag;
/** 删除标志 1:已删除,0:未删除 */
private Boolean delFlag;
}
@@ -0,0 +1,88 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.output.dto;
import lombok.Data;
/**
* 模型输出管理 DTO 对象 MODEL_OUTPUT
*
* @author qModel
* @date 2026-01-09
*/
@Data
public class ModelOutputReqDTO {
private static final long serialVersionUID = 1L;
/** ID */
private Long id;
/** 企业Id */
private Long companyId;
/** 参数名称 */
private String name;
/** 英文名称 */
private String engName;
/** 参数类型 0:单值,1:多列数值 */
private Long type;
/** 所属模型id */
private Long modelId;
/** 所属模型名称 */
private String modelName;
/** 所属模型版本 */
private String modelVersion;
/** 参数说明(描述) */
private String description;
/** 参数单值 */
private String singleContent;
/** 参数多列值 */
private String multipleContent;
/** 是否有效 0:无效,1:有效 */
private Boolean validFlag;
/** 删除标志 1:已删除,0:未删除 */
private Boolean delFlag;
}
@@ -0,0 +1,88 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.output.dto;
import lombok.Data;
/**
* 模型输出管理 DTO 对象 MODEL_OUTPUT
*
* @author qModel
* @date 2026-01-09
*/
@Data
public class ModelOutputRespDTO {
private static final long serialVersionUID = 1L;
/** ID */
private Long id;
/** 企业Id */
private Long companyId;
/** 参数名称 */
private String name;
/** 英文名称 */
private String engName;
/** 参数类型 0:单值,1:多列数值 */
private Long type;
/** 所属模型id */
private Long modelId;
/** 所属模型名称 */
private String modelName;
/** 所属模型版本 */
private String modelVersion;
/** 参数说明(描述) */
private String description;
/** 参数单值 */
private String singleContent;
/** 参数多列值 */
private String multipleContent;
/** 是否有效 0:无效,1:有效 */
private Boolean validFlag;
/** 删除标志 1:已删除,0:未删除 */
private Boolean delFlag;
}
@@ -0,0 +1,88 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.version.dto;
import lombok.Data;
/**
* 版本管理 DTO 对象 MODEL_VERSION
*
* @author qModel
* @date 2026-01-09
*/
@Data
public class ModelVersionReqDTO {
private static final long serialVersionUID = 1L;
/** id */
private Long id;
/** 企业id */
private Long companyId;
/** 所属模型id */
private Long modelId;
/** 所属模型名称 */
private String modelName;
/** 模型版本号 */
private String version;
/** 文件地址 */
private String fileAddress;
/** 接口地址 */
private String interfaceAddress;
/** 版本状态 */
private Integer status;
/** 描述 */
private String description;
/** 是否有效 0:无效,1:有效 */
private Boolean validFlag;
/** 删除标志 1:已删除,0:未删除 */
private Boolean delFlag;
/** 文件的名称 */
private String fileName;
/** 可执行文件地址 */
private String runnableFileAddress;
}
@@ -0,0 +1,88 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.api.version.dto;
import lombok.Data;
/**
* 版本管理 DTO 对象 MODEL_VERSION
*
* @author qModel
* @date 2026-01-09
*/
@Data
public class ModelVersionRespDTO {
private static final long serialVersionUID = 1L;
/** id */
private Long id;
/** 企业id */
private Long companyId;
/** 所属模型id */
private Long modelId;
/** 所属模型名称 */
private String modelName;
/** 模型版本号 */
private String version;
/** 文件地址 */
private String fileAddress;
/** 接口地址 */
private String interfaceAddress;
/** 版本状态 */
private Integer status;
/** 描述 */
private String description;
/** 是否有效 0:无效,1:有效 */
private Boolean validFlag;
/** 删除标志 1:已删除,0:未删除 */
private Boolean delFlag;
/** 文件的名称 */
private String fileName;
/** 可执行文件地址 */
private String runnableFileAddress;
}
@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright © 2026 Qiantong Technology Co., Ltd.
qModel Model Platform(Open Source Edition)
*
License:
Released under the Apache License, Version 2.0.
You may use, modify, and distribute this software for commercial purposes
under the terms of the License.
*
Special Notice:
All derivative versions are strictly prohibited from modifying or removing
the default system logo and copyright information.
For brand customization, please apply for brand customization authorization via official channels.
*
More information: https://qmodel.qiantong.tech/business.html
*
============================================================================
*
版权所有 © 2026 江苏千桐科技有限公司
qModel 模型平台(开源版)
*
许可协议:
本项目基于 Apache License 2.0 开源协议发布,
允许在遵守协议的前提下进行商用、修改和分发。
*
特别说明:
所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
如需定制品牌,请通过官方渠道申请品牌定制授权。
*
更多信息请访问:https://qmodel.qiantong.tech/business.html
-->
<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>qmodel-module-model</artifactId>
<groupId>tech.qiantong</groupId>
<version>1.0.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>qmodel-module-model-biz</artifactId>
<description>
system系统模块
</description>
<dependencies>
<!-- 核心模块 config-->
<dependency>
<groupId>tech.qiantong</groupId>
<artifactId>qmodel-config</artifactId>
<version>1.0.1</version>
</dependency>
<!-- 系統模块 websocket-->
<dependency>
<groupId>tech.qiantong</groupId>
<artifactId>qmodel-websocket</artifactId>
<version>1.0.1</version>
</dependency>
<!-- 系统模块 anivia-security -->
<dependency>
<groupId>tech.qiantong</groupId>
<artifactId>qmodel-security</artifactId>
<version>1.0.1</version>
</dependency>
<!-- 系统模块 mybatis -->
<dependency>
<groupId>tech.qiantong</groupId>
<artifactId>qmodel-mybatis</artifactId>
<version>1.0.1</version>
</dependency>
<!-- 系统模块 redis -->
<dependency>
<groupId>tech.qiantong</groupId>
<artifactId>qmodel-redis</artifactId>
<version>1.0.1</version>
</dependency>
<!-- 通用工具-->
<dependency>
<groupId>tech.qiantong</groupId>
<artifactId>qmodel-common</artifactId>
</dependency>
<!-- 文件上传-->
<dependency>
<groupId>tech.qiantong</groupId>
<artifactId>qmodel-file</artifactId>
<version>1.0.1</version>
</dependency>
<!-- es-->
<dependency>
<groupId>tech.qiantong</groupId>
<artifactId>qmodel-es</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,36 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
/**
* API 包,实现其他模块的 API
*/
package tech.qiantong.qmodel.module.example.api;
@@ -0,0 +1,136 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.controller.admin.gen;
import cn.hutool.core.date.DateUtil;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import tech.qiantong.qmodel.common.annotation.Log;
import tech.qiantong.qmodel.common.core.controller.BaseController;
import tech.qiantong.qmodel.common.core.domain.CommonResult;
import tech.qiantong.qmodel.common.core.page.PageParam;
import tech.qiantong.qmodel.common.enums.BusinessType;
import tech.qiantong.qmodel.common.exception.enums.GlobalErrorCodeConstants;
import tech.qiantong.qmodel.common.utils.object.BeanUtils;
import tech.qiantong.qmodel.common.utils.poi.ExcelUtil;
import tech.qiantong.qmodel.module.example.controller.admin.gen.vo.ExampleDeptPageReqVO;
import tech.qiantong.qmodel.module.example.controller.admin.gen.vo.ExampleDeptRespVO;
import tech.qiantong.qmodel.module.example.controller.admin.gen.vo.ExampleDeptSaveReqVO;
import tech.qiantong.qmodel.module.example.convert.gen.ExampleDeptConvert;
import tech.qiantong.qmodel.module.example.dal.dataobject.gen.ExampleDeptDO;
import tech.qiantong.qmodel.module.example.service.gen.IExampleDeptService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.List;
/**
* 示例部门Controller
*
* @author anivia
* @date 2024-12-09
*/
@Tag(name = "示例部门")
@RestController
@RequestMapping("/example/dept")
@Validated
public class ExampleDeptController extends BaseController {
@Resource
private IExampleDeptService exampleDeptService;
@Operation(summary = "查询示例部门列表")
@PreAuthorize("@ss.hasPermi('example:gen:dept:list')")
@GetMapping("/list")
public CommonResult<List<ExampleDeptRespVO>> list(ExampleDeptPageReqVO exampleDept) {
exampleDept.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ExampleDeptDO> list = (List<ExampleDeptDO>) exampleDeptService.getExampleDeptPage(exampleDept).getRows();
return CommonResult.success(BeanUtils.toBean(list, ExampleDeptRespVO.class));
}
@Operation(summary = "导出示例部门列表")
@PreAuthorize("@ss.hasPermi('example:gen:dept:export')")
@Log(title = "示例部门", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, ExampleDeptPageReqVO exportReqVO) {
exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ExampleDeptDO> list = (List<ExampleDeptDO>) exampleDeptService.getExampleDeptPage(exportReqVO).getRows();
ExcelUtil<ExampleDeptRespVO> util = new ExcelUtil<>(ExampleDeptRespVO.class);
util.exportExcel(response, ExampleDeptConvert.INSTANCE.convertToRespVOList(list), "应用管理数据");
}
@Operation(summary = "获取示例部门详细信息")
@PreAuthorize("@ss.hasPermi('example:gen:dept:query')")
@GetMapping(value = "/{id}")
public CommonResult<ExampleDeptRespVO> getInfo(@PathVariable("id") Long id) {
ExampleDeptDO exampleDeptDO = exampleDeptService.getExampleDeptById(id);
return CommonResult.success(BeanUtils.toBean(exampleDeptDO, ExampleDeptRespVO.class));
}
@Operation(summary = "新增示例部门")
@PreAuthorize("@ss.hasPermi('example:gen:dept:add')")
@Log(title = "示例部门", businessType = BusinessType.INSERT)
@PostMapping
public CommonResult<Long> add(@Valid @RequestBody ExampleDeptSaveReqVO exampleDept) {
exampleDept.setCreatorId(getUserId());
exampleDept.setCreateBy(getNickName());
exampleDept.setCreateTime(DateUtil.date());
return CommonResult.toAjax(exampleDeptService.createExampleDept(exampleDept));
}
@Operation(summary = "修改示例部门")
@PreAuthorize("@ss.hasPermi('example:gen:dept:edit')")
@Log(title = "示例部门", businessType = BusinessType.UPDATE)
@PutMapping
public CommonResult<Integer> edit(@Valid @RequestBody ExampleDeptSaveReqVO exampleDept) {
exampleDept.setUpdatorId(getUserId());
exampleDept.setUpdateBy(getNickName());
exampleDept.setUpdateTime(DateUtil.date());
return CommonResult.toAjax(exampleDeptService.updateExampleDept(exampleDept));
}
@Operation(summary = "删除示例部门")
@PreAuthorize("@ss.hasPermi('example:gen:dept:remove')")
@Log(title = "示例部门", businessType = BusinessType.DELETE)
@DeleteMapping("/{id}")
public CommonResult<Integer> remove(@PathVariable Long id) {
if (exampleDeptService.hasChildByExampleDeptId(id)) {
return CommonResult.error(GlobalErrorCodeConstants.ERROR.getCode(),"存在子示例部门,无法删除。");
}
return CommonResult.toAjax(exampleDeptService.removeExampleDept(id));
}
}
@@ -0,0 +1,71 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.controller.admin.gen.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.page.PageParam;
/**
* 示例部门 Request VO 对象 example_dept
*
* @author anivia
* @date 2024-12-09
*/
@Schema(description = "示例部门 Request VO")
@Data
public class ExampleDeptPageReqVO extends PageParam {
private static final long serialVersionUID = 1L;
@Schema(description = "ID", example = "")
private Long id;
@Schema(description = "部门名称", example = "")
private String name;
@Schema(description = "负责人", example = "")
private String leader;
@Schema(description = "联系电话", example = "")
private String phone;
@Schema(description = "邮箱", example = "")
private String email;
@Schema(description = "部门状态", example = "")
private Integer status;
}
@@ -0,0 +1,120 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.controller.admin.gen.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.annotation.Excel;
import java.io.Serializable;
import java.util.Date;
/**
* 示例部门 Response VO 对象 example_dept
*
* @author anivia
* @date 2024-12-09
*/
@Schema(description = "示例部门 Response VO")
@Data
public class ExampleDeptRespVO implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "ID")
private Long id;
@Excel(name = "父部门id")
@Schema(description = "父部门id", example = "")
private Long parentId;
@Excel(name = "部门名称")
@Schema(description = "部门名称", example = "")
private String name;
@Excel(name = "负责人")
@Schema(description = "负责人", example = "")
private String leader;
@Excel(name = "联系电话")
@Schema(description = "联系电话", example = "")
private String phone;
@Excel(name = "邮箱")
@Schema(description = "邮箱", example = "")
private String email;
@Excel(name = "部门状态")
@Schema(description = "部门状态", example = "")
private Integer status;
@Excel(name = "是否有效")
@Schema(description = "是否有效", example = "")
private Boolean validFlag;
@Excel(name = "删除标志")
@Schema(description = "删除标志", example = "")
private Boolean delFlag;
@Excel(name = "创建人")
@Schema(description = "创建人", example = "")
private String createBy;
@Excel(name = "创建人id")
@Schema(description = "创建人id", example = "")
private Long creatorId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "创建时间", example = "")
private Date createTime;
@Excel(name = "更新人")
@Schema(description = "更新人", example = "")
private String updateBy;
@Excel(name = "更新人id")
@Schema(description = "更新人id", example = "")
private Long updatorId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "更新时间", example = "")
private Date updateTime;
@Excel(name = "备注")
@Schema(description = "备注", example = "")
private String remark;
}
@@ -0,0 +1,82 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.controller.admin.gen.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.domain.BaseEntity;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
/**
* 示例部门 创建/修改 Request VO example_dept
*
* @author anivia
* @date 2024-12-09
*/
@Schema(description = "示例部门 Response VO")
@Data
public class ExampleDeptSaveReqVO extends BaseEntity {
private static final long serialVersionUID = 1L;
@Schema(description = "ID")
private Long id;
@Schema(description = "父部门id", example = "")
@NotNull(message = "父部门id不能为空")
private Long parentId;
@Schema(description = "部门名称", example = "")
@Size(max = 256, message = "部门名称长度不能超过256个字符")
private String name;
@Schema(description = "负责人", example = "")
@Size(max = 256, message = "负责人长度不能超过256个字符")
private String leader;
@Schema(description = "联系电话", example = "")
@Size(max = 256, message = "联系电话长度不能超过256个字符")
private String phone;
@Schema(description = "邮箱", example = "")
@Size(max = 256, message = "邮箱长度不能超过256个字符")
private String email;
@Schema(description = "部门状态", example = "")
@NotNull(message = "部门状态不能为空")
private Integer status;
}
@@ -0,0 +1,140 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.controller.admin.genStudent;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import tech.qiantong.qmodel.common.annotation.Log;
import tech.qiantong.qmodel.common.core.controller.BaseController;
import tech.qiantong.qmodel.common.core.domain.AjaxResult;
import tech.qiantong.qmodel.common.core.domain.CommonResult;
import tech.qiantong.qmodel.common.core.page.PageParam;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.common.enums.BusinessType;
import tech.qiantong.qmodel.common.utils.object.BeanUtils;
import tech.qiantong.qmodel.common.utils.poi.ExcelUtil;
import tech.qiantong.qmodel.module.example.controller.admin.genStudent.vo.ExampleStudentPageReqVO;
import tech.qiantong.qmodel.module.example.controller.admin.genStudent.vo.ExampleStudentRespVO;
import tech.qiantong.qmodel.module.example.controller.admin.genStudent.vo.ExampleStudentSaveReqVO;
import tech.qiantong.qmodel.module.example.convert.genStudent.ExampleStudentConvert;
import tech.qiantong.qmodel.module.example.dal.dataobject.genStudent.ExampleStudentDO;
import tech.qiantong.qmodel.module.example.service.genStudent.IExampleStudentService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.Arrays;
import java.util.List;
/**
* 学生Controller
*
* @author anivia
* @date 2025-02-18
*/
@Tag(name = "学生")
@RestController
@RequestMapping("/example/genStudent")
@Validated
public class ExampleStudentController extends BaseController {
@Resource
private IExampleStudentService exampleStudentService;
@Operation(summary = "查询学生列表")
@PreAuthorize("@ss.hasPermi('example:genStudent:genstudent:list')")
@GetMapping("/list")
public CommonResult<PageResult<ExampleStudentRespVO>> list(ExampleStudentPageReqVO exampleStudent) {
PageResult<ExampleStudentDO> page = exampleStudentService.getExampleStudentPage(exampleStudent);
return CommonResult.success(BeanUtils.toBean(page, ExampleStudentRespVO.class));
}
@Operation(summary = "导出学生列表")
@PreAuthorize("@ss.hasPermi('example:genStudent:genstudent:export')")
@Log(title = "学生", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, ExampleStudentPageReqVO exportReqVO) {
exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ExampleStudentDO> list = (List<ExampleStudentDO>) exampleStudentService.getExampleStudentPage(exportReqVO).getRows();
ExcelUtil<ExampleStudentRespVO> util = new ExcelUtil<>(ExampleStudentRespVO.class);
util.exportExcel(response, ExampleStudentConvert.INSTANCE.convertToRespVOList(list), "应用管理数据");
}
@Operation(summary = "导入学生列表")
@PreAuthorize("@ss.hasPermi('example:genStudent:genstudent:import')")
@Log(title = "学生", businessType = BusinessType.IMPORT)
@PostMapping("/importData")
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
ExcelUtil<ExampleStudentRespVO> util = new ExcelUtil<>(ExampleStudentRespVO.class);
List<ExampleStudentRespVO> importExcelList = util.importExcel(file.getInputStream());
String operName = getNickName();
String message = exampleStudentService.importExampleStudent(importExcelList, updateSupport, operName);
return success(message);
}
@Operation(summary = "获取学生详细信息")
@PreAuthorize("@ss.hasPermi('example:genStudent:genstudent:query')")
@GetMapping(value = "/{id}")
public CommonResult<ExampleStudentRespVO> getInfo(@PathVariable("id") Long id) {
ExampleStudentDO exampleStudentDO = exampleStudentService.getExampleStudentById(id);
return CommonResult.success(BeanUtils.toBean(exampleStudentDO, ExampleStudentRespVO.class));
}
@Operation(summary = "新增学生")
@PreAuthorize("@ss.hasPermi('example:genStudent:genstudent:add')")
@Log(title = "学生", businessType = BusinessType.INSERT)
@PostMapping
public CommonResult<Long> add(@Valid @RequestBody ExampleStudentSaveReqVO exampleStudent) {
return CommonResult.toAjax(exampleStudentService.createExampleStudent(exampleStudent));
}
@Operation(summary = "修改学生")
@PreAuthorize("@ss.hasPermi('example:genStudent:genstudent:edit')")
@Log(title = "学生", businessType = BusinessType.UPDATE)
@PutMapping
public CommonResult<Integer> edit(@Valid @RequestBody ExampleStudentSaveReqVO exampleStudent) {
return CommonResult.toAjax(exampleStudentService.updateExampleStudent(exampleStudent));
}
@Operation(summary = "删除学生")
@PreAuthorize("@ss.hasPermi('example:genStudent:genstudent:remove')")
@Log(title = "学生", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public CommonResult<Integer> remove(@PathVariable Long[] ids) {
return CommonResult.toAjax(exampleStudentService.removeExampleStudent(Arrays.asList(ids)));
}
}
@@ -0,0 +1,84 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.controller.admin.genStudent.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.page.PageParam;
import java.util.Date;
/**
* 学生 Request VO 对象 example_student
*
* @author anivia
* @date 2025-02-18
*/
@Schema(description = "学生 Request VO")
@Data
public class ExampleStudentPageReqVO extends PageParam {
private static final long serialVersionUID = 1L;
@Schema(description = "ID", example = "")
private Long id;
@Schema(description = "姓名", example = "")
private String name;
@Schema(description = "学生照", example = "")
private String pictureUrl;
@Schema(description = "教育经历", example = "")
private String experience;
@Schema(description = "性别", example = "")
private Integer sex;
@Schema(description = "生日", example = "")
private Date birthday;
@Schema(description = "年龄", example = "")
private Long age;
@Schema(description = "学号", example = "")
private String studentNumber;
@Schema(description = "班级", example = "")
private Integer grade;
@Schema(description = "爱好", example = "")
private String hobby;
}
@@ -0,0 +1,134 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.controller.admin.genStudent.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.annotation.Excel;
import java.io.Serializable;
import java.util.Date;
/**
* 学生 Response VO 对象 example_student
*
* @author anivia
* @date 2025-02-18
*/
@Schema(description = "学生 Response VO")
@Data
public class ExampleStudentRespVO implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "ID")
@Schema(description = "ID")
private Long id;
@Excel(name = "姓名")
@Schema(description = "姓名", example = "")
private String name;
@Excel(name = "学生照")
@Schema(description = "学生照", example = "")
private String pictureUrl;
@Excel(name = "教育经历")
@Schema(description = "教育经历", example = "")
private String experience;
@Excel(name = "性别")
@Schema(description = "性别", example = "")
private Integer sex;
@Excel(name = "生日", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "生日", example = "")
private Date birthday;
@Excel(name = "年龄")
@Schema(description = "年龄", example = "")
private Long age;
@Excel(name = "学号")
@Schema(description = "学号", example = "")
private String studentNumber;
@Excel(name = "班级")
@Schema(description = "班级", example = "")
private Integer grade;
@Excel(name = "爱好")
@Schema(description = "爱好", example = "")
private String hobby;
@Excel(name = "是否有效")
@Schema(description = "是否有效", example = "")
private Boolean validFlag;
@Excel(name = "删除标志")
@Schema(description = "删除标志", example = "")
private Boolean delFlag;
@Excel(name = "创建人")
@Schema(description = "创建人", example = "")
private String createBy;
@Excel(name = "创建人id")
@Schema(description = "创建人id", example = "")
private Long creatorId;
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "创建时间", example = "")
private Date createTime;
@Excel(name = "更新人")
@Schema(description = "更新人", example = "")
private String updateBy;
@Excel(name = "更新人id")
@Schema(description = "更新人id", example = "")
private Long updatorId;
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "更新时间", example = "")
private Date updateTime;
@Excel(name = "备注")
@Schema(description = "备注", example = "")
private String remark;
}
@@ -0,0 +1,100 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.controller.admin.genStudent.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.domain.BaseEntity;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;
/**
* 学生 创建/修改 Request VO example_student
*
* @author anivia
* @date 2025-02-18
*/
@Schema(description = "学生 Response VO")
@Data
public class ExampleStudentSaveReqVO extends BaseEntity {
private static final long serialVersionUID = 1L;
@Schema(description = "ID")
private Long id;
@Schema(description = "姓名", example = "")
@NotBlank(message = "姓名不能为空")
@Size(max = 256, message = "姓名长度不能超过256个字符")
private String name;
@Schema(description = "学生照", example = "")
@Size(max = 256, message = "学生照长度不能超过256个字符")
private String pictureUrl;
@Schema(description = "教育经历", example = "")
@Size(max = 256, message = "教育经历长度不能超过256个字符")
private String experience;
@Schema(description = "性别", example = "")
private Integer sex;
@Schema(description = "生日", example = "")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date birthday;
@Schema(description = "年龄", example = "")
@NotNull(message = "年龄不能为空")
private Long age;
@Schema(description = "学号", example = "")
@Size(max = 256, message = "学号长度不能超过256个字符")
private String studentNumber;
@Schema(description = "班级", example = "")
private Integer grade;
@Schema(description = "爱好", example = "")
@Size(max = 256, message = "爱好长度不能超过256个字符")
private String hobby;
@Schema(description = "备注", example = "")
@Size(max = 256, message = "备注长度不能超过256个字符")
private String remark;
}
@@ -0,0 +1,132 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.controller.admin.user;
import cn.hutool.core.date.DateUtil;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import tech.qiantong.qmodel.common.annotation.Log;
import tech.qiantong.qmodel.common.core.controller.BaseController;
import tech.qiantong.qmodel.common.core.domain.CommonResult;
import tech.qiantong.qmodel.common.core.page.PageParam;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.common.enums.BusinessType;
import tech.qiantong.qmodel.common.utils.object.BeanUtils;
import tech.qiantong.qmodel.common.utils.poi.ExcelUtil;
import tech.qiantong.qmodel.module.example.controller.admin.user.vo.UserTypePageReqVO;
import tech.qiantong.qmodel.module.example.controller.admin.user.vo.UserTypeRespVO;
import tech.qiantong.qmodel.module.example.controller.admin.user.vo.UserTypeSaveReqVO;
import tech.qiantong.qmodel.module.example.convert.user.UserTypeConvert;
import tech.qiantong.qmodel.module.example.dal.dataobject.user.UserTypeDO;
import tech.qiantong.qmodel.module.example.service.user.IUserTypeService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.Arrays;
import java.util.List;
/**
* 用户类型Controller
*
* @author anivia
* @date 2024-11-27
*/
@Tag(name = "用户类型")
@RestController
@RequestMapping("/example/userType")
@Validated
public class UserTypeController extends BaseController {
@Resource
private IUserTypeService userTypeService;
@Operation(summary = "查询用户类型列表")
@PreAuthorize("@ss.hasPermi('example:user:list')")
@GetMapping("/list")
public CommonResult<PageResult<UserTypeRespVO>> list(UserTypePageReqVO userType) {
PageResult<UserTypeDO> page = userTypeService.getUserTypePage(userType);
return CommonResult.success(BeanUtils.toBean(page, UserTypeRespVO.class));
}
@Operation(summary = "导出用户类型列表")
@PreAuthorize("@ss.hasPermi('example:user:export')")
@Log(title = "用户类型", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, UserTypePageReqVO exportReqVO) {
exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<UserTypeDO> list = (List<UserTypeDO>) userTypeService.getUserTypePage(exportReqVO).getRows();
ExcelUtil<UserTypeRespVO> util = new ExcelUtil<>(UserTypeRespVO.class);
util.exportExcel(response, UserTypeConvert.INSTANCE.convertToRespVOList(list), "应用管理数据");
}
@Operation(summary = "获取用户类型详细信息")
@PreAuthorize("@ss.hasPermi('example:user:query')")
@GetMapping(value = "/{id}")
public CommonResult<UserTypeRespVO> getInfo(@PathVariable("id") Long id) {
UserTypeDO userTypeDO = userTypeService.getUserTypeById(id);
return CommonResult.success(BeanUtils.toBean(userTypeDO, UserTypeRespVO.class));
}
@Operation(summary = "新增用户类型")
@PreAuthorize("@ss.hasPermi('example:user:add')")
@Log(title = "用户类型", businessType = BusinessType.INSERT)
@PostMapping
public CommonResult<Long> add(@Valid @RequestBody UserTypeSaveReqVO userType) {
userType.setCreatorId(getUserId());
userType.setCreateBy(getNickName());
userType.setCreateTime(DateUtil.date());
return CommonResult.toAjax(userTypeService.createUserType(userType));
}
@Operation(summary = "修改用户类型")
@PreAuthorize("@ss.hasPermi('example:user:edit')")
@Log(title = "用户类型", businessType = BusinessType.UPDATE)
@PutMapping
public CommonResult<Integer> edit(@Valid @RequestBody UserTypeSaveReqVO userType) {
userType.setUpdatorId(getUserId());
userType.setUpdateBy(getNickName());
userType.setUpdateTime(DateUtil.date());
return CommonResult.toAjax(userTypeService.updateUserType(userType));
}
@Operation(summary = "删除用户类型")
@PreAuthorize("@ss.hasPermi('example:user:remove')")
@Log(title = "用户类型", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public CommonResult<Integer> remove(@PathVariable Long[] ids) {
return CommonResult.toAjax(userTypeService.removeUserType(Arrays.asList(ids)));
}
}
@@ -0,0 +1,65 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.controller.admin.user.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.page.PageParam;
/**
* 用户类型 Request VO 对象 user_type
*
* @author anivia
* @date 2024-11-27
*/
@Schema(description = "用户类型 Request VO")
@Data
public class UserTypePageReqVO extends PageParam {
private static final long serialVersionUID = 1L;
@Schema(description = "ID")
private Long id;
@Schema(description = "类型名称", example = "")
private String name;
@Schema(description = "是否有效", example = "")
private Boolean validFlag;
@Schema(description = "删除标识")
private Boolean delFlag;
}
@@ -0,0 +1,107 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.controller.admin.user.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.annotation.Excel;
import java.util.Date;
/**
* 用户类型 Response VO 对象 user_type
*
* @author anivia
* @date 2024-11-27
*/
@Schema(description = "用户类型 Response VO")
@Data
public class UserTypeRespVO {
private static final long serialVersionUID = 1L;
@Schema(description = "ID")
private Long id;
@Excel(name = "类型名称")
@Schema(description = "类型名称", example = "")
private String name;
@Excel(name = "是否有效")
@Schema(description = "是否有效", example = "")
private Boolean validFlag;
@Schema(description = "删除标识")
private Boolean delFlag;
@Excel(name = "创建人")
@Schema(description = "创建人", example = "")
private String createBy;
@Excel(name = "创建人id")
@Schema(description = "创建人id", example = "")
private Long creatorId;
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
@Schema(description = "创建时间", example = "")
private Date createTime;
@Excel(name = "更新人")
@Schema(description = "更新人", example = "")
private String updateBy;
@Excel(name = "更新人id")
@Schema(description = "更新人id", example = "")
private Long updatorId;
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
@Schema(description = "更新时间", example = "")
private Date updateTime;
@Excel(name = "备注")
@Schema(description = "备注", example = "")
private String remark;
}
@@ -0,0 +1,90 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.controller.admin.user.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.Size;
import java.util.Date;
/**
* 用户类型 创建/修改 Request VO user_type
*
* @author anivia
* @date 2024-11-27
*/
@Schema(description = "用户类型 Response VO")
@Data
public class UserTypeSaveReqVO {
private static final long serialVersionUID = 1L;
@Schema(description = "ID")
private Long id;
@Schema(description = "类型名称", example = "")
@Size(max = 256, message = "类型名称长度不能超过256个字符")
private String name;
@Schema(description = "是否有效", example = "")
private Boolean validFlag;
@Schema(description = "删除标识")
private Boolean delFlag;
@Schema(description = "创建者id")
private Long creatorId;
@Schema(description = "创建者", example = "")
private String createBy;
@Schema(description = "创建时间", example = "")
private Date createTime;
@Schema(description = "更新者", example = "")
private String updateBy;
@Schema(description = "更新时间", example = "")
private Date updateTime;
@Schema(description = "备注", example = "")
private String remark;
@Schema(description = "更新人id", example = "")
private Long updatorId;
}
@@ -0,0 +1,81 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.convert.gen;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import tech.qiantong.qmodel.module.example.controller.admin.gen.vo.ExampleDeptPageReqVO;
import tech.qiantong.qmodel.module.example.controller.admin.gen.vo.ExampleDeptRespVO;
import tech.qiantong.qmodel.module.example.controller.admin.gen.vo.ExampleDeptSaveReqVO;
import tech.qiantong.qmodel.module.example.dal.dataobject.gen.ExampleDeptDO;
import java.util.List;
/**
* 示例部门 Convert
*
* @author anivia
* @date 2024-12-09
*/
@Mapper
public interface ExampleDeptConvert {
ExampleDeptConvert INSTANCE = Mappers.getMapper(ExampleDeptConvert.class);
/**
* PageReqVO 转换为 DO
* @param exampleDeptPageReqVO 请求参数
* @return ExampleDeptDO
*/
ExampleDeptDO convertToDO(ExampleDeptPageReqVO exampleDeptPageReqVO);
/**
* SaveReqVO 转换为 DO
* @param exampleDeptSaveReqVO 保存请求参数
* @return ExampleDeptDO
*/
ExampleDeptDO convertToDO(ExampleDeptSaveReqVO exampleDeptSaveReqVO);
/**
* DO 转换为 RespVO
* @param exampleDeptDO 实体对象
* @return ExampleDeptRespVO
*/
ExampleDeptRespVO convertToRespVO(ExampleDeptDO exampleDeptDO);
/**
* DOList 转换为 RespVOList
* @param exampleDeptDOList 实体对象列表
* @return List<ExampleDeptRespVO>
*/
List<ExampleDeptRespVO> convertToRespVOList(List<ExampleDeptDO> exampleDeptDOList);
}
@@ -0,0 +1,81 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.convert.genStudent;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import tech.qiantong.qmodel.module.example.controller.admin.genStudent.vo.ExampleStudentPageReqVO;
import tech.qiantong.qmodel.module.example.controller.admin.genStudent.vo.ExampleStudentRespVO;
import tech.qiantong.qmodel.module.example.controller.admin.genStudent.vo.ExampleStudentSaveReqVO;
import tech.qiantong.qmodel.module.example.dal.dataobject.genStudent.ExampleStudentDO;
import java.util.List;
/**
* 学生 Convert
*
* @author anivia
* @date 2025-02-18
*/
@Mapper
public interface ExampleStudentConvert {
ExampleStudentConvert INSTANCE = Mappers.getMapper(ExampleStudentConvert.class);
/**
* PageReqVO 转换为 DO
* @param exampleStudentPageReqVO 请求参数
* @return ExampleStudentDO
*/
ExampleStudentDO convertToDO(ExampleStudentPageReqVO exampleStudentPageReqVO);
/**
* SaveReqVO 转换为 DO
* @param exampleStudentSaveReqVO 保存请求参数
* @return ExampleStudentDO
*/
ExampleStudentDO convertToDO(ExampleStudentSaveReqVO exampleStudentSaveReqVO);
/**
* DO 转换为 RespVO
* @param exampleStudentDO 实体对象
* @return ExampleStudentRespVO
*/
ExampleStudentRespVO convertToRespVO(ExampleStudentDO exampleStudentDO);
/**
* DOList 转换为 RespVOList
* @param exampleStudentDOList 实体对象列表
* @return List<ExampleStudentRespVO>
*/
List<ExampleStudentRespVO> convertToRespVOList(List<ExampleStudentDO> exampleStudentDOList);
}
@@ -0,0 +1,81 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.convert.user;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import tech.qiantong.qmodel.module.example.controller.admin.user.vo.UserTypePageReqVO;
import tech.qiantong.qmodel.module.example.controller.admin.user.vo.UserTypeRespVO;
import tech.qiantong.qmodel.module.example.controller.admin.user.vo.UserTypeSaveReqVO;
import tech.qiantong.qmodel.module.example.dal.dataobject.user.UserTypeDO;
import java.util.List;
/**
* 用户类型 Convert
*
* @author anivia
* @date 2024-11-27
*/
@Mapper
public interface UserTypeConvert {
UserTypeConvert INSTANCE = Mappers.getMapper(UserTypeConvert.class);
/**
* PageReqVO 转换为 DO
* @param userTypePageReqVO 请求参数
* @return UserTypeDO
*/
UserTypeDO convertToDO(UserTypePageReqVO userTypePageReqVO);
/**
* SaveReqVO 转换为 DO
* @param userTypeSaveReqVO 保存请求参数
* @return UserTypeDO
*/
UserTypeDO convertToDO(UserTypeSaveReqVO userTypeSaveReqVO);
/**
* DO 转换为 RespVO
* @param userTypeDO 实体对象
* @return UserTypeRespVO
*/
UserTypeRespVO convertToRespVO(UserTypeDO userTypeDO);
/**
* DOList 转换为 RespVOList
* @param userTypeDOList 实体对象列表
* @return List<UserTypeRespVO>
*/
List<UserTypeRespVO> convertToRespVOList(List<UserTypeDO> userTypeDOList);
}
@@ -0,0 +1,88 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.dal.dataobject.gen;
import com.baomidou.mybatisplus.annotation.*;
import lombok.*;
import tech.qiantong.qmodel.common.core.domain.BaseEntity;
/**
* 示例部门 DO 对象 example_dept
*
* @author anivia
* @date 2024-12-09
*/
@Data
@TableName(value = "example_dept")
// 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
// @KeySequence("example_dept_seq")
@EqualsAndHashCode(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ExampleDeptDO extends BaseEntity {
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** ID */
@TableId(type = IdType.AUTO)
private Long id;
/** 父部门id */
private Long parentId;
/** 部门名称 */
private String name;
/** 负责人 */
private String leader;
/** 联系电话 */
private String phone;
/** 邮箱 */
private String email;
/** 部门状态 */
private Integer status;
/** 是否有效 */
private Boolean validFlag;
/** 删除标志 */
@TableLogic
private Boolean delFlag;
}
@@ -0,0 +1,98 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.dal.dataobject.genStudent;
import com.baomidou.mybatisplus.annotation.*;
import lombok.*;
import tech.qiantong.qmodel.common.core.domain.BaseEntity;
import java.util.Date;
/**
* 学生 DO 对象 example_student
*
* @author anivia
* @date 2025-02-18
*/
@Data
@TableName(value = "example_student")
// 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
// @KeySequence("example_student_seq")
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class ExampleStudentDO extends BaseEntity {
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** ID */
@TableId(type = IdType.AUTO)
private Long id;
/** 姓名 */
private String name;
/** 学生照 */
private String pictureUrl;
/** 教育经历 */
private String experience;
/** 性别 */
private Integer sex;
/** 生日 */
private Date birthday;
/** 年龄 */
private Long age;
/** 学号 */
private String studentNumber;
/** 班级 */
private Integer grade;
/** 爱好 */
private String hobby;
/** 是否有效 */
private Boolean validFlag;
/** 删除标志 */
@TableLogic
private Boolean delFlag;
}
@@ -0,0 +1,94 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.dal.dataobject.student;
import com.baomidou.mybatisplus.annotation.*;
import lombok.*;
import tech.qiantong.qmodel.common.core.domain.BaseEntity;
/**
* 学生 DO 对象 example_student_test
*
* @author anivia
* @date 2024-12-06
*/
@Data
@TableName(value = "example_student_test")
// 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
// @KeySequence("example_student_test_seq")
@EqualsAndHashCode(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ExampleStudentTestDO extends BaseEntity {
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** ID */
@TableId(type = IdType.AUTO)
private Long id;
/** 姓名 */
private String name;
/** 学生照 */
private String pictureUrl;
/** 教育经历 */
private String experience;
/** 性别 */
private Integer sex;
/** 年龄 */
private Long age;
/** 学号 */
private String studentNumber;
/** 班级 */
private Integer grade;
/** 爱好 */
private String hobby;
/** 是否有效 */
private Boolean validFlag;
/** 删除标志 */
@TableLogic
private Boolean delFlag;
}
@@ -0,0 +1,74 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.dal.dataobject.user;
import com.baomidou.mybatisplus.annotation.*;
import lombok.*;
import tech.qiantong.qmodel.common.core.domain.BaseEntity;
/**
* 用户类型 DO 对象 user_type
*
* @author anivia
* @date 2024-11-27
*/
@Data
@TableName(value = "user_type")
// 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
// @KeySequence("user_type_seq")
@EqualsAndHashCode(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserTypeDO extends BaseEntity {
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** ID */
@TableId(type = IdType.AUTO)
private Long id;
/** 类型名称 */
private String name;
/** 是否有效 */
private Boolean validFlag;
/** 删除标志 */
@TableLogic
private Boolean delFlag;
}
@@ -0,0 +1,72 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.dal.mapper.gen;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.module.example.controller.admin.gen.vo.ExampleDeptPageReqVO;
import tech.qiantong.qmodel.module.example.dal.dataobject.gen.ExampleDeptDO;
import tech.qiantong.qmodel.mybatis.core.mapper.BaseMapperX;
import tech.qiantong.qmodel.mybatis.core.query.LambdaQueryWrapperX;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
/**
* 示例部门Mapper接口
*
* @author anivia
* @date 2024-12-09
*/
public interface ExampleDeptMapper extends BaseMapperX<ExampleDeptDO> {
default PageResult<ExampleDeptDO> selectPage(ExampleDeptPageReqVO reqVO) {
// 定义排序的字段(防止 SQL 注入,与数据库字段名称一致)
Set<String> allowedColumns = new HashSet<>(Arrays.asList("id", "create_time", "update_time"));
// 构造动态查询条件
return selectPage(reqVO, new LambdaQueryWrapperX<ExampleDeptDO>()
.eqIfPresent(ExampleDeptDO::getId, reqVO.getId())
.likeIfPresent(ExampleDeptDO::getName, reqVO.getName())
.eqIfPresent(ExampleDeptDO::getLeader, reqVO.getLeader())
.eqIfPresent(ExampleDeptDO::getPhone, reqVO.getPhone())
.eqIfPresent(ExampleDeptDO::getEmail, reqVO.getEmail())
.eqIfPresent(ExampleDeptDO::getStatus, reqVO.getStatus())
.betweenIfPresent(ExampleDeptDO::getCreateTime, reqVO.getParamByKey("beginCreateTime"), reqVO.getParamByKey("endCreateTime"))
.betweenIfPresent(ExampleDeptDO::getUpdateTime, reqVO.getParamByKey("beginUpdateTime"), reqVO.getParamByKey("endUpdateTime"))
// 如果 reqVO.getName() 不为空,则添加 name 的精确匹配条件(name = '<name>'
// .likeIfPresent(ExampleDeptDO::getName, reqVO.getName())
// 按照 createTime 字段降序排序
.orderBy(reqVO.getOrderByColumn(), reqVO.getIsAsc(), allowedColumns));
}
}
@@ -0,0 +1,74 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.dal.mapper.genStudent;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.module.example.controller.admin.genStudent.vo.ExampleStudentPageReqVO;
import tech.qiantong.qmodel.module.example.dal.dataobject.genStudent.ExampleStudentDO;
import tech.qiantong.qmodel.mybatis.core.mapper.BaseMapperX;
import tech.qiantong.qmodel.mybatis.core.query.LambdaQueryWrapperX;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
/**
* 学生Mapper接口
*
* @author anivia
* @date 2025-02-18
*/
public interface ExampleStudentMapper extends BaseMapperX<ExampleStudentDO> {
default PageResult<ExampleStudentDO> selectPage(ExampleStudentPageReqVO reqVO) {
// 定义排序的字段(防止 SQL 注入,与数据库字段名称一致)
Set<String> allowedColumns = new HashSet<>(Arrays.asList("id", "create_time", "update_time"));
// 构造动态查询条件
return selectPage(reqVO, new LambdaQueryWrapperX<ExampleStudentDO>()
.likeIfPresent(ExampleStudentDO::getName, reqVO.getName())
.eqIfPresent(ExampleStudentDO::getPictureUrl, reqVO.getPictureUrl())
.eqIfPresent(ExampleStudentDO::getExperience, reqVO.getExperience())
.eqIfPresent(ExampleStudentDO::getSex, reqVO.getSex())
.betweenIfPresent(ExampleStudentDO::getBirthday, reqVO.getParamByKey("beginBirthday"), reqVO.getParamByKey("endBirthday"))
.eqIfPresent(ExampleStudentDO::getAge, reqVO.getAge())
.eqIfPresent(ExampleStudentDO::getStudentNumber, reqVO.getStudentNumber())
.eqIfPresent(ExampleStudentDO::getGrade, reqVO.getGrade())
.eqIfPresent(ExampleStudentDO::getHobby, reqVO.getHobby())
.eqIfPresent(ExampleStudentDO::getCreateTime, reqVO.getCreateTime())
// 如果 reqVO.getName() 不为空,则添加 name 的精确匹配条件(name = '<name>'
// .likeIfPresent(ExampleStudentDO::getName, reqVO.getName())
// 按照 createTime 字段降序排序
.orderBy(reqVO.getOrderByColumn(), reqVO.getIsAsc(), allowedColumns));
}
}
@@ -0,0 +1,75 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.dal.mapper.user;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.module.example.controller.admin.user.vo.UserTypePageReqVO;
import tech.qiantong.qmodel.module.example.dal.dataobject.user.UserTypeDO;
import tech.qiantong.qmodel.mybatis.core.mapper.BaseMapperX;
import tech.qiantong.qmodel.mybatis.core.query.LambdaQueryWrapperX;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
/**
* 用户类型Mapper接口
*
* @author anivia
* @date 2024-12-03
*/
public interface UserTypeMapper extends BaseMapperX<UserTypeDO> {
default PageResult<UserTypeDO> selectPage(UserTypePageReqVO reqVO) {
// 定义允许排序的字段集合()
Set<String> allowedColumns = new HashSet<>(Arrays.asList("id", "name", "create_time", "update_time"));
// 构造动态查询条件
return selectPage(reqVO, new LambdaQueryWrapperX<UserTypeDO>()
.eqIfPresent(UserTypeDO::getId, reqVO.getId())
.likeIfPresent(UserTypeDO::getName, reqVO.getName())
.neIfPresent(UserTypeDO::getValidFlag, reqVO.getValidFlag())
.eqIfPresent(UserTypeDO::getDelFlag, reqVO.getDelFlag())
.eqIfPresent(UserTypeDO::getCreateBy, reqVO.getCreateBy())
.eqIfPresent(UserTypeDO::getCreatorId, reqVO.getCreatorId())
.betweenIfPresent(UserTypeDO::getCreateTime, reqVO.getParamByKey("beginCreateTime"), reqVO.getParamByKey("endCreateTime"))
.eqIfPresent(UserTypeDO::getUpdateBy, reqVO.getUpdateBy())
.eqIfPresent(UserTypeDO::getUpdatorId, reqVO.getUpdatorId())
.betweenIfPresent(UserTypeDO::getUpdateTime, reqVO.getParamByKey("beginUpdateTime"), reqVO.getParamByKey("endUpdateTime"))
.eqIfPresent(UserTypeDO::getRemark, reqVO.getRemark())
// 如果 reqVO.getName() 不为空,则添加 name 的精确匹配条件(name = '<name>'
// .likeIfPresent(UserTypeDO::getName, reqVO.getName())
// 按照 createTime 字段降序排序
.orderBy(reqVO.getOrderByColumn(),reqVO.getIsAsc(),allowedColumns));
}
}
@@ -0,0 +1,112 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.service.gen;
import com.baomidou.mybatisplus.extension.service.IService;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.module.example.controller.admin.gen.vo.ExampleDeptPageReqVO;
import tech.qiantong.qmodel.module.example.controller.admin.gen.vo.ExampleDeptSaveReqVO;
import tech.qiantong.qmodel.module.example.dal.dataobject.gen.ExampleDeptDO;
import java.util.List;
import java.util.Map;
/**
* 示例部门Service接口
*
* @author anivia
* @date 2024-12-09
*/
public interface IExampleDeptService extends IService<ExampleDeptDO> {
/**
* 获得示例部门分页列表
*
* @param pageReqVO 分页请求
* @return 示例部门分页列表
*/
PageResult<ExampleDeptDO> getExampleDeptPage(ExampleDeptPageReqVO pageReqVO);
/**
* 创建示例部门
*
* @param createReqVO 示例部门信息
* @return 示例部门编号
*/
Long createExampleDept(ExampleDeptSaveReqVO createReqVO);
/**
* 更新示例部门
*
* @param updateReqVO 示例部门信息
*/
int updateExampleDept(ExampleDeptSaveReqVO updateReqVO);
/**
* 删除示例部门
*
* @param id 示例部门编号
*/
int removeExampleDept(Long id);
/**
* 获得示例部门详情
*
* @param id 示例部门编号
* @return 示例部门
*/
ExampleDeptDO getExampleDeptById(Long id);
/**
* 获得全部示例部门列表
*
* @return 示例部门列表
*/
List<ExampleDeptDO> getExampleDeptList();
/**
* 获得全部示例部门 Map
*
* @return 示例部门 Map
*/
Map<Long, ExampleDeptDO> getExampleDeptMap();
/**
* 是否存在示例部门子节点
*
* @param id 示例部门id
* @return 结果 true 存在 false 不存在
*/
boolean hasChildByExampleDeptId(Long id);
}
@@ -0,0 +1,118 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.service.gen.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.common.utils.object.BeanUtils;
import tech.qiantong.qmodel.module.example.controller.admin.gen.vo.ExampleDeptPageReqVO;
import tech.qiantong.qmodel.module.example.controller.admin.gen.vo.ExampleDeptSaveReqVO;
import tech.qiantong.qmodel.module.example.dal.dataobject.gen.ExampleDeptDO;
import tech.qiantong.qmodel.module.example.dal.mapper.gen.ExampleDeptMapper;
import tech.qiantong.qmodel.module.example.service.gen.IExampleDeptService;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 示例部门Service业务层处理
*
* @author anivia
* @date 2024-12-09
*/
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class ExampleDeptServiceImpl extends ServiceImpl<ExampleDeptMapper,ExampleDeptDO> implements IExampleDeptService {
@Resource
private ExampleDeptMapper exampleDeptMapper;
@Override
public PageResult<ExampleDeptDO> getExampleDeptPage(ExampleDeptPageReqVO pageReqVO) {
return exampleDeptMapper.selectPage(pageReqVO);
}
@Override
public Long createExampleDept(ExampleDeptSaveReqVO createReqVO) {
ExampleDeptDO dictType = BeanUtils.toBean(createReqVO, ExampleDeptDO.class);
exampleDeptMapper.insert(dictType);
return dictType.getId();
}
@Override
public int updateExampleDept(ExampleDeptSaveReqVO updateReqVO) {
// 相关校验
// 更新示例部门
ExampleDeptDO updateObj = BeanUtils.toBean(updateReqVO, ExampleDeptDO.class);
return exampleDeptMapper.updateById(updateObj);
}
@Override
public int removeExampleDept(Long id) {
// 单独删除示例部门
return exampleDeptMapper.deleteById(id);
}
@Override
public ExampleDeptDO getExampleDeptById(Long id) {
return exampleDeptMapper.selectById(id);
}
@Override
public List<ExampleDeptDO> getExampleDeptList() {
return exampleDeptMapper.selectList();
}
@Override
public Map<Long, ExampleDeptDO> getExampleDeptMap() {
List<ExampleDeptDO> exampleDeptList = exampleDeptMapper.selectList();
return exampleDeptList.stream()
.collect(Collectors.toMap(
ExampleDeptDO::getId,
exampleDeptDO -> exampleDeptDO,
// 保留已存在的值
(existing, replacement) -> existing
));
}
@Override
public boolean hasChildByExampleDeptId(Long id) {
return exampleDeptMapper.selectCount(ExampleDeptDO::getParentId, id) > 0;
}
}
@@ -0,0 +1,116 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.service.genStudent;
import com.baomidou.mybatisplus.extension.service.IService;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.module.example.controller.admin.genStudent.vo.ExampleStudentPageReqVO;
import tech.qiantong.qmodel.module.example.controller.admin.genStudent.vo.ExampleStudentRespVO;
import tech.qiantong.qmodel.module.example.controller.admin.genStudent.vo.ExampleStudentSaveReqVO;
import tech.qiantong.qmodel.module.example.dal.dataobject.genStudent.ExampleStudentDO;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* 学生Service接口
*
* @author anivia
* @date 2025-02-18
*/
public interface IExampleStudentService extends IService<ExampleStudentDO> {
/**
* 获得学生分页列表
*
* @param pageReqVO 分页请求
* @return 学生分页列表
*/
PageResult<ExampleStudentDO> getExampleStudentPage(ExampleStudentPageReqVO pageReqVO);
/**
* 创建学生
*
* @param createReqVO 学生信息
* @return 学生编号
*/
Long createExampleStudent(ExampleStudentSaveReqVO createReqVO);
/**
* 更新学生
*
* @param updateReqVO 学生信息
*/
int updateExampleStudent(ExampleStudentSaveReqVO updateReqVO);
/**
* 删除学生
*
* @param idList 学生编号
*/
int removeExampleStudent(Collection<Long> idList);
/**
* 获得学生详情
*
* @param id 学生编号
* @return 学生
*/
ExampleStudentDO getExampleStudentById(Long id);
/**
* 获得全部学生列表
*
* @return 学生列表
*/
List<ExampleStudentDO> getExampleStudentList();
/**
* 获得全部学生 Map
*
* @return 学生 Map
*/
Map<Long, ExampleStudentDO> getExampleStudentMap();
/**
* 导入学生数据
*
* @param importExcelList 学生数据列表
* @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
* @param operName 操作用户
* @return 结果
*/
String importExampleStudent(List<ExampleStudentRespVO> importExcelList, boolean isUpdateSupport, String operName);
}
@@ -0,0 +1,187 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.service.genStudent.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.common.exception.ServiceException;
import tech.qiantong.qmodel.common.utils.StringUtils;
import tech.qiantong.qmodel.common.utils.object.BeanUtils;
import tech.qiantong.qmodel.module.example.controller.admin.genStudent.vo.ExampleStudentPageReqVO;
import tech.qiantong.qmodel.module.example.controller.admin.genStudent.vo.ExampleStudentRespVO;
import tech.qiantong.qmodel.module.example.controller.admin.genStudent.vo.ExampleStudentSaveReqVO;
import tech.qiantong.qmodel.module.example.dal.dataobject.genStudent.ExampleStudentDO;
import tech.qiantong.qmodel.module.example.dal.mapper.genStudent.ExampleStudentMapper;
import tech.qiantong.qmodel.module.example.service.genStudent.IExampleStudentService;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 学生Service业务层处理
*
* @author anivia
* @date 2025-02-18
*/
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class ExampleStudentServiceImpl extends ServiceImpl<ExampleStudentMapper,ExampleStudentDO> implements IExampleStudentService {
@Resource
private ExampleStudentMapper exampleStudentMapper;
@Override
public PageResult<ExampleStudentDO> getExampleStudentPage(ExampleStudentPageReqVO pageReqVO) {
return exampleStudentMapper.selectPage(pageReqVO);
}
@Override
public Long createExampleStudent(ExampleStudentSaveReqVO createReqVO) {
ExampleStudentDO dictType = BeanUtils.toBean(createReqVO, ExampleStudentDO.class);
exampleStudentMapper.insert(dictType);
return dictType.getId();
}
@Override
public int updateExampleStudent(ExampleStudentSaveReqVO updateReqVO) {
// 相关校验
// 更新学生
ExampleStudentDO updateObj = BeanUtils.toBean(updateReqVO, ExampleStudentDO.class);
return exampleStudentMapper.updateById(updateObj);
}
@Override
public int removeExampleStudent(Collection<Long> idList) {
// 批量删除学生
return exampleStudentMapper.deleteBatchIds(idList);
}
@Override
public ExampleStudentDO getExampleStudentById(Long id) {
return exampleStudentMapper.selectById(id);
}
@Override
public List<ExampleStudentDO> getExampleStudentList() {
return exampleStudentMapper.selectList();
}
@Override
public Map<Long, ExampleStudentDO> getExampleStudentMap() {
List<ExampleStudentDO> exampleStudentList = exampleStudentMapper.selectList();
return exampleStudentList.stream()
.collect(Collectors.toMap(
ExampleStudentDO::getId,
exampleStudentDO -> exampleStudentDO,
// 保留已存在的值
(existing, replacement) -> existing
));
}
/**
* 导入学生数据
*
* @param importExcelList 学生数据列表
* @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
* @param operName 操作用户
* @return 结果
*/
@Override
public String importExampleStudent(List<ExampleStudentRespVO> importExcelList, boolean isUpdateSupport, String operName) {
if (StringUtils.isNull(importExcelList) || importExcelList.size() == 0) {
throw new ServiceException("导入数据不能为空!");
}
int successNum = 0;
int failureNum = 0;
List<String> successMessages = new ArrayList<>();
List<String> failureMessages = new ArrayList<>();
for (ExampleStudentRespVO respVO : importExcelList) {
try {
ExampleStudentDO exampleStudentDO = BeanUtils.toBean(respVO, ExampleStudentDO.class);
Long exampleStudentId = respVO.getId();
if (isUpdateSupport) {
if (exampleStudentId != null) {
ExampleStudentDO existingExampleStudent = exampleStudentMapper.selectById(exampleStudentId);
if (existingExampleStudent != null) {
exampleStudentMapper.updateById(exampleStudentDO);
successNum++;
successMessages.add("数据更新成功,ID为 " + exampleStudentId + " 的学生记录。");
} else {
failureNum++;
failureMessages.add("数据更新失败,ID为 " + exampleStudentId + " 的学生记录不存在。");
}
} else {
failureNum++;
failureMessages.add("数据更新失败,某条记录的ID不存在。");
}
} else {
QueryWrapper<ExampleStudentDO> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id", exampleStudentId);
ExampleStudentDO existingExampleStudent = exampleStudentMapper.selectOne(queryWrapper);
if (existingExampleStudent == null) {
exampleStudentMapper.insert(exampleStudentDO);
successNum++;
successMessages.add("数据插入成功,ID为 " + exampleStudentId + " 的学生记录。");
} else {
failureNum++;
failureMessages.add("数据插入失败,ID为 " + exampleStudentId + " 的学生记录已存在。");
}
}
} catch (Exception e) {
failureNum++;
String errorMsg = "数据导入失败,错误信息:" + e.getMessage();
failureMessages.add(errorMsg);
log.error(errorMsg, e);
}
}
StringBuilder resultMsg = new StringBuilder();
if (failureNum > 0) {
resultMsg.append("很抱歉,导入失败!共 ").append(failureNum).append(" 条数据格式不正确,错误如下:");
resultMsg.append("<br/>").append(String.join("<br/>", failureMessages));
throw new ServiceException(resultMsg.toString());
} else {
resultMsg.append("恭喜您,数据已全部导入成功!共 ").append(successNum).append(" 条。");
}
return resultMsg.toString();
}
}
@@ -0,0 +1,105 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.service.user;
import com.baomidou.mybatisplus.extension.service.IService;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.module.example.controller.admin.user.vo.UserTypePageReqVO;
import tech.qiantong.qmodel.module.example.controller.admin.user.vo.UserTypeSaveReqVO;
import tech.qiantong.qmodel.module.example.dal.dataobject.user.UserTypeDO;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* 用户类型Service接口
*
* @author anivia
* @date 2024-11-27
*/
public interface IUserTypeService extends IService<UserTypeDO> {
/**
* 获得用户类型分页列表
*
* @param pageReqVO 分页请求
* @return 用户类型分页列表
*/
PageResult<UserTypeDO> getUserTypePage(UserTypePageReqVO pageReqVO);
/**
* 创建用户类型
*
* @param createReqVO 用户类型信息
* @return 用户类型编号
*/
Long createUserType(UserTypeSaveReqVO createReqVO);
/**
* 更新用户类型
*
* @param updateReqVO 用户类型信息
*/
int updateUserType(UserTypeSaveReqVO updateReqVO);
/**
* 删除用户类型
*
* @param idList 用户类型编号
*/
int removeUserType(Collection<Long> idList);
/**
* 获得用户类型详情
*
* @param id 用户类型编号
* @return 用户类型
*/
UserTypeDO getUserTypeById(Long id);
/**
* 获得全部用户类型列表
*
* @return 用户类型列表
*/
List<UserTypeDO> getUserTypeList();
/**
* 获得全部用户类型 Map
*
* @return 用户类型 Map
*/
Map<Long, UserTypeDO> getUserTypeMap();
}
@@ -0,0 +1,115 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.example.service.user.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.common.utils.object.BeanUtils;
import tech.qiantong.qmodel.module.example.controller.admin.user.vo.UserTypePageReqVO;
import tech.qiantong.qmodel.module.example.controller.admin.user.vo.UserTypeSaveReqVO;
import tech.qiantong.qmodel.module.example.dal.dataobject.user.UserTypeDO;
import tech.qiantong.qmodel.module.example.dal.mapper.user.UserTypeMapper;
import tech.qiantong.qmodel.module.example.service.user.IUserTypeService;
import javax.annotation.Resource;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 用户类型Service业务层处理
*
* @author anivia
* @date 2024-11-27
*/
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class UserTypeServiceImpl extends ServiceImpl<UserTypeMapper,UserTypeDO> implements IUserTypeService {
@Resource
private UserTypeMapper userTypeMapper;
@Override
public PageResult<UserTypeDO> getUserTypePage(UserTypePageReqVO pageReqVO) {
return userTypeMapper.selectPage(pageReqVO);
}
@Override
public Long createUserType(UserTypeSaveReqVO createReqVO) {
UserTypeDO dictType = BeanUtils.toBean(createReqVO, UserTypeDO.class);
userTypeMapper.insert(dictType);
return dictType.getId();
}
@Override
public int updateUserType(UserTypeSaveReqVO updateReqVO) {
// 相关校验
// 更新用户类型
UserTypeDO updateObj = BeanUtils.toBean(updateReqVO, UserTypeDO.class);
return userTypeMapper.updateById(updateObj);
}
@Override
public int removeUserType(Collection<Long> idList) {
// 批量删除用户类型
return userTypeMapper.deleteBatchIds(idList);
}
@Override
public UserTypeDO getUserTypeById(Long id) {
return userTypeMapper.selectById(id);
}
@Override
public List<UserTypeDO> getUserTypeList() {
return userTypeMapper.selectList();
}
@Override
public Map<Long, UserTypeDO> getUserTypeMap() {
List<UserTypeDO> userTypeList = userTypeMapper.selectList();
return userTypeList.stream()
.collect(Collectors.toMap(
UserTypeDO::getId,
userTypeDO -> userTypeDO,
// 保留已存在的值
(existing, replacement) -> existing
));
}
}
@@ -0,0 +1,451 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.cacl;
import cn.hutool.core.io.file.FileReader;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSONArray;
import com.google.common.collect.Maps;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import tech.qiantong.qmodel.common.annotation.Log;
import tech.qiantong.qmodel.common.core.controller.BaseController;
import tech.qiantong.qmodel.common.core.domain.AjaxResult;
import tech.qiantong.qmodel.common.core.domain.CommonResult;
import tech.qiantong.qmodel.common.core.domain.R;
import tech.qiantong.qmodel.common.core.page.PageParam;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.common.enums.BusinessType;
import tech.qiantong.qmodel.common.utils.DateUtils;
import tech.qiantong.qmodel.common.utils.StringUtils;
import tech.qiantong.qmodel.common.utils.object.BeanUtils;
import tech.qiantong.qmodel.common.utils.poi.ExcelUtil;
import tech.qiantong.qmodel.module.model.controller.admin.cacl.vo.ModelCaclSaveReqVO;
import tech.qiantong.qmodel.module.model.controller.admin.modelCacl.vo.ModelCaclPageReqVO;
import tech.qiantong.qmodel.module.model.controller.admin.modelCacl.vo.ModelCaclRespVO;
import tech.qiantong.qmodel.module.model.dal.dataobject.cacl.ModelCaclDO;
import tech.qiantong.qmodel.module.model.dal.dataobject.input.ModelInputDO;
import tech.qiantong.qmodel.module.model.dal.dataobject.interfaceAddress.ModelInterfaceAddressDO;
import tech.qiantong.qmodel.module.model.domain.ModelCacl;
import tech.qiantong.qmodel.module.model.domain.ModelInput;
import tech.qiantong.qmodel.module.model.enums.RequestMethodEnum;
import tech.qiantong.qmodel.module.model.service.cacl.IModelCaclService;
import tech.qiantong.qmodel.module.model.service.history.IModelHistoryService;
import tech.qiantong.qmodel.module.model.service.input.IModelInputService;
import tech.qiantong.qmodel.module.model.service.interfaceAddress.IModelInterfaceAddressService;
import tech.qiantong.qmodel.module.model.service.model.IModelService;
import tech.qiantong.qmodel.module.model.service.modelReconstitution.IModelReconstitutionService;
import tech.qiantong.qmodel.module.model.enums.AccessModeEnum;
import tech.qiantong.qmodel.module.modelReconstitution.domain.ModelReconstitution;
import tech.qiantong.qmodel.module.modelReconstitution.service.IModelVirtualCalcService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 模型计算重构Controller
*
* @author qModel
* @date 2026-01-12
*/
@Tag(name = "模型计算重构")
@RestController
@RequestMapping("/model/cacl")
@Validated
public class ModelCaclController extends BaseController {
@Resource
private IModelCaclService modelCaclService;
@Resource
private IModelReconstitutionService modelReconstitutionService;
@Resource
private IModelInterfaceAddressService modelInterfaceAddressService;
@Resource
private IModelHistoryService modelHistoryService;
@Resource
private IModelInputService modelInputReconstitutionService;
@Resource
private IModelVirtualCalcService modelVirtualCalcService;
@Resource
private IModelService modelService;
@Operation(summary = "查询模型计算重构列表")
@PreAuthorize("@ss.hasPermi('model:modelCacl:cacl:list')")
@GetMapping("/list")
public CommonResult<PageResult<ModelCaclRespVO>> list(ModelCaclPageReqVO modelCacl) {
PageResult<ModelCaclDO> page = modelCaclService.getModelCaclPage(modelCacl);
return CommonResult.success(BeanUtils.toBean(page, ModelCaclRespVO.class));
}
@Operation(summary = "导出模型计算重构列表")
@PreAuthorize("@ss.hasPermi('model:modelCacl:cacl:export')")
@Log(title = "模型计算重构", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, ModelCaclPageReqVO exportReqVO) {
exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ModelCaclDO> list = (List<ModelCaclDO>) modelCaclService.getModelCaclPage(exportReqVO).getRows();
ExcelUtil<ModelCaclRespVO> util = new ExcelUtil<>(ModelCaclRespVO.class);
util.exportExcel(response, BeanUtils.toBean(list, ModelCaclRespVO.class), "模型计算数据");
}
@Operation(summary = "导入模型计算重构列表")
@PreAuthorize("@ss.hasPermi('model:modelCacl:cacl:import')")
@Log(title = "模型计算重构", businessType = BusinessType.IMPORT)
@PostMapping("/importData")
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
ExcelUtil<ModelCaclRespVO> util = new ExcelUtil<>(ModelCaclRespVO.class);
List<ModelCaclRespVO> importExcelList = util.importExcel(file.getInputStream());
String operName = getUsername();
String message = modelCaclService.importModelCacl(importExcelList, updateSupport, operName);
return success(message);
}
@Operation(summary = "获取模型计算重构详细信息")
@PreAuthorize("@ss.hasPermi('model:modelCacl:cacl:query')")
@GetMapping(value = "/{id}")
public CommonResult<ModelCaclRespVO> getInfo(@PathVariable("id") Long id) {
ModelCaclDO modelCaclDO = modelCaclService.getModelCaclById(id);
if (AccessModeEnum.API_INTERFACE.getValue().equals(modelCaclDO.getAddressType())){
ModelInterfaceAddressDO interfaceAddress = modelInterfaceAddressService.getModelInterfaceAddressById(modelCaclDO.getAddressId());
modelCaclDO.setAddress(interfaceAddress.getInterfaceAddress());
modelCaclDO.setRequestMethod(interfaceAddress.getRequestMethod());
}
return CommonResult.success(BeanUtils.toBean(modelCaclDO, ModelCaclRespVO.class));
}
@Operation(summary = "新增模型计算重构")
@PreAuthorize("@ss.hasPermi('model:modelCacl:cacl:add')")
@Log(title = "模型计算重构", businessType = BusinessType.INSERT)
@PostMapping
public CommonResult<Long> add(@Valid @RequestBody ModelCaclSaveReqVO modelCacl) {
if (modelCacl != null) {
modelHistoryService.createModelHistory(modelCacl.getModelId(), modelCacl.getModelName(), "添加了一条【" + modelCacl.getName() + "】模型计算", modelCacl.getModelVersion(), getUserId(), getNickName());
}
return CommonResult.toAjax(modelCaclService.createModelCacl(modelCacl));
}
@Operation(summary = "修改模型计算重构")
@PreAuthorize("@ss.hasPermi('model:modelCacl:cacl:edit')")
@Log(title = "模型计算重构", businessType = BusinessType.UPDATE)
@PutMapping
public CommonResult<Integer> edit(@Valid @RequestBody ModelCaclSaveReqVO modelCacl) {
if (modelCacl != null) {
modelHistoryService.createModelHistory(modelCacl.getModelId(), modelCacl.getModelName(), "修改了【" + modelCacl.getName() + "】基本信息", modelCacl.getModelVersion(), getUserId(), getNickName());
}
return CommonResult.toAjax(modelCaclService.updateModelCacl(modelCacl));
}
@Operation(summary = "删除模型计算重构")
@PreAuthorize("@ss.hasPermi('model:modelCacl:cacl:remove')")
@Log(title = "模型计算重构", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public CommonResult<Integer> remove(@PathVariable Long[] ids) {
return CommonResult.toAjax(modelCaclService.removeModelCacl(Arrays.asList(ids)));
}
/**
* 开始计算模型
*/
@Log(title = "模型计算管理", businessType = BusinessType.UPDATE)
@GetMapping("/calculate")
public R calculate(@RequestParam(value = "modelCaclId") Long modelCaclId) throws IOException {
ModelCaclDO modelCacl = modelCaclService.getModelCaclById(modelCaclId);
ModelReconstitution model = modelReconstitutionService.selectModelReconstitutionById(modelCacl.getModelId());
if (AccessModeEnum.API_INTERFACE.getValue().equals(model.getAccessMode())) {
JSONObject jsonObject = new JSONObject();
String result = "";
ModelInterfaceAddressDO interfaceAddress = modelInterfaceAddressService.getModelInterfaceAddressById(modelCacl.getAddressId());
if (modelCacl.getInputContent() == null) {
jsonObject = JSONUtil.parseObj(interfaceAddress.getInputParameter());
} else {
jsonObject = JSONUtil.parseObj(modelCacl.getInputContent());
}
Map<String, String> headersMap = new HashMap<>();
headersMap.put("userId", getUserId().toString());
RequestMethodEnum requestMethod = RequestMethodEnum.getByValue(interfaceAddress.getRequestMethod());
switch (requestMethod) {
case GET:
String url = HttpUtil.urlWithForm(interfaceAddress.getInterfaceAddress(), jsonObject, null, false);
result = HttpUtil.get(url);
break;
case POST:
result = HttpRequest.post(interfaceAddress.getInterfaceAddress()).addHeaders(headersMap).body(JSONUtil.toJsonStr(jsonObject), "application/json").execute().body();
break;
case PUT:
result = HttpRequest.put(interfaceAddress.getInterfaceAddress()).addHeaders(headersMap).body(JSONUtil.toJsonStr(jsonObject), "application/json").execute().body();
break;
case DELETE:
result = HttpRequest.delete(interfaceAddress.getInterfaceAddress()).addHeaders(headersMap).execute().body();
break;
default:
break;
}
modelCacl.setStartTime(DateUtils.getNowDate());
modelCacl.setEndTime(DateUtils.getNowDate());
modelCacl.setStatus(1);
modelCacl.setOutputContent(result);
modelCaclService.updateModelCacl(BeanUtils.toBean(modelCacl, ModelCaclSaveReqVO.class));
} else {
if (model.getId().equals(12L)) {
modelCacl.setStartTime(DateUtils.getNowDate());
modelCacl.setEndTime(DateUtils.getNowDate());
modelCacl.setStatus(1);
modelCacl.setOutputContent(modelVirtualCalcService.getOneResult().toJSONString());
modelCaclService.updateModelCacl(BeanUtils.toBean(modelCacl, ModelCaclSaveReqVO.class));
}
if (model.getId().equals(13L)) {
modelCacl.setStartTime(DateUtils.getNowDate());
modelCacl.setEndTime(DateUtils.getNowDate());
modelCacl.setStatus(1);
modelCacl.setOutputContent(modelVirtualCalcService.getTwoResult().toJSONString());
modelCaclService.updateModelCacl(BeanUtils.toBean(modelCacl, ModelCaclSaveReqVO.class));
}
if (model.getId().equals(28L) || model.getId() > 28L) {
FileReader reader = new FileReader("/data/jgst/jgst.chaoshen.20250113/data_output.json");
String join = StringUtils.join(reader.readLines(), " ");
join = StrUtil.removePrefix(join, "\"");
join = StrUtil.removeSuffix(join, "\"");
modelCacl.setOutputContent((StrUtil.removeAll(join, "\\n").replace("\\\"", "'").replaceAll(" ", "")));
modelCacl.setStartTime(DateUtils.getNowDate());
modelCacl.setEndTime(DateUtils.getNowDate());
modelCacl.setStatus(1);
modelCaclService.updateModelCacl(BeanUtils.toBean(modelCacl, ModelCaclSaveReqVO.class));
}
}
return R.ok();
}
/**
* 设置参数接口 --查看
*/
@GetMapping("/findModelInputById")
public R findModelInputById(@RequestParam(value = "modelCaclId") Long modelCaclId) {
String inputJson = "{}";
String inputNames = null;
ModelCaclDO modelCacl = modelCaclService.getModelCaclById(modelCaclId);
ModelInterfaceAddressDO interfaceAddress = modelInterfaceAddressService.getModelInterfaceAddressById(modelCacl.getAddressId());
ModelReconstitution modelReconstitution = modelReconstitutionService.selectModelReconstitutionById(modelCacl.getModelId());
HashMap<String, Object> resultMap = Maps.newHashMap();
if (AccessModeEnum.FILE.getValue().equals(modelReconstitution.getAccessMode())) {
if (modelReconstitution.getId().equals(12L)) {
{
JSONObject multipleContent = new JSONObject();
multipleContent.set("IK", 1);
multipleContent.set("M", 1);
com.alibaba.fastjson2.JSONObject jsonObject = new com.alibaba.fastjson2.JSONObject();
jsonObject.put("f0", 156);
jsonObject.put("fc", 24);
jsonObject.put("K", 6.1);
jsonObject.put("误差", 0.05);
jsonObject.put("BX", 1);
jsonObject.put("AREA", 187);
jsonObject.put("WT", 15);
jsonObject.put("DT", 0.2);
multipleContent.set("PAR", jsonObject);
JSONArray array = new JSONArray(0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.03, 0.08, 0.12, 0.15, 0.12, 0.1, 0.08, 0.07, 0.06, 0.05, 0.04, 0.03, 0.02, 0.01, 0.01, 0.01);
multipleContent.set("无因次单位线", array);
inputJson = multipleContent.toStringPretty();
}
{
JSONObject multipleContent = new JSONObject();
multipleContent.set("IK", "IK");
multipleContent.set("M", "M");
multipleContent.set("PAR", "PAR");
multipleContent.set("无因次单位线", "无因次单位线");
inputNames = multipleContent.toStringPretty();
}
resultMap.put("modelInputJson", inputJson);
resultMap.put("modelInputNames", inputNames);
} else if (modelReconstitution.getId().equals(13L)) {
{
JSONArray array = new JSONArray();
{
JSONObject multipleContent = new JSONObject();
multipleContent.set("date", "19950101");
multipleContent.set("realrunoff", "1.58");
multipleContent.set("evap", "1.2");
multipleContent.set("cheng", "1");
multipleContent.set("wang", "1.1");
multipleContent.set("zhang", "0.7");
multipleContent.set("di", "0.8");
multipleContent.set("dong", "1.2");
multipleContent.set("yong", "1.2");
multipleContent.set("zuo", "1.3");
multipleContent.set("feng", "1.3");
multipleContent.set("tian", "1.7");
multipleContent.set("da", "1.1");
array.add(multipleContent);
}
{
JSONObject multipleContent = new JSONObject();
multipleContent.set("date", "19950102");
multipleContent.set("realrunoff", "1.49");
multipleContent.set("evap", "0.5");
multipleContent.set("cheng", "31.2");
multipleContent.set("wang", "31.4");
multipleContent.set("zhang", "28.3");
multipleContent.set("di", "30.5");
multipleContent.set("dong", "21.7");
multipleContent.set("yong", "32.9");
multipleContent.set("zuo", "33.8");
multipleContent.set("feng", "30.2");
multipleContent.set("tian", "37.6");
multipleContent.set("da", "36");
array.add(multipleContent);
}
inputJson = array.toString();
}
{
JSONObject multipleContent = new JSONObject();
multipleContent.set("IK", "IK");
multipleContent.set("M", "M");
multipleContent.set("PAR", "PAR");
multipleContent.set("无因次单位线", "无因次单位线");
inputNames = multipleContent.toStringPretty();
}
resultMap.put("modelInputJson", inputJson);
resultMap.put("modelInputNames", inputNames);
} else {
ModelInputDO modelInputQo = new ModelInputDO();
modelInputQo.setDelFlag(false);
modelInputQo.setModelId(modelCacl.getModelId());
modelInputQo.setModelVersion(modelCacl.getModelVersion());
// 所有模型输入对象
List<ModelInputDO> modelInputList = modelInputReconstitutionService.selectModelInputList(modelInputQo);
JSONObject multipleContent = new JSONObject();
JSONObject inputContent = new JSONObject();
modelInputList.forEach((modelInput) -> {
multipleContent.set(modelInput.getName(), modelInput.getName());
String s = StrUtil.removePrefix(modelInput.getSingleContent(), "\"");
s = StrUtil.removeSuffix(s, "\"");
if (modelInput.getSingleContent().contains("[")) {
inputContent.set(modelInput.getName(), JSONUtil.parseArray(s));
} else {
inputContent.set(modelInput.getName(), JSONUtil.parseObj(s));
}
});
resultMap.put("modelInputList", modelInputList);
resultMap.put("modelInputJson", inputContent.toStringPretty());
resultMap.put("modelInputNames", multipleContent.toStringPretty());
}
} else {
inputNames = interfaceAddress.getInputParameterIllustrate();
if (modelCacl.getInputContent() == null) {
if (modelCacl.getAddressType() != null && modelCacl.getAddressType().equals(1L)) {
inputJson = interfaceAddress.getInputParameter();
}
} else {
inputJson = modelCacl.getInputContent();
}
resultMap.put("modelInputJson", inputJson);
resultMap.put("modelInputNames", inputNames);
}
return R.ok(resultMap);
}
/**
* 设置参数接口 --查看
*/
// @GetMapping("/findModelInputById")
// public AjaxResult findModelInputById(@RequestParam(value = "modelCaclId") Long modelCaclId) {
// ModelCaclDO modelCacl = modelCaclService.getModelCaclById(modelCaclId);
// ModelInputDO modelInputQo = new ModelInputDO();
// modelInputQo.setDelFlag(false);
// modelInputQo.setModelId(modelCacl.getModelId());
// modelInputQo.setModelVersion(modelCacl.getModelVersion());
// // 所有模型输入对象
// List<ModelInputDO> modelInputList = modelInputReconstitutionService.selectModelInputList(modelInputQo);
// HashMap<String, Object> resultMap = Maps.newHashMap();
// resultMap.put("modelCacl", modelCacl);
// resultMap.put("modelInputList", modelInputList);
// return AjaxResult.success(resultMap);
// }
/**
* 查看计算结果接口
*/
@GetMapping("/findModelOutputById")
public R findModelOutputById(@RequestParam(value = "modelCaclId") Long modelCaclId) {
ModelCaclDO modelCacl = modelCaclService.getModelCaclById(modelCaclId);
ModelInterfaceAddressDO interfaceAddress = modelInterfaceAddressService.getModelInterfaceAddressById(modelCacl.getAddressId());
ModelReconstitution modelReconstitution = modelReconstitutionService.selectModelReconstitutionById(modelCacl.getModelId());
HashMap<String, Object> resultMap = Maps.newHashMap();
if (AccessModeEnum.FILE.getValue().equals(modelReconstitution.getAccessMode())) {
String outputJson = modelCacl.getOutputContent();
String outputNames = "";
String inputNames = "null";
resultMap.put("modelOutputJson", outputJson);
resultMap.put("modelOutputNames", outputNames);
resultMap.put("modelInputNames", inputNames);
} else {
String outputJson = "{}";
String outputNames = null;
String inputNames = null;
outputNames = interfaceAddress.getOutputParameterIllustrate();
inputNames = interfaceAddress.getInputParameterIllustrate();
if (modelCacl.getOutputContent() == null) {
if (modelCacl.getAddressType() != null && modelCacl.getAddressType().equals(1L)) {
outputJson = interfaceAddress.getOutputParameter();
}
} else {
outputJson = modelCacl.getOutputContent();
}
resultMap.put("modelOutputJson", outputJson);
resultMap.put("modelOutputNames", outputNames);
resultMap.put("modelInputNames", inputNames);
}
return R.ok(resultMap);
}
}
@@ -0,0 +1,98 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.modelCacl.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.page.PageParam;
import java.util.Date;
/**
* 模型计算重构 Request VO 对象 MODEL_CACL_RECONSTITUTION
*
* @author qModel
* @date 2026-01-12
*/
@Schema(description = "模型计算重构 Request VO")
@Data
public class ModelCaclPageReqVO extends PageParam {
private static final long serialVersionUID = 1L;
@Schema(description = "企业id", example = "")
private Long companyId;
@Schema(description = "计算编码", example = "")
private String code;
@Schema(description = "计算名称", example = "")
private String name;
@Schema(description = "模型id", example = "")
private Long modelId;
@Schema(description = "模型名称", example = "")
private String modelName;
@Schema(description = "模型版本", example = "")
private String modelVersion;
@Schema(description = "开始时间", example = "")
private Date startTime;
@Schema(description = "结束时间", example = "")
private Date endTime;
@Schema(description = "计算状态", example = "")
private Integer status;
@Schema(description = "模型输入内容", example = "")
private String inputContent;
@Schema(description = "模型输出内容", example = "")
private String outputContent;
@Schema(description = "文件或接口地址id", example = "")
private Long addressId;
@Schema(description = "判断是文件的id还是地址的id,0:文件,1:接口", example = "")
private Long addressType;
@Schema(description = "文件计算的历史方案id", example = "")
private Long mpProgrammeId;
}
@@ -0,0 +1,169 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.modelCacl.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.annotation.Excel;
import java.io.Serializable;
import java.util.Date;
/**
* 模型计算重构 Response VO 对象 MODEL_CACL_RECONSTITUTION
*
* @author qModel
* @date 2026-01-12
*/
@Schema(description = "模型计算重构 Response VO")
@Data
public class ModelCaclRespVO implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "主键id")
@Schema(description = "主键id", example = "")
private Long id;
@Excel(name = "企业id")
@Schema(description = "企业id", example = "")
private Long companyId;
@Excel(name = "计算编码")
@Schema(description = "计算编码", example = "")
private String code;
@Excel(name = "计算名称")
@Schema(description = "计算名称", example = "")
private String name;
@Excel(name = "模型id")
@Schema(description = "模型id", example = "")
private Long modelId;
@Excel(name = "模型名称")
@Schema(description = "模型名称", example = "")
private String modelName;
@Excel(name = "模型版本")
@Schema(description = "模型版本", example = "")
private String modelVersion;
@Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "开始时间", example = "")
private Date startTime;
@Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "结束时间", example = "")
private Date endTime;
@Excel(name = "计算状态")
@Schema(description = "计算状态", example = "")
private Long status;
@Excel(name = "模型输入内容")
@Schema(description = "模型输入内容", example = "")
private String inputContent;
@Excel(name = "模型输出内容")
@Schema(description = "模型输出内容", example = "")
private String outputContent;
@Excel(name = "是否有效 0:无效,1:有效")
@Schema(description = "是否有效 0:无效,1:有效", example = "")
private Boolean validFlag;
@Excel(name = "删除标志 1:已删除,0:未删除")
@Schema(description = "删除标志 1:已删除,0:未删除", example = "")
private Boolean delFlag;
@Excel(name = "创建人")
@Schema(description = "创建人", example = "")
private String createBy;
@Excel(name = "创建人id")
@Schema(description = "创建人id", example = "")
private Long creatorId;
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "创建时间", example = "")
private Date createTime;
@Excel(name = "更新人")
@Schema(description = "更新人", example = "")
private String updateBy;
@Excel(name = "更新人id")
@Schema(description = "更新人id", example = "")
private Long updatorId;
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "更新时间", example = "")
private Date updateTime;
@Excel(name = "备注")
@Schema(description = "备注", example = "")
private String remark;
@Excel(name = "文件或接口地址id")
@Schema(description = "文件或接口地址id", example = "")
private Long addressId;
@Excel(name = "判断是文件的id还是地址的id,0:文件,1:接口")
@Schema(description = "判断是文件的id还是地址的id,0:文件,1:接口", example = "")
private Long addressType;
@Excel(name = "文件计算的历史方案id")
@Schema(description = "文件计算的历史方案id", example = "")
private Long mpProgrammeId;
/**
* 地址
*/
@TableField(exist = false)
private String address;
/**
* 请求方式 0get1post2put3delete
*/
@TableField(exist = false)
private Integer requestMethod;
}
@@ -0,0 +1,106 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.cacl.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.domain.BaseEntity;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
* 模型计算重构 创建/修改 Request VO MODEL_CACL_RECONSTITUTION
*
* @author qModel
* @date 2026-01-12
*/
@Schema(description = "模型计算重构 Response VO")
@Data
public class ModelCaclSaveReqVO extends BaseEntity {
private static final long serialVersionUID = 1L;
@Schema(description = "ID")
private Long id;
@Schema(description = "企业id", example = "")
private Long companyId;
@Schema(description = "计算编码", example = "")
private String code;
@Schema(description = "计算名称", example = "")
private String name;
@Schema(description = "模型id", example = "")
private Long modelId;
@Schema(description = "模型名称", example = "")
private String modelName;
@Schema(description = "模型版本", example = "")
private String modelVersion;
@Schema(description = "开始时间", example = "")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
@Schema(description = "结束时间", example = "")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
@Schema(description = "计算状态", example = "")
private Long status;
@Schema(description = "模型输入内容", example = "")
private String inputContent;
@Schema(description = "模型输出内容", example = "")
private String outputContent;
@Schema(description = "备注", example = "")
private String remark;
@Schema(description = "文件或接口地址id", example = "")
private Long addressId;
@Schema(description = "判断是文件的id还是地址的id,0:文件,1:接口", example = "")
private Long addressType;
@Schema(description = "文件计算的历史方案id", example = "")
private Long mpProgrammeId;
}
@@ -0,0 +1,139 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.classify;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import tech.qiantong.qmodel.common.annotation.Log;
import tech.qiantong.qmodel.common.core.controller.BaseController;
import tech.qiantong.qmodel.common.core.domain.AjaxResult;
import tech.qiantong.qmodel.common.core.domain.CommonResult;
import tech.qiantong.qmodel.common.core.page.PageParam;
import tech.qiantong.qmodel.common.enums.BusinessType;
import tech.qiantong.qmodel.common.utils.object.BeanUtils;
import tech.qiantong.qmodel.common.utils.poi.ExcelUtil;
import tech.qiantong.qmodel.module.model.controller.admin.classify.vo.ModelClassifyPageReqVO;
import tech.qiantong.qmodel.module.model.controller.admin.classify.vo.ModelClassifyRespVO;
import tech.qiantong.qmodel.module.model.controller.admin.classify.vo.ModelClassifySaveReqVO;
import tech.qiantong.qmodel.module.model.convert.classify.ModelClassifyConvert;
import tech.qiantong.qmodel.module.model.dal.dataobject.classify.ModelClassifyDO;
import tech.qiantong.qmodel.module.model.service.classify.IModelClassifyService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.Arrays;
import java.util.List;
/**
* 模型分类Controller
*
* @author qModel
* @date 2026-01-07
*/
@Tag(name = "模型分类")
@RestController
@RequestMapping("/model/classify")
@Validated
public class ModelClassifyController extends BaseController {
@Resource
private IModelClassifyService modelClassifyService;
@Operation(summary = "查询模型分类列表")
@PreAuthorize("@ss.hasPermi('model:classify:classify:list')")
@GetMapping("/list")
public CommonResult<List<ModelClassifyRespVO>> list(ModelClassifyPageReqVO modelClassify) {
List<ModelClassifyDO> modelClassifyList = modelClassifyService.getModelClassifyList(modelClassify);
return CommonResult.success(BeanUtils.toBean(modelClassifyList, ModelClassifyRespVO.class));
}
@Operation(summary = "导出模型分类列表")
@PreAuthorize("@ss.hasPermi('model:classify:classify:export')")
@Log(title = "模型分类", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, ModelClassifyPageReqVO exportReqVO) {
exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ModelClassifyDO> list = (List<ModelClassifyDO>) modelClassifyService.getModelClassifyPage(exportReqVO).getRows();
ExcelUtil<ModelClassifyRespVO> util = new ExcelUtil<>(ModelClassifyRespVO.class);
util.exportExcel(response, ModelClassifyConvert.INSTANCE.convertToRespVOList(list), "应用管理数据");
}
@Operation(summary = "导入模型分类列表")
@PreAuthorize("@ss.hasPermi('model:classify:classify:import')")
@Log(title = "模型分类", businessType = BusinessType.IMPORT)
@PostMapping("/importData")
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
ExcelUtil<ModelClassifyRespVO> util = new ExcelUtil<>(ModelClassifyRespVO.class);
List<ModelClassifyRespVO> importExcelList = util.importExcel(file.getInputStream());
String operName = getUsername();
String message = modelClassifyService.importModelClassify(importExcelList, updateSupport, operName);
return success(message);
}
@Operation(summary = "获取模型分类详细信息")
@PreAuthorize("@ss.hasPermi('model:classify:classify:query')")
@GetMapping(value = "/{id}")
public CommonResult<ModelClassifyRespVO> getInfo(@PathVariable("id") Long id) {
ModelClassifyDO modelClassifyDO = modelClassifyService.getModelClassifyById(id);
return CommonResult.success(BeanUtils.toBean(modelClassifyDO, ModelClassifyRespVO.class));
}
@Operation(summary = "新增模型分类")
@PreAuthorize("@ss.hasPermi('model:classify:classify:add')")
@Log(title = "模型分类", businessType = BusinessType.INSERT)
@PostMapping
public CommonResult<Long> add(@Valid @RequestBody ModelClassifySaveReqVO modelClassify) {
return CommonResult.toAjax(modelClassifyService.createModelClassify(modelClassify));
}
@Operation(summary = "修改模型分类")
@PreAuthorize("@ss.hasPermi('model:classify:classify:edit')")
@Log(title = "模型分类", businessType = BusinessType.UPDATE)
@PutMapping
public CommonResult<Integer> edit(@Valid @RequestBody ModelClassifySaveReqVO modelClassify) {
return CommonResult.toAjax(modelClassifyService.updateModelClassify(modelClassify));
}
@Operation(summary = "删除模型分类")
@PreAuthorize("@ss.hasPermi('model:classify:classify:remove')")
@Log(title = "模型分类", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public CommonResult<Integer> remove(@PathVariable Long[] ids) {
return CommonResult.toAjax(modelClassifyService.removeModelClassify(Arrays.asList(ids)));
}
}
@@ -0,0 +1,69 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.classify.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.page.PageParam;
/**
* 模型分类 Request VO 对象 MODEL_CLASSIFY
*
* @author qModel
* @date 2026-01-07
*/
@Schema(description = "模型分类 Request VO")
@Data
public class ModelClassifyPageReqVO extends PageParam {
private static final long serialVersionUID = 1L;
@Schema(description = "企业id", example = "")
private Long companyId;
@Schema(description = "父级id", example = "")
private Long parentId;
@Schema(description = "祖籍列表", example = "")
private String ancestors;
@Schema(description = "分类名称", example = "")
private String name;
@Schema(description = "分类描述", example = "")
private String description;
}
@@ -0,0 +1,118 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.classify.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.annotation.Excel;
import java.io.Serializable;
import java.util.Date;
/**
* 模型分类 Response VO 对象 MODEL_CLASSIFY
*
* @author qModel
* @date 2026-01-07
*/
@Schema(description = "模型分类 Response VO")
@Data
public class ModelClassifyRespVO implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "ID")
@Schema(description = "ID", example = "")
private Long id;
@Excel(name = "企业id")
@Schema(description = "企业id", example = "")
private Long companyId;
@Excel(name = "父级id")
@Schema(description = "父级id", example = "")
private Long parentId;
@Excel(name = "祖籍列表")
@Schema(description = "祖籍列表", example = "")
private String ancestors;
@Excel(name = "分类名称")
@Schema(description = "分类名称", example = "")
private String name;
@Excel(name = "分类描述")
@Schema(description = "分类描述", example = "")
private String description;
@Excel(name = "是否有效 0:无效,1:有效")
@Schema(description = "是否有效 0:无效,1:有效", example = "")
private Boolean validFlag;
@Excel(name = "删除标志 1:已删除,0:未删除")
@Schema(description = "删除标志 1:已删除,0:未删除", example = "")
private Boolean delFlag;
@Excel(name = "创建人")
@Schema(description = "创建人", example = "")
private String createBy;
@Excel(name = "创建人id 创建者的sys_user_id")
@Schema(description = "创建人id 创建者的sys_user_id", example = "")
private Long creatorId;
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "创建时间", example = "")
private Date createTime;
@Excel(name = "更新人")
@Schema(description = "更新人", example = "")
private String updateBy;
@Excel(name = "更新人id 更新者的sys_user_id")
@Schema(description = "更新人id 更新者的sys_user_id", example = "")
private Long updatorId;
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "更新时间", example = "")
private Date updateTime;
@Excel(name = "备注")
@Schema(description = "备注", example = "")
private String remark;
}
@@ -0,0 +1,76 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.classify.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.domain.BaseEntity;
import javax.validation.constraints.NotBlank;
/**
* 模型分类 创建/修改 Request VO MODEL_CLASSIFY
*
* @author qModel
* @date 2026-01-07
*/
@Schema(description = "模型分类 Response VO")
@Data
public class ModelClassifySaveReqVO extends BaseEntity {
private static final long serialVersionUID = 1L;
@Schema(description = "ID")
private Long id;
@Schema(description = "企业id", example = "")
private Long companyId;
@Schema(description = "父级id", example = "")
private Long parentId;
@Schema(description = "祖籍列表", example = "")
private String ancestors;
@Schema(description = "分类名称", example = "")
@NotBlank(message = "分类名称不能为空")
private String name;
@Schema(description = "分类描述", example = "")
private String description;
@Schema(description = "备注", example = "")
private String remark;
}
@@ -0,0 +1,140 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.history;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import tech.qiantong.qmodel.common.annotation.Log;
import tech.qiantong.qmodel.common.core.controller.BaseController;
import tech.qiantong.qmodel.common.core.domain.AjaxResult;
import tech.qiantong.qmodel.common.core.domain.CommonResult;
import tech.qiantong.qmodel.common.core.page.PageParam;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.common.enums.BusinessType;
import tech.qiantong.qmodel.common.utils.object.BeanUtils;
import tech.qiantong.qmodel.common.utils.poi.ExcelUtil;
import tech.qiantong.qmodel.module.model.controller.admin.history.vo.ModelHistoryPageReqVO;
import tech.qiantong.qmodel.module.model.controller.admin.history.vo.ModelHistoryRespVO;
import tech.qiantong.qmodel.module.model.controller.admin.history.vo.ModelHistorySaveReqVO;
import tech.qiantong.qmodel.module.model.convert.history.ModelHistoryConvert;
import tech.qiantong.qmodel.module.model.dal.dataobject.history.ModelHistoryDO;
import tech.qiantong.qmodel.module.model.service.history.IModelHistoryService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.Arrays;
import java.util.List;
/**
* 模型历史Controller
*
* @author qModel
* @date 2026-01-09
*/
@Tag(name = "模型历史")
@RestController
@RequestMapping("/model/history")
@Validated
public class ModelHistoryController extends BaseController {
@Resource
private IModelHistoryService modelHistoryService;
@Operation(summary = "查询模型历史列表")
@PreAuthorize("@ss.hasPermi('model:history:history:list')")
@GetMapping("/list")
public CommonResult<PageResult<ModelHistoryRespVO>> list(ModelHistoryPageReqVO modelHistory) {
PageResult<ModelHistoryDO> page = modelHistoryService.getModelHistoryPage(modelHistory);
return CommonResult.success(BeanUtils.toBean(page, ModelHistoryRespVO.class));
}
@Operation(summary = "导出模型历史列表")
@PreAuthorize("@ss.hasPermi('model:history:history:export')")
@Log(title = "模型历史", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, ModelHistoryPageReqVO exportReqVO) {
exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ModelHistoryDO> list = (List<ModelHistoryDO>) modelHistoryService.getModelHistoryPage(exportReqVO).getRows();
ExcelUtil<ModelHistoryRespVO> util = new ExcelUtil<>(ModelHistoryRespVO.class);
util.exportExcel(response, ModelHistoryConvert.INSTANCE.convertToRespVOList(list), "应用管理数据");
}
@Operation(summary = "导入模型历史列表")
@PreAuthorize("@ss.hasPermi('model:history:history:import')")
@Log(title = "模型历史", businessType = BusinessType.IMPORT)
@PostMapping("/importData")
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
ExcelUtil<ModelHistoryRespVO> util = new ExcelUtil<>(ModelHistoryRespVO.class);
List<ModelHistoryRespVO> importExcelList = util.importExcel(file.getInputStream());
String operName = getUsername();
String message = modelHistoryService.importModelHistory(importExcelList, updateSupport, operName);
return success(message);
}
@Operation(summary = "获取模型历史详细信息")
@PreAuthorize("@ss.hasPermi('model:history:history:query')")
@GetMapping(value = "/{id}")
public CommonResult<ModelHistoryRespVO> getInfo(@PathVariable("id") Long id) {
ModelHistoryDO modelHistoryDO = modelHistoryService.getModelHistoryById(id);
return CommonResult.success(BeanUtils.toBean(modelHistoryDO, ModelHistoryRespVO.class));
}
@Operation(summary = "新增模型历史")
@PreAuthorize("@ss.hasPermi('model:history:history:add')")
@Log(title = "模型历史", businessType = BusinessType.INSERT)
@PostMapping
public CommonResult<Long> add(@Valid @RequestBody ModelHistorySaveReqVO modelHistory) {
return CommonResult.toAjax(modelHistoryService.createModelHistory(modelHistory));
}
@Operation(summary = "修改模型历史")
@PreAuthorize("@ss.hasPermi('model:history:history:edit')")
@Log(title = "模型历史", businessType = BusinessType.UPDATE)
@PutMapping
public CommonResult<Integer> edit(@Valid @RequestBody ModelHistorySaveReqVO modelHistory) {
return CommonResult.toAjax(modelHistoryService.updateModelHistory(modelHistory));
}
@Operation(summary = "删除模型历史")
@PreAuthorize("@ss.hasPermi('model:history:history:remove')")
@Log(title = "模型历史", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public CommonResult<Integer> remove(@PathVariable Long[] ids) {
return CommonResult.toAjax(modelHistoryService.removeModelHistory(Arrays.asList(ids)));
}
}
@@ -0,0 +1,74 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.history.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.page.PageParam;
import java.util.Date;
/**
* 模型历史 Request VO 对象 MODEL_HISTORY
*
* @author qModel
* @date 2026-01-09
*/
@Schema(description = "模型历史 Request VO")
@Data
public class ModelHistoryPageReqVO extends PageParam {
private static final long serialVersionUID = 1L;
@Schema(description = "企业id", example = "")
private Long companyId;
@Schema(description = "所属模型id", example = "")
private Long modelId;
@Schema(description = "所属模型名称", example = "")
private String modelName;
@Schema(description = "操作内容", example = "")
private String context;
@Schema(description = "启用时间", example = "")
private Date startTime;
@Schema(description = "启用版本号", example = "")
private String modelVersion;
}
@@ -0,0 +1,123 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.history.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.annotation.Excel;
import java.io.Serializable;
import java.util.Date;
/**
* 模型历史 Response VO 对象 MODEL_HISTORY
*
* @author qModel
* @date 2026-01-09
*/
@Schema(description = "模型历史 Response VO")
@Data
public class ModelHistoryRespVO implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "主键id")
@Schema(description = "主键id", example = "")
private Long id;
@Excel(name = "企业id")
@Schema(description = "企业id", example = "")
private Long companyId;
@Excel(name = "所属模型id")
@Schema(description = "所属模型id", example = "")
private Long modelId;
@Excel(name = "所属模型名称")
@Schema(description = "所属模型名称", example = "")
private String modelName;
@Excel(name = "操作内容")
@Schema(description = "操作内容", example = "")
private String context;
@Excel(name = "启用时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "启用时间", example = "")
private Date startTime;
@Excel(name = "启用版本号")
@Schema(description = "启用版本号", example = "")
private String modelVersion;
@Excel(name = "是否有效 0:无效,1:有效")
@Schema(description = "是否有效 0:无效,1:有效", example = "")
private Boolean validFlag;
@Excel(name = "删除标志 1:已删除,0:未删除 ")
@Schema(description = "删除标志 1:已删除,0:未删除 ", example = "")
private Boolean delFlag;
@Excel(name = "创建人")
@Schema(description = "创建人", example = "")
private String createBy;
@Excel(name = "创建人id")
@Schema(description = "创建人id", example = "")
private Long creatorId;
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "创建时间", example = "")
private Date createTime;
@Excel(name = "更新人")
@Schema(description = "更新人", example = "")
private String updateBy;
@Excel(name = "更新人id")
@Schema(description = "更新人id", example = "")
private Long updatorId;
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "更新时间", example = "")
private Date updateTime;
@Excel(name = "备注")
@Schema(description = "备注", example = "")
private String remark;
}
@@ -0,0 +1,85 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.history.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.domain.BaseEntity;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
* 模型历史 创建/修改 Request VO MODEL_HISTORY
*
* @author qModel
* @date 2026-01-09
*/
@Schema(description = "模型历史 Response VO")
@Data
public class ModelHistorySaveReqVO extends BaseEntity {
private static final long serialVersionUID = 1L;
@Schema(description = "ID")
private Long id;
@Schema(description = "企业id", example = "")
private Long companyId;
@Schema(description = "所属模型id", example = "")
private Long modelId;
@Schema(description = "所属模型名称", example = "")
@NotBlank(message = "所属模型名称不能为空")
private String modelName;
@Schema(description = "操作内容", example = "")
@NotBlank(message = "操作内容不能为空")
private String context;
@Schema(description = "启用时间", example = "")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
@Schema(description = "启用版本号", example = "")
@NotBlank(message = "启用版本号不能为空")
private String modelVersion;
@Schema(description = "备注", example = "")
@NotBlank(message = "备注不能为空")
private String remark;
}
@@ -0,0 +1,171 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.input;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import tech.qiantong.qmodel.common.annotation.Log;
import tech.qiantong.qmodel.common.core.controller.BaseController;
import tech.qiantong.qmodel.common.core.domain.AjaxResult;
import tech.qiantong.qmodel.common.core.domain.CommonResult;
import tech.qiantong.qmodel.common.core.page.PageParam;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.common.enums.BusinessType;
import tech.qiantong.qmodel.common.utils.object.BeanUtils;
import tech.qiantong.qmodel.common.utils.poi.ExcelUtil;
import tech.qiantong.qmodel.module.model.controller.admin.input.vo.ModelInputPageReqVO;
import tech.qiantong.qmodel.module.model.controller.admin.input.vo.ModelInputRespVO;
import tech.qiantong.qmodel.module.model.controller.admin.input.vo.ModelInputSaveReqVO;
import tech.qiantong.qmodel.module.model.convert.input.ModelInputConvert;
import tech.qiantong.qmodel.module.model.dal.dataobject.input.ModelInputDO;
import tech.qiantong.qmodel.module.model.dal.dataobject.version.ModelVersionDO;
import tech.qiantong.qmodel.module.model.service.input.IModelInputService;
import tech.qiantong.qmodel.module.model.service.modelReconstitution.IModelReconstitutionService;
import tech.qiantong.qmodel.module.model.service.version.IModelVersionService;
import tech.qiantong.qmodel.module.modelReconstitution.domain.ModelReconstitution;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.Arrays;
import java.util.List;
/**
* 模型输入管理Controller
*
* @author qModel
* @date 2026-01-09
*/
@Tag(name = "模型输入管理")
@RestController
@RequestMapping("/model/input")
@Validated
public class ModelInputController extends BaseController {
@Resource
private IModelInputService modelInputService;
@Resource
private IModelReconstitutionService modelReconstitutionService;
@Resource
private IModelVersionService modelVersionService;
@Operation(summary = "查询模型输入管理列表")
@PreAuthorize("@ss.hasPermi('model:input:input:list')")
@GetMapping("/list")
public CommonResult<PageResult<ModelInputRespVO>> list(ModelInputPageReqVO modelInput) {
PageResult<ModelInputDO> page = modelInputService.getModelInputPage(modelInput);
return CommonResult.success(BeanUtils.toBean(page, ModelInputRespVO.class));
}
@Operation(summary = "导出模型输入管理列表")
@PreAuthorize("@ss.hasPermi('model:input:input:export')")
@Log(title = "模型输入管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, ModelInputPageReqVO exportReqVO) {
exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ModelInputDO> list = (List<ModelInputDO>) modelInputService.getModelInputPage(exportReqVO).getRows();
ExcelUtil<ModelInputRespVO> util = new ExcelUtil<>(ModelInputRespVO.class);
util.exportExcel(response, ModelInputConvert.INSTANCE.convertToRespVOList(list), "应用管理数据");
}
@Operation(summary = "导入模型输入管理列表")
@PreAuthorize("@ss.hasPermi('model:input:input:import')")
@Log(title = "模型输入管理", businessType = BusinessType.IMPORT)
@PostMapping("/importData")
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
ExcelUtil<ModelInputRespVO> util = new ExcelUtil<>(ModelInputRespVO.class);
List<ModelInputRespVO> importExcelList = util.importExcel(file.getInputStream());
String operName = getUsername();
String message = modelInputService.importModelInput(importExcelList, updateSupport, operName);
return success(message);
}
@Operation(summary = "获取模型输入管理详细信息")
@PreAuthorize("@ss.hasPermi('model:input:input:query')")
@GetMapping(value = "/{id}")
public CommonResult<ModelInputRespVO> getInfo(@PathVariable("id") Long id) {
ModelInputDO modelInputDO = modelInputService.getModelInputById(id);
return CommonResult.success(BeanUtils.toBean(modelInputDO, ModelInputRespVO.class));
}
@Operation(summary = "新增模型输入管理")
@PreAuthorize("@ss.hasPermi('model:input:input:add')")
@Log(title = "模型输入管理", businessType = BusinessType.INSERT)
@PostMapping
public CommonResult<Long> add(@Valid @RequestBody ModelInputSaveReqVO modelInput) {
return CommonResult.toAjax(modelInputService.createModelInput(modelInput));
}
@Operation(summary = "修改模型输入管理")
@PreAuthorize("@ss.hasPermi('model:input:input:edit')")
@Log(title = "模型输入管理", businessType = BusinessType.UPDATE)
@PutMapping
public CommonResult<Integer> edit(@Valid @RequestBody ModelInputSaveReqVO modelInput) {
return CommonResult.toAjax(modelInputService.updateModelInput(modelInput));
}
@Operation(summary = "删除模型输入管理")
@PreAuthorize("@ss.hasPermi('model:input:input:remove')")
@Log(title = "模型输入管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public CommonResult<Integer> remove(@PathVariable Long[] ids) {
return CommonResult.toAjax(modelInputService.removeModelInput(Arrays.asList(ids)));
}
/**
* 查询所有模型
*/
@PostMapping("/findAllModel")
public AjaxResult findAllModel(@RequestBody ModelReconstitution modelReconstitution) {
modelReconstitution.setDelFlag(false);
return AjaxResult.success(modelReconstitutionService.selectModelReconstitutionList(modelReconstitution));
}
/**
* 查询所有模型版本
*/
@PostMapping("/findAllModelVersion")
public AjaxResult findAllModelVersion(@RequestBody ModelVersionDO modelVersion) {
return AjaxResult.success(modelVersionService.selectModelVersionList(modelVersion));
}
}
@@ -0,0 +1,93 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.input.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.page.PageParam;
/**
* 模型输入管理 Request VO 对象 MODEL_INPUT
*
* @author qModel
* @date 2026-01-09
*/
@Schema(description = "模型输入管理 Request VO")
@Data
public class ModelInputPageReqVO extends PageParam {
private static final long serialVersionUID = 1L;
@Schema(description = "企业Id", example = "")
private Long companyId;
@Schema(description = "参数名称", example = "")
private String name;
@Schema(description = "英文名称", example = "")
private String engName;
@Schema(description = "参数类型 0:单值,1:多列数值,2:文件", example = "")
private Long type;
@Schema(description = "所属模型id", example = "")
private Long modelId;
@Schema(description = "所属模型名称", example = "")
private String modelName;
@Schema(description = "所属模型版本", example = "")
private String modelVersion;
@Schema(description = "参数说明(描述)", example = "")
private String description;
@Schema(description = "参数示例", example = "")
private String example;
@Schema(description = "参数文件", example = "")
private String paramFile;
@Schema(description = "参数单值", example = "")
private String singleContent;
@Schema(description = "参数多列值", example = "")
private String multipleContent;
@Schema(description = "是否可变", example = "")
private Boolean changeFlag;
}
@@ -0,0 +1,150 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.input.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.annotation.Excel;
import java.io.Serializable;
import java.util.Date;
/**
* 模型输入管理 Response VO 对象 MODEL_INPUT
*
* @author qModel
* @date 2026-01-09
*/
@Schema(description = "模型输入管理 Response VO")
@Data
public class ModelInputRespVO implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "ID")
@Schema(description = "ID", example = "")
private Long id;
@Excel(name = "企业Id")
@Schema(description = "企业Id", example = "")
private Long companyId;
@Excel(name = "参数名称")
@Schema(description = "参数名称", example = "")
private String name;
@Excel(name = "英文名称")
@Schema(description = "英文名称", example = "")
private String engName;
@Excel(name = "参数类型 0:单值,1:多列数值,2:文件")
@Schema(description = "参数类型 0:单值,1:多列数值,2:文件", example = "")
private Long type;
@Excel(name = "所属模型id")
@Schema(description = "所属模型id", example = "")
private Long modelId;
@Excel(name = "所属模型名称")
@Schema(description = "所属模型名称", example = "")
private String modelName;
@Excel(name = "所属模型版本")
@Schema(description = "所属模型版本", example = "")
private String modelVersion;
@Excel(name = "参数说明(描述)")
@Schema(description = "参数说明(描述)", example = "")
private String description;
@Excel(name = "参数示例", readConverterExp = "文=件上传")
@Schema(description = "参数示例", example = "")
private String example;
@Excel(name = "参数文件")
@Schema(description = "参数文件", example = "")
private String paramFile;
@Excel(name = "参数单值")
@Schema(description = "参数单值", example = "")
private String singleContent;
@Excel(name = "参数多列值")
@Schema(description = "参数多列值", example = "")
private String multipleContent;
@Excel(name = "是否有效 0:无效,1:有效")
@Schema(description = "是否有效 0:无效,1:有效", example = "")
private Boolean validFlag;
@Excel(name = "删除标志 1:已删除,0:未删除")
@Schema(description = "删除标志 1:已删除,0:未删除", example = "")
private Boolean delFlag;
@Excel(name = "创建人")
@Schema(description = "创建人", example = "")
private String createBy;
@Excel(name = "创建人id 创建者的sys_user_id")
@Schema(description = "创建人id 创建者的sys_user_id", example = "")
private Long creatorId;
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "创建时间", example = "")
private Date createTime;
@Excel(name = "更新人")
@Schema(description = "更新人", example = "")
private String updateBy;
@Excel(name = "更新人id 更新者的sys_user_id")
@Schema(description = "更新人id 更新者的sys_user_id", example = "")
private Long updatorId;
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "更新时间", example = "")
private Date updateTime;
@Excel(name = "备注")
@Schema(description = "备注", example = "")
private String remark;
@Excel(name = "是否可变")
@Schema(description = "是否可变", example = "")
private Boolean changeFlag;
}
@@ -0,0 +1,107 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.input.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.domain.BaseEntity;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 模型输入管理 创建/修改 Request VO MODEL_INPUT
*
* @author qModel
* @date 2026-01-09
*/
@Schema(description = "模型输入管理 Response VO")
@Data
public class ModelInputSaveReqVO extends BaseEntity {
private static final long serialVersionUID = 1L;
@Schema(description = "ID")
private Long id;
@Schema(description = "企业Id", example = "")
private Long companyId;
@Schema(description = "参数名称", example = "")
@NotBlank(message = "参数名称不能为空")
private String name;
@Schema(description = "英文名称", example = "")
// @NotBlank(message = "英文名称不能为空")
private String engName;
@Schema(description = "参数类型 0:单值,1:多列数值,2:文件", example = "")
@NotNull(message = "参数类型不能为空")
private Long type;
@Schema(description = "所属模型id", example = "")
private Long modelId;
@Schema(description = "所属模型名称", example = "")
// @NotBlank(message = "所属模型名称不能为空")
private String modelName;
@Schema(description = "所属模型版本", example = "")
@NotBlank(message = "所属模型版本不能为空")
private String modelVersion;
@Schema(description = "参数说明(描述)", example = "")
private String description;
@Schema(description = "参数示例", example = "")
// @NotBlank(message = "参数示例不能为空")
private String example;
@Schema(description = "参数文件", example = "")
private String paramFile;
@Schema(description = "参数单值", example = "")
private String singleContent;
@Schema(description = "参数多列值", example = "")
private String multipleContent;
@Schema(description = "备注", example = "")
private String remark;
@Schema(description = "是否可变", example = "")
@NotNull(message = "是否可变不能为空")
private Boolean changeFlag;
}
@@ -0,0 +1,159 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.interfaceAddress;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import tech.qiantong.qmodel.common.annotation.Log;
import tech.qiantong.qmodel.common.core.controller.BaseController;
import tech.qiantong.qmodel.common.core.domain.AjaxResult;
import tech.qiantong.qmodel.common.core.domain.CommonResult;
import tech.qiantong.qmodel.common.core.page.PageParam;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.common.enums.BusinessType;
import tech.qiantong.qmodel.common.utils.object.BeanUtils;
import tech.qiantong.qmodel.common.utils.poi.ExcelUtil;
import tech.qiantong.qmodel.module.model.controller.admin.interfaceAddress.vo.ModelInterfaceAddressPageReqVO;
import tech.qiantong.qmodel.module.model.controller.admin.interfaceAddress.vo.ModelInterfaceAddressRespVO;
import tech.qiantong.qmodel.module.model.controller.admin.interfaceAddress.vo.ModelInterfaceAddressSaveReqVO;
import tech.qiantong.qmodel.module.model.convert.interfaceAddress.ModelInterfaceAddressConvert;
import tech.qiantong.qmodel.module.model.dal.dataobject.interfaceAddress.ModelInterfaceAddressDO;
import tech.qiantong.qmodel.module.model.dal.dataobject.version.ModelVersionDO;
import tech.qiantong.qmodel.module.model.service.history.IModelHistoryService;
import tech.qiantong.qmodel.module.model.service.interfaceAddress.IModelInterfaceAddressService;
import tech.qiantong.qmodel.module.model.service.version.IModelVersionService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.*;
/**
* 接口地址Controller
*
* @author qModel
* @date 2026-01-09
*/
@Tag(name = "接口地址")
@RestController
@RequestMapping("/model/interfaceAddress")
@Validated
public class ModelInterfaceAddressController extends BaseController {
@Resource
private IModelInterfaceAddressService modelInterfaceAddressService;
@Resource
private IModelVersionService modelVersionService;
@Resource
private IModelHistoryService modelHistoryService;
@Operation(summary = "查询接口地址列表")
@PreAuthorize("@ss.hasPermi('model:interfaceAddress:interfaceaddress:list')")
@GetMapping("/list")
public CommonResult<PageResult<ModelInterfaceAddressRespVO>> list(ModelInterfaceAddressPageReqVO modelInterfaceAddress) {
PageResult<ModelInterfaceAddressRespVO> page = modelInterfaceAddressService.getModelInterfaceAddressPageWithVersion(modelInterfaceAddress);
return CommonResult.success(page);
}
@Operation(summary = "导出接口地址列表")
@PreAuthorize("@ss.hasPermi('model:interfaceAddress:interfaceaddress:export')")
@Log(title = "接口地址", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, ModelInterfaceAddressPageReqVO exportReqVO) {
exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ModelInterfaceAddressDO> list = (List<ModelInterfaceAddressDO>) modelInterfaceAddressService.getModelInterfaceAddressPage(exportReqVO).getRows();
ExcelUtil<ModelInterfaceAddressRespVO> util = new ExcelUtil<>(ModelInterfaceAddressRespVO.class);
util.exportExcel(response, ModelInterfaceAddressConvert.INSTANCE.convertToRespVOList(list), "应用管理数据");
}
@Operation(summary = "导入接口地址列表")
@PreAuthorize("@ss.hasPermi('model:interfaceAddress:interfaceaddress:import')")
@Log(title = "接口地址", businessType = BusinessType.IMPORT)
@PostMapping("/importData")
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
ExcelUtil<ModelInterfaceAddressRespVO> util = new ExcelUtil<>(ModelInterfaceAddressRespVO.class);
List<ModelInterfaceAddressRespVO> importExcelList = util.importExcel(file.getInputStream());
String operName = getUsername();
String message = modelInterfaceAddressService.importModelInterfaceAddress(importExcelList, updateSupport, operName);
return success(message);
}
@Operation(summary = "获取接口地址详细信息")
@PreAuthorize("@ss.hasPermi('model:interfaceAddress:interfaceaddress:query')")
@GetMapping(value = "/{id}")
public CommonResult<ModelInterfaceAddressRespVO> getInfo(@PathVariable("id") Long id) {
ModelInterfaceAddressDO modelInterfaceAddressDO = modelInterfaceAddressService.getModelInterfaceAddressById(id);
ModelVersionDO modelVersionReconstitution = modelVersionService.getModelVersionById(modelInterfaceAddressDO.getVersionId());
modelInterfaceAddressDO.setVersion(modelVersionReconstitution.getVersion());
modelInterfaceAddressDO.setDescription(modelVersionReconstitution.getDescription());
return CommonResult.success(BeanUtils.toBean(modelInterfaceAddressDO, ModelInterfaceAddressRespVO.class));
}
@Operation(summary = "新增接口地址")
@PreAuthorize("@ss.hasPermi('model:interfaceAddress:interfaceaddress:add')")
@Log(title = "接口地址", businessType = BusinessType.INSERT)
@PostMapping
public CommonResult<Long> add(@Valid @RequestBody ModelInterfaceAddressSaveReqVO modelInterfaceAddress) {
// 添加操作历史
if (modelInterfaceAddress !=null) {
modelHistoryService.createModelHistory(modelInterfaceAddress.getModelId(), modelInterfaceAddress.getModelName(), "新增了【"+modelInterfaceAddress.getInterfaceAddress()+"】接口地址", modelInterfaceAddress.getVersion(), getUserId(), getNickName());
}
return CommonResult.toAjax(modelInterfaceAddressService.createModelInterfaceAddress(modelInterfaceAddress));
}
@Operation(summary = "修改接口地址")
@PreAuthorize("@ss.hasPermi('model:interfaceAddress:interfaceaddress:edit')")
@Log(title = "接口地址", businessType = BusinessType.UPDATE)
@PutMapping
public CommonResult<Integer> edit(@Valid @RequestBody ModelInterfaceAddressSaveReqVO modelInterfaceAddress) {
if (modelInterfaceAddress !=null) {
modelHistoryService.createModelHistory(modelInterfaceAddress.getModelId(), modelInterfaceAddress.getModelName(), "修改了【"+modelInterfaceAddress.getInterfaceAddress()+"】接口基本信息", modelInterfaceAddress.getVersion(), getUserId(), getNickName());
}
return CommonResult.toAjax(modelInterfaceAddressService.updateModelInterfaceAddress(modelInterfaceAddress));
}
@Operation(summary = "删除接口地址")
@PreAuthorize("@ss.hasPermi('model:interfaceAddress:interfaceaddress:remove')")
@Log(title = "接口地址", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public CommonResult<Integer> remove(@PathVariable Long[] ids) {
return CommonResult.toAjax(modelInterfaceAddressService.removeModelInterfaceAddress(Arrays.asList(ids)));
}
}
@@ -0,0 +1,80 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.interfaceAddress.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.page.PageParam;
/**
* 接口地址 Request VO 对象 MODEL_INTERFACE_ADDRESS
*
* @author qModel
* @date 2026-01-09
*/
@Schema(description = "接口地址 Request VO")
@Data
public class ModelInterfaceAddressPageReqVO extends PageParam {
private static final long serialVersionUID = 1L;
@Schema(description = "企业id", example = "")
private Long companyId;
@Schema(description = "模型id", example = "")
private Long modelId;
@Schema(description = "接口地址", example = "")
private String interfaceAddress;
@Schema(description = "模型版本id", example = "")
private Long versionId;
@Schema(description = "请求方式", example = "")
private Integer requestMethod;
@Schema(description = "输入参数", example = "")
private String inputParameter;
@Schema(description = "输出参数", example = "")
private String outputParameter;
@Schema(description = "输入参数说明", example = "")
private String inputParameterIllustrate;
@Schema(description = "输出参数说明", example = "")
private String outputParameterIllustrate;
}
@@ -0,0 +1,139 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.interfaceAddress.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.annotation.Excel;
import java.io.Serializable;
import java.util.Date;
/**
* 接口地址 Response VO 对象 MODEL_INTERFACE_ADDRESS
*
* @author qModel
* @date 2026-01-09
*/
@Schema(description = "接口地址 Response VO")
@Data
public class ModelInterfaceAddressRespVO implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "id")
@Schema(description = "id", example = "")
private Long id;
@Excel(name = "企业id")
@Schema(description = "企业id", example = "")
private Long companyId;
@Excel(name = "模型id")
@Schema(description = "模型id", example = "")
private Long modelId;
@Excel(name = "接口地址")
@Schema(description = "接口地址", example = "")
private String interfaceAddress;
@Excel(name = "模型版本id")
@Schema(description = "模型版本id", example = "")
private Long versionId;
@Excel(name = "请求方式")
@Schema(description = "请求方式", example = "")
private Integer requestMethod;
@Excel(name = "输入参数")
@Schema(description = "输入参数", example = "")
private String inputParameter;
@Excel(name = "输出参数")
@Schema(description = "输出参数", example = "")
private String outputParameter;
@Excel(name = "删除标志")
@Schema(description = "删除标志", example = "")
private Boolean delFlag;
@Excel(name = "创建人")
@Schema(description = "创建人", example = "")
private String createBy;
@Excel(name = "创建人id")
@Schema(description = "创建人id", example = "")
private Long creatorId;
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "创建时间", example = "")
private Date createTime;
@Excel(name = "更新人")
@Schema(description = "更新人", example = "")
private String updateBy;
@Excel(name = "更新人id")
@Schema(description = "更新人id", example = "")
private Long updatorId;
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "更新时间", example = "")
private Date updateTime;
@Excel(name = "备注")
@Schema(description = "备注", example = "")
private String remark;
@Excel(name = "输入参数说明")
@Schema(description = "输入参数说明", example = "")
private String inputParameterIllustrate;
@Excel(name = "输出参数说明")
@Schema(description = "输出参数说明", example = "")
private String outputParameterIllustrate;
/** 模型版本 */
@TableField(exist = false)
private String version;
/** 描述 */
@TableField(exist = false)
private String description;
}
@@ -0,0 +1,97 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.interfaceAddress.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.domain.BaseEntity;
import javax.validation.constraints.NotBlank;
/**
* 接口地址 创建/修改 Request VO MODEL_INTERFACE_ADDRESS
*
* @author qModel
* @date 2026-01-09
*/
@Schema(description = "接口地址 Response VO")
@Data
public class ModelInterfaceAddressSaveReqVO extends BaseEntity {
private static final long serialVersionUID = 1L;
@Schema(description = "ID")
private Long id;
@Schema(description = "企业id", example = "")
private Long companyId;
@Schema(description = "模型id", example = "")
private Long modelId;
@Schema(description = "接口地址", example = "")
@NotBlank(message = "接口地址不能为空")
private String interfaceAddress;
@Schema(description = "模型版本id", example = "")
private Long versionId;
@Schema(description = "请求方式", example = "")
private Integer requestMethod;
@Schema(description = "输入参数", example = "")
private String inputParameter;
@Schema(description = "输出参数", example = "")
private String outputParameter;
@Schema(description = "备注", example = "")
@NotBlank(message = "备注不能为空")
private String remark;
@Schema(description = "输入参数说明", example = "")
private String inputParameterIllustrate;
@Schema(description = "输出参数说明", example = "")
private String outputParameterIllustrate;
@Schema(description = "模型名称", example = "")
@TableField(exist = false)
private String modelName;
@Schema(description = "模型版本", example = "")
@TableField(exist = false)
private String version;
}
@@ -0,0 +1,155 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.model;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import tech.qiantong.qmodel.common.annotation.Log;
import tech.qiantong.qmodel.common.core.controller.BaseController;
import tech.qiantong.qmodel.common.core.domain.AjaxResult;
import tech.qiantong.qmodel.common.core.domain.CommonResult;
import tech.qiantong.qmodel.common.core.page.PageParam;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.common.enums.BusinessType;
import tech.qiantong.qmodel.common.utils.object.BeanUtils;
import tech.qiantong.qmodel.common.utils.poi.ExcelUtil;
import tech.qiantong.qmodel.module.model.controller.admin.model.vo.ModelPageReqVO;
import tech.qiantong.qmodel.module.model.controller.admin.model.vo.ModelRespVO;
import tech.qiantong.qmodel.module.model.controller.admin.model.vo.ModelSaveReqVO;
import tech.qiantong.qmodel.module.model.controller.admin.version.vo.ModelVersionSaveReqVO;
import tech.qiantong.qmodel.module.model.convert.model.ModelConvert;
import tech.qiantong.qmodel.module.model.dal.dataobject.model.ModelDO;
import tech.qiantong.qmodel.module.model.service.model.IModelService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.Arrays;
import java.util.List;
/**
* 模型管理Controller
*
* @author qModel
* @date 2026-01-07
*/
@Tag(name = "模型管理")
@RestController
@RequestMapping("/model/model")
@Validated
public class ModelController extends BaseController {
@Resource
private IModelService modelService;
@Operation(summary = "导出模型管理列表")
@PreAuthorize("@ss.hasPermi('model:model::export')")
@Log(title = "模型管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, ModelPageReqVO exportReqVO) {
exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ModelDO> list = (List<ModelDO>) modelService.getModelPage(exportReqVO).getRows();
ExcelUtil<ModelRespVO> util = new ExcelUtil<>(ModelRespVO.class);
util.exportExcel(response, ModelConvert.INSTANCE.convertToRespVOList(list), "应用管理数据");
}
@Operation(summary = "导入模型管理列表")
@PreAuthorize("@ss.hasPermi('model:model::import')")
@Log(title = "模型管理", businessType = BusinessType.IMPORT)
@PostMapping("/importData")
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
ExcelUtil<ModelRespVO> util = new ExcelUtil<>(ModelRespVO.class);
List<ModelRespVO> importExcelList = util.importExcel(file.getInputStream());
String operName = getUsername();
String message = modelService.importModel(importExcelList, updateSupport, operName);
return success(message);
}
@Operation(summary = "获取模型管理详细信息")
@PreAuthorize("@ss.hasPermi('model:model::query')")
@GetMapping(value = "/{id}")
public CommonResult<ModelRespVO> getInfo(@PathVariable("id") Long id) {
ModelDO modelDO = modelService.getModelById(id);
return CommonResult.success(BeanUtils.toBean(modelDO, ModelRespVO.class));
}
@Operation(summary = "新增模型管理")
@PreAuthorize("@ss.hasPermi('model:model::add')")
@Log(title = "模型管理", businessType = BusinessType.INSERT)
@PostMapping
public CommonResult<Long> add(@Valid @RequestBody ModelSaveReqVO model, @RequestBody ModelVersionSaveReqVO modelVersion) {
return CommonResult.toAjax(modelService.createModel(model, modelVersion));
}
@Operation(summary = "修改模型管理")
@PreAuthorize("@ss.hasPermi('model:model::edit')")
@Log(title = "模型管理", businessType = BusinessType.UPDATE)
@PutMapping
public CommonResult<Integer> edit(@Valid @RequestBody ModelSaveReqVO model) {
return CommonResult.toAjax(modelService.updateModel(model));
}
@Operation(summary = "删除模型管理")
@PreAuthorize("@ss.hasPermi('model:model::remove')")
@Log(title = "模型管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public CommonResult<Integer> remove(@PathVariable Long[] ids) {
return CommonResult.toAjax(modelService.removeModel(Arrays.asList(ids)));
}
/**
* 查询模型管理列表
*/
@Operation(summary = "查询模型管理列表")
@PreAuthorize("@ss.hasPermi('model:model::list')")
@GetMapping("/list")
public CommonResult<PageResult<ModelRespVO>> list(ModelPageReqVO model) {
PageResult<ModelDO> page = modelService.getModelPage(model);
return CommonResult.success(BeanUtils.toBean(page, ModelRespVO.class));
}
/**
* 修改模型管理详细信息(版本会自增)
*/
@Operation(summary = "修改模型管理详细信息(版本会自增)")
@PreAuthorize("@ss.hasPermi('model:model:edit')")
@Log(title = "模型管理", businessType = BusinessType.UPDATE)
@PutMapping("/update")
public CommonResult<Integer> update(@RequestBody ModelSaveReqVO model, @RequestBody ModelVersionSaveReqVO modelVersion) {
return CommonResult.toAjax(modelService.updateModel(model, modelVersion));
}
}
@@ -0,0 +1,114 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.model.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.page.PageParam;
import java.util.Date;
import java.util.List;
/**
* 模型管理 Request VO 对象 MODEL
*
* @author qModel
* @date 2026-01-07
*/
@Schema(description = "模型管理 Request VO")
@Data
public class ModelPageReqVO extends PageParam {
private static final long serialVersionUID = 1L;
@Schema(description = "企业id", example = "")
private Long companyId;
@Schema(description = "分类id", example = "")
private Long classifyId;
@Schema(description = "父级和自己id", example = "")
private String ancestors;
@Schema(description = "模型名称", example = "")
private String name;
@Schema(description = "模型介绍", example = "")
private String description;
@Schema(description = "所属模型类别 0:水文,1:水动力,2:水质", example = "")
private Long type;
@Schema(description = "所属纬度 0:一维,1:二维,2:三维", example = "")
private Long dimensions;
@Schema(description = "模型版本号", example = "")
private String version;
@Schema(description = "模型调用接口", example = "")
private String interfaceAddress;
@Schema(description = "是否内置 0:否,1:是", example = "")
private Long builtin;
@Schema(description = "模型格式", example = "")
private Long format;
@Schema(description = "模型大小 0exe格式", example = "")
private Long size;
@Schema(description = "数据来源", example = "")
private String source;
@Schema(description = "上传状态", example = "")
private Long uploadStatus;
@Schema(description = "上传时间", example = "")
private Date uploadTime;
@Schema(description = "上传接口", example = "")
private String uploadInterface;
@Schema(description = "上传文件", example = "")
private String uploadFile;
@Schema(description = "文件地址", example = "")
private String uploadLocation;
@TableField(exist = false)
private List<Long> classifyIds;
}
@@ -0,0 +1,171 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.model.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.annotation.Excel;
import java.io.Serializable;
import java.util.Date;
/**
* 模型管理 Response VO 对象 MODEL
*
* @author qModel
* @date 2026-01-07
*/
@Schema(description = "模型管理 Response VO")
@Data
public class ModelRespVO implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "ID")
@Schema(description = "ID", example = "")
private Long id;
@Excel(name = "企业id")
@Schema(description = "企业id", example = "")
private Long companyId;
@Excel(name = "分类id")
@Schema(description = "分类id", example = "")
private Long classifyId;
@Excel(name = "父级和自己id")
@Schema(description = "父级和自己id", example = "")
private String ancestors;
@Excel(name = "模型名称")
@Schema(description = "模型名称", example = "")
private String name;
@Excel(name = "模型介绍")
@Schema(description = "模型介绍", example = "")
private String description;
@Excel(name = "所属模型类别 0:水文,1:水动力,2:水质")
@Schema(description = "所属模型类别 0:水文,1:水动力,2:水质", example = "")
private Long type;
@Excel(name = "所属纬度 0:一维,1:二维,2:三维")
@Schema(description = "所属纬度 0:一维,1:二维,2:三维", example = "")
private Long dimensions;
@Excel(name = "模型版本号")
@Schema(description = "模型版本号", example = "")
private String version;
@Excel(name = "模型调用接口")
@Schema(description = "模型调用接口", example = "")
private String interfaceAddress;
@Excel(name = "是否内置 0:否,1:是")
@Schema(description = "是否内置 0:否,1:是", example = "")
private Long builtin;
@Excel(name = "模型格式")
@Schema(description = "模型格式", example = "")
private Long format;
@Excel(name = "模型大小 0exe格式")
@Schema(description = "模型大小 0exe格式", example = "")
private Long size;
@Excel(name = "数据来源")
@Schema(description = "数据来源", example = "")
private String source;
@Excel(name = "上传状态")
@Schema(description = "上传状态", example = "")
private Long uploadStatus;
@Excel(name = "上传时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-dd HH:mm:ss")
@Schema(description = "上传时间", example = "")
private Date uploadTime;
@Excel(name = "上传接口")
@Schema(description = "上传接口", example = "")
private String uploadInterface;
@Excel(name = "上传文件")
@Schema(description = "上传文件", example = "")
private String uploadFile;
@Excel(name = "文件地址")
@Schema(description = "文件地址", example = "")
private String uploadLocation;
@Excel(name = "是否有效 0:无效,1:有效")
@Schema(description = "是否有效 0:无效,1:有效", example = "")
private Boolean validFlag;
@Excel(name = "删除标志 1:已删除,0:未删除")
@Schema(description = "删除标志 1:已删除,0:未删除", example = "")
private Boolean delFlag;
@Excel(name = "创建人")
@Schema(description = "创建人", example = "")
private String createBy;
@Excel(name = "创建人id 创建者的sys_user_id")
@Schema(description = "创建人id 创建者的sys_user_id", example = "")
private Long creatorId;
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-dd HH:mm:ss")
@Schema(description = "创建时间", example = "")
private Date createTime;
@Excel(name = "更新人")
@Schema(description = "更新人", example = "")
private String updateBy;
@Excel(name = "更新人id 更新者的sys_user_id")
@Schema(description = "更新人id 更新者的sys_user_id", example = "")
private Long updatorId;
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-dd HH:mm:ss")
@Schema(description = "更新时间", example = "")
private Date updateTime;
@Excel(name = "备注")
@Schema(description = "备注", example = "")
private String remark;
}
@@ -0,0 +1,127 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.model.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.domain.BaseEntity;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
* 模型管理 创建/修改 Request VO MODEL
*
* @author qModel
* @date 2026-01-07
*/
@Schema(description = "模型管理 Response VO")
@Data
public class ModelSaveReqVO extends BaseEntity {
private static final long serialVersionUID = 1L;
@Schema(description = "ID")
private Long id;
@Schema(description = "企业id", example = "")
private Long companyId;
@Schema(description = "分类id", example = "")
private Long classifyId;
@Schema(description = "父级和自己id", example = "")
@NotBlank(message = "父级和自己id不能为空")
private String ancestors;
@Schema(description = "模型名称", example = "")
@NotBlank(message = "模型名称不能为空")
private String name;
@Schema(description = "模型介绍", example = "")
@NotBlank(message = "模型介绍不能为空")
private String description;
@Schema(description = "所属模型类别 0:水文,1:水动力,2:水质", example = "")
private Long type;
@Schema(description = "所属纬度 0:一维,1:二维,2:三维", example = "")
private Long dimensions;
@Schema(description = "模型版本号", example = "")
@NotBlank(message = "模型版本号不能为空")
private String version;
@Schema(description = "模型调用接口", example = "")
@NotBlank(message = "模型调用接口不能为空")
private String interfaceAddress;
@Schema(description = "是否内置 0:否,1:是", example = "")
private Long builtin;
@Schema(description = "模型格式", example = "")
private Long format;
@Schema(description = "模型大小 0exe格式", example = "")
private Long size;
@Schema(description = "数据来源", example = "")
@NotBlank(message = "数据来源不能为空")
private String source;
@Schema(description = "上传状态", example = "")
private Integer uploadStatus;
@Schema(description = "上传时间", example = "")
@JsonFormat(pattern = "yyyy-dd HH:mm:ss")
private Date uploadTime;
@Schema(description = "上传接口", example = "")
@NotBlank(message = "上传接口不能为空")
private String uploadInterface;
@Schema(description = "上传文件", example = "")
@NotBlank(message = "上传文件不能为空")
private String uploadFile;
@Schema(description = "文件地址", example = "")
@NotBlank(message = "文件地址不能为空")
private String uploadLocation;
@Schema(description = "备注", example = "")
@NotBlank(message = "备注不能为空")
private String remark;
}
@@ -0,0 +1,193 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.modelReconstitution;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.ZipUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import tech.qiantong.qmodel.common.annotation.Log;
import tech.qiantong.qmodel.common.config.AniviaConfig;
import tech.qiantong.qmodel.common.constant.Constants;
import tech.qiantong.qmodel.common.core.controller.BaseController;
import tech.qiantong.qmodel.common.core.domain.AjaxResult;
import tech.qiantong.qmodel.common.core.domain.CommonResult;
import tech.qiantong.qmodel.common.core.page.PageParam;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.common.enums.BusinessType;
import tech.qiantong.qmodel.common.utils.DateUtils;
import tech.qiantong.qmodel.common.utils.StringUtils;
import tech.qiantong.qmodel.common.utils.object.BeanUtils;
import tech.qiantong.qmodel.common.utils.poi.ExcelUtil;
import tech.qiantong.qmodel.module.model.controller.admin.modelReconstitution.vo.ModelReconstitutionPageReqVO;
import tech.qiantong.qmodel.module.model.controller.admin.modelReconstitution.vo.ModelReconstitutionRespVO;
import tech.qiantong.qmodel.module.model.controller.admin.modelReconstitution.vo.ModelReconstitutionSaveReqVO;
import tech.qiantong.qmodel.module.model.controller.admin.version.vo.ModelVersionSaveReqVO;
import tech.qiantong.qmodel.module.model.convert.modelReconstitution.ModelReconstitutionConvert;
import tech.qiantong.qmodel.module.model.dal.dataobject.classify.ModelClassifyDO;
import tech.qiantong.qmodel.module.model.dal.dataobject.modelReconstitution.ModelReconstitutionDO;
import tech.qiantong.qmodel.module.model.dal.dataobject.version.ModelVersionDO;
import tech.qiantong.qmodel.module.model.service.classify.IModelClassifyService;
import tech.qiantong.qmodel.module.model.service.history.IModelHistoryService;
import tech.qiantong.qmodel.module.model.service.modelReconstitution.IModelReconstitutionService;
import tech.qiantong.qmodel.module.model.service.version.IModelVersionService;
import tech.qiantong.qmodel.module.model.dal.dataobject.modelReconstitution.FileItemDO;
import tech.qiantong.qmodel.module.modelReconstitution.domain.ModelReconstitution;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.File;
import java.util.*;
/**
* 模型库重构Controller
*
* @author qModel
* @date 2026-01-12
*/
@Tag(name = "模型库重构")
@RestController
@RequestMapping("/model/modelReconstitution")
@Validated
public class ModelReconstitutionController extends BaseController {
@Resource
private IModelReconstitutionService modelReconstitutionService;
@Resource
private IModelClassifyService modelClassifyService;
@Resource
private IModelVersionService modelVersionService;
@Resource
private IModelHistoryService modelHistoryService;
@Operation(summary = "查询模型库重构列表")
@PreAuthorize("@ss.hasPermi('model:modelReconstitution:reconstitution:list')")
@GetMapping("/list")
public CommonResult<PageResult<ModelReconstitutionRespVO>> list(ModelReconstitutionPageReqVO modelReconstitution) {
PageResult<ModelReconstitutionDO> page = modelReconstitutionService.getModelReconstitutionPage(modelReconstitution);
return CommonResult.success(BeanUtils.toBean(page, ModelReconstitutionRespVO.class));
}
@Operation(summary = "导出模型库重构列表")
@PreAuthorize("@ss.hasPermi('model:modelReconstitution:reconstitution:export')")
@Log(title = "模型库重构", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, ModelReconstitutionPageReqVO exportReqVO) {
exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ModelReconstitutionDO> list = (List<ModelReconstitutionDO>) modelReconstitutionService.getModelReconstitutionPage(exportReqVO).getRows();
ExcelUtil<ModelReconstitutionRespVO> util = new ExcelUtil<>(ModelReconstitutionRespVO.class);
util.exportExcel(response, ModelReconstitutionConvert.INSTANCE.convertToRespVOList(list), "应用管理数据");
}
@Operation(summary = "导入模型库重构列表")
@PreAuthorize("@ss.hasPermi('model:modelReconstitution:reconstitution:import')")
@Log(title = "模型库重构", businessType = BusinessType.IMPORT)
@PostMapping("/importData")
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
ExcelUtil<ModelReconstitutionRespVO> util = new ExcelUtil<>(ModelReconstitutionRespVO.class);
List<ModelReconstitutionRespVO> importExcelList = util.importExcel(file.getInputStream());
String operName = getUsername();
String message = modelReconstitutionService.importModelReconstitution(importExcelList, updateSupport, operName);
return success(message);
}
@Operation(summary = "获取模型库重构详细信息")
@PreAuthorize("@ss.hasPermi('model:modelReconstitution:reconstitution:query')")
@GetMapping(value = "/{id}")
public CommonResult<ModelReconstitutionRespVO> getInfo(@PathVariable("id") Long id) {
ModelReconstitutionDO modelReconstitutionDO = modelReconstitutionService.getModelReconstitutionById(id);
if (modelReconstitutionDO.getVersionId() != null) {
ModelVersionDO version = modelVersionService.getModelVersionById(modelReconstitutionDO.getVersionId());
modelReconstitutionDO.setVersion(version.getVersion());
modelReconstitutionDO.setDescription(version.getDescription());
modelReconstitutionDO.setRunnableFileAddress(version.getRunnableFileAddress());
}
ModelClassifyDO modelClassify = modelClassifyService.getModelClassifyById(modelReconstitutionDO.getClassifyId());
modelReconstitutionDO.setClassifyName(modelClassify.getName());
return CommonResult.success(BeanUtils.toBean(modelReconstitutionDO, ModelReconstitutionRespVO.class));
}
@Operation(summary = "新增模型库")
@PreAuthorize("@ss.hasPermi('model:modelReconstitution:reconstitution:add')")
@Log(title = "模型库重构", businessType = BusinessType.INSERT)
@PostMapping
public CommonResult<Long> add(@Valid @RequestBody ModelReconstitutionSaveReqVO model) {
// 创建模型版本并设置属性
Long versionId = modelVersionService.createModelVersionWithAttributes(model, getUserId(), getNickName());
model.setVersionId(versionId);
Long modelReconstitution = modelReconstitutionService.createModelReconstitution(model);
// 添加操作历史
modelHistoryService.createModelHistory(model.getId(), model.getName(), "新增了"+model.getName(), model.getVersion(), getUserId(), getNickName());
return CommonResult.toAjax(modelReconstitution);
}
@Operation(summary = "修改模型库重构")
@PreAuthorize("@ss.hasPermi('model:modelReconstitution:reconstitution:edit')")
@Log(title = "模型库重构", businessType = BusinessType.UPDATE)
@PutMapping
public CommonResult<Integer> edit(@Valid @RequestBody ModelReconstitutionSaveReqVO modelReconstitution) {
ModelReconstitution modelReconstitutionInfo = modelReconstitutionService.selectModelReconstitutionById(modelReconstitution.getId());
if (modelReconstitutionInfo != null) {
modelHistoryService.createModelHistory(modelReconstitution.getId(), modelReconstitution.getName(), "修改了" + modelReconstitution.getName() + "基本信息", modelReconstitution.getVersion(), getUserId(), getNickName());
}
if (modelReconstitution.getWhetherPublish() != null) {
modelReconstitution.setPublishTime(DateUtils.getNowDate());
}
return CommonResult.toAjax(modelReconstitutionService.updateModelReconstitution(modelReconstitution));
}
@Operation(summary = "删除模型库重构")
@PreAuthorize("@ss.hasPermi('model:modelReconstitution:reconstitution:remove')")
@Log(title = "模型库重构", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public CommonResult<Integer> remove(@PathVariable Long[] ids) {
return CommonResult.toAjax(modelReconstitutionService.removeModelReconstitution(Arrays.asList(ids)));
}
@PostMapping("/getFileList")
public AjaxResult getFileList(@RequestBody String filePath) {
return AjaxResult.success(modelReconstitutionService.getFileList(filePath));
}
}
@@ -0,0 +1,96 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.modelReconstitution.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.page.PageParam;
import java.util.Date;
import java.util.List;
/**
* 模型库重构 Request VO 对象 MODEL_RECONSTITUTION
*
* @author qModel
* @date 2026-01-12
*/
@Schema(description = "模型库重构 Request VO")
@Data
public class ModelReconstitutionPageReqVO extends PageParam {
private static final long serialVersionUID = 1L;
@Schema(description = "企业id", example = "")
private Long companyId;
@Schema(description = "模型名称", example = "")
private String name;
@Schema(description = "模型分类", example = "")
private Long classifyId;
@Schema(description = "是否预置", example = "")
private Long builtin;
@Schema(description = "接入方式", example = "")
private Integer accessMode;
@Schema(description = "请求方式", example = "")
private Integer requestMethod;
@Schema(description = "接口和文件的地址", example = "")
private String interfaceorfileAddress;
@Schema(description = "版本id", example = "")
private Long versionId;
@Schema(description = "是否发布", example = "")
private Long whetherPublish;
@Schema(description = "发布时间", example = "")
private Date publishTime;
@Schema(description = "接口的端口号", example = "")
private String port;
@Schema(description = "文件名称", example = "")
private String fileName;
@Schema(description = "可执行文件相对路径", example = "")
private String runnableFileAddress;
private List<Long> classifyIds;
}
@@ -0,0 +1,160 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.modelReconstitution.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.annotation.Excel;
import java.io.Serializable;
import java.util.Date;
/**
* 模型库重构 Response VO 对象 MODEL_RECONSTITUTION
*
* @author qModel
* @date 2026-01-12
*/
@Schema(description = "模型库重构 Response VO")
@Data
public class ModelReconstitutionRespVO implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "id")
@Schema(description = "id", example = "")
private Long id;
@Excel(name = "企业id")
@Schema(description = "企业id", example = "")
private Long companyId;
@Excel(name = "模型名称")
@Schema(description = "模型名称", example = "")
private String name;
@Excel(name = "模型分类")
@Schema(description = "模型分类", example = "")
private Long classifyId;
@Excel(name = "是否预置")
@Schema(description = "是否预置", example = "")
private Long builtin;
@Excel(name = "接入方式")
@Schema(description = "接入方式", example = "")
private Integer accessMode;
@Excel(name = "请求方式")
@Schema(description = "请求方式", example = "")
private Integer requestMethod;
@Excel(name = "接口和文件的地址")
@Schema(description = "接口和文件的地址", example = "")
private String interfaceorfileAddress;
@Excel(name = "版本id")
@Schema(description = "版本id", example = "")
private Long versionId;
@Excel(name = "是否发布")
@Schema(description = "是否发布", example = "")
private Long whetherPublish;
@Excel(name = "发布时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "发布时间", example = "")
private Date publishTime;
@Excel(name = "删除标志")
@Schema(description = "删除标志", example = "")
private Boolean delFlag;
@Excel(name = "创建人")
@Schema(description = "创建人", example = "")
private String createBy;
@Excel(name = "创建人id")
@Schema(description = "创建人id", example = "")
private Long creatorId;
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "创建时间", example = "")
private Date createTime;
@Excel(name = "更新人")
@Schema(description = "更新人", example = "")
private String updateBy;
@Excel(name = "更新人id")
@Schema(description = "更新人id", example = "")
private Long updatorId;
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "更新时间", example = "")
private Date updateTime;
@Excel(name = "备注")
@Schema(description = "备注", example = "")
private String remark;
@Excel(name = "接口的端口号")
@Schema(description = "接口的端口号", example = "")
private String port;
@Excel(name = "文件名称")
@Schema(description = "文件名称", example = "")
private String filename;
@Excel(name = "可执行文件相对路径")
@Schema(description = "可执行文件相对路径", example = "")
private String runnableFileAddress;
/** 版本号 */
@TableField(exist = false)
private String version;
/** 版本说明 */
@TableField(exist = false)
private String description;
@TableField(exist = false)
private String classifyName;
}
@@ -0,0 +1,116 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.modelReconstitution.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.domain.BaseEntity;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* 模型库重构 创建/修改 Request VO MODEL_RECONSTITUTION
*
* @author qModel
* @date 2026-01-12
*/
@Schema(description = "模型库重构 Response VO")
@Data
public class ModelReconstitutionSaveReqVO extends BaseEntity {
private static final long serialVersionUID = 1L;
@Schema(description = "ID")
private Long id;
@Schema(description = "企业id", example = "")
private Long companyId;
@Schema(description = "模型名称", example = "")
@NotBlank(message = "模型名称不能为空")
private String name;
@Schema(description = "模型分类", example = "")
@NotNull(message = "模型分类不能为空")
private Long classifyId;
@Schema(description = "是否预置", example = "")
private Long builtin;
@Schema(description = "接入方式", example = "")
private Integer accessMode;
@Schema(description = "请求方式", example = "")
private Integer requestMethod;
@Schema(description = "接口和文件的地址", example = "")
private String interfaceorfileAddress;
@Schema(description = "版本id", example = "")
private Long versionId;
@Schema(description = "是否发布", example = "")
private Long whetherPublish;
@Schema(description = "发布时间", example = "")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date publishTime;
@Schema(description = "备注", example = "")
private String remark;
@Schema(description = "接口的端口号", example = "")
private String port;
@Schema(description = "文件名称", example = "")
private String filename;
@Schema(description = "可执行文件相对路径", example = "")
private String runnableFileAddress;
/** 版本号 */
@TableField(exist = false)
private String version;
/** 版本发布说明 */
@TableField(exist = false)
private String description;
@TableField(exist = false)
private String classifyName;
}
@@ -0,0 +1,140 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.operate;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import tech.qiantong.qmodel.common.annotation.Log;
import tech.qiantong.qmodel.common.core.controller.BaseController;
import tech.qiantong.qmodel.common.core.domain.AjaxResult;
import tech.qiantong.qmodel.common.core.domain.CommonResult;
import tech.qiantong.qmodel.common.core.page.PageParam;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.common.enums.BusinessType;
import tech.qiantong.qmodel.common.utils.object.BeanUtils;
import tech.qiantong.qmodel.common.utils.poi.ExcelUtil;
import tech.qiantong.qmodel.module.model.controller.admin.operate.vo.ModelOperatePageReqVO;
import tech.qiantong.qmodel.module.model.controller.admin.operate.vo.ModelOperateRespVO;
import tech.qiantong.qmodel.module.model.controller.admin.operate.vo.ModelOperateSaveReqVO;
import tech.qiantong.qmodel.module.model.convert.operate.ModelOperateConvert;
import tech.qiantong.qmodel.module.model.dal.dataobject.operate.ModelOperateDO;
import tech.qiantong.qmodel.module.model.service.operate.IModelOperateService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.Arrays;
import java.util.List;
/**
* 模型历史管理Controller
*
* @author qModel
* @date 2026-01-09
*/
@Tag(name = "模型历史管理")
@RestController
@RequestMapping("/model/operate")
@Validated
public class ModelOperateController extends BaseController {
@Resource
private IModelOperateService modelOperateService;
@Operation(summary = "查询模型历史管理列表")
@PreAuthorize("@ss.hasPermi('model:operate:operate:list')")
@GetMapping("/list")
public CommonResult<PageResult<ModelOperateRespVO>> list(ModelOperatePageReqVO modelOperate) {
PageResult<ModelOperateDO> page = modelOperateService.getModelOperatePage(modelOperate);
return CommonResult.success(BeanUtils.toBean(page, ModelOperateRespVO.class));
}
@Operation(summary = "导出模型历史管理列表")
@PreAuthorize("@ss.hasPermi('model:operate:operate:export')")
@Log(title = "模型历史管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, ModelOperatePageReqVO exportReqVO) {
exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ModelOperateDO> list = (List<ModelOperateDO>) modelOperateService.getModelOperatePage(exportReqVO).getRows();
ExcelUtil<ModelOperateRespVO> util = new ExcelUtil<>(ModelOperateRespVO.class);
util.exportExcel(response, ModelOperateConvert.INSTANCE.convertToRespVOList(list), "应用管理数据");
}
@Operation(summary = "导入模型历史管理列表")
@PreAuthorize("@ss.hasPermi('model:operate:operate:import')")
@Log(title = "模型历史管理", businessType = BusinessType.IMPORT)
@PostMapping("/importData")
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
ExcelUtil<ModelOperateRespVO> util = new ExcelUtil<>(ModelOperateRespVO.class);
List<ModelOperateRespVO> importExcelList = util.importExcel(file.getInputStream());
String operName = getUsername();
String message = modelOperateService.importModelOperate(importExcelList, updateSupport, operName);
return success(message);
}
@Operation(summary = "获取模型历史管理详细信息")
@PreAuthorize("@ss.hasPermi('model:operate:operate:query')")
@GetMapping(value = "/{id}")
public CommonResult<ModelOperateRespVO> getInfo(@PathVariable("id") Long id) {
ModelOperateDO modelOperateDO = modelOperateService.getModelOperateById(id);
return CommonResult.success(BeanUtils.toBean(modelOperateDO, ModelOperateRespVO.class));
}
@Operation(summary = "新增模型历史管理")
@PreAuthorize("@ss.hasPermi('model:operate:operate:add')")
@Log(title = "模型历史管理", businessType = BusinessType.INSERT)
@PostMapping
public CommonResult<Long> add(@Valid @RequestBody ModelOperateSaveReqVO modelOperate) {
return CommonResult.toAjax(modelOperateService.createModelOperate(modelOperate));
}
@Operation(summary = "修改模型历史管理")
@PreAuthorize("@ss.hasPermi('model:operate:operate:edit')")
@Log(title = "模型历史管理", businessType = BusinessType.UPDATE)
@PutMapping
public CommonResult<Integer> edit(@Valid @RequestBody ModelOperateSaveReqVO modelOperate) {
return CommonResult.toAjax(modelOperateService.updateModelOperate(modelOperate));
}
@Operation(summary = "删除模型历史管理")
@PreAuthorize("@ss.hasPermi('model:operate:operate:remove')")
@Log(title = "模型历史管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public CommonResult<Integer> remove(@PathVariable Long[] ids) {
return CommonResult.toAjax(modelOperateService.removeModelOperate(Arrays.asList(ids)));
}
}
@@ -0,0 +1,84 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.operate.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.page.PageParam;
/**
* 模型历史管理 Request VO 对象 MODEL_OPERATE
*
* @author qModel
* @date 2026-01-09
*/
@Schema(description = "模型历史管理 Request VO")
@Data
public class ModelOperatePageReqVO extends PageParam {
private static final long serialVersionUID = 1L;
@Schema(description = "企业id", example = "")
private Long companyId;
@Schema(description = "操作模块", example = "")
private String moduleName;
@Schema(description = "操作类型", example = "")
private Long type;
@Schema(description = "操作内容", example = "")
private String content;
@Schema(description = "请求方式", example = "")
private String method;
@Schema(description = "请求参数", example = "")
private String reqContent;
@Schema(description = "返回参数", example = "")
private String respContent;
@Schema(description = "操作地址(Ip)", example = "")
private String ip;
@Schema(description = "操作地点", example = "")
private String address;
@Schema(description = "操作状态", example = "")
private Integer status;
}
@@ -0,0 +1,142 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.operate.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.annotation.Excel;
import java.io.Serializable;
import java.util.Date;
/**
* 模型历史管理 Response VO 对象 MODEL_OPERATE
*
* @author qModel
* @date 2026-01-09
*/
@Schema(description = "模型历史管理 Response VO")
@Data
public class ModelOperateRespVO implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "ID")
@Schema(description = "ID", example = "")
private Long id;
@Excel(name = "企业id")
@Schema(description = "企业id", example = "")
private Long companyId;
@Excel(name = "操作模块")
@Schema(description = "操作模块", example = "")
private String moduleName;
@Excel(name = "操作类型")
@Schema(description = "操作类型", example = "")
private Long type;
@Excel(name = "操作内容")
@Schema(description = "操作内容", example = "")
private String content;
@Excel(name = "请求方式")
@Schema(description = "请求方式", example = "")
private String method;
@Excel(name = "请求参数")
@Schema(description = "请求参数", example = "")
private String reqContent;
@Excel(name = "返回参数")
@Schema(description = "返回参数", example = "")
private String respContent;
@Excel(name = "操作地址(Ip)")
@Schema(description = "操作地址(Ip)", example = "")
private String ip;
@Excel(name = "操作地点")
@Schema(description = "操作地点", example = "")
private String address;
@Excel(name = "操作状态")
@Schema(description = "操作状态", example = "")
private Integer status;
@Excel(name = "是否有效 0:无效,1:有效")
@Schema(description = "是否有效 0:无效,1:有效", example = "")
private Boolean validFlag;
@Excel(name = "删除标志 1:已删除,0:未删除")
@Schema(description = "删除标志 1:已删除,0:未删除", example = "")
private Boolean delFlag;
@Excel(name = "创建人")
@Schema(description = "创建人", example = "")
private String createBy;
@Excel(name = "创建人id 创建者的sys_user_id")
@Schema(description = "创建人id 创建者的sys_user_id", example = "")
private Long creatorId;
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "创建时间", example = "")
private Date createTime;
@Excel(name = "更新人")
@Schema(description = "更新人", example = "")
private String updateBy;
@Excel(name = "更新人id 更新者的sys_user_id")
@Schema(description = "更新人id 更新者的sys_user_id", example = "")
private Long updatorId;
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "更新时间", example = "")
private Date updateTime;
@Excel(name = "备注")
@Schema(description = "备注", example = "")
private String remark;
}
@@ -0,0 +1,98 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.operate.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.domain.BaseEntity;
import javax.validation.constraints.NotBlank;
/**
* 模型历史管理 创建/修改 Request VO MODEL_OPERATE
*
* @author qModel
* @date 2026-01-09
*/
@Schema(description = "模型历史管理 Response VO")
@Data
public class ModelOperateSaveReqVO extends BaseEntity {
private static final long serialVersionUID = 1L;
@Schema(description = "ID")
private Long id;
@Schema(description = "企业id", example = "")
private Long companyId;
@Schema(description = "操作模块", example = "")
@NotBlank(message = "操作模块不能为空")
private String moduleName;
@Schema(description = "操作类型", example = "")
private Integer type;
@Schema(description = "操作内容", example = "")
@NotBlank(message = "操作内容不能为空")
private String content;
@Schema(description = "请求方式", example = "")
@NotBlank(message = "请求方式不能为空")
private String method;
@Schema(description = "请求参数", example = "")
@NotBlank(message = "请求参数不能为空")
private String reqContent;
@Schema(description = "返回参数", example = "")
@NotBlank(message = "返回参数不能为空")
private String respContent;
@Schema(description = "操作地址(Ip)", example = "")
@NotBlank(message = "操作地址(Ip)不能为空")
private String ip;
@Schema(description = "操作地点", example = "")
@NotBlank(message = "操作地点不能为空")
private String address;
@Schema(description = "操作状态", example = "")
private Integer status;
@Schema(description = "备注", example = "")
@NotBlank(message = "备注不能为空")
private String remark;
}
@@ -0,0 +1,212 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.output;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import tech.qiantong.qmodel.common.annotation.Log;
import tech.qiantong.qmodel.common.core.controller.BaseController;
import tech.qiantong.qmodel.common.core.domain.AjaxResult;
import tech.qiantong.qmodel.common.core.domain.CommonResult;
import tech.qiantong.qmodel.common.core.page.PageParam;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.common.enums.BusinessType;
import tech.qiantong.qmodel.common.utils.object.BeanUtils;
import tech.qiantong.qmodel.common.utils.poi.ExcelUtil;
import tech.qiantong.qmodel.module.model.controller.admin.output.vo.ModelOutputPageReqVO;
import tech.qiantong.qmodel.module.model.controller.admin.output.vo.ModelOutputRespVO;
import tech.qiantong.qmodel.module.model.controller.admin.output.vo.ModelOutputSaveReqVO;
import tech.qiantong.qmodel.module.model.convert.output.ModelOutputConvert;
import tech.qiantong.qmodel.module.model.dal.dataobject.output.ModelOutputDO;
import tech.qiantong.qmodel.module.model.dal.dataobject.version.ModelVersionDO;
import tech.qiantong.qmodel.module.model.service.modelReconstitution.IModelReconstitutionService;
import tech.qiantong.qmodel.module.model.service.output.IModelOutputService;
import tech.qiantong.qmodel.module.model.service.version.IModelVersionService;
import tech.qiantong.qmodel.module.modelReconstitution.domain.ModelReconstitution;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* 模型输出管理Controller
*
* @author qModel
* @date 2026-01-09
*/
@Tag(name = "模型输出管理")
@RestController
@RequestMapping("/model/output")
@Validated
public class ModelOutputController extends BaseController {
@Resource
private IModelOutputService modelOutputService;
@Resource
private IModelReconstitutionService modelReconstitutionService;
@Resource
private IModelVersionService modelVersionService;
// @Value("${model.filePathRoot}")
private String filePathRoot = "D:\\model\\chengxuhuizong11.5";
@Operation(summary = "查询模型输出管理列表")
@PreAuthorize("@ss.hasPermi('model:output:output:list')")
@GetMapping("/list")
public CommonResult<PageResult<ModelOutputRespVO>> list(ModelOutputPageReqVO modelOutput) {
PageResult<ModelOutputDO> page = modelOutputService.getModelOutputPage(modelOutput);
return CommonResult.success(BeanUtils.toBean(page, ModelOutputRespVO.class));
}
@Operation(summary = "导出模型输出管理列表")
@PreAuthorize("@ss.hasPermi('model:output:output:export')")
@Log(title = "模型输出管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, ModelOutputPageReqVO exportReqVO) {
exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ModelOutputDO> list = (List<ModelOutputDO>) modelOutputService.getModelOutputPage(exportReqVO).getRows();
ExcelUtil<ModelOutputRespVO> util = new ExcelUtil<>(ModelOutputRespVO.class);
util.exportExcel(response, ModelOutputConvert.INSTANCE.convertToRespVOList(list), "应用管理数据");
}
@Operation(summary = "导入模型输出管理列表")
@PreAuthorize("@ss.hasPermi('model:output:output:import')")
@Log(title = "模型输出管理", businessType = BusinessType.IMPORT)
@PostMapping("/importData")
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
ExcelUtil<ModelOutputRespVO> util = new ExcelUtil<>(ModelOutputRespVO.class);
List<ModelOutputRespVO> importExcelList = util.importExcel(file.getInputStream());
String operName = getUsername();
String message = modelOutputService.importModelOutput(importExcelList, updateSupport, operName);
return success(message);
}
@Operation(summary = "获取模型输出管理详细信息")
@PreAuthorize("@ss.hasPermi('model:output:output:query')")
@GetMapping(value = "/{id}")
public CommonResult<ModelOutputRespVO> getInfo(@PathVariable("id") Long id) {
ModelOutputDO modelOutputDO = modelOutputService.getModelOutputById(id);
return CommonResult.success(BeanUtils.toBean(modelOutputDO, ModelOutputRespVO.class));
}
@Operation(summary = "新增模型输出管理")
@PreAuthorize("@ss.hasPermi('model:output:output:add')")
@Log(title = "模型输出管理", businessType = BusinessType.INSERT)
@PostMapping
public CommonResult<Long> add(@Valid @RequestBody ModelOutputSaveReqVO modelOutput) {
return CommonResult.toAjax(modelOutputService.createModelOutput(modelOutput));
}
@Operation(summary = "修改模型输出管理")
@PreAuthorize("@ss.hasPermi('model:output:output:edit')")
@Log(title = "模型输出管理", businessType = BusinessType.UPDATE)
@PutMapping
public CommonResult<Integer> edit(@Valid @RequestBody ModelOutputSaveReqVO modelOutput) {
return CommonResult.toAjax(modelOutputService.updateModelOutput(modelOutput));
}
@Operation(summary = "删除模型输出管理")
@PreAuthorize("@ss.hasPermi('model:output:output:remove')")
@Log(title = "模型输出管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public CommonResult<Integer> remove(@PathVariable Long[] ids) {
return CommonResult.toAjax(modelOutputService.removeModelOutput(Arrays.asList(ids)));
}
/**
* 查询所有模型
*/
@PostMapping("/findAllModel")
public AjaxResult findAllModel(@RequestBody ModelReconstitution modelReconstitution) {
modelReconstitution.setCompanyId(null);
modelReconstitution.setDelFlag(false);
return AjaxResult.success(modelReconstitutionService.selectModelReconstitutionList(modelReconstitution));
}
/**
* 查询所有模型版本
*/
@PostMapping("/findAllModelVersion")
public AjaxResult findAllModelVersion(@RequestBody ModelVersionDO modelVersion) {
modelVersion.setDelFlag(false);
return AjaxResult.success(modelVersionService.selectModelVersionList(modelVersion));
}
/**
* 查询所有模型版本并且合并在一起
*
* |--时间
* |--断面名称
* |--断面累计距离(m)
* |--断面水位(m)
* |--流量(m3/s)
* |--水深(m)
* |--水面宽(m)
* |--堤顶的距离(m)
*/
@PostMapping("/waterSurfaceProfileAndQzhbMerge")
public AjaxResult waterSurfaceProfileAndQzhbMerge() {
List<String> shuiMianXianPathList = new ArrayList<>();
List<String> QzhbPathList = new ArrayList<>();
shuiMianXianPathList.add(filePathRoot + "\\out\\shuimianxian_blsm_bsth_dongzhi.dat");
shuiMianXianPathList.add(filePathRoot + "\\out\\shuimianxian_blsm_bsth_xizhi.dat");
shuiMianXianPathList.add(filePathRoot + "\\out\\shuimianxian_desn_blsm.dat");
shuiMianXianPathList.add(filePathRoot + "\\out\\shuimianxian_dysn_desn.dat");
shuiMianXianPathList.add(filePathRoot + "\\out\\shuimianxian_xsk_dysn_hd.dat");
shuiMianXianPathList.add(filePathRoot + "\\out\\shuimianxian_xsk_dysn_qd.dat");
QzhbPathList.add(filePathRoot + "\\out\\Qzhb_blsm_bsth_dongzhi.dat");
QzhbPathList.add(filePathRoot + "\\out\\Qzhb_blsm_bsth_xizhi.dat");
QzhbPathList.add(filePathRoot + "\\out\\Qzhb_desn_blsm.dat");
QzhbPathList.add(filePathRoot + "\\out\\Qzhb_dysn_desn.dat");
QzhbPathList.add(filePathRoot + "\\out\\Qzhb_xsk_dysn_hd.dat");
QzhbPathList.add(filePathRoot + "\\out\\Qzhb_xsk_dysn_qd.dat");
Map<String, Object> stringObjectMap = modelOutputService.waterSurfaceProfileAndQzhb(shuiMianXianPathList, QzhbPathList);
Map<String, Map<String, List<String>>> waterSurfaceProfile = modelOutputService.waterSurfaceProfileAndQzhbMerge(stringObjectMap);
return AjaxResult.success(waterSurfaceProfile);
}
}
@@ -0,0 +1,84 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.output.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.page.PageParam;
/**
* 模型输出管理 Request VO 对象 MODEL_OUTPUT
*
* @author qModel
* @date 2026-01-09
*/
@Schema(description = "模型输出管理 Request VO")
@Data
public class ModelOutputPageReqVO extends PageParam {
private static final long serialVersionUID = 1L;
@Schema(description = "企业Id", example = "")
private Long companyId;
@Schema(description = "参数名称", example = "")
private String name;
@Schema(description = "英文名称", example = "")
private String engName;
@Schema(description = "参数类型 0:单值,1:多列数值", example = "")
private Long type;
@Schema(description = "所属模型id", example = "")
private Long modelId;
@Schema(description = "所属模型名称", example = "")
private String modelName;
@Schema(description = "所属模型版本", example = "")
private String modelVersion;
@Schema(description = "参数说明(描述)", example = "")
private String description;
@Schema(description = "参数单值", example = "")
private String singleContent;
@Schema(description = "参数多列值", example = "")
private String multipleContent;
}
@@ -0,0 +1,138 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.output.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.annotation.Excel;
import java.io.Serializable;
import java.util.Date;
/**
* 模型输出管理 Response VO 对象 MODEL_OUTPUT
*
* @author qModel
* @date 2026-01-09
*/
@Schema(description = "模型输出管理 Response VO")
@Data
public class ModelOutputRespVO implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "ID")
@Schema(description = "ID", example = "")
private Long id;
@Excel(name = "企业Id")
@Schema(description = "企业Id", example = "")
private Long companyId;
@Excel(name = "参数名称")
@Schema(description = "参数名称", example = "")
private String name;
@Excel(name = "英文名称")
@Schema(description = "英文名称", example = "")
private String engName;
@Excel(name = "参数类型 0:单值,1:多列数值")
@Schema(description = "参数类型 0:单值,1:多列数值", example = "")
private Long type;
@Excel(name = "所属模型id")
@Schema(description = "所属模型id", example = "")
private Long modelId;
@Excel(name = "所属模型名称")
@Schema(description = "所属模型名称", example = "")
private String modelName;
@Excel(name = "所属模型版本")
@Schema(description = "所属模型版本", example = "")
private String modelVersion;
@Excel(name = "参数说明(描述)")
@Schema(description = "参数说明(描述)", example = "")
private String description;
@Excel(name = "参数单值")
@Schema(description = "参数单值", example = "")
private String singleContent;
@Excel(name = "参数多列值")
@Schema(description = "参数多列值", example = "")
private String multipleContent;
@Excel(name = "是否有效 0:无效,1:有效")
@Schema(description = "是否有效 0:无效,1:有效", example = "")
private Boolean validFlag;
@Excel(name = "删除标志 1:已删除,0:未删除")
@Schema(description = "删除标志 1:已删除,0:未删除", example = "")
private Boolean delFlag;
@Excel(name = "创建人")
@Schema(description = "创建人", example = "")
private String createBy;
@Excel(name = "创建人id 创建者的sys_user_id")
@Schema(description = "创建人id 创建者的sys_user_id", example = "")
private Long creatorId;
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "创建时间", example = "")
private Date createTime;
@Excel(name = "更新人")
@Schema(description = "更新人", example = "")
private String updateBy;
@Excel(name = "更新人id 更新者的sys_user_id")
@Schema(description = "更新人id 更新者的sys_user_id", example = "")
private Long updatorId;
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "更新时间", example = "")
private Date updateTime;
@Excel(name = "备注")
@Schema(description = "备注", example = "")
private String remark;
}
@@ -0,0 +1,93 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.output.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.domain.BaseEntity;
import javax.validation.constraints.NotBlank;
/**
* 模型输出管理 创建/修改 Request VO MODEL_OUTPUT
*
* @author qModel
* @date 2026-01-09
*/
@Schema(description = "模型输出管理 Response VO")
@Data
public class ModelOutputSaveReqVO extends BaseEntity {
private static final long serialVersionUID = 1L;
@Schema(description = "ID")
private Long id;
@Schema(description = "企业Id", example = "")
private Long companyId;
@Schema(description = "参数名称", example = "")
private String name;
@Schema(description = "英文名称", example = "")
private String engName;
@Schema(description = "参数类型 0:单值,1:多列数值", example = "")
private Long type;
@Schema(description = "所属模型id", example = "")
private Long modelId;
@Schema(description = "所属模型名称", example = "")
@NotBlank(message = "所属模型名称不能为空")
private String modelName;
@Schema(description = "所属模型版本", example = "")
@NotBlank(message = "所属模型版本不能为空")
private String modelVersion;
@Schema(description = "参数说明(描述)", example = "")
private String description;
@Schema(description = "参数单值", example = "")
@NotBlank(message = "参数单值不能为空")
private String singleContent;
@Schema(description = "参数多列值", example = "")
private String multipleContent;
@Schema(description = "备注", example = "")
private String remark;
}
@@ -0,0 +1,204 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.version;
import com.alibaba.fastjson.JSONObject;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import tech.qiantong.qmodel.common.annotation.Log;
import tech.qiantong.qmodel.common.core.controller.BaseController;
import tech.qiantong.qmodel.common.core.domain.AjaxResult;
import tech.qiantong.qmodel.common.core.domain.CommonResult;
import tech.qiantong.qmodel.common.core.page.PageParam;
import tech.qiantong.qmodel.common.core.page.PageResult;
import tech.qiantong.qmodel.common.enums.BusinessType;
import tech.qiantong.qmodel.common.utils.object.BeanUtils;
import tech.qiantong.qmodel.common.utils.poi.ExcelUtil;
import tech.qiantong.qmodel.module.model.controller.admin.version.vo.ModelVersionPageReqVO;
import tech.qiantong.qmodel.module.model.controller.admin.version.vo.ModelVersionRespVO;
import tech.qiantong.qmodel.module.model.controller.admin.version.vo.ModelVersionSaveReqVO;
import tech.qiantong.qmodel.module.model.convert.version.ModelVersionConvert;
import tech.qiantong.qmodel.module.model.dal.dataobject.version.ModelVersionDO;
import tech.qiantong.qmodel.module.model.service.history.IModelHistoryService;
import tech.qiantong.qmodel.module.model.service.modelReconstitution.IModelReconstitutionService;
import tech.qiantong.qmodel.module.model.service.operate.IModelOperateService;
import tech.qiantong.qmodel.module.model.service.version.IModelVersionService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.Arrays;
import java.util.List;
/**
* 版本管理Controller
*
* @author qModel
* @date 2026-01-09
*/
@Tag(name = "版本管理")
@RestController
@RequestMapping("/model/version")
@Validated
public class ModelVersionController extends BaseController {
@Resource
private IModelVersionService modelVersionService;
@Resource
private IModelReconstitutionService modelReconstitutionService;
@Resource
private IModelHistoryService modelHistoryService;
@Resource
private IModelOperateService modelOperateService;
@Operation(summary = "查询版本管理列表")
@PreAuthorize("@ss.hasPermi('model:version:version:list')")
@GetMapping("/list")
public CommonResult<PageResult<ModelVersionRespVO>> list(ModelVersionPageReqVO modelVersion) {
PageResult<ModelVersionDO> page = modelVersionService.getModelVersionPage(modelVersion);
return CommonResult.success(BeanUtils.toBean(page, ModelVersionRespVO.class));
}
/**
* 查询版本管理列表
*/
@PreAuthorize("@ss.hasPermi('modelReconstitution:version:list')")
@GetMapping("/versionList")
public CommonResult<List<ModelVersionRespVO>> getList(ModelVersionDO modelVersion) {
modelVersion.setCompanyId(null);
List<ModelVersionDO> list = modelVersionService.selectModelVersionList(modelVersion);
return CommonResult.success(BeanUtils.toBean(list, ModelVersionRespVO.class));
}
@Operation(summary = "导出版本管理列表")
@PreAuthorize("@ss.hasPermi('model:version:version:export')")
@Log(title = "版本管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, ModelVersionPageReqVO exportReqVO) {
exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ModelVersionDO> list = (List<ModelVersionDO>) modelVersionService.getModelVersionPage(exportReqVO).getRows();
ExcelUtil<ModelVersionRespVO> util = new ExcelUtil<>(ModelVersionRespVO.class);
util.exportExcel(response, ModelVersionConvert.INSTANCE.convertToRespVOList(list), "应用管理数据");
}
@Operation(summary = "导入版本管理列表")
@PreAuthorize("@ss.hasPermi('model:version:version:import')")
@Log(title = "版本管理", businessType = BusinessType.IMPORT)
@PostMapping("/importData")
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
ExcelUtil<ModelVersionRespVO> util = new ExcelUtil<>(ModelVersionRespVO.class);
List<ModelVersionRespVO> importExcelList = util.importExcel(file.getInputStream());
String operName = getUsername();
String message = modelVersionService.importModelVersion(importExcelList, updateSupport, operName);
return success(message);
}
@Operation(summary = "获取版本管理详细信息")
@PreAuthorize("@ss.hasPermi('model:version:version:query')")
@GetMapping(value = "/{id}")
public CommonResult<ModelVersionRespVO> getInfo(@PathVariable("id") Long id) {
ModelVersionDO modelVersionDO = modelVersionService.getModelVersionById(id);
return CommonResult.success(BeanUtils.toBean(modelVersionDO, ModelVersionRespVO.class));
}
@Operation(summary = "新增版本管理")
@PreAuthorize("@ss.hasPermi('model:version:version:add')")
@Log(title = "版本管理", businessType = BusinessType.INSERT)
@PostMapping
public CommonResult<Long> add(@Valid @RequestBody ModelVersionSaveReqVO modelVersion) {
modelVersion.setStatus(0);
modelHistoryService.createModelHistory(modelVersion.getModelId(), modelVersion.getModelName(), "新增了" + modelVersion.getModelName() + "一个版本", modelVersion.getVersion(), getUserId(), getNickName());
return CommonResult.toAjax(modelVersionService.createModelVersion(modelVersion));
}
/**
* 确保启动版本唯一
*/
@GetMapping(value = "/mVList/{modelId}")
public AjaxResult getMVList(@PathVariable("modelId") Long modelId) {
ModelVersionDO modelVersion = new ModelVersionDO();
modelVersion.setModelId(modelId);
modelVersion.setCompanyId(null);
modelVersion.setDelFlag( false);
List<ModelVersionDO> list = modelVersionService.selectModelVersionList(modelVersion);
for (ModelVersionDO mv : list) {
if (mv.getStatus() == 1) {
return AjaxResult.success(modelVersion);
}
}
return null;
}
/**
* 版本的切换
*/
@PutMapping(value = "/handoff")
@Transactional
public AjaxResult handoffVersion(@RequestBody ModelVersionRespVO modelVersionRespVO) {
return modelVersionService.handoffVersion(modelVersionRespVO, getUserId(), getNickName());
}
@Operation(summary = "修改版本管理")
@PreAuthorize("@ss.hasPermi('model:version:version:edit')")
@Log(title = "版本管理", businessType = BusinessType.UPDATE)
@PutMapping
public CommonResult<Integer> edit(@Valid @RequestBody ModelVersionSaveReqVO modelVersion) {
return CommonResult.toAjax(modelVersionService.updateModelVersionWithBusinessLogic(modelVersion, getUserId(), getNickName()));
}
@Operation(summary = "删除版本管理")
@PreAuthorize("@ss.hasPermi('model:version:version:remove')")
@Log(title = "版本管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public CommonResult<Integer> remove(@PathVariable("ids") Long[] ids) {
if (ids != null) {
for (Long id : ids) {
ModelVersionDO modelVersion = modelVersionService.getModelVersionById(id);
//历史操作记录插入
modelHistoryService.createModelHistory(modelVersion.getModelId(), modelVersion.getModelName(), "删除了" + modelVersion.getModelName() + "" + modelVersion.getVersion() + "】版本的内容", modelVersion.getVersion(), getUserId(), getNickName());
}
}
return CommonResult.toAjax(modelVersionService.removeModelVersion(Arrays.asList(ids)));
}
}
@@ -0,0 +1,84 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.version.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.page.PageParam;
/**
* 版本管理 Request VO 对象 MODEL_VERSION
*
* @author qModel
* @date 2026-01-09
*/
@Schema(description = "版本管理 Request VO")
@Data
public class ModelVersionPageReqVO extends PageParam {
private static final long serialVersionUID = 1L;
@Schema(description = "企业id", example = "")
private Long companyId;
@Schema(description = "所属模型id", example = "")
private Long modelId;
@Schema(description = "所属模型名称", example = "")
private String modelName;
@Schema(description = "模型版本号", example = "")
private String version;
@Schema(description = "文件地址", example = "")
private String fileAddress;
@Schema(description = "接口地址", example = "")
private String interfaceAddress;
@Schema(description = "版本状态", example = "")
private Integer status;
@Schema(description = "描述", example = "")
private String description;
@Schema(description = "文件的名称", example = "")
private String fileName;
@Schema(description = "可执行文件地址", example = "")
private String runnableFileAddress;
}
@@ -0,0 +1,153 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.version.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.annotation.Excel;
import java.io.Serializable;
import java.util.Date;
/**
* 版本管理 Response VO 对象 MODEL_VERSION
*
* @author qModel
* @date 2026-01-09
*/
@Schema(description = "版本管理 Response VO")
@Data
public class ModelVersionRespVO implements Serializable {
private static final long serialVersionUID = 1L;
@Excel(name = "ID")
@Schema(description = "ID", example = "")
private Long id;
@Excel(name = "企业id")
@Schema(description = "企业id", example = "")
private Long companyId;
@Excel(name = "所属模型id")
@Schema(description = "所属模型id", example = "")
private Long modelId;
@Excel(name = "所属模型名称")
@Schema(description = "所属模型名称", example = "")
private String modelName;
@Excel(name = "模型版本号")
@Schema(description = "模型版本号", example = "")
private String version;
@Excel(name = "文件地址")
@Schema(description = "文件地址", example = "")
private String fileAddress;
@Excel(name = "接口地址")
@Schema(description = "接口地址", example = "")
private String interfaceAddress;
@Excel(name = "版本状态")
@Schema(description = "版本状态", example = "")
private Integer status;
@Excel(name = "描述")
@Schema(description = "描述", example = "")
private String description;
@Excel(name = "是否有效 0:无效,1:有效")
@Schema(description = "是否有效 0:无效,1:有效", example = "")
private Boolean validFlag;
@Excel(name = "删除标志 1:已删除,0:未删除")
@Schema(description = "删除标志 1:已删除,0:未删除", example = "")
private Boolean delFlag;
@Excel(name = "创建人")
@Schema(description = "创建人", example = "")
private String createBy;
@Excel(name = "创建人id 创建者的sys_user_id")
@Schema(description = "创建人id 创建者的sys_user_id", example = "")
private Long creatorId;
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "创建时间", example = "")
private Date createTime;
@Excel(name = "更新人")
@Schema(description = "更新人", example = "")
private String updateBy;
@Excel(name = "更新人id 更新者的sys_user_id")
@Schema(description = "更新人id 更新者的sys_user_id", example = "")
private Long updatorId;
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "更新时间", example = "")
private Date updateTime;
@Excel(name = "备注")
@Schema(description = "备注", example = "")
private String remark;
@Excel(name = "文件的名称")
@Schema(description = "文件的名称", example = "")
private String fileName;
@Excel(name = "可执行文件地址")
@Schema(description = "可执行文件地址", example = "")
private String runnableFileAddress;
@Excel(name = "切换后版本号")
private String afterVersion;
@Excel(name = "切换后版本id")
private Long afterVersionId;
@Excel(name = "切换前版本id")
private Long beforeVersionId;
@Excel(name = "切换后版本号")
private String beforeVersion;
@Excel(name = "停用版本id")
private Long clearVersionId;
}
@@ -0,0 +1,92 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.controller.admin.version.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import tech.qiantong.qmodel.common.core.domain.BaseEntity;
import javax.validation.constraints.NotBlank;
/**
* 版本管理 创建/修改 Request VO MODEL_VERSION
*
* @author qModel
* @date 2026-01-09
*/
@Schema(description = "版本管理 Response VO")
@Data
public class ModelVersionSaveReqVO extends BaseEntity {
private static final long serialVersionUID = 1L;
@Schema(description = "ID")
private Long id;
@Schema(description = "企业id", example = "")
private Long companyId;
@Schema(description = "所属模型id", example = "")
private Long modelId;
@Schema(description = "所属模型名称", example = "")
@NotBlank(message = "所属模型名称不能为空")
private String modelName;
@Schema(description = "模型版本号", example = "")
@NotBlank(message = "模型版本号不能为空")
private String version;
@Schema(description = "文件地址", example = "")
private String fileAddress;
@Schema(description = "接口地址", example = "")
private String interfaceAddress;
@Schema(description = "版本状态0-停用、1-启用", example = "")
private Integer status;
@Schema(description = "描述", example = "")
private String description;
@Schema(description = "备注", example = "")
private String remark;
@Schema(description = "文件的名称", example = "")
private String fileName;
@Schema(description = "可执行文件地址", example = "")
private String runnableFileAddress;
}
@@ -0,0 +1,81 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.convert.cacl;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import tech.qiantong.qmodel.module.model.controller.admin.cacl.vo.ModelCaclSaveReqVO;
import tech.qiantong.qmodel.module.model.controller.admin.modelCacl.vo.ModelCaclPageReqVO;
import tech.qiantong.qmodel.module.model.controller.admin.modelCacl.vo.ModelCaclRespVO;
import tech.qiantong.qmodel.module.model.dal.dataobject.cacl.ModelCaclDO;
import java.util.List;
/**
* 模型计算重构 Convert
*
* @author qModel
* @date 2026-01-12
*/
@Mapper
public interface ModelCaclConvert {
ModelCaclConvert INSTANCE = Mappers.getMapper(ModelCaclConvert.class);
/**
* PageReqVO 转换为 DO
* @param modelCaclPageReqVO 请求参数
* @return ModelCaclDO
*/
ModelCaclDO convertToDO(ModelCaclPageReqVO modelCaclPageReqVO);
/**
* SaveReqVO 转换为 DO
* @param modelCaclSaveReqVO 保存请求参数
* @return ModelCaclDO
*/
ModelCaclDO convertToDO(ModelCaclSaveReqVO modelCaclSaveReqVO);
/**
* DO 转换为 RespVO
* @param modelCaclDO 实体对象
* @return ModelCaclRespVO
*/
ModelCaclRespVO convertToRespVO(ModelCaclDO modelCaclDO);
/**
* DOList 转换为 RespVOList
* @param modelCaclDOList 实体对象列表
* @return List<ModelCaclRespVO>
*/
List<ModelCaclRespVO> convertToRespVOList(List<ModelCaclDO> modelCaclDOList);
}
@@ -0,0 +1,81 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.convert.classify;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import tech.qiantong.qmodel.module.model.controller.admin.classify.vo.ModelClassifyPageReqVO;
import tech.qiantong.qmodel.module.model.controller.admin.classify.vo.ModelClassifyRespVO;
import tech.qiantong.qmodel.module.model.controller.admin.classify.vo.ModelClassifySaveReqVO;
import tech.qiantong.qmodel.module.model.dal.dataobject.classify.ModelClassifyDO;
import java.util.List;
/**
* 模型分类 Convert
*
* @author qModel
* @date 2026-01-07
*/
@Mapper
public interface ModelClassifyConvert {
ModelClassifyConvert INSTANCE = Mappers.getMapper(ModelClassifyConvert.class);
/**
* PageReqVO 转换为 DO
* @param modelClassifyPageReqVO 请求参数
* @return ModelClassifyDO
*/
ModelClassifyDO convertToDO(ModelClassifyPageReqVO modelClassifyPageReqVO);
/**
* SaveReqVO 转换为 DO
* @param modelClassifySaveReqVO 保存请求参数
* @return ModelClassifyDO
*/
ModelClassifyDO convertToDO(ModelClassifySaveReqVO modelClassifySaveReqVO);
/**
* DO 转换为 RespVO
* @param modelClassifyDO 实体对象
* @return ModelClassifyRespVO
*/
ModelClassifyRespVO convertToRespVO(ModelClassifyDO modelClassifyDO);
/**
* DOList 转换为 RespVOList
* @param modelClassifyDOList 实体对象列表
* @return List<ModelClassifyRespVO>
*/
List<ModelClassifyRespVO> convertToRespVOList(List<ModelClassifyDO> modelClassifyDOList);
}
@@ -0,0 +1,81 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.convert.history;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import tech.qiantong.qmodel.module.model.controller.admin.history.vo.ModelHistoryPageReqVO;
import tech.qiantong.qmodel.module.model.controller.admin.history.vo.ModelHistoryRespVO;
import tech.qiantong.qmodel.module.model.controller.admin.history.vo.ModelHistorySaveReqVO;
import tech.qiantong.qmodel.module.model.dal.dataobject.history.ModelHistoryDO;
import java.util.List;
/**
* 模型历史 Convert
*
* @author qModel
* @date 2026-01-09
*/
@Mapper
public interface ModelHistoryConvert {
ModelHistoryConvert INSTANCE = Mappers.getMapper(ModelHistoryConvert.class);
/**
* PageReqVO 转换为 DO
* @param modelHistoryPageReqVO 请求参数
* @return ModelHistoryDO
*/
ModelHistoryDO convertToDO(ModelHistoryPageReqVO modelHistoryPageReqVO);
/**
* SaveReqVO 转换为 DO
* @param modelHistorySaveReqVO 保存请求参数
* @return ModelHistoryDO
*/
ModelHistoryDO convertToDO(ModelHistorySaveReqVO modelHistorySaveReqVO);
/**
* DO 转换为 RespVO
* @param modelHistoryDO 实体对象
* @return ModelHistoryRespVO
*/
ModelHistoryRespVO convertToRespVO(ModelHistoryDO modelHistoryDO);
/**
* DOList 转换为 RespVOList
* @param modelHistoryDOList 实体对象列表
* @return List<ModelHistoryRespVO>
*/
List<ModelHistoryRespVO> convertToRespVOList(List<ModelHistoryDO> modelHistoryDOList);
}
@@ -0,0 +1,81 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.convert.input;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import tech.qiantong.qmodel.module.model.controller.admin.input.vo.ModelInputPageReqVO;
import tech.qiantong.qmodel.module.model.controller.admin.input.vo.ModelInputRespVO;
import tech.qiantong.qmodel.module.model.controller.admin.input.vo.ModelInputSaveReqVO;
import tech.qiantong.qmodel.module.model.dal.dataobject.input.ModelInputDO;
import java.util.List;
/**
* 模型输入管理 Convert
*
* @author qModel
* @date 2026-01-09
*/
@Mapper
public interface ModelInputConvert {
ModelInputConvert INSTANCE = Mappers.getMapper(ModelInputConvert.class);
/**
* PageReqVO 转换为 DO
* @param modelInputPageReqVO 请求参数
* @return ModelInputDO
*/
ModelInputDO convertToDO(ModelInputPageReqVO modelInputPageReqVO);
/**
* SaveReqVO 转换为 DO
* @param modelInputSaveReqVO 保存请求参数
* @return ModelInputDO
*/
ModelInputDO convertToDO(ModelInputSaveReqVO modelInputSaveReqVO);
/**
* DO 转换为 RespVO
* @param modelInputDO 实体对象
* @return ModelInputRespVO
*/
ModelInputRespVO convertToRespVO(ModelInputDO modelInputDO);
/**
* DOList 转换为 RespVOList
* @param modelInputDOList 实体对象列表
* @return List<ModelInputRespVO>
*/
List<ModelInputRespVO> convertToRespVOList(List<ModelInputDO> modelInputDOList);
}
@@ -0,0 +1,81 @@
/*
* Copyright © 2026 Qiantong Technology Co., Ltd.
* qModel Model Platform(Open Source Edition)
* *
* License:
* Released under the Apache License, Version 2.0.
* You may use, modify, and distribute this software for commercial purposes
* under the terms of the License.
* *
* Special Notice:
* All derivative versions are strictly prohibited from modifying or removing
* the default system logo and copyright information.
* For brand customization, please apply for brand customization authorization via official channels.
* *
* More information: https://qmodel.qiantong.tech/business.html
* *
* ============================================================================
* *
* 版权所有 © 2026 江苏千桐科技有限公司
* qModel 模型平台(开源版)
* *
* 许可协议:
* 本项目基于 Apache License 2.0 开源协议发布,
* 允许在遵守协议的前提下进行商用、修改和分发。
* *
* 特别说明:
* 所有衍生版本不得修改或移除系统默认的 LOGO 和版权信息;
* 如需定制品牌,请通过官方渠道申请品牌定制授权。
* *
* 更多信息请访问:https://qmodel.qiantong.tech/business.html
*/
package tech.qiantong.qmodel.module.model.convert.interfaceAddress;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import tech.qiantong.qmodel.module.model.controller.admin.interfaceAddress.vo.ModelInterfaceAddressPageReqVO;
import tech.qiantong.qmodel.module.model.controller.admin.interfaceAddress.vo.ModelInterfaceAddressRespVO;
import tech.qiantong.qmodel.module.model.controller.admin.interfaceAddress.vo.ModelInterfaceAddressSaveReqVO;
import tech.qiantong.qmodel.module.model.dal.dataobject.interfaceAddress.ModelInterfaceAddressDO;
import java.util.List;
/**
* 接口地址 Convert
*
* @author qModel
* @date 2026-01-09
*/
@Mapper
public interface ModelInterfaceAddressConvert {
ModelInterfaceAddressConvert INSTANCE = Mappers.getMapper(ModelInterfaceAddressConvert.class);
/**
* PageReqVO 转换为 DO
* @param modelInterfaceAddressPageReqVO 请求参数
* @return ModelInterfaceAddressDO
*/
ModelInterfaceAddressDO convertToDO(ModelInterfaceAddressPageReqVO modelInterfaceAddressPageReqVO);
/**
* SaveReqVO 转换为 DO
* @param modelInterfaceAddressSaveReqVO 保存请求参数
* @return ModelInterfaceAddressDO
*/
ModelInterfaceAddressDO convertToDO(ModelInterfaceAddressSaveReqVO modelInterfaceAddressSaveReqVO);
/**
* DO 转换为 RespVO
* @param modelInterfaceAddressDO 实体对象
* @return ModelInterfaceAddressRespVO
*/
ModelInterfaceAddressRespVO convertToRespVO(ModelInterfaceAddressDO modelInterfaceAddressDO);
/**
* DOList 转换为 RespVOList
* @param modelInterfaceAddressDOList 实体对象列表
* @return List<ModelInterfaceAddressRespVO>
*/
List<ModelInterfaceAddressRespVO> convertToRespVOList(List<ModelInterfaceAddressDO> modelInterfaceAddressDOList);
}

Some files were not shown because too many files have changed in this diff Show More