From 353b56200fa196f461902b4608341a0939a7abc2 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期五, 23 六月 2023 11:03:28 +0800
Subject: [PATCH] 修改bug

---
 management/guns-admin/src/main/resources/application.yml                                                       |    4 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderDetail.html                             |  170 +++++++++++++++++++++++----------
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java      |   13 +
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java |   57 +++++++++++
 4 files changed, 185 insertions(+), 59 deletions(-)

diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java
index 047e59f..4b70b58 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java
@@ -2,10 +2,12 @@
 
 import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.stylefeng.guns.core.base.controller.BaseController;
 import com.stylefeng.guns.core.base.tips.SuccessTip;
 import com.stylefeng.guns.core.log.LogObjectHolder;
+import com.stylefeng.guns.core.util.ToolUtil;
 import com.stylefeng.guns.modular.system.controller.resp.TAppUserDetailOrderResp;
 import com.stylefeng.guns.modular.system.controller.resp.TDriverCommissionResp;
 import com.stylefeng.guns.modular.system.controller.resp.TOrderResp;
@@ -14,15 +16,20 @@
 import com.stylefeng.guns.modular.system.model.TAppUser;
 import com.stylefeng.guns.modular.system.model.TDriver;
 import com.stylefeng.guns.modular.system.model.TOrder;
+import com.stylefeng.guns.modular.system.model.TOrderPosition;
 import com.stylefeng.guns.modular.system.service.ITAppUserService;
 import com.stylefeng.guns.modular.system.service.ITCancelOrderService;
+import com.stylefeng.guns.modular.system.service.ITDriverService;
 import com.stylefeng.guns.modular.system.service.ITOrderService;
+import com.stylefeng.guns.modular.system.util.RedisUtil;
+import com.stylefeng.guns.modular.system.util.ResultUtil;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -31,7 +38,7 @@
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.servlet.http.HttpServletResponse;
-import java.io.OutputStream;
+import java.io.*;
 import java.math.BigDecimal;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
@@ -58,6 +65,15 @@
     private ITAppUserService tAppUserService;
     @Autowired
     private ITCancelOrderService tCancelOrderService;
+
+    @Autowired
+    private RedisUtil redisUtil;
+
+    @Autowired
+    private ITDriverService driverService;
+
+    @Value("${filePath}")
+    private String filePath;
 
     /**
      * 跳转到首页
@@ -227,6 +243,39 @@
         return list;
     }
 
+
+
+    @RequestMapping(value = "/getOrderTrack")
+    @ResponseBody
+    public ResultUtil getOrderTrack(Integer orderDetailId){
+        if(ToolUtil.isNotEmpty(orderDetailId)){
+            try {
+                //将数据存储到文件中
+                File file = new File(filePath + orderDetailId + ".json");
+                if(!file.exists()){
+                    return ResultUtil.success(new ArrayList<>());
+                }
+                //读取文件(字符流)
+                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);
+                return ResultUtil.success(list);
+            }catch (Exception e){
+                e.printStackTrace();
+                return ResultUtil.runErr();
+            }
+        }else {
+            return ResultUtil.paranErr();
+        }
+    }
+
+
+
     /**
      * 关闭订单
      */
@@ -236,6 +285,12 @@
         TOrder tOrder = tOrderService.selectById(tOrderId);
         tOrder.setState(OrderStateEnum.CANCELED.getCode());
         tOrderService.updateById(tOrder);
