优化代码生成器模块:1、代码生成器配置页支持刷新字典;2、修改 Mapper.xml 中字典的查询方式;3、其它细节优化

This commit is contained in:
zhoumingfa
2024-08-14 14:54:56 +08:00
parent ff03f07b3f
commit 66cd067fa1
14 changed files with 200 additions and 151 deletions

View File

@@ -13,16 +13,13 @@ import net.lab1024.sa.base.common.util.SmartStringUtil;
import net.lab1024.sa.base.module.support.codegenerator.domain.entity.CodeGeneratorConfigEntity;
import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm;
import net.lab1024.sa.base.module.support.codegenerator.domain.model.*;
import net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.ControllerVariableService;
import net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.DaoVariableService;
import net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.ManagerVariableService;
import net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.ServiceVariableService;
import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService;
import net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.*;
import net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.domain.*;
import net.lab1024.sa.base.module.support.codegenerator.service.variable.front.ApiVariableService;
import net.lab1024.sa.base.module.support.codegenerator.service.variable.front.ConstVariableService;
import net.lab1024.sa.base.module.support.codegenerator.service.variable.front.FormVariableService;
import net.lab1024.sa.base.module.support.codegenerator.service.variable.front.ListVariableService;
import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService;
import net.lab1024.sa.base.module.support.codegenerator.util.CodeGeneratorTool;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.velocity.Template;
@@ -36,7 +33,7 @@ import javax.annotation.PostConstruct;
import java.io.File;
import java.io.OutputStream;
import java.io.StringWriter;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.stream.Collectors;
@@ -47,7 +44,7 @@ import java.util.stream.Collectors;
* @Date 2022-06-30 22:15:38
* @Wechat zhuoda1024
* @Email lab1024@163.com
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
* @Copyright <a href="https://1024lab.net">1024创新实验室</a>
*/
@Service
@@ -94,7 +91,7 @@ public class CodeGeneratorTemplateService {
String fileName = templateFile.startsWith("java") ? upperCamel + templateSplit[templateSplit.length - 1] : lowerHyphen + "-" + templateSplit[templateSplit.length - 1];
String fullPathFileName = templateFile.replaceAll(templateSplit[templateSplit.length - 1], fileName);
fullPathFileName = fullPathFileName.replaceAll("java/", "java/" + basic.getModuleName().toLowerCase() + "/");
fullPathFileName = fullPathFileName.replaceAll("js/", "js/" + basic.getModuleName().toLowerCase() + "/");
fullPathFileName = fullPathFileName.replaceAll("js/", "js/" + lowerHyphen + "/");
String fileContent = generate(tableName, templateFile, codeGeneratorConfigEntity);
File file = new File(uuid + "/" + fullPathFileName);
@@ -130,7 +127,7 @@ public class CodeGeneratorTemplateService {
}
ZipUtil.zip(outputStream, Charset.forName("utf-8"), false, null, dir);
ZipUtil.zip(outputStream, StandardCharsets.UTF_8, false, null, dir);
FileUtil.del(dir);

View File

@@ -65,7 +65,15 @@ public class MapperVariableService extends CodeGenerateBaseVariableService {
stringBuilder.append("\n )");
}
fieldMap.put("likeStr", stringBuilder.toString());
} else {
} else if (CodeQueryFieldQueryTypeEnum.DICT.equalsValue(queryField.getQueryTypeEnum())) {
String stringBuilder = "AND INSTR(" +
form.getTableName() + "." + queryField.getColumnNameList().get(0) +
",#{queryForm." +
queryField.getFieldName() +
"})";
fieldMap.put("likeStr", stringBuilder);
}
else {
fieldMap.put("columnName", queryField.getColumnNameList().get(0));
}
}

View File

