diff --git a/core/backend/src/main/java/io/dataease/service/datafill/DataFillDataService.java b/core/backend/src/main/java/io/dataease/service/datafill/DataFillDataService.java index 9429ad018f..3da33a9d88 100644 --- a/core/backend/src/main/java/io/dataease/service/datafill/DataFillDataService.java +++ b/core/backend/src/main/java/io/dataease/service/datafill/DataFillDataService.java @@ -657,13 +657,18 @@ public class DataFillDataService { }.getType()); List fields = new ArrayList<>(); + Map 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 dataList = new ArrayList<>(); for (List excelDatum : excelData) { Map rowData = new HashMap<>(); + Map> dateRangeCheckMap = new HashMap<>(); + for (String key : dateRangeNameMap.keySet()) { + //初始化 + List 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; } diff --git a/core/backend/src/main/java/io/dataease/service/datafill/DataFillService.java b/core/backend/src/main/java/io/dataease/service/datafill/DataFillService.java index 61e6411288..5009c90aec 100644 --- a/core/backend/src/main/java/io/dataease/service/datafill/DataFillService.java +++ b/core/backend/src/main/java/io/dataease/service/datafill/DataFillService.java @@ -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 head1 = List.of(name1); List head2 = List.of(name2);