package com.vincent.rsf.framework.generators; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.generators.constant.SqlOsType; import com.vincent.rsf.framework.generators.domain.Column; import com.vincent.rsf.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 SYSTEM_MODEL = new ArrayList(){{ 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 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.vincent.rsf.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 getMysqlColumns(Connection conn, String table, boolean init, SqlOsType sqlOsType) throws Exception { List 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 getSqlServerColumns(Connection conn, String table, boolean init, SqlOsType sqlOsType) throws Exception { List 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){ // System.out.println("------==========>"); // System.out.println(column.getName()); // System.out.println(column.getType()); 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 map : column.getEnums()){ for (Map.Entry 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.getForeignKey()) && !column.getForeignKey().equals("Tenant")){ 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(" \n"); switch (column.getType()) { case "Boolean": sb.append(" \n"); break; case "Short": case "Integer": case "Long": case "Double": if (!Cools.isEmpty(column.getForeignKeyMajor())) { sb.append(" \n"); sb.append(" ({ ").append(GeneratorUtils.firstCharConvert(column.getForeignKeyMajor())).append(": val })}\n"); if (column.isNotNull()) { sb.append(" validate={required()}\n"); } sb.append(" />\n"); sb.append(" \n"); } else { if (Cools.isEmpty(column.getEnums())) { sb.append(" \n"); } else { sb.append(" map : column.getEnums()) { for (Map.Entry 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(" 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(" \n"); break; default: break; } sb.append(" \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(" \n"); switch (column.getType()) { case "Boolean": sb.append(" \n"); break; case "Short": case "Integer": case "Long": case "Double": if (!Cools.isEmpty(column.getForeignKeyMajor())) { sb.append(" \n"); sb.append(" ({ ").append(GeneratorUtils.firstCharConvert(column.getForeignKeyMajor())).append(": val })}\n"); if (column.isNotNull()) { sb.append(" validate={required()}\n"); } sb.append(" />\n"); sb.append(" \n"); } else { if (Cools.isEmpty(column.getEnums())) { sb.append(" \n"); } else { sb.append(" map : column.getEnums()) { for (Map.Entry 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(" 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(" \n"); break; default: break; } sb.append(" \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(" \n"); break; case "Short": case "Integer": case "Long": case "Double": if (!Cools.isEmpty(column.getForeignKeyMajor())) { sb.append(" \n"); sb.append(" \n"); sb.append(" \n"); } else { if (Cools.isEmpty(column.getEnums())) { sb.append(" \n"); } else { sb.append(" \n"); } } break; case "String": sb.append(" \n"); break; case "Date": sb.append(" \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(" ,\n"); break; case "Short": case "Integer": case "Long": case "Double": if (!Cools.isEmpty(column.getForeignKeyMajor())) { sb.append(" \n"); sb.append(" ({ ").append(GeneratorUtils.firstCharConvert(column.getForeignKeyMajor())).append(": val })} />\n"); sb.append(" ,\n"); } else { if (Cools.isEmpty(column.getEnums())) { sb.append(" ,\n"); } else { sb.append(" map : column.getEnums()) { for (Map.Entry 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(" ,\n"); break; case "Date": sb.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(" \n"); sb.append(" \n"); sb.append(" \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(); } }