forked from github/dataease
feat(X-Pack): 数据填报批量上传数据增加时间范围的校验
This commit is contained in:
parent
05618eb743
commit
063e04ff41
@ -657,13 +657,18 @@ public class DataFillDataService {
|
||||
}.getType());
|
||||
|
||||
List<ExtTableField> fields = new ArrayList<>();
|
||||
Map<String, String> dateRangeNameMap = new HashMap<>();
|
||||
for (ExtTableField field : formFields) {
|
||||
if (StringUtils.equalsIgnoreCase(field.getType(), "dateRange")) {
|
||||
dateRangeNameMap.put(field.getId(), field.getSettings().getName());
|
||||
|
||||
ExtTableField start = gson.fromJson(gson.toJson(field), ExtTableField.class);
|
||||
start.getSettings().getMapping().setColumnName(start.getSettings().getMapping().getColumnName1());
|
||||
start.getSettings().setName(start.getSettings().getName() + "(开始)");
|
||||
fields.add(start);
|
||||
|
||||
ExtTableField end = gson.fromJson(gson.toJson(field), ExtTableField.class);
|
||||
end.getSettings().setName(end.getSettings().getName() + "(结束)");
|
||||
end.getSettings().getMapping().setColumnName(end.getSettings().getMapping().getColumnName2());
|
||||
fields.add(end);
|
||||
} else {
|
||||
@ -686,6 +691,15 @@ public class DataFillDataService {
|
||||
List<RowDataDatum> dataList = new ArrayList<>();
|
||||
for (List<String> excelDatum : excelData) {
|
||||
Map<String, Object> rowData = new HashMap<>();
|
||||
Map<String, List<Long>> dateRangeCheckMap = new HashMap<>();
|
||||
for (String key : dateRangeNameMap.keySet()) {
|
||||
//初始化
|
||||
List<Long> list = new ArrayList<>();
|
||||
list.add(null);
|
||||
list.add(null);
|
||||
dateRangeCheckMap.put(key, list);
|
||||
}
|
||||
|
||||
for (int i = 0; i < fields.size(); i++) {
|
||||
ExtTableField field = fields.get(i);
|
||||
|
||||
@ -718,6 +732,14 @@ public class DataFillDataService {
|
||||
if (time != null && time < 0) {
|
||||
throw new Exception("时间不能小于1970/01/01");
|
||||
}
|
||||
//检测dateRange下,开始要小于结束,且必须两个都有或都没有
|
||||
if (StringUtils.equalsIgnoreCase(field.getType(), "dateRange")) {
|
||||
if (StringUtils.equals(field.getSettings().getMapping().getColumnName(), field.getSettings().getMapping().getColumnName1())) {
|
||||
dateRangeCheckMap.get(field.getId()).set(0, time);
|
||||
} else if (StringUtils.equals(field.getSettings().getMapping().getColumnName(), field.getSettings().getMapping().getColumnName2())) {
|
||||
dateRangeCheckMap.get(field.getId()).set(1, time);
|
||||
}
|
||||
}
|
||||
rowData.put(field.getSettings().getMapping().getColumnName(), time);
|
||||
break;
|
||||
default:
|
||||
@ -792,6 +814,19 @@ public class DataFillDataService {
|
||||
}
|
||||
}
|
||||
|
||||
//判断时间范围的开始结束是否符合要求
|
||||
dateRangeCheckMap.forEach((key, list) -> {
|
||||
if (list.get(0) == null && list.get(1) != null) {
|
||||
DataEaseException.throwException("[" + dateRangeNameMap.get(key) + "(开始/结束)] 不能只有一个为空");
|
||||
} else if (list.get(0) != null && list.get(1) == null) {
|
||||
DataEaseException.throwException("[" + dateRangeNameMap.get(key) + "(结束/结束)] 不能只有一个为空");
|
||||
} else if (list.get(0) != null && list.get(1) != null) {
|
||||
if (list.get(0) > list.get(1)) {
|
||||
DataEaseException.throwException("[" + dateRangeNameMap.get(key) + "(结束)] 不能早于 [" + dateRangeNameMap.get(key) + "(开始)]");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (rowData.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
@ -383,8 +383,8 @@ public class DataFillService {
|
||||
String name = formField.getSettings().getName();
|
||||
|
||||
if (StringUtils.equalsIgnoreCase(formField.getType(), "dateRange")) {
|
||||
String name1 = formField.getSettings().getName() + "(开始时间) ";
|
||||
String name2 = formField.getSettings().getName() + "(结束时间) ";
|
||||
String name1 = formField.getSettings().getName() + "(开始) ";
|
||||
String name2 = formField.getSettings().getName() + "(结束) ";
|
||||
|
||||
List<String> head1 = List.of(name1);
|
||||
List<String> head2 = List.of(name2);
|
||||
|
Loading…
Reference in New Issue
Block a user