Search in sources :

Example 1 with TableColumnDto

use of com.albedo.java.modules.gen.domain.dto.TableColumnDto in project albedo by somowhere.

the class TableServiceImpl method getTableFormDb.

@Override
public TableDto getTableFormDb(TableDto tableDto) {
    // 如果有表名,则获取物理表
    if (StringUtil.isNotBlank(tableDto.getName())) {
        List<TableDto> list = findTableListFormDb(tableDto);
        if (list.size() > 0 && CollUtil.isEmpty(tableDto.getColumnList())) {
            // 如果是新增,初始化表属性
            if (ObjectUtil.isEmpty(tableDto.getId())) {
                list.get(0).setDsName(tableDto.getDsName());
                tableDto = list.get(0);
                // 设置字段说明
                if (StringUtil.isBlank(tableDto.getComments())) {
                    tableDto.setComments(tableDto.getName());
                }
                tableDto.setClassName(StringUtil.toCapitalizeCamelCase(tableDto.getName()));
            }
            // 添加新列
            List<TableColumnDto> columnList = findTableColumnList(tableDto);
            for (TableColumnDto column : columnList) {
                boolean b = false;
                for (TableColumnDto e : tableDto.getColumnList()) {
                    if (e.getName().equals(column.getName())) {
                        b = true;
                        break;
                    }
                }
                if (!b) {
                    tableDto.getColumnList().add(column);
                }
            }
            // 删除已删除的列
            for (TableColumnDto e : tableDto.getColumnList()) {
                boolean b = false;
                for (TableColumnDto column : columnList) {
                    if (column.getName().equals(e.getName())) {
                        b = true;
                    }
                }
                if (!b) {
                    e.setDelFlag(TableColumnDto.FLAG_DELETE);
                }
            }
            // 获取主键
            tableDto.setPkList(findTablePk(tableDto));
            // 初始化列属性字段
            GenUtil.initColumnField(tableDto);
        }
    }
    return tableDto;
}
Also used : TableColumnDto(com.albedo.java.modules.gen.domain.dto.TableColumnDto) TableDto(com.albedo.java.modules.gen.domain.dto.TableDto)

Example 2 with TableColumnDto

use of com.albedo.java.modules.gen.domain.dto.TableColumnDto in project albedo by somowhere.

the class GenUtil method initColumnField.

/**
 * 初始化列属性字段
 *
 * @param table
 */
public static void initColumnField(TableDto table) {
    for (TableColumnDto column : table.getColumnList()) {
        // 如果是不是新增列,则跳过。
        if (StringUtil.isNotBlank(column.getId())) {
            continue;
        }
        // 设置字段说明
        if (StringUtil.isBlank(column.getTitle())) {
            column.setTitle(column.getName());
        }
        // 设置java类型
        if (StringUtil.startWithIgnoreCase(column.getJdbcType(), "CHAR") || StringUtil.startWithIgnoreCase(column.getJdbcType(), "VARCHAR") || StringUtil.startWithIgnoreCase(column.getJdbcType(), "NARCHAR")) {
            column.setJavaType(CommonConstants.TYPE_STRING);
        } else if (StringUtil.startWithIgnoreCase(column.getJdbcType(), "DATETIME") || StringUtil.startWithIgnoreCase(column.getJdbcType(), "DATE") || StringUtil.startWithIgnoreCase(column.getJdbcType(), "TIMESTAMP")) {
            column.setJavaType("java.util.Date");
            column.setShowType("dateselect");
        } else if (StringUtil.startWithIgnoreCase(column.getJdbcType(), "INT") || StringUtil.startWithIgnoreCase(column.getJdbcType(), "TINYINT") || StringUtil.startWithIgnoreCase(column.getJdbcType(), "BIGINT") || StringUtil.startWithIgnoreCase(column.getJdbcType(), "NUMBER") || StringUtil.startWithIgnoreCase(column.getJdbcType(), "DECIMAL") || StringUtil.startWithIgnoreCase(column.getJdbcType(), "BIT") || StringUtil.startWithIgnoreCase(column.getJdbcType(), "DOUBLE")) {
            // 如果是浮点型
            List<String> ss = CharSequenceUtil.split(StringUtil.subBetween(column.getJdbcType(), StringUtil.BRACKETS_START, StringUtil.BRACKETS_END), StringUtil.SPLIT_DEFAULT);
            if (ss != null && ss.size() == 2 && Integer.parseInt(ss.get(1)) > 0) {
                column.setJavaType(CommonConstants.TYPE_DOUBLE);
            } else // 如果是整形
            if (ss != null && ss.size() == 1 && Integer.parseInt(ss.get(0)) <= 10) {
                column.setJavaType(CommonConstants.TYPE_INTEGER);
            } else // 长整形
            {
                column.setJavaType(CommonConstants.TYPE_LONG);
            }
        }
        // 设置java字段名
        column.setJavaFieldName(StringUtil.toCamelCase(column.getName()));
        // 是否是主键
        column.setPk(table.getPkList().contains(column.getName()));
        // 插入字段
        column.setInsertField(true);
        if (column.getIsNotBaseField()) {
            column.setListField(true);
            column.setEditField(true);
        }
        // 查询字段
        if (StringUtil.isEmpty(column.getShowType())) {
            column.setShowType("input");
        }
        if (StringUtil.isEmpty(column.getQueryType())) {
            column.setQueryType("eq");
        }
        if (StringUtil.isEmpty(column.getJavaType())) {
            column.setJavaType("String");
        }
        initDataColumn(column);
        initTreeColumn(column);
        if (StringUtil.equalsIgnoreCase(column.getName(), TreeDo.F_TENANT_CODE)) {
            column.setListField(false);
            column.setEditField(false);
            column.setNullField(false);
        }
    }
}
Also used : TableColumnDto(com.albedo.java.modules.gen.domain.dto.TableColumnDto)

Aggregations

TableColumnDto (com.albedo.java.modules.gen.domain.dto.TableColumnDto)2 TableDto (com.albedo.java.modules.gen.domain.dto.TableDto)1