浏览代码

公式相关:bug修复

yangyj 2 年之前
父节点
当前提交
5028061452

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

@@ -321,6 +321,9 @@ public class CustomFunction {
 	public static Object count(Object data) {
 	public static Object count(Object data) {
 		List<Object> list=obj2ListNe(data);
 		List<Object> list=obj2ListNe(data);
 		if(ListUtils.isNotEmpty(list)){
 		if(ListUtils.isNotEmpty(list)){
+			if(list.stream().anyMatch(e->StringUtils.handleNull(e).contains(":"))){
+				return list.stream().filter(StringUtils::isNotEmpty).count();
+			}
 			return   list.stream().filter(StringUtils::isNumber).map(StringUtils::handleNull).mapToDouble(Double::parseDouble).count();
 			return   list.stream().filter(StringUtils::isNumber).map(StringUtils::handleNull).mapToDouble(Double::parseDouble).count();
 		}
 		}
 		return "";
 		return "";
@@ -1634,6 +1637,7 @@ public class CustomFunction {
 			double designD=Double.parseDouble(design.toString());
 			double designD=Double.parseDouble(design.toString());
 			double xND=Double.parseDouble(xN.toString());
 			double xND=Double.parseDouble(xN.toString());
 			String devStr = dev.toString();
 			String devStr = dev.toString();
+			devStr=devStr.replaceAll("[\\[\\]]+","");
 			double min=0;
 			double min=0;
 			double max=0;
 			double max=0;
 			devStr=devStr.replaceAll("\\s+","");
 			devStr=devStr.replaceAll("\\s+","");
@@ -2764,5 +2768,4 @@ public class CustomFunction {
 
 
 
 
 
 
-
 }
 }

+ 9 - 1
blade-service/blade-manager/src/main/java/com/mixsmart/utils/FormulaUtils.java

@@ -269,6 +269,14 @@ public class FormulaUtils {
 
 
     /*从元素名称中解析项目名称*/
     /*从元素名称中解析项目名称*/
     public static  String parseItemName(String eName){
     public static  String parseItemName(String eName){
-        return StringUtils.handleNull(eName).replaceAll("^[^\\u4e00-\\u9fa5\\s]+","").split("[((].+[))]|_")[0];
+        String[] candidate= StringUtils.handleNull(eName).replaceAll("^[^\\u4e00-\\u9fa5]+","").replaceAll("\\s+","").split("[((].+[))]|_");
+        if(candidate.length>0){
+           return Arrays.stream(candidate).filter(e->!e.contains("实测项目")&&!e.contains("△")).findFirst().orElse(eName);
+        }
+        return eName;
     }
     }
+
+//    public static void main(String[] args) {
+//        System.out.println(parseItemName("实 测 项 目_3△_内轮廓高度(mm)_不小于设计值_实测值或实测偏差值"));
+//    }
 }
 }

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

@@ -68,6 +68,8 @@ public class SubTable {
                    itemNameList.addAll(Collections.nCopies(count,nameAndDesign[0]));
                    itemNameList.addAll(Collections.nCopies(count,nameAndDesign[0]));
                    if(nameAndDesign.length>=2) {
                    if(nameAndDesign.length>=2) {
                        designList.addAll(Collections.nCopies(count, nameAndDesign[1]));
                        designList.addAll(Collections.nCopies(count, nameAndDesign[1]));
+                   }else{
+                       designList.addAll(Collections.nCopies(count, ""));
                    }
                    }
                    dataList.addAll(values);
                    dataList.addAll(values);
                    if(count*ROW_SIZE>values.size()){
                    if(count*ROW_SIZE>values.size()){

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

@@ -201,16 +201,15 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         }
         }
         if(Func.isNotEmpty(cki)){
         if(Func.isNotEmpty(cki)){
            /*检验内容*/
            /*检验内容*/
-            StringBuilder sb = new StringBuilder();
+            List<String> sb = new ArrayList<>();
             for(String s:cki){
             for(String s:cki){
                 FormData fdTmp=this.formDataMap.get(s);
                 FormData fdTmp=this.formDataMap.get(s);
                 if(fdTmp!=null&&fdTmp.getValues().stream().map(ElementData::getValue).anyMatch(e->StringUtils.isNotEmpty(e)&&StringUtils.isNotEquals("/",e))){
                 if(fdTmp!=null&&fdTmp.getValues().stream().map(ElementData::getValue).anyMatch(e->StringUtils.isNotEmpty(e)&&StringUtils.isNotEquals("/",e))){
-                    sb.append(FormulaUtils.parseItemName(fdTmp.getEName())).append(",");
+                   sb.add(FormulaUtils.parseItemName(fdTmp.getEName()));
                 }
                 }
             }
             }
-            if(sb.length()>1){
-                sb.deleteCharAt(sb.length()-1);
-                this.constantMap.put(CHECK_ITEMS,sb.toString());
+            if(sb.size()>0){
+                this.constantMap.put(CHECK_ITEMS,sb.stream().distinct().filter(StringUtils::isNotEmpty).collect(Collectors.joining(",")));
             }
             }
         }
         }
         if(Func.isNotBlank(ckd.get())){
         if(Func.isNotBlank(ckd.get())){
@@ -658,7 +657,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                            f.setAddPages(0);
                            f.setAddPages(0);
                            String itemName=FormulaUtils.parseItemName(f.getEName());
                            String itemName=FormulaUtils.parseItemName(f.getEName());
                            String key=itemName.trim();
                            String key=itemName.trim();
-                           Optional<FormData> designFdOp=  this.formDataMap.values().stream().filter(o->o.getTableName().equals(f.getTableName())&&StringUtils.isEquals(itemName,FormulaUtils.parseItemName(o.getEName()))&&o.getEName().contains("设计值")).findAny();
+                           /*同项目*/
+                           Optional<FormData> designFdOp=  this.formDataMap.values().stream().filter(o->o.getTableName().equals(f.getTableName())&&StringUtils.isEquals(itemName,FormulaUtils.parseItemName(o.getEName()))&&o.getEName().contains("设计值")&&!o.getEName().contains("判定")).findAny();
                            if(designFdOp.isPresent()){
                            if(designFdOp.isPresent()){
                                key+="@"+designFdOp.get().getValues().stream().map(ElementData::stringValue).filter(StringUtils::isNotEmpty).findAny().orElse("");
                                key+="@"+designFdOp.get().getValues().stream().map(ElementData::stringValue).filter(StringUtils::isNotEmpty).findAny().orElse("");
                            }
                            }