zengyf 2 gadi atpakaļ
vecāks
revīzija
b92d1a5f93

+ 139 - 4
src/main/java/com/steerinfo/dil/controller/AmsContractTruckPriceController.java

@@ -3,7 +3,9 @@ package com.steerinfo.dil.controller;
 import com.steerinfo.dil.feign.ColumnDataFeign;
 import com.steerinfo.dil.feign.ESFeign;
 import com.steerinfo.dil.mapper.AmsContractTruckPriceMapper;
+import com.steerinfo.dil.mapper.RmsReceivePlaceMapper;
 import com.steerinfo.dil.model.AmsContractTransportPrice;
+import com.steerinfo.dil.model.RmsReceivePlace;
 import com.steerinfo.dil.service.IAmsContractTruckPriceService;
 import com.steerinfo.dil.util.BaseRESTfulController;
 import com.steerinfo.dil.util.ColumnDataUtil;
@@ -56,16 +58,149 @@ public class AmsContractTruckPriceController extends BaseRESTfulController {
     @Autowired
     AmsContractTruckPriceMapper amsContractTruckPriceMapper;
 
-    /*@ApiOperation(value="导入单价的数据写入数据库")
+    @Autowired
+    RmsReceivePlaceMapper rmsReceivePlaceMapper;
+
+    @ApiOperation(value="导入单价的数据写入数据库")
     @PostMapping("/importDataForAmsContractTransportPrice")
-    public RESTfulResult importDataForAmsContractTransportPrice(@RequestBody(required = false) List<Map<String,Object>> mapList){
+    public RESTfulResult importDataForAmsContractTransportPrice(@RequestBody(required = false) List<Map<String,Object>> mapList,
+                                                                BigDecimal importPriceValue,String importPriceDate) throws ParseException {
         //mapList为导入的数据,遍历导入进来的数据,如果数据存在在单价当中则将旧单价改为1,新增单价为0
         //如果数据查找不到就在收货地址表新增地址,在新增单价
         //1.查询所有单价数据
-        amsContractTruckPriceMapper
+        //所有时间定为统一的值
+        Date date=new Date();
+        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         for (Map<String, Object> stringObjectMap : mapList) {
+            String address="";
+            String addressProvince="";
+            String addressDistrict="";
+            String addressDdp="";
+            //省份
+            String  s = (String) stringObjectMap.get("addressProvince");
+            if(s!=null){
+                addressProvince= s.replaceAll("省", "");
+            }
+            //市
+            String s1 = (String) stringObjectMap.get("addressDistrict");
+            if(s1!=null){
+                addressDistrict = s1.replaceAll("市", "");
+            }
+            //县
+            String addressTown = (String) stringObjectMap.get("addressTown");
+            if (addressTown==null){
+                addressTown=addressDistrict;
+                addressDistrict=addressProvince;
+            }
+            //具体地址
+            String addressDeliveryAddress = (String) stringObjectMap.get("addressDeliveryAddress");
+            if (addressDeliveryAddress==null){
+                addressDeliveryAddress=addressTown;
+            }
+            //单价价格
+            BigDecimal priceValue = DataChange.dataToBigDecimal(stringObjectMap.get("priceValue"));
+            if (priceValue==null){
+                continue;
+            }
+            //参考运距
+            BigDecimal haulDistance = DataChange.dataToBigDecimal(stringObjectMap.get("haulDistance"));
+            //吨/公里
+            BigDecimal priceTonKilometer = DataChange.dataToBigDecimal(stringObjectMap.get("priceTonKilometer"));
+            //1.把省市县地址合起来
+            addressDdp="%"+addressProvince+addressDistrict+addressTown+"%";
+            //2.把所有地址合起来
+            address="%"+addressProvince+addressDistrict+addressTown+addressDeliveryAddress+"%";
+            //把地址去数据库查询数据
+            Map<String, Object> amsPriceForImport = amsContractTruckPriceMapper.getAmsContractTransportPriceForImport(address);
+            //旧单价
+            BigDecimal priceId=BigDecimal.ZERO;
+            BigDecimal placeId=BigDecimal.ZERO;
+            if (amsPriceForImport!=null){
+                if (amsPriceForImport.get("priceId")!=null){
+                    priceId= DataChange.dataToBigDecimal(amsPriceForImport.get("priceId"));
+                }
+                placeId= DataChange.dataToBigDecimal(amsPriceForImport.get("placeId"));
+            }
+            BigDecimal addressId = amsContractTruckPriceMapper.getAddressIdForImport(addressDdp);
+            //如果区都没有的话就要把区给加上
+            if (addressId==null){
+                amsContractTruckPriceMapper.insertIntoRRAForImport(addressProvince,addressDistrict,addressTown);
+            }
+            //新增单价的数据
+            //新增的运输类型
+            AmsContractTransportPrice amsContractTransportPrice = new AmsContractTransportPrice();
+            //生成主键id
+            amsContractTransportPrice.setType(new BigDecimal(1));
+            amsContractTransportPrice.setInsertUsername("admin");
+            amsContractTransportPrice.setInsertTime(date);
+            amsContractTransportPrice.setUpdateUsername("admin");
+            amsContractTransportPrice.setUpdateTime(date);
+            amsContractTransportPrice.setInsertUpdateRemark("无");
+            amsContractTransportPrice.setDeleted(new BigDecimal(0));
+            amsContractTransportPrice.setShipperId(new BigDecimal(1));
+            amsContractTransportPrice.setOilpriceChangeThreshold(new BigDecimal(0.05));
+            amsContractTransportPrice.setOilTypeId(new BigDecimal(10));
+            amsContractTransportPrice.setCargonameId(new BigDecimal(14));
+            amsContractTransportPrice.setPriceValue(priceValue);
+            amsContractTransportPrice.setPriceDate(simpleDateFormat.parse(importPriceDate));
+            amsContractTransportPrice.setOilpriceBase(importPriceValue);
+            if (haulDistance!=null){
+                amsContractTransportPrice.setHaulDistance(haulDistance);
+            }
+            if (priceTonKilometer!=null){
+                amsContractTransportPrice.setPriceTonKilometer(priceTonKilometer);
+            }
+            if (amsPriceForImport==null||amsPriceForImport.get("placeId")==null){
+                //2.如果收货地址为空则先新增收货地址再新增单价
+                RmsReceivePlace rmsReceivePlace = new RmsReceivePlace();
+                rmsReceivePlace.setAddressId(addressId);
+                rmsReceivePlace.setAddressDeliveryAddress(addressDeliveryAddress);
+                rmsReceivePlace.setPlaceId(rmsReceivePlaceMapper.selectMaxId());
+                amsContractTransportPrice.setPlaceId(rmsReceivePlace.getPlaceId());
+                rmsReceivePlaceMapper.insertSelective(rmsReceivePlace);
+            }else {
+                amsContractTransportPrice.setPlaceId(placeId);
+            }
+            //承运商数据
+            String carrierName = (String) stringObjectMap.get("carrierName");
+            if (amsPriceForImport!=null&&amsPriceForImport.get("priceId")!=null){
+                //1.如果数据不为空(收货地址存在或者单价存在),旧单价置为1,新单价新增
+                //旧单价有值才会进行单价
+                /*List<BigDecimal> carrierIdForImport = amsContractTruckPriceMapper.getCarrierIdForImport(address);
+                for (BigDecimal bigDecimal : carrierIdForImport) {
+                    amsContractTransportPrice.setCarrierId(bigDecimal);
+                }*/
+                //旧单价置为1
+                amsContractTruckPriceMapper.updateForImport(placeId,simpleDateFormat.format(date));
+                if (carrierName!=null){
+                    String[] split = carrierName.split("/");
+                    for (String s2 : split) {
+                        BigDecimal carrierIdForCarrierName = amsContractTruckPriceMapper.getCarrierIdForCarrierName("%" + s2 + "%");
+                        amsContractTransportPrice.setCarrierId(carrierIdForCarrierName);
+                        amsContractTransportPrice.setPriceId(amsContractTruckPriceMapper.selectMaxId());
+                        amsContractTruckPriceMapper.insertSelective(amsContractTransportPrice);
+                    }
+                }else {
+                    amsContractTransportPrice.setPriceId(amsContractTruckPriceMapper.selectMaxId());
+                    amsContractTruckPriceMapper.insertSelective(amsContractTransportPrice);
+                }
+            }else {
+                if (carrierName!=null){
+                    String[] split = carrierName.split("/");
+                    for (String s2 : split) {
+                        BigDecimal carrierIdForCarrierName = amsContractTruckPriceMapper.getCarrierIdForCarrierName("%" + s2 + "%");
+                        amsContractTransportPrice.setCarrierId(carrierIdForCarrierName);
+                        amsContractTransportPrice.setPriceId(amsContractTruckPriceMapper.selectMaxId());
+                        amsContractTruckPriceMapper.insertSelective(amsContractTransportPrice);
+                    }
+                }else {
+                    amsContractTransportPrice.setPriceId(amsContractTruckPriceMapper.selectMaxId());
+                    amsContractTruckPriceMapper.insertSelective(amsContractTransportPrice);
+                }
+            }
         }
