From d6a0e5667b4dde018b8244808fcc33f68f5b07ad Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期二, 02 七月 2024 09:54:25 +0800
Subject: [PATCH] #

---
 zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/BetterGenerator.java |  207 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 203 insertions(+), 4 deletions(-)

diff --git a/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/BetterGenerator.java b/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/BetterGenerator.java
index 82d466f..5895730 100644
--- a/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/BetterGenerator.java
+++ b/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/BetterGenerator.java
@@ -41,6 +41,7 @@
     public String username;
     public String password;
     public String table;
+    public String tableName;
     public String packagePath;
     public boolean controller = true;
     public boolean service = true;
@@ -70,6 +71,8 @@
     private String systemPackagePath;
     private String systemPackage;
     private String itemName;
+    private String tableColumns;
+    private String formEditColumns;
 
     public void build() throws Exception {
         init();
@@ -117,12 +120,12 @@
                     break;
                 case "Index":
                     pass = react;
-                    directory = frontendPrefixPath + "/src/pages/" + itemName + "/";
+                    directory = frontendPrefixPath + "/src/pages/" + itemName + "/"  + simpleEntityName + "/";
                     fileName = "index.jsx";
                     break;
                 case "Edit":
                     pass = react;
-                    directory = frontendPrefixPath + "/src/pages/" + itemName + "/components/";
+                    directory = frontendPrefixPath + "/src/pages/" + itemName + "/" +  simpleEntityName + "/components/";
                     fileName = "edit.jsx";
                     break;
                 default:
@@ -161,6 +164,8 @@
             }
         }
         itemName = packagePathSplit[packagePathSplit.length - 1];
