yangyj hace 1 año
padre
commit
41be325ca7

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

@@ -1131,7 +1131,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                             List<FormData>  ele = new ArrayList<>();
                             relyList.forEach(rely->{
                                 FormData formData=  tec.getFormDataMap().get(rely);
-                                if(formData!=null&&!formData.empty()){
+                                /*TODO,这里的判断还需要优化,比如加减法公式,即使某个依赖元素不存在内容却可以视为0,也算是合法的执行条件*/
+                                if(formData!=null&&!formData.empty()||"m_20231027094746_1717719707244560384:key_11".equals(fd.getCode())){
                                     ele.add(formData);
                                 }
                             });
@@ -1226,18 +1227,31 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         @SuppressWarnings("unchecked")
         Map<String,Object> em = (Map<String, Object>) currentMap.computeIfAbsent(E,(k)-> new HashMap<>());
         if(f.split("[/+\\-*]").length>1&&ele.stream().map(e->e.getCoordsList().size()).max(Comparator.comparingInt(e->e)).orElse(1)==1&&fd.getCoordsList().size()==1){
-            ele.forEach(e->{
-                Object value=e.getValues().get(0).getValue();
-                if(CustomFunction.isNumber(value)){
-                    if(StringUtils.isDouble(value)||f.contains("/")){
-                        em.put(e.getCode(), Double.parseDouble(value.toString()));
+            if("m_20231027094746_1717719707244560384:key_11".equals(fd.getCode())){
+                /*分部评定2表,评分计算特殊处理*/
+                ele.forEach(e->{
+                    /*最后一页的值*/
+                    Object value = e.getValues().get(e.getValues().size()-1).getValue();
+                    if(StringUtils.isNotEmpty(value)){
+                        em.put(e.getCode(), value);
                     }else{
-                        em.put(e.getCode(),StringUtils.handleObj2Integer(value));
+                        em.put(e.getCode(), 0);
                     }
-                }else{
-                    em.put(e.getCode(),value);
-                }
-            });
+                });
+            }else {
+                ele.forEach(e -> {
+                    Object value = e.getValues().get(0).getValue();
+                    if (CustomFunction.isNumber(value)) {
+                        if (StringUtils.isDouble(value) || f.contains("/")) {
+                            em.put(e.getCode(), Double.parseDouble(value.toString()));
+                        } else {
+                            em.put(e.getCode(), StringUtils.handleObj2Integer(value));
+                        }
+                    } else {
+                        em.put(e.getCode(), value);
+                    }
+                });
+            }
         }else{
             ele.forEach(e-> em.put(e.getCode(),e.getRawValue()));
         }