zengyf 2 lat temu
rodzic
commit
9d4e3ff777

+ 46 - 39
src/main/java/com/steerinfo/dil/controller/AmsContractTruckPriceController.java

@@ -20,7 +20,9 @@ import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
 import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * AmsContractTransportPrice RESTful接口:
@@ -193,7 +195,7 @@ public class AmsContractTruckPriceController extends BaseRESTfulController {
                                                       Integer apiId,
                                                       Integer pageNum,
                                                       Integer pageSize,
-                                                      String con,String userId){
+                                                      String con,String userId) throws ParseException {
         if (con != null && !con.equals("undefined")) {
             mapValue.put("con","%" + con + "%");
         }
@@ -202,47 +204,52 @@ public class AmsContractTruckPriceController extends BaseRESTfulController {
            String carrierName1 = amsContractTruckPriceService.getCarrierNameForDetail(userId);
            mapValue.put("carrierName1","%" + carrierName1 + "%");
         }
-        //不分页筛选数据
-        PageHelper.startPage(pageNum,pageSize);
-        //分页数据
+        //1.先查询出收货地址的所有收货ID
+        List<Map<String, Object>> receiveAddress = amsContractTruckPriceService.getReceiveAddressId(mapValue);
+        //2.查询出该收货所有的单价信息
         List<Map<String, Object>> saleOrderList = amsContractTruckPriceService.getAmsContractTransportPriceForDetail(mapValue);
-        List<Map<String, Object>> columnDataList = columnDataFeign.getColumnData(apiId);
-        int i=0;
-        for (Map<String, Object> columnData : columnDataList) {
-            //每个表头字段的过滤条件
-            columnData.put("filters", setListMap(saleOrderList, columnData.get("prop").toString()));
-            if (i==0){
-                columnData.put("min-width","78px");
-            }else if (i==2){
-                columnData.put("min-width","94px");
+        //3.遍历查询出最近的单价信息
+        List<Map<String,Object>> salePriceList=new LinkedList<>();
+        //格式化
+        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
+        //获取数据的订单时间
+        Date orderTime = simpleDateFormat.parse((String) mapValue.get("orderTime"));
+        //最近的留下
+        for (Map<String, Object> address : receiveAddress) {
+            String address1 = (String) address.get("address");
+            //BigDecimal placeId = bigDecimal;
+            Map<String,Object> map1=new HashMap<>();
+            int flag=0;
+            for (Map<String, Object> stringObjectMap : saleOrderList) {
+                String address2 = (String) stringObjectMap.get("address");
+                //单价的执行日期
+                Date priceDate = (Date) stringObjectMap.get("priceDate");
+                String format = simpleDateFormat.format(priceDate);
+                Date parse = simpleDateFormat.parse(format);
+                //Date parse1 = simpleDateFormat.parse("2022-12-10")
+                if (parse.before(orderTime)||parse.equals(orderTime)){
+                    if (address2.equals(address1)){
+                        flag=1;
+                        if (map1.size()==0){
+                            map1.putAll(stringObjectMap);
+                        }else{
+                            //比较日期(如果日期在存入的日期之后,则存入该日期)
+                            Date priceDate1 = (Date) map1.get("priceDate");
+                            String format1 = simpleDateFormat.format(priceDate1);
+                            Date parse1 = simpleDateFormat.parse(format1);
+                            if (parse.after(parse1)){
+                                map1.clear();
+                                map1.putAll(stringObjectMap);
+                            }
+                        }
+                    }
+                }
+            }
+            if (flag==1){
+                salePriceList.add(map1);
             }
-            i++;
         }
-        PageListAdd pageList = new PageListAdd(saleOrderList);
-        pageList.setColumnData(columnDataList);
-        //PageListAdd pageList = columnDataUtil.tableColumnData(apiId, null,saleOrderList);
-        return success(pageList);
-//        if(con !=null){
-//            mapValue.put("con",con);
-//        }
-//        PageHelper.startPage(pageNum,pageSize);
-//        if (userId!=null){
-//            //查询承运商ID
-//            String carrierName = amsContractTruckPriceService.getCarrierNameForDetail(userId);
-//            mapValue.put("carrierName1",carrierName);
-//        }
-//        List<Map<String, Object>> amsContractTransportPrice1 = amsContractTruckPriceService.getAmsContractTransportPriceForDetail(mapValue);
-//        List<Map<String, Object>> columnDataList = columnDataFeign.getColumnData(apiId);
-//        for (Map<String, Object> columnData : columnDataList) {
-//            //每个表头字段的过滤条件
-//            if(columnData.get("isFilter") == null || DataChange.dataToBigDecimal(columnData.get("isFilter")).intValue() == 1) {
-//                columnData.put("filters", setListMap(amsContractTransportPrice1, columnData.get("prop").toString()));
-//            }
-//        }
-//        PageListAdd pageList = new PageListAdd(amsContractTransportPrice1);
-//        pageList.setColumnData(columnDataList);
-//        //PageListAdd pageList = columnDataUtil.tableColumnData(apiId, null,amsContractTransportPrice1);
-//        return success(pageList);
+        return success(salePriceList);
     }
 
     @ApiOperation(value="查询内转汽运单价信息")

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

@@ -44,6 +44,8 @@ public interface AmsContractTruckPriceMapper extends IBaseMapper<AmsContractTran
     int updateHaulDistance(Map<String,Object> map);
     //获取承运商信息
     String getCarrierNameForDetail(String userId);
+    //获取收货地址的信息
+    List<Map<String,Object>> getReceiveAddressId(Map<String,Object> map);
     //获取已经计算出的单价值
     AmsContractTransportPrice getOnePriceMap(Map<String,Object> map);
     //获取汽运单价信息

+ 4 - 0
src/main/java/com/steerinfo/dil/mapper/AmsSaleOrderMaterialMapper.java

@@ -53,6 +53,10 @@ public interface AmsSaleOrderMaterialMapper extends IBaseMapper<AmsSaleOrderMate
     BigDecimal getIsSteel(BigDecimal lineId);
 
     List<Map<String, Object>> getPlaceId(String place,BigDecimal shippingAddressId);
+    //通过收货地址ID去查询单价信息
+    BigDecimal getPriceIdForUpdate(BigDecimal placeId);
+    //更新单价Id
+    int updateOmstruckOrder(BigDecimal priceId,BigDecimal orderId);
     // 通过销售订单id查询出销售订单信息
     Map<String, Object> getSaleMessage(BigDecimal saleOrderId);
     // 通过承运商id查询单价

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

@@ -41,6 +41,8 @@ public interface IAmsContractTruckPriceService {
     List<Map<String, Object>> getAmsContractTransportPriceForDetail(Map<String,Object> map);
     //获取承运商
     String getCarrierNameForDetail(String userId);
+    //获取收货地址的Id
+    List<Map<String,Object>> getReceiveAddressId(Map<String,Object> map);
     //通过主键删除汽运单价
     int deleteAmsContractTransportPrice(BigDecimal priceId);
     //获取承运商名称

+ 5 - 0
src/main/java/com/steerinfo/dil/service/impl/AmsContractTruckPriceServiceImpl.java

@@ -262,6 +262,11 @@ public class AmsContractTruckPriceServiceImpl implements IAmsContractTruckPriceS
         return amsContractTruckPriceMapper.getCarrierNameForDetail(userId);
     }
 
+    @Override
+    public List<Map<String,Object>> getReceiveAddressId(Map<String,Object> map){
+        return amsContractTruckPriceMapper.getReceiveAddressId(map);
+    }
+
     @Override
     public int deleteAmsContractTransportPrice(BigDecimal priceId) {
         AmsContractTransportPrice amsContractTransportPrice = new AmsContractTransportPrice();

+ 19 - 1
src/main/java/com/steerinfo/dil/service/impl/AmsSaleOrderServiceImpl.java

@@ -1626,7 +1626,7 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public int updateCarAddress(Map<String, Object> mapValue) {
+    public int  updateCarAddress(Map<String, Object> mapValue) {
         // 判断是否需要删除金蝶分录
         Integer isCloseEas = (Integer) mapValue.get("isCloseEas");
         String operateName = (String) mapValue.get("operateName");
@@ -1686,6 +1686,24 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
         addressids =addressid1+","+addressid2;
         amsSaleOrderMaterial.setShippingAddressIds(addressids);
         result += amsSaleOrderMaterialMapper.updateByPrimaryKeySelective(amsSaleOrderMaterial);
+        //给改了收货地址的车换单价
+        try {
+            if(orderId != null && orderId.intValue() != 0){
+                //1.查看地址是否存在单价
+                BigDecimal priceId = amsSaleOrderMaterialMapper.getPriceIdForUpdate(addressid2);
+                if (priceId!=null){
+                    //把当前的单价给修改进运输单中
+                    amsSaleOrderMaterialMapper.updateOmstruckOrder(priceId,orderId);
+                }else {
+                    //把0存入运输单中
+                    priceId=BigDecimal.ZERO;
+                    amsSaleOrderMaterialMapper.updateOmstruckOrder(priceId,orderId);
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            System.out.println("e"+e.getMessage());
+        }
         // 需要换车
         if (isNewCar != null && (Integer) isNewCar == 0) {
             // 根据车序号得到定向派单表主键

+ 19 - 28
src/main/resources/com/steerinfo/dil/mapper/AmsContractTruckPriceMapper.xml

@@ -977,6 +977,19 @@
     WHERE SU.USER_ID=#{userId}
   </select>
 
+  <!--获取收货地址ID-->
+  <select id="getReceiveAddressId" resultType="java.util.LinkedHashMap">
+    SELECT DISTINCT RRA.ADDRESS_PROVINCE ||
+                    RRA.ADDRESS_DISTRICT || RRA.ADDRESS_TOWN ||
+                    RRP.ADDRESS_DELIVERY_ADDRESS "address"
+    FROM RMS_RECEIVE_PLACE RRP
+           LEFT JOIN RMS_RECEIVE_ADDRESS RRA
+                     ON RRA.ADDRESS_ID=RRP.ADDRESS_ID
+    WHERE RRA.ADDRESS_PROVINCE ||
+          RRA.ADDRESS_DISTRICT || RRA.ADDRESS_TOWN ||
+          RRP.ADDRESS_DELIVERY_ADDRESS like #{con}
+  </select>
+
   <!--获取全部承运商的信息-->
   <select id="getCarrierListByPrice" resultType="java.util.LinkedHashMap">
     select p0.*,(SELECT COUNT(*) "total" FROM RMS_CARRIER RC) "total" from (select RC.CARRIER_NAME "carrierName",RC.CARRIER_ID "carrierId",ROWNUM r
@@ -1092,7 +1105,7 @@
   <!--更新运价(无运输距离的)-->
   <update id="updatePriceValueNew">
     UPDATE AMS_CONTRACT_TRANSPORT_PRICE ACTP
-    SET ACTP.PRICE_VALUE=#{priceValue},ACTP.HAUL_DISTANCE=#{haulDistance}
+    SET ACTP.PRICE_VALUE=#{priceValue}
     where ACTP.PRICE_ID IN(
       select
         DISTINCT
@@ -1229,30 +1242,6 @@
   </select>
 
   <select id="getAddressDeliveryAddressForDetails" resultType="java.util.LinkedHashMap">
-    <!--SELECT *
-    FROM (SELECT
-    distinct
-    RRA.ADDRESS_ID "addressId",
-    RRA.ADDRESS_PROVINCE "province",
-    RRA.ADDRESS_DISTRICT "district",
-    RRA.ADDRESS_TOWN "town",
-    RRP.ADDRESS_DELIVERY_ADDRESS "address1",
-    RRA.ADDRESS_PROVINCE ||RRA.ADDRESS_DISTRICT|| RRA.ADDRESS_TOWN||RRP.ADDRESS_DELIVERY_ADDRESS "address",
-    RRP.PLACE_ID "placeId",
-    TO_CHAR(ACTP.PRICE_VALUE, '9999999990.99') "pricevalue",
-    ACTP.PRICE_ID  "priceid"
-    FROM RMS_RECEIVE_ADDRESS RRA
-    LEFT JOIN RMS_RECEIVE_PLACE RRP
-    ON RRP.ADDRESS_ID=RRA.ADDRESS_ID
-    LEFT JOIN AMS_CONTRACT_TRANSPORT_PRICE ACTP
-    ON ACTP.PLACE_ID=RRP.PLACE_ID
-    WHERE ACTP.DELETED = 0
-    and ACTP.ISSTANDARD IS NULL
-    ) RRRA
-    <if test="con != null" >
-      WHERE RRRA."address" LIKE #{con}
-    </if>
-    order by RRRA."pricevalue"  asc nulls last-->
     select * from(
     select a_t_price.PRICE_ID "priceid",
     r_r_address.ADDRESS_PROVINCE "addressProvince",
@@ -1287,10 +1276,11 @@
     on rs.SHIPPER_ID = a_t_price.SHIPPER_ID
     <where>
       TYPE=1
-      and a_t_price.ISSTANDARD is null
-      and a_t_price.DELETED = 0
+      --and a_t_price.ISSTANDARD is null
+      --and a_t_price.DELETED = 0
       <if test="carrierName1!=null and carrierName1 != ''.toString() ">
-        and r_carrier.CARRIER_NAME like CONCAT('%',CONCAT(#{carrierName1},'%'))
+        and (r_carrier.CARRIER_NAME like CONCAT('%',CONCAT(#{carrierName1},'%'))
+        or r_carrier.CARRIER_NAME is null)
       </if>
       <if test="con !=null and con != ''.toString()">
         and
@@ -1299,6 +1289,7 @@
         like CONCAT('%',CONCAT(#{con},'%'))
       </if>
     </where>
+        order by a_t_price.INSERT_TIME desc
     )
   </select>
 

+ 13 - 0
src/main/resources/com/steerinfo/dil/mapper/AmsSaleOrderMaterialMapper.xml

@@ -889,6 +889,19 @@
     AND RRP.ADDRESS_ID = #{shippingAddressId}
   </select>
 
+  <update id="updateOmstruckOrder">
+    update OMSTRUCK_ORDER
+    SET PRICE_ID=#{priceId}
+    WHERE ORDER_ID=#{orderId}
+  </update>
+
+  <select id="getPriceIdForUpdate" resultType="java.math.BigDecimal">
+    select ACTP.PRICE_ID,ACTP.* from AMS_CONTRACT_TRANSPORT_PRICE ACTP
+    WHERE ACTP.PLACE_ID=#{placeId}
+    ORDER BY ACTP.PRICE_DATE DESC
+      FETCH NEXT 1 ROWS ONLY
+  </select>
+
   <select id="getSaleMessage" parameterType="DECIMAL" resultType="java.util.Map" >
     SELECT ASO.SALE_ORDER_ISSELF_MENTION AS "isSelfMention",
            ASO.RECEIVE_ID                AS "receiveId"