@@ -2,6 +2,7 @@ package net.lab1024.sa.base.module.support.codegenerator.service.variable.backen
import cn.hutool.core.bean.BeanUtil;
import net.lab1024.sa.base.common.util.SmartEnumUtil;
import net.lab1024.sa.base.common.util.SmartStringUtil;
import net.lab1024.sa.base.module.support.codegenerator.constant.CodeQueryFieldQueryTypeEnum;
import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm;
import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeField;
@@ -41,14 +42,11 @@ public class QueryFormVariableService extends CodeGenerateBaseVariableService {
public ImmutablePair<List<String>, List<Map<String, Object>>> getPackageListAndFields(CodeGeneratorConfigForm form) {
List<CodeQueryField> fields = form.getQueryFields();
if (CollectionUtils.isEmpty(fields)) {
return ImmutablePair.of(new ArrayList<>(), new ArrayList<>());
}
HashSet<String> packageList = new HashSet<>();
/**
* 1、LocalDate、LocalDateTime、BigDecimal 类型的包名
* 2、排序
@@ -106,6 +104,14 @@ public class QueryFormVariableService extends CodeGenerateBaseVariableService {
finalFieldMap.put("javaType", codeField.getJavaType());
break;
case DICT:
codeField = getCodeFieldByColumnName(field.getColumnNameList().get(0), form);
if (SmartStringUtil.isNotEmpty(codeField.getDict())) {
finalFieldMap.put("dict", "\n @JsonDeserialize(using = DictValueVoDeserializer.class)");
packageList.add("import com.fasterxml.jackson.databind.annotation.JsonDeserialize;");
packageList.add("import net.lab1024.sa.base.common.json.deserializer.DictValueVoDeserializer;");
}
finalFieldMap.put("javaType", "String");
default:
finalFieldMap.put("javaType", "String");
}
@@ -113,13 +119,11 @@ public class QueryFormVariableService extends CodeGenerateBaseVariableService {
finalFieldList.add(finalFieldMap);
}
// lombok
packageList.add("import lombok.Data;");
packageList.add("import lombok.EqualsAndHashCode;");
List<String> packageNameList = packageList.stream().filter(Objects::nonNull).collect(Collectors.toList());
Collections.sort(packageNameList);
List<String> packageNameList = packageList.stream().filter(Objects::nonNull).sorted().collect(Collectors.toList());
return ImmutablePair.of(packageNameList, finalFieldList);
}

View File

@@ -57,19 +57,20 @@ public class FormVariableService extends CodeGenerateBaseVariableService {
fieldsVariableList.add(objectMap);
if (CodeFrontComponentEnum.ENUM_SELECT.getValue().equals(field.getFrontComponent())) {
if (CodeFrontComponentEnum.ENUM_SELECT.equalsValue(field.getFrontComponent())) {
frontImportSet.add("import SmartEnumSelect from '/@/components/framework/smart-enum-select/index.vue';");
}
if (CodeFrontComponentEnum.BOOLEAN_SELECT.getValue().equals(field.getFrontComponent())) {
if (CodeFrontComponentEnum.BOOLEAN_SELECT.equalsValue(field.getFrontComponent())) {
frontImportSet.add("import BooleanSelect from '/@/components/framework/boolean-select/index.vue';");
}
if (CodeFrontComponentEnum.DICT_SELECT.getValue().equals(field.getFrontComponent())) {
if (CodeFrontComponentEnum.DICT_SELECT.equalsValue(field.getFrontComponent())) {
frontImportSet.add("import DictSelect from '/@/components/support/dict-select/index.vue';");
}
if (CodeFrontComponentEnum.FILE_UPLOAD.getValue().equals(field.getFrontComponent())) {
if (CodeFrontComponentEnum.FILE_UPLOAD.equalsValue(field.getFrontComponent())) {
frontImportSet.add("import { FILE_FOLDER_TYPE_ENUM } from '/@/constants/support/file-const';");
frontImportSet.add("import FileUpload from '/@/components/support/file-upload/index.vue';");
}
}

View File

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import com.google.common.base.CaseFormat;
import net.lab1024.sa.base.module.support.codegenerator.constant.CodeQueryFieldQueryTypeEnum;
import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm;
import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeField;
import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeQueryField;
import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService;
@@ -35,19 +36,23 @@ public class ListVariableService extends CodeGenerateBaseVariableService {
for (CodeQueryField queryField : queryFields) {
Map<String, Object> objectMap = BeanUtil.beanToMap(queryField);
variableList.add(objectMap);
if("Enum".equals(queryField.getQueryTypeEnum())){
CodeField codeField = getCodeFieldByColumnName(queryField.getColumnNameList().get(0), form);
objectMap.put("frontEnumName", codeField.getEnumName());
objectMap.put("dict", codeField.getDict());
if(CodeQueryFieldQueryTypeEnum.ENUM.equalsValue(queryField.getQueryTypeEnum())){
frontImportSet.add("import SmartEnumSelect from '/@/components/framework/smart-enum-select/index.vue';");
}
if("Dict".equals(queryField.getQueryTypeEnum())){
if(CodeQueryFieldQueryTypeEnum.DICT.equalsValue(queryField.getQueryTypeEnum())){
frontImportSet.add("import DictSelect from '/@/components/support/dict-select/index.vue';");
}
if(CodeQueryFieldQueryTypeEnum.DATE_RANGE.getValue().equals(queryField.getQueryTypeEnum())){
if(CodeQueryFieldQueryTypeEnum.DATE_RANGE.equalsValue(queryField.getQueryTypeEnum())){
frontImportSet.add("import { defaultTimeRanges } from '/@/lib/default-time-ranges';");
}
variableList.add(objectMap);
}
variablesMap.put("queryFields",variableList);