-    }*/
+        return success("导入成功");
+    }
 
     @ApiOperation(value="查询汽运单价信息")
     @ApiImplicitParams({

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

@@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Select;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -20,6 +21,18 @@ public interface AmsContractTruckPriceMapper extends IBaseMapper<AmsContractTran
     BigDecimal selectPriceMaterialMaxId();
     //获取汽运单价信息
     List<Map<String, Object>> getAmsContractTransportPrice(Map<String,Object> map);
+    //获取运价信息
+    Map<String,Object> getAmsContractTransportPriceForImport(String address);
+    //根据省市县查询出addressId
+    BigDecimal getAddressIdForImport(String address);
+    //新增地址
+    int insertIntoRRAForImport(String addressProvince,String addressDistrict,String addressTown);
+    //获取承运商
+    BigDecimal getCarrierIdForCarrierName(String carrierName);
+    //根据单价去查询数据
+    List<BigDecimal> getCarrierIdForImport(String address);
+    //更新旧单价为1
+    int updateForImport(BigDecimal placeId, String date);
     //删除单价
     int deleteSalePrice(Map<String,Object> map);
     //获取全部承运商信息

+ 59 - 0
src/main/resources/com/steerinfo/dil/mapper/AmsContractTruckPriceMapper.xml

@@ -919,6 +919,65 @@
     </if>
   </select>
 
+  <select id="getAmsContractTransportPriceForImport" resultType="java.util.Map">
+    select ACTP.PRICE_ID "priceId",RRA.ADDRESS_PROVINCE||RRA.ADDRESS_DISTRICT
+      ||RRA.ADDRESS_TOWN||RRP.ADDRESS_DELIVERY_ADDRESS "address",
+           RRP.PLACE_ID "placeId"
+    from AMS_CONTRACT_TRANSPORT_PRICE ACTP
+           LEFT JOIN RMS_RECEIVE_PLACE RRP
+                     ON RRP.PLACE_ID=ACTP.PLACE_ID
+           LEFT JOIN RMS_RECEIVE_ADDRESS RRA
+                     ON RRA.ADDRESS_ID=RRP.ADDRESS_ID
+    WHERE ACTP.DELETED=0 AND ACTP.TYPE=1
+      AND RRA.ADDRESS_PROVINCE||RRA.ADDRESS_DISTRICT
+            ||RRA.ADDRESS_TOWN||RRP.ADDRESS_DELIVERY_ADDRESS
+      LIKE #{address}
+    FETCH NEXT 1 ROW ONLY
+  </select>
+
+  <select id="getAddressIdForImport" resultType="java.math.BigDecimal">
+    select RRA.ADDRESS_ID "addressId"
+    from  RMS_RECEIVE_ADDRESS RRA
+    WHERE RRA.ADDRESS_PROVINCE||RRA.ADDRESS_DISTRICT
+            ||RRA.ADDRESS_TOWN LIKE #{address}
+  </select>
+
+  <insert id="insertIntoRRAForImport">
+    insert into RMS_RECEIVE_ADDRESS(ADDRESS_ID,ADDRESS_PROVINCE,ADDRESS_DISTRICT,ADDRESS_TOWN)
+    VALUES((SELECT max(ADDRESS_ID)+1 from RMS_RECEIVE_ADDRESS),#{addressProvince},#{addressDistrict},#{addressTown})
+  </insert>
+
+  <select id="getCarrierIdForCarrierName" resultType="java.math.BigDecimal">
+    select RC.CARRIER_ID from RMS_CARRIER RC
+    WHERE RC.CARRIER_NAME LIKE #{carrierName}
+      FETCH NEXT 1 ROW ONLY
+  </select>
+  
+  <select id="getCarrierIdForImport" resultType="java.util.List">
+    select RC.CARRIER_ID "carrierId"
+    from AMS_CONTRACT_TRANSPORT_PRICE ACTP
+           LEFT JOIN RMS_RECEIVE_PLACE RRP
+                     ON RRP.PLACE_ID=ACTP.PLACE_ID
+           LEFT JOIN RMS_RECEIVE_ADDRESS RRA
+                     ON RRA.ADDRESS_ID=RRP.ADDRESS_ID
+           LEFT JOIN RMS_CARRIER RC
+                     ON RC.CARRIER_ID=ACTP.CARRIER_ID
+    WHERE ACTP.DELETED=0 AND ACTP.TYPE=1
+      AND RRA.ADDRESS_PROVINCE||RRA.ADDRESS_DISTRICT
+            ||RRA.ADDRESS_TOWN||RRP.ADDRESS_DELIVERY_ADDRESS
+      LIKE #{address}
+  </select>
+
+  <update id="updateForImport">
+    update AMS_CONTRACT_TRANSPORT_PRICE ACTP
+    set ACTP.DELETED=1
+    WHERE ACTP.PLACE_ID=#{placeId}
+    and to_date(to_char(ACTP.INSERT_TIME,'yyyy-MM-dd hh24:mi:ss'),'yyyy-MM-dd hh24:mi:ss')
+            <![CDATA[<]]>= to_date(#{date},'yyyy-MM-dd hh24:mi:ss')
+  </update>
+  <!--to_date(to_char(ACTP.INSERT_TIME,'yyyy-MM-dd hh24:mi:ss'),'yyyy-MM-dd hh24:mi:ss')
+            <![CDATA[<]]>= to_date(#{date},'yyyy-MM-dd hh24:mi:ss')-->
+
   <!--删除单价-->
   <delete id="deleteSalePrice">
     DELETE AMS_CONTRACT_TRANSPORT_PRICE ACTP