|
|
@@ -204,20 +204,43 @@ public class SubTable {
|
|
|
String name = itemName.get(0);
|
|
|
if(StringUtils.isNotEmpty(name)) {
|
|
|
int head = 0;
|
|
|
+ //计算 最后一行之前的数据
|
|
|
for (int i = 1; i < itemName.size(); i++) {
|
|
|
String x = itemName.get(i);
|
|
|
/*如果非空且与当前的不一样则视为新项目*/
|
|
|
- if (StringUtils.isNotEmpty(x) && !x.equals(name) || (i == itemName.size() - 1)) {
|
|
|
- /* String des =designs.subList(head, i).stream().filter(StringUtils::isNotEmpty).distinct().collect(Collectors.joining("/"));*/
|
|
|
- Item item = new Item(name);
|
|
|
+ if (StringUtils.isNotEmpty(x) && !x.equals(name) || (i == itemName.size() - 1)) { //主要计算项 与 数据的关系
|
|
|
+ if(!original.containsKey(name)){
|
|
|
+ Item item = new Item(name);
|
|
|
+ if(designs!=null&&designs.size()>0) {
|
|
|
+ item.setDesign(designs.subList(head, i).stream().filter(StringUtils::isNotEmpty).distinct().collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ item.setData(new ArrayList<>(data.subList(head*15, i*ROW_SIZE)));
|
|
|
+ original.put(name,item);
|
|
|
+ head = i;
|
|
|
+ name = x;
|
|
|
+ }else{
|
|
|
+ Item item = original.get(name);
|
|
|
+ item.getData().addAll(new ArrayList<>(data.subList(head*15, i*ROW_SIZE)));
|
|
|
+ original.put(name,item);
|
|
|
+ head = i;
|
|
|
+ name = x;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 添加最后一行的数据
|
|
|
+ String keyName = itemName.get(itemName.size()-1);
|
|
|
+ if(StringUtils.isNotEmpty(keyName)) {
|
|
|
+ if(!original.containsKey(keyName)){
|
|
|
+ Item item = new Item(keyName);
|
|
|
if(designs!=null&&designs.size()>0) {
|
|
|
- item.setDesign(designs.subList(head, i).stream().filter(StringUtils::isNotEmpty).distinct().collect(Collectors.toList()));
|
|
|
+ item.setDesign(designs.subList(itemName.size()-1, itemName.size()).stream().filter(StringUtils::isNotEmpty).distinct().collect(Collectors.toList()));
|
|
|
}
|
|
|
- /* original.put(name + StringPool.AT + des, new ArrayList<>(data.subList(head*15, i*ROW_SIZE)));*/
|
|
|
- item.setData(new ArrayList<>(data.subList(head*15, i*ROW_SIZE)));
|
|
|
- original.put(name,item);
|
|
|
- head = i;
|
|
|
- name = x;
|
|
|
+ item.setData(new ArrayList<>(data.subList((itemName.size()-1)*15, itemName.size()*ROW_SIZE)));
|
|
|
+ original.put(keyName,item);
|
|
|
+ }else{
|
|
|
+ Item item = original.get(keyName);
|
|
|
+ item.getData().addAll(new ArrayList<>(data.subList((itemName.size()-1)*15, itemName.size()*ROW_SIZE)));
|
|
|
+ original.put(keyName,item);
|
|
|
}
|
|
|
}
|
|
|
merge();
|