From 5c6c47caba66269e8d11bdb5c1ccc04fb7e74d88 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期三, 13 十一月 2024 10:46:50 +0800
Subject: [PATCH] 修改更新订单上tripid问题
---
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java | 473 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 432 insertions(+), 41 deletions(-)
diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java
index 1f791cd..7775ffd 100644
--- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java
+++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java
@@ -3,23 +3,34 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.stylefeng.guns.core.util.ToolUtil;
+import com.stylefeng.guns.modular.system.dao.CarModelMapper;
import com.stylefeng.guns.modular.system.dao.SettlementRecordMapper;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.*;
-import com.stylefeng.guns.modular.system.util.ResultUtil;
+import com.stylefeng.guns.modular.system.util.*;
+import com.stylefeng.guns.modular.system.util.GoogleMap.FleetEngineUtil;
import com.stylefeng.guns.modular.system.util.Tingg.TinggPayUtil;
import com.stylefeng.guns.modular.system.util.Tingg.model.CheckoutRequest;
import com.stylefeng.guns.modular.system.warpper.QueryHistoricalSettlement;
import com.stylefeng.guns.modular.system.warpper.QuerySettlementAmount;
import com.stylefeng.guns.modular.system.warpper.QuerySettlementAmountDetails;
+import org.apache.shiro.util.StringUtils;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import javax.annotation.Resource;
+import java.io.IOException;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.*;
+import java.util.stream.Collectors;
/**
* @author zhibing.pu
@@ -45,6 +56,27 @@
@Value("${callbackPath}")
private String callbackPath;//支付回调网关地址
+
+ @Resource
+ private IBalanceUsageRecordService balanceUsageRecordService;
+
+ @Resource
+ private IDriverWorkService driverWorkService;
+
+ @Autowired
+ private PushUtil pushUtil;
+
+ @Autowired
+ private RedisUtil redisUtil;
+
+ @Autowired
+ private ICarService carService;
+
+ @Autowired
+ private FleetEngineUtil fleetEngineUtil;
+
+ @Resource
+ private CarModelMapper carModelMapper;
@@ -54,20 +86,34 @@
* @return
*/
@Override
- public QuerySettlementAmount querySettlementAmount(Integer driverId) {
+ public QuerySettlementAmount querySettlementAmount(Integer language, Integer driverId) {
QuerySettlementAmount querySettlementAmount = new QuerySettlementAmount();
- SettlementRecord settlementRecord = this.selectOne(new EntityWrapper<SettlementRecord>().eq("driverId", driverId).eq("paymentStatus", 1));
- if(null != settlementRecord){
- querySettlementAmount.setType(settlementRecord.getType());
- querySettlementAmount.setAmount(settlementRecord.getPayMoney());
- List<SettlementDetail> settlementDetailList = settlementDetailService.selectList(new EntityWrapper<SettlementDetail>().eq("settlementRecordId", settlementRecord.getId()).orderBy("createTime desc"));
+ SettlementAllocation settlementAllocation = settlementAllocationService.selectOne(null);
+ if(null != settlementAllocation) {
+ JSONObject jsonObject = JSON.parseObject(settlementAllocation.getContent());
+ Integer type = jsonObject.getInteger("type");
+ querySettlementAmount.setType(type);
+ List<SettlementRecord> settlementRecords = this.selectList(new EntityWrapper<SettlementRecord>().eq("driverId", driverId).eq("paymentStatus", 1));
+ double sum = settlementRecords.stream().mapToDouble(SettlementRecord::getPayMoney).sum();
+ List<SettlementDetail> settlementDetailList = settlementDetailService.selectList(new EntityWrapper<SettlementDetail>().eq("driverId", driverId).isNull("settlementRecordId"));
+ double sum1 = settlementDetailList.stream().mapToDouble(SettlementDetail::getPrice).sum();
+ querySettlementAmount.setAmount(new BigDecimal(sum).add(new BigDecimal(sum1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+
+ List<Integer> collect = settlementRecords.stream().map(SettlementRecord::getId).collect(Collectors.toList());
+ Wrapper<SettlementDetail> wrapper = new EntityWrapper<SettlementDetail>();
+ if(collect.size() > 0){
+ wrapper.eq("driverId", driverId).in("settlementRecordId", collect).or().eq("driverId", driverId).isNull("settlementRecordId");
+ }else{
+ wrapper.eq("driverId", driverId).isNull("settlementRecordId");
+ }
+ settlementDetailList = settlementDetailService.selectList(wrapper.orderBy("createTime desc"));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
List<QuerySettlementAmountDetails> list = new ArrayList<>();
settlementDetailList.forEach(s -> {
QuerySettlementAmountDetails querySettlementAmountDetails = new QuerySettlementAmountDetails();
querySettlementAmountDetails.setOrderMoney(s.getOrderMoney());
querySettlementAmountDetails.setPayMoney(s.getPrice());
- querySettlementAmountDetails.setOrderTime(sdf.format(s.getCreateTime()));
+ querySettlementAmountDetails.setOrderTime(DateUtil.conversionFormat(language, sdf.format(s.getCreateTime())));
list.add(querySettlementAmountDetails);
});
querySettlementAmount.setList(list);
@@ -87,17 +133,48 @@
* @return
*/
@Override
+ @Transactional
public ResultUtil paymentSettlementAmount(Integer driverId, Integer payType, Integer bankCardId, Integer language) throws Exception {
Driver driver1 = driverService.selectById(driverId);
- SettlementRecord settlementRecord = this.selectOne(new EntityWrapper<SettlementRecord>().eq("driverId", driverId).eq("paymentStatus", 1));
- if(null == settlementRecord){
- return ResultUtil.error(language == 1 ? "暂无需支付" : language == 2 ? "No need to pay" : "Pas besoin de payer");
+ QuerySettlementAmount querySettlementAmount = querySettlementAmount(language, driverId);
+ if(querySettlementAmount.getAmount() == 0){
+ return ResultUtil.error(language == 1 ? "暂无需支付" : language == 2 ? "No payment is required" : "Aucun paiement n’est requis");
}
- Double payMoney = settlementRecord.getPayMoney();
+
+ Double payMoney = 0D;
+ //主动生成结算主数据
+ SettlementAllocation settlementAllocation = settlementAllocationService.selectOne(null);
+ if(null == settlementAllocation){
+ JSONObject jsonObject = JSON.parseObject(settlementAllocation.getContent());
+ Integer type = jsonObject.getInteger("type");
+
+ List<SettlementDetail> settlementDetails = settlementDetailService.selectList(new EntityWrapper<SettlementDetail>().eq("driverId", driverId).isNull("settlementRecordId"));
+ double sum = settlementDetails.stream().mapToDouble(SettlementDetail::getPrice).sum();
+ if(sum > 0){
+ SettlementRecord settlementRecord = new SettlementRecord();
+ settlementRecord.setDay(new Date());
+ settlementRecord.setDriverId(driverId);
+ settlementRecord.setType(type);
+ settlementRecord.setPaymentStatus(1);
+ settlementRecord.setPayMoney(new BigDecimal(sum).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+ settlementRecord.setInsertTime(new Date());
+ this.insert(settlementRecord);
+
+ settlementDetails.forEach(s -> {
+ s.setSettlementRecordId(settlementRecord.getId());
+ });
+ settlementDetailService.updateBatchById(settlementDetails);
+ }
+ }
+ List<SettlementRecord> settlementRecords = this.selectList(new EntityWrapper<SettlementRecord>().eq("driverId", driverId).eq("paymentStatus", 1));
+ payMoney = settlementRecords.stream().mapToDouble(SettlementRecord::getPayMoney).sum();
+ if(payMoney == 0){
+ return ResultUtil.error(language == 1 ? "暂无需支付" : language == 2 ? "No payment is required" : "Aucun paiement n’est requis");
+ }
ResultUtil resultUtil = ResultUtil.success("");
if(payType == 1){//手机支付
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
- String merchantTransactionId = sdf.format(new Date()) + language + settlementRecord.getId();
+ String merchantTransactionId = sdf.format(new Date()) + language + payType + driver1.getId();
CheckoutRequest checkoutRequest = new CheckoutRequest();
checkoutRequest.setMsisdn(Long.valueOf(driver1.getPhone()));
checkoutRequest.setCustomerEmail(driver1.getEmail());
@@ -107,21 +184,21 @@
checkoutRequest.setRequestAmount(payMoney);
checkoutRequest.setMerchantTransactionId(merchantTransactionId);
checkoutRequest.setRequestDescription("Settlement cost");
- checkoutRequest.setCallbackUrl(callbackPath + "/base/settlementRecord/querySettlementAmount");
+ checkoutRequest.setCallbackUrl(callbackPath + "/base/settlementRecord/paymentSettlementAmountCallback");
checkoutRequest.setPendingRedirectUrl("");
- checkoutRequest.setSuccessRedirectUrl("http://182.160.16.251:81/payMoney/pages/success.html");
- checkoutRequest.setFailRedirectUrl("http://182.160.16.251:81/payMoney/pages/fail.html");
+ checkoutRequest.setSuccessRedirectUrl("https://igo.i-go.group/payMoney/pages/success.html");
+ checkoutRequest.setFailRedirectUrl("https://igo.i-go.group/payMoney/pages/fail.html");
resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest);
if(resultUtil.getCode()!=200){
- resultUtil = ResultUtil.error(language == 1 ? "支付失败" : language == 2 ? "Payment failure" : "Paiement échoué", "");
+ resultUtil = ResultUtil.error(language == 1 ? "支付失败" : language == 2 ? "Payment failure" : "Échec de paiement", "");
}
return resultUtil;
}
if(payType == 2){//银行卡支付
BankCard bankCard = bankCardService.selectById(bankCardId);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
- String merchantTransactionId = sdf.format(new Date()) + language + settlementRecord.getId();
+ String merchantTransactionId = sdf.format(new Date()) + language + payType + driver1.getId();
CheckoutRequest checkoutRequest = new CheckoutRequest();
checkoutRequest.setMsisdn(Long.valueOf(bankCard.getCode()));
checkoutRequest.setCustomerEmail(driver1.getEmail());
@@ -131,41 +208,79 @@
checkoutRequest.setRequestAmount(payMoney);
checkoutRequest.setMerchantTransactionId(merchantTransactionId);
checkoutRequest.setRequestDescription("Settlement cost");
- checkoutRequest.setCallbackUrl(callbackPath + "/base/settlementRecord/querySettlementAmount");
+ checkoutRequest.setCallbackUrl(callbackPath + "/base/settlementRecord/paymentSettlementAmountCallback");
checkoutRequest.setPendingRedirectUrl("");
- checkoutRequest.setSuccessRedirectUrl("http://182.160.16.251:81/payMoney/pages/success.html");
- checkoutRequest.setFailRedirectUrl("http://182.160.16.251:81/payMoney/pages/fail.html");
+ checkoutRequest.setSuccessRedirectUrl("https://igo.i-go.group/payMoney/pages/success.html");
+ checkoutRequest.setFailRedirectUrl("https://igo.i-go.group/payMoney/pages/fail.html");
resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest);
if(resultUtil.getCode()!=200){
- resultUtil = ResultUtil.error(language == 1 ? "支付失败" : language == 2 ? "Payment failure" : "Paiement échoué", "");
+ resultUtil = ResultUtil.error(language == 1 ? "支付失败" : language == 2 ? "Payment failure" : "Échec de paiement", "");
}
return resultUtil;
}
if(payType == 3){//余额支付
if(driver1.getBalance() == null || driver1.getBalance() < payMoney){
- return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient account balance" : "Solde de compte insuffisant", "");
+ return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient balance" : "Solde insuffisant", "");
}
Double laveActivityMoney = driver1.getLaveActivityMoney();
Double laveBusinessMoney = driver1.getLaveBusinessMoney();
- if(laveBusinessMoney.compareTo(payMoney) < 0){
- driver1.setLaveBusinessMoney(0D);
- BigDecimal m = new BigDecimal(payMoney).subtract(new BigDecimal(laveBusinessMoney));
- driver1.setLaveActivityMoney(new BigDecimal(laveActivityMoney).subtract(m).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
- }else{
- driver1.setLaveBusinessMoney(new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(payMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+
+ for (SettlementRecord settlementRecord : settlementRecords) {
+ Double payMoney1 = settlementRecord.getPayMoney();
+ if(laveActivityMoney >= payMoney1){
+ settlementRecord.setPayMoney(payMoney1);
+ settlementRecord.setPaymentStatus(2);
+ settlementRecord.setPayType(payType);
+ settlementRecord.setBalanceType(1);
+ settlementRecord.setPayTime(new Date());
+ this.updateById(settlementRecord);
+ balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 1, payMoney1, settlementRecord.getType() + 2);
+ laveActivityMoney = new BigDecimal(laveActivityMoney).subtract(new BigDecimal(payMoney1)).doubleValue();
+ }else{
+ if(laveActivityMoney > 0){
+ settlementRecord.setPayMoney(laveActivityMoney);
+ settlementRecord.setPaymentStatus(2);
+ settlementRecord.setPayType(payType);
+ settlementRecord.setBalanceType(1);
+ settlementRecord.setPayTime(new Date());
+ this.updateById(settlementRecord);
+ balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 1, laveActivityMoney, settlementRecord.getType() + 2);
+ laveActivityMoney = 0D;
+ payMoney1 = new BigDecimal(payMoney1).subtract(new BigDecimal(laveActivityMoney)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+
+ SettlementRecord settlementRecord1 = new SettlementRecord();
+ BeanUtils.copyProperties(settlementRecord, settlementRecord1);
+ settlementRecord1.setId(null);
+ settlementRecord1.setPayMoney(payMoney1);
+ settlementRecord1.setPaymentStatus(2);
+ settlementRecord1.setPayType(payType);
+ settlementRecord1.setBalanceType(1);
+ settlementRecord1.setPayTime(new Date());
+ this.insert(settlementRecord1);
+
+ balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 2, payMoney1, settlementRecord.getType() + 2);
+ laveBusinessMoney = new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(payMoney1)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
+ }else{
+ settlementRecord.setPaymentStatus(2);
+ settlementRecord.setPayType(payType);
+ settlementRecord.setPayMoney(payMoney1);
+ settlementRecord.setBalanceType(2);
+ settlementRecord.setPayTime(new Date());
+ this.updateById(settlementRecord);
+ balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 2, payMoney1, settlementRecord.getType() + 2);
+ laveBusinessMoney = new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(payMoney1)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
+ }
+ }
}
- driver1.setBalance(new BigDecimal(driver1.getBalance()).subtract(new BigDecimal(payMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-
- //添加交易明细
- transactionDetailsService.saveData(driverId, "线下结算", payMoney, 2, 1, 2, null, null);
+ driver1.setLaveBusinessMoney(laveBusinessMoney);
+ driver1.setLaveActivityMoney(laveActivityMoney);
+ driver1.setBalance(new BigDecimal(laveBusinessMoney).add(new BigDecimal(laveActivityMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
driverService.updateById(driver1);
-
- settlementRecord.setPaymentStatus(2);
- settlementRecord.setPayType(payType);
- settlementRecord.setPayTime(new Date());
- this.updateById(settlementRecord);
+ //添加交易明细
+ transactionDetailsService.saveData(driverId, "支付结算费用", payMoney, 2, 1, 2, null, null);
+
return ResultUtil.success("");
}
return resultUtil;
@@ -178,9 +293,40 @@
* @return
*/
@Override
- public List<QueryHistoricalSettlement> queryHistoricalSettlement(Integer driverId, Integer pageNum, Integer size) {
+ public List<QueryHistoricalSettlement> queryHistoricalSettlement(Integer language, Integer driverId, Integer pageNum, Integer size) {
pageNum = (pageNum - 1) * size;
- return this.baseMapper.queryHistoricalSettlement(driverId, pageNum, size);
+ List<Map<String, Object>> list = this.baseMapper.queryHistoricalSettlement(driverId, pageNum, size);
+ Double aDouble = this.baseMapper.queryHistoricalSettlementTotal(driverId);
+ List<QueryHistoricalSettlement> datas = new ArrayList<>();
+ for (Map<String, Object> map : list) {
+ QueryHistoricalSettlement queryHistoricalSettlement = new QueryHistoricalSettlement();
+ if(null != map.get("createTime")){
+ queryHistoricalSettlement.setCreateTime(DateUtil.conversionFormat(language, map.get("createTime").toString()));
+ }
+ if(null != map.get("price")){
+ queryHistoricalSettlement.setPrice(Double.valueOf(map.get("price").toString()));
+ }
+ if(null != map.get("type")){
+ queryHistoricalSettlement.setType(Integer.valueOf(map.get("type").toString()));
+ }
+ if(null != map.get("payType")){
+ switch (map.get("payType").toString()){
+ case "1":
+ queryHistoricalSettlement.setPayType(language == 1 ? "手机支付" : language == 2 ? "Mobile Money" : "Paiement mobile");
+ break;
+ case "2":
+ queryHistoricalSettlement.setPayType(language == 1 ? "线上支付" : language == 2 ? "Bank Card" : "Carte bancaire");
+ break;
+ default:
+ Integer balanceType = Integer.valueOf(map.get("balanceType").toString());
+ queryHistoricalSettlement.setPayType(language == 1 ? "余额支付(" + (balanceType == 1 ? "奖励" : "收入") + ")" : language == 2 ? "Wallet (" + (balanceType == 1 ? "Reward" : "Income") + ")" : "Portefeuille (" + (balanceType == 1 ? "Récompense" : "Revenu") + ")");
+ break;
+ }
+ }
+ queryHistoricalSettlement.setTotalPrice(aDouble);
+ datas.add(queryHistoricalSettlement);
+ }
+ return datas;
}
@@ -208,11 +354,109 @@
w = w == 1 ? 7 : w - 1;
int d = today.get(Calendar.DAY_OF_MONTH);
if(null != settlementAllocation){
- List<Map<String, Object>> list = settlementDetailService.queryGroupDriver();
JSONObject jsonObject = JSON.parseObject(settlementAllocation.getContent());
Integer type = jsonObject.getInteger("type");
Integer day = jsonObject.getInteger("day");
+ if(type == 1){//日结算
+ List<Map<String, Object>> list = settlementDetailService.queryGroupDriver();
+ for (Map<String, Object> map : list) {
+ Integer driverId = Integer.valueOf(map.get("driverId").toString());
+ Double price = Double.valueOf(map.get("price").toString());
+
+ SettlementRecord settlementRecord = new SettlementRecord();
+ settlementRecord.setDay(new Date());
+ settlementRecord.setDriverId(driverId);
+ settlementRecord.setType(1);
+ settlementRecord.setPaymentStatus(1);
+ settlementRecord.setPayMoney(price);
+ settlementRecord.setInsertTime(new Date());
+ this.insert(settlementRecord);
+
+ List<SettlementDetail> settlementDetailList = settlementDetailService.selectList(new EntityWrapper<SettlementDetail>().eq("driverId", driverId).isNull("settlementRecordId"));
+ settlementDetailList.forEach(s -> {
+ s.setSettlementRecordId(settlementRecord.getId());
+ });
+ if(settlementDetailList.size() > 0){
+ settlementDetailService.updateBatchById(settlementDetailList);
+ }
+
+ //强制司机下班
+ DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>()
+ .eq("driverId", driverId).eq("state", 1));
+ if(null != driverWork){
+ driverWork.setEndTime(new Date());
+ driverWork.setState(2);
+ driverWorkService.updateById(driverWork);
+ Driver driver = driverService.selectById(driverId);
+ driver.setState(1);
+ driverService.updateById(driver);
+ Car car = carService.selectById(driver.getCarId());
+ if(!StringUtils.hasLength(car.getVehicleId())){
+ car.setVehicleId(UUIDUtil.getRandomCode());
+ carService.updateById(car);
+ }
+
+ //司机下班,修改谷歌上的车辆信息
+ new Thread(()->{
+ try {
+ CarModel carModel = carModelMapper.selectById(car.getCarModelId());
+ String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
+ if(ToolUtil.isEmpty(vehicles)){
+ 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(5000L);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ if(!updateVehicles){
+ for (int i = 0; i < 5; i++) {
+ updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ if(updateVehicles){
+ break;
+ }
+ try {
+ Thread.sleep(5000L);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ }else{
+ boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ if(!updateVehicles){
+ for (int i = 0; i < 5; i++) {
+ updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ if(updateVehicles){
+ break;
+ }
+ try {
+ Thread.sleep(5000L);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }).start();
+
+ }
+ }
+ }
if(type == 2 && w == day){//周结算
+ List<Map<String, Object>> list = settlementDetailService.queryGroupDriver();
for (Map<String, Object> map : list) {
Integer driverId = Integer.valueOf(map.get("driverId").toString());
Double price = Double.valueOf(map.get("price").toString());
@@ -233,9 +477,83 @@
if(settlementDetailList.size() > 0){
settlementDetailService.updateBatchById(settlementDetailList);
}
+
+ //强制司机下班
+ DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>()
+ .eq("driverId", driverId).eq("state", 1));
+ if(null != driverWork){
+ driverWork.setEndTime(new Date());
+ driverWork.setState(2);
+ driverWorkService.updateById(driverWork);
+ Driver driver = driverService.selectById(driverId);
+ driver.setState(1);
+ driverService.updateById(driver);
+ Car car = carService.selectById(driver.getCarId());
+ if(!StringUtils.hasLength(car.getVehicleId())){
+ car.setVehicleId(UUIDUtil.getRandomCode());
+ carService.updateById(car);
+ }
+
+ //司机下班,修改谷歌上的车辆信息
+ new Thread(()->{
+ try {
+ CarModel carModel = carModelMapper.selectById(car.getCarModelId());
+ String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
+ if(ToolUtil.isEmpty(vehicles)){
+ 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(5000L);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ if(!updateVehicles){
+ for (int i = 0; i < 5; i++) {
+ updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ if(updateVehicles){
+ break;
+ }
+ try {
+ Thread.sleep(5000L);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ }else{
+ boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ if(!updateVehicles){
+ for (int i = 0; i < 5; i++) {
+ updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ if(updateVehicles){
+ break;
+ }
+ try {
+ Thread.sleep(5000L);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }).start();
+ }
}
}
if(type == 3 && d == day){//月结算
+ List<Map<String, Object>> list = settlementDetailService.queryGroupDriver();
for (Map<String, Object> map : list) {
Integer driverId = Integer.valueOf(map.get("driverId").toString());
Double price = Double.valueOf(map.get("price").toString());
@@ -256,6 +574,79 @@
if(settlementDetailList.size() > 0){
settlementDetailService.updateBatchById(settlementDetailList);
}
+
+ //强制司机下班
+ DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>()
+ .eq("driverId", driverId).eq("state", 1));
+ if(null != driverWork){
+ driverWork.setEndTime(new Date());
+ driverWork.setState(2);
+ driverWorkService.updateById(driverWork);
+ Driver driver = driverService.selectById(driverId);
+ driver.setState(1);
+ driverService.updateById(driver);
+ Car car = carService.selectById(driver.getCarId());
+ if(!StringUtils.hasLength(car.getVehicleId())){
+ car.setVehicleId(UUIDUtil.getRandomCode());
+ carService.updateById(car);
+ }
+
+ //司机下班,修改谷歌上的车辆信息
+ new Thread(()->{
+ try {
+ CarModel carModel = carModelMapper.selectById(car.getCarModelId());
+ String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
+ if(ToolUtil.isEmpty(vehicles)){
+ 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(5000L);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ if(!updateVehicles){
+ for (int i = 0; i < 5; i++) {
+ updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ if(updateVehicles){
+ break;
+ }
+ try {
+ Thread.sleep(5000L);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ }else{
+ boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ if(!updateVehicles){
+ for (int i = 0; i < 5; i++) {
+ updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ if(updateVehicles){
+ break;
+ }
+ try {
+ Thread.sleep(5000L);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }).start();
+ }
}
}
}
--
Gitblit v1.7.1