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