diff --git a/nop-report/nop-report-core/src/main/java/io/nop/report/core/dataset/DynamicReportDataSet.java b/nop-report/nop-report-core/src/main/java/io/nop/report/core/dataset/DynamicReportDataSet.java index 5ecfdb486c6f6232ce1830b6ec32c0b73fc859cf..a4db465fa9e8359fcca8138137778b78274e7b34 100644 --- a/nop-report/nop-report-core/src/main/java/io/nop/report/core/dataset/DynamicReportDataSet.java +++ b/nop-report/nop-report-core/src/main/java/io/nop/report/core/dataset/DynamicReportDataSet.java @@ -127,8 +127,24 @@ public class DynamicReportDataSet extends ReportDataSet { return null; ReportDataSet ds = parent.getDs(); - if (ds != null && (dsName == null || ds.getDsName().equals(dsName))) - return ds.getItems(); + // if (ds != null && (dsName == null || ds.getDsName().equals(dsName))) + // return ds.getItems(); + + if(rowDs!=null){ + if(dsName==null || rowDs.getDsName().equals(dsName)){ + return rowDs.getItems(); + }else{ + //行列数据集不一样 + if(rowDs instanceof KeyedReportDataSet){ + KeyedReportDataSet rDs = (KeyedReportDataSet) rowDs; + Object key = rDs.getKey(); + String field = rDs.getField(); + ExpandedCell colParent = cell.getColParent(); + ReportDataSet colDs = colParent.getDs(); + return colDs.where(field,key).getItems(); + } + } + } return getRowParentItems(parent, dsName); } @@ -138,8 +154,24 @@ public class DynamicReportDataSet extends ReportDataSet { return null; ReportDataSet ds = parent.getDs(); - if (ds != null && (dsName == null || ds.getDsName().equals(dsName))) - return ds.getItems(); + // if (ds != null && (dsName == null || ds.getDsName().equals(dsName))) + // return ds.getItems(); + + if(colDs!=null){ + if(dsName==null || colDs.getDsName().equals(dsName)){ + return colDs.getItems(); + }else{ + //行列数据集不一样 + if(colDs instanceof KeyedReportDataSet){ + KeyedReportDataSet cDs = (KeyedReportDataSet) colDs; + Object key = cDs.getKey(); + String field = cDs.getField(); + ExpandedCell rowParent = cell.getRowParent(); + ReportDataSet rowDs = rowParent.getDs(); + return rowDs.where(field,key).getItems(); + } + } + } return getColParentItems(parent, dsName); } } \ No newline at end of file diff --git a/nop-report/nop-report-core/src/main/java/io/nop/report/core/dataset/KeyedReportDataSet.java b/nop-report/nop-report-core/src/main/java/io/nop/report/core/dataset/KeyedReportDataSet.java index 55bd4107c8a41774bb70b6f3b17d71195b04ad92..7c1e4de7b5f08b34737919d93ed6625bc2451783 100644 --- a/nop-report/nop-report-core/src/main/java/io/nop/report/core/dataset/KeyedReportDataSet.java +++ b/nop-report/nop-report-core/src/main/java/io/nop/report/core/dataset/KeyedReportDataSet.java @@ -11,10 +11,12 @@ import java.util.List; public class KeyedReportDataSet extends ReportDataSet { private final Object key; + private final String field; - public KeyedReportDataSet(String dsName, List items, Object key) { + public KeyedReportDataSet(String dsName, List items, Object key,String field) { super(dsName, items); this.key = key; + this.field = field; } public String toString() { @@ -25,4 +27,8 @@ public class KeyedReportDataSet extends ReportDataSet { return key; } + public String getField() { + return field; + } + } \ No newline at end of file diff --git a/nop-report/nop-report-core/src/main/java/io/nop/report/core/dataset/ReportDataSet.java b/nop-report/nop-report-core/src/main/java/io/nop/report/core/dataset/ReportDataSet.java index 2992bac447fe5f3ab92ca0e8830208b6fd4b7781..cbcaa7ff3b1bba531037d53e28a90cde60dcf46a 100644 --- a/nop-report/nop-report-core/src/main/java/io/nop/report/core/dataset/ReportDataSet.java +++ b/nop-report/nop-report-core/src/main/java/io/nop/report/core/dataset/ReportDataSet.java @@ -95,7 +95,7 @@ public class ReportDataSet implements Iterable { List ret = new ArrayList<>(map.size()); for (Map.Entry> entry : map.entrySet()) { - KeyedReportDataSet result = new KeyedReportDataSet(dsName, entry.getValue(), entry.getKey()); + KeyedReportDataSet result = new KeyedReportDataSet(dsName, entry.getValue(), entry.getKey(),field); ret.add(result); } return ret;