|
@@ -21,6 +21,7 @@ import java.util.stream.IntStream;
|
|
|
@Data
|
|
|
public abstract class EvaSummary<T> {
|
|
|
protected Integer rowSize=20;
|
|
|
+ /**动态行元素*/
|
|
|
protected final List<FormData> fds = new ArrayList<>();
|
|
|
protected final List<T> datas = new ArrayList<>();
|
|
|
protected Map<String, BiFunction<List<T>,Integer,List<Object>>> fm = new HashMap<>();
|
|
@@ -51,20 +52,25 @@ public abstract class EvaSummary<T> {
|
|
|
if(wtcList.size()>0) {
|
|
|
WbsTreeContract w = wtcList.get(0);
|
|
|
this.sql="update "+w.getInitTableName()+" set "+this.fds.stream().map(e->e.getKey()+"=?").collect(Collectors.joining(","))+" where p_key_id =?";
|
|
|
- Map<Integer, List<T>> pages = IntStream.range(0, datas.size()).boxed()
|
|
|
+ LinkedHashMap<Integer, List<T>> pages = IntStream.range(0, datas.size()).boxed()
|
|
|
.collect(Collectors.groupingBy(
|
|
|
i -> i / rowSize,
|
|
|
LinkedHashMap::new,
|
|
|
Collectors.mapping(datas::get, Collectors.toList())
|
|
|
));
|
|
|
|
|
|
+ int index=1;
|
|
|
for (Map.Entry<Integer, List<T>> entry : pages.entrySet()) {
|
|
|
+ /*每一页就是一条插入记录*/
|
|
|
int k = entry.getKey();
|
|
|
if (wtcList.size() <= k) {
|
|
|
break;
|
|
|
}
|
|
|
List<T> v = entry.getValue();
|
|
|
- List<Object> l=this.fds.stream().map(fd->putEd(k,v,fd)).collect(Collectors.toList());
|
|
|
+ /*是否是最后一页,fb02最后一页汇总用到*/
|
|
|
+ boolean isLast=index==pages.size();
|
|
|
+ index++;
|
|
|
+ List<Object> l=this.fds.stream().map(fd->putEd(k,v,fd,datas,isLast)).collect(Collectors.toList());
|
|
|
l.add(wtcList.get(k).getPKeyId());
|
|
|
params.add(l.toArray());
|
|
|
}
|
|
@@ -74,11 +80,21 @@ public abstract class EvaSummary<T> {
|
|
|
}
|
|
|
|
|
|
/**把数据放到对应元素*/
|
|
|
- private String putEd(int pn, List<T> items, FormData fd){
|
|
|
+ private String putEd(int pn, List<T> items, FormData fd,List<T>datas,boolean isLastPage){
|
|
|
BiFunction<List<T>,Integer,List<Object>> fc = this.fm.get(fd.getCode());
|
|
|
if(fc!=null) {
|
|
|
- List<Object> data = fc.apply(items,pn);
|
|
|
+ List<Object> data ;
|
|
|
List<ElementData> list = new ArrayList<>();
|
|
|
+ if("m_20231027094746_1717719707244560384:key_19".equals(fd.getCode())){
|
|
|
+ if(isLastPage){
|
|
|
+ /*分部评定02表,最后一页需要汇总计算,其它也插入空白*/
|
|
|
+ data = fc.apply(datas,pn);
|
|
|
+ }else{
|
|
|
+ data=Collections.singletonList("");
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ data = fc.apply(items,pn);
|
|
|
+ }
|
|
|
for (int i = 0; i < data.size(); i++) {
|
|
|
Coords c = fd.getCoordsList().get(i);
|
|
|
list.add(new ElementData(pn, 0, data.get(i), c.getX(), c.getY()));
|