From fde2221d08d31f94bcd67367f53f480f57f09fa5 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期四, 29 二月 2024 13:26:06 +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