From c85899ba9bfc78fa0b8d21b96a18ba4550f13760 Mon Sep 17 00:00:00 2001 From: wanggeng <450292408@qq.com> Date: Mon, 1 Nov 2021 15:15:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A8=A1=E6=9D=BF=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../code/factory/enums/FormFieldTypeEnum.java | 2 + .../factory/ChoiceBoxTableCellFactory.java | 5 +- .../code/factory/service/GenerateService.java | 36 +++++++++-- .../wgink/code/factory/utils/WStringUtil.java | 64 +++++++++++++++++-- .../normal/controller/api-controller.ftl | 2 +- .../normal/controller/app-controller.ftl | 4 +- .../normal/controller/resource-controller.ftl | 2 +- .../normal/controller/route-controller.ftl | 8 +-- .../template/normal/mapper/mysql-mapper.ftl | 2 +- .../resources/template/normal/page/list.ftl | 21 +++--- .../resources/template/normal/page/save.ftl | 32 +++++++++- .../resources/template/normal/page/update.ftl | 34 +++++++++- 12 files changed, 178 insertions(+), 34 deletions(-) diff --git a/src/main/java/ink/wgink/code/factory/enums/FormFieldTypeEnum.java b/src/main/java/ink/wgink/code/factory/enums/FormFieldTypeEnum.java index 2705ce9..e0b6603 100644 --- a/src/main/java/ink/wgink/code/factory/enums/FormFieldTypeEnum.java +++ b/src/main/java/ink/wgink/code/factory/enums/FormFieldTypeEnum.java @@ -22,7 +22,9 @@ public enum FormFieldTypeEnum { ID_SELECT("idSelect", "ID 选择"), SELECT("select", "下拉选择"), CHECKBOX("checkbox", "复选"), + STATIC_CHECKBOX("staticCheckbox", "静态复选"), RADIO("radio", "单选"), + STATIC_RADIO("staticRadio", "静态单选"), SELECT_USER("selectUser", "选择人员"), SELECT_DEPARTMENT("selectDepartment", "选择部门"), FILE("file", "文件"), diff --git a/src/main/java/ink/wgink/code/factory/factory/ChoiceBoxTableCellFactory.java b/src/main/java/ink/wgink/code/factory/factory/ChoiceBoxTableCellFactory.java index 36bbe2d..107523b 100644 --- a/src/main/java/ink/wgink/code/factory/factory/ChoiceBoxTableCellFactory.java +++ b/src/main/java/ink/wgink/code/factory/factory/ChoiceBoxTableCellFactory.java @@ -27,11 +27,12 @@ public class ChoiceBoxTableCellFactory implements Callback normalSelect = FXCollections.observableArrayList( "", FormFieldTypeEnum.TEXT.getValue(), FormFieldTypeEnum.NUMBER.getValue(), FormFieldTypeEnum.DOUBLE.getValue(), FormFieldTypeEnum.TEXTAREA.getValue(), FormFieldTypeEnum.RICH_TEXT.getValue(), + FormFieldTypeEnum.STATIC_RADIO.getValue(), + FormFieldTypeEnum.CHECKBOX.getValue(), FormFieldTypeEnum.STATIC_CHECKBOX.getValue(), FormFieldTypeEnum.SELECT_USER.getValue(), FormFieldTypeEnum.SELECT_DEPARTMENT.getValue(), FormFieldTypeEnum.FILE.getValue(), FormFieldTypeEnum.IMAGE.getValue(), FormFieldTypeEnum.AUDIO.getValue(), FormFieldTypeEnum.VIDEO.getValue(), - FormFieldTypeEnum.DATETIME.getValue(), FormFieldTypeEnum.DATE.getValue(), - FormFieldTypeEnum.CHECKBOX.getValue() + FormFieldTypeEnum.DATETIME.getValue(), FormFieldTypeEnum.DATE.getValue() ); private ObservableList singleSelect = FXCollections.observableArrayList( "", diff --git a/src/main/java/ink/wgink/code/factory/service/GenerateService.java b/src/main/java/ink/wgink/code/factory/service/GenerateService.java index 07a9cc5..cde7fe2 100644 --- a/src/main/java/ink/wgink/code/factory/service/GenerateService.java +++ b/src/main/java/ink/wgink/code/factory/service/GenerateService.java @@ -3,6 +3,7 @@ package ink.wgink.code.factory.service; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; +import ink.wgink.code.factory.enums.FormFieldTypeEnum; import ink.wgink.code.factory.utils.DateUtil; import ink.wgink.code.factory.utils.MsgUtil; import ink.wgink.code.factory.utils.WStringUtil; @@ -71,11 +72,13 @@ public class GenerateService { // 首字母小写驼峰表明 String firstLowerTableName = WStringUtil.firstToLower(tableName); String lowerTableName = tableNameWithoutPrefix.replaceAll("\\_", "").toLowerCase(); + String requestMappingName = tableNameWithoutPrefix.replaceAll("\\_", "-").toLowerCase(); Map dataModel = new HashMap<>(16); dataModel.put("context", generateVO.getContext()); dataModel.put("codePackage", generateVO.getCodePackage()); dataModel.put("tableNameWithoutPrefix", tableNameWithoutPrefix); dataModel.put("lowerTableName", lowerTableName); + dataModel.put("requestMappingName", requestMappingName); dataModel.put("tableName", tableName); dataModel.put("tableFullName", tableFullName); dataModel.put("firstUpperTableName", firstUpperTableName); @@ -106,13 +109,13 @@ public class GenerateService { iDaoCode("/normal/dao/i-dao.ftl", String.format("%s/dao/%s", outFolder, lowerTableName), firstUpperTableName, dataModel); } if (generateVO.getHasMySQL()) { - mySqlMapperCode("/normal/mapper/mysql-mapper.ftl", String.format("%s/mapper/%s", outFolder, lowerTableName), tableName, dataModel); + mySqlMapperCode("/normal/mapper/mysql-mapper.ftl", String.format("%s/mapper/%s", outFolder, requestMappingName), tableName, dataModel); } if (generateVO.getHasHtml()) { - htmlCode("/normal/page", String.format("%s/static/route/%s", outFolder, lowerTableName), tableName, dataModel); + htmlCode("/normal/page", String.format("%s/static/route/%s", outFolder, requestMappingName), tableName, dataModel); } if (generateVO.getHasThymeleaf()) { - thymeleafCode("/normal/page", String.format("%s/templates/%s", outFolder, lowerTableName), tableName, dataModel); + thymeleafCode("/normal/page", String.format("%s/templates/%s", outFolder, requestMappingName), tableName, dataModel); } if (generateVO.getHasRoute()) { routeCode("/normal/controller/route-controller.ftl", String.format("%s/controller/route/%s", outFolder, lowerTableName), firstUpperTableName, dataModel); @@ -141,6 +144,11 @@ public class GenerateService { boolean hasModifier = false; boolean modifierFormShow = false; boolean hasIsDelete = false; + boolean hasFile = false; + boolean hasImage = false; + boolean hasVideo = false; + boolean hasAudio = false; + boolean hasRichText = false; for (int i = 0; i < fields.size(); i++) { FieldVO field = fields.get(i); if (!hasId && StringUtils.equals(String.format("%s_id", tableNameWithoutPrefix), field.getColumnName())) { @@ -165,6 +173,21 @@ public class GenerateService { if (!hasIsDelete && StringUtils.equals(FieldService.DEFAULT_FIELD_IS_DELETE, field.getPropertyName())) { hasIsDelete = true; } + if (!hasFile && StringUtils.equals(FormFieldTypeEnum.FILE.getValue(), field.getPropertyName())) { + hasFile = true; + } + if (!hasImage && StringUtils.equals(FormFieldTypeEnum.IMAGE.getValue(), field.getPropertyName())) { + hasImage = true; + } + if (!hasVideo && StringUtils.equals(FormFieldTypeEnum.VIDEO.getValue(), field.getPropertyName())) { + hasVideo = true; + } + if (!hasAudio && StringUtils.equals(FormFieldTypeEnum.AUDIO.getValue(), field.getPropertyName())) { + hasAudio = true; + } + if (!hasRichText && StringUtils.equals(FormFieldTypeEnum.RICH_TEXT.getValue(), field.getPropertyName())) { + hasRichText = true; + } Map fieldMap = new HashMap<>(16); fieldMap.put("columnName", field.getColumnName()); fieldMap.put("propertyName", field.getPropertyName()); @@ -194,6 +217,11 @@ public class GenerateService { dataModel.put("modifierFormShow", modifierFormShow); dataModel.put("hasIsDelete", hasIsDelete); dataModel.put("fieldList", fieldList); + dataModel.put("hasFile", hasFile); + dataModel.put("hasImage", hasImage); + dataModel.put("hasVideo", hasVideo); + dataModel.put("hasAudio", hasAudio); + dataModel.put("hasRichText", hasRichText); } /** @@ -319,7 +347,7 @@ public class GenerateService { if (!folder.exists()) { folder.mkdirs(); } - code(templateFtl, String.format("%s/%s-mapper.xml", outFolder, WStringUtil.lowerUpper2UnderLine(tableName).replaceAll("\\_", "-")), dataModel); + code(templateFtl, String.format("%s/%s-mapper.xml", outFolder, WStringUtil.lowerUpper2Separator(tableName, "-")), dataModel); } /** diff --git a/src/main/java/ink/wgink/code/factory/utils/WStringUtil.java b/src/main/java/ink/wgink/code/factory/utils/WStringUtil.java index e6c335f..52af299 100644 --- a/src/main/java/ink/wgink/code/factory/utils/WStringUtil.java +++ b/src/main/java/ink/wgink/code/factory/utils/WStringUtil.java @@ -138,15 +138,31 @@ public class WStringUtil { * @date 2018年2月28日 下午4:28:45 */ public static String lowerUpper2UnderLine(String str) { + return lowerUpper2Separator(str, "-"); + } + + /** + *

+ * title 驼峰名称转分隔符名称 + *

+ *

+ * description 驼峰名称转小写名称用分隔符名称 + *

+ * + * @param str + * @param separator + * @return + */ + public static String lowerUpper2Separator(String str, String separator) { Matcher matcher = LOWER_UPPER_PATTERN.matcher(str); while (matcher.find()) { String group = matcher.group(); - String lower = "_" + group.toLowerCase(); + String lower = separator + group.toLowerCase(); str = str.replaceFirst(group, lower); matcher = LOWER_UPPER_PATTERN.matcher(str); } - if (str.startsWith("_")) { - str = str.substring(1, str.length()); + if (str.startsWith(separator)) { + str = str.substring(1); } return str; } @@ -167,7 +183,23 @@ public class WStringUtil { * @date 2018年2月28日 下午4:49:13 */ public static String underLine2LowerUpper(String str) { - String[] strs = str.split("_"); + return separator2LowerUpper(str, "_"); + } + + /** + *

+ * title 分割符转驼峰式 + *

+ *

+ * description 分割符转驼峰式 + *

+ * + * @param str 字符串 + * @param separator 分隔符 + * @return + */ + public static String separator2LowerUpper(String str, String separator) { + String[] strs = str.split(separator); StringBuilder sb = new StringBuilder(); for (int i = 0; i < strs.length; i++) { String letter = strs[i].toLowerCase(); @@ -208,7 +240,29 @@ public class WStringUtil { String result = underLine2LowerUpper(str); if (firstLower) { int first = result.charAt(0) + 32; - result = ((char) first) + result.substring(1, result.length()); + result = ((char) first) + result.substring(1); + } + return result; + } + + /** + *

+ * title 分隔符转驼峰式 + *

+ *

+ * description 分隔符转驼峰式 + *

+ * + * @param str 字符串 + * @param separator 分隔符 + * @param firstLower 首字母小写 + * @return + */ + public static String separator2LowerUpper(String str, String separator, boolean firstLower) { + String result = separator2LowerUpper(str, separator); + if (firstLower) { + int first = result.charAt(0) + 32; + result = ((char) first) + result.substring(1); } return result; } diff --git a/src/main/resources/template/normal/controller/api-controller.ftl b/src/main/resources/template/normal/controller/api-controller.ftl index 238847d..2630f15 100644 --- a/src/main/resources/template/normal/controller/api-controller.ftl +++ b/src/main/resources/template/normal/controller/api-controller.ftl @@ -28,7 +28,7 @@ import java.util.Map; **/ @Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "${tableExplain}接口") @RestController -@RequestMapping(ISystemConstant.API_PREFIX + "/${lowerTableName}") +@RequestMapping(ISystemConstant.API_PREFIX + "/${requestMappingName}") public class ${firstUpperTableName}Controller extends DefaultBaseController { @Autowired diff --git a/src/main/resources/template/normal/controller/app-controller.ftl b/src/main/resources/template/normal/controller/app-controller.ftl index 108ef2a..b31b190 100644 --- a/src/main/resources/template/normal/controller/app-controller.ftl +++ b/src/main/resources/template/normal/controller/app-controller.ftl @@ -28,7 +28,7 @@ import java.util.Map; **/ @Api(tags = ISystemConstant.API_TAGS_APP_PREFIX + "${tableExplain}接口") @RestController -@RequestMapping(ISystemConstant.APP_PREFIX + "/${lowerTableName}") +@RequestMapping(ISystemConstant.APP_PREFIX + "/${requestMappingName}") public class ${firstUpperTableName}AppController extends DefaultBaseController { @Autowired @@ -103,7 +103,7 @@ public class ${firstUpperTableName}AppController extends DefaultBaseController { @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "String") }) @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) - @GetMapping("listpage${lowerTableName}") + @GetMapping("listpage") public SuccessResultList> listPage(@RequestHeader("token") String token, ListPage page) { Map params = requestParams(); page.setParams(params); diff --git a/src/main/resources/template/normal/controller/resource-controller.ftl b/src/main/resources/template/normal/controller/resource-controller.ftl index 8dba9ae..ab068cf 100644 --- a/src/main/resources/template/normal/controller/resource-controller.ftl +++ b/src/main/resources/template/normal/controller/resource-controller.ftl @@ -28,7 +28,7 @@ import java.util.Map; **/ @Api(tags = ISystemConstant.API_TAGS_RESOURCE_PREFIX + "${tableExplain}接口") @RestController -@RequestMapping(ISystemConstant.RESOURCE_PREFIX + "/${lowerTableName}") +@RequestMapping(ISystemConstant.RESOURCE_PREFIX + "/${requestMappingName}") public class ${firstUpperTableName}ResourceController extends DefaultBaseController { @Autowired diff --git a/src/main/resources/template/normal/controller/route-controller.ftl b/src/main/resources/template/normal/controller/route-controller.ftl index b0d5905..5d2e814 100644 --- a/src/main/resources/template/normal/controller/route-controller.ftl +++ b/src/main/resources/template/normal/controller/route-controller.ftl @@ -21,22 +21,22 @@ import java.util.Map; **/ @Api(tags = ISystemConstant.ROUTE_TAGS_PREFIX + "${tableExplain}路由") @RestController -@RequestMapping(ISystemConstant.ROUTE_PREFIX + "/${lowerTableName}") +@RequestMapping(ISystemConstant.ROUTE_PREFIX + "/${requestMappingName}") public class ${firstUpperTableName}RouteController extends DefaultBaseController { @GetMapping("save") public ModelAndView save() { - return new ModelAndView("${lowerTableName}/save"); + return new ModelAndView("${requestMappingName}/save"); } @GetMapping("update") public ModelAndView update() { - return new ModelAndView("${lowerTableName}/update"); + return new ModelAndView("${requestMappingName}/update"); } @GetMapping("list") public ModelAndView list() { - return new ModelAndView("${lowerTableName}/list"); + return new ModelAndView("${requestMappingName}/list"); } } \ No newline at end of file diff --git a/src/main/resources/template/normal/mapper/mysql-mapper.ftl b/src/main/resources/template/normal/mapper/mysql-mapper.ftl index add81c9..2a560f9 100644 --- a/src/main/resources/template/normal/mapper/mysql-mapper.ftl +++ b/src/main/resources/template/normal/mapper/mysql-mapper.ftl @@ -50,7 +50,7 @@ is_delete = 1 WHERE <#if hasId> - ${underlineTableName}_id IN + ${idColumn} IN ${r"#{"}${firstLowerTableName}${r"Ids[${index}]}"} diff --git a/src/main/resources/template/normal/page/list.ftl b/src/main/resources/template/normal/page/list.ftl index 8836b4d..cd16a4b 100644 --- a/src/main/resources/template/normal/page/list.ftl +++ b/src/main/resources/template/normal/page/list.ftl @@ -28,13 +28,14 @@
- + +
+ 新增时间 +
+
- -
-
- +
+<#if hasRichText> + +<#if hasVideo> + +<#if hasImage> + + + <#elseif field.formFieldValue == "staticRadio"> +
+ +
+ +
<#elseif field.formFieldValue == "radio">
@@ -281,9 +297,15 @@
+<#if hasRichText> + +<#if hasVideo> + +<#if hasImage> +