From 5470d21a35286abe41fafc25a7deaabefd7c55da Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 28 五月 2024 14:30:21 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushMinistryOfTransportUtil.java |  273 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 273 insertions(+), 0 deletions(-)

diff --git a/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushMinistryOfTransportUtil.java b/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushMinistryOfTransportUtil.java
index 151d17a..53916d2 100644
--- a/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushMinistryOfTransportUtil.java
+++ b/UserNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushMinistryOfTransportUtil.java
@@ -14,6 +14,8 @@
 import com.stylefeng.guns.modular.system.service.*;
 import com.stylefeng.guns.modular.taxi.model.TransactionDetails;
 import com.stylefeng.guns.modular.taxi.service.ITransactionDetailsService;
+import com.stylefeng.guns.modular.transfer.model.OrderTransferCar;
+import com.stylefeng.guns.modular.transfer.server.IOrderTransferService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -66,6 +68,9 @@
     @Autowired
     private IOrderEvaluateService orderEvaluateService;
 
+    @Autowired
+    private IOrderTransferService orderTransferService;
+
     private String path = "http://120.77.11.218:8868/";
 
 
@@ -107,6 +112,43 @@
         OrderCancel query = null;
         try {
             query = orderCancelService.query(orderId, 1, null, null, 2);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        Map<String, String> geocode = null;
+        try {
+            geocode = gdMapGeocodingUtil.geocode(orderPrivateCar.getBoardingLon().toString(),
+                    orderPrivateCar.getBoardingLat().toString());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("Address", Integer.valueOf(geocode.get("districtCode")));//上车地点行政区划代码
+        jsonObject.put("OrderId", orderPrivateCar.getOrderNum());//订单编号
+        jsonObject.put("OrderTime", orderPrivateCar.getOrderNum());//订单时间YYYYMMDDhhmmss
+        jsonObject.put("CancelTime", query.getInsertTime());//订单撤销时间YYYYMMDDhhmmss
+        jsonObject.put("Operator", "1");//撤销发起方(1:乘客,2:驾驶员,3:平台公司)
+        jsonObject.put("CancelTypeCode", driver.getDriveCard());//机动车驾驶证编号
+        jsonObject.put("CancelReason", query.getReason());//撤销或违约原因
+        Map<String, Object> map = new HashMap<>();
+        map.put("orderCancel", jsonObject.toJSONString());
+
+        Map<String, String> header = new HashMap<>();
+        header.put("Connection", "keep-alive");
+        header.put("Content-Type", "application/x-www-form-urlencoded");
+        header.put("Accept", "*/*");
+        header.put("Accept-Encoding", "gzip");
+        header.put("Accept-Charset", "utf-8");
+        String result = httpClientUtil.pushHttpRequset("POST", path + "ministryOfTransport/orderCancel", map, header,"form");
+        System.err.println("----------------------------订单撤销接口------------------:" + result);
+    }
+
+    public void transOrderCancel(Integer orderId){
+        OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId);
+        Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
+        OrderCancel query = null;
+        try {
+            query = orderCancelService.query(orderId, 7, null, null, 2);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -226,6 +268,91 @@
 
 
     /**
+     * 经营支付接口
+     * @param orderId
+     */
+    public void operatePayTransfer(Integer orderId){
+        OrderTransferCar orderPrivateCar = orderTransferService.selectById(orderId);
+        Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
+        Map<String, Object> query = systemPriceMapper.query(orderPrivateCar.getCompanyId(), 1, orderPrivateCar.getServerCarModelId());
+        Car car = carMapper.selectById(orderPrivateCar.getCarId());
+        ServerCarModel serverCarModel = serverCarModelMapper.selectById(orderPrivateCar.getServerCarModelId());
+//        TransactionDetails transactionDetails = transactionDetailsService.selectById(new EntityWrapper<TransactionDetails>().eq("orderId", orderId).eq("orderType", 1));
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("OrderId", orderPrivateCar.getOrderNum());//订单号
+        jsonObject.put("OnArea", 450204);//上车位置行政区划代码
+        jsonObject.put("DriverName", driver.getName());//机动车驾驶员
+        jsonObject.put("LicenseId", driver.getDriveCard());//机动车驾驶证号
+        jsonObject.put("FareType", query.get("id").toString());//运价类型编码(由网约车公司定义,与运价信息接口保持一街)
+        jsonObject.put("VehicleNo", car.getCarLicensePlate());//车辆号牌
+        jsonObject.put("BookDepTime", orderPrivateCar.getTravelTime());//预计上车时间YYYYMMDDhhmmss
+        jsonObject.put("WaitTime", orderPrivateCar.getWait() * 60);//等待时间(秒)
+        jsonObject.put("DepLongitude", orderPrivateCar.getBoardingLon());//车辆出发经度
+        jsonObject.put("DepLatitude", orderPrivateCar.getBoardingLat());//车辆出发纬度
+        jsonObject.put("DepArea", orderPrivateCar.getBoardingAddress());//上车点
+        jsonObject.put("DepTime", orderPrivateCar.getBoardingTime());//上车时间YYYYMMDDhhmmss
+        jsonObject.put("DestLongitude", orderPrivateCar.getGetoffLon());//车辆到达经度
+        jsonObject.put("DestLatitude", orderPrivateCar.getGetoffLat());//车辆到达纬度
+        jsonObject.put("DestArea", orderPrivateCar.getGetoffAddress());//下车地点
+        jsonObject.put("DestTime", orderPrivateCar.getGetoffTime());//下车时间YYYYMMDDhhmmss
+        jsonObject.put("BookModel", serverCarModel.getName());//预定车型
+        jsonObject.put("Model", serverCarModel.getName());//实际使用车型
+        jsonObject.put("DriveMile", Double.valueOf(orderPrivateCar.getMileage() / 1000).intValue());//载客里程(km)
+        jsonObject.put("DriveTime", Double.valueOf((orderPrivateCar.getGetoffTime().getTime() - orderPrivateCar.getBoardingTime().getTime()) / 1000).intValue());//载客时间(秒)
+        List<OrderPosition> orderPositions = null;
+        try {
+            orderPositions = orderPositionService.queryPosition(orderId, 7);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        int distance = 0;
+        if(orderPositions.size() > 0){
+            OrderPosition orderPosition = orderPositions.get(0);
+            Map<String, String> distance1 = gdMapElectricFenceUtil.getDistance(orderPosition.getLon() + "," + orderPosition.getLat(), orderPrivateCar.getBoardingLon() + "," + orderPrivateCar.getBoardingLat(), 1);
+            distance = Integer.valueOf(distance1.get("distance")) / 1000;
+        }
+        jsonObject.put("WaitMile", distance);//空驶里程(km)
+        jsonObject.put("FactPrice", orderPrivateCar.getPayMoney());//实收金额(元)
+        jsonObject.put("Price", orderPrivateCar.getOrderMoney());//应收金额(元)
+        jsonObject.put("CashPrice", orderPrivateCar.getPayType() == 3 ? orderPrivateCar.getPayMoney() : 0);//现金支付金额(元)
+        jsonObject.put("LineName", orderPrivateCar.getPayType() != 3 ? "" : "");//电子支付机构
+        jsonObject.put("LinePrice", orderPrivateCar.getPayType() != 3 ? orderPrivateCar.getPayMoney() : 0);//电子支付金额(元)
+        jsonObject.put("PosName", "");//POS机支付机构
+        jsonObject.put("PosPrice", 0);//POS机支付金额(元)
+        jsonObject.put("BenfitPrice", (orderPrivateCar.getRedPacketMoney() == null ? 0 : orderPrivateCar.getRedPacketMoney())
+                + (orderPrivateCar.getCouponMoney() == null ? 0 : orderPrivateCar.getCouponMoney())
+                + (orderPrivateCar.getDurationMoney() == null ? 0 : orderPrivateCar.getDurationMoney()));//优惠金额(元)
+        jsonObject.put("BookTip", 0);//预约服务费(元)
+        jsonObject.put("PassengerTip", (orderPrivateCar.getParkMoney() == null ? 0 : orderPrivateCar.getParkMoney())
+                + (orderPrivateCar.getRoadTollMoney() == null ? 0 : orderPrivateCar.getRoadTollMoney()));//附加费(元)
+        Map<String, Double> map1 = this.setTransferMoney(orderPrivateCar);
+        Double amount3 = map1.get("amount3");//其他时间段
+        Double amount2 = map1.get("amount2");//高峰时段
+        Double amount1 = map1.get("amount1");//夜间时段
+        jsonObject.put("PeakUpPrice", null != amount2 ? (amount2 - amount3) : 0);//高峰时段时间加价金额(元)
+        jsonObject.put("NightUpPrice", null != amount1 ? (amount1 - amount3) : 0);//夜间时段里程加价金额(元)
+        jsonObject.put("FarUpPrice", orderPrivateCar.getLongDistanceMoney() == null ? 0 : orderPrivateCar.getLongDistanceMoney());//远途加价金额(元)
+        jsonObject.put("OtherUpPrice", (orderPrivateCar.getDurationMoney() == null ? 0 : orderPrivateCar.getDurationMoney())
+                + (orderPrivateCar.getWaitMoney() == null ? 0 : orderPrivateCar.getWaitMoney()));//其他加价金额(元)
+        jsonObject.put("PayState", 1);//结算状态(0:未结算,1:已结算,2:未知)
+        jsonObject.put("PayTime", new Date());//乘客结算时间YYYYMMDDhhmmss
+        jsonObject.put("OrderMatchTime", new Date());//订单完成时间YYYYMMDDhhmmss
+        jsonObject.put("InvoiceStatus", "0");//发票状态(0:未开票,1:已开票,2:未知)
+        Map<String, Object> map = new HashMap<>();
+        map.put("operatePay", jsonObject.toJSONString());
+
+        Map<String, String> header = new HashMap<>();
+        header.put("Connection", "keep-alive");
+        header.put("Content-Type", "application/x-www-form-urlencoded");
+        header.put("Accept", "*/*");
+        header.put("Accept-Encoding", "gzip");
+        header.put("Accept-Charset", "utf-8");
+        String result = httpClientUtil.pushHttpRequset("POST", path + "ministryOfTransport/operatePay", map, header,"form");
+        System.err.println("------------------------经营支付接口----------------------:" + result);
+    }
+
+    /**
      * 乘客评价信息
      * @param id
      */
@@ -435,4 +562,150 @@
         map.put("amount3", amount3);
         return map;
     }
+
+
+    private Map<String, Double> setTransferMoney(OrderTransferCar orderPrivateCar) {
+        Map<String, Object> query1 = systemPriceMapper.query(orderPrivateCar.getCompanyId(), 1, orderPrivateCar.getServerCarModelId());
+        Map<String, Double> map = new HashMap<>();
+        //开始根据不同的方式计算金额
+        double amount1 = 0;
+        double amount2 = 0;
+        double amount3 = 0;
+        JSONObject jsonObject = JSON.parseObject(query1.get("content").toString());
+        Double num1 = jsonObject.getDouble("num1");//起步价(元)
+        Double num2 = jsonObject.getDouble("num2");//起步公里(公里)
+        Double num3 = jsonObject.getDouble("num3");//起步时间(分钟)
+        Double num4 = jsonObject.getDouble("num4");//里程费(元)
+        Double num5 = jsonObject.getDouble("num5");//时长费(分钟)
+        Double num6 = jsonObject.getDouble("num6");//等待费(分钟)
+        Double num7 = jsonObject.getDouble("num7");//等待费(元)
+        Double num8 = jsonObject.getDouble("num8");//远途费(公里)
+        Double num9 = jsonObject.getDouble("num9");//远途费(公里)
+        Double num10 = jsonObject.getDouble("num10");//远途费(元)
+        Double num11 = jsonObject.getDouble("num11");//远途费(公里)
+        Double num12 = jsonObject.getDouble("num12");//远途费(公里)
+        Double num13 = jsonObject.getDouble("num13");//远途费(元)
+        Double num14 = jsonObject.getDouble("num14");//远途费(公里)
+        Double num15 = jsonObject.getDouble("num15");//远途费(元)
+        String num16 = jsonObject.getString("num16");//夜间费(开始时间)
+        Double num17 = jsonObject.getDouble("num17");//夜间费(元)
+        Double num18 = jsonObject.getDouble("num18");//夜间费(元)
+        Double num19 = jsonObject.getDouble("num19");//夜间费(元)
+        Double num20 = jsonObject.getDouble("num20");//夜间费(元)
+        Double num21 = jsonObject.getDouble("num21");//夜间费(元)
+        Double num22 = jsonObject.getDouble("num22");//夜间费(元)
+        String num23 = jsonObject.getString("num23");//高峰费(开始时间)
+        String num24 = jsonObject.getString("num24");//高峰费(开始时间)
+        Double num25 = jsonObject.getDouble("num25");//高峰费(元)
+        Double num26 = jsonObject.getDouble("num26");//高峰费(元)
+        Double num27 = jsonObject.getDouble("num27");//高峰费(元)
+        Double num28 = jsonObject.getDouble("num28");//高峰费(元)
+        Double num29 = jsonObject.getDouble("num29");//高峰费(元)
+        Double num30 = jsonObject.getDouble("num30");//高峰费(元)
+
+        Date date = new Date();
+        double d = (null == orderPrivateCar.getMileage() ? 0D : orderPrivateCar.getMileage()) / 1000;//实际公里
+        double t = ((orderPrivateCar.getEndServiceTime().getTime() - orderPrivateCar.getStartServiceTime().getTime()) / 60000) + 1;//实际时间(不满一分钟按一分钟算)
+        double w = ((orderPrivateCar.getStartServiceTime().getTime() - orderPrivateCar.getArriveTime().getTime()) / 60000) + 1;//等待分钟(不满一分钟按一分钟算)
+        double d1 = (d - num2) < 0 ? 0 : d - num2;//超出起步里程的公里
+        double t1 = (t - num3) < 0 ? 0 : new BigDecimal(t - num3).setScale(0, BigDecimal.ROUND_UP).doubleValue();//超过起步分钟数的时间
+        double w1 = (w - num6) < 0 ? 0 : new BigDecimal(w - num6).setScale(0, BigDecimal.ROUND_UP).doubleValue();//超出等待时间的时间
+        double yt1 = 0;//远途1段
+        double yt2 = 0;//远途2段
+        double yt3 = 0;//远途3段
+
+
+        //夜间服务处理逻辑
+        Calendar s = Calendar.getInstance();
+        s.setTime(date);
+        s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num16.split(" - ")[0].split(":")[0]));
+        s.set(Calendar.MINUTE, Integer.valueOf(num16.split(" - ")[0].split(":")[1]));
+
+        Calendar e = Calendar.getInstance();
+        e.setTime(date);
+        e.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num16.split(" - ")[1].split(":")[0]));
+        e.set(Calendar.MINUTE, Integer.valueOf(num16.split(" - ")[1].split(":")[1]));
+
+        if(date.getTime() > s.getTimeInMillis() && date.getTime() < e.getTimeInMillis()){
+            if(d > num8.doubleValue() && d <= num9.doubleValue()){
+                yt1 = num20 * (d - num8);
+            }
+            if(d > num9.doubleValue()){
+                yt1 = num20 * (num9 - num8);
+            }
+            if(d > num11.doubleValue() || d <= num12.doubleValue()){
+                yt2 = num21 * (d - num11);
+            }
+            if(d > num12.doubleValue()){
+                yt2 = num21 * (num12 - num11);
+            }
+            if(d > num14.doubleValue()){
+                yt3 = num22 * (d - num14);
+            }
+            amount1 = num17 + (d1 * num18) + (t1 * num19) + (w1 * num7) + yt1 + yt2 + yt3;
+            map.put("amount1", amount1);
+        }
+
+
+        //高峰时段处理逻辑
+        Calendar s1 = Calendar.getInstance();
+        s1.setTime(date);
+        s1.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num23.split(" - ")[0].split(":")[0]));
+        s1.set(Calendar.MINUTE, Integer.valueOf(num23.split(" - ")[0].split(":")[1]));
+
+        Calendar e1 = Calendar.getInstance();
+        e1.setTime(date);
+        e1.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num23.split(" - ")[1].split(":")[0]));
+        e1.set(Calendar.MINUTE, Integer.valueOf(num23.split(" - ")[1].split(":")[1]));
+
+        Calendar s2 = Calendar.getInstance();
+        s2.setTime(date);
+        s2.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num24.split(" - ")[0].split(":")[0]));
+        s2.set(Calendar.MINUTE, Integer.valueOf(num24.split(" - ")[0].split(":")[1]));
+
+        Calendar e2 = Calendar.getInstance();
+        e2.setTime(date);
+        e2.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num24.split(" - ")[1].split(":")[0]));
+        e2.set(Calendar.MINUTE, Integer.valueOf(num24.split(" - ")[1].split(":")[1]));
+
+        if((date.getTime() > s1.getTimeInMillis() && date.getTime() < e1.getTimeInMillis()) || (date.getTime() > s2.getTimeInMillis() && date.getTime() < e2.getTimeInMillis())){
+            if(d > num8.doubleValue() && d <= num9.doubleValue()){
+                yt1 = num28 * (d - num8);
+            }
+            if(d > num9.doubleValue()){
+                yt1 = num28 * (num9 - num8);
+            }
+            if(d > num11.doubleValue() && d <= num12.doubleValue()){
+                yt2 = num29 * (d - num11);
+            }
+            if(d > num12.doubleValue()){
+                yt2 = num29 * (num12 - num11);
+            }
+            if(d > num14.doubleValue()){
+                yt3 = num30 * (d - num14);
+            }
+            amount2 = num25 + (d1 * num26) + (t1 * num27) + (w1 * num7) + yt1 + yt2 + yt3;
+            map.put("amount2", amount2);
+        }
+
+        //其他时间段的计算
+        if(d > num8.doubleValue() && d <= num9.doubleValue()){
+            yt1 = num10 * (d - num8);
+        }
+        if(d > num9.doubleValue()){
+            yt1 = num10 * (num9 - num8);
+        }
+        if(d > num11.doubleValue() && d <= num12.doubleValue()){
+            yt2 = num13 * (d - num11);
+        }
+        if(d > num12.doubleValue()){
+            yt2 = num13 * (num12 - num11);
+        }
+        if(d > num14.doubleValue()){
+            yt3 = num15 * (d - num14);
+        }
+        amount3 = num1 + (d1 * num4) + (t1 * num5) + (w1 * num7) + yt1 + yt2 + yt3;
+        map.put("amount3", amount3);
+        return map;
+    }
 }

--
Gitblit v1.7.1