From 063e04ff41c8fb79a9d3f96af9d9a1b3e695b9fd Mon Sep 17 00:00:00 2001 From: ulleo Date: Mon, 29 Apr 2024 18:22:00 +0800 Subject: [PATCH] =?UTF-8?q?feat(X-Pack):=20=E6=95=B0=E6=8D=AE=E5=A1=AB?= =?UTF-8?q?=E6=8A=A5=E6=89=B9=E9=87=8F=E4=B8=8A=E4=BC=A0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=B6=E9=97=B4=E8=8C=83=E5=9B=B4=E7=9A=84?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/datafill/DataFillDataService.java | 35 +++++++++++++++++++ .../service/datafill/DataFillService.java | 4 +-- 2 files changed, 37 insertions(+), 2 deletions(-) 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);