Browse Source

分部评定

yangyj 7 months ago
parent
commit
988ad31697

+ 5 - 2
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/FB01.java

@@ -1,6 +1,7 @@
 package org.springblade.manager.vo;
 
 import com.alibaba.fastjson.JSON;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.FormData;
 import org.springblade.manager.entity.FormulaDataBlock;
 
@@ -61,7 +62,9 @@ public class FB01 extends EvaSummary<Item01>{
         }
     }
 
-    public void source(){
-       //TODO
+    public void source(List<Item01> abList){
+         if(Func.isNotEmpty(abList)){
+             this.datas.addAll(abList);
+         }
     }
 }

+ 3 - 3
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/FunctionMain.java

@@ -241,8 +241,8 @@ public class FunctionMain {
         System.out.println(dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
     }
 
-    public static void main(String[] args) {
-        getToken();
-    }
+/*    public static void main(String[] args) {
+       getDataFromId(1818530751681495041L);
+    }*/
 
 }

+ 3 - 3
blade-service/blade-manager/src/main/java/com/mixsmart/utils/CustomFunction.java

@@ -1315,9 +1315,9 @@ public class CustomFunction {
     }
 
 
- /*   public static void main(String[] args) {
-        List<Object> list = Arrays.asList(21967,20853);
-        b445check(list,"21966/20849","±3",1).forEach(System.out::println);
+/*    public static void main(String[] args) {
+        List<Object> list = Arrays.asList(29,30);
+        b445check(list,"0","-30,30",1).forEach(System.out::println);
     }*/
 
 

+ 3 - 0
blade-service/blade-manager/src/main/java/com/mixsmart/utils/FormulaUtils.java

@@ -235,6 +235,9 @@ public class FormulaUtils {
         return getJaccardSimilarity(parseItemName(s1),parseItemName(s2));
     }
 
+/*    public static void main(String[] args) {
+        similarity("分项工程名称:","分项工程名称:");
+    }*/
 
 
     /**

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -727,7 +727,7 @@ public class ExecutorMeter extends FormulaExecutor {
         @Override
         public void parse() {
             builderFormDatas(MaterialsArrival.class);
-            if(materials.size()>0){
+            if(materials!=null&&materials.size()>0){
                 String ratio = BaseUtils.str2BigDecimal(tec.meterInfo.getBaseInfo().getDeductRatio()).toPlainString();
                 List<MaterialsArrival> list =materials.stream().map(e->{
                             MaterialsArrival ma = new MaterialsArrival();
@@ -1847,7 +1847,7 @@ public class ExecutorMeter extends FormulaExecutor {
     @Data
     @EqualsAndHashCode(callSuper = true)
     public class SubIMeterPay extends  BaseSpecial<SubInterimMeterPaySummary> implements Special{
-          /*分项工程中期计量支付表*/
+          /*分项工程中期计量支付表,计量支付数量汇总表*/
         @Override
         public boolean ready() {
             return current.size()>0;

+ 30 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -44,6 +44,7 @@ import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.system.cache.ParamCache;
 import org.springframework.beans.BeanUtils;
 import org.springframework.context.annotation.Lazy;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
@@ -2816,10 +2817,37 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                         FB01 fb01 = new FB01(processFds);
                         if(fb01.checked()) {
                             /*获取同一个treeCode前缀下的所有分项评定表*/
-                          List<WtcEva>  wtcEvaList= this.getSqlList("select b.init_table_name,b.node_name,b.p_key_id pKeyId from " +
+                          List<WtcEva>  wtcEvaList= this.getSqlList("select b.init_table_name initTableName ,b.node_name nodeName,b.p_key_id pKeyId from " +
                                   "(select 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 and node_type=5 ORDER BY tree_code" +
                                   ")a join m_wbs_tree_contract b on a.id=b.parent_id where b.contract_id ="+wtcEva.getContractId()+" and b.is_deleted=0",WtcEva.class);
-                          fb01.source();
+                          wtcEvaList.removeIf(e->e.getNodeName().contains("附表"));
+                          List<Item01> abList= new ArrayList<>();
+                          wtcEvaList.forEach(e->{
+                              String sql="select b.* from m_table_info a join m_wbs_form_element b on a.id = b.f_id   where a.tab_en_name='"+e.getInitTableName()+"' and a.is_deleted=0 and b.is_deleted=0";
+                              List<WbsFormElement> elements=jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(WbsFormElement.class));
+                              if(Func.isNotEmpty(elements)){
+                                  String a="分项工程编号:";
+                                  String b="分项工程名称:";
+                                 elements.stream().filter(w -> FormulaUtils.getJaccardSimilarity(w.getEName(), a) > 0.3).max(Comparator.comparingDouble((WbsFormElement x) -> FormulaUtils.getJaccardSimilarity(x.getEName(), a))).ifPresent(r1->{
+                                     elements.stream().filter(w -> FormulaUtils.getJaccardSimilarity(w.getEName(), b) > 0.3).max(Comparator.comparingDouble((WbsFormElement x) -> FormulaUtils.getJaccardSimilarity(x.getEName(), b))).ifPresent(r2->{
+                                           List<Item01> tmp=jdbcTemplate.query("select "+r1.getEKey()+" number,"+r2.getEKey()+" name from " +e.getInitTableName()+" where p_key_id="+e.getPKeyId(), new BeanPropertyRowMapper<>(Item01.class));
+                                           if(Func.isNotEmpty(tmp)) {
+                                               abList.add(tmp.get(0));
+                                           }
+                                     });
+                                 });
+                              }
+                          });
+                          abList.forEach(e->{
+                              if(StringUtils.isNotEmpty(e.getNumber())){
+                                  e.setNumber(e.getNumber().split("__")[0]);
+                              }
+                              if(StringUtils.isNotEmpty(e.getName())){
+                                  e.setName(e.getName().split("__")[0]);
+                              }
+                              e.setLevel("合格");
+                          });
+                            fb01.source(abList);
                             if (fb01.getDatas().size() > 0) {
                                 Map<String, String> tableKeysCoordsMap = FormulaUtils.getElementCell(wtcEva.getHtmlUrl());
                                 if (fb01.initFdCoords(tableKeysCoordsMap)) {