From 62c7eb885996c0758b66248e8430730c1c4be5ab Mon Sep 17 00:00:00 2001 From: jacky6024 Date: Fri, 22 Dec 2017 16:39:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9B=E5=8D=95=E5=85=83=E6=A0=BC?= =?UTF-8?q?=E8=BF=AD=E4=BB=A3=E8=BF=87=E7=A8=8B=E4=B8=AD=E7=88=B6=E6=A0=BC?= =?UTF-8?q?=E7=9A=84=E5=8A=A8=E6=80=81=E8=AE=BE=E7=BD=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ureport/build/cell/down/CellDownDuplicateUnit.java | 10 +++++----- .../ureport/build/cell/down/CellDownDuplicator.java | 4 +++- .../build/cell/right/CellRightDuplicateUnit.java | 10 +++++----- .../ureport/build/cell/right/CellRightDuplicator.java | 4 +++- .../expression/model/condition/BaseCondition.java | 8 +++++++- 5 files changed, 23 insertions(+), 13 deletions(-) diff --git a/ureport2-core/src/main/java/com/bstek/ureport/build/cell/down/CellDownDuplicateUnit.java b/ureport2-core/src/main/java/com/bstek/ureport/build/cell/down/CellDownDuplicateUnit.java index 768a51c..381b454 100644 --- a/ureport2-core/src/main/java/com/bstek/ureport/build/cell/down/CellDownDuplicateUnit.java +++ b/ureport2-core/src/main/java/com/bstek/ureport/build/cell/down/CellDownDuplicateUnit.java @@ -41,8 +41,8 @@ public class CellDownDuplicateUnit { public void duplicate(Cell cell,int index){ downDuplicate.setIndex(index); for(CellDownDuplicator childDuplicator:downDuplocatorWrapper.getMainCellChildren()){ - Cell newCell=childDuplicator.duplicateChildrenCell(downDuplicate, cell, mainCell,false); - processChildrenCells(newCell,childDuplicator.getCell(),downDuplicate,childDuplicator.isNonChild()); + Cell newCell=childDuplicator.duplicateChildrenCell(downDuplicate, cell, mainCell,mainCell,cell,false); + processChildrenCells(newCell,childDuplicator.getCell(),cell,downDuplicate,childDuplicator.isNonChild()); childDuplicator.setNonChild(false); } for(CellDownDuplicator cellDownDuplicator:downDuplocatorWrapper.getCellDuplicators()){ @@ -60,14 +60,14 @@ public class CellDownDuplicateUnit { downDuplicate.complete(); } - private void processChildrenCells(Cell cell,Cell originalCell,DownDuplicate downDuplicate,boolean parentNonChild){ + private void processChildrenCells(Cell cell,Cell originalCell,Cell newMainCell,DownDuplicate downDuplicate,boolean parentNonChild){ List childCellDownDuplicators=downDuplocatorWrapper.fetchChildrenDuplicator(originalCell); if(childCellDownDuplicators==null){ return; } for(CellDownDuplicator duplicator:childCellDownDuplicators){ - Cell newCell=duplicator.duplicateChildrenCell(downDuplicate, cell, originalCell,parentNonChild); - processChildrenCells(newCell,duplicator.getCell(),downDuplicate,duplicator.isNonChild()); + Cell newCell=duplicator.duplicateChildrenCell(downDuplicate, cell, originalCell,mainCell,newMainCell,parentNonChild); + processChildrenCells(newCell,duplicator.getCell(),newMainCell,downDuplicate,duplicator.isNonChild()); duplicator.setNonChild(false); } } diff --git a/ureport2-core/src/main/java/com/bstek/ureport/build/cell/down/CellDownDuplicator.java b/ureport2-core/src/main/java/com/bstek/ureport/build/cell/down/CellDownDuplicator.java index b483df5..8482e4b 100644 --- a/ureport2-core/src/main/java/com/bstek/ureport/build/cell/down/CellDownDuplicator.java +++ b/ureport2-core/src/main/java/com/bstek/ureport/build/cell/down/CellDownDuplicator.java @@ -67,7 +67,7 @@ public class CellDownDuplicator { return null; } - public Cell duplicateChildrenCell(DownDuplicate downDuplicate,Cell leftParent,Cell originalCell,boolean parentNonChild){ + public Cell duplicateChildrenCell(DownDuplicate downDuplicate,Cell leftParent,Cell originalCell,Cell mainCell,Cell newMainCell,boolean parentNonChild){ Cell newCell=cell.newCell(); Row newRow=downDuplicate.newRow(newCell.getRow(),cellRowNumber); newRow.getCells().add(newCell); @@ -83,6 +83,8 @@ public class CellDownDuplicator { } if(newCell.getTopParentCell()==originalCell){ newCell.setTopParentCell(leftParent); + }else if(newCell.getTopParentCell()==mainCell){ + newCell.setTopParentCell(newMainCell); } Cell leftParentCell=newCell.getLeftParentCell(); if(leftParentCell!=null){ diff --git a/ureport2-core/src/main/java/com/bstek/ureport/build/cell/right/CellRightDuplicateUnit.java b/ureport2-core/src/main/java/com/bstek/ureport/build/cell/right/CellRightDuplicateUnit.java index fd41e78..9777e67 100644 --- a/ureport2-core/src/main/java/com/bstek/ureport/build/cell/right/CellRightDuplicateUnit.java +++ b/ureport2-core/src/main/java/com/bstek/ureport/build/cell/right/CellRightDuplicateUnit.java @@ -41,8 +41,8 @@ public class CellRightDuplicateUnit { public void duplicate(Cell cell,int index){ rightDuplicate.setIndex(index); for(CellRightDuplicator childDuplicator:rightDuplocatorWrapper.getMainCellChildren()){ - Cell newCell=childDuplicator.duplicateChildrenCell(rightDuplicate,cell,mainCell,false); - processChildrenCells(newCell,childDuplicator.getCell(),rightDuplicate,context,childDuplicator.isNonChild()); + Cell newCell=childDuplicator.duplicateChildrenCell(rightDuplicate,cell,mainCell,mainCell,cell,false); + processChildrenCells(newCell,childDuplicator.getCell(),cell,rightDuplicate,context,childDuplicator.isNonChild()); childDuplicator.setNonChild(false); } for(CellRightDuplicator cellRightDuplicator:rightDuplocatorWrapper.getCellDuplicators()){ @@ -60,14 +60,14 @@ public class CellRightDuplicateUnit { rightDuplicate.complete(); } - private void processChildrenCells(Cell cell,Cell originalCell,RightDuplicate rightDuplicate,Context context,boolean parentNonChild){ + private void processChildrenCells(Cell cell,Cell originalCell,Cell newMainCell,RightDuplicate rightDuplicate,Context context,boolean parentNonChild){ List childCellRightDuplicators=rightDuplocatorWrapper.fetchChildrenDuplicator(originalCell); if(childCellRightDuplicators==null){ return; } for(CellRightDuplicator duplicator:childCellRightDuplicators){ - Cell newCell=duplicator.duplicateChildrenCell(rightDuplicate,cell,originalCell,parentNonChild); - processChildrenCells(newCell,duplicator.getCell(),rightDuplicate,context,duplicator.isNonChild()); + Cell newCell=duplicator.duplicateChildrenCell(rightDuplicate,cell,originalCell,mainCell,newMainCell,parentNonChild); + processChildrenCells(newCell,duplicator.getCell(),newMainCell,rightDuplicate,context,duplicator.isNonChild()); duplicator.setNonChild(false); } } diff --git a/ureport2-core/src/main/java/com/bstek/ureport/build/cell/right/CellRightDuplicator.java b/ureport2-core/src/main/java/com/bstek/ureport/build/cell/right/CellRightDuplicator.java index 42011f1..3ce20ac 100644 --- a/ureport2-core/src/main/java/com/bstek/ureport/build/cell/right/CellRightDuplicator.java +++ b/ureport2-core/src/main/java/com/bstek/ureport/build/cell/right/CellRightDuplicator.java @@ -87,7 +87,7 @@ public class CellRightDuplicator { context.addBlankCell(newBlankCell); } - public Cell duplicateChildrenCell(RightDuplicate rightDuplicate,Cell topParent,Cell originalCell,boolean parentNonChild){ + public Cell duplicateChildrenCell(RightDuplicate rightDuplicate,Cell topParent,Cell originalCell,Cell mainCell,Cell newMainCell,boolean parentNonChild){ Cell newCell=cell.newCell(); Column newCol=rightDuplicate.newColumn(newCell.getColumn(),cellColNumber); newCol.getCells().add(newCell); @@ -103,6 +103,8 @@ public class CellRightDuplicator { } if(newCell.getLeftParentCell()==originalCell){ newCell.setLeftParentCell(topParent); + }else if(newCell.getLeftParentCell()==mainCell){ + newCell.setLeftParentCell(newMainCell); } Cell leftParentCell=newCell.getLeftParentCell(); if(leftParentCell!=null){ diff --git a/ureport2-core/src/main/java/com/bstek/ureport/expression/model/condition/BaseCondition.java b/ureport2-core/src/main/java/com/bstek/ureport/expression/model/condition/BaseCondition.java index c40aaaf..c63bc77 100644 --- a/ureport2-core/src/main/java/com/bstek/ureport/expression/model/condition/BaseCondition.java +++ b/ureport2-core/src/main/java/com/bstek/ureport/expression/model/condition/BaseCondition.java @@ -81,7 +81,13 @@ public abstract class BaseCondition implements Condition { List bindDataList=bindData.getData(); List list=new ArrayList(); for(BindData bd:bindDataList){ - list.add(bd.getValue()); + Object v=bd.getValue(); + list.add(v); + } + if(list.size()==1){ + return list.get(0); + }else if(list.size()==0){ + return null; } return list; }else if(data instanceof NoneExpressionData){