提交 abaa9837 authored 作者: 黄承天's avatar 黄承天

[数据模型]修改表功能细节改动

上级 a2509a4d
...@@ -46,6 +46,7 @@ import static com.tykj.workflowcore.model_layer.utils.ClassTypeLength.setLength; ...@@ -46,6 +46,7 @@ import static com.tykj.workflowcore.model_layer.utils.ClassTypeLength.setLength;
import static com.tykj.workflowcore.model_layer.utils.CreateTableUtil.*; import static com.tykj.workflowcore.model_layer.utils.CreateTableUtil.*;
import static com.tykj.workflowcore.model_layer.utils.HqlUtil.createQuery; import static com.tykj.workflowcore.model_layer.utils.HqlUtil.createQuery;
import static java.util.Objects.isNull; import static java.util.Objects.isNull;
import static java.util.Objects.nonNull;
/** /**
...@@ -83,8 +84,8 @@ public class ModelImpl implements ModelService { ...@@ -83,8 +84,8 @@ public class ModelImpl implements ModelService {
@Override @Override
public Page<TableInfo> listAllEntities(SearchTableInfoVo searchTableInfoVo) { public Page<TableInfo> listAllEntities(SearchTableInfoVo searchTableInfoVo) {
PredicateBuilder<TableInfo> and = Specifications.and(); PredicateBuilder<TableInfo> and = Specifications.and();
and.like(searchTableInfoVo.getModelName() != null&& StringUtils.isNotEmpty(searchTableInfoVo.getModelName()), "modelName", "%" + searchTableInfoVo.getModelName() + "%"); and.like(searchTableInfoVo.getModelName() != null && StringUtils.isNotEmpty(searchTableInfoVo.getModelName()), "modelName", "%" + searchTableInfoVo.getModelName() + "%");
and.like(searchTableInfoVo.getModelTitle() != null&& StringUtils.isNotEmpty(searchTableInfoVo.getModelTitle()), "modelTitle", "%" + searchTableInfoVo.getModelTitle() + "%"); and.like(searchTableInfoVo.getModelTitle() != null && StringUtils.isNotEmpty(searchTableInfoVo.getModelTitle()), "modelTitle", "%" + searchTableInfoVo.getModelTitle() + "%");
and.eq(searchTableInfoVo.getModelType() != null, "modelType", searchTableInfoVo.getModelType()); and.eq(searchTableInfoVo.getModelType() != null, "modelType", searchTableInfoVo.getModelType());
return tableInfoDao.findAll(and.build(), searchTableInfoVo.getPageable()); return tableInfoDao.findAll(and.build(), searchTableInfoVo.getPageable());
...@@ -100,8 +101,8 @@ public class ModelImpl implements ModelService { ...@@ -100,8 +101,8 @@ public class ModelImpl implements ModelService {
@Override @Override
public List<ColumnInfo> showModelFields(SearchColumnInfoVo searchColumnInfoVo) { public List<ColumnInfo> showModelFields(SearchColumnInfoVo searchColumnInfoVo) {
PredicateBuilder<ColumnInfo> and = Specifications.and(); PredicateBuilder<ColumnInfo> and = Specifications.and();
and.eq(searchColumnInfoVo.getDbId() != null, "dbId",searchColumnInfoVo.getDbId()); and.eq(searchColumnInfoVo.getDbId() != null, "dbId", searchColumnInfoVo.getDbId());
and.eq(searchColumnInfoVo.getDbName() != null&&StringUtils.isNotEmpty(searchColumnInfoVo.getDbName()), "dbName", searchColumnInfoVo.getDbName()); and.eq(searchColumnInfoVo.getDbName() != null && StringUtils.isNotEmpty(searchColumnInfoVo.getDbName()), "dbName", searchColumnInfoVo.getDbName());
return columnInfoDao.findAll(and.build()); return columnInfoDao.findAll(and.build());
} }
...@@ -406,22 +407,33 @@ public class ModelImpl implements ModelService { ...@@ -406,22 +407,33 @@ public class ModelImpl implements ModelService {
Predicate predicate = criteriaBuilder.equal(root.get("dbId"), dbId); Predicate predicate = criteriaBuilder.equal(root.get("dbId"), dbId);
return predicate; return predicate;
}; };
List<ColumnInfo> columnInfos = columnInfoDao.findAll(spec); List<ColumnInfo> originalColumnInfos = columnInfoDao.findAll(spec);
//新的字段信息 //新的字段信息
List<ColumnInfo> columnInfosForSave = tableVO.getDataList().stream() List<ColumnInfo> currentColumnInfos = tableVO.getDataList().stream()
.map(columnVO -> columnInfo(tableInfo.getId(), tableInfo.getModelName(), columnVO)) .map(columnVO -> columnInfo(tableInfo.getId(), tableInfo.getModelName(), columnVO))
.collect(Collectors.toList()); .collect(Collectors.toList());
//根据ColumnInfo集合得出表实际改动的sql语句集合 //根据ColumnInfo集合得出表实际改动的sql语句集合
List<String> sqls = getTableSqls(tableInfo.getModelName(), columnInfos, columnInfosForSave); List<String> sqls = getTableSqls(tableInfo.getModelName(), originalColumnInfos, currentColumnInfos);
//执行sql语句 //执行sql语句
for (String sql : sqls) { for (String sql : sqls) {
System.out.println(sql);
jdbcTemplate.execute(sql); jdbcTemplate.execute(sql);
} }
//重新保存字段信息 //重新保存字段信息
columnInfoDao.deleteInBatch(columnInfos); List<ColumnInfo> columnsForAdd = getColumnsForAdd(originalColumnInfos, currentColumnInfos);
columnInfosForSave.forEach(columnInfo -> columnInfoDao.save(columnInfo)); for (ColumnInfo columnInfo : columnsForAdd) {
columnInfoDao.save(columnInfo);
}
List<ColumnInfo> columnsForUpdate = getColumnsForUpdate(originalColumnInfos, currentColumnInfos);
for (ColumnInfo columnInfo : columnsForUpdate) {
columnInfoDao.save(columnInfo);
}
List<ColumnInfo> columnsFordDelete = getColumnsFordDelete(originalColumnInfos, currentColumnInfos);
for (ColumnInfo originColumnInfo : columnsFordDelete) {
columnInfoDao.delete(originColumnInfo);
}
} }
/** /**
...@@ -468,8 +480,45 @@ public class ModelImpl implements ModelService { ...@@ -468,8 +480,45 @@ public class ModelImpl implements ModelService {
result.add(sql); result.add(sql);
} }
} }
for (String s : result) { return result;
System.out.println(s); }
private List<ColumnInfo> getColumnsForAdd(List<ColumnInfo> origin, List<ColumnInfo> current) {
List<ColumnInfo> result = new ArrayList<>();
for (ColumnInfo columnInfo : current) {
ColumnInfo originColumnInfo = origin.stream()
.filter(columnInfo1 -> Objects.equals(columnInfo.getId(), columnInfo1.getId()))
.findAny()
.orElse(null);
if (isNull(originColumnInfo)) {
result.add(columnInfo);
}
}
return result;
}
private List<ColumnInfo> getColumnsForUpdate(List<ColumnInfo> origin, List<ColumnInfo> current) {
List<ColumnInfo> result = new ArrayList<>();
for (ColumnInfo columnInfo : current) {
ColumnInfo originColumnInfo = origin.stream()
.filter(columnInfo1 -> Objects.equals(columnInfo.getId(), columnInfo1.getId()))
.findAny()
.orElse(null);
if (nonNull(originColumnInfo)) {
result.add(columnInfo);
}
}
return result;
}
private List<ColumnInfo> getColumnsFordDelete(List<ColumnInfo> origin, List<ColumnInfo> current) {
List<ColumnInfo> result = new ArrayList<>();
for (ColumnInfo originColumnInfo : origin) {
boolean noneMatch = current.stream()
.noneMatch(columnInfo1 -> Objects.equals(originColumnInfo.getId(), columnInfo1.getId()));
if (noneMatch) {
result.add(originColumnInfo);
}
} }
return result; return result;
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论