luobang 2 years ago
parent
commit
40615ddd9f

+ 14 - 4
src/main/java/com/steerinfo/dil/service/impl/AmsContractTruckPriceServiceImpl.java

@@ -15,8 +15,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
-import java.lang.reflect.Array;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.ParseException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.*;
@@ -329,7 +329,7 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
      */
      */
     @Override
     @Override
     @Transactional
     @Transactional
-    public int batchUpdateTransportPriceByOilPrice(Map<String,Object> map){
+    public synchronized int batchUpdateTransportPriceByOilPrice(Map<String,Object> map){
         //正数的判断条件
         //正数的判断条件
         String flag= (String) map.get("flag");
         String flag= (String) map.get("flag");
         //运输单价变化的条数
         //运输单价变化的条数
@@ -351,9 +351,12 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
                 }else{
                 }else{
                     //判断省市区(镇),拿到关联的中标数据
                     //判断省市区(镇),拿到关联的中标数据
                     Map<String, Object> zb = amsContractTruckPriceMapper.selectByPlaceId(DataChange.dataToBigDecimal(stringObjectMap.get("placeId")));
                     Map<String, Object> zb = amsContractTruckPriceMapper.selectByPlaceId(DataChange.dataToBigDecimal(stringObjectMap.get("placeId")));
+                    if(zb == null){
+                        continue;
+                    }
                     BigDecimal zbDistance = DataChange.dataToBigDecimal(zb.get("haulDistance"));
                     BigDecimal zbDistance = DataChange.dataToBigDecimal(zb.get("haulDistance"));
                     BigDecimal distance = DataChange.dataToBigDecimal(stringObjectMap.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);
                         BigDecimal subtract = zbDistance.subtract(distance);
                         if (subtract.intValue()>10 || subtract.intValue()<-10){
                         if (subtract.intValue()>10 || subtract.intValue()<-10){
                             //大于正负10km重新计算价格
                             //大于正负10km重新计算价格
@@ -375,7 +378,9 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
             //获取该条单价的油价变化率阈值
             //获取该条单价的油价变化率阈值
             BigDecimal oilpriceChangeThreshold = DataChange.dataToBigDecimal(stringObjectMap.get("oilpriceChangeThreshold"));
             BigDecimal oilpriceChangeThreshold = DataChange.dataToBigDecimal(stringObjectMap.get("oilpriceChangeThreshold"));
             //计算油价变化率,公式:n=(当前油价-基数)÷基数×100%   (9.06-8.26)/8.26
             //计算油价变化率,公式: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()){
             if(n.abs().doubleValue()>oilpriceChangeThreshold.doubleValue()){
                 //加一个判断(如果数据为正数则需要二次判断,如果数据为负数则直接生效)
                 //加一个判断(如果数据为正数则需要二次判断,如果数据为负数则直接生效)
@@ -445,6 +450,7 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
         AmsContractTransportPrice amsContractTransportPrice = amsContractTruckPriceMapper.selectByPrimaryKey(priceId);
         AmsContractTransportPrice amsContractTransportPrice = amsContractTruckPriceMapper.selectByPrimaryKey(priceId);
         //生成主键
         //生成主键
         BigDecimal i = amsContractTruckPriceMapper.selectMaxId();
         BigDecimal i = amsContractTruckPriceMapper.selectMaxId();
+        //如果是钢材的单价那么就需要改变吨公里
         amsContractTransportPrice.setPriceId(i);
         amsContractTransportPrice.setPriceId(i);
         //生成执行日期
         //生成执行日期
         amsContractTransportPrice.setPriceDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse((String) stringObjectMap.get("priceDate")));
         amsContractTransportPrice.setPriceDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse((String) stringObjectMap.get("priceDate")));
@@ -505,6 +511,10 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
             e.printStackTrace();
             e.printStackTrace();
             return 0;
             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);
         int insert = amsContractTruckPriceMapper.insert(amsContractTransportPrice);
         return insert;
         return insert;

+ 5 - 2
src/main/resources/com/steerinfo/dil/mapper/AmsContractTruckPriceMapper.xml

@@ -276,7 +276,7 @@
       </if>
       </if>
     </where>
     </where>
   </sql>
   </sql>
-  <delete id="deleteByPrimaryKey" parameterType="java.lang.Short">
+  <delete id="deleteByPrimaryKey" parameterType="java.math.BigDecimal">
     delete from AMS_CONTRACT_TRANSPORT_PRICE
     delete from AMS_CONTRACT_TRANSPORT_PRICE
     where PRICE_ID = #{priceId,jdbcType=DECIMAL}
     where PRICE_ID = #{priceId,jdbcType=DECIMAL}
   </delete>
   </delete>
@@ -611,7 +611,7 @@
     </set>
     </set>
     where PRICE_ID = #{priceId,jdbcType=DECIMAL}
     where PRICE_ID = #{priceId,jdbcType=DECIMAL}
   </update>
   </update>
-  <select id="selectByPrimaryKey" parameterType="java.lang.Short" resultMap="BaseResultMap">
+  <select id="selectByPrimaryKey" parameterType="java.math.BigDecimal" resultMap="BaseResultMap">
     <include refid="select" />
     <include refid="select" />
     where PRICE_ID = #{priceId,jdbcType=DECIMAL}
     where PRICE_ID = #{priceId,jdbcType=DECIMAL}
   </select>
   </select>
@@ -1521,6 +1521,9 @@
         from  AMS_CONTRACT_TRANSPORT_PRICE
         from  AMS_CONTRACT_TRANSPORT_PRICE
        where place_id in (select place_id from RMS_RECEIVE_PLACE t where address_id =
        where place_id in (select place_id from RMS_RECEIVE_PLACE t where address_id =
        (select address_id from RMS_RECEIVE_PLACE t where place_id=#{placeId} )) and reference_ht is not null
        (select address_id from RMS_RECEIVE_PLACE t where place_id=#{placeId} )) and reference_ht is not null
+       AND DELETED = 0
+       ORDER BY PRICE_DATE DESC
+       FETCH FIRST 1 ROW ONLY
   </select>
   </select>
 
 
   <update id="updateByPriceId" parameterType="map">
   <update id="updateByPriceId" parameterType="map">

+ 3 - 0
src/main/resources/com/steerinfo/dil/mapper/AmsSaleOrderMapper.xml

@@ -1552,6 +1552,9 @@
     <if test="saler != null " >
     <if test="saler != null " >
         and  R_SALER.INSERT_UPDATE_REMARK like  #{saler}
         and  R_SALER.INSERT_UPDATE_REMARK like  #{saler}
     </if>
     </if>
+    <if test="consigneeName != null">
+      and r_consignee.CONSIGNEE_COMPANY_NAME = #{consigneeName}
+    </if>
     <if test="oneDate != null">
     <if test="oneDate != null">
       and to_date(#{oneDate}, 'yyyy-mm-dd hh24:mi:ss') &lt;= a_s_order.UPDATE_TIME
       and to_date(#{oneDate}, 'yyyy-mm-dd hh24:mi:ss') &lt;= a_s_order.UPDATE_TIME
     </if>
     </if>