Jelajahi Sumber

计算投加量新增中间判断的逻辑

王苗苗 5 bulan lalu
induk
melakukan
d6c4ac6d31

+ 2 - 0
src/main/java/com/xlht/xlhtproject/enums/MyConstants.java

@@ -7,6 +7,8 @@ public class MyConstants {
 
     public static final long LONG_1 = 1L;
 
+    public static final int INT_2 = 2;
+
     public static final int INT_3 = 3;
 
     public static final int INT_7 = 7;

+ 4 - 3
src/main/java/com/xlht/xlhtproject/service/impl/TXlhtMedicineParamServiceImpl.java

@@ -6,6 +6,7 @@ import com.xlht.xlhtproject.mapper.*;
 import com.xlht.xlhtproject.service.ITXlhtMedicineParamService;
 import com.xlht.xlhtproject.utils.CalculateUtils;
 import com.xlht.xlhtproject.utils.DateUtils;
+import com.xlht.xlhtproject.utils.DecimalUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -14,7 +15,7 @@ import java.math.BigDecimal;
 import java.util.List;
 import java.util.Objects;
 
-import static com.xlht.xlhtproject.enums.MyConstants.LONG_1;
+import static com.xlht.xlhtproject.enums.MyConstants.*;
 
 
 /**
@@ -324,10 +325,10 @@ public class TXlhtMedicineParamServiceImpl implements ITXlhtMedicineParamService
             BigDecimal twoAmount = xlhtAddRecord.getTwoAmount();
             BigDecimal realTwoAmount = xlhtAddRecord.getRealTwoAmount();
             if(!Objects.isNull(oneAmount) && !Objects.isNull(realOneAmount)){
-                latestRecord.setAddDifferenceOne(oneAmount.subtract(realOneAmount).abs());
+                latestRecord.setAddDifferenceOne(DecimalUtils.getNLengthHalfUp(oneAmount.subtract(realOneAmount).abs(), INT_2));
             }
             if(!Objects.isNull(twoAmount) && !Objects.isNull(realTwoAmount)){
-                latestRecord.setAddDifferenceTwo(twoAmount.subtract(realTwoAmount).abs());
+                latestRecord.setAddDifferenceTwo(DecimalUtils.getNLengthHalfUp(twoAmount.subtract(realTwoAmount).abs(), INT_2));
             }
         }
     }

+ 4 - 1
src/main/java/com/xlht/xlhtproject/utils/CalculateUtils.java

@@ -252,7 +252,10 @@ public class CalculateUtils {
         }
 
         //1)计算挟走量
-        BigDecimal xzl = (((BigDecimal_2.multiply(hycXsyVal).subtract(htfksd)).add(((qycAdVal.add(qycYxyVal)).multiply(xzxs).subtract(htfksd)))).multiply((jzxs.subtract(BigDecimal_1)))).multiply((jsLlVal.multiply(slfpxs))).divide(BigDecimal_1000, NUMBER_SCALE_10, RoundingMode.HALF_UP);
+        //2024年10月23日13:53:24 加上逻辑:如果下面的结算结果小于0,那么按0算;否则就是本身
+        BigDecimal originVal = (qycAdVal.add(qycYxyVal)).multiply(xzxs).subtract(htfksd);
+        BigDecimal handledVal = originVal.compareTo(BigDecimal.ZERO) > 0 ? originVal : BigDecimal.ZERO;
+        BigDecimal xzl = (((BigDecimal_2.multiply(hycXsyVal).subtract(htfksd)).add(handledVal)).multiply((jzxs.subtract(BigDecimal_1)))).multiply((jsLlVal.multiply(slfpxs))).divide(BigDecimal_1000, NUMBER_SCALE_10, RoundingMode.HALF_UP);
         log.info("1计算的挟走量结果是{}", xzl);
         //2)计算碳源投加总量
         BigDecimal total = (xzl.multiply(kzxs).subtract((jsLlVal.multiply(slfpxs).multiply(jsCodVal).multiply(zhxs).divide(BigDecimal_1000, NUMBER_SCALE_10, RoundingMode.HALF_UP)))).divide(tydl, NUMBER_SCALE_10, RoundingMode.HALF_UP);