Browse Source

汽运单价

zx 3 years ago
parent
commit
e4292e862a

+ 1 - 0
src/main/java/com/steerinfo/dil/service/IAmsContractTruckPriceService.java

@@ -42,4 +42,5 @@ public interface IAmsContractTruckPriceService {
     List<Map<String, Object>> getOriginAndNowOilPrice();
     //油价联动导致运价变动,批量修改运价,同时修改吨公里的数值
     int batchUpdateTransportPriceByOilPrice();
+
 }

+ 19 - 11
src/main/java/com/steerinfo/dil/service/impl/AmsContractTruckPriceServiceImpl.java

@@ -125,6 +125,10 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
         return amsContractTruckPriceMapper.getOriginAndNowOilPrice();
     }
 
+    /**
+     * 批量修改油价
+     * @return
+     */
     @Override
     public int batchUpdateTransportPriceByOilPrice() {
         //获取所有油价信息
@@ -145,7 +149,7 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
         //获取原运价和吨公里数
         List<Map<String, Object>> priceValueAndPriceTonKilometer = amsContractTruckPriceMapper.getPriceValueAndPriceTonKilometer();
 
-        if(updateOilPrice>0.05||updateOilPrice<-0.05){
+        if(updateOilPrice>0.05||updateOilPrice<-0.05) {
             //逐条修改吨公里数
             for (Map<String, Object> stringObjectMap : priceValueAndPriceTonKilometer) {
                 //主键Id
@@ -154,18 +158,22 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
                 BigDecimal priceValue = (BigDecimal) stringObjectMap.get("priceValue");
                 //吨公里数
                 BigDecimal priceTonKilometer = (BigDecimal) stringObjectMap.get("priceTonKilometer");
-                //参考距离
-                BigDecimal distance = priceValue.divide(priceTonKilometer,2,BigDecimal.ROUND_HALF_UP);
-                //现运价
-                Double nowPriceValue = priceValue.doubleValue()*0.65+priceValue.doubleValue()*0.35*(1+updateOilPrice);
-                BigDecimal nowPriceValue1 = new BigDecimal(nowPriceValue);
-                //新吨公里数
-                BigDecimal newPriceTonKilometer = nowPriceValue1.divide(distance,4,BigDecimal.ROUND_HALF_UP);
-                //通过主键修改一条吨公里数
-                amsContractTruckPriceMapper.updatePriceTonKilometer(priceId,newPriceTonKilometer);
+                //参考距离,四舍五入,保留两位小数
+                BigDecimal distance;
+                if (priceTonKilometer.doubleValue() != 0) {
+                    distance = priceValue.divide(priceTonKilometer, 2, BigDecimal.ROUND_HALF_UP);
+                    //现运价
+                    Double nowPriceValue = priceValue.doubleValue() * 0.65 + priceValue.doubleValue() * 0.35 * (1 + updateOilPrice);
+                    BigDecimal nowPriceValue1 = new BigDecimal(nowPriceValue);
+                    //新吨公里数
+                    BigDecimal newPriceTonKilometer = nowPriceValue1.divide(distance, 4, BigDecimal.ROUND_HALF_UP);
+                    //通过主键修改一条吨公里数
+                    amsContractTruckPriceMapper.updatePriceTonKilometer(priceId, newPriceTonKilometer);
+                }
+                return amsContractTruckPriceMapper.batchUpdateTransportPriceByOilPrice(updateOilPrice);
             }
-            return amsContractTruckPriceMapper.batchUpdateTransportPriceByOilPrice(updateOilPrice);
         }
         return 0;
     }
+
 }