+        tableColumns = createTableColumns();
+        formEditColumns = createFormEditColumns();
     }
 
     private String readFile(String template){
@@ -188,6 +193,7 @@
         if(!writerFile.exists()){
             content=content.
                     replaceAll("@\\{TABLENAME}", table)
+                    .replaceAll("@\\{TABLEDESC}", tableName)
                     .replaceAll("@\\{ENTITYIMPORT}", entityImport)
                     .replaceAll("@\\{ENTITYCONTENT}", entityContent)
                     .replaceAll("@\\{ENTITYNAME}", fullEntityName)
@@ -209,6 +215,8 @@
                     .replaceAll("@\\{PRIMARYKEYCOLUMN0}", GeneratorUtils.firstCharConvert(primaryKeyColumn, true))
                     .replaceAll("@\\{UPCASEMARJORCOLUMN}", GeneratorUtils.firstCharConvert(primaryKeyColumn, false))
                     .replaceAll("@\\{SYSTEMPACKAGE}",systemPackage)
+                    .replaceAll("@\\{TABLECOLUMNS}", tableColumns)
+                    .replaceAll("@\\{FORMEDITCOLUMNS}", formEditColumns)
             ;
             writerFile.createNewFile();
             BufferedWriter writer=new BufferedWriter(new FileWriter(writerFile));
@@ -224,7 +232,13 @@
     private void gainDbInfo() throws Exception {
         Connection conn;
         if (null == this.sqlOsType) {
-            throw new RuntimeException("璇锋寚瀹氭暟鎹簱绫诲瀷锛�");
+            throw new RuntimeException("璇烽�夋嫨sqlOsType锛�");
+        }
+        if (null == this.table) {
+            throw new RuntimeException("璇疯緭鍏able锛�");
+        }
+        if (null == this.tableName) {
+            throw new RuntimeException("璇疯緭鍏ableName锛�");
         }
         switch (this.sqlOsType) {
             case MYSQL:
@@ -753,17 +767,202 @@
     /************************************** Index鍔ㄦ�佸瓧娈� *******************************************/
     /**********************************************************************************************/
 
+    private String createTableColumns() {
+        StringBuilder sb = new StringBuilder();
+        for (Column column : columns) {
+            if (column.isPrimaryKey()
+                    || column.getHumpName().equals("deleted")
+                    || column.getHumpName().equals("hostId")
+            ) {
+                continue;
+            }
+            sb.append("        {\n")
+                    .append("            title: '").append(column.getComment()).append("',\n")
+                    .append("            dataIndex: '");
+            if ("Date".equals(column.getType()) || !Cools.isEmpty(column.getEnums()) || !Cools.isEmpty(column.getForeignKeyMajor())){
+                // 鏃堕棿銆佹灇涓�  鏍煎紡鍖�  涓婚敭淇グ
+                sb.append(column.getHumpName()).append("\\$");
+            } else {
+                sb.append(column.getHumpName());
+            }
+            sb.append("',\n")
+                    .append("            valueType: 'text',\n")
+                    .append("            hidden: false,\n")
+                    .append("            width: 140,\n");
+            if (column.isMajor()) {
+                sb.append("            copyable: true,\n");
+            }
+            sb.append("            filterDropdown: (props) => <").append(getAntProFilterType(column)).append("\n")
+                    .append("                name='").append(column.getHumpName()).append("'\n");
 
+            if (!Cools.isEmpty(column.getForeignKey())) {
+                sb.append("                major='").append(GeneratorUtils.firstCharConvert(column.getForeignKey())).append("'\n");
+            }
 
+            sb.append("                {...props}\n")
+                    .append("                actionRef={actionRef}\n")
+                    .append("                setSearchParam={setSearchParam}\n");
+            if (!Cools.isEmpty(column.getEnums())) {
+                sb.append("                data={[\n");
+                for (Map<String, Object> map : column.getEnums()) {
+                    for (Map.Entry<String, Object> entry : map.entrySet()){
+                        sb.append("                    { label: '").append(entry.getValue()).append("', value: ").append(entry.getKey()).append(" },\n");
+                    }
+                }
+                sb.append("                ]}\n");
+            }
+            sb.append("            />,\n")
+                    .append("        },\n");
+        }
+        return sb.toString();
+    }
 
-
+    private String getAntProFilterType(Column column){
+        String filter = "TextFilter";
+        switch (column.getType()) {
+            case "Boolean":
+                filter = "TextFilter";
+                break;
+            case "Short":
+                filter = "TextFilter";
+                break;
+            case "Integer":
+                filter = "TextFilter";
+                break;
+            case "Long":
+                filter = "TextFilter";
+                break;
+            case "Double":
+                filter = "TextFilter";
+                break;
+            case "String":
+                filter = "TextFilter";
+                break;
+            case "Date":
+                filter = "DatetimeRangeFilter";
+                break;
+            default:
+                break;
+        }
+        if (!Cools.isEmpty(column.getEnums())) {
+            filter = "SelectFilter";
+        }
+        if (!Cools.isEmpty(column.getForeignKey())) {
+            filter = "LinkFilter";
+        }
+        return filter;
+    }
 
     /**********************************************************************************************/
     /************************************** Edit鍔ㄦ�佸瓧娈� ********************************************/
     /**********************************************************************************************/
 
+    private String createFormEditColumns() {
+        StringBuilder sb = new StringBuilder();
+        int times = 0;
+        boolean has = false;boolean init = false;
+        for (Column column : columns) {
+            if (column.isPrimaryKey()
+                    || column.getHumpName().equals("deleted")
+                    || column.getHumpName().equals("hostId")
+            ) {
+                continue;
+            }
+            if (times%2 == 0) {
+                sb.append("                    <ProForm.Group>\n");
+                has = true;init=true;
+            }
 
+            String itemType = "ProFormText";
+            String precision = "";
+            switch (column.getType()) {
+                case "Boolean":
+                    itemType = "ProFormText";
+                    break;
+                case "Short":
+                    itemType = "ProFormDigit";
+                    precision = "0";
+                    break;
+                case "Integer":
+                    itemType = "ProFormDigit";
+                    precision = "0";
+                    break;
+                case "Long":
+                    itemType = "ProFormDigit";
+                    precision = "0";
+                    break;
+                case "Double":
+                    itemType = "ProFormDigit";
+                    precision = "2";
+                    break;
+                case "String":
+                    itemType = "ProFormText";
+                    break;
+                case "Date":
+                    itemType = "ProFormDateTimePicker";
+                    break;
+                default:
+                    break;
+            }
+            if (!Cools.isEmpty(column.getEnums())) {
+                itemType = "ProFormSelect";
+            }
+            if (!Cools.isEmpty(column.getForeignKey())) {
+                itemType = "ProFormSelect";
+            }
 
+            sb.append("                        <").append(itemType).append("\n")
+                    .append("                            name=\"").append(column.getHumpName()).append("\"\n")
+                    .append("                            label=\"").append(column.getComment()).append("\"\n")
+                    .append("                            colProps={{ md: 12, xl: 12 }}\n");
+            // 鏁板瓧灏忔暟鐐�
+            if (!Cools.isEmpty(precision) && Cools.isEmpty(column.getEnums())) {
+                sb.append("                            fieldProps={{ precision: ").append(precision).append(" }}\n");
+            }
 
+            // 闈炵┖
+            if (column.isNotNull()) {
+                sb.append("                            rules={[{ required: true }]}\n");
+            }
+
+            // 鏋氫妇
+            if (!Cools.isEmpty(column.getEnums())) {
+                sb.append("                            options={[\n");
+                for (Map<String, Object> map : column.getEnums()) {
+                    for (Map.Entry<String, Object> entry : map.entrySet()){
+                        sb.append("                                { label: '").append(entry.getValue()).append("', value: ").append(entry.getKey()).append(" },\n");
+                    }
+                }
+                sb.append("                            ]}\n");
+            }
+
+            // 鏃堕棿
+            if ("Date".equals(column.getType())) {
+                sb.append("                            transform={(value) => moment(value).toISOString()}\n");
+            }
+
+            // 鍏宠仈琛�
+            if (!Cools.isEmpty(column.getForeignKey())) {
+                sb.append("                            showSearch\n")
+                        .append("                            debounceTime={300}\n")
+                        .append("                            request={async ({ keyWords }) => {\n")
+                        .append("                                const resp = await Http.doPostForm('api/").append(GeneratorUtils.firstCharConvert(column.getForeignKey())).append("/query', { condition: keyWords });\n")
+                        .append("                                return resp.data;\n")
+                        .append("                            }}\n");
+            }
+
+            sb.append("                        />\n");
+
+            if (times%2 != 0) {
+                sb.append("                    </ProForm.Group>\n");
+                has = false;
+            }
+            times++;
+        }
+        if (init && has) {
+            sb.append("                    </ProForm.Group>\n");
+        }
+        return sb.toString();
+    }
 
 }

--
Gitblit v1.9.1