From 8b09fbc19a96b57bf1d0e4d7c79b51a76aeca554 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 28 三月 2025 19:57:56 +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