去除无效代码

This commit is contained in:
钱涛 2024-01-30 17:21:13 +08:00
parent b6f7281cbd
commit 335964e2df
1 changed files with 156 additions and 156 deletions

View File

@ -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());
// }
//}