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

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

上级 a2509a4d
......@@ -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.HqlUtil.createQuery;
import static java.util.Objects.isNull;
import static java.util.Objects.nonNull;
/**
......@@ -83,8 +84,8 @@ public class ModelImpl implements ModelService {
@Override
public Page<TableInfo> listAllEntities(SearchTableInfoVo searchTableInfoVo) {
PredicateBuilder<TableInfo> and = Specifications.and();
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.getModelName() != null && StringUtils.isNotEmpty(searchTableInfoVo.getModelName()), "modelName", "%" + searchTableInfoVo.getModelName() + "%");
and.like(searchTableInfoVo.getModelTitle() != null && StringUtils.isNotEmpty(searchTableInfoVo.getModelTitle()), "modelTitle", "%" + searchTableInfoVo.getModelTitle() + "%");
and.eq(searchTableInfoVo.getModelType() != null, "modelType", searchTableInfoVo.getModelType());
return tableInfoDao.findAll(and.build(), searchTableInfoVo.getPageable());
......@@ -100,8 +101,8 @@ public class ModelImpl implements ModelService {
@Override
public List<ColumnInfo> showModelFields(SearchColumnInfoVo searchColumnInfoVo) {
PredicateBuilder<ColumnInfo> and = Specifications.and();
and.eq(searchColumnInfoVo.getDbId() != null, "dbId",searchColumnInfoVo.getDbId());
and.eq(searchColumnInfoVo.getDbName() != null&&StringUtils.isNotEmpty(searchColumnInfoVo.getDbName()), "dbName", searchColumnInfoVo.getDbName());
and.eq(searchColumnInfoVo.getDbId() != null, "dbId", searchColumnInfoVo.getDbId());
and.eq(searchColumnInfoVo.getDbName() != null && StringUtils.isNotEmpty(searchColumnInfoVo.getDbName()), "dbName", searchColumnInfoVo.getDbName());
return columnInfoDao.findAll(and.build());
}
......@@ -406,22 +407,33 @@ public class ModelImpl implements ModelService {
Predicate predicate = criteriaBuilder.equal(root.get("dbId"), dbId);
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))
.collect(Collectors.toList());
//根据ColumnInfo集合得出表实际改动的sql语句集合
List<String> sqls = getTableSqls(tableInfo.getModelName(), columnInfos, columnInfosForSave);
List<String> sqls = getTableSqls(tableInfo.getModelName(), originalColumnInfos, currentColumnInfos);
//执行sql语句
for (String sql : sqls) {
System.out.println(sql);
jdbcTemplate.execute(sql);
}
//重新保存字段信息
columnInfoDao.deleteInBatch(columnInfos);
columnInfosForSave.forEach(columnInfo -> columnInfoDao.save(columnInfo));
List<ColumnInfo> columnsForAdd = getColumnsForAdd(originalColumnInfos, currentColumnInfos);
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 {
result.add(sql);
}
}
for (String s : result) {
System.out.println(s);
return result;
}
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;
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论