Преглед на файлове

节点参数公式不覆盖手写内容

yangyj преди 1 година
родител
ревизия
3b67709918
променени са 1 файла, в които са добавени 20 реда и са изтрити 10 реда
  1. 20 10
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

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

@@ -791,9 +791,9 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             /*没有依赖的*/
             List<FormData> simple = map.get(false);
             if (CollectionUtil.isNotEmpty(simple)) {
-                for(FormData fd:simple){
+              /*  for(FormData fd:simple){
                     if(!tec.force&&fd.executable()&&fd.getFormula().getFormula().contains(WP)){
-                        /*非强制刷新模式下,节点参数公式已经生成过就自动填充且不会覆盖已经存在的内容,无需再计算*/
+                        *//*非强制刷新模式下,节点参数公式已经生成过就自动填充且不会覆盖已经存在的内容,无需再计算*//*
                        Optional<Object> op= fd.getValues().stream().map(ElementData::getValue).filter(Func::isNotEmpty).findAny();
                        if(op.isPresent()) {
                            for(ElementData ed:fd.getValues()){
@@ -805,7 +805,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                            fd.setUpdate(1);
                        }
                     }
-                }
+                }*/
                 tec.formDataList.addAll(simple);
             }
             /*初始化排序值,每个点间隔1000,方便插入*/
@@ -1014,13 +1014,13 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                             }else{
                                 putEle(f,ele,currentMap,fd);
                                 Object data =Expression.parse(formula.getFormula()).calculate(currentMap);
-                                write(fd,data);
+                                write(tec,fd,data);
                             }
                             /*错位计算偏移量重置*/
                             ele.stream().filter(s->s.getOffset()>0).forEach(FormData::restore);
                         }else{
                             Object data =Expression.parse(formula.getFormula()).calculate(currentMap);
-                            write(fd,data);
+                            write(tec,fd,data);
                         }
                     }catch (Exception e){
                         e.printStackTrace();
@@ -1430,14 +1430,24 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         }else {
             predicate=   predicate.and((FormData t)->t.getEName().contains("合格"));
         }
-//        predicate= predicate.and((FormData t)->FormulaUtils.similarity(t.getEName(),measured.getEName())>0.75);
-//        return tec.getFormDataMap().values().stream().filter(predicate).max(Comparator.comparingDouble((FormData t)->FormulaUtils.similarity(t.getEName(),measured.getEName()))).orElse(null);
         return tec.getFormDataMap().values().stream().filter(predicate).findAny().orElse(null);
     }
 
-    public  void write(FormData fd,Object data){
-               /*如果需要向额外元素或对象输出数据,在此处修改*/
-               FormulaUtils.write(fd,data,false);
+    public  void write(TableElementConverter tec,FormData fd,Object data){
+        if(!tec.force&&fd.executable()&&fd.getFormula().getFormula().contains(WP)){
+            /*非强制刷新模式下,节点参数公式已经生成过就自动填充且不会覆盖已经存在的内容*/
+            if(StringUtils.isNotEmpty(data)&&!fd.empty()){
+                for(ElementData ed:fd.getValues()){
+                    if(ed.isEmpty()) {
+                        ed.setValue(data);
+                    }
+                }
+                fd.setFinished(true);
+                fd.setUpdate(1);
+            }
+        }else {
+            FormulaUtils.write(fd, data, false);
+        }
     }
 
     /**加页增容*/