package com.zy.acs.framework.generators; 
 | 
  
 | 
import com.zy.acs.framework.common.Cools; 
 | 
import com.zy.acs.framework.generators.constant.SqlOsType; 
 | 
import com.zy.acs.framework.generators.domain.Column; 
 | 
import com.zy.acs.framework.generators.utils.GeneratorUtils; 
 | 
import org.springframework.core.io.ClassPathResource; 
 | 
  
 | 
import java.io.*; 
 | 
import java.sql.*; 
 | 
import java.util.ArrayList; 
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
  
 | 
/** 
 | 
 * Created by vincent on 2019-06-18 
 | 
 */ 
 | 
public class ReactGenerator { 
 | 
  
 | 
    private static final String BASE_DIR = "src/main/"; 
 | 
    private static final String JAVA_DIR = BASE_DIR + "java/"; 
 | 
    private static final String XML_DIR = BASE_DIR + "resources/mapper/"; 
 | 
    private static final String HTML_DIR = BASE_DIR + "webapp/"; 
 | 
    private static final String[] ALL_TEMPLATES = new String[]{ 
 | 
            "Controller", 
 | 
            "Service", 
 | 
            "ServiceImpl", 
 | 
            "Mapper", 
 | 
            "Entity", 
 | 
            "Xml", 
 | 
            "Sql", 
 | 
            "ReactCreate", 
 | 
            "ReactEdit", 
 | 
            "ReactList", 
 | 
            "ReactPanel", 
 | 
            "Index", 
 | 
    }; 
 | 
    private static final ArrayList<String> SYSTEM_MODEL = new ArrayList<String>(){{ 
 | 
            add("User"); 
 | 
            add("Tenant"); 
 | 
    }}; 
 | 
  
 | 
  
 | 
    public String url; 
 | 
    public String username; 
 | 
    public String password; 
 | 
    public String table; 
 | 
    public String tableDesc; 
 | 
    public String packagePath; 
 | 
    public boolean controller = true; 
 | 
    public boolean service = true; 
 | 
    public boolean mapper = true; 
 | 
    public boolean entity = true; 
 | 
    public boolean xml = true; 
 | 
    public boolean react = true; 
 | 
    public boolean sql = true; 
 | 
    public SqlOsType sqlOsType; 
 | 
    public String backendPrefixPath; 
 | 
    public String frontendPrefixPath; 
 | 
  
 | 
    private List<Column> columns = new ArrayList<>(); 
 | 
    private String fullEntityName;          // 大写表名 - UserRole 
 | 
    private String simpleEntityName;        // 小写表名 - userRole 
 | 
    private String entityImport;            // Entity类Import 
 | 
    private String entityContent;           // Entity内容 
 | 
    private String primaryKeyColumn;        // 主键小驼峰 default:id 
 | 
    private String majorColumn;             // 显示主键小驼峰 - name / uuid 
 | 
    private String systemPackagePath;       // system 包路径 
 | 
    private String systemPackage;           // 
 | 
    private String itemName;                // 包路径最后一个元素: manager(com.zy.acs.manager.manager) 
 | 
  
 | 
    private String reactCreateContent;      // ReactCreate字段 
 | 
    private String reactEditContent;      // ReactCreate字段 
 | 
    private String reactListContent;      // ReactList字段 
 | 
    private String reactListFilterRContent;      // ReactListFilter字段 
 | 
    private String reactPanelContent;           // ReactPanel字段 
 | 
    private String reactLocaleContent;          // 国际化配置 
 | 
  
