From 2e366b939271b6ea338641f8a72d1bcd2182dbe7 Mon Sep 17 00:00:00 2001
From: zhibing.pu <393733352@qq.com>
Date: 星期五, 19 四月 2024 17:56:18 +0800
Subject: [PATCH] 新增加功能

---
 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java |   78 +++++++++++++++++++++++++++------------
 1 files changed, 54 insertions(+), 24 deletions(-)

diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
index 3758186..8df6b19 100644
--- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
+++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -14,8 +14,11 @@
 import com.stylefeng.guns.modular.system.model.*;
 import com.stylefeng.guns.modular.system.service.*;
 import com.stylefeng.guns.modular.system.util.*;
+import com.stylefeng.guns.modular.system.util.quartz.QuartzUtil;
+import com.stylefeng.guns.modular.system.util.quartz.jobs.OrderTimeOutJob;
 import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
 import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService;
+import org.quartz.JobDataMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -27,6 +30,7 @@
 import java.math.BigDecimal;
 import java.math.MathContext;
 import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 
@@ -88,6 +92,9 @@
 
     @Value("${filePath}")
     private String filePath;
+    
+    @Autowired
+    private IReminderRulesService reminderRulesService;
 
 
 
@@ -197,21 +204,6 @@
                 driver.getCompanyId() != null && driver.getCompanyId() != 0 ? driver.getCompanyId() : 1));
         orderPrivateCar.setState(2);
         orderPrivateCar.setSnatchOrderTime(new Date());
-
-        //调用高德创建轨迹
-//        String s = gdFalconUtil.selectTerminal(driver.getPhone());
-//        String track = gdFalconUtil.createTrack(s);
-//        orderPrivateCar.setTrackId(track);
-
-        //调用移动的小号接口
-        /*Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
-        Region region = regionMapper.query(geocode.get("districtCode"));*/
-//        Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderPrivateCar.getPassengersPhone(), driver.getPhone(), null);
-//        if(String.valueOf(map.get("code")).equals("200")){
-//            orderPrivateCar.setTelX(map.get("telX"));
-//            orderPrivateCar.setBindId(map.get("bindId"));
-//        }
-//        System.out.println(map);
         this.updateById(orderPrivateCar);
 
         //如果是预约单,则不修改司机为服务中
@@ -220,7 +212,52 @@
             driver.setState(3);
             driverService.updateById(driver);
         }
-
+        
+        
+        //todo 待翻译
+        //添加定时任务(普通任务)
+        ReminderRules reminderRules = reminderRulesService.selectOne(new EntityWrapper<ReminderRules>().eq("companyId", driver.getCompanyId()));
+        if(null != reminderRules){
+            JSONObject jsonObject = JSON.parseObject(reminderRules.getContent());
+            //预约单
+            if(orderPrivateCar.getOrderType() == 1){
+                long specialCarTimeoutReminderInterval = jsonObject.getInteger("specialCarTimeoutReminderInterval") * 60000L;
+                long m = (System.currentTimeMillis() - orderPrivateCar.getSnatchOrderTime().getTime()) / 60000;
+                JobDataMap jobDataMap = new JobDataMap();
+                jobDataMap.put("driverId", uid);
+                jobDataMap.put("orderId", orderPrivateCar.getId());
+                jobDataMap.put("orderType", 1);
+                jobDataMap.put("describe", "您的打车订单已超时" + m + "分钟,请抓紧!");
+                QuartzUtil.addSimpleQuartzTask(
+                        new OrderTimeOutJob().buildQuartzJob(UUIDUtil.getRandomCode(5) + "_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap)
+                        , new Date(specialCarTimeoutReminderInterval), specialCarTimeoutReminderInterval, -1);
+            }else{
+                UserInfo userInfo = userInfoMapper.selectById(orderPrivateCar.getUserId());
+                JSONObject reservationOrder = jsonObject.getJSONObject("reservationOrder");
+                long appointmentReminder = reservationOrder.getInteger("appointmentReminder") * 60000L;
+                long appointmentTimeoutReminderInterval = reservationOrder.getInteger("appointmentTimeoutReminderInterval") * 60000L;
+                SimpleDateFormat sdf = new SimpleDateFormat("");
+                JobDataMap jobDataMap = new JobDataMap();
+                jobDataMap.put("driverId", uid);
+                jobDataMap.put("orderId", orderPrivateCar.getId());
+                jobDataMap.put("orderType", 1);
+                jobDataMap.put("describe", "您将于" + sdf.format(orderPrivateCar.getTravelTime()) + "去接" + userInfo.getFirstName() + " " + userInfo.getLastName() + ",请准时!");
+                QuartzUtil.addSimpleQuartzTask(
+                        new OrderTimeOutJob().buildQuartzJob(UUIDUtil.getRandomCode(5) + "_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap)
+                        , new Date(appointmentReminder), appointmentReminder, 0);
+    
+                
+                jobDataMap = new JobDataMap();
+                jobDataMap.put("driverId", uid);
+                jobDataMap.put("orderId", orderPrivateCar.getId());
+                jobDataMap.put("orderType", 1);
+                jobDataMap.put("describe", "您将于" + sdf.format(orderPrivateCar.getTravelTime()) + "去接" + userInfo.getFirstName() + " " + userInfo.getLastName() + ",请准时!");
+                QuartzUtil.addSimpleQuartzTask(
+                        new OrderTimeOutJob().buildQuartzJob(UUIDUtil.getRandomCode(5) + "_" + orderPrivateCar.getId() + "_1", "ORDER_TIME_OUT", jobDataMap)
+                        , new Date(appointmentReminder + appointmentTimeoutReminderInterval), appointmentTimeoutReminderInterval, -1);
+            }
+        }
+        
         //推送相关代码------------------start----------------
         new Thread(new Runnable() {
             @Override
@@ -233,12 +270,6 @@
             }
         }).start();
 
-        new Thread(new Runnable() {
-            @Override
-            public void run() {
-                pushUtil.pushDriverPosition(orderId, 1);
-            }
-        }).start();
 
         systemNoticeService.addSystemNotice(2, language == 1 ? "您已成功抢得打车订单,请及时联系客户!" :
                 language == 2 ? "You have grabbed the ride order, please contact the client timely."
@@ -294,6 +325,7 @@
                 orderPrivateCar.setState(3);
                 orderPrivateCar.setSetOutTime(new Date());
                 systemNoticeService.addSystemNotice(1, language == 1 ? "司机已出发,请耐心等待" : language == 2 ? "The driver is on the way, please wait." : "Le chauffeur est en route. Veuillez patienter.", orderPrivateCar.getUserId());
+                pushUtil.pushDriverPosition(orderPrivateCar.getId(), 1);//主动推送司机定位
                 break;
             case 4://到达预约点,等待客户上车
                 orderPrivateCar.setState(4);
@@ -309,8 +341,6 @@
                 orderPrivateCar.setBoardingTime(new Date());
                 orderPrivateCar.setState(5);
                 orderPrivateCar.setStartServiceTime(new Date());
-
-                pushUtil.pushDriverPosition(orderPrivateCar.getId(), 1);//主动推送司机定位
 
                 OrderPosition orderPosition = new OrderPosition();
                 orderPosition.setOrderId(orderId);

--
Gitblit v1.7.1