| 
					
				 | 
			
			
				@@ -15,8 +15,8 @@ import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.lang.reflect.Array; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.math.BigDecimal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.math.RoundingMode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.text.ParseException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.text.SimpleDateFormat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.*; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -53,6 +53,9 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private RmsLineNodePointMapper rmsLineNodePointMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    AmsContractTruckPriceServiceImpl amsContractTruckPriceService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 新增汽运单价 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @Author zzd 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -161,9 +164,9 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //修改地址 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         amsContractTruckPriceMapper.updateaddressDeliveryAddress(map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //修改运价 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        amsContractTruckPriceMapper.updatePriceValue(map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        amsContractTruckPriceService.updatePriceValue(map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //修改运输距离 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        amsContractTruckPriceMapper.updateHaulDistance(map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //amsContractTruckPriceMapper.updateHaulDistance(map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //根据地址查询出单价表大部分值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         AmsContractTransportPrice amsContractTransportPrice = amsContractTruckPriceMapper.getOnePriceMap(map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //修改的时间 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -237,6 +240,14 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public int updatePriceValue(Map<String,Object> map) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        BigDecimal haulDistance = DataChange.dataToBigDecimal(map.get("haulDistance")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        BigDecimal priceValue = DataChange.dataToBigDecimal(map.get("priceValue")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (haulDistance!=null&&haulDistance.compareTo(BigDecimal.ZERO)!=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BigDecimal priceTonKilometer = amsContractTruckPriceService.calculationPriceTonKilometerNew(haulDistance, priceValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            map.put("priceTonKilometer",priceTonKilometer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return amsContractTruckPriceMapper.updatePriceValueNew(map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return amsContractTruckPriceMapper.updatePriceValue(map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -329,7 +340,7 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Transactional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public int batchUpdateTransportPriceByOilPrice(Map<String,Object> map){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public synchronized int batchUpdateTransportPriceByOilPrice(Map<String,Object> map){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //正数的判断条件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String flag= (String) map.get("flag"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //运输单价变化的条数 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -351,9 +362,12 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //判断省市区(镇),拿到关联的中标数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     Map<String, Object> zb = amsContractTruckPriceMapper.selectByPlaceId(DataChange.dataToBigDecimal(stringObjectMap.get("placeId"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(zb == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     BigDecimal zbDistance = DataChange.dataToBigDecimal(zb.get("haulDistance")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     BigDecimal distance = DataChange.dataToBigDecimal(stringObjectMap.get("haulDistance")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (zbDistance.intValue()!=0 && distance.intValue()!=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (zbDistance != null && distance != null && zbDistance.intValue()!=0 && distance.intValue()!=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         BigDecimal subtract = zbDistance.subtract(distance); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (subtract.intValue()>10 || subtract.intValue()<-10){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             //大于正负10km重新计算价格 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -375,7 +389,9 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //获取该条单价的油价变化率阈值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BigDecimal oilpriceChangeThreshold = DataChange.dataToBigDecimal(stringObjectMap.get("oilpriceChangeThreshold")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //计算油价变化率,公式:n=(当前油价-基数)÷基数×100%   (9.06-8.26)/8.26 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BigDecimal n = (oilpriceBase.subtract(newOilPrice)).divide(newOilPrice,4,4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BigDecimal n = (newOilPrice.subtract(oilpriceBase)).divide(oilpriceBase,4,4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            System.out.println(n); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //return i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //若油价变化率超过该条单价的油价变化率阈值,修改原单价为历史数据,新增一条单价 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if(n.abs().doubleValue()>oilpriceChangeThreshold.doubleValue()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //加一个判断(如果数据为正数则需要二次判断,如果数据为负数则直接生效) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -445,6 +461,7 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         AmsContractTransportPrice amsContractTransportPrice = amsContractTruckPriceMapper.selectByPrimaryKey(priceId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //生成主键 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BigDecimal i = amsContractTruckPriceMapper.selectMaxId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //如果是钢材的单价那么就需要改变吨公里 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         amsContractTransportPrice.setPriceId(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //生成执行日期 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         amsContractTransportPrice.setPriceDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse((String) stringObjectMap.get("priceDate"))); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -505,6 +522,10 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(amsContractTransportPrice.getType().compareTo(new BigDecimal(1)) == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BigDecimal newOldPriceTonKilometer = amsContractTransportPrice.getPriceValue().divide(amsContractTransportPrice.getHaulDistance(),4, RoundingMode.HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            amsContractTransportPrice.setPriceTonKilometer(newOldPriceTonKilometer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //新增数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         int insert = amsContractTruckPriceMapper.insert(amsContractTransportPrice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return insert; 
			 |