Browse Source

Merge remote-tracking branch 'origin/master'

liuyc 1 year ago
parent
commit
d7332c70d9

+ 12 - 8
blade-service-api/blade-business-api/src/main/java/org/springblade/business/utils/NumberUtil.java

@@ -46,7 +46,7 @@ public class NumberUtil {
     public static Short parseShortObj(String pValue) {
         if (pValue == null) return null;
         try {
-            return new Short(Short.parseShort(pValue));
+            return Short.parseShort(pValue);
         } catch (Exception ex) {
             log.error(ex);
             return null;
@@ -67,7 +67,7 @@ public class NumberUtil {
     public static Integer parseInteger(String pValue) {
         if (pValue == null) return null;
         try {
-            return new Integer(Integer.parseInt(pValue));
+            return Integer.parseInt(pValue);
         } catch (Exception ex) {
             log.error(ex);
             return null;
@@ -88,7 +88,7 @@ public class NumberUtil {
     public static Long parseLongObj(String pValue) {
         if (pValue == null) return null;
         try {
-            return new Long(Long.parseLong(pValue));
+            return Long.parseLong(pValue);
         } catch (Exception ex) {
             log.error(ex);
             return null;
@@ -236,7 +236,7 @@ public class NumberUtil {
     // 四舍五入.
     public static Double round(Double d, int precision) {
         if (d != null) {
-            return new Double(round(d.doubleValue(), precision));
+            return round(d.doubleValue(), precision);
         } else {
             return null;
         }
@@ -244,7 +244,7 @@ public class NumberUtil {
 
     public static int intValue(Integer integer) {
         if (integer != null) {
-            return integer.intValue();
+            return integer;
         } else {
             return 0;
         }
@@ -252,7 +252,7 @@ public class NumberUtil {
 
     public static double doubleValue(Double d) {
         if (d != null) {
-            return d.doubleValue();
+            return d;
         } else {
             return 0;
         }
@@ -444,9 +444,9 @@ public class NumberUtil {
         String strRMB = "" + rmb;
         DecimalFormat nf = new DecimalFormat("#.#");
         nf.setMaximumFractionDigits(2);
-        strRMB = nf.format(rmb).toString();
+        strRMB = nf.format(rmb);
         strRMB = numberToZH(strRMB, true);
-        if (strRMB.indexOf("点") >= 0) {
+        if (strRMB.contains("点")) {
             strRMB = strRMB + "零";
             strRMB = strRMB.replaceAll("点", "圆");
             String s1 = strRMB.substring(0, strRMB.indexOf("圆") + 1);
@@ -458,4 +458,8 @@ public class NumberUtil {
         return "人民币(大写):" + strRMB;
     }
 
+    public static void main(String[] args) {
+        System.out.println(numberToRMB(1254.32));
+    }
+
 }

+ 1 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/ElementBlock.java → blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ElementBlock.java

@@ -1,7 +1,6 @@
-package org.springblade.manager.formula;
+package org.springblade.manager.vo;
 
 import com.alibaba.fastjson.annotation.JSONField;
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.Data;
 
 import java.util.List;

+ 100 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/EvaSummary.java

@@ -0,0 +1,100 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringPool;
+import org.springblade.manager.dto.Coords;
+import org.springblade.manager.dto.ElementData;
+import org.springblade.manager.dto.FormData;
+import org.springblade.manager.entity.WbsTreeContract;
+
+import java.util.*;
+import java.util.function.BiFunction;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
+/**
+ * @author yangyj
+ * @Date 2023/12/5 15:56
+ * @description TODO
+ */
+@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<>();
+    protected  final List<String> sqlList = new ArrayList<>();
+
+    public abstract Integer getPageNum();
+
+    public boolean initFdCoords(Map<String,String> tableKeysCoordsMap){
+        boolean f=true;
+        for(FormData fd:this.fds){
+            String coords =tableKeysCoordsMap.get(fd.getKey());
+            if(Func.isNotBlank(coords)){
+                fd.flushCoords(coords);
+            }else{
+                /*只要有一个元素的定位信息找不就算失败*/
+                f=false;
+            }
+        }
+        if(f) {
+            this.rowSize = this.fds.get(0).getCoordsList().size();
+        }
+        return f;
+    }
+
+    public  boolean flush( List<WbsTreeContract> wtcList,List<T> datas){
+        if(wtcList.size()>0) {
+            Map<Integer, List<T>> pages = IntStream.range(0, datas.size()).boxed()
+                    .collect(Collectors.groupingBy(
+                            i -> i / rowSize,
+                            LinkedHashMap::new,
+                            Collectors.mapping(datas::get, Collectors.toList())
+                    ));
+
+            for (Map.Entry<Integer, List<T>> entry : pages.entrySet()) {
+                int k = entry.getKey();
+                if (wtcList.size() <= k) {
+                    break;
+                }
+                List<T> v = entry.getValue();
+                WbsTreeContract w = wtcList.get(k);
+                StringBuilder  sb =new StringBuilder();
+                this.fds.forEach(fd -> {
+                    sb.append(putEd(k,v,fd,w)).append(StringPool.COMMA);
+                });
+                String template="update "+w.getInitTableName()+" set "+sb.deleteCharAt(sb.length()-1)+" where id ="+w.getPKeyId();
+                sqlList.add(template);
+            }
+
+            return true;
+        }
+        return false;
+    }
+
+    /**把数据放到对应元素*/
+    private String putEd(int pn, List<T> items, FormData fd, WbsTreeContract w){
+        BiFunction<List<T>,Integer,List<Object>> fc = this.fm.get(fd.getCode());
+        if(fc!=null) {
+            List<Object> data = fc.apply(items,pn);
+            List<ElementData> list = new ArrayList<>();
+            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()));
+            }
+            fd.getValues().addAll(list);
+            return fd.getKey()+StringPool.EQUALS+StringPool.SINGLE_QUOTE+recovery(list)+StringPool.SINGLE_QUOTE;
+        }
+        return StringPool.EMPTY;
+    }
+
+    public String recovery(List<ElementData> dataList) {
+        if (Func.isNotEmpty(dataList)) {
+            return dataList.stream().filter(e -> !e.isEmpty()).map(e -> e.stringValue() + "_^_" + e.getY() + "_" + e.getX()).collect(Collectors.joining("☆"));
+        }
+        return StringPool.EMPTY;
+    }
+
+}

+ 52 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/FB01.java

@@ -0,0 +1,52 @@
+package org.springblade.manager.vo;
+
+import org.springblade.manager.dto.FormData;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
+/**
+ * @author yangyj
+ * @Date 2023/12/5 17:16
+ * @description 分部工程质量检验评定表1
+ */
+public class FB01 extends EvaSummary<Item01>{
+
+    private FormData number;
+    private FormData name;
+    private FormData level;
+    private FormData remark;
+    @Override
+    public Integer getPageNum() {
+        if(this.name!=null){
+            return  (this.getDatas().size()/this.name.getCoordsList().size())+1;
+        }
+        return null;
+    }
+    public FB01(List<FormData> processFds) {
+        for(FormData fd:processFds){
+            if(fd.getEName().contains("分项工程编号")){
+                this.number=fd;
+                this.fm.put(fd.getCode(),(List<Item01> l,Integer pn)->l.stream().map(Item01::getNumber).collect(Collectors.toList()));
+            }else if(fd.getEName().contains("分项工程名称")){
+                this.name=fd;
+                this.fm.put(fd.getCode(),(List<Item01> l,Integer pn)->l.stream().map(Item01::getName).collect(Collectors.toList()));
+            }else if(fd.getEName().contains("质量等级")){
+                this.level=fd;
+                this.fm.put(fd.getCode(),(List<Item01> l,Integer pn)->l.stream().map(Item01::getLevel).collect(Collectors.toList()));
+            }else if(fd.getEName().trim().equals("备注")){
+                this.remark=fd;
+                this.fm.put(fd.getCode(),(List<Item01> l,Integer pn)->l.stream().map(Item01::getRemark).collect(Collectors.toList()));
+            }
+            if(this.number!=null&&this.name!=null&&this.level!=null&&this.remark!=null){
+                /*匹配完成*/
+                this.fds.add(this.number);
+                this.fds.add(this.name);
+                this.fds.add(this.level);
+                this.fds.add(this.remark);
+                break;
+            }
+        }
+    }
+}

+ 31 - 112
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/FB02.java

@@ -1,15 +1,11 @@
 package org.springblade.manager.vo;
 
+import com.alibaba.fastjson.JSON;
 import lombok.Data;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringPool;
-import org.springblade.manager.dto.Coords;
-import org.springblade.manager.dto.ElementData;
+import lombok.EqualsAndHashCode;
 import org.springblade.manager.dto.FormData;
-import org.springblade.manager.entity.WbsTreeContract;
-
+import org.springblade.manager.entity.FormulaDataBlock;
 import java.util.*;
-import java.util.function.BiFunction;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
@@ -18,47 +14,15 @@ import java.util.stream.IntStream;
  * @Date 2023/11/1 17:24
  * @description 评定表FB02
  */
+@EqualsAndHashCode(callSuper = true)
 @Data
-public class FB02 {
+public class FB02 extends EvaSummary<Item02>{
     private FormData subItem;
     private FormData sn;
     private FormData name;
     private FormData passRate;
     private FormData weight;
-    private Integer  rowSize=20;
-    private List<FormData> fds = new ArrayList<>();
-    private List<Item> datas = new ArrayList<>();
-    private Map<String, BiFunction<List<Item>,Integer,List<Object>>> fm = new HashMap<>();
-    private List<String> sqlList = new ArrayList<>();
-
-
-    @Data
-    public static class Item{
-        private String subItem;
-        private String name;
-        private Double passRate=100d;
-        private Integer weight=1;
-        public Item(String subItem, String name, Double passRate, Integer weight) {
-            this.subItem = subItem;
-            this.name = name;
-            this.passRate = passRate;
-            this.weight = weight;
-        }
-        public Item() {
-        }
-
-        public String getName() {
-            return name;
-        }
-
-        public void setName(String name) {
-            if(name!=null&&name.contains("△")){
-                this.weight=2;
-            }
-            this.name = name;
-        }
-    }
-
+  @Override
     public Integer getPageNum(){
         if(this.name!=null){
           return  (this.getDatas().size()/this.name.getCoordsList().size())+1;
@@ -66,23 +30,24 @@ public class FB02 {
         return null;
     }
 
+
     public FB02(List<FormData> processFds) {
          for(FormData fd:processFds){
               if(fd.getEName().contains("分项工程名称")){
                   this.subItem=fd;
-                  this.fm.put(fd.getCode(),(List<Item> l,Integer pn)->l.stream().map(Item::getSubItem).collect(Collectors.toList()));
+                  this.fm.put(fd.getCode(),(List<Item02> l,Integer pn)->l.stream().map(Item02::getSubItem).collect(Collectors.toList()));
               }else if(fd.getEName().contains("序号")){
                   this.sn=fd;
-                  this.fm.put(fd.getCode(),(List<Item> l,Integer pn)->IntStream.range(0, l.size()).boxed().map(i->i+pn*l.size()).collect(Collectors.toList()));
+                  this.fm.put(fd.getCode(),(List<Item02> l,Integer pn)->IntStream.range(0, l.size()).boxed().map(i->i+pn*l.size()).collect(Collectors.toList()));
               }else if(fd.getEName().contains("实测项目")){
                   this.name=fd;
-                  this.fm.put(fd.getCode(),(List<Item> l,Integer pn)->l.stream().map(Item::getName).collect(Collectors.toList()));
+                  this.fm.put(fd.getCode(),(List<Item02> l,Integer pn)->l.stream().map(Item02::getName).collect(Collectors.toList()));
               }else if(fd.getEName().contains("实测合格率")){
                   this.passRate=fd;
-                  this.fm.put(fd.getCode(),(List<Item> l,Integer pn)->l.stream().map(Item::getPassRate).collect(Collectors.toList()));
+                  this.fm.put(fd.getCode(),(List<Item02> l,Integer pn)->l.stream().map(Item02::getPassRate).collect(Collectors.toList()));
               }else if(fd.getEName().trim().equals("权值")){
                   this.weight=fd;
-                  this.fm.put(fd.getCode(),(List<Item> l,Integer pn)->l.stream().map(Item::getWeight).collect(Collectors.toList()));
+                  this.fm.put(fd.getCode(),(List<Item02> l,Integer pn)->l.stream().map(Item02::getWeight).collect(Collectors.toList()));
               }
               if(this.subItem!=null&&this.name!=null&&this.passRate!=null&&this.weight!=null&&this.sn!=null){
                   /*匹配完成*/
@@ -96,73 +61,27 @@ public class FB02 {
          }
     }
 
-    public void initFdCoords(Map<String,String> tableKeysCoordsMap){
-        boolean f=false;
-        for(FormData fd:this.fds){
-            String coords =tableKeysCoordsMap.get(fd.getKey());
-            if(Func.isNotBlank(coords)){
-                fd.flushCoords(coords);
-                f=true;
-            }
-        }
-        if(f) {
-            this.rowSize = this.fds.get(0).getCoordsList().size();
-        }
-    }
-
-    public boolean flush( List<WbsTreeContract> wtcList){
-        if(wtcList.size()>0) {
-            Map<Integer, List<Item>> pages = IntStream.range(0, datas.size()).boxed()
-                    .collect(Collectors.groupingBy(
-                            i -> i / rowSize,
-                            LinkedHashMap::new,
-                            Collectors.mapping(datas::get, Collectors.toList())
-                    ));
-
-            for (Map.Entry<Integer, List<Item>> entry : pages.entrySet()) {
-                int k = entry.getKey();
-                if (wtcList.size() <= k) {
-                    break;
+    public void source(List<FormulaDataBlock> formulaDataBlocks, Map<String,String> swNameMap ){
+        formulaDataBlocks.forEach(fdb -> {
+            List<ElementBlock> elementBlockList = JSON.parseArray(fdb.getVal(), ElementBlock.class);
+            elementBlockList.forEach(eb -> {
+                String name = eb.getEName();
+                Item02 xm = new Item02();
+                xm.setName(name);
+                xm.setSubItem(swNameMap.get(fdb.getSwId().toString()));
+                List<ItemBlock> ib = eb.getList();
+                int total = ib.stream().mapToInt(ItemBlock::getSubTotal).sum();
+                int pass = ib.stream().mapToInt(ItemBlock::getSubPass).sum();
+                if (total > 0) {
+                    double rate = (double) pass / (double) total;
+                    if (rate >= 0 && rate <= 100) {
+                        xm.setPassRate(rate);
+                    }
                 }
-                List<Item> v = entry.getValue();
-                WbsTreeContract w = wtcList.get(k);
-                StringBuilder  sb =new StringBuilder();
-                this.fds.forEach(fd -> {
-                    sb.append(putEd(k,v,fd,w)).append(StringPool.COMMA);
-                });
-                String template="update "+w.getInitTableName()+" set "+sb.deleteCharAt(sb.length()-1)+" where id ="+w.getPKeyId();
-                sqlList.add(template);
-            }
-
-            return true;
-        }
-       return false;
+                this.getDatas().add(xm);
+            });
+        });
     }
 
-   /**把数据放到对应元素*/
-    private String putEd(int pn,List<Item> items, FormData fd,WbsTreeContract w){
-        BiFunction<List<Item>,Integer,List<Object>> fc = this.fm.get(fd.getCode());
-        if(fc!=null) {
-            List<Object> data = fc.apply(items,pn);
-            List<ElementData> list = new ArrayList<>();
-            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()));
-            }
-            fd.getValues().addAll(list);
-            return fd.getKey()+StringPool.EQUALS+StringPool.SINGLE_QUOTE+recovery(list)+StringPool.SINGLE_QUOTE;
-        }
-        return StringPool.EMPTY;
-    }
-
-    public String recovery(List<ElementData> dataList) {
-        if (Func.isNotEmpty(dataList)) {
-            return dataList.stream().filter(e -> !e.isEmpty()).map(e -> e.stringValue() + "_^_" + e.getY() + "_" + e.getX()).collect(Collectors.joining("☆"));
-        }
-        return StringPool.EMPTY;
-    }
-
-
-
 
 }

+ 16 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/Item01.java

@@ -0,0 +1,16 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+
+/**
+ * @author yangyj
+ * @Date 2023/12/5 17:10
+ * @description 分部工程质量评定表小项
+ */
+@Data
+public class Item01 {
+    private String number;
+    private String name ;
+    private String level;
+    private String remark;
+}

+ 24 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/Item02.java

@@ -0,0 +1,24 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+
+/**
+ * @author yangyj
+ * @Date 2023/12/5 16:19
+ * @description TODO
+ */
+@Data
+public class Item02 {
+    private String subItem;
+    private String name;
+    private Double passRate=100d;
+    private Integer weight=1;
+
+    public void setName(String name) {
+        if(name!=null&&name.contains("△")){
+            this.weight=2;
+        }
+        this.name = name;
+    }
+
+}

+ 4 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/ItemBlock.java → blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ItemBlock.java

@@ -1,8 +1,8 @@
-package org.springblade.manager.formula;
+package org.springblade.manager.vo;
 
 import com.alibaba.fastjson.annotation.JSONField;
-import com.mixsmart.utils.StringUtils;
 import lombok.Data;
+import org.springblade.core.tool.utils.Func;
 
 import java.util.Arrays;
 import java.util.List;
@@ -51,13 +51,13 @@ public class ItemBlock {
     private String dev;
 
     public void setD(String d) {
-        if (StringUtils.isNotEmpty(d)) {
+        if (Func.isNotEmpty(d)) {
             this.data = Arrays.stream(d.split("/")).map(e -> Arrays.stream(e.split(",")).map(Double::parseDouble).collect(Collectors.toList())).collect(Collectors.toList());
         }
     }
 
     public void setS(String s) {
-        if (StringUtils.isNotEmpty(s)) {
+        if (Func.isNotEmpty(s)) {
             this.designs = Arrays.stream(s.split("/")).map(Double::parseDouble).collect(Collectors.toList());
         }
     }

+ 0 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IFormulaDataBlockService.java

@@ -2,9 +2,6 @@ package org.springblade.manager.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.springblade.manager.entity.FormulaDataBlock;
-import org.springblade.manager.formula.ElementBlock;
-
-import java.util.List;
 
 /**
  * @author yangyj

+ 18 - 42
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -17,7 +17,6 @@ import org.jsoup.nodes.Document;
 import org.springblade.common.utils.BaseUtils;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.common.utils.SnowFlakeUtil;
-import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.*;
@@ -32,15 +31,11 @@ import org.springblade.manager.formula.impl.SubTable;
 import org.springblade.manager.formula.impl.TableElementConverter;
 import org.springblade.manager.mapper.FormulaMapper;
 import org.springblade.manager.service.*;
-import org.springblade.manager.vo.AppWbsTreeContractVO;
-import org.springblade.manager.vo.CurrentNode;
-import org.springblade.manager.vo.FB02;
-import org.springblade.manager.vo.WtcEva;
+import org.springblade.manager.vo.*;
 import org.springframework.context.annotation.Scope;
 import org.springframework.context.annotation.ScopedProxyMode;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
-import org.springframework.util.LinkedCaseInsensitiveMap;
 import org.springframework.web.context.WebApplicationContext;
 import javax.validation.constraints.NotNull;
 import java.util.*;
@@ -688,9 +683,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             }
         }
         this.tec.getLog().put(FormulaLog.PARAM,result.entrySet().stream().map(p->logMap.get(p.getKey())+":"+p.getValue()).collect(Collectors.joining(";")));
-        /*元素动态绑定*/
         /*绑定节点参数公式*/
-      /*  total= new ArrayList<>(total.stream().collect(Collectors.toMap(WbsParam::getK, w -> w, (v1, v2) -> v2)).values());*/
         this.bindParamFormula(total);
         return result;
     }
@@ -2206,8 +2199,6 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
     }
 
 
-
-
     public List<String> getCodeByEl(String el){
         List<String> l = new ArrayList<>();
         if(Func.isNotBlank(el)){
@@ -2219,6 +2210,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         }
         return l;
     }
+
     /**把计算结果放入固定常量集,创建key来引用*/
     public String putDataWithKey(Object data){
         String key ="HA"+HashUtil.identityHashCode(data);
@@ -2240,7 +2232,6 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         return target;
     }
 
-
     @Override
     public Map<String,Object> getElementInfoByCodes(String codes){
         if(StringUtils.isNotEmpty(codes)){
@@ -2436,39 +2427,24 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                 LinkedList<String> treeCode = new LinkedList<>(FormulaUtils.treeCodeSplit(wtcEva.getTreeCode()));
                 List<FormulaDataBlock> formulaDataBlocks = this.getSqlList("select a.* from m_formula_data_block a join (select parent_id from m_wbs_tree_contract where tree_code like '" + treeCode.getLast() + "%' and contract_id =" + wtcEva.getContractId() + " and major_data_type=2 and is_deleted=0 ORDER BY tree_code)b on a.sw_id=b.parent_id ", FormulaDataBlock.class);
                 if (formulaDataBlocks!=null&&formulaDataBlocks.size() > 0) {
-                    /*获取分部工程名称*/
-/*                    WbsTreeContract node = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getId, wtcEva.getParentId()).eq(WbsTreeContract::getContractId,wtcEva.getContractId()));
-                    WbsTreePrivate wtp = this.wtpId(node.getPKeyId());
-                    WbsTreePrivate publicWtp = this.getOriginWtp(wtp.getPKeyId());
-                    List<WbsParam> list= this.getNodeWps(publicWtp.getId(),wtp.getPKeyId());*/
-
-                    formulaDataBlocks.forEach(fdb -> {
-                        List<ElementBlock> elementBlockList = JSON.parseArray(fdb.getVal(), ElementBlock.class);
-                        elementBlockList.forEach(eb -> {
-                            String name = eb.getEName();
-                            FB02.Item xm = new FB02.Item();
-                            xm.setName(name);
-                            List<ItemBlock> ib = eb.getList();
-                            int total = ib.stream().mapToInt(ItemBlock::getSubTotal).sum();
-                            int pass = ib.stream().mapToInt(ItemBlock::getSubPass).sum();
-                            if (total > 0) {
-                                double rate = (double) pass / (double) total;
-                                if (rate >= 0 && rate <= 100) {
-                                    xm.setPassRate(rate);
-                                }
-                            }
-                            fb02.getDatas().add(xm);
-                        });
-                    });
+                    /*就是分项工程节点的父节点名称*/
+                    String swIds = formulaDataBlocks.stream().map(FormulaDataBlock::getSwId).map(Objects::toString).collect(Collectors.joining(","));
+                    List<Map<String,Object>> listMaps= this.jdbcTemplate.queryForList("select id ,node_name nodeName,full_name fullName  from m_wbs_tree_contract where is_deleted =0 and contract_id="+wtcEva.getContractId()+" and id in("+swIds+")");
+                    Map<String,String> swNameMap = new HashMap<>();
+                    if(listMaps.size()>0){
+                       swNameMap.putAll(listMaps.stream().collect(Collectors.toMap(m->m.get("id").toString(),m->m.get("fullName").toString(),(v1,v2)->v2)));
+                    }
+                     fb02.source(formulaDataBlocks,swNameMap);
                     if (fb02.getDatas().size() > 0) {
                         Map<String, String> tableKeysCoordsMap = FormulaUtils.getElementCell(wtcEva.getHtmlUrl());
-                        fb02.initFdCoords(tableKeysCoordsMap);
-                        /*根据数据长度,增减页数*/
-                        List<WbsTreeContract> wtcList = this.adjustPageSize(fb02.getPageNum(), wtcEva, processFds);
-                        if (fb02.flush(wtcList)) {
-                            fb02.getSqlList().forEach(System.out::println);
-                            //this.jdbcTemplate.execute(fb02.getSql());
-                            return R.success("成功");
+                        if(fb02.initFdCoords(tableKeysCoordsMap)) {
+                            /*根据数据长度,增减页数*/
+                            List<WbsTreeContract> wtcList = this.adjustPageSize(fb02.getPageNum(), wtcEva, processFds);
+                            if (fb02.flush(wtcList,fb02.getDatas())) {
+                                fb02.getSqlList().forEach(System.out::println);
+                                //this.jdbcTemplate.execute(fb02.getSql());
+                                return R.success("成功");
+                            }
                         }
                     }
                 }