Bläddra i källkod

公式相关:项目名称解析优化

yangyj 2 år sedan
förälder
incheckning
de50fa0ddd

+ 13 - 7
blade-service/blade-manager/src/main/java/com/mixsmart/utils/FormulaUtils.java

@@ -349,7 +349,7 @@ public class FormulaUtils {
 
 
     private static boolean isContainKeywords(String s) {
-        List<String> keywords = Arrays.asList("或", "每", "个","附录","抽查","测","");
+        List<String> keywords = Arrays.asList("或", "每", "个","附录","抽查","测","");
         return keywords.stream().anyMatch(s::contains);
     }
 
@@ -383,9 +383,9 @@ public class FormulaUtils {
 
 
 
-//    public static void main(String[] args) {
-//        List<String> list =Arrays.asList(
-//                ""
+    public static void mainK(String[] args) {
+        List<String> list =Arrays.asList(
+                ""
 //                ,"压 实 度 (%)下路床 特重、极重交通荷载等级 设计值"
 //                ,"1△_压 实 度 (%)_下路床_轻、中及重交通 荷载等级_0.3m~0.8m_≧96_≧95_≧94_实测值或实测偏差值"
 //                ,"1△_压 实 度 (%)_下路提_轻、中及重交通 荷载等级_&gt;1.5m_≧93_≧92_≧90_实测值或实测偏差值"
@@ -406,9 +406,15 @@ public class FormulaUtils {
 //                ,"实测项目_桩位 (mm)_排架桩_质量评定_合格判定"
 //                ,"实测项目_桩位 (mm)_群桩_≤100_质量评定_合格率(%)"
 //                ,"实测项目_桩位 (mm)_排架桩_质量评定_合格率(%)"
-//        );
-//        list.stream().map(FormulaUtils::parseItemName).forEach(System.out::println);
-//    }
+                ,"3△_支座高程(mm)_满足设计要求;设 计未要求时±5_水准仪:测每支座中心线_实测值或实测偏差值"
+        );
+        list= Arrays.asList(("实 测 项 目_2△_草坪、草本地被覆盖率(%)_取弃土场绿 地_≥90_实测值或实测偏差值@" +
+                "实 测 项 目_花卉数量_满足设计要求_实测值或实测偏差值@" +
+                "实 测 项 目_4△_花卉成活率(%)_≥95_实测值或实测偏差值@" +
+                "实 测 项 目_草坪、草本地被面积_满足设计要求_实测值或实测偏差值@" +
+                "实 测 项 目_2△_草坪、草本地被覆盖率(%)_其他绿地_≥95_实测值或实测偏差值").split("@"));
+        list.stream().map(FormulaUtils::parseItemName).forEach(System.out::println);
+    }
 
 
 }

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

@@ -1,8 +1,6 @@
 package org.springblade.manager.formula.impl;
 
-import com.mixsmart.utils.FormulaUtils;
 import lombok.Data;
-import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.FormData;
 
 import java.util.List;
@@ -38,6 +36,7 @@ public class Measurement {
            return value!=null&&pass!=null&&judge!=null;
     }
     public void flush(){
+        /*匹配成功后就不执行后续公式*/
         this.value.setFinished(true);
         this.value.setUpdate(1);
         this.value.setFormula(null);

+ 8 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -231,9 +231,9 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                 if (!StringUtils.isEquals("[]", fdb.getVal())) {
                     List<ElementBlock> elementBlockList = JSON.parseArray(fdb.getVal(), ElementBlock.class);
                     Map<String, Measurement> itemsMap = new HashMap<>();
-                    this.formDataMap.values().forEach(e -> {
+                    this.formDataMap.values().stream().filter(FormData::getIsCurrentNodeElement).forEach(e -> {
                         String eName = e.getEName();
-                        if (eName.contains("实测") && !eName.contains("平均") && !eName.contains("率") && !eName.contains("判")) {
+                        if (eName.contains("实测") && !eName.contains("平均") && !eName.contains("合格率") && !eName.contains("判")) {
                             String point = FormulaUtils.parseItemName(eName);
                             /*评定匹配检验单的元素用相似匹配*/
                             Measurement measurement = itemsMap.computeIfAbsent(point, k -> new Measurement(point));
@@ -242,11 +242,11 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                     });
                     if (itemsMap.size() > 0) {
                         /*表内用同行匹配*/
-                        List<FormData> primary = tec.getFormDataMap().values().stream().filter(v -> v.getEName().contains("率") || v.getEName().contains("判")).collect(Collectors.toList());
+                       List<FormData> primary = tec.getFormDataMap().values().stream().filter(FormData::getIsCurrentNodeElement).filter(v -> v.getEName().contains("率") || v.getEName().contains("判")).collect(Collectors.toList());
                         itemsMap.values().forEach(i -> {
                             FormData vf = i.getValue();
                             primary.stream().filter(p -> vf.getMaxRow().equals(p.getMaxRow()) && vf.getTableName().equals(p.getTableName())).forEach(t -> {
-                                if (t.getEName().contains("率")) {
+                                if (t.getEName().contains("合格率")) {
                                     i.setPass(t);
                                 } else if (t.getEName().contains("判")) {
                                     i.setJudge(t);
@@ -275,8 +275,9 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                             if (g != null) {
                                 List<ItemBlock> itemBlockList = g.getList();
                                 int originSize = itemBlockList.size();
-                                List<Long> ids = this.jdbcTemplate.queryForList("select b.p_key_id from m_wbs_tree_contract a join m_wbs_tree_contract b on (a.parent_id=b.parent_id and a.contract_id=b.contract_id) where a.p_key_id=" + tec.getCurrentNode().getPkId() + " and b.is_deleted=0 and b.node_type=6", Long.class);
-                                itemBlockList.removeIf(ik -> !ids.contains(ik.getPkeyId()));
+                                /*过滤方法有问题*/
+//                                List<Long> ids = this.jdbcTemplate.queryForList("select b.p_key_id from m_wbs_tree_contract a join m_wbs_tree_contract b on (a.parent_id=b.parent_id and a.contract_id=b.contract_id) where a.p_key_id=" + tec.getCurrentNode().getPkId() + " and b.is_deleted=0 and b.node_type=6", Long.class);
+//                                itemBlockList.removeIf(ik -> !ids.contains(ik.getPkeyId()));
                                 if (itemBlockList.size() > 0) {
                                     int total = itemBlockList.stream().mapToInt(ItemBlock::getSubTotal).sum();
                                     int passNum = itemBlockList.stream().mapToInt(ItemBlock::getSubPass).sum();
@@ -285,7 +286,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                                     if (passRate >= 60) {
                                         FormulaUtils.write(t.getJudge(), "合格", false);
                                     }
-                                    itemBlockList.sort(Comparator.comparingInt(a -> ids.indexOf(a.getPkeyId())));
+//                                    itemBlockList.sort(Comparator.comparingInt(a -> ids.indexOf(a.getPkeyId())));
                                     List<String> values = itemBlockList.stream().map(ItemBlock::getData).flatMap(v -> v.stream().flatMap(Collection::stream)).map(Object::toString).collect(Collectors.toList());
                                     int scale = StringUtils.getScale(values);
                                     FormulaUtils.write(t.getValue(), values.stream().map(u -> StringUtils.number2String(u, scale)).collect(Collectors.toList()), true);