Explorar el Código

多个设计值-实测值 求偏差

yangyj hace 1 año
padre
commit
5bf9e1d23d

+ 1 - 0
blade-service/blade-manager/src/main/java/com/jfireel/expression/node/CalculateNode.java

@@ -13,4 +13,5 @@ public interface CalculateNode {
     String literals();
     String COLON=":";
     String DXD_REG="[0-9.-]+(\\*[0-9.-]+)+";
+    String DES_REG="[-+]?[0-9.]+(/[-+]?[0-9.]+)*";
 }

+ 7 - 2
blade-service/blade-manager/src/main/java/com/jfireel/expression/node/impl/MinusNode.java

@@ -26,8 +26,13 @@ public class MinusNode extends OperatorResultNode {
         }else if(leftStr.contains(COLON)&&rightStr.contains(COLON)){
             return fraction(leftStr)-fraction(rightStr);
         }
-        if (leftValue instanceof String && StringUtils.isNumber(leftValue)) {
-            leftValue = new BigDecimal(leftValue.toString());
+        if (leftValue instanceof String ) {
+            if(StringUtils.isNumber(leftValue)){
+                leftValue = new BigDecimal(leftValue.toString());
+            }else if(leftStr.matches(DES_REG)){
+                /*设计值减去实测的情况:555/555-550*/
+                return CustomFunction.calculate(CustomFunction.dXd(leftValue, rightValue),-1, StringUtils.getScale(rightValue),3);
+            }
         }
         if (!(leftValue instanceof Number)) {
             return null;