diff --git a/backend/pom.xml b/backend/pom.xml
index 829a08f..3c5e33d 100644
--- a/backend/pom.xml
+++ b/backend/pom.xml
@@ -40,7 +40,7 @@
1.7.2
1.6.2
1.21
-
+ 2.10.1
@@ -309,17 +309,23 @@
15.4
+
- com.zny.platform
- dec-framework-kendo
- 0.4.0.5-SNAPSHOT
-
-
- dm.jdbc.driver
- 18
-
-
+ com.google.code.gson
+ gson
+ ${gson.version}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/backend/src/main/java/com/yfd/platform/common/FilterFieldMeta.java b/backend/src/main/java/com/yfd/platform/common/FilterFieldMeta.java
new file mode 100644
index 0000000..505e39e
--- /dev/null
+++ b/backend/src/main/java/com/yfd/platform/common/FilterFieldMeta.java
@@ -0,0 +1,44 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+package com.yfd.platform.common;
+
+import java.util.List;
+import java.util.Map;
+
+public class FilterFieldMeta {
+ private DataSourceRequest.FilterDescriptor filterDescriptor;
+ private Map fieldMeta;
+ private List orderByList;
+
+ public FilterFieldMeta(DataSourceRequest.FilterDescriptor filterDescriptor, Map fieldMeta) {
+ this.filterDescriptor = filterDescriptor;
+ this.fieldMeta = fieldMeta;
+ }
+
+ public DataSourceRequest.FilterDescriptor getFilterDescriptor() {
+ return this.filterDescriptor;
+ }
+
+ public void setFilterDescriptor(DataSourceRequest.FilterDescriptor filterDescriptor) {
+ this.filterDescriptor = filterDescriptor;
+ }
+
+ public Map getFieldMeta() {
+ return this.fieldMeta;
+ }
+
+ public void setFieldMeta(Map fieldMeta) {
+ this.fieldMeta = fieldMeta;
+ }
+
+ public List getOrderByList() {
+ return this.orderByList;
+ }
+
+ public void setOrderByList(List orderByList) {
+ this.orderByList = orderByList;
+ }
+}
diff --git a/backend/src/main/java/com/yfd/platform/common/Group.java b/backend/src/main/java/com/yfd/platform/common/Group.java
new file mode 100644
index 0000000..9e0a9e3
--- /dev/null
+++ b/backend/src/main/java/com/yfd/platform/common/Group.java
@@ -0,0 +1,200 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+package com.yfd.platform.common;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+public class Group {
+ private Object key;
+ private String keyName;
+ private Map keyExt;
+ @JsonIgnore
+ private Object field;
+ private List items;
+ private int count = 0;
+ private Object[] summary;
+ private Map aggregates;
+
+ public Group() {
+ }
+
+ public Object getKey() {
+ return this.key;
+ }
+
+ public String getKeyName() {
+ return this.keyName;
+ }
+
+ public Map getKeyExt() {
+ return this.keyExt;
+ }
+
+ public Object getField() {
+ return this.field;
+ }
+
+ public List getItems() {
+ return this.items;
+ }
+
+ public int getCount() {
+ return this.count;
+ }
+
+ public Object[] getSummary() {
+ return this.summary;
+ }
+
+ public Map getAggregates() {
+ return this.aggregates;
+ }
+
+ public void setKey(final Object key) {
+ this.key = key;
+ }
+
+ public void setKeyName(final String keyName) {
+ this.keyName = keyName;
+ }
+
+ public void setKeyExt(final Map keyExt) {
+ this.keyExt = keyExt;
+ }
+
+ @JsonIgnore
+ public void setField(final Object field) {
+ this.field = field;
+ }
+
+ public void setItems(final List items) {
+ this.items = items;
+ }
+
+ public void setCount(final int count) {
+ this.count = count;
+ }
+
+ public void setSummary(final Object[] summary) {
+ this.summary = summary;
+ }
+
+ public void setAggregates(final Map aggregates) {
+ this.aggregates = aggregates;
+ }
+
+ public boolean equals(final Object o) {
+ if (o == this) {
+ return true;
+ } else if (!(o instanceof Group)) {
+ return false;
+ } else {
+ Group other = (Group)o;
+ if (!other.canEqual(this)) {
+ return false;
+ } else if (this.getCount() != other.getCount()) {
+ return false;
+ } else {
+ Object this$key = this.getKey();
+ Object other$key = other.getKey();
+ if (this$key == null) {
+ if (other$key != null) {
+ return false;
+ }
+ } else if (!this$key.equals(other$key)) {
+ return false;
+ }
+
+ Object this$keyName = this.getKeyName();
+ Object other$keyName = other.getKeyName();
+ if (this$keyName == null) {
+ if (other$keyName != null) {
+ return false;
+ }
+ } else if (!this$keyName.equals(other$keyName)) {
+ return false;
+ }
+
+ Object this$keyExt = this.getKeyExt();
+ Object other$keyExt = other.getKeyExt();
+ if (this$keyExt == null) {
+ if (other$keyExt != null) {
+ return false;
+ }
+ } else if (!this$keyExt.equals(other$keyExt)) {
+ return false;
+ }
+
+ Object this$field = this.getField();
+ Object other$field = other.getField();
+ if (this$field == null) {
+ if (other$field != null) {
+ return false;
+ }
+ } else if (!this$field.equals(other$field)) {
+ return false;
+ }
+
+ Object this$items = this.getItems();
+ Object other$items = other.getItems();
+ if (this$items == null) {
+ if (other$items != null) {
+ return false;
+ }
+ } else if (!this$items.equals(other$items)) {
+ return false;
+ }
+
+ if (!Arrays.deepEquals(this.getSummary(), other.getSummary())) {
+ return false;
+ } else {
+ Object this$aggregates = this.getAggregates();
+ Object other$aggregates = other.getAggregates();
+ if (this$aggregates == null) {
+ if (other$aggregates != null) {
+ return false;
+ }
+ } else if (!this$aggregates.equals(other$aggregates)) {
+ return false;
+ }
+
+ return true;
+ }
+ }
+ }
+ }
+
+ protected boolean canEqual(final Object other) {
+ return other instanceof Group;
+ }
+
+ public int hashCode() {
+ int PRIME = 59;
+ int result = 1;
+ result = result * 59 + this.getCount();
+ Object $key = this.getKey();
+ result = result * 59 + ($key == null ? 43 : $key.hashCode());
+ Object $keyName = this.getKeyName();
+ result = result * 59 + ($keyName == null ? 43 : $keyName.hashCode());
+ Object $keyExt = this.getKeyExt();
+ result = result * 59 + ($keyExt == null ? 43 : $keyExt.hashCode());
+ Object $field = this.getField();
+ result = result * 59 + ($field == null ? 43 : $field.hashCode());
+ Object $items = this.getItems();
+ result = result * 59 + ($items == null ? 43 : $items.hashCode());
+ result = result * 59 + Arrays.deepHashCode(this.getSummary());
+ Object $aggregates = this.getAggregates();
+ result = result * 59 + ($aggregates == null ? 43 : $aggregates.hashCode());
+ return result;
+ }
+
+ public String toString() {
+ return "Group(key=" + this.getKey() + ", keyName=" + this.getKeyName() + ", keyExt=" + this.getKeyExt() + ", field=" + this.getField() + ", items=" + this.getItems() + ", count=" + this.getCount() + ", summary=" + Arrays.deepToString(this.getSummary()) + ", aggregates=" + this.getAggregates() + ")";
+ }
+}
diff --git a/backend/src/main/java/com/yfd/platform/common/GroupHelper.java b/backend/src/main/java/com/yfd/platform/common/GroupHelper.java
new file mode 100644
index 0000000..7931e4a
--- /dev/null
+++ b/backend/src/main/java/com/yfd/platform/common/GroupHelper.java
@@ -0,0 +1,189 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+package com.yfd.platform.common;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.NumberUtil;
+import cn.hutool.core.util.StrUtil;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class GroupHelper {
+ public GroupHelper() {
+ }
+
+ public List group(List