 | 
    private void init() throws Exception { 
 | 
        gainDbInfo(); 
 | 
        fullEntityName = GeneratorUtils.getNameSpace(table); 
 | 
        simpleEntityName = fullEntityName.substring(0, 1).toLowerCase()+fullEntityName.substring(1); 
 | 
        entityContent = createEntityMsg(); 
 | 
        primaryKeyColumn = createPrimaryMsg(); 
 | 
        majorColumn = createMajorMsg(); 
 | 
        String[] packagePathSplit = packagePath.split("\\."); 
 | 
        systemPackagePath = packagePath.replaceAll(packagePathSplit[packagePathSplit.length-1], "system"); 
 | 
        String[] split = systemPackagePath.split("\\."); 
 | 
        systemPackage = ""; 
 | 
        for (int i = 1; i <= split.length; i++) { 
 | 
            if (i != split.length) { 
 | 
                if (i == split.length - 1) { 
 | 
                    systemPackage = systemPackage + split[i-1]; 
 | 
                } else { 
 | 
                    systemPackage = systemPackage + split[i-1] + "."; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        itemName = packagePathSplit[packagePathSplit.length - 1]; 
 | 
  
 | 
        reactCreateContent = createReactCreateContent(); 
 | 
        reactEditContent = createReactEditContent(); 
 | 
        reactListContent = createReactListContent(); 
 | 
        reactListFilterRContent = createReactListFilterRContent(); 
 | 
        reactPanelContent = createReactPanelContent(); 
 | 
        reactLocaleContent = createReactLocaleContent(); 
 | 
    } 
 | 
  
 | 
    public void build() throws Exception { 
 | 
        init(); 
 | 
        for (String template : ALL_TEMPLATES){ 
 | 
            boolean pass = false; 
 | 
            String lowerCase = template.toLowerCase(); 
 | 
            String templatePath = lowerCase.contains("impl")?lowerCase.substring(0,lowerCase.length()-4)+"/"+lowerCase.substring(lowerCase.length()-4):lowerCase; 
 | 
            String directory=""; 
 | 
            String fileName=""; 
 | 
            switch (template){ 
 | 
                case "Controller": 
 | 
                    pass = controller; 
 | 
                    directory = backendPrefixPath + JAVA_DIR + packagePath.replace(".", "/")+"/"+templatePath+"/"; 
 | 
                    fileName = fullEntityName+template+".java"; 
 | 
                    break; 
 | 
                case "Service": 
 | 
                    pass = service; 
 | 
                    directory = backendPrefixPath + JAVA_DIR + packagePath.replace(".", "/")+"/"+templatePath+"/"; 
 | 
                    fileName = fullEntityName+template+".java"; 
 | 
                    break; 
 | 
                case "ServiceImpl": 
 | 
                    pass = service; 
 | 
                    directory = backendPrefixPath + JAVA_DIR + packagePath.replace(".", "/")+"/"+templatePath+"/"; 
 | 
                    fileName = fullEntityName+template+".java"; 
 | 
                    break; 
 | 
                case "Mapper": 
 | 
                    pass = mapper; 
 | 
                    directory = backendPrefixPath + JAVA_DIR + packagePath.replace(".", "/")+"/"+templatePath+"/"; 
 | 
                    fileName = fullEntityName+template+".java"; 
 | 
                    break; 
 | 
                case "Entity": 
 | 
                    pass = entity; 
 | 
                    directory = backendPrefixPath + JAVA_DIR + packagePath.replace(".", "/")+"/"+templatePath+"/"; 
 | 
                    fileName = fullEntityName+".java"; 
 | 
                    break; 
 | 
                case "Xml": 
 | 
                    pass = xml; 
 | 
                    directory = backendPrefixPath + XML_DIR + itemName + "/"; 
 | 
                    fileName = fullEntityName+"Mapper.xml"; 
 | 
                    break; 
 | 
                case "Sql": 
 | 
                    pass = sql; 
 | 
                    directory = backendPrefixPath + JAVA_DIR; 
 | 
                    fileName = simpleEntityName+".sql"; 
 | 
                    break; 
 | 
                case "ReactCreate": 
 | 
                    pass = react; 
 | 
                    directory = frontendPrefixPath + "/src/page/" + simpleEntityName + "/"; 
 | 
                    fileName = fullEntityName + "Create.jsx"; 
 | 
                    break; 
 | 
                case "ReactEdit": 
 | 
                    pass = react; 
 | 
                    directory = frontendPrefixPath + "/src/page/" + simpleEntityName + "/"; 
 | 
                    fileName = fullEntityName + "Edit.jsx"; 
 | 
                    break; 
 | 
                case "ReactList": 
 | 
                    pass = react; 
 | 
                    directory = frontendPrefixPath + "/src/page/" + simpleEntityName + "/"; 
 | 
                    fileName = fullEntityName + "List.jsx"; 
 | 
                    break; 
 | 
                case "ReactPanel": 
 | 
                    pass = react; 
 | 
                    directory = frontendPrefixPath + "/src/page/" + simpleEntityName + "/"; 
 | 
                    fileName = fullEntityName + "Panel.jsx"; 
 | 
                    break; 
 | 
                case "Index": 
 | 
                    pass = react; 
 | 
                    directory = frontendPrefixPath + "/src/page/" + simpleEntityName + "/"; 
 | 
                    fileName = "index.jsx"; 
 | 
                    break; 
 | 
                default: 
 | 
                    break; 
 | 
            } 
 | 
            if (!pass){ continue; } 
 | 
            String content = readFile(template); 
 | 
            writeFile(content, directory, fileName, template); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    private String readFile(String template){ 
 | 
        StringBuilder txtContentBuilder=new StringBuilder(); 
 | 
        ClassPathResource classPath=new ClassPathResource("templates/react-admin/"+template + ".txt"); 
 | 
  
 | 
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(classPath.getInputStream()))) { 
 | 
            String lineContent; 
 | 
            while ((lineContent = reader.readLine()) != null) { 
 | 
                txtContentBuilder.append(lineContent).append("\n"); 
 | 
            } 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        return txtContentBuilder.toString(); 
 | 
    } 
 | 
  
 | 
    private void writeFile(String content, String directory, String fileName, String template) throws IOException { 
 | 
        File codeDirectory=new File(directory); 
 | 
        if(!codeDirectory.exists()){ 
 | 
            codeDirectory.mkdirs(); 
 | 
        } 
 | 
  
 | 
        File writerFile=new File(directory+fileName); 
 | 
        if(!writerFile.exists()){ 
 | 
            content=content. 
 | 
                    replaceAll("@\\{TABLENAME}", table) 
 | 
                    .replaceAll("@\\{TABLEDESC}", tableDesc) 
 | 
                    .replaceAll("@\\{ENTITYIMPORT}", entityImport) 
 | 
                    .replaceAll("@\\{ENTITYCONTENT}", entityContent) 
 | 
                    .replaceAll("@\\{ENTITYNAME}", fullEntityName) 
 | 
                    .replaceAll("@\\{SIMPLEENTITYNAME}", simpleEntityName) 
 | 
                    .replaceAll("@\\{UENTITYNAME}", simpleEntityName) 
 | 
                    .replaceAll("@\\{COMPANYNAME}",packagePath) 
 | 
                    .replaceAll("@\\{ITEMNAME}",itemName) 
 | 
//                    .replaceAll("@\\{XMLCONTENT}", xmlContent) 
 | 
                    .replaceAll("@\\{MAJORCOLUMN}", GeneratorUtils.firstCharConvert(majorColumn, false))    // majorColumn UpCase 
 | 
                    .replaceAll("@\\{MAJORCOLUMN_LINE}", GeneratorUtils.humpToLine(majorColumn)) 
 | 
                    .replaceAll("@\\{MAJORCOLUMN_UP}", GeneratorUtils.firstCharConvert(majorColumn, false)) 
 | 
                    .replaceAll("@\\{MAJORCOLUMN_LOW}", GeneratorUtils.firstCharConvert(majorColumn, true)) 
 | 
                    .replaceAll("@\\{PRIMARYKEYCOLUMN}", GeneratorUtils.firstCharConvert(primaryKeyColumn, false)) 
 | 
                    .replaceAll("@\\{PRIMARYKEYCOLUMN0}", GeneratorUtils.firstCharConvert(primaryKeyColumn, true)) 
 | 
                    .replaceAll("@\\{UPCASEMARJORCOLUMN}", GeneratorUtils.firstCharConvert(primaryKeyColumn, false)) 
 | 
                    .replaceAll("@\\{SYSTEMPACKAGE}",systemPackage) 
 | 
  
 | 
                    .replaceAll("@\\{REACTCREATECONTENT}",reactCreateContent) 
 | 
                    .replaceAll("@\\{REACTEDITCONTENT}",reactEditContent) 
 | 
                    .replaceAll("@\\{REACTLISTCONTENT}",reactListContent) 
 | 
                    .replaceAll("@\\{REACTLISTFILTERCONTENT}",reactListFilterRContent) 
 | 
                    .replaceAll("@\\{REACTPANELCONTENT}", reactPanelContent) 
 | 
                    .replaceAll("@\\{REACTLOCALECONTENT}", reactLocaleContent) 
 | 
            ; 
 | 
            writerFile.createNewFile(); 
 | 
            BufferedWriter writer=new BufferedWriter(new FileWriter(writerFile)); 
 | 
            writer.write(content); 
 | 
            writer.flush(); 
 | 
            writer.close(); 
 | 
            System.out.println(fullEntityName+template+" 源文件创建成功!"); 
 | 
        }else{ 
 | 
            System.out.println(fullEntityName+template+" 源文件已经存在创建失败!"); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    private void gainDbInfo() throws Exception { 
 | 
        Connection conn; 
 | 
        if (null == this.sqlOsType) { 
 | 
            throw new RuntimeException("请选择sqlOsType!"); 
 | 
        } 
 | 
        if (null == this.table) { 
 | 
            throw new RuntimeException("请输入table!"); 
 | 
        } 
 | 
        if (null == this.tableDesc) { 
 | 
            throw new RuntimeException("请输入tableDesc!"); 
 | 
        } 
 | 
        switch (this.sqlOsType) { 
 | 
            case MYSQL: 
 | 
                Class.forName("com.mysql.jdbc.Driver").newInstance(); 
 | 
                conn = DriverManager.getConnection("jdbc:mysql://"+url, username, password); 
 | 
                this.columns = getMysqlColumns(conn, table, true, sqlOsType); 
 | 
                break; 
 | 
            case SQL_SERVER: 
 | 
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); 
 | 
                conn = DriverManager.getConnection("jdbc:sqlserver://"+url, username, password); 
 | 
                this.columns = getSqlServerColumns(conn, table, true, sqlOsType); 
 | 
                break; 
 | 
            default: 
 | 
                throw new RuntimeException("请指定数据库类型!"); 
 | 
        } 
 | 
  
 | 
    } 
 | 
  
 | 
    // mysql 
 | 
    public static List<Column> getMysqlColumns(Connection conn, String table, boolean init, SqlOsType sqlOsType) throws Exception { 
 | 
        List<Column> result = new ArrayList<>(); 
 | 
        PreparedStatement ps = conn.prepareStatement("select * from " + table); 
 | 
        ResultSetMetaData meta = ps.executeQuery().getMetaData(); 
 | 
        // 单表字段数量 
 | 
        int count = meta.getColumnCount(); 
 | 
        ResultSet resultSet = ps.executeQuery("show full columns from " + table); 
 | 
        for (int i = 1; i < count + 1; i++) { 
 | 
            String columnName = meta.getColumnName(i); 
 | 
            if (resultSet.next() && columnName.equals(resultSet.getString("Field"))){ 
 | 
                result.add(new Column( 
 | 
                        conn, 
 | 
                        meta.getColumnName(i), 
 | 
                        GeneratorUtils.getType(meta.getColumnType(i)), 
 | 
                        resultSet.getString("Comment"), 
 | 
                        resultSet.getString("Key").equals("PRI"), 
 | 
                        resultSet.getString("Key").equals("PRI"), 
 | 
                        resultSet.getString("Null").equals("NO"), 
 | 
                        GeneratorUtils.getColumnLength(resultSet.getString("Type")), 
 | 
                        init, 
 | 
                        sqlOsType 
 | 
                )); 
 | 
            } 
 | 
            result.forEach(column -> System.out.println(column.toString())); 
 | 
        } 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
    // sqlserver 
 | 
    public static List<Column> getSqlServerColumns(Connection conn, String table, boolean init, SqlOsType sqlOsType) throws Exception { 
 | 
        List<Column> result = new ArrayList<>(); 
 | 
        PreparedStatement ps = conn.prepareStatement("select * from " + table); 
 | 
        ResultSetMetaData meta = ps.executeQuery().getMetaData(); 
 | 
        // 单表字段数量 
 | 
        int count = meta.getColumnCount(); 
 | 
        StringBuilder sql = new StringBuilder("SELECT \n" + 
 | 
                "       'Field'= a.name,\n" + 
 | 
                "       'Comment'= isnull(g.[value],''),\n" + 
 | 
                "       'Key'= case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then 'PRI' else '' end,\n" + 
 | 
                "       'Main'= case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (SELECT name FROM sysindexes WHERE indid in( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then 'PRI' else '' end,"+ 
 | 
                "       'Type'= b.name,\n" + 
 | 
                "       'Length'= COLUMNPROPERTY(a.id,a.name,'PRECISION'),\n" + 
 | 
                "       'Decimals'= isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),\n" + 
 | 
                "       'Null'= case when a.isnullable=1 then 'Yes' else 'No' end,\n" + 
 | 
                "       'Default' = isnull(e.text,'')\n" + 
 | 
                "FROM  syscolumns a\n" + 
 | 
                "LEFT JOIN  systypes b on a.xusertype=b.xusertype\n" + 
 | 
                "INNER JOIN sysobjects d on  a.id=d.id  and d.xtype='U' and  d.name<>'dtproperties'\n" + 
 | 
                "LEFT JOIN  syscomments e on  a.cdefault=e.id\n" + 
 | 
                "LEFT JOIN  sys.extended_properties g on  a.id=G.major_id and a.colid=g.minor_id  \n" + 
 | 
                "LEFT JOIN  sys.extended_properties f on  d.id=f.major_id and f.minor_id=0 where d.name = '") 
 | 
                .append(table).append("' ORDER BY a.colorder ASC"); 
 | 
        ResultSet resultSet = conn.prepareStatement(sql.toString()).executeQuery(); 
 | 
        for (int i = 1; i < count + 1; i++) { 
 | 
            String columnName = meta.getColumnName(i); 
 | 
            if (resultSet.next() && columnName.equals(resultSet.getString("Field"))){ 
 | 
                result.add(new Column( 
 | 
                        conn, 
 | 
                        meta.getColumnName(i), 
 | 
                        GeneratorUtils.getType(meta.getColumnType(i)), 
 | 
                        resultSet.getString("Comment"), 
 | 
                        resultSet.getString("Key").equals("PRI"), 
 | 
                        resultSet.getString("Main").equals("PRI"), 
 | 
                        resultSet.getString("Null").equals("No"), 
 | 
                        GeneratorUtils.getColumnLength(resultSet.getString("Type")), 
 | 
                        init, 
 | 
                        sqlOsType 
 | 
                )); 
 | 
            } 
 | 
        } 
 | 
        result.forEach(column -> System.out.println(column.toString())); 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
    /**********************************************************************************************/ 
 | 
    /************************************* Entity动态字段 *******************************************/ 
 | 
    /**********************************************************************************************/ 
 | 
  
 | 
    private String createEntityMsg(){ 
 | 
        if (Cools.isEmpty(systemPackagePath)) { 
 | 
            String[] packagePathSplit = packagePath.split("\\."); 
 | 
            systemPackagePath = packagePath.replaceAll(packagePathSplit[packagePathSplit.length-1], "system"); 
 | 
        } 
 | 
        if (columns.isEmpty()){ 
 | 
            return null; 
 | 
        } 
 | 
        StringBuilder sb = new StringBuilder(); 
 | 
        StringBuilder entityIm = new StringBuilder(); 
 | 
        boolean setTableField = true; 
 | 
        boolean setTableId = true; 
 | 
        boolean setDateTimeFormat = true; 
 | 
        for (Column column : columns){ 
 | 
            if (column.getType().equals("Date")){ 
 | 
                entityIm.append("import java.text.SimpleDateFormat;\n") 
 | 
                        .append("import java.util.Date;\n"); 
 | 
            } 
 | 
  
 | 
            // 注释 
 | 
            if (!Cools.isEmpty(column.getComment())){ 
 | 
                sb.append("    /**\n") 
 | 
                        .append("     * ") 
 | 
                        .append(column.getWholeComment()) 
 | 
                        .append("\n") 
 | 
                        .append("     */") 
 | 
                        .append("\n"); 
 | 
            } 
 | 
  
 | 
            // swagger 
 | 
            sb.append("    @ApiModelProperty(value= \"") 
 | 
                    .append(column.getWholeComment()) 
 | 
                    .append("\")\n"); 
 | 
  
 | 
  
 | 
            // 主键修饰 
 | 
            if (column.isMainKey()){ 
 | 
                if (column.isOnly()){ 
 | 
                    sb.append("    ") 
 | 
                            .append("@TableId(value = \"") 
 | 
                            .append(column.getName()) 
 | 
                            .append("\", type = IdType.AUTO)") 
 | 
                            .append("\n"); 
 | 
                } else { 
 | 
                    sb.append("    ") 
 | 
                            .append("@TableId(value = \"") 
 | 
                            .append(column.getName()) 
 | 
                            .append("\", type = IdType.INPUT)") 
 | 
                            .append("\n"); 
 | 
                } 
 | 
  
 | 
            } 
 | 
  
 | 
            if (column.getName().equals("deleted")) { 
 | 
                entityIm.append("import com.baomidou.mybatisplus.annotation.TableLogic;\n"); 
 | 
                sb.append("    ") 
 | 
                        .append("@TableLogic\n"); 
 | 
            } 
 | 
  
 | 
            if ("Date".equals(column.getType())){ 
 | 
                if (setDateTimeFormat){ 
 | 
                    entityIm.append("import org.springframework.format.annotation.DateTimeFormat;").append("\n"); 
 | 
                    setDateTimeFormat = false; 
 | 
                } 
 | 
                sb.append("    ") 
 | 
                        .append("@DateTimeFormat(pattern=\"yyyy-MM-dd HH:mm:ss\")") 
 | 
                        .append("\n"); 
 | 
            } 
 | 
  
 | 
            sb.append("    ") 
 | 
                    .append("private ") 
 | 
                    .append(column.getType()) 
 | 
                    .append(" ") 
 | 
                    .append(column.getHumpName()) 
 | 
                    .append(";") 
 | 
                    .append("\n") 
 | 
                    .append("\n"); 
 | 
        } 
 | 
  
 | 
        // default constructor 
 | 
        sb.append("    public ").append(fullEntityName).append("() {}\n\n"); 
 | 
        // full constructor 
 | 
        sb.append("    public ").append(fullEntityName).append("("); 
 | 
        for (Column column : columns){ 
 | 
            if (column.isOnly()){ continue;} 
 | 
            sb.append(column.getType()).append(" ").append(column.getHumpName()).append(","); 
 | 
        } 
 | 
        sb.deleteCharAt(sb.length()-1); 
 | 
        sb.append(") {\n"); 
 | 
        for (Column column : columns){ 
 | 
            if (column.isPrimaryKey()){ continue;} 
 | 
            sb.append("        this.").append(column.getHumpName()).append(" = ").append(column.getHumpName()).append(";\n"); 
 | 
        } 
 | 
        sb.append("    }\n\n"); 
 | 
        // constructor tips 
 | 
        sb.append("//    ").append(fullEntityName).append(" ").append(simpleEntityName).append(" = new ").append(fullEntityName).append("(\n"); 
 | 
        for (int i = 0; i<columns.size(); i++) { 
 | 
            if (columns.get(i).isOnly()){ continue;} 
 | 
            sb.append("//            null"); 
 | 
            if (i < columns.size()-1){ 
 | 
                sb.append(","); 
 | 
            } 
 | 
            sb.append("    // ").append(columns.get(i).getComment()).append(columns.get(i).isNotNull()?"[非空]":""); 
 | 
            if (i < columns.size()-1){ 
 | 
                sb.append("\n"); 
 | 
            } 
 | 
        } 
 | 
        sb.append("\n//    );\n\n"); 
 | 
  
 | 
        // get set 
 | 
        for (Column column : columns){ 
 | 
            // 时间字段增加$格式化 
 | 
            if ("Date".equals(column.getType())){ 
 | 
                sb.append("    public String get") 
 | 
                        .append(column.getHumpName().substring(0, 1).toUpperCase()).append(column.getHumpName().substring(1)) 
 | 
                        .append("\\$") 
 | 
                        .append("(){\n") 
 | 
                        .append("        if (Cools.isEmpty(this.").append(column.getHumpName()).append(")){\n") 
 | 
                        .append("            return \"\";\n") 
 | 
                        .append("        }\n") 
 | 
                        .append("        return new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\").format(this.") 
 | 
                        .append(column.getHumpName()) 
 | 
                        .append(");\n") 
 | 
                        .append("    }\n\n"); 
 | 
                // 枚举字段增加$格式化 
 | 
            } else if (!Cools.isEmpty(column.getEnums())){ 
 | 
                if (!column.getHumpName().equals("deleted")) { 
 | 
                    sb.append("    public String get") 
 | 
                            .append(column.getHumpName().substring(0, 1).toUpperCase()).append(column.getHumpName().substring(1)) 
 | 
                            .append("\\$") 
 | 
                            .append("(){\n") 
 | 
                            .append("        if (null == this.").append(column.getHumpName()).append("){ return null; }\n") 
 | 
                            .append("        switch (this.").append(column.getHumpName()).append("){\n"); 
 | 
                    for (Map<String, Object> map : column.getEnums()){ 
 | 
                        for (Map.Entry<String, Object> entry : map.entrySet()){ 
 | 
                            sb.append("            case ").append(entry.getKey()).append(":\n") 
 | 
                                    .append("                return \"").append(entry.getValue()).append("\";\n"); 
 | 
                        } 
 | 
                    } 
 | 
                    sb.append("            default:\n") 
 | 
                            .append("                return String.valueOf(this.").append(column.getHumpName()).append(");\n") 
 | 
                            .append("        }\n") 
 | 
                            .append("    }\n\n"); 
 | 
                } 
 | 
            } 
 | 
  
 | 
            // 外键修饰 
 | 
            if (!Cools.isEmpty(column.getForeignKeyMajor())){ 
 | 
                sb.append("    public String get").append(column.getHumpName().substring(0, 1).toUpperCase()).append(column.getHumpName().substring(1)).append("\\$").append("(){\n") 
 | 
                        .append("        ").append(column.getForeignKey()).append("Service service = SpringUtils.getBean(").append(column.getForeignKey()).append("Service.class);\n") 
 | 
                        .append("        ").append(column.getForeignKey()).append(" ").append(GeneratorUtils.firstCharConvert(column.getForeignKey())) 
 | 
                        .append(" = service.getById(this.").append(column.getHumpName()).append(");\n") 
 | 
                        .append("        if (!Cools.isEmpty(").append(GeneratorUtils.firstCharConvert(column.getForeignKey())).append(")){\n") 
 | 
                        .append("            return String.valueOf(").append(GeneratorUtils.firstCharConvert(column.getForeignKey())).append(".get").append(column.getForeignKeyMajor()).append("());\n") 
 | 
                        .append("        }\n") 
 | 
                        .append("        return null;\n") 
 | 
                        .append("    }\n\n"); 
 | 
            } 
 | 
  
 | 
        } 
 | 
        entityImport = entityIm.toString(); 
 | 
        return sb.toString(); 
 | 
    } 
 | 
  
 | 
    /**********************************************************************************************/ 
 | 
    /*********************************** Controller动态字段 *****************************************/ 
 | 
    /**********************************************************************************************/ 
 | 
  
 | 
    private String createPrimaryMsg(){ 
 | 
        String defaultMajor = "id"; 
 | 
        boolean havePrimary = false; 
 | 
        for (Column column: columns){ 
 | 
            if (column.isPrimaryKey()){ 
 | 
                defaultMajor = column.getHumpName(); 
 | 
                havePrimary = true; 
 | 
            } 
 | 
        } 
 | 
        if (!havePrimary) { 
 | 
            for (Column column: columns){ 
 | 
                if (column.isMainKey()){ 
 | 
                    defaultMajor = column.getHumpName(); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return defaultMajor; 
 | 
    } 
 | 
  
 | 
    private String createMajorMsg(){ 
 | 
        String defaultMajor = "id"; 
 | 
        for (Column column: columns){ 
 | 
            if (column.isPrimaryKey()){ 
 | 
                defaultMajor = column.getHumpName(); 
 | 
            } 
 | 
            if (column.isMajor()){ 
 | 
                return column.getHumpName(); 
 | 
            } 
 | 
        } 
 | 
        return defaultMajor; 
 | 
    } 
 | 
  
 | 
    /**********************************************************************************************/ 
 | 
    /************************************** ReactCreat *******************************************/ 
 | 
    /**********************************************************************************************/ 
 | 
  
 | 
    private String createReactCreateContent() { 
 | 
        StringBuilder sb = new StringBuilder(); 
 | 
        int count = 0; 
 | 
        for (Column column : columns){ 
 | 
            if (column.isPrimaryKey() 
 | 
                    || column.getHumpName().equals("status") 
 | 
                    || column.getHumpName().equals("deleted") 
 | 
                    || column.getHumpName().equals("tenantId") 
 | 
                    || column.getHumpName().equals("createBy") 
 | 
                    || column.getHumpName().equals("createTime") 
 | 
                    || column.getHumpName().equals("updateBy") 
 | 
                    || column.getHumpName().equals("updateTime") 
 | 
                    || column.getHumpName().equals("memo") 
 | 
            ) { 
 | 
                continue; 
 | 
            } 
 | 
  
 | 
            sb.append("                                <Grid item xs={6} display=\"flex\" gap={1}>\n"); 
 | 
            switch (column.getType()) { 
 | 
                case "Boolean": 
 | 
                    sb.append("                                    <BooleanInput\n"); 
 | 
                    sb.append("                                        label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\"\n"); 
 | 
                    sb.append("                                        source=\"").append(column.getHumpName()).append("\"\n"); 
 | 
                    if (columns.indexOf(column) == 1) { 
 | 
                        sb.append("                                        autoFocus\n"); 
 | 
                    } 
 | 
                    if (column.isNotNull()) { 
 | 
                        sb.append("                                        validate={required()}\n"); 
 | 
                    } 
 | 
                    sb.append("                                    />\n"); 
 | 
                    break; 
 | 
                case "Short": 
 | 
                case "Integer": 
 | 
                case "Long": 
 | 
                case "Double": 
 | 
                    if (!Cools.isEmpty(column.getForeignKeyMajor())) { 
 | 
                        sb.append("                                    <ReferenceInput\n"); 
 | 
                        sb.append("                                        source=\"").append(column.getHumpName()).append("\"\n"); 
 | 
                        sb.append("                                        reference=\"").append(GeneratorUtils.firstCharConvert(column.getForeignKey())).append("\"\n"); 
 | 
                        if (count == 0) { 
 | 
                            sb.append("                                        autoFocus\n"); 
 | 
                        } 
 | 
                        sb.append("                                    >\n"); 
 | 
                        sb.append("                                        <AutocompleteInput\n"); 
 | 
                        sb.append("                                            label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\"\n"); 
 | 
                        sb.append("                                            optionText=\"").append(GeneratorUtils.firstCharConvert(column.getForeignKeyMajor())).append("\"\n"); 
 | 
                        sb.append("                                            filterToQuery={(val) => ({ ").append(GeneratorUtils.firstCharConvert(column.getForeignKeyMajor())).append(": val })}\n"); 
 | 
                        if (column.isNotNull()) { 
 | 
                            sb.append("                                            validate={required()}\n"); 
 | 
                        } 
 | 
                        sb.append("                                        />\n"); 
 | 
                        sb.append("                                    </ReferenceInput>\n"); 
 | 
                    } else { 
 | 
                        if (Cools.isEmpty(column.getEnums())) { 
 | 
                            sb.append("                                    <NumberInput\n"); 
 | 
                            sb.append("                                        label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\"\n"); 
 | 
                            sb.append("                                        source=\"").append(column.getHumpName()).append("\"\n"); 
 | 
                            if (count == 0) { 
 | 
                                sb.append("                                        autoFocus\n"); 
 | 
                            } 
 | 
                            if (column.isNotNull()) { 
 | 
                                sb.append("                                        validate={required()}\n"); 
 | 
                            } 
 | 
                            sb.append("                                    />\n"); 
 | 
                        } else { 
 | 
                            sb.append("                                    <SelectInput\n"); 
 | 
                            sb.append("                                        label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\"\n"); 
 | 
                            sb.append("                                        source=\"").append(column.getHumpName()).append("\"\n"); 
 | 
                            sb.append("                                        choices={[\n"); 
 | 
                            for (Map<String, Object> map : column.getEnums()) { 
 | 
                                for (Map.Entry<String, Object> entry : map.entrySet()){ 
 | 
                                    sb.append("                                            { id: ").append(entry.getKey()).append(", name: '").append(entry.getValue()).append("' },\n"); 
 | 
                                } 
 | 
                            } 
 | 
                            sb.append("                                        ]}\n"); 
 | 
                            sb.append("                                    />\n"); 
 | 
                        } 
 | 
                    } 
 | 
                    break; 
 | 
                case "String": 
 | 
                    sb.append("                                    <TextInput\n"); 
 | 
                    sb.append("                                        label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\"\n"); 
 | 
                    sb.append("                                        source=\"").append(column.getHumpName()).append("\"\n"); 
 | 
                    sb.append("                                        parse={v => v}\n"); 
 | 
                    if (count == 0) { 
 | 
                        sb.append("                                        autoFocus\n"); 
 | 
                    } 
 | 
                    if (column.isNotNull()) { 
 | 
                        sb.append("                                        validate={required()}\n"); 
 | 
                    } 
 | 
                    sb.append("                                    />\n"); 
 | 
                    break; 
 | 
                case "Date": 
 | 
                    sb.append("                                    <DateInput\n"); 
 | 
                    sb.append("                                        label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\"\n"); 
 | 
                    sb.append("                                        source=\"").append(column.getHumpName()).append("\"\n"); 
 | 
                    if (count == 0) { 
 | 
                        sb.append("                                        autoFocus\n"); 
 | 
                    } 
 | 
                    if (column.isNotNull()) { 
 | 
                        sb.append("                                        validate={required()}\n"); 
 | 
                    } 
 | 
                    sb.append("                                    />\n"); 
 | 
                    break; 
 | 
                default: 
 | 
                    break; 
 | 
            } 
 | 
  
 | 
            sb.append("                                </Grid>\n"); 
 | 
            count++; 
 | 
        } 
 | 
        return sb.toString(); 
 | 
    } 
 | 
  
 | 
    /**********************************************************************************************/ 
 | 
    /************************************** ReactEdit *******************************************/ 
 | 
    /**********************************************************************************************/ 
 | 
  
 | 
    private String createReactEditContent() { 
 | 
        StringBuilder sb = new StringBuilder(); 
 | 
        int count = 0; 
 | 
        for (int i = 0; i < columns.size(); i++) { 
 | 
            Column column = columns.get(i); 
 | 
            if (column.isPrimaryKey() 
 | 
                    || column.getHumpName().equals("status") 
 | 
                    || column.getHumpName().equals("deleted") 
 | 
                    || column.getHumpName().equals("tenantId") 
 | 
                    || column.getHumpName().equals("createBy") 
 | 
                    || column.getHumpName().equals("createTime") 
 | 
                    || column.getHumpName().equals("updateBy") 
 | 
                    || column.getHumpName().equals("updateTime") 
 | 
                    || column.getHumpName().equals("memo") 
 | 
            ) { 
 | 
                continue; 
 | 
            } 
 | 
  
 | 
            sb.append("                        <Stack direction='row' gap={2}>\n"); 
 | 
  
 | 
            switch (column.getType()) { 
 | 
                case "Boolean": 
 | 
                    sb.append("                            <BooleanInput\n"); 
 | 
                    sb.append("                                label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\"\n"); 
 | 
                    sb.append("                                source=\"").append(column.getHumpName()).append("\"\n"); 
 | 
                    if (columns.indexOf(column) == 1) { 
 | 
                        sb.append("                                autoFocus\n"); 
 | 
                    } 
 | 
                    if (column.isNotNull()) { 
 | 
                        sb.append("                                validate={required()}\n"); 
 | 
                    } 
 | 
                    sb.append("                            />\n"); 
 | 
                    break; 
 | 
                case "Short": 
 | 
                case "Integer": 
 | 
                case "Long": 
 | 
                case "Double": 
 | 
                    if (!Cools.isEmpty(column.getForeignKeyMajor())) { 
 | 
                        sb.append("                            <ReferenceInput\n"); 
 | 
                        sb.append("                                source=\"").append(column.getHumpName()).append("\"\n"); 
 | 
                        sb.append("                                reference=\"").append(GeneratorUtils.firstCharConvert(column.getForeignKey())).append("\"\n"); 
 | 
                        sb.append("                                perPage={REFERENCE_INPUT_PAGESIZE}\n"); 
 | 
                        if (count == 0) { 
 | 
                            sb.append("                                autoFocus\n"); 
 | 
                        } 
 | 
                        sb.append("                            >\n"); 
 | 
                        sb.append("                                <AutocompleteInput\n"); 
 | 
                        sb.append("                                    label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\"\n"); 
 | 
                        sb.append("                                    optionText=\"").append(GeneratorUtils.firstCharConvert(column.getForeignKeyMajor())).append("\"\n"); 
 | 
                        sb.append("                                    filterToQuery={(val) => ({ ").append(GeneratorUtils.firstCharConvert(column.getForeignKeyMajor())).append(": val })}\n"); 
 | 
                        if (column.isNotNull()) { 
 | 
                            sb.append("                                    validate={required()}\n"); 
 | 
                        } 
 | 
                        sb.append("                                />\n"); 
 | 
                        sb.append("                            </ReferenceInput>\n"); 
 | 
                    } else { 
 | 
                        if (Cools.isEmpty(column.getEnums())) { 
 | 
                            sb.append("                            <NumberInput\n"); 
 | 
                            sb.append("                                label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\"\n"); 
 | 
                            sb.append("                                source=\"").append(column.getHumpName()).append("\"\n"); 
 | 
                            if (count == 0) { 
 | 
                                sb.append("                                autoFocus\n"); 
 | 
                            } 
 | 
                            if (column.isNotNull()) { 
 | 
                                sb.append("                                validate={required()}\n"); 
 | 
                            } 
 | 
                            sb.append("                            />\n"); 
 | 
                        } else { 
 | 
                            sb.append("                            <SelectInput\n"); 
 | 
                            sb.append("                                label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\"\n"); 
 | 
                            sb.append("                                source=\"").append(column.getHumpName()).append("\"\n"); 
 | 
                            sb.append("                                choices={[\n"); 
 | 
                            for (Map<String, Object> map : column.getEnums()) { 
 | 
                                for (Map.Entry<String, Object> entry : map.entrySet()){ 
 | 
                                    sb.append("                                    { id: ").append(entry.getKey()).append(", name: '").append(entry.getValue()).append("' },\n"); 
 | 
                                } 
 | 
                            } 
 | 
                            sb.append("                                ]}\n"); 
 | 
                            if (columns.indexOf(column) == 1) { 
 | 
                                sb.append("                                autoFocus\n"); 
 | 
                            } 
 | 
                            if (column.isNotNull()) { 
 | 
                                sb.append("                                validate={required()}\n"); 
 | 
                            } 
 | 
                            sb.append("                            />\n"); 
 | 
                        } 
 | 
                    } 
 | 
                    break; 
 | 
                case "String": 
 | 
                    sb.append("                            <TextInput\n"); 
 | 
                    sb.append("                                label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\"\n"); 
 | 
                    sb.append("                                source=\"").append(column.getHumpName()).append("\"\n"); 
 | 
                    sb.append("                                parse={v => v}\n"); 
 | 
                    if (count == 0) { 
 | 
                        sb.append("                                autoFocus\n"); 
 | 
                    } 
 | 
                    if (column.isNotNull()) { 
 | 
                        sb.append("                                validate={required()}\n"); 
 | 
                    } 
 | 
                    sb.append("                            />\n"); 
 | 
                    break; 
 | 
                case "Date": 
 | 
                    sb.append("                            <DateInput\n"); 
 | 
                    sb.append("                                label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\"\n"); 
 | 
                    sb.append("                                source=\"").append(column.getHumpName()).append("\"\n"); 
 | 
                    if (count == 0) { 
 | 
                        sb.append("                                autoFocus\n"); 
 | 
                    } 
 | 
                    if (column.isNotNull()) { 
 | 
                        sb.append("                                validate={required()}\n"); 
 | 
                    } 
 | 
                    sb.append("                            />\n"); 
 | 
                    break; 
 | 
                default: 
 | 
                    break; 
 | 
            } 
 | 
  
 | 
            sb.append("                        </Stack>\n"); 
 | 
            count++; 
 | 
        } 
 | 
  
 | 
        return sb.toString(); 
 | 
    } 
 | 
  
 | 
    /**********************************************************************************************/ 
 | 
    /************************************** ReactList ********************************************/ 
 | 
    /**********************************************************************************************/ 
 | 
  
 | 
    private String createReactListContent() { 
 | 
        StringBuilder sb = new StringBuilder(); 
 | 
        for (int i = 0; i < columns.size(); i++) { 
 | 
            Column column = columns.get(i); 
 | 
            if (column.isPrimaryKey() 
 | 
                    || column.getHumpName().equals("status") 
 | 
                    || column.getHumpName().equals("deleted") 
 | 
                    || column.getHumpName().equals("tenantId") 
 | 
                    || column.getHumpName().equals("createTime") 
 | 
                    || column.getHumpName().equals("createBy") 
 | 
                    || column.getHumpName().equals("updateTime") 
 | 
                    || column.getHumpName().equals("updateBy") 
 | 
                    || column.getHumpName().equals("memo") 
 | 
            ) { 
 | 
                continue; 
 | 
            } 
 | 
            switch (column.getType()) { 
 | 
                case "Boolean": 
 | 
                    sb.append("                    <BooleanField source=\"").append(column.getHumpName()).append("Bool\" label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\" sortable={false} />\n"); 
 | 
                    break; 
 | 
                case "Short": 
 | 
                case "Integer": 
 | 
                case "Long": 
 | 
                case "Double": 
 | 
                    if (!Cools.isEmpty(column.getForeignKeyMajor())) { 
 | 
                        sb.append("                    <ReferenceField source=\"").append(column.getHumpName()).append("\" label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\" reference=\"").append(GeneratorUtils.firstCharConvert(column.getForeignKey())).append("\" link={false} sortable={false}>\n"); 
 | 
                        sb.append("                        <TextField source=\"").append(GeneratorUtils.firstCharConvert(column.getForeignKeyMajor())).append("\" />\n"); 
 | 
                        sb.append("                    </ReferenceField>\n"); 
 | 
                    } else { 
 | 
                        if (Cools.isEmpty(column.getEnums())) { 
 | 
                            sb.append("                    <NumberField source=\"").append(column.getHumpName()).append("\" label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\" />\n"); 
 | 
                        } else { 
 | 
                            sb.append("                    <TextField source=\"").append(column.getHumpName()).append("\\$").append("\" label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\" sortable={false} />\n"); 
 | 
                        } 
 | 
                    } 
 | 
                    break; 
 | 
                case "String": 
 | 
                    sb.append("                    <TextField source=\"").append(column.getHumpName()).append("\" label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\" />\n"); 
 | 
                    break; 
 | 
                case "Date": 
 | 
                    sb.append("                    <DateField source=\"").append(column.getHumpName()).append("\" label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\" showTime />\n"); 
 | 
                    break; 
 | 
                default: 
 | 
                    break; 
 | 
            } 
 | 
        } 
 | 
        return sb.toString(); 
 | 
    } 
 | 
  
 | 
    private String createReactListFilterRContent() { 
 | 
        StringBuilder sb = new StringBuilder(); 
 | 
        for (int i = 0; i < columns.size(); i++) { 
 | 
            Column column = columns.get(i); 
 | 
            if (column.isPrimaryKey() 
 | 
                    || column.getHumpName().equals("status") 
 | 
                    || column.getHumpName().equals("deleted") 
 | 
                    || column.getHumpName().equals("tenantId") 
 | 
                    || column.getHumpName().equals("createTime") 
 | 
                    || column.getHumpName().equals("createBy") 
 | 
                    || column.getHumpName().equals("updateTime") 
 | 
                    || column.getHumpName().equals("updateBy") 
 | 
                    || column.getHumpName().equals("memo") 
 | 
            ) { 
 | 
                continue; 
 | 
            } 
 | 
            switch (column.getType()) { 
 | 
                case "Boolean": 
 | 
                    sb.append("    <BooleanInput source=\"").append(column.getHumpName()).append("\" label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\" />,\n"); 
 | 
                    break; 
 | 
                case "Short": 
 | 
                case "Integer": 
 | 
                case "Long": 
 | 
                case "Double": 
 | 
                    if (!Cools.isEmpty(column.getForeignKeyMajor())) { 
 | 
                        sb.append("    <ReferenceInput source=\"").append(column.getHumpName()).append("\" label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\" reference=\"").append(GeneratorUtils.firstCharConvert(column.getForeignKey())).append("\">\n"); 
 | 
                        sb.append("        <AutocompleteInput label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\" optionText=\"").append(GeneratorUtils.firstCharConvert(column.getForeignKeyMajor())).append("\" filterToQuery={(val) => ({ ").append(GeneratorUtils.firstCharConvert(column.getForeignKeyMajor())).append(": val })} />\n"); 
 | 
                        sb.append("    </ReferenceInput>,\n"); 
 | 
                    } else { 
 | 
                        if (Cools.isEmpty(column.getEnums())) { 
 | 
                            sb.append("    <NumberInput source=\"").append(column.getHumpName()).append("\" label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\" />,\n"); 
 | 
                        } else { 
 | 
                            sb.append("    <SelectInput source=\"").append(column.getHumpName()).append("\" label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\"\n"); 
 | 
                            sb.append("        choices={[\n"); 
 | 
                            for (Map<String, Object> map : column.getEnums()) { 
 | 
                                for (Map.Entry<String, Object> entry : map.entrySet()){ 
 | 
                                    sb.append("            { id: ").append(entry.getKey()).append(", name: '").append(entry.getValue()).append("' },\n"); 
 | 
                                } 
 | 
                            } 
 | 
                            sb.append("        ]}\n"); 
 | 
                            sb.append("    />,\n"); 
 | 
                        } 
 | 
                    } 
 | 
                    break; 
 | 
                case "String": 
 | 
                    sb.append("    <TextInput source=\"").append(column.getHumpName()).append("\" label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\" />,\n"); 
 | 
                    break; 
 | 
                case "Date": 
 | 
                    sb.append("    <DateInput source=\"").append(column.getHumpName()).append("\" label=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\" />,\n"); 
 | 
                    break; 
 | 
                default: 
 | 
                    break; 
 | 
            } 
 | 
        } 
 | 
        return sb.toString(); 
 | 
    } 
 | 
  
 | 
    /**********************************************************************************************/ 
 | 
    /************************************** ReactPanel ********************************************/ 
 | 
    /**********************************************************************************************/ 
 | 
  
 | 
    private String createReactPanelContent() { 
 | 
        StringBuilder sb = new StringBuilder(); 
 | 
        for (int i = 0; i < columns.size(); i++) { 
 | 
            Column column = columns.get(i); 
 | 
            if (column.isPrimaryKey() 
 | 
                    || column.getHumpName().equals("status") 
 | 
                    || column.getHumpName().equals("deleted") 
 | 
                    || column.getHumpName().equals("tenantId") 
 | 
                    || column.getHumpName().equals("createBy") 
 | 
                    || column.getHumpName().equals("createTime") 
 | 
                    || column.getHumpName().equals("updateBy") 
 | 
                    || column.getHumpName().equals("updateTime") 
 | 
                    || column.getHumpName().equals("memo") 
 | 
            ) { 
 | 
                continue; 
 | 
            } 
 | 
  
 | 
            // 特殊显示 
 | 
            boolean specialShow = false; 
 | 
            if ("Date".equals(column.getType()) || !Cools.isEmpty(column.getEnums()) || !Cools.isEmpty(column.getForeignKeyMajor())) { 
 | 
                specialShow = true; 
 | 
            } 
 | 
  
 | 
            sb.append("                        <Grid item xs={6}>\n"); 
 | 
            sb.append("                            <PanelTypography\n"); 
 | 
            sb.append("                                title=\"table.field.").append(simpleEntityName).append(".").append(column.getHumpName()).append("\" \n"); 
 | 
            sb.append("                                property={record.").append(column.getHumpName()).append(specialShow?"\\$":"").append("}\n"); 
 | 
            sb.append("                            />\n"); 
 | 
            sb.append("                        </Grid>\n"); 
 | 
        } 
 | 
  
 | 
        return sb.toString(); 
 | 
    } 
 | 
  
 | 
    /**********************************************************************************************/ 
 | 
    /************************************** Locale ********************************************/ 
 | 
    /**********************************************************************************************/ 
 | 
  
 | 
    private String createReactLocaleContent() { 
 | 
        StringBuilder sb = new StringBuilder("{\n"); 
 | 
        for (int i = 0; i < columns.size(); i++) { 
 | 
            Column column = columns.get(i); 
 | 
            if (column.isPrimaryKey() 
 | 
                    || column.getHumpName().equals("createTime") 
 | 
                    || column.getHumpName().equals("createBy") 
 | 
                    || column.getHumpName().equals("updateTime") 
 | 
                    || column.getHumpName().equals("updateBy") 
 | 
                    || column.getHumpName().equals("status") 
 | 
                    || column.getHumpName().equals("deleted") 
 | 
                    || column.getHumpName().equals("tenantId") 
 | 
                    || column.getHumpName().equals("memo") 
 | 
            ) { 
 | 
                continue; 
 | 
            } 
 | 
            sb.append("    ").append(column.getHumpName()).append(": \"").append(column.getHumpName()).append("\",\n"); 
 | 
        } 
 | 
        sb.append("},"); 
 | 
        return sb.toString(); 
 | 
    } 
 | 
  
 | 
} 
 |