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