From bfa0b11dfbfe5b71e11f4544e688e4d9f325d1b5 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期一, 09 六月 2025 10:26:51 +0800
Subject: [PATCH] 修改bug和管理后台报表
---
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java | 260 ++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 190 insertions(+), 70 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 b85b63c..15f6f87 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
@@ -22,6 +22,7 @@
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;
@@ -76,6 +77,9 @@
@Resource
private CarModelMapper carModelMapper;
+
+ @Resource
+ private IIncomeService incomeService;
@@ -92,10 +96,16 @@
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));
+ //所有未支付的主表数据
+ 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"));
+
+ //所有未生成主表数据的明细
+ 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());
@@ -132,6 +142,7 @@
* @return
*/
@Override
+ @Transactional
public ResultUtil paymentSettlementAmount(Integer driverId, Integer payType, Integer bankCardId, Integer language) throws Exception {
Driver driver1 = driverService.selectById(driverId);
QuerySettlementAmount querySettlementAmount = querySettlementAmount(language, driverId);
@@ -146,7 +157,9 @@
JSONObject jsonObject = JSON.parseObject(settlementAllocation.getContent());
Integer type = jsonObject.getInteger("type");
- List<SettlementDetail> settlementDetails = settlementDetailService.selectList(new EntityWrapper<SettlementDetail>().eq("driverId", driverId).isNull("settlementRecordId"));
+ //所以未生成主表的明细数据
+ 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();
@@ -172,7 +185,7 @@
ResultUtil resultUtil = ResultUtil.success("");
if(payType == 1){//手机支付
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
- String merchantTransactionId = sdf.format(new Date()) + language + payType + driver1;
+ String merchantTransactionId = sdf.format(new Date()) + language + payType + driver1.getId();
CheckoutRequest checkoutRequest = new CheckoutRequest();
checkoutRequest.setMsisdn(Long.valueOf(driver1.getPhone()));
checkoutRequest.setCustomerEmail(driver1.getEmail());
@@ -196,7 +209,7 @@
if(payType == 2){//银行卡支付
BankCard bankCard = bankCardService.selectById(bankCardId);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
- String merchantTransactionId = sdf.format(new Date()) + language + payType + driver1;
+ String merchantTransactionId = sdf.format(new Date()) + language + payType + driver1.getId();
CheckoutRequest checkoutRequest = new CheckoutRequest();
checkoutRequest.setMsisdn(Long.valueOf(bankCard.getCode()));
checkoutRequest.setCustomerEmail(driver1.getEmail());
@@ -224,76 +237,63 @@
Double laveActivityMoney = driver1.getLaveActivityMoney();
Double laveBusinessMoney = driver1.getLaveBusinessMoney();
- //活动余额小于结算金额
- if(null != laveActivityMoney && 0 < laveActivityMoney && laveActivityMoney.compareTo(payMoney) < 0){
- driver1.setLaveActivityMoney(0D);
- for (SettlementRecord settlementRecord : settlementRecords) {
- Double payMoney1 = settlementRecord.getPayMoney();
- if(laveActivityMoney >= payMoney1){
- settlementRecord.setPayMoney(payMoney1);
+
+ 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, payMoney1, settlementRecord.getType() + 2);
- laveActivityMoney = new BigDecimal(laveActivityMoney).subtract(new BigDecimal(payMoney1)).doubleValue();
- }else{
- Double m = payMoney1;
- 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;
- m = new BigDecimal(payMoney1).subtract(new BigDecimal(laveActivityMoney)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
- }
-
+ 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(m.doubleValue());
- settlementRecord1.setBalanceType(2);
+ settlementRecord1.setPayMoney(payMoney1);
+ settlementRecord1.setPaymentStatus(2);
+ settlementRecord1.setPayType(payType);
+ settlementRecord1.setBalanceType(1);
+ settlementRecord1.setPayTime(new Date());
this.insert(settlementRecord1);
- balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 2, m.doubleValue(), settlementRecord.getType() + 2);
- laveBusinessMoney = new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(m)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
+
+ 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.setLaveBusinessMoney(laveBusinessMoney);
}
- //活动余额大于结算金额
- if(null != laveActivityMoney && 0 < laveActivityMoney && laveActivityMoney.compareTo(payMoney) >= 0){
- driver1.setLaveActivityMoney(new BigDecimal(laveActivityMoney).subtract(new BigDecimal(payMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
- for (SettlementRecord settlementRecord : settlementRecords) {
- settlementRecord.setPaymentStatus(2);
- settlementRecord.setPayType(payType);
- settlementRecord.setBalanceType(1);
- settlementRecord.setPayTime(new Date());
- this.updateById(settlementRecord);
- balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 1, payMoney, settlementRecord.getType() + 2);
- }
- }
- if(null == laveActivityMoney || 0 == laveActivityMoney){
- driver1.setLaveActivityMoney(0D);
- driver1.setLaveBusinessMoney(new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(payMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
- for (SettlementRecord settlementRecord : settlementRecords) {
- settlementRecord.setPaymentStatus(2);
- settlementRecord.setPayType(payType);
- settlementRecord.setBalanceType(1);
- settlementRecord.setPayTime(new Date());
- this.updateById(settlementRecord);
- balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 2, payMoney, settlementRecord.getType() + 2);
- }
- }
-
- driver1.setBalance(new BigDecimal(driver1.getBalance()).subtract(new BigDecimal(payMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-
+ 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);
+ //添加司机结算的平台收入记录
+ incomeService.saveData(1, 1, 8, driver1.getId(), null, payMoney);
//添加交易明细
transactionDetailsService.saveData(driverId, "支付结算费用", payMoney, 2, 1, 2, null, null);
- driverService.updateById(driver1);
+
return ResultUtil.success("");
}
return resultUtil;
@@ -415,10 +415,50 @@
CarModel carModel = carModelMapper.selectById(car.getCarModelId());
String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
if(ToolUtil.isEmpty(vehicles)){
- fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
- fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ 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{
- fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ 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();
@@ -473,10 +513,50 @@
CarModel carModel = carModelMapper.selectById(car.getCarModelId());
String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
if(ToolUtil.isEmpty(vehicles)){
- fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
- fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ 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{
- fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ 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();
@@ -530,10 +610,50 @@
CarModel carModel = carModelMapper.selectById(car.getCarModelId());
String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
if(ToolUtil.isEmpty(vehicles)){
- fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
- fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ 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{
- fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
+ 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();
--
Gitblit v1.7.1