Bläddra i källkod

Merge branch 'master' of https://git.steerinfo.com/DAL-DAZHOU/DAL-DAZHOU-AMS-API

liyg 2 år sedan
förälder
incheckning
53e63e4d1d

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

@@ -72,7 +72,11 @@ public class AmsContractTruckPriceController extends BaseRESTfulController {
         if(con !=null){
             mapValue.put("con",con);
         }
-        PageHelper.startPage(pageNum,pageSize);
+        if(pageNum==null&&pageSize==null){
+
+        }else {
+            PageHelper.startPage(pageNum, pageSize);
+        }
         List<Map<String, Object>> amsContractTransportPrice1 = amsContractTruckPriceService.getAmsContractTransportPrice(mapValue);
         //PageListAdd pageList = columnDataUtil.tableColumnData(apiId, null,amsContractTransportPrice1);
         List<Map<String, Object>> columnDataList = columnDataFeign.getColumnData(apiId);

+ 2 - 0
src/main/java/com/steerinfo/dil/mapper/AmsContractTruckPriceMapper.java

@@ -38,6 +38,8 @@ public interface AmsContractTruckPriceMapper extends IBaseMapper<AmsContractTran
     int updateaddressDeliveryAddress(Map<String,Object> map);
     //更新单价
     int updatePriceValue(Map<String,Object> map);
+    //更新单价(无运输距离)
+    int updatePriceValueNew(Map<String,Object> map);
     //更新单价
     int updateHaulDistance(Map<String,Object> map);
     //获取承运商信息

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

@@ -35,7 +35,7 @@ public interface IAmsContractTruckPriceService {
     List<Map<String, Object>> getCarrierListByAddress(Map<String,Object> map);
     //更新卸货地址
     int updateaddressDeliveryAddress(Map<String,Object> map);
-    //更新卸货地址
+    //更新单价
     int updatePriceValue(Map<String,Object> map);
     //获取汽运单价信息(计费详单专用)
     List<Map<String, Object>> getAmsContractTransportPriceForDetail(Map<String,Object> map);

+ 12 - 8
src/main/java/com/steerinfo/dil/service/impl/AmsContractTransportPriceServiceImpl.java

@@ -130,10 +130,12 @@ public class AmsContractTransportPriceServiceImpl implements IAmsContractTranspo
                 amsContractTransportPrice.setCarrierId(DataChange.dataToBigDecimal(split[i]));
                 //生成主键id
                 amsContractTransportPrice.setPriceId(amsContractTruckPriceMapper.selectMaxId());
-                if(lineId.compareTo(BigDecimal.ZERO)==0){
-                    //计算并插入吨公里
-                    BigDecimal priceTonKilometer = amsContractTruckPriceService.calculationPriceTonKilometerNew(haulDistance, priceValue);
-                    amsContractTransportPrice.setPriceTonKilometer(priceTonKilometer);
+                if (haulDistance!=null){
+                    if(lineId.compareTo(BigDecimal.ZERO)==0){
+                        //计算并插入吨公里
+                        BigDecimal priceTonKilometer = amsContractTruckPriceService.calculationPriceTonKilometerNew(haulDistance, priceValue);
+                        amsContractTransportPrice.setPriceTonKilometer(priceTonKilometer);
+                    }
                 }
                 amsContractTransportPrice.setType(new BigDecimal(1));
                 amsContractTransportPrice.setInsertUsername("admin");
@@ -186,10 +188,12 @@ public class AmsContractTransportPriceServiceImpl implements IAmsContractTranspo
             amsContractTransportPrice.setCarrierId(DataChange.dataToBigDecimal(split[0]));
             //生成主键id
             amsContractTransportPrice.setPriceId(amsContractTruckPriceMapper.selectMaxId());
-            if(lineId.compareTo(BigDecimal.ZERO)==0){
-                //计算并插入吨公里
-                BigDecimal priceTonKilometer = amsContractTruckPriceService.calculationPriceTonKilometerNew(haulDistance, priceValue);
-                amsContractTransportPrice.setPriceTonKilometer(priceTonKilometer);
+            if (haulDistance!=null){
+                if(lineId.compareTo(BigDecimal.ZERO)==0){
+                    //计算并插入吨公里
+                    BigDecimal priceTonKilometer = amsContractTruckPriceService.calculationPriceTonKilometerNew(haulDistance, priceValue);
+                    amsContractTransportPrice.setPriceTonKilometer(priceTonKilometer);
+                }
             }
             amsContractTransportPrice.setType(new BigDecimal(1));
             amsContractTransportPrice.setInsertUsername("admin");

+ 27 - 6
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.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;

+ 26 - 3
src/main/resources/com/steerinfo/dil/mapper/AmsContractTruckPriceMapper.xml

@@ -276,7 +276,7 @@
       </if>
     </where>
   </sql>
-  <delete id="deleteByPrimaryKey" parameterType="java.lang.Short">
+  <delete id="deleteByPrimaryKey" parameterType="java.math.BigDecimal">
     delete from AMS_CONTRACT_TRANSPORT_PRICE
     where PRICE_ID = #{priceId,jdbcType=DECIMAL}
   </delete>
@@ -611,7 +611,7 @@
     </set>
     where PRICE_ID = #{priceId,jdbcType=DECIMAL}
   </update>
-  <select id="selectByPrimaryKey" parameterType="java.lang.Short" resultMap="BaseResultMap">
+  <select id="selectByPrimaryKey" parameterType="java.math.BigDecimal" resultMap="BaseResultMap">
     <include refid="select" />
     where PRICE_ID = #{priceId,jdbcType=DECIMAL}
   </select>
@@ -1002,6 +1002,8 @@
     WHERE RRA.ADDRESS_PROVINCE||RRA.ADDRESS_DISTRICT||RRA.ADDRESS_TOWN||
     RRP.ADDRESS_DELIVERY_ADDRESS
     =#{addressProvince}||#{addressDistrict}||#{addressTown}||#{addressDeliveryAddress}
+    and ACTP.TYPE=1 AND ACTP.DELETED=0
+    and RC.CARRIER_NAME is not null
   </select>
 
   <!--获取全部承运商的信息-->
@@ -1072,7 +1074,8 @@
   <!--更新运价-->
   <update id="updatePriceValue">
     UPDATE AMS_CONTRACT_TRANSPORT_PRICE ACTP
-    SET ACTP.PRICE_VALUE=#{priceValue}
+    SET ACTP.PRICE_VALUE=#{priceValue},ACTP.HAUL_DISTANCE=#{haulDistance},
+        ACTP.PRICE_TON_KILOMETER=#{priceTonKilometer}
     where ACTP.PRICE_ID IN(
     select
     DISTINCT
@@ -1086,6 +1089,23 @@
     =#{addressProvince}||#{addressDistrict}||#{addressTown}||#{addressDeliveryAddress})
   </update>
 
+  <!--更新运价(无运输距离的)-->
+  <update id="updatePriceValueNew">
+    UPDATE AMS_CONTRACT_TRANSPORT_PRICE ACTP
+    SET ACTP.PRICE_VALUE=#{priceValue},ACTP.HAUL_DISTANCE=#{haulDistance}
+    where ACTP.PRICE_ID IN(
+      select
+        DISTINCT
+        ACTP.PRICE_ID  from RMS_RECEIVE_PLACE RRP
+                              LEFT JOIN RMS_RECEIVE_ADDRESS RRA
+                                        ON RRA.ADDRESS_ID=RRP.ADDRESS_ID
+                              LEFT JOIN AMS_CONTRACT_TRANSPORT_PRICE ACTP
+                                        ON ACTP.PLACE_ID=RRP.PLACE_ID
+      WHERE RRA.ADDRESS_PROVINCE||RRA.ADDRESS_DISTRICT||RRA.ADDRESS_TOWN||
+            RRP.ADDRESS_DELIVERY_ADDRESS
+              =#{addressProvince}||#{addressDistrict}||#{addressTown}||#{addressDeliveryAddress})
+  </update>
+
   <!--更新距离-->
   <update id="updateHaulDistance">
     UPDATE AMS_CONTRACT_TRANSPORT_PRICE ACTP
@@ -1521,6 +1541,9 @@
         from  AMS_CONTRACT_TRANSPORT_PRICE
        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
+       AND DELETED = 0
+       ORDER BY PRICE_DATE DESC
+       FETCH FIRST 1 ROW ONLY
   </select>
 
   <update id="updateByPriceId" parameterType="map">

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

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