| 
					
				 | 
			
			
				@@ -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); 
			 |