+        if(null != tOrder.getDriverId()){
+            redisUtil.delSetValue("orderService", tOrder.getId().toString());
+            TDriver tDriver = driverService.selectById(tOrder.getDriverId());
+            tDriver.setServerStatus(1);
+            driverService.updateById(tDriver);
+        }
         return SUCCESS_TIP;
     }
 
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java
index 832551d..d17ae67 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderServiceImpl.java
@@ -23,6 +23,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
@@ -39,13 +40,16 @@
 @Service
 public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> implements ITOrderService {
 
-    @Autowired
+    @Resource
     private TOrderMapper tOrderMapper;
-    @Autowired
+
+    @Resource
     private TAppUserMapper tAppUserMapper;
-    @Autowired
+
+    @Resource
     private TDriverMapper tDriverMapper;
-    @Autowired
+
+    @Resource
     private TBranchOfficeMapper tBranchOfficeMapper;
 
     @Override
@@ -67,6 +71,7 @@
     public void orderDetail(Integer orderId, Model model) {
         // 订单信息
         TOrder tOrder = tOrderMapper.selectById(orderId);
+        model.addAttribute("id", orderId);
         model.addAttribute("createTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tOrder.getCreateTime()));//下单时间
         model.addAttribute("code",tOrder.getCode());//订单编号
         model.addAttribute("source",tOrder.getSource());//订单来源
diff --git a/management/guns-admin/src/main/resources/application.yml b/management/guns-admin/src/main/resources/application.yml
index a31209a..cf84684 100644
--- a/management/guns-admin/src/main/resources/application.yml
+++ b/management/guns-admin/src/main/resources/application.yml
@@ -79,9 +79,9 @@
 ---
 #支付回调地址
 #正式环境
-#callbackPath: https://okyueche.com:8010
+callbackPath: https://chaoshengdaijia.com:8443
 #测试环境
-callbackPath: http://121.37.15.157:8010
+#callbackPath: http://121.37.15.157:8010
 
 
 ---
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderDetail.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderDetail.html
index d1cbee6..16dc2d4 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderDetail.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrderDetail.html
@@ -13,6 +13,7 @@
                         <input hidden id="startLat" value="${startLat}">
                         <input hidden id="endLng" value="${endLng}">
                         <input hidden id="endLat" value="${endLat}">
+                        <input hidden id="id" value="${id}">
 
                         <hr/>
                         <div class="initialLevel col-sm-12 control-label form-group"  >
@@ -179,20 +180,28 @@
                             </div>
                         @}
 
-                        @if(startLng != null){
-                            <hr/>
-                            <div class="initialLevel col-sm-12 control-label form-group"  >
-                                <div style="background-color: gray;height: 35px;line-height: 35px">
-                                    <label style="color: #0C0C0C">行程轨迹</label>
+                        <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-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>
-                            <hr/>
-
-                            <div class="initialLevel col-sm-12 control-label form-group"  >
-                                <div id="container" ></div>
-                                <div id="panel" ></div>
-                            </div>
-                        @}
+                        </div>
 
                         <hr/>
                         <div class="initialLevel col-sm-12 control-label form-group"  >
@@ -202,12 +211,14 @@
                         </div>
                         <hr/>
 
+                        @if(routeRecord != null){
                         <div class="initialLevel col-sm-12 control-label form-group"  >
                             <audio id="audio" autoplay controls muted>
-<!--                                <source src="http://www.w3capi.com/upload/audio/audio_example.mp3" type="audio/mpeg">-->
                                 <source src="${routeRecord}" type="audio/mpeg">
                             </audio>
                         </div>
+                        @}
+
 
                         <div class="hidden-xs" id="TDriverTableToolbar" role="group"  style="text-align: center">
                             <#button name="取消" icon="fa-plus" clickFun="TOrderInfoDlg.close()" />
@@ -221,10 +232,9 @@
 </div>
 <script src="${ctxPath}/static/modular/system/tOrder/tOrder.js"></script>
 <script src="${ctxPath}/static/modular/system/tOrder/tOrder_info.js"></script>
-
-<!--<script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=1d43098bcd98ab124623e7e4bcc9595e&plugin=AMap.Driving"></script>-->
-<!--<script type="text/javascript" src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script>-->
-<!--<script type="text/javascript" src="https://cache.amap.com/lbs/static/addToolbar.js"></script>-->
+<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.15&key=1d43098bcd98ab124623e7e4bcc9595e"></script>
+<script src="https://cache.amap.com/lbs/static/addToolbar.js"></script>
 <script src="https://webapi.amap.com/loader.js"></script>
 
 <style type="text/css">
@@ -266,44 +276,100 @@
         type: 'date',
         range: true
     });
