去除无效代码
This commit is contained in:
parent
b6f7281cbd
commit
335964e2df
|
|
@ -1,156 +1,156 @@
|
|||
package com.engine.salary.elog.annotation.handle;
|
||||
|
||||
import com.engine.salary.elog.annotation.ElogField;
|
||||
import com.engine.salary.elog.annotation.ElogTable;
|
||||
import com.engine.salary.elog.entity.dto.DataTypeEnum;
|
||||
import com.engine.salary.elog.entity.dto.TableColumnBean;
|
||||
import com.engine.salary.elog.util.ElogUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.reflections.Reflections;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @ClassName: ElogTableScanner
|
||||
* @Description 日志操作表扫描
|
||||
* @Author tanghj
|
||||
* @Date 2021/3/12 13:31
|
||||
*/
|
||||
@Slf4j
|
||||
public class ElogTableScanner {
|
||||
private Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||
|
||||
// private TableCheckerMapper tableCheckerMapper;
|
||||
|
||||
// @Override
|
||||
public void run() throws Exception {
|
||||
|
||||
// todo 需要考虑集群下,控制一台机器来跑
|
||||
scanElogTable();
|
||||
|
||||
}
|
||||
|
||||
private void scanElogTable() {
|
||||
// todo 是否还需要扫描Elog(因为可能不需要本地存储) ELogDetailTable,
|
||||
// Map<String, Object> tableBeans = this.applicationContext.getBeansWithAnnotation(ElogTable.class);
|
||||
Reflections reflections = new Reflections("com.engine.salary.elog");
|
||||
Set<Class<?>> tableBeans = reflections.getTypesAnnotatedWith(ElogTable.class);
|
||||
|
||||
|
||||
List<TableColumnBean> baseColumns = new ArrayList<>();
|
||||
|
||||
Map<String, List<TableColumnBean>> tableColumns = elogTableHandle(tableBeans,baseColumns);
|
||||
|
||||
for(String tableName : tableColumns.keySet()) {
|
||||
|
||||
// todo 需要处理明细表,如果没有直接初始化原始明细表,如果有加上自定义的
|
||||
List<TableColumnBean> columns = tableColumns.get(tableName);
|
||||
if(columns == null) {
|
||||
columns = baseColumns;
|
||||
} else {
|
||||
columns.addAll(baseColumns);
|
||||
}
|
||||
tableCheck(tableName, columns);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private Map<String, List<TableColumnBean>> elogTableHandle(Set<Class<?>> tableBeans, List<TableColumnBean> baseColumns) {
|
||||
Map<String, List<TableColumnBean>> tableMap = new HashMap<>();
|
||||
for (Class<?> aClass :tableBeans) {//遍历每个controller层
|
||||
|
||||
List<TableColumnBean> list = new ArrayList<>();
|
||||
|
||||
ElogTable elogTable = aClass.getAnnotation(ElogTable.class);
|
||||
|
||||
List<Field> fields = Arrays.asList(aClass.getDeclaredFields());//获取方法
|
||||
for (Field f : fields) {
|
||||
|
||||
ElogField field = f.getAnnotation(ElogField.class);
|
||||
if(field == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
TableColumnBean tableColumnBean = new TableColumnBean();
|
||||
|
||||
tableColumnBean.setColumnName(f.getName());
|
||||
tableColumnBean.setColumnComment(field.comment());
|
||||
tableColumnBean.setColumnDefault(field.defaultValue());
|
||||
tableColumnBean.setFieldLength(field.length());
|
||||
tableColumnBean.setDataType(field.dataType());
|
||||
tableColumnBean.setNullable(field.isNull());
|
||||
list.add(tableColumnBean);
|
||||
}
|
||||
if(!ElogUtils.BASE_TABLE.equals(elogTable.module())) {
|
||||
tableMap.put(ElogUtils.getTableName(elogTable.module(), elogTable.function()), list);
|
||||
} else {
|
||||
baseColumns.addAll(list);
|
||||
}
|
||||
}
|
||||
|
||||
return tableMap;
|
||||
}
|
||||
|
||||
private void tableCheck(String tableName, List<TableColumnBean> columns) {
|
||||
List<TableColumnBean> oldColumns = new ArrayList<>();
|
||||
// List<TableColumnBean> oldColumns = tableCheckerMapper.getTableStructure(tableName);
|
||||
|
||||
// 表不存在
|
||||
if(oldColumns == null || oldColumns.size() == 0) {
|
||||
createTable(tableName,columns );
|
||||
} else {
|
||||
Map<String, TableColumnBean> newcolMap = new HashMap<>();
|
||||
Map<String, TableColumnBean> oldcolMap = new HashMap<>();
|
||||
|
||||
columns.stream().forEach(tableColumnBean -> newcolMap.put(tableColumnBean.getColumnName().toLowerCase(), tableColumnBean));
|
||||
oldColumns.stream().forEach(tableColumnBean -> {
|
||||
tableColumnBean.setDataType(ElogUtils.getEnumFromString(DataTypeEnum.class, tableColumnBean.getDataTypeStr()));
|
||||
tableColumnBean.setNullable("YES".equalsIgnoreCase(tableColumnBean.getIsNullableStr()));
|
||||
oldcolMap.put(tableColumnBean.getColumnName().toLowerCase(), tableColumnBean);
|
||||
});
|
||||
// 只增加或者修改,不删除字段
|
||||
for(String key : newcolMap.keySet()) {
|
||||
if(oldcolMap.containsKey(key)) {
|
||||
// 字段变动则修改
|
||||
if(!(newcolMap.get(key).toSql()).equals(oldcolMap.get(key).toSql()))
|
||||
this.modifyColumn(tableName, newcolMap.get(key));
|
||||
} else {
|
||||
this.addColumn(tableName, newcolMap.get(key));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void createTable(String tableName, List<TableColumnBean> columns) {
|
||||
StringBuilder sb = new StringBuilder("create table ").append(tableName).append(" ( ");
|
||||
sb.append(columns.stream().map( bean -> bean.toSql()).collect(Collectors.joining(",")));
|
||||
sb.append(")");
|
||||
logger.info("创建sql:{}",sb.toString());
|
||||
// tableCheckerMapper.createElogTable(sb.toString());
|
||||
}
|
||||
|
||||
private void addColumn(String tableName, TableColumnBean tableColumnBean) {
|
||||
StringBuilder sb = new StringBuilder("alter table ")
|
||||
.append(tableName).append(" ")
|
||||
.append(" add ")
|
||||
.append(" column ")
|
||||
.append(tableColumnBean.toSql());
|
||||
logger.info("新增字段sql:{}",sb.toString());
|
||||
// tableCheckerMapper.createElogTable(sb.toString());
|
||||
}
|
||||
|
||||
private void modifyColumn(String tableName, TableColumnBean tableColumnBean) {
|
||||
StringBuilder sb = new StringBuilder("alter table ")
|
||||
.append(tableName).append(" ")
|
||||
.append(" modify ")
|
||||
.append(" column ")
|
||||
.append(tableColumnBean.toSql());
|
||||
logger.info("修改字段sql:{}",sb.toString());
|
||||
// tableCheckerMapper.createElogTable(sb.toString());
|
||||
}
|
||||
}
|
||||
//package com.engine.salary.elog.annotation.handle;
|
||||
//
|
||||
//import com.engine.salary.elog.annotation.ElogField;
|
||||
//import com.engine.salary.elog.annotation.ElogTable;
|
||||
//import com.engine.salary.elog.entity.dto.DataTypeEnum;
|
||||
//import com.engine.salary.elog.entity.dto.TableColumnBean;
|
||||
//import com.engine.salary.elog.util.ElogUtils;
|
||||
//import lombok.extern.slf4j.Slf4j;
|
||||
//import org.reflections.Reflections;
|
||||
//import org.slf4j.Logger;
|
||||
//import org.slf4j.LoggerFactory;
|
||||
//
|
||||
//import java.lang.reflect.Field;
|
||||
//import java.util.*;
|
||||
//import java.util.stream.Collectors;
|
||||
//
|
||||
///**
|
||||
// * @ClassName: ElogTableScanner
|
||||
// * @Description 日志操作表扫描
|
||||
// * @Author tanghj
|
||||
// * @Date 2021/3/12 13:31
|
||||
// */
|
||||
//@Slf4j
|
||||
//public class ElogTableScanner {
|
||||
// private Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||
//
|
||||
//// private TableCheckerMapper tableCheckerMapper;
|
||||
//
|
||||
//// @Override
|
||||
// public void run() throws Exception {
|
||||
//
|
||||
// // todo 需要考虑集群下,控制一台机器来跑
|
||||
// scanElogTable();
|
||||
//
|
||||
// }
|
||||
//
|
||||
// private void scanElogTable() {
|
||||
// // todo 是否还需要扫描Elog(因为可能不需要本地存储) ELogDetailTable,
|
||||
//// Map<String, Object> tableBeans = this.applicationContext.getBeansWithAnnotation(ElogTable.class);
|
||||
// Reflections reflections = new Reflections("com.engine.salary.elog");
|
||||
// Set<Class<?>> tableBeans = reflections.getTypesAnnotatedWith(ElogTable.class);
|
||||
//
|
||||
//
|
||||
// List<TableColumnBean> baseColumns = new ArrayList<>();
|
||||
//
|
||||
// Map<String, List<TableColumnBean>> tableColumns = elogTableHandle(tableBeans,baseColumns);
|
||||
//
|
||||
// for(String tableName : tableColumns.keySet()) {
|
||||
//
|
||||
// // todo 需要处理明细表,如果没有直接初始化原始明细表,如果有加上自定义的
|
||||
// List<TableColumnBean> columns = tableColumns.get(tableName);
|
||||
// if(columns == null) {
|
||||
// columns = baseColumns;
|
||||
// } else {
|
||||
// columns.addAll(baseColumns);
|
||||
// }
|
||||
// tableCheck(tableName, columns);
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// private Map<String, List<TableColumnBean>> elogTableHandle(Set<Class<?>> tableBeans, List<TableColumnBean> baseColumns) {
|
||||
// Map<String, List<TableColumnBean>> tableMap = new HashMap<>();
|
||||
// for (Class<?> aClass :tableBeans) {//遍历每个controller层
|
||||
//
|
||||
// List<TableColumnBean> list = new ArrayList<>();
|
||||
//
|
||||
// ElogTable elogTable = aClass.getAnnotation(ElogTable.class);
|
||||
//
|
||||
// List<Field> fields = Arrays.asList(aClass.getDeclaredFields());//获取方法
|
||||
// for (Field f : fields) {
|
||||
//
|
||||
// ElogField field = f.getAnnotation(ElogField.class);
|
||||
// if(field == null) {
|
||||
// continue;
|
||||
// }
|
||||
//
|
||||
// TableColumnBean tableColumnBean = new TableColumnBean();
|
||||
//
|
||||
// tableColumnBean.setColumnName(f.getName());
|
||||
// tableColumnBean.setColumnComment(field.comment());
|
||||
// tableColumnBean.setColumnDefault(field.defaultValue());
|
||||
// tableColumnBean.setFieldLength(field.length());
|
||||
// tableColumnBean.setDataType(field.dataType());
|
||||
// tableColumnBean.setNullable(field.isNull());
|
||||
// list.add(tableColumnBean);
|
||||
// }
|
||||
// if(!ElogUtils.BASE_TABLE.equals(elogTable.module())) {
|
||||
// tableMap.put(ElogUtils.getTableName(elogTable.module(), elogTable.function()), list);
|
||||
// } else {
|
||||
// baseColumns.addAll(list);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// return tableMap;
|
||||
// }
|
||||
//
|
||||
// private void tableCheck(String tableName, List<TableColumnBean> columns) {
|
||||
// List<TableColumnBean> oldColumns = new ArrayList<>();
|
||||
//// List<TableColumnBean> oldColumns = tableCheckerMapper.getTableStructure(tableName);
|
||||
//
|
||||
// // 表不存在
|
||||
// if(oldColumns == null || oldColumns.size() == 0) {
|
||||
// createTable(tableName,columns );
|
||||
// } else {
|
||||
// Map<String, TableColumnBean> newcolMap = new HashMap<>();
|
||||
// Map<String, TableColumnBean> oldcolMap = new HashMap<>();
|
||||
//
|
||||
// columns.stream().forEach(tableColumnBean -> newcolMap.put(tableColumnBean.getColumnName().toLowerCase(), tableColumnBean));
|
||||
// oldColumns.stream().forEach(tableColumnBean -> {
|
||||
// tableColumnBean.setDataType(ElogUtils.getEnumFromString(DataTypeEnum.class, tableColumnBean.getDataTypeStr()));
|
||||
// tableColumnBean.setNullable("YES".equalsIgnoreCase(tableColumnBean.getIsNullableStr()));
|
||||
// oldcolMap.put(tableColumnBean.getColumnName().toLowerCase(), tableColumnBean);
|
||||
// });
|
||||
// // 只增加或者修改,不删除字段
|
||||
// for(String key : newcolMap.keySet()) {
|
||||
// if(oldcolMap.containsKey(key)) {
|
||||
// // 字段变动则修改
|
||||
// if(!(newcolMap.get(key).toSql()).equals(oldcolMap.get(key).toSql()))
|
||||
// this.modifyColumn(tableName, newcolMap.get(key));
|
||||
// } else {
|
||||
// this.addColumn(tableName, newcolMap.get(key));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// private void createTable(String tableName, List<TableColumnBean> columns) {
|
||||
// StringBuilder sb = new StringBuilder("create table ").append(tableName).append(" ( ");
|
||||
// sb.append(columns.stream().map( bean -> bean.toSql()).collect(Collectors.joining(",")));
|
||||
// sb.append(")");
|
||||
// logger.info("创建sql:{}",sb.toString());
|
||||
//// tableCheckerMapper.createElogTable(sb.toString());
|
||||
// }
|
||||
//
|
||||
// private void addColumn(String tableName, TableColumnBean tableColumnBean) {
|
||||
// StringBuilder sb = new StringBuilder("alter table ")
|
||||
// .append(tableName).append(" ")
|
||||
// .append(" add ")
|
||||
// .append(" column ")
|
||||
// .append(tableColumnBean.toSql());
|
||||
// logger.info("新增字段sql:{}",sb.toString());
|
||||
//// tableCheckerMapper.createElogTable(sb.toString());
|
||||
// }
|
||||
//
|
||||
// private void modifyColumn(String tableName, TableColumnBean tableColumnBean) {
|
||||
// StringBuilder sb = new StringBuilder("alter table ")
|
||||
// .append(tableName).append(" ")
|
||||
// .append(" modify ")
|
||||
// .append(" column ")
|
||||
// .append(tableColumnBean.toSql());
|
||||
// logger.info("修改字段sql:{}",sb.toString());
|
||||
//// tableCheckerMapper.createElogTable(sb.toString());
|
||||
// }
|
||||
//}
|
||||
|
|
|
|||
Loading…
Reference in New Issue