DbTableFieldDTO.java 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package jnpf.base.model.dbtable.dto;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import io.swagger.v3.oas.annotations.media.Schema;
  4. import jnpf.base.model.dbtable.form.DbFieldForm;
  5. import jnpf.base.model.dbtable.form.DbTableForm;
  6. import jnpf.database.constant.DbAliasConst;
  7. import jnpf.database.model.dbfield.DbFieldModel;
  8. import jnpf.database.model.dbtable.DbTableFieldModel;
  9. import jnpf.exception.DataException;
  10. import lombok.Data;
  11. import java.util.ArrayList;
  12. import java.util.List;
  13. /**
  14. * 建表参数对象
  15. *
  16. * @author JNPF开发平台组
  17. * @version V3.1.0
  18. * @copyright 引迈信息技术有限公司
  19. * @date 2021/3/12 15:31
  20. */
  21. @Data
  22. public class DbTableFieldDTO {
  23. @Schema(description = "表基本信息")
  24. private DbTableForm tableInfo;
  25. @Schema(description = "字段信息")
  26. private List<DbFieldForm> tableFieldList;
  27. /**
  28. * 获取表模型
  29. *
  30. * @param dbLinkId 数据库连接Id
  31. * @return 表模型
  32. */
  33. public DbTableFieldModel getCreDbTableModel(String dbLinkId){
  34. String table = this.getTableInfo().getNewTable();
  35. return toCommon(table, null, null, dbLinkId);
  36. }
  37. public DbTableFieldModel getUpDbTableModel(String dbLinkId){
  38. // 更新时用表
  39. String oldTable = this.getTableInfo().getTable();
  40. String newTable = this.getTableInfo().getNewTable();
  41. return toCommon(null, oldTable, newTable, dbLinkId);
  42. }
  43. private DbTableFieldModel toCommon(String table, String oldTable, String newTable, String dbLinkId) throws DataException {
  44. DbTableFieldModel dbTableModel = new DbTableFieldModel();
  45. DbTableForm dbTableForm = this.getTableInfo();
  46. // 数据连接Id
  47. dbTableModel.setDbLinkId(dbLinkId);
  48. // 创建表名
  49. dbTableModel.setTable(table);
  50. // 更新时表名
  51. dbTableModel.setUpdateOldTable(oldTable);
  52. dbTableModel.setUpdateNewTable(newTable);
  53. // 表注释
  54. dbTableModel.setComment(dbTableForm.getTableName());
  55. // 表字段集合
  56. List<DbFieldModel> list = new ArrayList<>();
  57. for (DbFieldForm dbFieldForm : this.getTableFieldList()) {
  58. // 字段
  59. DbFieldModel dbFieldModel = new DbFieldModel();
  60. // 字段名
  61. dbFieldModel.setField(dbFieldForm.getField());
  62. // 字段注释
  63. dbFieldModel.setComment(dbFieldForm.getFieldName());
  64. // 主键
  65. dbFieldModel.setIsPrimaryKey(dbFieldForm.getPrimaryKey() == 1);
  66. // 非空
  67. dbFieldModel.setNullSign(DbAliasConst.ALLOW_NULL.getSign(dbFieldForm.getAllowNull()));
  68. // 数据类型
  69. dbFieldModel.setLength(dbFieldForm.getDataLength());
  70. dbFieldModel.setDataType(dbFieldForm.getDataType());
  71. dbFieldModel.setIsAutoIncrement(ObjectUtil.equal(dbFieldForm.getAutoIncrement(), 1));
  72. if (dbFieldModel.getIsAutoIncrement() && (!"int".equals(dbFieldForm.getDataType()) && !"bigint".equals(dbFieldForm.getDataType()))) {
  73. throw new DataException("自增长ID字段数据类型必须为整形或长整型");
  74. }
  75. list.add(dbFieldModel);
  76. }
  77. dbTableModel.setDbFieldModelList(list);
  78. return dbTableModel;
  79. }
  80. }