From 9d1267aaf8968cc8fe2a257c33a27fd381288b78 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期四, 26 六月 2025 13:52:06 +0800
Subject: [PATCH] 管理后台二期

---
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java    |   85 +++++++++++++
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/FinancialStatementController.java      |   15 ++
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderCrossCityServiceImpl.java              |    5 
 ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/financialStatement/paymentOrderStatistics/paymentOrderStatistics.js |   36 ++++-
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderCrossCityService.java                      |    7 +
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderCrossCityMapper.xml                     |   28 ++++
 ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderCrossCityMapper.java                            |    2 
 ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity_edit.html                             |  130 +++++++++++++++++++++
 8 files changed, 289 insertions(+), 19 deletions(-)

diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/FinancialStatementController.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/FinancialStatementController.java
index b738142..e2a9c35 100644
--- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/FinancialStatementController.java
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/FinancialStatementController.java
@@ -112,6 +112,21 @@
 												  HttpServletRequest request, HttpServletResponse response){
 		Page<Map<String, Object>> page = new Page(1, 9999);
 		List<Map<String, Object>> list = orderTaxiService.paymentOrderStatisticsList(page, paymentCode, orderCode, userPhone, driverPhone, createTime, paymentTime,orderType);
+		List<Map<String, Object>> list1 = orderCrossCityService.paymentOrderStatisticsList(page, paymentCode, orderCode, userPhone, driverPhone, createTime, paymentTime,orderType);
+		list.addAll(list1);
+		list.sort((o1, o2) -> {
+			String insertTime = o1.get("insertTime").toString();
+			String insertTime1 = o2.get("insertTime").toString();
+			Date o1Date = null;
+			Date o2Date = null;
+			try {
+				o1Date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(insertTime);
+				o2Date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(insertTime1);
+				return o2Date.compareTo(o1Date);
+			} catch (ParseException e) {
+				throw new RuntimeException(e);
+			}
+		});
 		
 		// 表格数据【封装】
 		List<List<String>> dataList = new ArrayList<>();
diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java
index 4570268..fa04fed 100644
--- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.plugins.Page;
 import com.stylefeng.guns.core.base.controller.BaseController;
 import com.stylefeng.guns.core.common.constant.factory.PageFactory;
+import com.stylefeng.guns.core.log.LogObjectHolder;
 import com.stylefeng.guns.core.shiro.ShiroKit;
 import com.stylefeng.guns.core.shiro.ShiroUser;
 import com.stylefeng.guns.core.util.SinataUtil;
@@ -19,15 +20,13 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Controller;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.ui.Model;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.annotation.Resource;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStreamReader;
+import java.io.*;
 import java.math.BigDecimal;
 import java.util.*;
 
@@ -54,7 +53,8 @@
 
     @Autowired
     private ITOrderPositionService tOrderPositionService;
-
+    @Autowired
+    private ITPubTransactionDetailsService pubTransactionDetailsService;
     private ResultUtil resultUtil;
 
     @Value("${filePath}")
@@ -94,6 +94,81 @@
     }
 
     /**
+     * 跳转到修改出租车订单
+     */
+    @RequestMapping("/tOrderCrossCity_update/{tOrderCrossCityId}")
+    public String tOrderCrossCity_update(@PathVariable Integer tOrderCrossCityId, Model model) throws IOException {
+        Map<String, Object> tOrderTaxi = tOrderCrossCityService.getTaxiOrderDetailById(tOrderCrossCityId);
+        model.addAttribute("item",tOrderTaxi);
+        // 查询线路
+        TLine line = itLineService.selectById(Integer.parseInt(tOrderTaxi.get("lineId").toString()));
+        model.addAttribute("line",line);
+        // 查询司机扣款
+        List<TPubTransactionDetails> tPubTransactionDetails = pubTransactionDetailsService.selectList(new EntityWrapper<TPubTransactionDetails>()
+                .eq("userId", tOrderTaxi.get("driverId"))
+                .eq("orderId", tOrderTaxi.get("id"))
+                .eq("type", 1)
+                .eq("userType", 2));
+        if(CollectionUtils.isEmpty(tPubTransactionDetails)){
+            model.addAttribute("companyMoney","");
+            model.addAttribute("driverMoney","");
+        }else {
+            TPubTransactionDetails pubTransactionDetailCompany = tPubTransactionDetails.stream().filter(e -> e.getOrderType().equals(6)).findFirst().orElse(null);
+            if(Objects.nonNull(pubTransactionDetailCompany)){
+                model.addAttribute("companyMoney",pubTransactionDetailCompany.getMoney());
+            }else {
+                model.addAttribute("companyMoney","");
+            }
+            TPubTransactionDetails pubTransactionDetailDriver = tPubTransactionDetails.stream().filter(e -> e.getOrderType().equals(3)).findFirst().orElse(null);
+            if(Objects.nonNull(pubTransactionDetailDriver)){
+                model.addAttribute("driverMoney",pubTransactionDetailDriver.getMoney());
+            }else {
+                model.addAttribute("driverMoney","");
+            }
+        }
+        if(tOrderTaxi.get("payManner")!=null && Integer.parseInt(tOrderTaxi.get("payManner").toString()) == 1){
+            model.addAttribute("payMannerStr","线上收款");
+        }else {
+            model.addAttribute("payMannerStr","计费打表");
+        }
+        LogObjectHolder.me().set(tOrderTaxi);
+        try{
+            //将数据存储到文件中
+            File file = new File(filePath + tOrderCrossCityId + "_3.txt");
+
+            //读取文件(字符流)
+            BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));
+            //循环取出数据
+            String str = null;
+            StringBuffer sb = new StringBuffer();
+            while ((str = in.readLine()) != null) {
+                sb.append(str);
+            }
+            List<TOrderPosition> list = JSONArray.parseArray(sb.toString(), TOrderPosition.class);
+            List<Map> maps = new ArrayList<>();
+            for (TOrderPosition tOrderPosition : list) {
+                Map<String, String> map = new HashMap<>();
+                map.put("lon",tOrderPosition.getLon());
+                map.put("lat",tOrderPosition.getLat());
+                maps.add(map);
+            }
+
+//        resultUtil = ResultUtil.success(list);
+            // 将maps转化为jsonArray字符串
+            // 使用 Gson 转换为 JSON 字符串
+//        Gson gson = new Gson();
+//        String jsonString = gson.toJson(maps);
+//        System.out.println(jsonString);
+            model.addAttribute("guiji",maps);
+        }catch (Exception e){
+            e.printStackTrace();
+            resultUtil = ResultUtil.runErr();
+            model.addAttribute("guiji","");
+        }
+        return PREFIX + "tOrderCrossCity_edit.html";
+    }
+
+    /**
      * 获取订单轨迹
      * @param orderDetailId
      * @return
diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderCrossCityMapper.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderCrossCityMapper.java
index 29edad9..d3b369c 100644
--- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderCrossCityMapper.java
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderCrossCityMapper.java
@@ -56,5 +56,5 @@
                                                          @Param("paymentTimeEnd") String paymentTimeEnd,@Param("orderType") Integer orderType);
 
 
-
+    Map<String,Object> getTaxiOrderDetailById(@Param("orderId") Integer orderId);
 }
diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderCrossCityMapper.xml b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderCrossCityMapper.xml
index 2758937..5982df6 100644
--- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderCrossCityMapper.xml
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderCrossCityMapper.xml
@@ -281,5 +281,31 @@
         </if>
         order by a.insertTime desc
     </select>
-
+    <select id="getTaxiOrderDetailById" resultType="map">
+        SELECT
+            DATE_FORMAT(ot.insertTime,'%Y-%m-%d %H:%i') as insertTimeStr,
+            DATE_FORMAT(ot.travelTime,'%Y-%m-%d %H:%i') as travelTimeStr,
+            DATE_FORMAT(ot.boardingTime,'%Y-%m-%d %H:%i') as boardingTimeStr,
+            DATE_FORMAT(ot.getoffTime,'%Y-%m-%d %H:%i') as getoffTimeStr,
+            case when ot.orderSource = 1 then 'APP下单'
+                 when ot.orderSource = 2 then '扫码下单'
+                 when ot.orderSource = 3 then '小程序下单'
+                 when ot.orderSource = 4 then '司机下单'
+                 when ot.orderSource = 5 then '调度下单'
+                 when ot.orderSource = 6 then '电话下单' else '' end orderSourceStr,
+            ui.nickName as userName,ui.phone as userPhone,
+            case when ot.payType = 1 then '微信'
+                 when ot.payType = 2 then '支付宝'
+                 when ot.payType = 3 then '余额' else '' end as payTypeStr,
+            CONCAT(di.`name`,'-',di.phone) as driver,
+            CONCAT(cb.`name`,'-',ci.carLicensePlate) as car,
+            cc.`name` as companyName,ot.*
+        FROM t_order_cross_city as ot
+                 LEFT JOIN t_user as ui on ui.id = ot.userId
+                 LEFT JOIN t_driver as di on di.id = ot.driverId
+                 LEFT JOIN t_car as ci on ci.id= ot.carId
+                 LEFT JOIN t_car_brand as cb on cb.id = ci.carBrandId
+                 LEFT JOIN t_company as cc on cc.id = ot.companyId
+        where ot.id = #{orderId}
+    </select>
 </mapper>
diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderCrossCityService.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderCrossCityService.java
index 93b45b3..faa40e1 100644
--- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderCrossCityService.java
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderCrossCityService.java
@@ -54,5 +54,10 @@
 
     List<Map<String, Object>> paymentOrderStatisticsList(Page<Map<String, Object>> page, String paymentCode, String orderCode, String userPhone, String driverPhone, String createTime, String paymentTime, Integer orderType);
 
-
+    /**
+     * 根据订单ID获取订单详情
+     * @param orderId
+     * @return
+     */
+    Map<String,Object> getTaxiOrderDetailById(@Param("orderId") Integer orderId);
 }
diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderCrossCityServiceImpl.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderCrossCityServiceImpl.java
index 4318c0a..6092470 100644
--- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderCrossCityServiceImpl.java
+++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderCrossCityServiceImpl.java
@@ -75,4 +75,9 @@
         }
         return this.baseMapper.paymentOrderStatisticsList(page, paymentCode, orderCode, userPhone, driverPhone, createTimeStart, createTimeEnd, paymentTimeStart, paymentTimeEnd,orderType);
     }
+
+    @Override
+    public Map<String, Object> getTaxiOrderDetailById(Integer orderId) {
+        return this.baseMapper.getTaxiOrderDetailById(orderId);
+    }
 }
diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity_edit.html b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity_edit.html
new file mode 100644
index 0000000..cffd9d0
--- /dev/null
+++ b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity_edit.html
@@ -0,0 +1,130 @@
+@layout("/common/_container.html"){
+<style type="text/css">
+    body,
+    html {
+        width: 100%;
+        height: 100%;
+        margin: 0;
+    }
+
+    #allmap {
+        height: 100%;
+        width: 100%;
+    }
+
+    ul li {
+        list-style: none;
+    }
+
+    .btn-wrap {
+        z-index: 999;
+        position: fixed;
+        bottom: 3.5rem;
+        margin-left: 3rem;
+        padding: 1rem 1rem;
+        border-radius: .25rem;
+        background-color: #fff;
+        box-shadow: 0 2px 6px 0 rgba(27, 142, 236, 0.5);
+    }
+
+    .btn {
+        width: 75px;
+        height: 30px;
+        float: left;
+        background-color: #fff;
+        color: rgba(27, 142, 236, 1);
+        font-size: 14px;
+        border: 1px solid rgba(27, 142, 236, 1);
+        border-radius: 5px;
+        margin: 0 5px;
+        text-align: center;
+        line-height: 30px;
+    }
+
+    .btn:hover {
+        background-color: rgba(27, 142, 236, 0.8);
+        color: #fff;
+    }
+</style>
+<div class="ibox float-e-margins">
+    <div class="ibox-content">
+        <div class="form-horizontal">
+            <input type="hidden" id="id" name="id" value="${tOrderCrossCityId}">
+            <input id="guiji" name="guiji" type="hidden" value="${guiji}">
+            <div class="row" style="margin-top: 30px;">
+                <div class="col-sm-4">
+                    <h2 class="h3Class" style="font-weight: 700;">订单详情</h2>
+                </div>
+            </div>
+            <div class="row">
+                <div class="col-sm-6 b-r">
+                    <#label id="insertTimeStr" name="下单时间" value="${item.insertTimeStr}"/>
+                    <#label id="orderSourceStr" name="订单来源" value="${item.orderSourceStr}"/>
+                    <#label id="userName" name="下单用户昵称" value="${item.userName}"/>
+                    <#label id="passengers" name="乘车用户昵称" value="${item.passengers}"/>
+                    <#label id="placementAddress" name="起点" value="${item.startAddress}"/>
+                    <#label id="driver" name="接单司机" value="${item.driver}"/>
+                    <#label id="car" name="接单车辆" value="${item.car}"/>
+                    <#label id="boardingAddress" name="上车地点" value="${item.boardingAddress}"/>
+                    <#label id="getoffAddress" name="下车地点" value="${item.getoffAddress}"/>
+                    @if(item.payManner == 2){
+                    <#label id="payMoney" name="订单总价" value="${item.payMoney}"/>
+                    <#label id="companyMoney" name="平台收益" value="${companyMoney}"/>
+                    @}
+                    <#label id="payMoney" name="订单总价" value="${item.payMoney}"/>
+                    <#label id="companyMoney" name="优惠券抵扣" value="${item.couponMoney}"/>
+                    <#label id="companyMoney" name="平台抽成" value="${companyMoney}"/>
+                </div>
+
+                <div class="col-sm-6">
+                    <#label id="orderNum" name="订单编号" value="${item.orderNum}"/>
+                    <#label id="travelTimeStr" name="乘车时间" value="${item.travelTimeStr}"/>
+                    <#label id="userPhone" name="下单用户手机号" value="${item.userPhone}"/>
+                    <#label id="passengersPhone" name="乘车用户手机号" value="${item.passengersPhone}"/>
+                    <#label id="endAddress" name="终点" value="${item.endAddress}"/>
+                    <#label id="companyName" name="车辆所属机构" value="${item.companyName}"/>
+                    <#label id="mileage" name="订单里程" value="${item.mileage / 1000} 公里"/>
+                    <#label id="boardingTimeStr" name="上车时间" value="${item.boardingTimeStr}"/>
+                    <#label id="getoffTimeStr" name="下车时间" value="${item.getoffTimeStr}"/>
+                    <#label id="name" name="线路" value="${line.name}"/>
+                    @if(item.payManner == 2){
+                    <#label id="payMannerStr" name="支付方式" value="${payMannerStr}"/>
+                    <#label id="driverMoney" name="司机收益" value="${driverMoney}"/>
+                    @}
+                    @if(item.payManner == 1){
+                    <#label id="payMannerStr" name="支付方式" value="${payMannerStr}"/>
+                    @}
+                </div>
+            </div>
+            <div class="row" style="margin-top: 30px;">
+                <div class="col-sm-4">
+                    <h2 class="h3Class" style="font-weight: 700;">线路轨迹</h2>
+                </div>
+            </div>
+            <div class="row" style="margin-top: 30px;">
+                <div class="col-sm-10">
+                    <div class="form-horizontal" id="container" style="margin-left: 50px;width: 100%; height: 500px;"></div>
+                    <div class="input-card" style="margin-left: 50px;">
+                        <h4>轨迹回放控制</h4>
+                        <div class="input-item">
+                            <input type="button" class="btn" value="开始动画" id="start" onclick="startAnimation()"/>
+                            <input type="button" class="btn" value="暂停动画" id="pause" onclick="pauseAnimation()"/>
+                            <input type="button" class="btn" value="继续动画" id="resume" onclick="resumeAnimation()"/>
+                            <input type="button" class="btn" value="停止动画" id="stop" onclick="stopAnimation()"/>
+                        </div>
+                        <div class="input-item">
+
+                        </div>
+                    </div>
+                </div>
+            </div>
+
+        </div>
+
+    </div>
+</div>
+<script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script>
+<script src="https://webapi.amap.com/maps?v=1.4.8&key=e17d799b2506d05faf7f88320a266803"></script>
+<script src="https://cache.amap.com/lbs/static/addToolbar.js"></script>
+<script src="${ctxPath}/static/modular/system/tOrderCrossCity/tOrderCrossCity_info.js"></script>
+@}
diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/financialStatement/paymentOrderStatistics/paymentOrderStatistics.js b/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/financialStatement/paymentOrderStatistics/paymentOrderStatistics.js
index 2d10f43..b05f9ad 100644
--- a/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/financialStatement/paymentOrderStatistics/paymentOrderStatistics.js
+++ b/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/financialStatement/paymentOrderStatistics/paymentOrderStatistics.js
@@ -35,7 +35,7 @@
 		{title: '支付时间', field: 'paymentTime', visible: true, align: 'center', valign: 'middle'},
 		{title: '操作', field: 'id', visible: true, align: 'center', valign: 'middle',
 			formatter: function (value, row) {
-				return '<a onclick="PaymentOrderStatistics.openPaymentOrderStatisticsDetail(' + value + ')" style="color: blue;">订单详情</a>';
+				return '<a onclick="PaymentOrderStatistics.openPaymentOrderStatisticsDetail(' + value + ','+row.orderType+')" style="color: blue;">订单详情</a>';
 			}
 		}
 	];
