main
黄海 9 months ago
parent f9d9614878
commit e699228954

@ -19,7 +19,9 @@ import com.jfinal.upload.UploadFile;
import net.sf.json.JSONObject;
import java.io.IOException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class DataEaseController extends Controller {
DataEaseModel dm = new DataEaseModel();
@ -186,9 +188,25 @@ public class DataEaseController extends Controller {
}
//检查上传的excel获取它有哪些列与数据集的列是否一致
List<String> cols = dm.getColumnNamesFromExcel(uploadFile.getFile().getAbsolutePath());
//获取指定数据集有哪些列
//获取指定数据表有哪些列
Record rDataSet = dm.getDataSetById(id);
String tableName = rDataSet.getStr("table_name");
//mysql数据库中真实表有哪些字段
List<String> mysqlCols = dm.getColumns(tableName);
//id列需要特殊处理
if (mysqlCols.contains("id")) mysqlCols.remove("id");
//对比两个数组集是不是一致,就是对比列名是不是完全匹配,使用交集去检查
Set<String> set1 = new HashSet<>(cols);
Set<String> set2 = new HashSet<>(mysqlCols);
//是不是完整匹配
boolean match = set1.equals(set2);
if (!match) {
renderJson(CommonUtil.returnMessageJson(false, "上传的Excel列名与数据集列名不一致请重新上传"));
return;
}
//如果一致,那么需要先把数据集的指定行政区划列的表清空,再导入数据
//TODO
//返回结果
Kv kv = Kv.create();

@ -19,6 +19,7 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
public class DataEaseModel {
@ -202,6 +203,17 @@ public class DataEaseModel {
return columns;
}
/**
*
* @param tableName
* @return
*/
public List<String> getColumns(String tableName) {
String sql = "SELECT COLUMN_NAME, DATA_TYPE, COLUMN_DEFAULT, IS_NULLABLE, COLUMN_TYPE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, DATETIME_PRECISION, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?";
List<Record> list = Db.find(sql, DataEaseModel.DB_NAME, tableName);
return list.stream().map(record -> record.getStr("COLUMN_NAME")).collect(Collectors.toList());
}
// 检查表是否存在主键
public boolean hasPrimaryKey(String tableName) {
String sql = "SELECT COUNT(*) as c FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? AND CONSTRAINT_TYPE = 'PRIMARY KEY'";

Loading…
Cancel
Save