From 4c99ee7028c3fe58a2cd4b8273b22c75c45574fc Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 16 五月 2025 10:27:41 +0800
Subject: [PATCH] 修改文档bug
---
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java | 1622 ++++++++++++++++++++++++++-------------------------------
1 files changed, 740 insertions(+), 882 deletions(-)
diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
index 59e4378..63c06be 100644
--- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
+++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
@@ -1,5 +1,7 @@
package com.stylefeng.guns.modular.smallLogistics.server.impl;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.stylefeng.guns.core.util.ToolUtil;
@@ -8,39 +10,43 @@
import com.stylefeng.guns.modular.smallLogistics.model.OrderLogisticsSpread;
import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService;
import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsSpreadService;
-import com.stylefeng.guns.modular.system.dao.CarMapper;
-import com.stylefeng.guns.modular.system.dao.RegionMapper;
-import com.stylefeng.guns.modular.system.dao.UserInfoMapper;
+import com.stylefeng.guns.modular.system.dao.*;
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.itextpdf.HtmlToPdfUtils;
-import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
+import com.stylefeng.guns.modular.system.util.GoogleMap.DistancematrixVo;
+import com.stylefeng.guns.modular.system.util.GoogleMap.FleetEngineUtil;
+import com.stylefeng.guns.modular.system.util.GoogleMap.GoogleMapUtil;
+import com.stylefeng.guns.modular.system.util.GoogleMap.ReverseGeocodeVo;
+import com.stylefeng.guns.modular.system.util.quartz.QuartzUtil;
+import com.stylefeng.guns.modular.system.util.quartz.jobs.OrderTimeOutJob;
+import org.apache.shiro.util.StringUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
-import org.jsoup.select.Elements;
+import org.quartz.JobDataMap;
+import org.quartz.SchedulerException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
import java.io.FileWriter;
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
-import java.text.SimpleDateFormat;
import java.util.*;
@Service
public class OrderLogisticsServiceImpl extends ServiceImpl<OrderLogisticsMapper, OrderLogistics> implements IOrderLogisticsService {
-
+
@Resource
private OrderLogisticsMapper orderLogisticsMapper;
+
+ @Resource
+ private IOrderCancelService orderCancelService;
@Autowired
private IDriverService driverService;
@@ -102,6 +108,33 @@
@Autowired
private IOrderEvaluateService orderEvaluateService;
+
+ @Autowired
+ private IReminderRulesService reminderRulesService;
+
+ @Resource
+ private SystemPriceMapper systemPriceMapper;
+
+ @Autowired
+ private FleetEngineUtil fleetEngineUtil;
+
+ @Resource
+ private CarModelMapper carModelMapper;
+
+ @Autowired
+ private ICarService carService;
+
+ @Autowired
+ private ISysOvertimeService sysOvertimeService;
+
+ @Resource
+ private ICancleOrderService cancleOrderService;
+
+ @Autowired
+ private IOrderPositionService orderPositionService;
+
+ @Resource
+ private QuartzUtil quartzUtil;
@@ -141,6 +174,7 @@
if(orderLogistics.getState() != 1){
return ResultUtil.error(language == 1 ? "手速有点慢哦,订单已被抢啦" : language == 2 ? "Too slow, order was snatched!" : "Trop lent, l’ordre a été arraché!");
}
+
Driver driver = driverService.selectById(uid);
orderLogistics.setDriverId(uid);
orderLogistics.setCarId(driver.getCarId());
@@ -148,67 +182,152 @@
driver.getCompanyId() != null && driver.getCompanyId() != 0 ? driver.getCompanyId() : 1));
orderLogistics.setState(2);
orderLogistics.setSnatchOrderTime(new Date());
-
- //调用高德创建轨迹
-// String s = gdFalconUtil.selectTerminal(driver.getPhone());
-// String track = gdFalconUtil.createTrack(s);
-// orderLogistics.setTrackId(track);
-
- //调用移动的小号接口
-// Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderLogistics.getStartLon().toString(), orderLogistics.getStartLat().toString());
-// Region region = regionMapper.query(geocode.get("districtCode"));
-// Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderLogistics.getRecipientPhone(), driver.getPhone(), Integer.valueOf(region.getCitycode().substring(1)));
-// if(String.valueOf(map.get("code")).equals("200")){
-// orderLogistics.setTelX(map.get("telX"));
-// orderLogistics.setBindId(map.get("bindId"));
-// }
-
+ if(!StringUtils.hasLength(orderLogistics.getTripId())){
+ orderLogistics.setTripId(UUIDUtil.getRandomCode());
+ }
+ String value = redisUtil.getValue("DRIVER" + driver.getId());
+ String tripId = redisUtil.getValue("trip" + orderLogistics.getUserId());
+ if(ToolUtil.isNotEmpty(value)) {
+ String[] split = value.split(",");
+ DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(orderLogistics.getStartLat(), orderLogistics.getStartLon(), Double.valueOf(split[1]), Double.valueOf(split[0]), tripId);
+ //超时时间
+ long timeOut = System.currentTimeMillis() + (distancematrix.getDuration() * 1000);
+ orderLogistics.setEstimateArriveTime(new Date(timeOut));
+ orderLogistics.setEstimateArriveMileage(distancematrix.getDistance());
+ }
this.updateById(orderLogistics);
-
- //添加已收入明细
- Company company = companyService.selectById(driver.getCompanyId());
- Double speMoney = orderLogistics.getType() == 4 ? company.getSameLogisticsMoney() : company.getCrossLogisticsMoney();
- BigDecimal d = null;//企业收入
- BigDecimal c = null;//司机收入
- if(company.getIsSpeFixedOrProportional() == 2){//固定
- d = new BigDecimal(speMoney);
- c = new BigDecimal(orderLogistics.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机
- }
- if(company.getIsSpeFixedOrProportional() == 1){//比例
- Double price = orderLogistics.getTravelMoney();
- d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN)));
- c = new BigDecimal(orderLogistics.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
- }
- incomeService.saveData(1, orderLogistics.getCompanyId(), 2, orderLogistics.getId(), orderLogistics.getType(), d.doubleValue());
- incomeService.saveData(2, orderLogistics.getDriverId(), 2, orderLogistics.getId(), orderLogistics.getType(), c.doubleValue());
- driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
- driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
- driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+ //修改司机为服务中
+ driver.setState(3);
driverService.updateById(driver);
-
-
-
+
+ //检查google车辆信息或者添加新的车辆信息
+ Car car = carService.selectById(orderLogistics.getCarId());
+ if(ToolUtil.isEmpty(car.getVehicleId())){
+ car.setVehicleId(UUIDUtil.getRandomCode());
+ carService.updateById(car);
+ }
+ String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
+ if(ToolUtil.isEmpty(vehicles)){
+ CarModel carModel = carModelMapper.selectById(car.getCarModelId());
+ boolean createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ if(!createVehicles){
+ for (int i = 0; i < 5; i++) {
+ createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ if(createVehicles){
+ break;
+ }
+ try {
+ Thread.sleep(3000L);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ }
+
+ //修改google订单信息或者创建新的行程
+ String trip = fleetEngineUtil.getTrip(orderLogistics.getTripId());
+ if(ToolUtil.isEmpty(trip)){
+ JSONObject createTrip = fleetEngineUtil.createTrip(car.getVehicleId(), 1, orderLogistics.getTripId(),
+ orderLogistics.getStartLat().toString(), orderLogistics.getStartLon().toString(), orderLogistics.getEndLat().toString(), orderLogistics.getEndLon().toString());
+ JSONObject error = createTrip.getJSONObject("error");
+ if(null != error){
+ for (int i = 0; i < 5; i++) {
+ createTrip = fleetEngineUtil.createTrip(car.getVehicleId(), 1, orderLogistics.getTripId(),
+ orderLogistics.getStartLat().toString(), orderLogistics.getStartLon().toString(), orderLogistics.getEndLat().toString(), orderLogistics.getEndLon().toString());
+ error = createTrip.getJSONObject("error");
+ String tripStatus = createTrip.getString("tripStatus");
+ if(null == error && "NEW".equals(tripStatus)){
+ break;
+ }
+ try {
+ Thread.sleep(3000L);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ }else{
+ //开始修改行程数据
+ boolean updateTrip = fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderLogistics.getTripId(), null, null, null, null, orderLogistics.getId(), 4);
+ if(!updateTrip){
+ for (int i = 0; i < 5; i++) {
+ updateTrip = fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderLogistics.getTripId(), null, null, null, null, orderLogistics.getId(), 4);
+ if(updateTrip){
+ break;
+ }
+ try {
+ Thread.sleep(3000L);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ }
+
+
+ /**
+ * 超时用户取消不收费的提醒
+ * 即时单:预估到达预约点时间 + 配置不收费的时间 > 当前时间 (只弹一次)
+ *
+ * 超时用户取消订单后需要弹给司机提醒弹框,超时时间 = 当前时间 - 行程时间 - 配置不收费的时间
+ *
+ * 定时提醒弹框
+ * 司机只要开始超时且还未到达预约点,则需要定时提醒
+ */
+
+ //添加定时任务(普通任务)
+ SysOvertime reminderRules = sysOvertimeService.selectOne(new EntityWrapper<SysOvertime>().eq("companyId", driver.getCompanyId()));
+ if(null != reminderRules){
+ CancleOrder cancleOrder = cancleOrderService.selectOne(new EntityWrapper<CancleOrder>().eq("companyId", driver.getCompanyId()));
+ Integer driverTimeout = JSON.parseObject(cancleOrder.getContent()).getInteger("driverTimeout");
+ //超时时间
+ long timeOut = orderLogistics.getEstimateArriveTime().getTime() + (driverTimeout * 60000);
+ //乘客取消不收费提醒
+ JobDataMap jobDataMap = new JobDataMap();
+ jobDataMap.put("driverId", uid);
+ jobDataMap.put("timeOutType", 1);
+ jobDataMap.put("orderId", orderLogistics.getId());
+ jobDataMap.put("orderType", 4);
+ jobDataMap.put("language", language);
+ jobDataMap.put("timeOut", timeOut);
+ jobDataMap.put("driverTimeout", driverTimeout);
+ jobDataMap.put("describe", language == 1 ? "您已超时" + driverTimeout + "分钟,用户可免费取消订单" : language == 2 ? "Reminder You are overdue for " + driverTimeout + " minutes The subscriber could cancel the order for free Confirm" : "Rappel Vous êtes en retard de " + driverTimeout + " minutes L’abonné peut annuler la commande gratuitement Confirmer");
+
+ quartzUtil.addSimpleQuartzTask(OrderTimeOutJob.class,"1_" + orderLogistics.getId() + "_4", "ORDER_TIME_OUT", jobDataMap
+ , new Date(timeOut), timeOut, 0);
+
+
+ //超时循环提醒
+ jobDataMap = new JobDataMap();
+ jobDataMap.put("driverId", uid);
+ jobDataMap.put("timeOutType", 3);
+ jobDataMap.put("orderId", orderLogistics.getId());
+ jobDataMap.put("orderType", 4);
+ jobDataMap.put("language", language);
+ jobDataMap.put("timeOut", orderLogistics.getEstimateArriveTime().getTime());
+ jobDataMap.put("driverTimeout", driverTimeout);
+ jobDataMap.put("describe", "");
+
+ quartzUtil.addSimpleQuartzTask(OrderTimeOutJob.class,"3_" + orderLogistics.getId() + "_4", "ORDER_TIME_OUT", jobDataMap
+ , orderLogistics.getEstimateArriveTime(), reminderRules.getCar() * 60000, -1);
+ }
+
+
//推送相关代码------------------start----------------
new Thread(new Runnable() {
@Override
public void run() {
- pushUtil.pushOrderState(1, orderLogistics.getUserId(), orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getState());
- pushUtil.pushOrderState(2, orderLogistics.getDriverId(), orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getState());
+ pushUtil.pushOrderState(1, orderLogistics.getUserId(), orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getState(), 0, "", "driver");
+ pushUtil.pushOrderState(2, orderLogistics.getDriverId(), orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getState(), 0, "", "driver");
}
}).start();
-
- new Thread(new Runnable() {
- @Override
- public void run() {
- pushUtil.pushDriverPosition(orderId, orderLogistics.getType());
- }
- }).start();
-
+ Integer language1 = userInfoMapper.selectById(orderLogistics.getUserId()).getLanguage();
systemNoticeService.addSystemNotice(2, language == 1 ? "您已成功抢得包裹订单,请及时联系客户!" :
language == 2 ? "You have grabbed the delivery order, please contact the client timely."
: "Vous avez saisi la commande du livraison. Veuillez contacter le client en temps opportun.", orderLogistics.getDriverId());
- systemNoticeService.addSystemNotice(1, language == 1 ? "您的订单已指派给" + driver.getFirstName() + "师傅,请保持电话畅通!" :
- language == 2 ? "Your order has been assigned to the driver- " + driver.getFirstName() + ", please keep your line on."
+ systemNoticeService.addSystemNotice(1, language1 == 1 ? "您的订单已指派给" + driver.getFirstName() + "师傅,请保持电话畅通!" :
+ language1 == 2 ? "Your order has been assigned to the driver- " + driver.getFirstName() + ", please keep your line on."
: "Votre commande a été attribuée au chauffeur- " + driver.getFirstName() + ", S'il vous plaît, restez en ligne.", orderLogistics.getUserId());
return ResultUtil.success();
}
@@ -223,27 +342,63 @@
@Override
public Map<String, Object> queryOrderInfo(Integer language, Integer orderId) throws Exception {
Map<String, Object> map = orderLogisticsMapper.queryOrderInfo(orderId);
+ OrderLogistics orderLogistics = this.selectById(orderId);
if(null != map.get("travelTime_")){
String travelTime_ = map.get("travelTime_").toString();
map.put("travelTime_", DateUtil.conversionFormat1(language, travelTime_));
}
+ Integer orderState = Integer.valueOf(map.get("orderState").toString());
+ if(orderState == 12){
+ OrderCancel orderCancel = orderCancelService.selectOne(new EntityWrapper<OrderCancel>().eq("orderId", orderId)
+ .eq("orderType", 4).eq("state", 1).orderBy("insertTime desc limit 0, 1"));
+ if(null != orderCancel){
+ map.put("cancelPayMoney", orderCancel.getMoney());
+ }
+ }
+ map.put("cancelUser", language == 1 ? "用户" : language == 2 ? "The client" : "Le client");
+ map.put("timeOutCancel", 0);
+ if(null != orderLogistics.getEstimateArriveTime()){
+ CancleOrder cancleOrder = cancleOrderService.selectOne(new EntityWrapper<CancleOrder>().eq("companyId", orderLogistics.getCompanyId()));
+ JSONObject jsonObject = JSON.parseObject(cancleOrder.getContent());
+ int driverTimeout = jsonObject.getIntValue("driverTimeout");
+ long timeOutCancel = orderLogistics.getEstimateArriveTime().getTime() + driverTimeout;
+ map.put("timeOutCancel", timeOutCancel);
+ }
+ map.put("isDispute", orderLogistics.getIsDispute());
return map;
}
+ @Autowired
+ private ISettlementDetailService settlementDetailService;
+ @Autowired
+ private ISettlementAllocationService settlementAllocationService;
+ @Autowired
+ private ISettlementRecordService settlementRecordService;
+
+ @Autowired
+ private OrderLogisticsSpreadService spreadService;
/**
* 走订单流程
* @param orderId
* @param state
* @param lon
* @param lat
- * @param address
* @return
* @throws Exception
*/
@Override
- public ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String address, String pickUpCode, Integer language) throws Exception {
+ public ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String pickUpCode, Integer language, Integer uid) throws Exception {
OrderLogistics orderLogistics = this.selectById(orderId);
+ String tripId = redisUtil.getValue("trip" + orderLogistics.getUserId());
+ ReverseGeocodeVo reverseGeocode = GoogleMapUtil.getReverseGeocode(lat, lon, tripId);
+ if(null == reverseGeocode){
+ return ResultUtil.error(language == 1 ? "无效的经纬度" : language == 2 ? "Invalid longitude and latitude" : "Longitude et latitude non valides");
+ }
+ String address = reverseGeocode.getAddress();
+ if(!uid.equals(orderLogistics.getDriverId())){
+ return ResultUtil.error(language == 1 ? "操作失败,请刷新订单" : language == 2 ? "Operation failed, please refresh the order" : "L’opération a échoué, veuillez actualiser la commande");
+ }
if(orderLogistics.getState().compareTo(state) == 0){
return ResultUtil.error(language == 1 ? "不能重复操作" : language == 2 ? "Unable to recur operate" : "Impossible de récurrence des opérer");
}
@@ -254,16 +409,23 @@
}
}
+ List<OrderLogisticsSpread> orderLogisticsId = spreadService.selectList(new EntityWrapper<OrderLogisticsSpread>().eq("orderLogisticsId", orderLogistics.getId()).eq("payType",4));
+ Integer language1 = userInfoMapper.selectById(orderLogistics.getUserId()).getLanguage();
+
+ String tripStatus = "UNKNOWN_TRIP_STATUS";
switch (state){
case 3://出发前往预约点
orderLogistics.setState(3);
orderLogistics.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.", orderLogistics.getUserId());
+ systemNoticeService.addSystemNotice(1, language1 == 1 ? "司机已出发,请耐心等待" : language1 == 2 ? "The driver is on the way, please wait." : "Le chauffeur est en route. Veuillez patienter.", orderLogistics.getUserId());
+ pushUtil.pushDriverPosition(orderId, 4);
+ tripStatus = "ENROUTE_TO_PICKUP";
break;
case 4://到达预约点,等待客户上车
orderLogistics.setState(4);
orderLogistics.setArriveTime(new Date());
- systemNoticeService.addSystemNotice(1, language == 1 ? "司机已到达您设置的预约地点。" : language == 2 ? "The driver has arrived at the reserved location." : "Le chauffeur est arrivé à l'endroit prévu.", orderLogistics.getUserId());
+ systemNoticeService.addSystemNotice(1, language1 == 1 ? "司机已到达您设置的预约地点。" : language1 == 2 ? "The driver has arrived at the reserved location." : "Le chauffeur est arrivé à l'endroit prévu.", orderLogistics.getUserId());
+ tripStatus = "ARRIVED_AT_PICKUP";
break;
case 5://开始服务
orderLogistics.setBoardingLon(lon);
@@ -272,802 +434,48 @@
orderLogistics.setBoardingTime(new Date());
orderLogistics.setState(5);
orderLogistics.setStartServiceTime(new Date());
-
- pushUtil.pushDriverPosition(orderLogistics.getId(), orderLogistics.getType());//主动推送司机定位
+ tripStatus = "ENROUTE_TO_DROPOFF";
break;
- case 6://结束服务(专车可以返回继续服务)不修改状态
+ case 6://结束服务
orderLogistics.setGetoffLon(lon);
orderLogistics.setGetoffLat(lat);
orderLogistics.setGetoffAddress(address);
orderLogistics.setGetoffTime(new Date());
orderLogistics.setEndServiceTime(new Date());
orderLogistics.setState(6);
-
- if(orderLogistics.getPayType() != 4){
- //添加已收入明细
- Company company = companyService.selectById(orderLogistics.getCompanyId());
- Double speMoney = company.getSameLogisticsMoney();
- BigDecimal d = null;//企业收入
- BigDecimal c = null;//司机收入
- if(company.getIsSameLogisticsFixedOrProportional() == 2){//固定
- d = new BigDecimal(speMoney);
- c = new BigDecimal(orderLogistics.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机
- }
- if(company.getIsSameLogisticsFixedOrProportional() == 1){//比例
- Double price = orderLogistics.getOrderMoney();
- d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN)));
- c = new BigDecimal(orderLogistics.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
- }
- incomeService.saveData(1, orderLogistics.getCompanyId(), 2, orderLogistics.getId(), 4, d.doubleValue());
- incomeService.saveData(2, orderLogistics.getDriverId(), 2, orderLogistics.getId(), 4, c.doubleValue());
- Driver driver = driverService.selectById(orderLogistics.getDriverId());
- driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
- driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
- driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
- driverService.updateById(driver);
- }
-
+ tripStatus = "";
break;
}
this.updateById(orderLogistics);
-
- if(6 == state && ToolUtil.isNotEmpty(pickUpCode)){
- fillInPickUpCode(orderId, pickUpCode, language);
+
+ //修改行程数据
+ if(ToolUtil.isNotEmpty(tripStatus)){
+ Car car = carService.selectById(orderLogistics.getCarId());
+ boolean updateTrip = fleetEngineUtil.updateTrip(tripStatus, car.getVehicleId(), null, orderLogistics.getTripId(), null, null, null, null, orderLogistics.getId(), 4);
+ if(!updateTrip){
+ for (int i = 0; i < 5; i++) {
+ updateTrip = fleetEngineUtil.updateTrip(tripStatus, car.getVehicleId(), null, orderLogistics.getTripId(), null, null, null, null, orderLogistics.getId(), 4);
+ if(updateTrip){
+ break;
+ }
+ try {
+ Thread.sleep(3000L);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
}
-
-
+
// TODO: 2020/6/5 推送状态
new Thread(new Runnable() {
@Override
public void run() {
- pushUtil.pushOrderState(1, orderLogistics.getUserId(), orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getState());
- pushUtil.pushOrderState(2, orderLogistics.getDriverId(), orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getState());
+ pushUtil.pushOrderState(1, orderLogistics.getUserId(), orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getState(), 0, "", "driver");
+ pushUtil.pushOrderState(2, orderLogistics.getDriverId(), orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getState(), 0, "", "driver");
}
}).start();
-
-
- if(state == 6){
- UserInfo userInfo = userInfoMapper.selectById(orderLogistics.getUserId());
- language = userInfo.getLanguage();
- if(orderLogistics.getPayType() == 1){
- if(ToolUtil.isNotEmpty(userInfo.getEmail())){
- String path = templatePath + "user/receiptLogistics.html";
- Document document = Jsoup.parse(new File(path), "UTF-8");
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
- Driver driver = driverService.selectById(orderLogistics.getDriverId());
- Car car = carMapper.selectById(orderLogistics.getCarId());
- Double aDouble = 0D;
- if(null != orderLogistics.getDriverId()){
- aDouble = orderEvaluateService.queryDriverScore(orderLogistics.getDriverId());
- }
- if(1 == language){
- document.getElementById("english").remove();
- document.getElementById("french").remove();
- document.getElementsByTag("title").get(0).text("I-GO电子收据");
- Element title_chinese = document.getElementById("title_chinese");
- title_chinese.text(DateUtil.conversionFormat(language, sdf.format(orderLogistics.getTravelTime())) + ",您在I-GO1个订单消费GHS " + orderLogistics.getPayMoney());
- Element xcf_chinese = document.getElementById("xcf_chinese");
- xcf_chinese.text("GHS " + orderLogistics.getOrderMoney());
- if(null != orderLogistics.getCouponMoney() && orderLogistics.getCouponMoney() > 0){
- Element yhq_chinese = document.getElementById("yhq_chinese");
- yhq_chinese.text("GHS -" + orderLogistics.getCouponMoney());
- }else{
- Element yhq_chinese_div = document.getElementById("yhq_chinese_div");
- yhq_chinese_div.remove();
- }
- if(null != orderLogistics.getDiscountMoney() && orderLogistics.getDiscountMoney() > 0){
- Element zk_chinese = document.getElementById("zk_chinese");
- zk_chinese.text("GHS -" + orderLogistics.getDiscountMoney());
- }else{
- Element zk_chinese_div = document.getElementById("zk_chinese_div");
- zk_chinese_div.remove();
- }
- if(null != orderLogistics.getRedPacketMoney() && orderLogistics.getRedPacketMoney() > 0){
- Element hb_chinese = document.getElementById("hb_chinese");
- hb_chinese.text("GHS -" + orderLogistics.getRedPacketMoney());
- }else{
- Element hb_chinese_div = document.getElementById("hb_chinese_div");
- hb_chinese_div.remove();
- }
- Element xj_chinese = document.getElementById("xj_chinese");
- xj_chinese.text("GHS " + orderLogistics.getPayMoney());
- Element pay_type_chinese = document.getElementById("pay_type_chinese");
- pay_type_chinese.text("手机支付");
- Element pay_money_chinese = document.getElementById("pay_money_chinese");
- pay_money_chinese.text("GHS " + orderLogistics.getPayMoney());
- Element pdf_chinese = document.getElementById("pdf_chinese");
- pdf_chinese.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=4");
- Element lost_item_chinese = document.getElementById("lost_item_chinese");
- lost_item_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=4");
-// Element track_chinese = document.getElementById("track_chinese");
-// track_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/location.html");
- Element pay_time_chinese = document.getElementById("pay_time_chinese");
- pay_time_chinese.text(DateUtil.conversionFormat(language, sdf1.format(orderLogistics.getTravelTime())));
- Elements driver_chinese = document.getElementsByClass("driver_chinese");
- for (int i = 0; i < driver_chinese.size(); i++) {
- Element element = driver_chinese.get(i);
- element.text(driver.getFirstName() + "." + driver.getLastName());
- }
- Element cp_chinese = document.getElementById("cp_chinese");
- cp_chinese.text("车牌:" + car.getCarLicensePlate());
- Element pf_chinese = document.getElementById("pf_chinese");
- pf_chinese.text("司机评分:" + aDouble);
- Element start_address_chinese = document.getElementById("start_address_chinese");
- start_address_chinese.text(orderLogistics.getStartAddress());
- Element end_address_chinese = document.getElementById("end_address_chinese");
- end_address_chinese.text(orderLogistics.getEndAddress());
- Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId()));
- Element server_tel_chinese = document.getElementById("server_tel_chinese");
- server_tel_chinese.attr("href", "tel:" + (null != phone ? phone.getPhone() : ""));
- }
- if(2 == language){
- document.getElementById("chinese").remove();
- document.getElementById("french").remove();
- document.getElementsByTag("title").get(0).text("Receipt");
- Element title_english = document.getElementById("title_english");
- title_english.text(DateUtil.conversionFormat(language, sdf.format(orderLogistics.getTravelTime())) + ",You spent GHS " + orderLogistics.getPayMoney() + " on the trip ");
- Element xcf_english = document.getElementById("xcf_english");
- xcf_english.text("GHS " + orderLogistics.getOrderMoney());
- if(null != orderLogistics.getCouponMoney() && orderLogistics.getCouponMoney() > 0){
- Element yhq_english = document.getElementById("yhq_english");
- yhq_english.text("GHS -" + orderLogistics.getCouponMoney());
- }else{
- Element yhq_english_div = document.getElementById("yhq_english_div");
- yhq_english_div.remove();
- }
- if(null != orderLogistics.getDiscountMoney() && orderLogistics.getDiscountMoney() > 0){
- Element zk_english = document.getElementById("zk_english");
- zk_english.text("GHS -" + orderLogistics.getDiscountMoney());
- }else{
- Element zk_english_div = document.getElementById("zk_english_div");
- zk_english_div.remove();
- }
- if(null != orderLogistics.getRedPacketMoney() && orderLogistics.getRedPacketMoney() > 0){
- Element hb_english = document.getElementById("hb_english");
- hb_english.text("GHS -" + orderLogistics.getRedPacketMoney());
- }else{
- Element hb_english_div = document.getElementById("hb_english_div");
- hb_english_div.remove();
- }
- Element xj_english = document.getElementById("xj_english");
- xj_english.text("GHS " + orderLogistics.getPayMoney());
- Element pay_type_english = document.getElementById("pay_type_english");
- pay_type_english.text("Mobile money");
- Element pay_money_english = document.getElementById("pay_money_english");
- pay_money_english.text("GHS " + orderLogistics.getPayMoney());
- Element pdf_english = document.getElementById("pdf_english");
- pdf_english.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=4");
- Element lost_item_english = document.getElementById("lost_item_english");
- lost_item_english.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=4");
-// Element track_english = document.getElementById("track_english");
-// track_english.attr("href", "http://182.160.16.251:81/mailbox/user/location.html");
- Element pay_time_english = document.getElementById("pay_time_english");
- pay_time_english.text(DateUtil.conversionFormat(language, sdf1.format(orderLogistics.getTravelTime())));
- Elements driver_english = document.getElementsByClass("driver_english");
- for (int i = 0; i < driver_english.size(); i++) {
- Element element = driver_english.get(i);
- element.text(driver.getFirstName() + "." + driver.getLastName());
- }
- Element cp_english = document.getElementById("cp_english");
- cp_english.text("Number Plate:" + car.getCarLicensePlate());
- Element pf_english = document.getElementById("pf_english");
- pf_english.text("Driver Rating:" + aDouble);
- Element start_address_english = document.getElementById("start_address_english");
- start_address_english.text(orderLogistics.getStartAddress());
- Element end_address_english = document.getElementById("end_address_english");
- end_address_english.text(orderLogistics.getEndAddress());
- Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId()));
- Element server_tel_english = document.getElementById("server_tel_english");
- server_tel_english.attr("href", "tel:" + (null != phone ? phone.getPhone() : ""));
- }
- if(3 == language){
- document.getElementById("chinese").remove();
- document.getElementById("english").remove();
- document.getElementsByTag("title").get(0).text("Reçu");
- Element title_french = document.getElementById("title_french");
- title_french.text(DateUtil.conversionFormat(language, sdf.format(orderLogistics.getTravelTime())) + ",Vous consommez GHS " + orderLogistics.getPayMoney() + " sur votre commande i-go1 le ");
- Element xcf_french = document.getElementById("xcf_french");
- xcf_french.text("GHS " + orderLogistics.getOrderMoney());
- if(null != orderLogistics.getCouponMoney() && orderLogistics.getCouponMoney() > 0){
- Element yhq_french = document.getElementById("yhq_french");
- yhq_french.text("GHS -" + orderLogistics.getCouponMoney());
- }else{
- Element yhq_french_div = document.getElementById("yhq_french_div");
- yhq_french_div.remove();
- }
- if(null != orderLogistics.getDiscountMoney() && orderLogistics.getDiscountMoney() > 0){
- Element zk_french = document.getElementById("zk_french");
- zk_french.text("GHS -" + orderLogistics.getDiscountMoney());
- }else{
- Element zk_french_div = document.getElementById("zk_french_div");
- zk_french_div.remove();
- }
- if(null != orderLogistics.getRedPacketMoney() && orderLogistics.getRedPacketMoney() > 0){
- Element hb_french = document.getElementById("hb_french");
- hb_french.text("GHS -" + orderLogistics.getRedPacketMoney());
- }else{
- Element hb_french_div = document.getElementById("hb_french_div");
- hb_french_div.remove();
- }
- Element xj_french = document.getElementById("xj_french");
- xj_french.text("GHS " + orderLogistics.getPayMoney());
- Element pay_type_french = document.getElementById("pay_type_french");
- pay_type_french.text("Argent mobile");
- Element pay_money_french = document.getElementById("pay_money_french");
- pay_money_french.text("GHS " + orderLogistics.getPayMoney());
- Element pdf_french = document.getElementById("pdf_french");
- pdf_french.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=4");
- Element lost_item_french = document.getElementById("lost_item_french");
- lost_item_french.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=4");
-// Element track_french = document.getElementById("track_french");
-// track_french.attr("href", "http://182.160.16.251:81/mailbox/user/location.html");
- Element pay_time_french = document.getElementById("pay_time_french");
- pay_time_french.text(DateUtil.conversionFormat(language, sdf1.format(orderLogistics.getTravelTime())));
- Elements driver_french = document.getElementsByClass("driver_french");
- for (int i = 0; i < driver_french.size(); i++) {
- Element element = driver_french.get(i);
- element.text(driver.getFirstName() + "." + driver.getLastName());
- }
- Element cp_french = document.getElementById("cp_french");
- cp_french.text("Plaque: GS " + car.getCarLicensePlate());
- Element pf_french = document.getElementById("pf_french");
- pf_french.text("Note du chauffeur: " + aDouble);
- Element start_address_french = document.getElementById("start_address_french");
- start_address_french.text(orderLogistics.getStartAddress());
- Element end_address_french = document.getElementById("end_address_french");
- end_address_french.text(orderLogistics.getEndAddress());
- Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId()));
- Element server_tel_french = document.getElementById("server_tel_french");
- server_tel_french.attr("href", "tel:" + (null != phone ? phone.getPhone() : ""));
- }
-
- EmailUtil.send(userInfo.getEmail(), language == 1 ? "I-GO电子收据" : language == 2 ? "Receipt" : "Reçu", document.html());
-
- //开始生成pdf收据和html收据
- File file = new File("/usr/local/nginx/html/files/html/");
- if(!file.exists()){
- file.mkdirs();
- }
- file = new File("/usr/local/nginx/html/files/html/parcel_receipt_" + orderId + ".html");
- if(!file.exists()){
- file.createNewFile();
- }
- FileWriter fileWriter = new FileWriter(file);
- fileWriter.write(document.html());
- fileWriter.flush();
- fileWriter.close();
-
- File file1 = new File("/usr/local/nginx/html/files/pdf/");
- if(!file1.exists()){
- file1.mkdirs();
- }
- file1 = new File("/usr/local/nginx/html/files/pdf/parcel_receipt_" + orderId + ".pdf");
- if(!file1.exists()){
- file1.createNewFile();
- }
- try{
- FileOutputStream fileOutputStream = new FileOutputStream(file1);
- HtmlToPdfUtils.convertToPdf("/usr/local/nginx/html/files/html/parcel_receipt_" + orderId + ".html", "IGO", fileOutputStream);
- }catch (Exception e){
- e.printStackTrace();
- System.out.println("html转pdf异常");
- }
-
- String link ="http://182.160.16.251:81/files/html/parcel_receipt_" + orderId + ".html";
- TEmail tEmail = new TEmail();
- tEmail.setLink(link);
- tEmail.setUserId(userInfo.getId());
- tEmail.setType(1);
- tEmail.setName(language == 1 ? "I-GO电子收据" : language == 2 ? "Receipt" : "Reçu");
- tEmail.setOrderId(orderId);
- tEmail.setCreateTime(new Date());
- int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1;
- String week = EmailUtil.getWeek(language, i);
- tEmail.setWeek(week);
- boolean am = cn.hutool.core.date.DateUtil.isAM(new Date());
- if(am){
- tEmail.setAmOrPm(language==1?"上午":language==2?"morning":"matin");
- }else {
- tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi");
- }
- emailService.insert(tEmail);
-
- }
- }
- if(orderLogistics.getPayType() == 2){
- if(ToolUtil.isNotEmpty(userInfo.getEmail())){
- String path = templatePath + "user/receiptLogistics.html";
- Document document = Jsoup.parse(new File(path), "UTF-8");
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
- Driver driver = driverService.selectById(orderLogistics.getDriverId());
- Car car = carMapper.selectById(orderLogistics.getCarId());
- Double aDouble = 0D;
- if(null != orderLogistics.getDriverId()){
- aDouble = orderEvaluateService.queryDriverScore(orderLogistics.getDriverId());
- }
- if(1 == language){
- document.getElementById("english").remove();
- document.getElementById("french").remove();
- document.getElementsByTag("title").get(0).text("I-GO电子收据");
- Element title_chinese = document.getElementById("title_chinese");
- title_chinese.text(DateUtil.conversionFormat(language, sdf.format(orderLogistics.getTravelTime())) + ",您在I-GO1个订单消费GHS " + orderLogistics.getPayMoney());
- Element xcf_chinese = document.getElementById("xcf_chinese");
- xcf_chinese.text("GHS " + orderLogistics.getOrderMoney());
- if(null != orderLogistics.getCouponMoney() && orderLogistics.getCouponMoney() > 0){
- Element yhq_chinese = document.getElementById("yhq_chinese");
- yhq_chinese.text("GHS -" + orderLogistics.getCouponMoney());
- }else{
- Element yhq_chinese_div = document.getElementById("yhq_chinese_div");
- yhq_chinese_div.remove();
- }
- if(null != orderLogistics.getDiscountMoney() && orderLogistics.getDiscountMoney() > 0){
- Element zk_chinese = document.getElementById("zk_chinese");
- zk_chinese.text("GHS -" + orderLogistics.getDiscountMoney());
- }else{
- Element zk_chinese_div = document.getElementById("zk_chinese_div");
- zk_chinese_div.remove();
- }
- if(null != orderLogistics.getRedPacketMoney() && orderLogistics.getRedPacketMoney() > 0){
- Element hb_chinese = document.getElementById("hb_chinese");
- hb_chinese.text("GHS -" + orderLogistics.getRedPacketMoney());
- }else{
- Element hb_chinese_div = document.getElementById("hb_chinese_div");
- hb_chinese_div.remove();
- }
- Element xj_chinese = document.getElementById("xj_chinese");
- xj_chinese.text("GHS " + orderLogistics.getPayMoney());
- Element pay_type_chinese = document.getElementById("pay_type_chinese");
- pay_type_chinese.text("银行卡支付");
- Element pay_money_chinese = document.getElementById("pay_money_chinese");
- pay_money_chinese.text("GHS " + orderLogistics.getPayMoney());
- Element pdf_chinese = document.getElementById("pdf_chinese");
- pdf_chinese.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=4");
- Element lost_item_chinese = document.getElementById("lost_item_chinese");
- lost_item_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=4");
-// Element track_chinese = document.getElementById("track_chinese");
-// track_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/location.html");
- Element pay_time_chinese = document.getElementById("pay_time_chinese");
- pay_time_chinese.text(DateUtil.conversionFormat(language, sdf1.format(orderLogistics.getTravelTime())));
- Elements driver_chinese = document.getElementsByClass("driver_chinese");
- for (int i = 0; i < driver_chinese.size(); i++) {
- Element element = driver_chinese.get(i);
- element.text(driver.getFirstName() + "." + driver.getLastName());
- }
- Element cp_chinese = document.getElementById("cp_chinese");
- cp_chinese.text("车牌:" + car.getCarLicensePlate());
- Element pf_chinese = document.getElementById("pf_chinese");
- pf_chinese.text("司机评分:" + aDouble);
- Element start_address_chinese = document.getElementById("start_address_chinese");
- start_address_chinese.text(orderLogistics.getStartAddress());
- Element end_address_chinese = document.getElementById("end_address_chinese");
- end_address_chinese.text(orderLogistics.getEndAddress());
- Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId()));
- Element server_tel_chinese = document.getElementById("server_tel_chinese");
- server_tel_chinese.attr("href", "tel:" + (null != phone ? phone.getPhone() : ""));
- }
- if(2 == language){
- document.getElementById("chinese").remove();
- document.getElementById("french").remove();
- document.getElementsByTag("title").get(0).text("Receipt");
- Element title_english = document.getElementById("title_english");
- title_english.text(DateUtil.conversionFormat(language, sdf.format(orderLogistics.getTravelTime())) + ",You spent GHS " + orderLogistics.getPayMoney() + " on the trip ");
- Element xcf_english = document.getElementById("xcf_english");
- xcf_english.text("GHS " + orderLogistics.getOrderMoney());
- if(null != orderLogistics.getCouponMoney() && orderLogistics.getCouponMoney() > 0){
- Element yhq_english = document.getElementById("yhq_english");
- yhq_english.text("GHS -" + orderLogistics.getCouponMoney());
- }else{
- Element yhq_english_div = document.getElementById("yhq_english_div");
- yhq_english_div.remove();
- }
- if(null != orderLogistics.getDiscountMoney() && orderLogistics.getDiscountMoney() > 0){
- Element zk_english = document.getElementById("zk_english");
- zk_english.text("GHS -" + orderLogistics.getDiscountMoney());
- }else{
- Element zk_english_div = document.getElementById("zk_english_div");
- zk_english_div.remove();
- }
- if(null != orderLogistics.getRedPacketMoney() && orderLogistics.getRedPacketMoney() > 0){
- Element hb_english = document.getElementById("hb_english");
- hb_english.text("GHS -" + orderLogistics.getRedPacketMoney());
- }else{
- Element hb_english_div = document.getElementById("hb_english_div");
- hb_english_div.remove();
- }
- Element xj_english = document.getElementById("xj_english");
- xj_english.text("GHS " + orderLogistics.getPayMoney());
- Element pay_type_english = document.getElementById("pay_type_english");
- pay_type_english.text("Bank card");
- Element pay_money_english = document.getElementById("pay_money_english");
- pay_money_english.text("GHS " + orderLogistics.getPayMoney());
- Element pdf_english = document.getElementById("pdf_english");
- pdf_english.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=4");
- Element lost_item_english = document.getElementById("lost_item_english");
- lost_item_english.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=4");
-// Element track_english = document.getElementById("track_english");
-// track_english.attr("href", "http://182.160.16.251:81/mailbox/user/location.html");
- Element pay_time_english = document.getElementById("pay_time_english");
- pay_time_english.text(DateUtil.conversionFormat(language, sdf1.format(orderLogistics.getTravelTime())));
- Elements driver_english = document.getElementsByClass("driver_english");
- for (int i = 0; i < driver_english.size(); i++) {
- Element element = driver_english.get(i);
- element.text(driver.getFirstName() + "." + driver.getLastName());
- }
- Element cp_english = document.getElementById("cp_english");
- cp_english.text("Number Plate:" + car.getCarLicensePlate());
- Element pf_english = document.getElementById("pf_english");
- pf_english.text("Driver Rating:" + aDouble);
- Element start_address_english = document.getElementById("start_address_english");
- start_address_english.text(orderLogistics.getStartAddress());
- Element end_address_english = document.getElementById("end_address_english");
- end_address_english.text(orderLogistics.getEndAddress());
- Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId()));
- Element server_tel_english = document.getElementById("server_tel_english");
- server_tel_english.attr("href", "tel:" + (null != phone ? phone.getPhone() : ""));
- }
- if(3 == language){
- document.getElementById("chinese").remove();
- document.getElementById("english").remove();
- document.getElementsByTag("title").get(0).text("Reçu");
- Element title_french = document.getElementById("title_french");
- title_french.text(DateUtil.conversionFormat(language, sdf.format(orderLogistics.getTravelTime())) + ",Vous consommez GHS " + orderLogistics.getPayMoney() + " sur votre commande i-go1 le ");
- Element xcf_french = document.getElementById("xcf_french");
- xcf_french.text("GHS " + orderLogistics.getOrderMoney());
- if(null != orderLogistics.getCouponMoney() && orderLogistics.getCouponMoney() > 0){
- Element yhq_french = document.getElementById("yhq_french");
- yhq_french.text("GHS -" + orderLogistics.getCouponMoney());
- }else{
- Element yhq_french_div = document.getElementById("yhq_french_div");
- yhq_french_div.remove();
- }
- if(null != orderLogistics.getDiscountMoney() && orderLogistics.getDiscountMoney() > 0){
- Element zk_french = document.getElementById("zk_french");
- zk_french.text("GHS -" + orderLogistics.getDiscountMoney());
- }else{
- Element zk_french_div = document.getElementById("zk_french_div");
- zk_french_div.remove();
- }
- if(null != orderLogistics.getRedPacketMoney() && orderLogistics.getRedPacketMoney() > 0){
- Element hb_french = document.getElementById("hb_french");
- hb_french.text("GHS -" + orderLogistics.getRedPacketMoney());
- }else{
- Element hb_french_div = document.getElementById("hb_french_div");
- hb_french_div.remove();
- }
- Element xj_french = document.getElementById("xj_french");
- xj_french.text("GHS " + orderLogistics.getPayMoney());
- Element pay_type_french = document.getElementById("pay_type_french");
- pay_type_french.text("Carte bancaire");
- Element pay_money_french = document.getElementById("pay_money_french");
- pay_money_french.text("GHS " + orderLogistics.getPayMoney());
- Element pdf_french = document.getElementById("pdf_french");
- pdf_french.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=4");
- Element lost_item_french = document.getElementById("lost_item_french");
- lost_item_french.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=4");
-// Element track_french = document.getElementById("track_french");
-// track_french.attr("href", "http://182.160.16.251:81/mailbox/user/location.html");
- Element pay_time_french = document.getElementById("pay_time_french");
- pay_time_french.text(DateUtil.conversionFormat(language, sdf1.format(orderLogistics.getTravelTime())));
- Elements driver_french = document.getElementsByClass("driver_french");
- for (int i = 0; i < driver_french.size(); i++) {
- Element element = driver_french.get(i);
- element.text(driver.getFirstName() + "." + driver.getLastName());
- }
- Element cp_french = document.getElementById("cp_french");
- cp_french.text("Plaque: GS " + car.getCarLicensePlate());
- Element pf_french = document.getElementById("pf_french");
- pf_french.text("Note du chauffeur: " + aDouble);
- Element start_address_french = document.getElementById("start_address_french");
- start_address_french.text(orderLogistics.getStartAddress());
- Element end_address_french = document.getElementById("end_address_french");
- end_address_french.text(orderLogistics.getEndAddress());
- Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId()));
- Element server_tel_french = document.getElementById("server_tel_french");
- server_tel_french.attr("href", "tel:" + (null != phone ? phone.getPhone() : ""));
- }
-
- EmailUtil.send(userInfo.getEmail(), language == 1 ? "I-GO电子收据" : language == 2 ? "Receipt" : "Reçu", document.html());
-
- //开始生成pdf收据和html收据
- File file = new File("/usr/local/nginx/html/files/html/");
- if(!file.exists()){
- file.mkdirs();
- }
- file = new File("/usr/local/nginx/html/files/html/parcel_receipt_" + orderId + ".html");
- if(!file.exists()){
- file.createNewFile();
- }
- FileWriter fileWriter = new FileWriter(file);
- fileWriter.write(document.html());
- fileWriter.flush();
- fileWriter.close();
-
- File file1 = new File("/usr/local/nginx/html/files/pdf/");
- if(!file1.exists()){
- file1.mkdirs();
- }
- file1 = new File("/usr/local/nginx/html/files/pdf/parcel_receipt_" + orderId + ".pdf");
- if(!file1.exists()){
- file1.createNewFile();
- }
- try{
- FileOutputStream fileOutputStream = new FileOutputStream(file1);
- HtmlToPdfUtils.convertToPdf("/usr/local/nginx/html/files/html/parcel_receipt_" + orderId + ".html", "IGO", fileOutputStream);
- }catch (Exception e){
- e.printStackTrace();
- System.out.println("html转pdf异常");
- }
-
- String link ="http://182.160.16.251:81/files/html/parcel_receipt_" + orderId + ".html";
- TEmail tEmail = new TEmail();
- tEmail.setLink(link);
- tEmail.setUserId(userInfo.getId());
- tEmail.setType(1);
- tEmail.setName(language == 1 ? "I-GO电子收据" : language == 2 ? "Receipt" : "Reçu");
- tEmail.setOrderId(orderId);
- tEmail.setCreateTime(new Date());
- int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1;
- String week = EmailUtil.getWeek(language, i);
- tEmail.setWeek(week);
- boolean am = cn.hutool.core.date.DateUtil.isAM(new Date());
- if(am){
- tEmail.setAmOrPm(language==1?"上午":language==2?"morning":"matin");
- }else {
- tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi");
- }
- emailService.insert(tEmail);
-
- }
- }
- if(orderLogistics.getPayType() == 3){
- if(ToolUtil.isNotEmpty(userInfo.getEmail())){
- String path = templatePath + "user/receiptLogistics.html";
- Document document = Jsoup.parse(new File(path), "UTF-8");
- SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
- SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
- Driver driver = driverService.selectById(orderLogistics.getDriverId());
- Car car = carMapper.selectById(orderLogistics.getCarId());
- Double aDouble = 0D;
- if(null != orderLogistics.getDriverId()){
- aDouble = orderEvaluateService.queryDriverScore(orderLogistics.getDriverId());
- }
- if(1 == language){
- document.getElementById("english").remove();
- document.getElementById("french").remove();
- document.getElementsByTag("title").get(0).text("I-GO电子收据");
- Element title_chinese = document.getElementById("title_chinese");
- title_chinese.text(DateUtil.conversionFormat(language, sdf2.format(orderLogistics.getTravelTime())) + ",您在I-GO1个订单消费GHS " + orderLogistics.getPayMoney());
- Element xcf_chinese = document.getElementById("xcf_chinese");
- xcf_chinese.text("GHS " + orderLogistics.getOrderMoney());
- if(null != orderLogistics.getCouponMoney() && orderLogistics.getCouponMoney() > 0){
- Element yhq_chinese = document.getElementById("yhq_chinese");
- yhq_chinese.text("GHS -" + orderLogistics.getCouponMoney());
- }else{
- Element yhq_chinese_div = document.getElementById("yhq_chinese_div");
- yhq_chinese_div.remove();
- }
- if(null != orderLogistics.getDiscountMoney() && orderLogistics.getDiscountMoney() > 0){
- Element zk_chinese = document.getElementById("zk_chinese");
- zk_chinese.text("GHS -" + orderLogistics.getDiscountMoney());
- }else{
- Element zk_chinese_div = document.getElementById("zk_chinese_div");
- zk_chinese_div.remove();
- }
- if(null != orderLogistics.getRedPacketMoney() && orderLogistics.getRedPacketMoney() > 0){
- Element hb_chinese = document.getElementById("hb_chinese");
- hb_chinese.text("GHS -" + orderLogistics.getRedPacketMoney());
- }else{
- Element hb_chinese_div = document.getElementById("hb_chinese_div");
- hb_chinese_div.remove();
- }
- Element xj_chinese = document.getElementById("xj_chinese");
- xj_chinese.text("GHS " + orderLogistics.getPayMoney());
- Element pay_type_chinese = document.getElementById("pay_type_chinese");
- pay_type_chinese.text("余额支付");
- Element pay_money_chinese = document.getElementById("pay_money_chinese");
- pay_money_chinese.text("GHS " + orderLogistics.getPayMoney());
- Element pdf_chinese = document.getElementById("pdf_chinese");
- pdf_chinese.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=4");
- Element lost_item_chinese = document.getElementById("lost_item_chinese");
- lost_item_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=4");
-// Element track_chinese = document.getElementById("track_chinese");
-// track_chinese.attr("href", "http://182.160.16.251:81/mailbox/user/location.html");
- Element pay_time_chinese = document.getElementById("pay_time_chinese");
- pay_time_chinese.text(DateUtil.conversionFormat(language, sdf1.format(orderLogistics.getTravelTime())));
- Elements driver_chinese = document.getElementsByClass("driver_chinese");
- for (int i = 0; i < driver_chinese.size(); i++) {
- Element element = driver_chinese.get(i);
- element.text(driver.getFirstName() + "." + driver.getLastName());
- }
- Element cp_chinese = document.getElementById("cp_chinese");
- cp_chinese.text("车牌:" + car.getCarLicensePlate());
- Element pf_chinese = document.getElementById("pf_chinese");
- pf_chinese.text("司机评分:" + aDouble);
- Element start_address_chinese = document.getElementById("start_address_chinese");
- start_address_chinese.text(orderLogistics.getStartAddress());
- Element end_address_chinese = document.getElementById("end_address_chinese");
- end_address_chinese.text(orderLogistics.getEndAddress());
- Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId()));
- Element server_tel_chinese = document.getElementById("server_tel_chinese");
- server_tel_chinese.attr("href", "tel:" + (null != phone ? phone.getPhone() : ""));
- }
- if(2 == language){
- document.getElementById("chinese").remove();
- document.getElementById("french").remove();
- document.getElementsByTag("title").get(0).text("Receipt");
- Element title_english = document.getElementById("title_english");
- title_english.text(DateUtil.conversionFormat(language, sdf2.format(orderLogistics.getTravelTime())) + ",You spent GHS " + orderLogistics.getPayMoney() + " on the trip ");
- Element xcf_english = document.getElementById("xcf_english");
- xcf_english.text("GHS " + orderLogistics.getOrderMoney());
- if(null != orderLogistics.getCouponMoney() && orderLogistics.getCouponMoney() > 0){
- Element yhq_english = document.getElementById("yhq_english");
- yhq_english.text("GHS -" + orderLogistics.getCouponMoney());
- }else{
- Element yhq_english_div = document.getElementById("yhq_english_div");
- yhq_english_div.remove();
- }
- if(null != orderLogistics.getDiscountMoney() && orderLogistics.getDiscountMoney() > 0){
- Element zk_english = document.getElementById("zk_english");
- zk_english.text("GHS -" + orderLogistics.getDiscountMoney());
- }else{
- Element zk_english_div = document.getElementById("zk_english_div");
- zk_english_div.remove();
- }
- if(null != orderLogistics.getRedPacketMoney() && orderLogistics.getRedPacketMoney() > 0){
- Element hb_english = document.getElementById("hb_english");
- hb_english.text("GHS -" + orderLogistics.getRedPacketMoney());
- }else{
- Element hb_english_div = document.getElementById("hb_english_div");
- hb_english_div.remove();
- }
- Element xj_english = document.getElementById("xj_english");
- xj_english.text("GHS " + orderLogistics.getPayMoney());
- Element pay_type_english = document.getElementById("pay_type_english");
- pay_type_english.text("I-GO Wallet");
- Element pay_money_english = document.getElementById("pay_money_english");
- pay_money_english.text("GHS " + orderLogistics.getPayMoney());
- Element pdf_english = document.getElementById("pdf_english");
- pdf_english.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=4");
- Element lost_item_english = document.getElementById("lost_item_english");
- lost_item_english.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=4");
-// Element track_english = document.getElementById("track_english");
-// track_english.attr("href", "http://182.160.16.251:81/mailbox/user/location.html");
- Element pay_time_english = document.getElementById("pay_time_english");
- pay_time_english.text(DateUtil.conversionFormat(language, sdf1.format(orderLogistics.getTravelTime())));
- Elements driver_english = document.getElementsByClass("driver_english");
- for (int i = 0; i < driver_english.size(); i++) {
- Element element = driver_english.get(i);
- element.text(driver.getFirstName() + "." + driver.getLastName());
- }
- Element cp_english = document.getElementById("cp_english");
- cp_english.text("Number Plate:" + car.getCarLicensePlate());
- Element pf_english = document.getElementById("pf_english");
- pf_english.text("Driver Rating:" + aDouble);
- Element start_address_english = document.getElementById("start_address_english");
- start_address_english.text(orderLogistics.getStartAddress());
- Element end_address_english = document.getElementById("end_address_english");
- end_address_english.text(orderLogistics.getEndAddress());
- Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId()));
- Element server_tel_english = document.getElementById("server_tel_english");
- server_tel_english.attr("href", "tel:" + (null != phone ? phone.getPhone() : ""));
- }
- if(3 == language){
- document.getElementById("chinese").remove();
- document.getElementById("english").remove();
- document.getElementsByTag("title").get(0).text("Reçu");
- Element title_french = document.getElementById("title_french");
- title_french.text(DateUtil.conversionFormat(language, sdf2.format(orderLogistics.getTravelTime())) + ",Vous consommez GHS " + orderLogistics.getPayMoney() + " sur votre commande i-go1 le ");
- Element xcf_french = document.getElementById("xcf_french");
- xcf_french.text("GHS " + orderLogistics.getOrderMoney());
- if(null != orderLogistics.getCouponMoney() && orderLogistics.getCouponMoney() > 0){
- Element yhq_french = document.getElementById("yhq_french");
- yhq_french.text("GHS -" + orderLogistics.getCouponMoney());
- }else{
- Element yhq_french_div = document.getElementById("yhq_french_div");
- yhq_french_div.remove();
- }
- if(null != orderLogistics.getDiscountMoney() && orderLogistics.getDiscountMoney() > 0){
- Element zk_french = document.getElementById("zk_french");
- zk_french.text("GHS -" + orderLogistics.getDiscountMoney());
- }else{
- Element zk_french_div = document.getElementById("zk_french_div");
- zk_french_div.remove();
- }
- if(null != orderLogistics.getRedPacketMoney() && orderLogistics.getRedPacketMoney() > 0){
- Element hb_french = document.getElementById("hb_french");
- hb_french.text("GHS -" + orderLogistics.getRedPacketMoney());
- }else{
- Element hb_french_div = document.getElementById("hb_french_div");
- hb_french_div.remove();
- }
- Element xj_french = document.getElementById("xj_french");
- xj_french.text("GHS " + orderLogistics.getPayMoney());
- Element pay_type_french = document.getElementById("pay_type_french");
- pay_type_french.text("Portefeuille I-GO");
- Element pay_money_french = document.getElementById("pay_money_french");
- pay_money_french.text("GHS " + orderLogistics.getPayMoney());
- Element pdf_french = document.getElementById("pdf_french");
- pdf_french.attr("href", "http://182.160.16.251:80/user/base/order/uploadReceiptPdf?orderId=" + orderId + "&orderType=4");
- Element lost_item_french = document.getElementById("lost_item_french");
- lost_item_french.attr("href", "http://182.160.16.251:81/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=4");
-// Element track_french = document.getElementById("track_french");
-// track_french.attr("href", "http://182.160.16.251:81/mailbox/user/location.html");
- Element pay_time_french = document.getElementById("pay_time_french");
- pay_time_french.text(DateUtil.conversionFormat(language, sdf1.format(orderLogistics.getTravelTime())));
- Elements driver_french = document.getElementsByClass("driver_french");
- for (int i = 0; i < driver_french.size(); i++) {
- Element element = driver_french.get(i);
- element.text(driver.getFirstName() + "." + driver.getLastName());
- }
- Element cp_french = document.getElementById("cp_french");
- cp_french.text("Plaque: GS " + car.getCarLicensePlate());
- Element pf_french = document.getElementById("pf_french");
- pf_french.text("Note du chauffeur: " + aDouble);
- Element start_address_french = document.getElementById("start_address_french");
- start_address_french.text(orderLogistics.getStartAddress());
- Element end_address_french = document.getElementById("end_address_french");
- end_address_french.text(orderLogistics.getEndAddress());
- Phone phone = phoneService.selectOne(new EntityWrapper<Phone>().eq("type", 2).eq("companyId", driver.getCompanyId()));
- Element server_tel_french = document.getElementById("server_tel_french");
- server_tel_french.attr("href", "tel:" + (null != phone ? phone.getPhone() : ""));
- }
-
- EmailUtil.send(userInfo.getEmail(), language == 1 ? "I-GO电子收据" : language == 2 ? "Receipt" : "Reçu", document.html());
-
- //开始生成pdf收据和html收据
- File file = new File("/usr/local/nginx/html/files/html/");
- if(!file.exists()){
- file.mkdirs();
- }
- file = new File("/usr/local/nginx/html/files/html/parcel_receipt_" + orderId + ".html");
- if(!file.exists()){
- file.createNewFile();
- }
- FileWriter fileWriter = new FileWriter(file);
- fileWriter.write(document.html());
- fileWriter.flush();
- fileWriter.close();
-
- File file1 = new File("/usr/local/nginx/html/files/pdf/");
- if(!file1.exists()){
- file1.mkdirs();
- }
- file1 = new File("/usr/local/nginx/html/files/pdf/parcel_receipt_" + orderId + ".pdf");
- if(!file1.exists()){
- file1.createNewFile();
- }
- try{
- FileOutputStream fileOutputStream = new FileOutputStream(file1);
- HtmlToPdfUtils.convertToPdf("/usr/local/nginx/html/files/html/parcel_receipt_" + orderId + ".html", "IGO", fileOutputStream);
- }catch (Exception e){
- e.printStackTrace();
- System.out.println("html转pdf异常");
- }
-
- String link ="http://182.160.16.251:81/files/html/parcel_receipt_" + orderId + ".html";
- TEmail tEmail = new TEmail();
- tEmail.setLink(link);
- tEmail.setUserId(userInfo.getId());
- tEmail.setType(1);
- tEmail.setName(language == 1 ? "I-GO电子收据" : language == 2 ? "Receipt" : "Reçu");
- tEmail.setOrderId(orderId);
- tEmail.setCreateTime(new Date());
- int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1;
- String week = EmailUtil.getWeek(language, i);
- tEmail.setWeek(week);
- boolean am = cn.hutool.core.date.DateUtil.isAM(new Date());
- if(am){
- tEmail.setAmOrPm(language==1?"上午":language==2?"morning":"matin");
- }else {
- tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi");
- }
- emailService.insert(tEmail);
- }
- }
- }
-
+
return ResultUtil.success();
}
@@ -1085,7 +493,7 @@
if(!"1246".equals(pickUpCode) && !orderLogistics.getPickUpCode().equals(pickUpCode)){
return ResultUtil.error(language == 1 ? "验证失败" : language == 2 ? "Verification failed" : "Echec de la validation");
}
- orderLogistics.setState(9);
+ orderLogistics.setState(6);
this.updateById(orderLogistics);
return ResultUtil.success();
}
@@ -1100,35 +508,18 @@
*/
@Override
public ResultUtil makeUpTheDifference(Integer orderId, Double difference, Integer language) throws Exception {
- OrderLogisticsSpread query = orderLogisticsSpreadService.query(orderId);
OrderLogistics orderLogistics = this.selectById(orderId);
- if(orderLogistics.getState() != 4 && orderLogistics.getState() != 8){
+ if(orderLogistics.getState() != 4){
return ResultUtil.error(language == 1 ? "不允许设置差价" : language == 2 ? "To set price difference is not allowed." : "Il n’est pas permis de définir une différence de prix.");
}
- if(query != null){
- query.setPrice(difference);
- orderLogisticsSpreadService.updateById(query);
- return ResultUtil.success();
- }
- OrderLogisticsSpread orderLogisticsSpread = new OrderLogisticsSpread();
- orderLogisticsSpread.setOrderLogisticsId(orderId);
- orderLogisticsSpread.setPrice(difference);
- orderLogisticsSpreadService.insert(orderLogisticsSpread);
- orderLogistics.setState(8);
- this.updateById(orderLogistics);
-
- new Thread(new Runnable() {
- @Override
- public void run() {
- pushUtil.pushPayDifference(1, orderLogistics.getUserId(), orderId, orderLogistics.getType(), difference);
- }
- }).start();
+ //推送给乘客,需要乘客确认后再加
+ pushUtil.pushPayDifference(1, orderLogistics.getUserId(), orderId, orderLogistics.getType(), difference, 1);
return ResultUtil.success();
}
@Override
- public List<Map<String, Object>> queryOrderList(Integer driverId, Integer language) throws Exception {
- List<Map<String, Object>> list = orderLogisticsMapper.queryOrderList(driverId, language);
+ public List<Map<String, Object>> queryOrderList(Integer state, Integer driverId, Integer language) throws Exception {
+ List<Map<String, Object>> list = orderLogisticsMapper.queryOrderList(state, driverId, language);
for (Map<String, Object> map : list) {
if(null != map.get("time")){
String time = map.get("time").toString();
@@ -1216,23 +607,16 @@
new Thread(new Runnable() {
@Override
public void run() {
- pushUtil.pushOrderState(1, orderLogistics.getUserId(), orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getState());
- pushUtil.pushOrderState(2, orderLogistics.getDriverId(), orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getState());
+ pushUtil.pushOrderState(1, orderLogistics.getUserId(), orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getState(), 0, "", "driver");
+ pushUtil.pushOrderState(2, orderLogistics.getDriverId(), orderLogistics.getId(), orderLogistics.getType(), orderLogistics.getState(), 0, "", "driver");
}
}).start();
-
- new Thread(new Runnable() {
- @Override
- public void run() {
- pushUtil.pushDriverPosition(orderId, orderLogistics.getType());
- }
- }).start();
-
+ Integer language1 = userInfoMapper.selectById(orderLogistics.getUserId()).getLanguage();
systemNoticeService.addSystemNotice(2, language == 1 ? "您已成功抢得包裹订单,请及时联系客户!" :
language == 2 ? "You have grabbed the delivery order, please contact the client timely."
: "Vous avez saisi la commande du livraison. Veuillez contacter le client en temps opportun.", orderLogistics.getDriverId());
- systemNoticeService.addSystemNotice(1, language == 1 ? "您的订单已指派给" + driver.getFirstName() + "师傅,请保持电话畅通!" :
- language == 2 ? "Your order has been assigned to the driver- " + driver.getFirstName() + ", please keep your line on."
+ systemNoticeService.addSystemNotice(1, language1 == 1 ? "您的订单已指派给" + driver.getFirstName() + "师傅,请保持电话畅通!" :
+ language1 == 2 ? "Your order has been assigned to the driver- " + driver.getFirstName() + ", please keep your line on."
: "Votre commande a été attribuée au chauffeur- " + driver.getFirstName() + ", S'il vous plaît, restez en ligne.", orderLogistics.getUserId());
return ResultUtil.success();
@@ -1318,15 +702,15 @@
Element email2_user = document.getElementById("email2_user");
email2_user.text("Bonjour " + userInfo.getFirstName() + " " + userInfo.getLastName());
Element email2_content = document.getElementById("email2_content");
- email2_content.text("Le code de ramassage de votre colis est " + random + ", veuillez effectuer la verification dans les 5minutes.");
+ email2_content.text("Le code de ramassage de votre colis est " + random + ", veuillez effectuer la verification dans les 5 minutes.");
}
EmailUtil.send(userInfo.getEmail(), language == 1 ? "取件码邮件" : language == 2 ? "Pickup code" : "Code de ramassage", document.html());
//开始生成pdf收据和html收据
- File file = new File("/usr/local/nginx/html/files/html/");
+ File file = new File("/home/igotechgh/nginx/html/files/html/");
if(!file.exists()){
file.mkdirs();
}
- file = new File("/usr/local/nginx/html/files/html/code_" + orderId + ".html");
+ file = new File("/home/igotechgh/nginx/html/files/html/code_" + orderId + ".html");
if(!file.exists()){
file.createNewFile();
}
@@ -1335,7 +719,7 @@
fileWriter.flush();
fileWriter.close();
- String link ="http://182.160.16.251:81/files/html/code_" + orderId + ".html";
+ String link ="https://igo.i-go.group/files/html/code_" + orderId + ".html";
TEmail tEmail = new TEmail();
tEmail.setLink(link);
tEmail.setUserId(userInfo.getId());
@@ -1375,4 +759,478 @@
System.err.println("预支付数据异常(orderId = " + id + ")");
}
}
+
+
+ /**
+ * 处理乘客修改终点
+ * @param orderId
+ * @param status
+ */
+ @Override
+ public void updateEndAddress(Integer orderId, Integer status) {
+ OrderLogistics orderLogistics = this.selectById(orderId);
+ if(ToolUtil.isEmpty(orderLogistics.getDestinationLon())){
+ return;
+ }
+ if(2 == status){
+ orderLogistics.setEndLon(Double.valueOf(orderLogistics.getDestinationLon()));
+ orderLogistics.setEndLat(Double.valueOf(orderLogistics.getDestinationLat()));
+ orderLogistics.setEndAddress(orderLogistics.getDestination());
+ //修改google地图行程终点
+ Car car = carService.selectById(orderLogistics.getCarId());
+ boolean updateTrip = fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderLogistics.getTripId(),
+ null, null, orderLogistics.getEndLat().toString(), orderLogistics.getEndLon().toString(), orderLogistics.getId(), 4);
+ if(!updateTrip){
+ for (int i = 0; i < 5; i++) {
+ updateTrip = fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderLogistics.getTripId(),
+ null, null, orderLogistics.getEndLat().toString(), orderLogistics.getEndLon().toString(), orderLogistics.getId(), 4);
+ if(updateTrip){
+ break;
+ }
+ try {
+ Thread.sleep(3000L);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ }
+ this.updateById(orderLogistics);
+ pushUtil.pushModifyAddress(1, orderLogistics.getUserId(), orderId, 4, status);
+ }
+
+
+ /**
+ * 获取费用明细
+ * @param orderId
+ * @return
+ * @throws Exception
+ */
+ @Override
+ public Map<String, Object> queryMoneyInfo(Integer orderId) throws Exception {
+ OrderLogistics orderLogistics = this.selectById(orderId);
+ if(orderLogistics.getState() == 6){//服务中的时候获取实时费用数据
+ this.setMoney(orderLogistics, 0D, 0D);
+ orderLogistics.setOrderMoney(orderLogistics.getOrderMoney() + orderLogistics.getPriceDifference());
+ }
+
+ Map<String, Object> map = new HashMap<>();
+ map.put("orderMoney", orderLogistics.getOrderMoney());//订单金额
+ map.put("startMileage", orderLogistics.getStartMileage());//起步价
+ map.put("startMoney", orderLogistics.getStartMoney());//起步价
+ map.put("mileageKilometers", orderLogistics.getMileageKilometers());//里程费
+ map.put("mileageMoney", orderLogistics.getMileageMoney());//里程费
+ map.put("duration", orderLogistics.getDuration());//时长费
+ map.put("durationMoney", orderLogistics.getDurationMoney());//时长费
+ map.put("wait", orderLogistics.getWait());//等待费
+ map.put("waitMoney", orderLogistics.getWaitMoney());//等待费
+ map.put("longDistance", orderLogistics.getLongDistance());//远途费
+ map.put("longDistanceMoney", orderLogistics.getLongDistanceMoney());//远途费
+ map.put("parkMoney", orderLogistics.getParkMoney());//停车费
+ map.put("roadTollMoney", orderLogistics.getRoadTollMoney());//过路费
+ map.put("redPacketMoney", orderLogistics.getRedPacketMoney());//红包抵扣金额
+ map.put("couponMoney", orderLogistics.getCouponMoney());//优惠券抵扣金额
+ map.put("discountMoney", orderLogistics.getDiscountMoney());//折扣抵扣金额
+ map.put("discount", orderLogistics.getDiscount());//折扣
+ map.put("priceDifference", orderLogistics.getPriceDifference());//补差价
+ map.put("isDispute", orderLogistics.getIsDispute());
+ return map;
+ }
+
+
+
+ /**
+ * 计算价格
+ * @param orderLogistics
+ * @param parkingFee
+ * @param crossingFee
+ * @return
+ * @throws Exception
+ */
+ public OrderLogistics setMoney(OrderLogistics orderLogistics, Double parkingFee, Double crossingFee) throws Exception {
+ Map<String, Object> query1 = systemPriceMapper.query(orderLogistics.getCompanyId(), 4, orderLogistics.getServerCarModelId());
+ if(null == query1){
+ throw new RuntimeException("请先添加计费规则");
+ }
+ //开始根据不同的方式计算金额
+ double amount = 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 == orderLogistics.getMileage() ? 0D : orderLogistics.getMileage()) / 1000;//实际公里
+ double t = ((orderLogistics.getEndServiceTime().getTime() - orderLogistics.getStartServiceTime().getTime()) / 60000) + 1;//实际时间(不满一分钟按一分钟算)
+ double w = ((orderLogistics.getStartServiceTime().getTime() - orderLogistics.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段
+
+
+ //夜间服务处理逻辑
+// if(ToolUtil.isNotEmpty(num16)){
+// 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);
+// }
+// amount = num17 + (d1 * num18) + (t1 * num19) + (w1 * num7) + yt1 + yt2 + yt3;
+// orderLogistics.setStartMileage(num2);
+// orderLogistics.setStartMoney(num17);//起步价
+// orderLogistics.setStartDuration((int)(num3.doubleValue()));
+// orderLogistics.setMileageKilometers(new BigDecimal(d1).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+// orderLogistics.setMileageMoney(new BigDecimal(d1 * num18).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//里程费
+// orderLogistics.setDuration(new BigDecimal(t1).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+// orderLogistics.setDurationMoney(new BigDecimal(t1 * num19).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//时长费
+// orderLogistics.setWait(new BigDecimal(w1).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+// orderLogistics.setWaitMoney(new BigDecimal(w1 * num7).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//等待费
+// orderLogistics.setLongDistance(new BigDecimal((d > num8) ? d - num8 : 0).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+// orderLogistics.setLongDistanceMoney(new BigDecimal(yt1 + yt2 + yt3).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//远途费
+// orderLogistics.setParkMoney(parkingFee);//停车费
+// orderLogistics.setRoadTollMoney(crossingFee);//过路费
+// orderLogistics.setRedPacketMoney(0D);//红包抵扣
+// orderLogistics.setCouponMoney(0D);//优惠券抵扣
+// orderLogistics.setDiscount(0D);//优惠抵扣
+// orderLogistics.setPayMoney(0D);//支付金额
+// orderLogistics.setOrderMoney(new BigDecimal(amount + parkingFee + crossingFee).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+// orderLogistics.setMoneyType(2);
+// orderLogistics.setMoneyTime(num16);
+// return orderLogistics;
+// }
+// }
+
+
+ //高峰时段处理逻辑
+ 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);
+ }
+ amount = num25 + (d1 * num26) + (t1 * num27) + (w1 * num7) + yt1 + yt2 + yt3;
+ orderLogistics.setStartMileage(num2);
+ orderLogistics.setStartMoney(num25);//起步价
+ orderLogistics.setStartDuration((int)(num3.doubleValue()));
+ orderLogistics.setMileageKilometers(new BigDecimal(d1).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+ orderLogistics.setMileageMoney(new BigDecimal(d1 * num26).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//里程费
+ orderLogistics.setDuration(new BigDecimal(t1).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+ orderLogistics.setDurationMoney(new BigDecimal(t1 * num27).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//时长费
+ orderLogistics.setWait(new BigDecimal(w1).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+ orderLogistics.setWaitMoney(new BigDecimal(w1 * num7).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//等待费
+ orderLogistics.setLongDistance(new BigDecimal((d > num8) ? d - num8 : 0).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+ orderLogistics.setLongDistanceMoney(new BigDecimal(yt1 + yt2 + yt3).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//远途费
+ orderLogistics.setParkMoney(parkingFee);//停车费
+ orderLogistics.setRoadTollMoney(crossingFee);//过路费
+ orderLogistics.setRedPacketMoney(0D);//红包抵扣
+ orderLogistics.setCouponMoney(0D);//优惠券抵扣
+ orderLogistics.setDiscount(0D);//优惠抵扣
+ orderLogistics.setPayMoney(0D);//支付金额
+ orderLogistics.setOrderMoney(new BigDecimal(amount + parkingFee + crossingFee).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+ return orderLogistics;
+ }
+
+ //其他时间段的计算
+ 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);
+ }
+ amount = num1 + (d1 * num4) + (t1 * num5) + (w1 * num7) + yt1 + yt2 + yt3;
+ orderLogistics.setStartMileage(num2);
+ orderLogistics.setStartMoney(num1);//起步价
+ orderLogistics.setStartDuration((int)(num3.doubleValue()));
+ orderLogistics.setMileageKilometers(new BigDecimal(d1).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+ orderLogistics.setMileageMoney(new BigDecimal(d1 * num4).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//里程费
+ orderLogistics.setDuration(new BigDecimal(t1).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+ orderLogistics.setDurationMoney(new BigDecimal(t1 * num5).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//时长费
+ orderLogistics.setWait(new BigDecimal(w1).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+ orderLogistics.setWaitMoney(new BigDecimal(w1 * num7).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//等待费
+ orderLogistics.setLongDistance(new BigDecimal((d > num8) ? d - num8 : 0).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+ orderLogistics.setLongDistanceMoney(new BigDecimal(yt1 + yt2 + yt3).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//远途费
+ orderLogistics.setParkMoney(parkingFee);//停车费
+ orderLogistics.setRoadTollMoney(crossingFee);//过路费
+ orderLogistics.setRedPacketMoney(0D);//红包抵扣
+ orderLogistics.setCouponMoney(0D);//优惠券抵扣
+ orderLogistics.setDiscount(0D);//优惠抵扣
+ orderLogistics.setPayMoney(0D);//支付金额
+ orderLogistics.setOrderMoney(new BigDecimal(amount + parkingFee + crossingFee).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+
+ return orderLogistics;
+ }
+
+
+
+ /**
+ * 确认费用操作
+ * @param orderId
+ * @param type
+ * @param parkingFee
+ * @param crossingFee
+ * @return
+ * @throws Exception
+ */
+ @Override
+ public ResultUtil confirmFees(Integer language, Integer orderId, Integer type, Double parkingFee, Double crossingFee, Integer uid) throws Exception {
+ OrderLogistics orderLogistics = this.selectById(orderId);
+ if(!uid.equals(orderLogistics.getDriverId())){
+ return ResultUtil.error(language == 1 ? "操作失败,请刷新订单" : language == 2 ? "Operation failed, please refresh the order" : "L’opération a échoué, veuillez actualiser la commande");
+ }
+ if(6 != orderLogistics.getState()){
+ return ResultUtil.error(language == 1 ? "操作失败,请刷新订单" : language == 2 ? "Operation failed, please refresh the order" : "L’opération a échoué, veuillez actualiser la commande");
+ }
+ if(orderLogistics.getArriveTime()==null){
+ orderLogistics.setArriveTime(orderLogistics.getStartServiceTime());
+ }
+ orderLogistics = this.setMoney(orderLogistics, 0D, 0D);//计算费用
+ orderLogistics.setPayManner(type);
+ orderLogistics.setParkMoney(null == parkingFee ? 0D : parkingFee);
+ orderLogistics.setRoadTollMoney(null == crossingFee ? 0D : crossingFee);
+ orderLogistics.setOrderMoney(orderLogistics.getOrderMoney() + orderLogistics.getParkMoney() + orderLogistics.getRoadTollMoney() + orderLogistics.getPriceDifference());
+ //判断是否首单免费-免费直接完成
+ Integer orderNumber = this.selectCount(new EntityWrapper<OrderLogistics>().eq("userId",orderLogistics.getUserId()).last("and (state=8 or state=9)"));
+
+ if(orderNumber<=0){//判断是否是首单
+ //判断是否免单
+ UserInfo userInfo = userInfoMapper.selectById(orderLogistics.getUserId());
+ if(userInfo.getFreeMoney().doubleValue()>0d){
+ if(orderLogistics.getOrderMoney()<=userInfo.getFreeMoney().doubleValue()){
+ orderLogistics.setState(8);
+ //添加已收入明细
+ Company company = companyService.selectById(orderLogistics.getCompanyId());
+ Double speMoney = company.getSpeMoney();
+ BigDecimal d = null;//企业收入
+ BigDecimal c = null;//司机收入
+ if(company.getIsSpeFixedOrProportional() == 2){//固定
+ d = new BigDecimal(speMoney);
+ c = new BigDecimal(orderLogistics.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机
+ }
+ if(company.getIsSpeFixedOrProportional() == 1){//比例
+ Double price = orderLogistics.getStartMoney() + orderLogistics.getMileageMoney() + orderLogistics.getWaitMoney() + orderLogistics.getDurationMoney() + orderLogistics.getLongDistanceMoney();
+ d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN)));
+ c = new BigDecimal(orderLogistics.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
+ }
+ incomeService.saveData(1, orderLogistics.getCompanyId(), 2, orderLogistics.getId(), 4, d.doubleValue());
+ incomeService.saveData(2, orderLogistics.getDriverId(), 2, orderLogistics.getId(), 4, c.doubleValue());
+ Driver driver = driverService.selectById(orderLogistics.getDriverId());
+ driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+ driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+ driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+ driverService.updateById(driver);
+ }else{
+ orderLogistics.setState(7);
+ orderLogistics.setOrderMoney(orderLogistics.getOrderMoney()-userInfo.getFreeMoney().doubleValue());
+ orderLogistics.setFreeMoney(userInfo.getFreeMoney());
+
+ }
+
+ }else{
+ orderLogistics.setState(7);
+ }
+
+ }else{
+ orderLogistics.setState(7);
+ }
+
+ Map<String, String> map = chinaMobileUtil.midAxbUnBindSend(orderLogistics.getBindId(),orderLogistics.getTelX());
+ if(String.valueOf(map.get("code")).equals("200")){
+ orderLogistics.setTelX("");
+ orderLogistics.setBindId("");
+ }
+ this.updateById(orderLogistics);
+ //修改行程数据
+ Car car = carService.selectById(orderLogistics.getCarId());
+ boolean updateTrip = fleetEngineUtil.updateTrip("COMPLETE", car.getVehicleId(), null, orderLogistics.getTripId(), null, null, null, null, orderLogistics.getId(), 4);
+ if(!updateTrip){
+ for (int i = 0; i < 5; i++) {
+ updateTrip = fleetEngineUtil.updateTrip("COMPLETE", car.getVehicleId(), null, orderLogistics.getTripId(), null, null, null, null, orderLogistics.getId(), 4);
+ if(updateTrip){
+ orderLogistics.setIsover(1);
+ this.updateById(orderLogistics);
+ break;
+ }
+ try {
+ Thread.sleep(3000L);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }else{
+ orderLogistics.setIsover(1);
+ this.updateById(orderLogistics);
+ }
+ //上报行程
+ boolean reportBillableEvent = fleetEngineUtil.reportBillableEvent(orderLogistics.getTripId());
+ if(!reportBillableEvent){
+ for (int i = 0; i < 5; i++) {
+ reportBillableEvent = fleetEngineUtil.reportBillableEvent(orderLogistics.getTripId());
+ if(reportBillableEvent){
+ break;
+ }
+ try {
+ Thread.sleep(3000L);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+
+ pushUtil.removeTask(orderId, 4);//删除定时任务,结束推送数据
+ UserInfo userInfo = userInfoMapper.selectById(orderLogistics.getUserId());
+ Integer language1 = userInfo.getLanguage();
+ systemNoticeService.addSystemNotice(1, language1 == 1 ? "司机已结束本次行程,谢谢使用" : language1 == 2 ?
+ "The driver has finished the trip,thank you for using I-GO" : "Le chauffeur a terminé le trajet, merci d'utiliser I-GO", orderLogistics.getUserId());
+
+ //回滚司机状态为空闲
+ Driver driver = driverService.selectById(orderLogistics.getDriverId());
+ driver.setState(2);
+ driverService.updateById(driver);
+
+ OrderLogistics finalOrderTaxi = orderLogistics;
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ pushUtil.pushOrderState(1, finalOrderTaxi.getUserId(), finalOrderTaxi.getId(), 4, finalOrderTaxi.getState(), 0, "", "driver");
+ pushUtil.pushOrderState(2, finalOrderTaxi.getDriverId(), finalOrderTaxi.getId(), 4, finalOrderTaxi.getState(), 0, "", "driver");
+ }
+ }).start();
+ return ResultUtil.success();
+ }
+
+
+ /**
+ * 计算已服务的实时里程
+ * @param orderId
+ * @param lon
+ * @param lat
+ */
+ @Override
+ public boolean calculateMileage(Integer orderId, String lon, String lat) throws Exception {
+ OrderLogistics orderLogistics = this.selectById(orderId);
+ if(orderLogistics.getState() == 2){
+ return false;
+ }
+ OrderPosition orderPosition = orderPositionService.queryNew(orderId, 4);
+ String now = lon + "," + lat;
+ String old = null;
+ if(null != orderPosition){
+ old = orderPosition.getLon() + "," + orderPosition.getLat();
+ }else{
+ orderLogistics.setToStartPointMileage(0D);
+ orderLogistics.setMileage(0D);
+ this.updateById(orderLogistics);
+ return true;//第一条数据不作处理,直接存储
+ }
+
+ Map<String, Double> distance = GeodesyUtil.getDistance(now, old);
+ if(null != distance){
+ Double distance1 = distance.get("WGS84");
+ if(distance1 > 30 && Arrays.asList(3, 4).contains(orderLogistics.getState())){//大于50米表示在移动
+ orderLogistics.setToStartPointMileage(new BigDecimal(orderLogistics.getToStartPointMileage()).add(new BigDecimal(distance1)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+ this.updateById(orderLogistics);
+ return true;
+ }
+ if(distance1 > 30 && orderLogistics.getState()==5){//大于50米表示在移动
+ orderLogistics.setMileage(new BigDecimal(orderLogistics.getMileage()).add(new BigDecimal(distance1)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+ this.updateById(orderLogistics);
+ return true;
+ }
+ return false;
+ }else{
+ System.err.println("调用高德计算距离出错");
+ }
+ return false;
+ }
}
--
Gitblit v1.7.1