| | |
| | | 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: '"); |
| | | if ("Date".equals(column.getType()) || !Cools.isEmpty(column.getEnums()) || !Cools.isEmpty(column.getForeignKeyMajor())){ |
| | | // 时间、枚举 格式化 主键修饰 |
| | |
| | | sb.append(column.getHumpName()); |
| | | } |
| | | 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"); |
| | | // 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 (!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().toLowerCase()).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(); |
| | | } |
| | | |