From c2b88a03f3d0d5ebe92949e64d17ee4d0ac3f6b7 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 09 九月 2025 15:14:00 +0800
Subject: [PATCH] 发货清空缓存站点
---
zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/CoolGenerator.java | 1502 +++++++++++++++++++++++++++++----------------------------
1 files changed, 754 insertions(+), 748 deletions(-)
diff --git a/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/CoolGenerator.java b/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/CoolGenerator.java
index 09eb45f..6021254 100644
--- a/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/CoolGenerator.java
+++ b/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/CoolGenerator.java
@@ -1,748 +1,754 @@
-package com.zy.asrs.framework.generators;
-
-import com.zy.asrs.framework.common.Cools;
-import com.zy.asrs.framework.generators.constant.SqlOsType;
-import com.zy.asrs.framework.generators.domain.Column;
-import com.zy.asrs.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 CoolGenerator {
-
- 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",
- "Html",
- "HtmlDetail",
- "Js",
- "Sql"};
- private static final ArrayList<String> SYSTEM_MODEL = new ArrayList<String>(){{
- add("User");
- add("Host");
- }};
-
-
- public String url;
- public String username;
- public String password;
- public String table;
- 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 html = true;
- public boolean js = true;
- public boolean sql = true;
- public SqlOsType sqlOsType;
- public String backendPrefixPath;
- public String frontendPrefixPath;
-
- private List<Column> columns = new ArrayList<>();
- private String fullEntityName;
- private String simpleEntityName;
- private String entityImport;
- private String entityContent;
- private String xmlContent;
- private String htmlContent;
- private String htmlDialogContent;
- private String jsTableContent;
- private String jsForeignKeyContent;
- private String jsDateContent;
- private String jsPrimaryKeyDoms;
- private String primaryKeyColumn;
- private String majorColumn;
- private String systemPackagePath;
- private String systemPackage;
- private String itemName;
-
- 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 "Html":
- pass = html;
- directory = frontendPrefixPath + HTML_DIR + "/views/" + simpleEntityName + "/";
- fileName = simpleEntityName+".html";
- break;
- case "Js":
- pass = js;
- directory = frontendPrefixPath + HTML_DIR + "/static/js/" + simpleEntityName + "/";
- fileName = simpleEntityName+".js";
- break;
- default:
- break;
- }
- if (!pass){ continue; }
- String content = readFile(template);
- writeFile(content, directory, fileName, template);
- }
- }
-
- private void init() throws Exception {
- gainDbInfo();
- fullEntityName = GeneratorUtils.getNameSpace(table);
- simpleEntityName = fullEntityName.substring(0, 1).toLowerCase()+fullEntityName.substring(1);
- entityContent = createEntityMsg();
- htmlContent = createHtmlMsg();
- htmlDialogContent = createHtmlDialogMsg();
- jsTableContent = createJsTableMsg();
- jsForeignKeyContent = createJsFkContent();
- jsDateContent = createJsDateContent();
- jsPrimaryKeyDoms = createJsPrimaryKeyMsg();
- 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];
- }
-
- private String readFile(String template){
- StringBuilder txtContentBuilder=new StringBuilder();
- ClassPathResource classPath=new ClassPathResource("templates/"+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("@\\{ENTITYIMPORT}", entityImport)
- .replaceAll("@\\{ENTITYCONTENT}", entityContent)
- .replaceAll("@\\{ENTITYNAME}", fullEntityName)
- .replaceAll("@\\{SIMPLEENTITYNAME}", simpleEntityName)
- .replaceAll("@\\{UENTITYNAME}", simpleEntityName)
- .replaceAll("@\\{COMPANYNAME}",packagePath)
- .replaceAll("@\\{ITEMNAME}",itemName)
-// .replaceAll("@\\{XMLCONTENT}", xmlContent)
- .replaceAll("@\\{HTMLCONTENT}", htmlContent)
- .replaceAll("@\\{HTMLDIALOGCONTENT}", htmlDialogContent)
- .replaceAll("@\\{JSTABLECONTENT}", jsTableContent)
- .replaceAll("@\\{JSFOREIGNKEYCONTENT}", jsForeignKeyContent)
- .replaceAll("@\\{JSDATECONTENT}", jsDateContent)
- .replaceAll("@\\{JSPRIMARYKEYDOMS}", jsPrimaryKeyDoms)
- .replaceAll("@\\{MAJORCOLUMN}", GeneratorUtils.humpToLine(majorColumn))
- .replaceAll("@\\{MAJORCOLUMN0}", GeneratorUtils.firstCharConvert(majorColumn, false))
- .replaceAll("@\\{MAJORCOLUMN_UP}", GeneratorUtils.firstCharConvert(majorColumn, false))
- .replaceAll("@\\{PRIMARYKEYCOLUMN}", GeneratorUtils.firstCharConvert(primaryKeyColumn, false))
- .replaceAll("@\\{PRIMARYKEYCOLUMN0}", GeneratorUtils.firstCharConvert(primaryKeyColumn, true))
- .replaceAll("@\\{UPCASEMARJORCOLUMN}", GeneratorUtils.firstCharConvert(primaryKeyColumn, false))
- .replaceAll("@\\{SYSTEMPACKAGE}",systemPackage)
- ;
- 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("璇锋寚瀹氭暟鎹簱绫诲瀷锛�");
- }
- switch (this.sqlOsType) {
- case MYSQL:
- Class.forName("com.mysql.cj.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 ("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())){
- 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;
- }
-
- /**********************************************************************************************/
- /************************************** Html鍔ㄦ�佸瓧娈� *******************************************/
- /**********************************************************************************************/
-
- private String createHtmlMsg(){
- StringBuilder sb = new StringBuilder();
- for (Column column : columns){
- if (column.isPrimaryKey()){ continue;}
- if (!Cools.isEmpty(column.getForeignKeyMajor())){
- sb.append(" <div class=\"layui-inline\">\n")
- .append(" <div class=\"layui-input-inline cool-auto-complete\">\n")
- .append(" <input id=\"").append(column.getHumpName()).append("\"")
- .append(" class=\"layui-input\" name=\"").append(column.getName()).append("\" type=\"text\" placeholder=\"璇疯緭鍏" autocomplete=\"off\" style=\"display: none\">\n")
- .append(" <input id=\"").append(column.getHumpName()).append("\\$")
- .append("\" class=\"layui-input cool-auto-complete-div\" onclick=\"autoShow(this.id)\" type=\"text\" placeholder=\"").append(GeneratorUtils.supportHtmlName(column.getComment())).append("\" onfocus=this.blur()>\n")
- .append(" <div class=\"cool-auto-complete-window\">\n")
- .append(" <input class=\"cool-auto-complete-window-input\" data-key=\"").append(GeneratorUtils.firstCharConvert(column.getForeignKey())).append("Query").append("By").append(column.getHumpName()).append("\" onkeyup=\"autoLoad(this.getAttribute('data-key'))\">\n")
- .append(" <select class=\"cool-auto-complete-window-select\" data-key=\"").append(GeneratorUtils.firstCharConvert(column.getForeignKey())).append("Query").append("By").append(column.getHumpName()).append("Select\" onchange=\"confirmed(this.getAttribute('data-key'))\" multiple=\"multiple\">\n")
- .append(" </select>\n")
- .append(" </div>\n")
- .append(" </div>\n")
- .append(" </div>\n");
- }
- }
- return sb.toString();
- }
-
- private String createHtmlDialogMsg() {
- StringBuilder sb = new StringBuilder();
- for (Column column : columns){
- if (column.isPrimaryKey()) {
- continue;
- }
- sb.append(" <div class=\"layui-form-item\">\n");
- sb.append(" <label class=\"layui-form-label");
- if (column.isNotNull()){
- sb.append(" layui-form-required");
- }
- sb.append("\">").append(column.getComment()).append(": </label>\n");
- sb.append(" <div class=\"layui-input-block");
- // 鍏宠仈澶栭敭
- if (!Cools.isEmpty(column.getForeignKeyMajor())){
- sb.append(" cool-auto-complete");
- }
- sb.append("\">\n");
- // 杈撳叆妗嗙被鍨�
- if (Cools.isEmpty(column.getEnums())){
- sb.append(" <input class=\"layui-input\" name=\"").append(column.getHumpName());
- if ("Date".equals(column.getType())){
- sb.append("\" id=\"").append(column.getHumpName()).append("\\$");
- }
- sb.append("\" placeholder=\"璇疯緭鍏�").append(column.getComment()).append("\"");
- if (column.isNotNull()){
- sb.append(" lay-vertype=\"tips\" lay-verify=\"required\"");
- }
- // 鍏宠仈澶栭敭
- if (!Cools.isEmpty(column.getForeignKeyMajor())){
- sb.append(" style=\"display: none\"");
- }
- sb.append(">\n");
-
- // 鍏宠仈澶栭敭
- if (!Cools.isEmpty(column.getForeignKeyMajor())){
- sb.append(" <input id=\"").append(column.getHumpName()).append("\\$").append("\" name=\"").append(column.getHumpName()).append("\\$")
- .append("\" class=\"layui-input cool-auto-complete-div\" onclick=\"autoShow(this.id)\" type=\"text\" placeholder=\"璇疯緭鍏�").append(column.getComment()).append("\" onfocus=this.blur()>\n");
- sb.append(" <div class=\"cool-auto-complete-window\">\n")
- .append(" <input class=\"cool-auto-complete-window-input\" data-key=\"")
- .append(GeneratorUtils.firstCharConvert(column.getForeignKey())).append("Query").append("By").append(column.getHumpName()).append("\" onkeyup=\"autoLoad(this.getAttribute('data-key'))\">\n")
- .append(" <select class=\"cool-auto-complete-window-select\" data-key=\"").append(GeneratorUtils.firstCharConvert(column.getForeignKey())).append("Query").append("By").append(column.getHumpName()).append("Select\" onchange=\"confirmed(this.getAttribute('data-key'))\" multiple=\"multiple\">\n")
- .append(" </select>\n")
- .append(" </div>\n");
- }
- // 鏋氫妇绫诲瀷
- } else {
- sb.append(" <select name=\"").append(column.getHumpName()).append("\"");
- if (column.isNotNull()){
- sb.append(" lay-vertype=\"tips\" lay-verify=\"required\"");
- }
- sb.append(">\n");
- sb.append(" <option value=\"\">").append("璇烽�夋嫨").append(column.getComment()).append("</option>\n");
- for (Map<String, Object> map : column.getEnums()){
- for (Map.Entry<String, Object> entry : map.entrySet()){
- sb.append(" <option value=\"")
- .append(entry.getKey())
- .append("\">")
- .append(entry.getValue())
- .append("</option>\n");
- }
- }
- sb.append(" </select>\n");
- }
-
- sb.append(" </div>\n");
- sb.append(" </div>\n");
- }
- return sb.toString();
- }
-
- private String createJsTableMsg(){
- StringBuilder sb = new StringBuilder();
- for (Column column : columns){
-// if (column.isPrimaryKey()){ continue;}
- sb.append(" ,{field: '");
- if ("Date".equals(column.getType()) || !Cools.isEmpty(column.getEnums())){
- // 鏃堕棿銆佹灇涓� 鏍煎紡鍖�
- sb.append(column.getHumpName()).append("\\$");
- } else {
- // 涓婚敭淇グ
- if (!Cools.isEmpty(column.getForeignKeyMajor())){
- sb.append(column.getHumpName()).append("\\$");
- } else {
- sb.append(column.getHumpName());
- }
- }
- sb.append("', align: 'center',title: '").append(column.getComment()).append("'");
- // 澶嶉�夋
- if (column.isCheckBox()){
- sb.append(", templet:function(row){\n")
- .append(" var html = \"<input value='")
- .append(column.getHumpName()).append("' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='\"+row.LAY_TABLE_INDEX+\"'\";\n")
- .append(" if(row.").append(column.getHumpName()).append(" === 'Y'){html += \" checked \";}\n")
- .append(" html += \">\";\n")
- .append(" return html;\n")
- .append(" }");
- }
- sb.append("}\n");
- }
- return sb.toString();
- }
-
- private String createJsFkContent(){
- StringBuilder sb = new StringBuilder();
- for (Column column : columns){
- // 濡傛灉鏈夊叧鑱斿鍋�
- if (!Cools.isEmpty(column.getForeignKeyMajor())){
- sb.append(" window.load").append(column.getForeignKey()).append("Sel = function () {").append("\n")
- .append(" return xmSelect.render({").append("\n")
- .append(" el: '#").append(GeneratorUtils.firstCharConvert(column.getForeignKey(), true)).append("XmlSel',").append("\n")
- .append(" autoRow: true,").append("\n")
- .append(" filterable: true,").append("\n")
- .append(" remoteSearch: true,").append("\n")
- .append(" radio: true,").append("\n")
- .append(" remoteMethod: function (val, cb, show) {").append("\n")
- .append(" \\$.ajax({").append("\n")
- .append(" url: baseUrl + \"/").append(GeneratorUtils.firstCharConvert(column.getForeignKey(), true)).append("/all/get/kv\",").append("\n")
- .append(" headers: {'token': localStorage.getItem('token')},").append("\n")
- .append(" data: {").append("\n")
- .append(" condition: val").append("\n")
- .append(" },").append("\n")
- .append(" method: 'POST',").append("\n")
- .append(" success: function (res) {").append("\n")
- .append(" if (res.code === 200) {").append("\n")
- .append(" cb(res.data)").append("\n")
- .append(" } else {").append("\n")
- .append(" cb([]);").append("\n")
- .append(" layer.msg(res.msg, {icon: 2});").append("\n")
- .append(" }").append("\n")
- .append(" }").append("\n")
- .append(" });").append("\n")
- .append(" }").append("\n")
- .append(" });").append("\n")
- .append(" }").append("\n")
- .append("\n");
- }
- }
- return sb.toString();
- }
-
- private String createJsDateContent(){
- StringBuilder sb = new StringBuilder();
- for (Column column : columns) {
- if (column.isPrimaryKey()) {
- continue;
- }
- if ("Date".equals(column.getType())){
- sb.append(" layDate.render({\n")
- .append(" elem: '#").append(column.getHumpName()).append("\\\\\\\\\\$',\n")
- .append(" type: 'datetime',\n")
- .append(" value: data!==undefined?data['").append(column.getHumpName()).append("\\$'").append("]:null\n")
- .append(" });\n");
- }
- }
- return sb.toString();
- }
-
- private String createJsPrimaryKeyMsg(){
- StringBuilder sb = new StringBuilder();
- for (Column column : columns) {
- if (column.isPrimaryKey()) {
- sb.append("#").append(column.getHumpName()).append(",");
- }
- }
- if (sb.length() > 1){
- if (sb.substring(sb.length() - 1).equals(",")) {
- sb.deleteCharAt(sb.length()-1);
- }
- }
- return sb.toString();
- }
-
-}
+package com.zy.asrs.framework.generators;
+
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.generators.constant.SqlOsType;
+import com.zy.asrs.framework.generators.domain.Column;
+import com.zy.asrs.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 CoolGenerator {
+
+ 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",
+ "Html",
+ "HtmlDetail",
+ "Js",
+ "Sql"};
+ private static final ArrayList<String> SYSTEM_MODEL = new ArrayList<String>(){{
+ add("User");
+ add("Host");
+ }};
+
+
+ public String url;
+ public String username;
+ public String password;
+ public String table;
+ 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 html = true;
+ public boolean js = true;
+ public boolean sql = true;
+ public SqlOsType sqlOsType;
+ public String backendPrefixPath;
+ public String frontendPrefixPath;
+
+ private List<Column> columns = new ArrayList<>();
+ private String fullEntityName;
+ private String simpleEntityName;
+ private String entityImport;
+ private String entityContent;
+ private String xmlContent;
+ private String htmlContent;
+ private String htmlDialogContent;
+ private String jsTableContent;
+ private String jsForeignKeyContent;
+ private String jsDateContent;
+ private String jsPrimaryKeyDoms;
+ private String primaryKeyColumn;
+ private String majorColumn;
+ private String systemPackagePath;
+ private String systemPackage;
+ private String itemName;
+
+ 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 "Html":
+ pass = html;
+ directory = frontendPrefixPath + HTML_DIR + "/views/" + simpleEntityName + "/";
+ fileName = simpleEntityName+".html";
+ break;
+ case "Js":
+ pass = js;
+ directory = frontendPrefixPath + HTML_DIR + "/static/js/" + simpleEntityName + "/";
+ fileName = simpleEntityName+".js";
+ break;
+ default:
+ break;
+ }
+ if (!pass){ continue; }
+ String content = readFile(template);
+ writeFile(content, directory, fileName, template);
+ }
+ }
+
+ private void init() throws Exception {
+ gainDbInfo();
+ fullEntityName = GeneratorUtils.getNameSpace(table);
+ simpleEntityName = fullEntityName.substring(0, 1).toLowerCase()+fullEntityName.substring(1);
+ entityContent = createEntityMsg();
+ htmlContent = createHtmlMsg();
+ htmlDialogContent = createHtmlDialogMsg();
+ jsTableContent = createJsTableMsg();
+ jsForeignKeyContent = createJsFkContent();
+ jsDateContent = createJsDateContent();
+ jsPrimaryKeyDoms = createJsPrimaryKeyMsg();
+ 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];
+ }
+
+ private String readFile(String template){
+ StringBuilder txtContentBuilder=new StringBuilder();
+ ClassPathResource classPath=new ClassPathResource("templates/"+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("@\\{ENTITYIMPORT}", entityImport)
+ .replaceAll("@\\{ENTITYCONTENT}", entityContent)
+ .replaceAll("@\\{ENTITYNAME}", fullEntityName)
+ .replaceAll("@\\{SIMPLEENTITYNAME}", simpleEntityName)
+ .replaceAll("@\\{UENTITYNAME}", simpleEntityName)
+ .replaceAll("@\\{COMPANYNAME}",packagePath)
+ .replaceAll("@\\{ITEMNAME}",itemName)
+// .replaceAll("@\\{XMLCONTENT}", xmlContent)
+ .replaceAll("@\\{HTMLCONTENT}", htmlContent)
+ .replaceAll("@\\{HTMLDIALOGCONTENT}", htmlDialogContent)
+ .replaceAll("@\\{JSTABLECONTENT}", jsTableContent)
+ .replaceAll("@\\{JSFOREIGNKEYCONTENT}", jsForeignKeyContent)
+ .replaceAll("@\\{JSDATECONTENT}", jsDateContent)
+ .replaceAll("@\\{JSPRIMARYKEYDOMS}", jsPrimaryKeyDoms)
+ .replaceAll("@\\{MAJORCOLUMN}", GeneratorUtils.humpToLine(majorColumn))
+ .replaceAll("@\\{MAJORCOLUMN0}", GeneratorUtils.firstCharConvert(majorColumn, false))
+ .replaceAll("@\\{MAJORCOLUMN_UP}", GeneratorUtils.firstCharConvert(majorColumn, false))
+ .replaceAll("@\\{PRIMARYKEYCOLUMN}", GeneratorUtils.firstCharConvert(primaryKeyColumn, false))
+ .replaceAll("@\\{PRIMARYKEYCOLUMN0}", GeneratorUtils.firstCharConvert(primaryKeyColumn, true))
+ .replaceAll("@\\{UPCASEMARJORCOLUMN}", GeneratorUtils.firstCharConvert(primaryKeyColumn, false))
+ .replaceAll("@\\{SYSTEMPACKAGE}",systemPackage)
+ ;
+ 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("璇锋寚瀹氭暟鎹簱绫诲瀷锛�");
+ }
+ switch (this.sqlOsType) {
+ case MYSQL:
+ Class.forName("com.mysql.cj.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())){
+ 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;
+ }
+
+ /**********************************************************************************************/
+ /************************************** Html鍔ㄦ�佸瓧娈� *******************************************/
+ /**********************************************************************************************/
+
+ private String createHtmlMsg(){
+ StringBuilder sb = new StringBuilder();
+ for (Column column : columns){
+ if (column.isPrimaryKey()){ continue;}
+ if (!Cools.isEmpty(column.getForeignKeyMajor())){
+ sb.append(" <div class=\"layui-inline\">\n")
+ .append(" <div class=\"layui-input-inline cool-auto-complete\">\n")
+ .append(" <input id=\"").append(column.getHumpName()).append("\"")
+ .append(" class=\"layui-input\" name=\"").append(column.getName()).append("\" type=\"text\" placeholder=\"璇疯緭鍏" autocomplete=\"off\" style=\"display: none\">\n")
+ .append(" <input id=\"").append(column.getHumpName()).append("\\$")
+ .append("\" class=\"layui-input cool-auto-complete-div\" onclick=\"autoShow(this.id)\" type=\"text\" placeholder=\"").append(GeneratorUtils.supportHtmlName(column.getComment())).append("\" onfocus=this.blur()>\n")
+ .append(" <div class=\"cool-auto-complete-window\">\n")
+ .append(" <input class=\"cool-auto-complete-window-input\" data-key=\"").append(GeneratorUtils.firstCharConvert(column.getForeignKey())).append("Query").append("By").append(column.getHumpName()).append("\" onkeyup=\"autoLoad(this.getAttribute('data-key'))\">\n")
+ .append(" <select class=\"cool-auto-complete-window-select\" data-key=\"").append(GeneratorUtils.firstCharConvert(column.getForeignKey())).append("Query").append("By").append(column.getHumpName()).append("Select\" onchange=\"confirmed(this.getAttribute('data-key'))\" multiple=\"multiple\">\n")
+ .append(" </select>\n")
+ .append(" </div>\n")
+ .append(" </div>\n")
+ .append(" </div>\n");
+ }
+ }
+ return sb.toString();
+ }
+
+ private String createHtmlDialogMsg() {
+ StringBuilder sb = new StringBuilder();
+ for (Column column : columns){
+ if (column.isPrimaryKey()) {
+ continue;
+ }
+ sb.append(" <div class=\"layui-form-item\">\n");
+ sb.append(" <label class=\"layui-form-label");
+ if (column.isNotNull()){
+ sb.append(" layui-form-required");
+ }
+ sb.append("\">").append(column.getComment()).append(": </label>\n");
+ sb.append(" <div class=\"layui-input-block");
+ // 鍏宠仈澶栭敭
+ if (!Cools.isEmpty(column.getForeignKeyMajor())){
+ sb.append(" cool-auto-complete");
+ }
+ sb.append("\">\n");
+ // 杈撳叆妗嗙被鍨�
+ if (Cools.isEmpty(column.getEnums())){
+ sb.append(" <input class=\"layui-input\" name=\"").append(column.getHumpName());
+ if ("Date".equals(column.getType())){
+ sb.append("\" id=\"").append(column.getHumpName()).append("\\$");
+ }
+ sb.append("\" placeholder=\"璇疯緭鍏�").append(column.getComment()).append("\"");
+ if (column.isNotNull()){
+ sb.append(" lay-vertype=\"tips\" lay-verify=\"required\"");
+ }
+ // 鍏宠仈澶栭敭
+ if (!Cools.isEmpty(column.getForeignKeyMajor())){
+ sb.append(" style=\"display: none\"");
+ }
+ sb.append(">\n");
+
+ // 鍏宠仈澶栭敭
+ if (!Cools.isEmpty(column.getForeignKeyMajor())){
+ sb.append(" <input id=\"").append(column.getHumpName()).append("\\$").append("\" name=\"").append(column.getHumpName()).append("\\$")
+ .append("\" class=\"layui-input cool-auto-complete-div\" onclick=\"autoShow(this.id)\" type=\"text\" placeholder=\"璇疯緭鍏�").append(column.getComment()).append("\" onfocus=this.blur()>\n");
+ sb.append(" <div class=\"cool-auto-complete-window\">\n")
+ .append(" <input class=\"cool-auto-complete-window-input\" data-key=\"")
+ .append(GeneratorUtils.firstCharConvert(column.getForeignKey())).append("Query").append("By").append(column.getHumpName()).append("\" onkeyup=\"autoLoad(this.getAttribute('data-key'))\">\n")
+ .append(" <select class=\"cool-auto-complete-window-select\" data-key=\"").append(GeneratorUtils.firstCharConvert(column.getForeignKey())).append("Query").append("By").append(column.getHumpName()).append("Select\" onchange=\"confirmed(this.getAttribute('data-key'))\" multiple=\"multiple\">\n")
+ .append(" </select>\n")
+ .append(" </div>\n");
+ }
+ // 鏋氫妇绫诲瀷
+ } else {
+ sb.append(" <select name=\"").append(column.getHumpName()).append("\"");
+ if (column.isNotNull()){
+ sb.append(" lay-vertype=\"tips\" lay-verify=\"required\"");
+ }
+ sb.append(">\n");
+ sb.append(" <option value=\"\">").append("璇烽�夋嫨").append(column.getComment()).append("</option>\n");
+ for (Map<String, Object> map : column.getEnums()){
+ for (Map.Entry<String, Object> entry : map.entrySet()){
+ sb.append(" <option value=\"")
+ .append(entry.getKey())
+ .append("\">")
+ .append(entry.getValue())
+ .append("</option>\n");
+ }
+ }
+ sb.append(" </select>\n");
+ }
+
+ sb.append(" </div>\n");
+ sb.append(" </div>\n");
+ }
+ return sb.toString();
+ }
+
+ private String createJsTableMsg(){
+ StringBuilder sb = new StringBuilder();
+ for (Column column : columns){
+// if (column.isPrimaryKey()){ continue;}
+ sb.append(" ,{field: '");
+ if ("Date".equals(column.getType()) || !Cools.isEmpty(column.getEnums())){
+ // 鏃堕棿銆佹灇涓� 鏍煎紡鍖�
+ sb.append(column.getHumpName()).append("\\$");
+ } else {
+ // 涓婚敭淇グ
+ if (!Cools.isEmpty(column.getForeignKeyMajor())){
+ sb.append(column.getHumpName()).append("\\$");
+ } else {
+ sb.append(column.getHumpName());
+ }
+ }
+ sb.append("', align: 'center',title: '").append(column.getComment()).append("'");
+ // 澶嶉�夋
+ if (column.isCheckBox()){
+ sb.append(", templet:function(row){\n")
+ .append(" var html = \"<input value='")
+ .append(column.getHumpName()).append("' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='\"+row.LAY_TABLE_INDEX+\"'\";\n")
+ .append(" if(row.").append(column.getHumpName()).append(" === 'Y'){html += \" checked \";}\n")
+ .append(" html += \">\";\n")
+ .append(" return html;\n")
+ .append(" }");
+ }
+ sb.append("}\n");
+ }
+ return sb.toString();
+ }
+
+ private String createJsFkContent(){
+ StringBuilder sb = new StringBuilder();
+ for (Column column : columns){
+ // 濡傛灉鏈夊叧鑱斿鍋�
+ if (!Cools.isEmpty(column.getForeignKeyMajor())){
+ sb.append(" window.load").append(column.getForeignKey()).append("Sel = function () {").append("\n")
+ .append(" return xmSelect.render({").append("\n")
+ .append(" el: '#").append(GeneratorUtils.firstCharConvert(column.getForeignKey(), true)).append("XmlSel',").append("\n")
+ .append(" autoRow: true,").append("\n")
+ .append(" filterable: true,").append("\n")
+ .append(" remoteSearch: true,").append("\n")
+ .append(" radio: true,").append("\n")
+ .append(" remoteMethod: function (val, cb, show) {").append("\n")
+ .append(" \\$.ajax({").append("\n")
+ .append(" url: baseUrl + \"/").append(GeneratorUtils.firstCharConvert(column.getForeignKey(), true)).append("/all/get/kv\",").append("\n")
+ .append(" headers: {'token': localStorage.getItem('token')},").append("\n")
+ .append(" data: {").append("\n")
+ .append(" condition: val").append("\n")
+ .append(" },").append("\n")
+ .append(" method: 'POST',").append("\n")
+ .append(" success: function (res) {").append("\n")
+ .append(" if (res.code === 200) {").append("\n")
+ .append(" cb(res.data)").append("\n")
+ .append(" } else {").append("\n")
+ .append(" cb([]);").append("\n")
+ .append(" layer.msg(res.msg, {icon: 2});").append("\n")
+ .append(" }").append("\n")
+ .append(" }").append("\n")
+ .append(" });").append("\n")
+ .append(" }").append("\n")
+ .append(" });").append("\n")
+ .append(" }").append("\n")
+ .append("\n");
+ }
+ }
+ return sb.toString();
+ }
+
+ private String createJsDateContent(){
+ StringBuilder sb = new StringBuilder();
+ for (Column column : columns) {
+ if (column.isPrimaryKey()) {
+ continue;
+ }
+ if ("Date".equals(column.getType())){
+ sb.append(" layDate.render({\n")
+ .append(" elem: '#").append(column.getHumpName()).append("\\\\\\\\\\$',\n")
+ .append(" type: 'datetime',\n")
+ .append(" value: data!==undefined?data['").append(column.getHumpName()).append("\\$'").append("]:null\n")
+ .append(" });\n");
+ }
+ }
+ return sb.toString();
+ }
+
+ private String createJsPrimaryKeyMsg(){
+ StringBuilder sb = new StringBuilder();
+ for (Column column : columns) {
+ if (column.isPrimaryKey()) {
+ sb.append("#").append(column.getHumpName()).append(",");
+ }
+ }
+ if (sb.length() > 1){
+ if (sb.substring(sb.length() - 1).equals(",")) {
+ sb.deleteCharAt(sb.length()-1);
+ }
+ }
+ return sb.toString();
+ }
+
+}
--
Gitblit v1.9.1