-    if(null != $('#startLng').val() && '' != $('#startLng').val()){
-        AMapLoader.reset() // 需要把这个reset一下
-        AMapLoader.load({
-            "key": "1d43098bcd98ab124623e7e4bcc9595e",              // 申请好的Web端开发者Key,首次调用 load 时必填
-            "version": "2.0",   // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
-            "plugins": ['AMap.Driving'],           // 需要使用的的插件列表,如比例尺'AMap.Scale'等
-            "AMapUI": {             // 是否加载 AMapUI,缺省不加载
-                "version": '1.1',   // AMapUI 版本
-                "plugins":['overlay/SimpleMarker'],       // 需要加载的 AMapUI ui插件
+    var map = new AMap.Map("container", {
+        resizeEnable: true,
+        zoom: 14
+    });
+
+    $(function() {
+        getTrajectory();
+    });
+    function getTrajectory() {
+        $.ajax({
+            url: Feng.ctxPath + '/tOrder/getOrderTrack',
+            type: 'POST',
+            data:{
+                orderDetailId: $("#id").val()
             },
-            "Loca":{                // 是否加载 Loca, 缺省不加载
-                "version": '2.0'  // Loca 版本
-            },
-        }).then((AMap)=>{
-            //初始化地图对象,加载地图
-            var map = new AMap.Map('container', {
-                viewMode: '2D', // 默认使用 2D 模式,如果希望使用带有俯仰角的 3D 模式,请设置 viewMode: '3D',
-                zoom:13, //初始化地图层级
-                center: [$('#startLng').val(), $('#startLat').val()] //初始化地图中心点
-            });
-            //构造路线导航类
-            var driving = new AMap.Driving({
-                map: map,
-            });
-            // 根据起终点经纬度规划驾车导航路线
-            driving.search(new AMap.LngLat($('#startLng').val(), $('#startLat').val()), new AMap.LngLat($('#endLng').val(), $('#endLat').val()), function(status, result) {
-                // result 即是对应的驾车导航信息,相关数据结构文档请参考  https://lbs.amap.com/api/javascript-api/reference/route-search#m_DrivingResult
-                if (status === 'complete') {
-                    Feng.success('绘制订单路线完成')
-                } else {
-                    Feng.error('获取驾车数据失败:' + result)
+            success: function (res) {
+                if(res.status == 200){
+                    var data = res.data;
+                    if(data.length > 0){
+                        orderTrack(data);
+                    }/*else{
+                    Feng.error("当前订单没有轨迹");
+                }*/
+                }else{
+                    Feng.error(res.msg);
                 }
-            });
-        }).catch((e)=>{
-            console.error(e);  //加载错误提示
+            }
         });
-    }else {
-        Feng.info('该订单未完成,无地图路线显示!')
+    }
+
+    var marker, lineArr = [];
+
+    function orderTrack(data) {
+        for(var i in data){
+            var waypoints = [];
+            var lon = parseFloat(data[i].lon);
+            var lat = parseFloat(data[i].lat);
+            waypoints.push(lon);
+            waypoints.push(lat);
+            lineArr.push(waypoints);
+        }
+
+        marker = new AMap.Marker({
+            map: map,
+            position: lineArr[0],
+            icon: "https://webapi.amap.com/images/car.png",
+            offset: new AMap.Pixel(-26, -13),
+            autoRotation: true,
+            angle:-90,
+        });
+
+        // 绘制轨迹
+        var polyline = new AMap.Polyline({
+            map: map,
+            path: lineArr,
+            showDir:true,
+            strokeColor: "#28F",  //线颜色
+            // strokeOpacity: 1,     //线透明度
+            strokeWeight: 6,      //线宽
+            // strokeStyle: "solid"  //线样式
+        });
+
+        var passedPolyline = new AMap.Polyline({
+            map: map,
+            // path: lineArr,
+            strokeColor: "#AF5",  //线颜色
+            // strokeOpacity: 1,     //线透明度
+            strokeWeight: 6,      //线宽
+            // strokeStyle: "solid"  //线样式
+        });
+
+
+        marker.on('moving', function (e) {
+            passedPolyline.setPath(e.passedPath);
+        });
+
+        map.setFitView();
+    }
+
+
+    function startAnimation () {
+        marker.moveAlong(lineArr, 200);
+    }
+
+    function pauseAnimation () {
+        marker.pauseMove();
+    }
+
+    function resumeAnimation () {
+        marker.resumeMove();
+    }
+
+    function stopAnimation () {
+        marker.stopMove();
     }
 
 

--
Gitblit v1.7.1