hejiahui 2 anos atrás
pai
commit
18a38630de

+ 2 - 1
src/main/java/com/steerinfo/dil/controller/AmsContractTruckPriceController.java

@@ -18,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
+import java.text.ParseException;
 import java.util.*;
 
 /**
@@ -183,7 +184,7 @@ public class AmsContractTruckPriceController extends BaseRESTfulController {
     @ApiImplicitParams({
     })
     @PostMapping(value = "/batchUpdateTransportPriceByOilPrice1")
-    public RESTfulResult batchUpdateTransportPriceByOilPrice(@RequestBody Map<String,Object> map){
+    public RESTfulResult batchUpdateTransportPriceByOilPrice(@RequestBody Map<String,Object> map) throws ParseException {
         int i = amsContractTruckPriceService.batchUpdateTransportPriceByOilPrice(map);
         return success(i);
     }

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

@@ -3,6 +3,7 @@ package com.steerinfo.dil.service;
 import com.steerinfo.dil.model.AmsContractTransportPrice;
 
 import java.math.BigDecimal;
+import java.text.ParseException;
 import java.util.List;
 import java.util.Map;
 
@@ -41,7 +42,7 @@ public interface IAmsContractTruckPriceService {
     //获取所有的油价
     List<Map<String, Object>> getOriginAndNowOilPrice();
     //油价联动导致运价变动,批量修改运价,同时修改吨公里的数值
-    int batchUpdateTransportPriceByOilPrice(Map<String,Object> map);
+    int batchUpdateTransportPriceByOilPrice(Map<String,Object> map) throws ParseException;
     //获取货物类型
     List<Map<String,Object>> getCargoName();
     //获取油品名称

+ 20 - 12
src/main/java/com/steerinfo/dil/service/impl/AmsContractTruckPriceServiceImpl.java

@@ -16,6 +16,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -206,7 +208,7 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
      */
     @Override
     @Transactional
-    public int batchUpdateTransportPriceByOilPrice(Map<String,Object> map) {
+    public int batchUpdateTransportPriceByOilPrice(Map<String,Object> map){
         //正数的判断条件
         String flag= (String) map.get("flag");
         //运输单价变化的条数
@@ -218,21 +220,26 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
         //根据油品名称ID和非历史油价筛选出符合条件的运价合集
         List<Map<String, Object>> PriceValueList = amsContractTruckPriceMapper.getPriceValueList(oilTypeId);
         for (Map<String, Object> stringObjectMap : PriceValueList) {
+            stringObjectMap.put("priceDate",map.get("priceDate"));
             //获取该条单价的原油价基准
             BigDecimal oilpriceBase = DataChange.dataToBigDecimal(stringObjectMap.get("oilpriceBase"));
             //获取该条单价的油价变化率阈值
             BigDecimal oilpriceChangeThreshold = DataChange.dataToBigDecimal(stringObjectMap.get("oilpriceChangeThreshold"));
-            //计算油价变化率,公式:n=(当前油价-基数)÷基数×100%
-            BigDecimal n = (newOilPrice.subtract(oilpriceBase)).divide(oilpriceBase,4,4);
+            //计算油价变化率,公式:n=(当前油价-基数)÷基数×100%   (9.06-8.26)/8.26
+            BigDecimal n = (oilpriceBase.subtract(newOilPrice)).divide(newOilPrice,4,4);
             //若油价变化率超过该条单价的油价变化率阈值,修改原单价为历史数据,新增一条单价
             if(n.abs().doubleValue()>oilpriceChangeThreshold.doubleValue()){
                 //加一个判断(如果数据为正数则需要二次判断,如果数据为负数则直接生效)
-                if(newOilPrice.compareTo(oilpriceBase)==-1){
-                    //直接降低油价
-                    i+=addANewAmsContractTransportPrice(stringObjectMap,n,newOilPrice);
-                }else if (newOilPrice.compareTo(oilpriceBase)==1 && "1".equals(flag)){
-                    //加上两个判断之后
-                    i+=addANewAmsContractTransportPrice(stringObjectMap,n,newOilPrice);
+                try{
+                    if(newOilPrice.compareTo(oilpriceBase)==-1){
+                        //直接降低油价
+                        i+=addANewAmsContractTransportPrice(stringObjectMap,n,newOilPrice);
+                    }else if (newOilPrice.compareTo(oilpriceBase)==1 && "1".equals(flag)){
+                        //加上两个判断之后
+                        i+=addANewAmsContractTransportPrice(stringObjectMap,n,newOilPrice);
+                    }
+                }catch (Exception e){
+                    e.printStackTrace();
                 }
             }
         }
@@ -272,7 +279,7 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
      * @throws Exception
      */
     @Transactional
-    public int addANewAmsContractTransportPrice(Map<String, Object> stringObjectMap,BigDecimal n,BigDecimal newOilPrice){
+    public int addANewAmsContractTransportPrice(Map<String, Object> stringObjectMap,BigDecimal n,BigDecimal newOilPrice) throws ParseException {
         //定义将要改变的执行价
         BigDecimal nowPriceValue;
         //存储原运输单价实绩对象
@@ -291,7 +298,7 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
         BigDecimal i = amsContractTruckPriceMapper.selectMaxId();
         amsContractTransportPrice.setPriceId(i);
         //生成执行日期
-        amsContractTransportPrice.setPriceDate(new Date());
+        amsContractTransportPrice.setPriceDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse((String) stringObjectMap.get("priceDate")));
         //常规字段
         amsContractTransportPrice.setInsertUsername("admin");
         amsContractTransportPrice.setInsertTime(new Date());
@@ -340,13 +347,14 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
         try {
             nowPriceValue = UpdatePureBenzenePriceValueByOilPrice(n.toString(),amsContractTransportPrice.getPriceValue(),formulaId);
             //保留两位小数
-            nowPriceValue = nowPriceValue.divide(new BigDecimal(1),2,4);
+            nowPriceValue = nowPriceValue.divide(new BigDecimal(1),3,0);
             //调整纯苯运价
             amsContractTransportPrice.setPriceValue(nowPriceValue);
             //修改基准油价
             amsContractTransportPrice.setOilpriceBase(newOilPrice);
         } catch (Exception e) {
             e.printStackTrace();
+            return 0;
         }
         //新增数据
         int insert = amsContractTruckPriceMapper.insert(amsContractTransportPrice);