|
|
@@ -29,7 +29,6 @@ import cn.tr.core.exception.TRExcCode;
|
|
|
import cn.tr.module.gen.core.util.CommonDownloadUtil;
|
|
|
import cn.tr.module.gen.core.util.CommonResponseUtil;
|
|
|
import cn.tr.module.gen.core.util.GenDbTypeUtil;
|
|
|
-import cn.tr.module.gen.modular.basic.entity.CommonPageRequest;
|
|
|
import cn.tr.module.gen.modular.basic.entity.GenBasic;
|
|
|
import cn.tr.module.gen.modular.basic.enums.CommonSortOrderEnum;
|
|
|
import cn.tr.module.gen.modular.basic.enums.GenEffectTypeEnum;
|
|
|
@@ -41,13 +40,13 @@ import cn.tr.module.gen.modular.basic.result.GenBasicTableColumnResult;
|
|
|
import cn.tr.module.gen.modular.basic.result.GenBasicTableResult;
|
|
|
import cn.tr.module.gen.modular.basic.service.GenBasicService;
|
|
|
import cn.tr.module.gen.modular.config.entity.GenConfig;
|
|
|
+import cn.tr.module.gen.modular.config.mapper.GenConfigMapper;
|
|
|
import cn.tr.module.gen.modular.config.param.GenConfigAddParam;
|
|
|
import cn.tr.module.gen.modular.config.service.GenConfigService;
|
|
|
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.mysql.cj.jdbc.ConnectionImpl;
|
|
|
import org.beetl.core.Configuration;
|
|
|
@@ -63,10 +62,10 @@ import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.File;
|
|
|
import java.io.IOException;
|
|
|
import java.sql.*;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
+import java.util.concurrent.atomic.AtomicReference;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 代码生成基础Service接口实现类
|
|
|
@@ -77,13 +76,13 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
@Service
|
|
|
public class GenBasicServiceImpl extends ServiceImpl<GenBasicMapper, GenBasic> implements GenBasicService {
|
|
|
|
|
|
-// private static final String DB_URL_KEY = "spring.datasource.dynamic.datasource.master.url";
|
|
|
+ // private static final String DB_URL_KEY = "spring.datasource.dynamic.datasource.master.url";
|
|
|
private static final String DB_URL_KEY = "spring.datasource.url";
|
|
|
|
|
|
-// private static final String DB_USERNAME_KEY = "spring.datasource.dynamic.datasource.master.username";
|
|
|
+ // private static final String DB_USERNAME_KEY = "spring.datasource.dynamic.datasource.master.username";
|
|
|
private static final String DB_USERNAME_KEY = "spring.datasource.username";
|
|
|
|
|
|
-// private static final String DB_PASSWORD_KEY = "spring.datasource.dynamic.datasource.master.password";
|
|
|
+ // private static final String DB_PASSWORD_KEY = "spring.datasource.dynamic.datasource.master.password";
|
|
|
private static final String DB_PASSWORD_KEY = "spring.datasource.password";
|
|
|
|
|
|
private static final String MODULE_KEY = "biz";
|
|
|
@@ -105,14 +104,12 @@ public class GenBasicServiceImpl extends ServiceImpl<GenBasicMapper, GenBasic> i
|
|
|
|
|
|
private static final List<JSONObject> GEN_BACKEND_FILE_LIST = CollectionUtil.newArrayList(
|
|
|
JSONUtil.createObj().set("name", "Controller.java.btl").set("path", "controller"),
|
|
|
- JSONUtil.createObj().set("name", "Entity.java.btl").set("path", "entity"),
|
|
|
- JSONUtil.createObj().set("name", "Enum.java.btl").set("path", "enums"),
|
|
|
+ JSONUtil.createObj().set("name", "PO.java.btl").set("path", "po"),
|
|
|
JSONUtil.createObj().set("name", "Mapper.java.btl").set("path", "mapper"),
|
|
|
+ JSONUtil.createObj().set("name", "Repository.java.btl").set("path", "repository"),
|
|
|
JSONUtil.createObj().set("name", "Mapper.xml.btl").set("path", "mapper" + File.separator + "mapping"),
|
|
|
- JSONUtil.createObj().set("name", "AddParam.java.btl").set("path", "param"),
|
|
|
- JSONUtil.createObj().set("name", "EditParam.java.btl").set("path", "param"),
|
|
|
- JSONUtil.createObj().set("name", "IdParam.java.btl").set("path", "param"),
|
|
|
- JSONUtil.createObj().set("name", "PageParam.java.btl").set("path", "param"),
|
|
|
+ JSONUtil.createObj().set("name", "DTO.java.btl").set("path", "dto"),
|
|
|
+ JSONUtil.createObj().set("name", "QueryDTO.java.btl").set("path", "dto"),
|
|
|
JSONUtil.createObj().set("name", "Service.java.btl").set("path", "service"),
|
|
|
JSONUtil.createObj().set("name", "ServiceImpl.java.btl").set("path", "service" + File.separator + "impl"));
|
|
|
|
|
|
@@ -135,6 +132,8 @@ public class GenBasicServiceImpl extends ServiceImpl<GenBasicMapper, GenBasic> i
|
|
|
@Resource
|
|
|
private GenConfigService genConfigService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private GenConfigMapper genConfigMapper;
|
|
|
@Override
|
|
|
public List<GenBasic> list(GenBasicPageParam genBasicPageParam) {
|
|
|
QueryWrapper<GenBasic> queryWrapper = new QueryWrapper<>();
|
|
|
@@ -154,56 +153,21 @@ public class GenBasicServiceImpl extends ServiceImpl<GenBasicMapper, GenBasic> i
|
|
|
public GenBasic add(GenBasicAddParam genBasicAddParam) {
|
|
|
GenBasic genBasic = BeanUtil.toBean(genBasicAddParam, GenBasic.class);
|
|
|
this.save(genBasic);
|
|
|
- GenBasicTableColumnParam tableColumnParam = new GenBasicTableColumnParam();
|
|
|
- tableColumnParam.setTableName(genBasic.getDbTable());
|
|
|
- List<GenBasicTableColumnResult> resultList = this.tableColumns(tableColumnParam);
|
|
|
- for (int i = 0; i < resultList.size(); i++) {
|
|
|
- GenBasicTableColumnResult item = resultList.get(i);
|
|
|
- GenConfigAddParam addParam = new GenConfigAddParam();
|
|
|
- addParam.setBasicId(genBasic.getId());
|
|
|
- if (item.getColumnName().equals(genBasic.getDbTableKey())) {
|
|
|
- addParam.setIsTableKey(GenYesNoEnum.Y.getValue());
|
|
|
- } else {
|
|
|
- addParam.setIsTableKey(GenYesNoEnum.N.getValue());
|
|
|
- }
|
|
|
- addParam.setFieldName(item.getColumnName());
|
|
|
- addParam.setFieldType(item.getTypeName());
|
|
|
- addParam.setFieldRemark(item.getColumnRemark());
|
|
|
- addParam.setFieldJavaType(GenDbTypeUtil.getJavaTypeBySqlType(item.getTypeName()));
|
|
|
- addParam.setEffectType(GenEffectTypeEnum.INPUT.getValue().toLowerCase());
|
|
|
- // 除主键、删除标志、创建人、创建时间、修改人和修改时间外,所有默认在列表显示、在增改显示、非列省略、非必填,非查询
|
|
|
- String logicDeleteField = mybatisPlusProperties.getGlobalConfig().getDbConfig().getLogicDeleteField();
|
|
|
- if(ObjectUtil.isEmpty(logicDeleteField)) {
|
|
|
- logicDeleteField = "DELETE_FLAG";
|
|
|
- }
|
|
|
- if(genBasic.getDbTableKey().equalsIgnoreCase(item.getColumnName()) ||
|
|
|
- logicDeleteField.equalsIgnoreCase(item.getColumnName()) ||
|
|
|
- CREATE_USER_KEY.equalsIgnoreCase(item.getColumnName()) ||
|
|
|
- CREATE_TIME_KEY.equalsIgnoreCase(item.getColumnName()) ||
|
|
|
- UPDATE_USER_KEY.equalsIgnoreCase(item.getColumnName()) ||
|
|
|
- UPDATE_TIME_KEY.equalsIgnoreCase(item.getColumnName())) {
|
|
|
- addParam.setWhetherTable(GenYesNoEnum.N.getValue());
|
|
|
- addParam.setWhetherAddUpdate(GenYesNoEnum.N.getValue());
|
|
|
- } else {
|
|
|
- addParam.setWhetherTable(GenYesNoEnum.Y.getValue());
|
|
|
- addParam.setWhetherAddUpdate(GenYesNoEnum.Y.getValue());
|
|
|
- }
|
|
|
- addParam.setWhetherRetract(GenYesNoEnum.N.getValue());
|
|
|
- addParam.setWhetherRequired(GenYesNoEnum.N.getValue());
|
|
|
- addParam.setQueryWhether(GenYesNoEnum.N.getValue());
|
|
|
- addParam.setSortCode(i);
|
|
|
- GenConfig genConfig = BeanUtil.toBean(addParam, GenConfig.class);
|
|
|
- genConfigService.save(genConfig);
|
|
|
- }
|
|
|
+ addTableColumns(genBasic);
|
|
|
return genBasic;
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
public GenBasic edit(GenBasicEditParam genBasicEditParam) {
|
|
|
+
|
|
|
GenBasic genBasic = this.queryEntity(genBasicEditParam.getId());
|
|
|
+ boolean tableChanged=!StrUtil.equals(genBasicEditParam.getDbTable(), genBasic.getDbTable());
|
|
|
BeanUtil.copyProperties(genBasicEditParam, genBasic);
|
|
|
this.updateById(genBasic);
|
|
|
+ if(tableChanged){
|
|
|
+ addTableColumns(genBasic);
|
|
|
+ }
|
|
|
return genBasic;
|
|
|
}
|
|
|
|
|
|
@@ -238,6 +202,11 @@ public class GenBasicServiceImpl extends ServiceImpl<GenBasicMapper, GenBasic> i
|
|
|
Connection conn = null;
|
|
|
ResultSet rs = null;
|
|
|
try {
|
|
|
+ Set<String> existTableNames = this.list(new LambdaQueryWrapper<GenBasic>()).stream()
|
|
|
+ .map(GenBasic::getDbTable)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+
|
|
|
+ ;
|
|
|
conn = DriverManager.getConnection(Objects.requireNonNull(environment.getProperty(DB_URL_KEY)),
|
|
|
Objects.requireNonNull(environment.getProperty(DB_USERNAME_KEY)),
|
|
|
Objects.requireNonNull(environment.getProperty(DB_PASSWORD_KEY)));
|
|
|
@@ -260,7 +229,9 @@ public class GenBasicServiceImpl extends ServiceImpl<GenBasicMapper, GenBasic> i
|
|
|
} else {
|
|
|
genBasicTableResult.setTableRemark(remarks);
|
|
|
}
|
|
|
- tables.add(genBasicTableResult);
|
|
|
+ if(!CollectionUtil.contains(existTableNames,tableName)){
|
|
|
+ tables.add(genBasicTableResult);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return tables;
|
|
|
@@ -466,8 +437,9 @@ public class GenBasicServiceImpl extends ServiceImpl<GenBasicMapper, GenBasic> i
|
|
|
genBasicPreviewResult.setGenBasicCodeFrontendResultList(genBasicCodeFrontendResultList);
|
|
|
|
|
|
// 后端基础路径
|
|
|
- String genBackendBasicPath = StrUtil.replace(genBasic.getPackageName(), StrUtil.DOT, File.separator) +
|
|
|
- File.separator + MODULE_KEY + File.separator + "modular" + File.separator + genBasic.getBusName() + File.separator;
|
|
|
+// String genBackendBasicPath = StrUtil.replace(genBasic.getPackageName(), StrUtil.DOT, File.separator) +
|
|
|
+// File.separator + MODULE_KEY + File.separator + "modular" + File.separator + genBasic.getBusName() + File.separator;
|
|
|
+
|
|
|
// 后端
|
|
|
GroupTemplate groupTemplateBackEnd = new GroupTemplate(new ClasspathResourceLoader("backend"),
|
|
|
Configuration.defaultConfiguration());
|
|
|
@@ -475,13 +447,19 @@ public class GenBasicServiceImpl extends ServiceImpl<GenBasicMapper, GenBasic> i
|
|
|
GEN_BACKEND_FILE_LIST.forEach(fileJsonObject -> {
|
|
|
String fileTemplateName = fileJsonObject.getStr("name");
|
|
|
String fileTemplatePath = fileJsonObject.getStr("path");
|
|
|
+ String genBackendBasicPath =null;
|
|
|
+ if (StrUtil.equals("Mapper.java.btl",fileTemplateName)) {
|
|
|
+ genBackendBasicPath = StrUtil.replace(genBasic.getPackageName(), StrUtil.DOT, File.separator) +
|
|
|
+ File.separator + genBasic.getModuleName()+File.separator;
|
|
|
+ }else {
|
|
|
+ genBackendBasicPath = StrUtil.replace(genBasic.getPackageName(), StrUtil.DOT, File.separator) +
|
|
|
+ File.separator + genBasic.getModuleName() +
|
|
|
+ File.separator + genBasic.getBusName()+File.separator;
|
|
|
+ }
|
|
|
GenBasicPreviewResult.GenBasicCodeResult genBasicCodeBackendResult = new GenBasicPreviewResult.GenBasicCodeResult();
|
|
|
Template templateBackend = groupTemplateBackEnd.getTemplate(fileTemplateName);
|
|
|
templateBackend.binding(bindingJsonObject);
|
|
|
String resultName = StrUtil.removeSuffix(fileTemplateName, ".btl");
|
|
|
- if(fileTemplateName.equalsIgnoreCase("Entity.java.btl")) {
|
|
|
- resultName = ".java";
|
|
|
- }
|
|
|
genBasicCodeBackendResult.setCodeFileName(genBasic.getClassName() + resultName);
|
|
|
genBasicCodeBackendResult.setCodeFileWithPathName(genBackendBasicPath + fileTemplatePath + File.separator + genBasic.getClassName() + resultName);
|
|
|
genBasicCodeBackendResult.setCodeFileContent(templateBackend.render());
|
|
|
@@ -504,7 +482,7 @@ public class GenBasicServiceImpl extends ServiceImpl<GenBasicMapper, GenBasic> i
|
|
|
public JSONObject getBindingJsonObject(GenBasic genBasic) {
|
|
|
JSONObject bindingJsonObject = JSONUtil.createObj();
|
|
|
// 代码模块名
|
|
|
- bindingJsonObject.set("moduleName", MODULE_KEY);
|
|
|
+ bindingJsonObject.set("moduleName", genBasic.getModuleName());
|
|
|
// 功能名
|
|
|
bindingJsonObject.set("functionName", genBasic.getFunctionName());
|
|
|
// 业务名
|
|
|
@@ -542,7 +520,7 @@ public class GenBasicServiceImpl extends ServiceImpl<GenBasicMapper, GenBasic> i
|
|
|
// 菜单组件
|
|
|
bindingJsonObject.set("menuComponent", MODULE_KEY + StrUtil.SLASH + genBasic.getBusName() + StrUtil.SLASH + "index");
|
|
|
// 模块ID
|
|
|
- bindingJsonObject.set("moduleId", genBasic.getModule());
|
|
|
+ bindingJsonObject.set("moduleId", genBasic.getModuleName());
|
|
|
// 添加按钮ID
|
|
|
bindingJsonObject.set("addButtonId", IdWorker.getIdStr());
|
|
|
// 编辑按钮ID
|
|
|
@@ -559,8 +537,13 @@ public class GenBasicServiceImpl extends ServiceImpl<GenBasicMapper, GenBasic> i
|
|
|
List<JSONObject> configList = CollectionUtil.newArrayList();
|
|
|
// 定义是否有排序字段
|
|
|
AtomicBoolean hasSortCodeField = new AtomicBoolean(false);
|
|
|
+ //是否为租户表
|
|
|
+ AtomicBoolean tenant=new AtomicBoolean(false);
|
|
|
genConfigService.list(new LambdaQueryWrapper<GenConfig>().eq(GenConfig::getBasicId, genBasic.getId()))
|
|
|
.forEach(genConfig -> {
|
|
|
+ if ("tenant_id".equals(genConfig.getFieldName())) {
|
|
|
+ tenant.set(true);
|
|
|
+ }
|
|
|
// 定义字段信息
|
|
|
JSONObject configItem = JSONUtil.createObj();
|
|
|
if(genConfig.getFieldName().equalsIgnoreCase(SORT_CODE_KEY)) {
|
|
|
@@ -626,10 +609,61 @@ public class GenBasicServiceImpl extends ServiceImpl<GenBasicMapper, GenBasic> i
|
|
|
configList.add(configItem);
|
|
|
|
|
|
});
|
|
|
+ // 是否为租户表
|
|
|
+ bindingJsonObject.set("isTenant", tenant.get());
|
|
|
// 配置信息
|
|
|
bindingJsonObject.set("configList", configList);
|
|
|
// 有排序字段
|
|
|
bindingJsonObject.set("hasSortCodeField", hasSortCodeField.get());
|
|
|
return bindingJsonObject;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ private void addTableColumns(GenBasic genBasic){
|
|
|
+ if(StrUtil.isNotEmpty(genBasic.getId())){
|
|
|
+ genConfigMapper.delete(new LambdaQueryWrapper<GenConfig>()
|
|
|
+ .eq(GenConfig::getBasicId,genBasic.getId()));
|
|
|
+ }
|
|
|
+ GenBasicTableColumnParam tableColumnParam = new GenBasicTableColumnParam();
|
|
|
+ tableColumnParam.setTableName(genBasic.getDbTable());
|
|
|
+ List<GenBasicTableColumnResult> resultList = this.tableColumns(tableColumnParam);
|
|
|
+ for (int i = 0; i < resultList.size(); i++) {
|
|
|
+ GenBasicTableColumnResult item = resultList.get(i);
|
|
|
+ GenConfigAddParam addParam = new GenConfigAddParam();
|
|
|
+ addParam.setBasicId(genBasic.getId());
|
|
|
+ if (item.getColumnName().equals(genBasic.getDbTableKey())) {
|
|
|
+ addParam.setIsTableKey(GenYesNoEnum.Y.getValue());
|
|
|
+ } else {
|
|
|
+ addParam.setIsTableKey(GenYesNoEnum.N.getValue());
|
|
|
+ }
|
|
|
+ addParam.setFieldName(item.getColumnName());
|
|
|
+ addParam.setFieldType(item.getTypeName());
|
|
|
+ addParam.setFieldRemark(item.getColumnRemark());
|
|
|
+ addParam.setFieldJavaType(GenDbTypeUtil.getJavaTypeBySqlType(item.getTypeName()));
|
|
|
+ addParam.setEffectType(GenEffectTypeEnum.INPUT.getValue().toLowerCase());
|
|
|
+ // 除主键、删除标志、创建人、创建时间、修改人和修改时间外,所有默认在列表显示、在增改显示、非列省略、非必填,非查询
|
|
|
+ String logicDeleteField = mybatisPlusProperties.getGlobalConfig().getDbConfig().getLogicDeleteField();
|
|
|
+ if(ObjectUtil.isEmpty(logicDeleteField)) {
|
|
|
+ logicDeleteField = "DELETE_FLAG";
|
|
|
+ }
|
|
|
+ if(genBasic.getDbTableKey().equalsIgnoreCase(item.getColumnName()) ||
|
|
|
+ logicDeleteField.equalsIgnoreCase(item.getColumnName()) ||
|
|
|
+ CREATE_USER_KEY.equalsIgnoreCase(item.getColumnName()) ||
|
|
|
+ CREATE_TIME_KEY.equalsIgnoreCase(item.getColumnName()) ||
|
|
|
+ UPDATE_USER_KEY.equalsIgnoreCase(item.getColumnName()) ||
|
|
|
+ UPDATE_TIME_KEY.equalsIgnoreCase(item.getColumnName())) {
|
|
|
+ addParam.setWhetherTable(GenYesNoEnum.N.getValue());
|
|
|
+ addParam.setWhetherAddUpdate(GenYesNoEnum.N.getValue());
|
|
|
+ } else {
|
|
|
+ addParam.setWhetherTable(GenYesNoEnum.Y.getValue());
|
|
|
+ addParam.setWhetherAddUpdate(GenYesNoEnum.Y.getValue());
|
|
|
+ }
|
|
|
+ addParam.setWhetherRetract(GenYesNoEnum.N.getValue());
|
|
|
+ addParam.setWhetherRequired(GenYesNoEnum.N.getValue());
|
|
|
+ addParam.setQueryWhether(GenYesNoEnum.N.getValue());
|
|
|
+ addParam.setSortCode(i);
|
|
|
+ GenConfig genConfig = BeanUtil.toBean(addParam, GenConfig.class);
|
|
|
+ genConfigService.save(genConfig);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|