From 0275498af38bc1c8fbc5bfea54f3cce3550fd6ab Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期二, 11 二月 2025 09:57:54 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile into 1.1 --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 573 +++++++-------------------------------------------------- 1 files changed, 70 insertions(+), 503 deletions(-) diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java index 974db7f..d8f088a 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java @@ -402,7 +402,7 @@ if(null != data){ //支付失败,删除无效的订单 String tradeStatus = data.getTradeStatus(); - if(tradeStatus.equals("TRADE_CLOSED")){ + if(null != tradeStatus && tradeStatus.equals("TRADE_CLOSED")){ this.removeById(tChargingOrder.getId()); } } @@ -923,10 +923,13 @@ dto.setRefundReason("充电失败,取消充电订单"); RefundResp resp = aliPaymentClient.refund(dto).getData(); if(null != resp){ - AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", null); - if(success.isSuccess()){ - chargingOrderRefundService.save(chargingOrderRefund); + chargingOrderRefundService.save(chargingOrderRefund); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); } + chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null); } } @@ -1136,7 +1139,7 @@ if(1 == doubleIntegration){ num1 *= 2; } - + } GetInviteUser query = new GetInviteUser(); @@ -1226,8 +1229,12 @@ @Override public TCharingOrderVO chargingOrder(ChargingOrderQuery dto) { TCharingOrderVO tCharingOrderVO = new TCharingOrderVO(); - - + List<TChargingGun> allGun = chargingGunClient.getAllGun().getData(); + List<TChargingPile> allPile = chargingGunClient.getAllPile().getData(); + List<Site> data9 = siteClient.getSiteAll().getData(); + List<TAppUser> data6 = appUserClient.getAllUser().getData(); + List<Partner> data7 = siteClient.getAllPartner().getData(); + List<TAppUserCar> data4 = appUserCarClient.getAllCar().getData(); String startTime1 = null; String startTime2 = null; String endTime1 = null; @@ -1300,6 +1307,8 @@ BigDecimal refundMoney = new BigDecimal("0"); BigDecimal paymentMoney = new BigDecimal("0"); List<String> collect2 = list.stream().map(TChargingOrder::getCode).collect(Collectors.toList()); + List<TChargingOrderAccountingStrategy> list3 = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>()); + for (ChargingOrderVO chargingOrderVO : list) { if (roleType == 2){ for (Integer siteId : siteIds) { @@ -1312,20 +1321,19 @@ chargingOrderVO.setCommissionAmount(chargingOrderVO.getOrderAmount()!=null?chargingOrderVO.getOrderAmount().multiply(new BigDecimal("0.006")):new BigDecimal("0")); chargingOrderVO.setPlatFormMoney(chargingOrderVO.getOrderAmount()!=null?chargingOrderVO.getOrderAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0")); chargingOrderVO.setUid(chargingOrderVO.getId()+""); - TChargingGun data3 = chargingGunClient.getChargingGunById(chargingOrderVO.getChargingGunId()).getData(); - TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderVO.getChargingPileId()).getData(); + TChargingGun data3 = allGun.stream().filter(e->e.getId().equals(chargingOrderVO.getChargingGunId())).findFirst().orElse(null); + TChargingPile data2 = allPile.stream().filter(e->e.getId().equals(chargingOrderVO.getChargingPileId())).findFirst().orElse(null); if (chargingOrderVO.getSiteId()!=null){ List<Integer> integers = new ArrayList<>(); integers.add(chargingOrderVO.getSiteId()); - List<Site> data = siteClient.getSiteByIds(integers).getData(); - if (!data.isEmpty())chargingOrderVO.setSiteName(data.get(0).getName()); + Site site = data9.stream().filter(e -> e.getId().equals(chargingOrderVO.getSiteId())).findFirst().orElse(null); + if (site!=null)chargingOrderVO.setSiteName(site.getName()); } if (data2!=null && data3!=null){ chargingOrderVO.setTerminalName(data2.getName()+"-"+data3.getName()); } // 充电订单 明细记录 - List<TChargingOrderAccountingStrategy> chargingOrderId = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>() - .eq("charging_order_id", chargingOrderVO.getId())); + List<TChargingOrderAccountingStrategy> chargingOrderId = list3.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderVO.getId())).collect(Collectors.toList()); if (chargingOrderVO.getStartTime()!=null && chargingOrderVO.getEndTime()!=null){ LocalDateTime startTime = chargingOrderVO.getStartTime(); LocalDateTime endTime = chargingOrderVO.getEndTime(); @@ -1338,16 +1346,16 @@ int size = chargingOrderId.size(); chargingOrderVO.setCount(size); // 用户手机号 - TAppUser data = appUserClient.getUserById(chargingOrderVO.getAppUserId()).getData(); + TAppUser data = data6.stream().filter(e -> e.getId().equals(chargingOrderVO.getAppUserId())).findFirst().orElse(null); if (data!=null){ // 车牌号 chargingOrderVO.setPhone(data.getPhone()); List<Long> longs = new ArrayList<>(); if (chargingOrderVO.getAppUserCarId()!=null){ longs.add(chargingOrderVO.getAppUserCarId()); - List<TAppUserCar> data1 = appUserCarClient.getCarByIds(longs).getData(); - if (!data1.isEmpty()){ - chargingOrderVO.setLicensePlate(data1.get(0).getLicensePlate()); + TAppUserCar tAppUserCar = data4.stream().filter(e -> e.getId().equals(chargingOrderVO.getAppUserCarId())).findFirst().orElse(null); + if (tAppUserCar!=null){ + chargingOrderVO.setLicensePlate(tAppUserCar.getLicensePlate()); } }else{ chargingOrderVO.setLicensePlate(chargingOrderVO.getPlateNum()); @@ -1476,6 +1484,9 @@ String endTime1 = null; String endTime2 = null; + List<TChargingGun> allGun = chargingGunClient.getAllGun().getData(); + List<TChargingPile> allPile = chargingGunClient.getAllPile().getData(); + if (StringUtils.hasLength(dto.getStartTime())){ String[] split = dto.getStartTime().split(" - "); startTime1 = split[0]; @@ -1572,19 +1583,18 @@ chargingOrderListVO.setSiteName(site.getName()); } if (chargingOrderListVO.getChargingGunId()!=null && chargingOrderListVO.getChargingPileId()!=null){ - TChargingGun data1 = chargingGunClient.getChargingGunById(chargingOrderListVO.getChargingGunId()).getData(); - TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderListVO.getChargingPileId()).getData(); + TChargingGun data1 = allGun.stream().filter(e->e.getId().equals(chargingOrderListVO.getChargingGunId())).findFirst().orElse(null); + TChargingPile data2 = allPile.stream().filter(e->e.getId().equals(chargingOrderListVO.getChargingPileId())).findFirst().orElse(null); if (data2 != null && data1 != null) { chargingOrderListVO.setTerminalName(data2.getName() + "-" + data1.getName()); } } - // 获取充电时间 - UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderListVO.getCode()).getData(); - if (data5!=null){ - if (data5.getTime_remaining()!=null){ - chargingOrderListVO.setChargingSecond(data5.getCumulative_charging_time()*60L); - - } + if (chargingOrderListVO.getStartTime()!=null && chargingOrderListVO.getEndTime()!=null){ + LocalDateTime startTime = chargingOrderListVO.getStartTime(); + LocalDateTime endTime = chargingOrderListVO.getEndTime(); + // 计算时间差 单位秒 + long between = ChronoUnit.SECONDS.between(startTime, endTime); + chargingOrderListVO.setChargingSecond(between); } // 获取开始SOC 结束soc if (chargingOrderListVO.getCode()!=null){ @@ -1677,9 +1687,16 @@ if (site!=null){ chargingOrderListVO.setSiteName(site.getName()); } + if (chargingOrderListVO.getStartTime()!=null && chargingOrderListVO.getEndTime()!=null){ + LocalDateTime startTime = chargingOrderListVO.getStartTime(); + LocalDateTime endTime = chargingOrderListVO.getEndTime(); + // 计算时间差 单位秒 + long between = ChronoUnit.SECONDS.between(startTime, endTime); + chargingOrderListVO.setChargingSecond(between); + } if (chargingOrderListVO.getChargingGunId()!=null && chargingOrderListVO.getChargingPileId()!=null){ - TChargingGun data1 = chargingGunClient.getChargingGunById(chargingOrderListVO.getChargingGunId()).getData(); - TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderListVO.getChargingPileId()).getData(); + TChargingGun data1 = allGun.stream().filter(e->e.getId().equals(chargingOrderListVO.getChargingGunId())).findFirst().orElse(null); + TChargingPile data2 = allPile.stream().filter(e->e.getId().equals(chargingOrderListVO.getChargingPileId())).findFirst().orElse(null); if (data2 != null && data1 != null) { chargingOrderListVO.setTerminalName(data2.getName() + "-" + data1.getName()); } @@ -1802,6 +1819,8 @@ public ChargingOrderListInfoVO chargingInfo(String uid) { TChargingOrder chargingOrder= this.getById(uid); ChargingOrderListInfoVO chargingOrderListInfoVO = new ChargingOrderListInfoVO(); + chargingOrderListInfoVO.setStartTime(chargingOrder.getStartTime()); + chargingOrderListInfoVO.setEndTime(chargingOrder.getEndTime()); chargingOrderListInfoVO.setStatus(chargingOrder.getStatus()); BigDecimal bigDecimal = new BigDecimal("0.006"); if (chargingOrder.getOrderAmount()!=null){ @@ -1878,13 +1897,12 @@ chargingOrderListInfoVO.setList(data6); } - // 获取充电时间 - UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData(); - if (data5!=null){ - if (data5.getTime_remaining()!=null){ - chargingOrderListInfoVO.setChargingSecond(data5.getCumulative_charging_time()*60L+""); - - } + if (chargingOrderListInfoVO.getStartTime()!=null && chargingOrderListInfoVO.getEndTime()!=null){ + LocalDateTime startTime = chargingOrderListInfoVO.getStartTime(); + LocalDateTime endTime = chargingOrderListInfoVO.getEndTime(); + // 计算时间差 单位秒 + long between = ChronoUnit.SECONDS.between(startTime, endTime); + chargingOrderListInfoVO.setChargingSecond(between+""); } if (chargingOrder.getAppUserCarId()!=null){ @@ -1982,11 +2000,11 @@ */ @Override @GlobalTransactional(rollbackFor = Exception.class) - public void endChargeBillingCharge(TransactionRecordMessageVO vo) { + public R endChargeBillingCharge(TransactionRecordMessageVO vo) { TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number())); Integer status = chargingOrder.getStatus(); if(status == 5){ - return; + return R.ok(); } //如果使用优惠券需要判断优惠券是否满足使用条件 @@ -2126,6 +2144,7 @@ } }catch (Exception e){ e.printStackTrace(); + R.fail("处理失败"); } //开始处理明细 @@ -2159,6 +2178,7 @@ BigDecimal vipDiscountAmount = BigDecimal.ZERO; //计算优惠金额 if(null != chargingOrder.getVipDiscount()){ + //0.58折 vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount())); serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount()); } @@ -2173,9 +2193,7 @@ periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc); periodServicePrice_total = periodServicePrice_total.add(originalServicePrice); total = total.add(electrovalenc.add(originalServicePrice)); - } - //原金额 BigDecimal rechargeAmount = chargingOrder.getRechargeAmount(); @@ -2214,16 +2232,20 @@ discountAmount = discountAmount.setScale(4, RoundingMode.HALF_EVEN); payAmount = payAmount.subtract(discountAmount); periodServicePrice_total = periodServicePrice_total.subtract(discountAmount); - + TChargingOrder order = new TChargingOrder(); order.setId(chargingOrder.getId()); order.setAppUserId(chargingOrder.getAppUserId()); UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData(); if(null != uploadRealTimeMonitoringData && null == chargingOrder.getEndMode()){ Integer soc = uploadRealTimeMonitoringData.getSoc(); - order.setEndMode(soc > 98 ? 2 : 3); - }else{ - order.setEndMode(1); + if(soc >= 98){ + order.setEndMode(2); + }else if(chargingOrder.getResidualAmount().compareTo(new BigDecimal(1)) <= 0){ + order.setEndMode(3); + }else{ + order.setEndMode(0); + } } order.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.HALF_EVEN)); order.setStartTime(LocalDateTime.parse(vo.getStart_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS"))); @@ -2421,444 +2443,9 @@ } } + return R.ok(); } - -// /** -// * 停止充电返回账单后计算费用 -// * @param vo -// */ -// @Override -// @GlobalTransactional(rollbackFor = Exception.class) -// public void endChargeBillingCharge1(TransactionRecordMessageVO vo) { -// TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number())); -// Integer status = chargingOrder.getStatus(); -//// if(status == 5){ -//// return; -//// } -// -// //如果使用优惠券需要判断优惠券是否满足使用条件 -// //根据实际的充电金额计算退款金额 退回费用=(原金额/总金额)*(总金额-实际充电金额) -// //退款金额=优惠券金额+剩余充电金额 -// BigDecimal periodElectricPrice_total = BigDecimal.ZERO; -// BigDecimal periodServicePrice_total = BigDecimal.ZERO; -// BigDecimal total = BigDecimal.ZERO; -// -// //获取订单的计费策略 -// List<AccountingStrategyDetailOrder> accountingStrategyDetailOrderList = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData(); -// accountingStrategyDetailOrderList.get(accountingStrategyDetailOrderList.size() - 1).setEndTime("23:59"); -// //开始处理计费明细数据和优惠数据 -//// chargingOrderAccountingStrategyService.remove(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId())); -// SimpleDateFormat sdfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); -// List<AccountingStrategyDetailOrderVo> lists = new ArrayList<>(); -// try { -// //跨天 -// if(!vo.getStart_time().split(" ")[0].equals(vo.getEnd_time().split(" ")[0])){ -// //当天的 -// //开始通过计费策略遍历解析每个时段的费用明细 -// String start_time = vo.getStart_time(); -// String end_time = vo.getEnd_time(); -// long start = sdfs.parse(start_time).getTime(); -// long end = sdfs.parse(end_time).getTime(); -// Class<? extends TransactionRecordMessageVO> clazz = vo.getClass(); -// /** -// * "start_time": "2025-01-03 23:06:43.00", -// * "end_time": "2025-01-04 00:39:39.00", -// */ -// for (int i = accountingStrategyDetailOrderList.size(); i > 0; i--) { -// AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.get(i - 1); -// long time = sdfs.parse(start_time.split(" ")[0] + " " + strategyDetail.getEndTime() + ":00").getTime(); -// if(time < start){ -// break; -// } -// //阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段) -// Object invoke = null; -// switch (strategyDetail.getType()){ -// case 1: -// //充电度数 -// invoke = clazz.getMethod("getSpike_charge" + (i)).invoke(vo); -// break; -// case 2: -// //充电度数 -// invoke = clazz.getMethod("getPeak_charge" + (i)).invoke(vo); -// break; -// case 3: -// //充电度数 -// invoke = clazz.getMethod("getFlat_charge" + (i)).invoke(vo); -// break; -// case 4: -// //充电度数 -// invoke = clazz.getMethod("getValley_charge" + (i)).invoke(vo); -// break; -// } -// if(null == invoke || Double.valueOf(invoke.toString()) == 0){ -// continue; -// } -// BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString()); -// AccountingStrategyDetailOrderVo vo1 = new AccountingStrategyDetailOrderVo(); -// BeanUtils.copyProperties(strategyDetail, vo1); -// vo1.setChargingCapacity(sharp_peak_charge); -// lists.add(vo1); -// } -// -// //第二天的 -// //开始通过计费策略遍历解析每个时段的费用明细 -// for (int i = 0; i < accountingStrategyDetailOrderList.size(); i++) { -// AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.get(i); -// long time = sdfs.parse(end_time.split(" ")[0] + " " + strategyDetail.getStartTime() + ":00").getTime(); -// if(time > end){ -// break; -// } -// //阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段) -// Object invoke = null; -// switch (strategyDetail.getType()){ -// case 1: -// //充电度数 -// invoke = clazz.getMethod("getSpike_charge" + (i + 1)).invoke(vo); -// break; -// case 2: -// //充电度数 -// invoke = clazz.getMethod("getPeak_charge" + (i + 1)).invoke(vo); -// break; -// case 3: -// //充电度数 -// invoke = clazz.getMethod("getFlat_charge" + (i + 1)).invoke(vo); -// break; -// case 4: -// //充电度数 -// invoke = clazz.getMethod("getValley_charge" + (i + 1)).invoke(vo); -// break; -// } -// if(null == invoke || Double.valueOf(invoke.toString()) == 0){ -// continue; -// } -// BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString()); -// AccountingStrategyDetailOrderVo vo1 = new AccountingStrategyDetailOrderVo(); -// BeanUtils.copyProperties(strategyDetail, vo1); -// vo1.setChargingCapacity(sharp_peak_charge); -// lists.add(vo1); -// } -// }else{ -// for (int i = 0; i < accountingStrategyDetailOrderList.size(); i++) { -// Class<? extends TransactionRecordMessageVO> clazz = vo.getClass(); -// AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.get(i); -// //阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段) -// Object invoke = null; -// switch (strategyDetail.getType()){ -// case 1: -// //充电度数 -// invoke = clazz.getMethod("getSpike_charge" + (i + 1)).invoke(vo); -// break; -// case 2: -// //充电度数 -// invoke = clazz.getMethod("getPeak_charge" + (i + 1)).invoke(vo); -// break; -// case 3: -// //充电度数 -// invoke = clazz.getMethod("getFlat_charge" + (i + 1)).invoke(vo); -// break; -// case 4: -// //充电度数 -// invoke = clazz.getMethod("getValley_charge" + (i + 1)).invoke(vo); -// break; -// } -// if(null == invoke || Double.valueOf(invoke.toString()) == 0){ -// continue; -// } -// BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString()); -// AccountingStrategyDetailOrderVo vo1 = new AccountingStrategyDetailOrderVo(); -// BeanUtils.copyProperties(strategyDetail, vo1); -// vo1.setChargingCapacity(sharp_peak_charge); -// lists.add(vo1); -// } -// } -// }catch (Exception e){ -// e.printStackTrace(); -// } -// -// //开始处理明细 -// for (int i = 0; i < lists.size(); i++) { -// AccountingStrategyDetailOrderVo strategyDetail = lists.get(i); -// BigDecimal sharp_peak_charge = strategyDetail.getChargingCapacity(); -// TChargingOrderAccountingStrategy chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy(); -// chargingOrderAccountingStrategy.setChargingOrderId(chargingOrder.getId()); -// chargingOrderAccountingStrategy.setAccountingStrategyDetailId(strategyDetail.getId()); -// chargingOrderAccountingStrategy.setType(strategyDetail.getType()); -// chargingOrderAccountingStrategy.setElectrovalence(strategyDetail.getElectrovalence()); -// chargingOrderAccountingStrategy.setServiceCharge(strategyDetail.getServiceCharge()); -// chargingOrderAccountingStrategy.setCostServiceCharge(strategyDetail.getCostServiceCharge()); -// if(i == 0){ -// String time = vo.getStart_time().split(" ")[1]; -// chargingOrderAccountingStrategy.setStartTime(time.substring(0, time.lastIndexOf(":"))); -// }else{ -// chargingOrderAccountingStrategy.setStartTime(strategyDetail.getStartTime()); -// } -// if(i == lists.size() - 1){ -// String time = vo.getEnd_time().split(" ")[1]; -// chargingOrderAccountingStrategy.setEndTime(time.substring(0, time.lastIndexOf(":"))); -// }else{ -// chargingOrderAccountingStrategy.setEndTime(strategyDetail.getEndTime()); -// } -// -// //已充电总度数 -// BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(sharp_peak_charge); -// BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(sharp_peak_charge); -// BigDecimal serviceCharge = originalServicePrice; -// BigDecimal vipDiscountAmount = BigDecimal.ZERO; -// //计算优惠金额 -// if(null != chargingOrder.getVipDiscount()){ -// vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount())); -// serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount()); -// } -// chargingOrderAccountingStrategy.setChargingCapacity(sharp_peak_charge); -// chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc.setScale(4, RoundingMode.HALF_EVEN)); -// chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge.setScale(4, RoundingMode.HALF_EVEN)); -// chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice.setScale(4, RoundingMode.HALF_EVEN)); -// chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount.setScale(4, RoundingMode.HALF_EVEN)); -// chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now()); -//// chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy); -// System.err.println("----------"+JSON.toJSONString(chargingOrderAccountingStrategy)); -// -// periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc); -// periodServicePrice_total = periodServicePrice_total.add(originalServicePrice); -// total = total.add(electrovalenc.add(originalServicePrice)); -// -// } -// -// -// //原金额 -// BigDecimal rechargeAmount = chargingOrder.getRechargeAmount(); -// BigDecimal vipDiscountAmount = chargingOrder.getVipDiscountAmount(); -// //总金额(充值金额+会员折扣金额) -// BigDecimal decimal = rechargeAmount.add(vipDiscountAmount); -// //退款金额(已经计算了折扣优惠部分) -// //如果充电总金额未使用完,则需要退回费用=(原金额/总金额)*(总金额-实际充电金额) -// BigDecimal refundAmount = rechargeAmount.divide(decimal, new MathContext(4, RoundingMode.HALF_EVEN)).multiply(decimal.subtract(total)); -// BigDecimal orderAmount = BigDecimal.valueOf(total.doubleValue()); -// BigDecimal payAmount = BigDecimal.valueOf(total.doubleValue()); -// //折扣金额 -// BigDecimal discountAmount = BigDecimal.ZERO; -//// if(null != chargingOrder.getVipDiscount()){ -//// TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData(); -//// //判断会员是否还有充电优惠次数 -//// GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail(); -//// getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId()); -//// getAppUserVipDetail.setVipId(appUser.getVipId()); -//// TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData(); -//// if(null != data && data.getChargeNum() > 0){ -//// data.setChargeNum(data.getChargeNum() - 1); -//// appUserVipDetailClient.updateAppUserVipDetail(data); -//// -//// //服务费折扣 -//// discountAmount = periodServicePrice_total.multiply((new BigDecimal(1).subtract(chargingOrder.getVipDiscount()))); -//// TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); -//// BigDecimal maximumDeduction = vip.getMaximumDeduction(); -//// //普通会员有最高优惠限制 -//// if(vip.getType() == 1 && discountAmount.compareTo(maximumDeduction) > 0){ -//// discountAmount = maximumDeduction; -//// } -//// } -//// } -// //会员折扣金额 -// discountAmount = discountAmount.setScale(4, RoundingMode.HALF_EVEN); -// payAmount = payAmount.subtract(discountAmount); -// periodServicePrice_total = periodServicePrice_total.subtract(discountAmount); -// -// TChargingOrder order = new TChargingOrder(); -// order.setId(chargingOrder.getId()); -// order.setAppUserId(chargingOrder.getAppUserId()); -// UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData(); -// if(null != uploadRealTimeMonitoringData && null == chargingOrder.getEndMode()){ -// Integer soc = uploadRealTimeMonitoringData.getSoc(); -// order.setEndMode(soc > 98 ? 2 : 3); -// }else{ -// order.setEndMode(1); -// } -// order.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.HALF_EVEN)); -// order.setStartTime(LocalDateTime.parse(vo.getStart_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS"))); -// order.setEndTime(LocalDateTime.parse(vo.getEnd_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS"))); -// order.setStatus(5); -// order.setOrderAmount(orderAmount.setScale(2, RoundingMode.HALF_EVEN)); -// order.setVipDiscountAmount(discountAmount.setScale(2, RoundingMode.HALF_EVEN)); -// order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.HALF_EVEN)); -// order.setChargingCapacity(vo.getTotal_electricity()); -// order.setElectricity(vo.getTotal_electricity()); -// -// //计算优惠券 -// BigDecimal couponDiscount = BigDecimal.ZERO; -//// if(null != chargingOrder.getAppCouponId()){ -//// //判断实际充电金额是否满足优惠券使用条件,如果不满足则不适用优惠券。 -//// TAppCoupon appCoupon = appCouponClient.getAppCouponById(chargingOrder.getAppCouponId()).getData(); -//// String couponJson = appCoupon.getCouponJson(); -//// TCoupon tCoupon = JSON.parseObject(couponJson, TCoupon.class); -//// Integer preferentialMode = tCoupon.getPreferentialMode(); -//// if(1 == preferentialMode){ -//// //满减 -//// if(payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0){ -//// BigDecimal couponDiscountAmount = tCoupon.getDiscountAmount(); -//// //如果优惠金额大于服务费金额,以服务费作为最大限制 -//// if(periodServicePrice_total.compareTo(couponDiscountAmount) < 0){ -//// couponDiscount = periodServicePrice_total; -//// periodServicePrice_total = BigDecimal.ZERO; -//// }else{ -//// couponDiscount = couponDiscountAmount; -//// } -//// appCoupon.setStatus(2); -////// appCouponClient.updateAppCoupon(appCoupon); -//// }else{ -//// order.setAppCouponId(null); -//// order.setCouponDiscountAmount(BigDecimal.ZERO); -////// appCouponClient.refund(chargingOrder.getAppCouponId().toString()); -//// } -//// } -//// if(2 == preferentialMode){ -//// //抵扣 -//// if(payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0){ -//// //折扣金额 -//// BigDecimal divide = payAmount.multiply(new BigDecimal(10).subtract(tCoupon.getDiscount())).divide(new BigDecimal(10)); -//// divide = divide.compareTo(tCoupon.getMaximumDiscountAmount()) > 0 ? tCoupon.getMaximumDiscountAmount() : divide; -//// //如果优惠金额大于服务费金额,以服务费作为最大限制 -//// if(periodServicePrice_total.compareTo(divide) < 0){ -//// couponDiscount = periodServicePrice_total; -//// periodServicePrice_total = BigDecimal.ZERO; -//// }else{ -//// couponDiscount = divide; -//// } -//// -//// appCoupon.setStatus(2); -//// appCouponClient.updateAppCoupon(appCoupon); -//// }else{ -//// order.setAppCouponId(null); -//// order.setCouponDiscountAmount(BigDecimal.ZERO); -//// appCouponClient.refund(chargingOrder.getAppCouponId().toString()); -//// } -//// } -//// } -// //优惠券优惠金额 -// couponDiscount = couponDiscount.setScale(4, RoundingMode.HALF_EVEN); -// refundAmount = refundAmount.add(couponDiscount); -// payAmount = payAmount.subtract(couponDiscount); -// if(periodServicePrice_total.compareTo(BigDecimal.ZERO) > 0){ -// periodServicePrice_total = periodServicePrice_total.subtract(couponDiscount); -// } -// order.setCouponDiscountAmount(couponDiscount.setScale(2, RoundingMode.HALF_EVEN)); -// order.setServiceCharge(periodServicePrice_total.setScale(2, RoundingMode.HALF_EVEN)); -// order.setPaymentAmount(payAmount.setScale(2, RoundingMode.HALF_EVEN)); -// order.setRefundAmount(refundAmount.setScale(2, RoundingMode.HALF_EVEN)); -// order.setRefundStatus(1); -//// this.updateById(order); -// System.err.println("----------"+JSON.toJSONString(order)); -//// chargingOrder = this.getById(order.getId()); -//// -//// //开始将优惠券优惠的金额添加到明细中 -//// BigDecimal couponDiscountAmount = order.getCouponDiscountAmount(); -//// if(null != couponDiscountAmount && couponDiscountAmount.compareTo(BigDecimal.ZERO) > 0){ -//// List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, order.getId())); -//// BigDecimal reduce = list.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add); -//// for (TChargingOrderAccountingStrategy chargingOrderAccountingStrategy : list) { -//// BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodServicePrice(); -//// BigDecimal multiply = couponDiscountAmount.multiply(periodServicePrice.divide(reduce, new MathContext(4, RoundingMode.HALF_EVEN))); -//// periodServicePrice = periodServicePrice.subtract(multiply); -//// chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice.setScale(2, RoundingMode.HALF_EVEN)); -//// chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply.setScale(2, RoundingMode.HALF_EVEN)); -//// } -////// chargingOrderAccountingStrategyService.updateBatchById(list); -//// } -//// -//// // 将枪状态重置为空闲 -//// TChargingGun chargingGun = new TChargingGun(); -//// chargingGun.setId(chargingOrder.getChargingGunId()); -//// chargingGun.setStatus(2); -//// chargingGun.setChargingPower(BigDecimal.ZERO); -////// chargingGunClient.updateChargingGunById(chargingGun); -//// -//// //添加积分 -//// TIntegralRule integralRule = integralRuleClient.getSet().getData(); -//// if(null != integralRule){ -//// TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData(); -//// Integer num1 = JSON.parseObject(integralRule.getChargeCredit()).getInteger("num1"); -//// Integer integral = chargingOrder.getServiceCharge().intValue() * num1; -//// if(null != appUser.getVipId()){ -//// TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); -//// Integer doubleIntegration = vip.getDoubleIntegration(); -//// //双倍积分 -//// if(1 == doubleIntegration){ -//// integral *= 2; -//// } -//// } -//// -//// if(integral > 0){ -//// TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange(); -//// appUserIntegralChange.setAppUserId(appUser.getId()); -//// appUserIntegralChange.setChangeType(2); -//// appUserIntegralChange.setHistoricalIntegral(appUser.getPoints()); -//// appUser.setPoints(appUser.getPoints() + integral); -//// appUserIntegralChange.setCurrentIntegral(appUser.getPoints()); -//// appUserIntegralChange.setCreateTime(LocalDateTime.now()); -//// appUserIntegralChange.setOrderCode(chargingOrder.getCode()); -//// appUserIntegralChange.setExtension(chargingOrder.getId().toString()); -//// appUserClient.updateAppUser(appUser); -//// appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange); -//// } -//// } -//// -//// //计算用户标签 -//// editUserTag(chargingOrder); -//// //用户推荐奖励 -//// referralReward(chargingOrder); -//// -//// //开始构建退款费用 -//// if(refundAmount.compareTo(BigDecimal.ZERO) > 0){ -//// Integer rechargePaymentType = chargingOrder.getRechargePaymentType(); -//// //构建退款明细 -//// TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund(); -//// chargingOrderRefund.setChargingOrderId(chargingOrder.getId()); -//// SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); -//// chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue())); -//// chargingOrderRefund.setRefundAmount(refundAmount); -//// chargingOrderRefund.setRefundStatus(1); -//// chargingOrderRefund.setPayType(rechargePaymentType); -//// chargingOrderRefund.setRefundStatus(1); -//// chargingOrderRefund.setCode(chargingOrder.getCode()); -//// chargingOrderRefund.setRefundTitle("充电完成退款"); -//// chargingOrderRefund.setRefundContent("充电完成退款"); -//// chargingOrderRefund.setRefundReason("充电完成退款"); -//// chargingOrderRefund.setRefundRemark("实际充电消费金额:" + chargingOrder.getPaymentAmount()); -//// chargingOrderRefund.setRefundTotalAmount(refundAmount); -//// chargingOrderRefund.setPayAmount(rechargeAmount); -//// if(1 == rechargePaymentType){ -//// WxPaymentRefundModel model = new WxPaymentRefundModel(); -//// model.setOut_trade_no(chargingOrder.getCode()); -//// model.setOut_refund_no(chargingOrderRefund.getRefundCode()); -//// model.setReason("充电完成退款"); -//// model.setNotify_url("/payment/wx/refund/notify"); -//// WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount(); -//// amount.setRefund(refundAmount.multiply(new BigDecimal(100)).intValue()); -//// amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue()); -//// amount.setCurrency("CNY"); -//// model.setAmount(amount); -//// R<String> orderR = wxPaymentClient.refundOrderR(model); -//// if(200 == orderR.getCode()){ -//// chargingOrderRefundService.save(chargingOrderRefund); -//// } -//// } -//// if(2 == rechargePaymentType){ -//// RefundReq dto = new RefundReq(); -//// dto.setOutTradeNo(chargingOrder.getCode()); -//// dto.setOutRequestNo(chargingOrderRefund.getCode()); -//// dto.setRefundAmount(refundAmount.toString()); -//// dto.setRefundReason("充电完成退款"); -//// RefundResp resp = aliPaymentClient.refund(dto).getData(); -//// if(null != resp){ -//// AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", null); -//// if(success.isSuccess()){ -//// chargingOrderRefundService.save(chargingOrderRefund); -//// } -//// } -//// } -//// -//// } -// } @@ -2950,6 +2537,10 @@ private TVipOrderService vipOrderService; @Resource private TVipOrderRefundService vipOrderRefundService; + + + + @Override public R payRefund(PayOrderRefundDto payOrderQueryDto) { if (payOrderQueryDto.getType()==1){ @@ -3007,7 +2598,6 @@ dto.setRefundReason("取消订单"); RefundResp resp = aliPaymentClient.refund(dto).getData(); if(null != resp){ - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE"); chargingOrderRefund.setRefundStatus(2); chargingOrderRefund.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); this.baseMapper.updateById(tChargingOrder); @@ -3015,11 +2605,6 @@ } } - - - - - } if (payOrderQueryDto.getType()==2){ TShoppingOrder tChargingOrder = shoppingOrderService.getById(payOrderQueryDto.getOrderId()); @@ -3075,16 +2660,10 @@ dto.setRefundReason("取消订单"); RefundResp resp = aliPaymentClient.refund(dto).getData(); if(null != resp){ - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE"); - tChargingOrder.setRefundStatus(2); tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); - - shoppingOrderService.updateById(tChargingOrder); - shoppingOrderRefundService.save(chargingOrderRefund); - } } @@ -3095,8 +2674,6 @@ if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){ return R.fail("退款金额需小于支付金额"); } - - TVipOrderRefund chargingOrderRefund = new TVipOrderRefund(); chargingOrderRefund.setVipOrderId(tChargingOrder.getId()); chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount()); @@ -3142,23 +2719,13 @@ dto.setRefundReason("取消订单"); RefundResp resp = aliPaymentClient.refund(dto).getData(); if(null != resp){ - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE"); - tChargingOrder.setRefundStatus(2); tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); - - vipOrderService.updateById(tChargingOrder); - vipOrderRefundService.save(chargingOrderRefund); - } } - } - - - return R.ok(); } -- Gitblit v1.7.1