Commit 43bf81ab by guoxw

元字段管理字段同步去重

parent 2fae3a2b
......@@ -72,30 +72,45 @@ public class DataTemplateController {
@GetMapping("/fieldError")
@ApiOperation("物理表异常字段查询")
public AjaxResult fieldError(@RequestParam String templateId) {
List<FieldErrorVo> fieldErrorVos1 = metaFieldMapper.selectFieldErrorVO(templateId);
List<FieldErrorVo> fieldErrorVos2 = metaFieldMapper.selectFieldErrorVO(templateId);
ArrayList<FieldErrorVo> resultList = new ArrayList<>();
if (!CollectionUtils.isEmpty(fieldErrorVos1) && StringUtils.isNotBlank(fieldErrorVos1.get(0).getTableName())) {
List<FieldErrorVo> list1 = getTableFieldError(fieldErrorVos1, fieldErrorVos1.get(0).getTableName());
List<FieldErrorVo> list2 = getTableFieldError(fieldErrorVos2, fieldErrorVos2.get(0).getTableName() + "_TEMP");
resultList.addAll(list1); resultList.addAll(list2);
}
return AjaxResult.success(resultList);
}
private List<FieldErrorVo> getTableFieldError(List<FieldErrorVo> fieldErrorVos, String tableName) {
List<FieldErrorVo> resultList = new ArrayList<>();
List<FieldErrorVo> fieldErrorVos = metaFieldMapper.selectFieldErrorVO(templateId);
if (!CollectionUtils.isEmpty(fieldErrorVos) && StringUtils.isNotBlank(fieldErrorVos.get(0).getTableName())) {
try {
DataSourceUtil.switchDs(DataSourceType.SLAVE.name());
if (metaFieldMapper.selectTableCount(fieldErrorVos.get(0).getTableName()) == 0) return AjaxResult.success(resultList);
try {
DataSourceUtil.switchDs(DataSourceType.SLAVE.name());
if (metaFieldMapper.selectTableCount(tableName) > 0) {
fieldErrorVos.forEach(item -> {
String fieldType = item.getFieldType();
String columnType = "";
if (fieldType.contains("NUMBER")) {
columnType = metaFieldMapper.selectNumberFieldType(item.getTableName(), item.getFieldName());
columnType = metaFieldMapper.selectNumberFieldType(tableName, item.getFieldName());
} else {
columnType = metaFieldMapper.selectFieldType(item.getTableName(), item.getFieldName());
columnType = metaFieldMapper.selectFieldType(tableName, item.getFieldName());
}
if (!StringUtils.equals(fieldType, columnType)) {
item.setColumnType(columnType);
if (!StringUtils.equals(fieldType, columnType) && !isVarcharLengthEqual(fieldType, columnType)) {
item.setColumnType(columnType).setTableName(tableName);
resultList.add(item);
}
});
} finally {
DataSourceUtil.switchDefaultDs();
}
} finally {
DataSourceUtil.switchDefaultDs();
}
return AjaxResult.success(resultList);
return resultList;
}
private boolean isVarcharLengthEqual(String fieldType, String columnType) {
return fieldType.contains("VARCHAR") && columnType.contains("VARCHAR") &&
fieldType.substring(fieldType.indexOf("(") + 1, fieldType.indexOf(")")).equals(columnType.substring(columnType.indexOf("(") + 1, columnType.indexOf(")")));
}
@IgnoreWebSecurity
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment