|  |  |  | 
|---|
|  |  |  | public String password; | 
|---|
|  |  |  | public String table; | 
|---|
|  |  |  | public String tableName; | 
|---|
|  |  |  | public String rootPackagePath; | 
|---|
|  |  |  | public String packagePath; | 
|---|
|  |  |  | public boolean controller = true; | 
|---|
|  |  |  | public boolean service = true; | 
|---|
|  |  |  | 
|---|
|  |  |  | private String itemName; | 
|---|
|  |  |  | private String tableColumns; | 
|---|
|  |  |  | private String formEditColumns; | 
|---|
|  |  |  | private String formEditForeignKeyColumns; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void build() throws Exception { | 
|---|
|  |  |  | init(); | 
|---|
|  |  |  | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case "Index": | 
|---|
|  |  |  | pass = vue; | 
|---|
|  |  |  | directory = frontendPrefixPath + "/src/views/" + simpleEntityName + "/"; | 
|---|
|  |  |  | directory = frontendPrefixPath + "/src/views/" + itemName + "/" + simpleEntityName + "/"; | 
|---|
|  |  |  | fileName = "index.vue"; | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case "Edit": | 
|---|
|  |  |  | pass = vue; | 
|---|
|  |  |  | directory = frontendPrefixPath + "/src/views/" +  simpleEntityName + "/"; | 
|---|
|  |  |  | directory = frontendPrefixPath + "/src/views/" + itemName + "/" + simpleEntityName + "/"; | 
|---|
|  |  |  | fileName = "edit.vue"; | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | default: | 
|---|
|  |  |  | 
|---|
|  |  |  | .replaceAll("@\\{SIMPLEENTITYNAME}", simpleEntityName) | 
|---|
|  |  |  | .replaceAll("@\\{UENTITYNAME}", simpleEntityName) | 
|---|
|  |  |  | .replaceAll("@\\{COMPANYNAME}",packagePath) | 
|---|
|  |  |  | .replaceAll("@\\{ROOTPACKAGEPATH}",rootPackagePath) | 
|---|
|  |  |  | .replaceAll("@\\{ITEMNAME}",itemName) | 
|---|
|  |  |  | //                    .replaceAll("@\\{XMLCONTENT}", xmlContent) | 
|---|
|  |  |  | .replaceAll("@\\{HTMLCONTENT}", htmlContent) | 
|---|
|  |  |  | 
|---|
|  |  |  | .replaceAll("@\\{SYSTEMPACKAGE}",systemPackage) | 
|---|
|  |  |  | .replaceAll("@\\{TABLECOLUMNS}", tableColumns) | 
|---|
|  |  |  | .replaceAll("@\\{FORMEDITCOLUMNS}", formEditColumns) | 
|---|
|  |  |  | .replaceAll("@\\{FORMEDITFOREIGNKEYCOLUMNS}", formEditForeignKeyColumns) | 
|---|
|  |  |  | ; | 
|---|
|  |  |  | writerFile.createNewFile(); | 
|---|
|  |  |  | BufferedWriter writer=new BufferedWriter(new FileWriter(writerFile)); | 
|---|
|  |  |  | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | sb.append("        {\n") | 
|---|
|  |  |  | .append("            title: '").append(column.getComment()).append("',\n") | 
|---|
|  |  |  | .append("            title: formatMessage('db.").append(table).append(".").append(column.getName()).append("', '").append(column.getComment()).append("'),").append("\n") | 
|---|
|  |  |  | .append("            dataIndex: '"); | 
|---|
|  |  |  | StringBuilder rowKey = new StringBuilder(); | 
|---|
|  |  |  | if ("Date".equals(column.getType()) || !Cools.isEmpty(column.getEnums()) || !Cools.isEmpty(column.getForeignKeyMajor())){ | 
|---|
|  |  |  | // 时间、枚举  格式化  主键修饰 | 
|---|
|  |  |  | sb.append(column.getHumpName()).append("\\$"); | 
|---|
|  |  |  | rowKey.append(column.getHumpName()).append("\\$"); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | sb.append(column.getHumpName()); | 
|---|
|  |  |  | rowKey.append(column.getHumpName()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | sb.append(rowKey); | 
|---|
|  |  |  | sb.append("',\n") | 
|---|
|  |  |  | .append("            width: 140,\n"); | 
|---|
|  |  |  | if (!Cools.isEmpty(column.getEnums())) { | 
|---|
|  |  |  | sb.append("                customRender: (column) => {\n"); | 
|---|
|  |  |  | sb.append("                  let typeMap = {"); | 
|---|
|  |  |  | for (Map<String, Object> map : column.getEnums()) { | 
|---|
|  |  |  | for (Map.Entry<String, Object> entry : map.entrySet()){ | 
|---|
|  |  |  | sb.append("                    ").append(entry.getKey()).append(": "); | 
|---|
|  |  |  | sb.append("                    { text: '").append(entry.getValue()).append("'").append(" },\n"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | sb.append("                }\n"); | 
|---|
|  |  |  | sb.append("                }\n"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .append("            width: 140,\n") | 
|---|
|  |  |  | .append("            ellipsis: true,\n") | 
|---|
|  |  |  | .append("            ...getColumnSearchProps('").append(rowKey).append("'),\n"); | 
|---|
|  |  |  | //            if (!Cools.isEmpty(column.getEnums())) { | 
|---|
|  |  |  | //                sb.append("                customRender: (column) => {\n"); | 
|---|
|  |  |  | //                sb.append("                  let typeMap = {"); | 
|---|
|  |  |  | //                for (Map<String, Object> map : column.getEnums()) { | 
|---|
|  |  |  | //                    for (Map.Entry<String, Object> entry : map.entrySet()){ | 
|---|
|  |  |  | //                        sb.append("                    ").append(entry.getKey()).append(": "); | 
|---|
|  |  |  | //                        sb.append("                    { text: '").append(entry.getValue()).append("'").append(" },\n"); | 
|---|
|  |  |  | //                    } | 
|---|
|  |  |  | //                } | 
|---|
|  |  |  | //                sb.append("                }\n"); | 
|---|
|  |  |  | //                sb.append("                return typeMap[column.value].text;"); | 
|---|
|  |  |  | //                sb.append("                }\n"); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | sb.append("        },\n"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return sb.toString(); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private String createFormEditColumns() { | 
|---|
|  |  |  | StringBuilder sb = new StringBuilder(); | 
|---|
|  |  |  | int times = 0; | 
|---|
|  |  |  | boolean has = false;boolean init = false; | 
|---|
|  |  |  | StringBuilder sb2 = new StringBuilder(); | 
|---|
|  |  |  | ArrayList<String> foreignKeyContains = new ArrayList<>(); | 
|---|
|  |  |  | for (Column column : columns) { | 
|---|
|  |  |  | boolean has = true; | 
|---|
|  |  |  | 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"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | sb.append("                    <a-form-item \n"); | 
|---|
|  |  |  | sb.append("                      :label=\"formatMessage('db.").append(table).append(".").append(column.getName()).append("', '").append(column.getComment()).append("') ").append("\" \n"); | 
|---|
|  |  |  | sb.append("                      name=\"").append(column.getHumpName()).append("\" \n"); | 
|---|
|  |  |  | sb.append("                      style=\"width: 250px;\" \n"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 非空 | 
|---|
|  |  |  | if (column.isNotNull()) { | 
|---|
|  |  |  | sb.append("                            rules={[{ required: true }]}\n"); | 
|---|
|  |  |  | sb.append("                            :rules=\"[{ required: true }]\"\n"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | sb.append("                            >\n"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 枚举 | 
|---|
|  |  |  | if (!Cools.isEmpty(column.getEnums())) { | 
|---|
|  |  |  | sb.append("                            options={[\n"); | 
|---|
|  |  |  | sb.append("                    <a-select \n"); | 
|---|
|  |  |  | sb.append("                        v-model:value=\"formData.").append(column.getHumpName()).append("\" \n"); | 
|---|
|  |  |  | 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"); | 
|---|
|  |  |  | sb.append("                            ]\"\n"); | 
|---|
|  |  |  | sb.append("                        >\n"); | 
|---|
|  |  |  | sb.append("                    </a-select>\n"); | 
|---|
|  |  |  | has = false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 时间 | 
|---|
|  |  |  | if ("Date".equals(column.getType())) { | 
|---|
|  |  |  | sb.append("                            transform={(value) => moment(value).toISOString()}\n"); | 
|---|
|  |  |  | sb.append("                    <a-date-picker \n"); | 
|---|
|  |  |  | sb.append("                        v-model:value=\"formData.").append(column.getHumpName()).append("\" \n"); | 
|---|
|  |  |  | sb.append("                        show-time \n"); | 
|---|
|  |  |  | sb.append("                        format=\"YYYY-MM-DD HH:mm:ss\" \n"); | 
|---|
|  |  |  | sb.append("                        value-format=\"YYYY-MM-DD HH:mm:ss\" \n"); | 
|---|
|  |  |  | sb.append("                     /> \n"); | 
|---|
|  |  |  | has = false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 关联表 | 
|---|
|  |  |  | 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"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (!Cools.isEmpty(column.getForeignKey$())) { | 
|---|
|  |  |  | if (!foreignKeyContains.contains(column.getForeignKey$())) { | 
|---|
|  |  |  | sb2.append("const ").append(column.getForeignKey$()).append("QueryList = ref(null); \n"); | 
|---|
|  |  |  | sb2.append(column.getForeignKey$()).append("Query();\n"); | 
|---|
|  |  |  | sb2.append("function ").append(column.getForeignKey$()).append("Query() { \n"); | 
|---|
|  |  |  | sb2.append("    postForm('/api/").append(column.getForeignKey$()).append("/query', {}).then(resp => { \n"); | 
|---|
|  |  |  | sb2.append("        let result = resp.data;\n"); | 
|---|
|  |  |  | sb2.append("        ").append(column.getForeignKey$()).append("QueryList.value = result.data;\n"); | 
|---|
|  |  |  | sb2.append("    })\n"); | 
|---|
|  |  |  | sb2.append("}\n"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | sb.append("                        />\n"); | 
|---|
|  |  |  | foreignKeyContains.add(column.getForeignKey$()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (times%2 != 0) { | 
|---|
|  |  |  | sb.append("                    </ProForm.Group>\n"); | 
|---|
|  |  |  | sb.append("                    <a-select \n"); | 
|---|
|  |  |  | sb.append("                        v-model:value=\"formData.").append(column.getHumpName()).append("\" \n"); | 
|---|
|  |  |  | sb.append("                        :placeholder=\"formatMessage('common.select', '请选择')\" \n"); | 
|---|
|  |  |  | sb.append("                        style=\"width: 100%\" \n"); | 
|---|
|  |  |  | sb.append("                        show-search \n"); | 
|---|
|  |  |  | sb.append("                        :options=\"").append(column.getForeignKey$()).append("QueryList\" \n"); | 
|---|
|  |  |  | sb.append("                        optionFilterProp=\"label\" \n"); | 
|---|
|  |  |  | sb.append("                        optionLabelProp=\"label\" \n"); | 
|---|
|  |  |  | sb.append("                     > \n"); | 
|---|
|  |  |  | sb.append("                    </a-select>\n"); | 
|---|
|  |  |  | has = false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | times++; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (has) { | 
|---|
|  |  |  | sb.append("                    <a-input \n"); | 
|---|
|  |  |  | sb.append("                        v-model:value=\"formData.").append(column.getHumpName()).append("\" \n"); | 
|---|
|  |  |  | sb.append("                     /> \n"); | 
|---|
|  |  |  | has = false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | sb.append("                        </a-form-item>\n"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (init && has) { | 
|---|
|  |  |  | sb.append("                    </ProForm.Group>\n"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | formEditForeignKeyColumns = sb2.toString(); | 
|---|
|  |  |  | return sb.toString(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|