@@ -74,16 +74,30 @@
 /**
  * 打开查看详情
  */
-PaymentOrderStatistics.openPaymentOrderStatisticsDetail = function (id) {
-	var index = layer.open({
-		type: 2,
-		title: '出租车订单详情',
-		area: ['100%', '100%'], //宽高
-		fix: false, //不固定
-		maxmin: true,
-		content: Feng.ctxPath + '/tOrderTaxi/tOrderTaxi_update/' + id
-	});
-	this.layerIndex = index;
+PaymentOrderStatistics.openPaymentOrderStatisticsDetail = function (id, orderType) {
+	console.log("dahgbhjbsubcjksnb"+id);
+	console.log("dahgbhjbsubcjksnb"+orderType);
+	if(orderType==2){
+		var index = layer.open({
+			type: 2,
+			title: '出租车订单详情',
+			area: ['100%', '100%'], //宽高
+			fix: false, //不固定
+			maxmin: true,
+			content: Feng.ctxPath + '/tOrderTaxi/tOrderTaxi_update/' + id
+		});
+		this.layerIndex = index;
+	}else {
+		var index = layer.open({
+			type: 2,
+			title: '跨城出行订单详情',
+			area: ['100%', '100%'], //宽高
+			fix: false, //不固定
+			maxmin: true,
+			content: Feng.ctxPath + '/tOrderCrossCity/tOrderCrossCity_update/' + id
+		});
+		this.layerIndex = index;
+	}
 };
 
 

--
Gitblit v1.7.1