package jnpf.base.model.dbtable.dto; import cn.hutool.core.util.ObjectUtil; import io.swagger.v3.oas.annotations.media.Schema; import jnpf.base.model.dbtable.form.DbFieldForm; import jnpf.base.model.dbtable.form.DbTableForm; import jnpf.database.constant.DbAliasConst; import jnpf.database.model.dbfield.DbFieldModel; import jnpf.database.model.dbtable.DbTableFieldModel; import jnpf.exception.DataException; import lombok.Data; import java.util.ArrayList; import java.util.List; /** * 建表参数对象 * * @author JNPF开发平台组 * @version V3.1.0 * @copyright 引迈信息技术有限公司 * @date 2021/3/12 15:31 */ @Data public class DbTableFieldDTO { @Schema(description = "表基本信息") private DbTableForm tableInfo; @Schema(description = "字段信息") private List tableFieldList; /** * 获取表模型 * * @param dbLinkId 数据库连接Id * @return 表模型 */ public DbTableFieldModel getCreDbTableModel(String dbLinkId){ String table = this.getTableInfo().getNewTable(); return toCommon(table, null, null, dbLinkId); } public DbTableFieldModel getUpDbTableModel(String dbLinkId){ // 更新时用表 String oldTable = this.getTableInfo().getTable(); String newTable = this.getTableInfo().getNewTable(); return toCommon(null, oldTable, newTable, dbLinkId); } private DbTableFieldModel toCommon(String table, String oldTable, String newTable, String dbLinkId) throws DataException { DbTableFieldModel dbTableModel = new DbTableFieldModel(); DbTableForm dbTableForm = this.getTableInfo(); // 数据连接Id dbTableModel.setDbLinkId(dbLinkId); // 创建表名 dbTableModel.setTable(table); // 更新时表名 dbTableModel.setUpdateOldTable(oldTable); dbTableModel.setUpdateNewTable(newTable); // 表注释 dbTableModel.setComment(dbTableForm.getTableName()); // 表字段集合 List list = new ArrayList<>(); for (DbFieldForm dbFieldForm : this.getTableFieldList()) { // 字段 DbFieldModel dbFieldModel = new DbFieldModel(); // 字段名 dbFieldModel.setField(dbFieldForm.getField()); // 字段注释 dbFieldModel.setComment(dbFieldForm.getFieldName()); // 主键 dbFieldModel.setIsPrimaryKey(dbFieldForm.getPrimaryKey() == 1); // 非空 dbFieldModel.setNullSign(DbAliasConst.ALLOW_NULL.getSign(dbFieldForm.getAllowNull())); // 数据类型 dbFieldModel.setLength(dbFieldForm.getDataLength()); dbFieldModel.setDataType(dbFieldForm.getDataType()); dbFieldModel.setIsAutoIncrement(ObjectUtil.equal(dbFieldForm.getAutoIncrement(), 1)); if (dbFieldModel.getIsAutoIncrement() && (!"int".equals(dbFieldForm.getDataType()) && !"bigint".equals(dbFieldForm.getDataType()))) { throw new DataException("自增长ID字段数据类型必须为整形或长整型"); } list.add(dbFieldModel); } dbTableModel.setDbFieldModelList(list); return dbTableModel; } }