From 2c74e3e18bc372f33fcc2f4ea4ab1d9d393c2753 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期三, 05 三月 2025 11:35:34 +0800 Subject: [PATCH] 补充管理后台文件上传 --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 193 ++++++++++++++++++------ ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java | 4 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java | 76 ++++++--- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java | 18 + ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java | 7 ruoyi-service/ruoyi-chargingPile/src/main/resources/template/充电算帐单已出账.xlsx | 0 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java | 7 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml | 108 ++++++++++--- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 14 + 9 files changed, 314 insertions(+), 113 deletions(-) diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java index e30cd56..5d8d476 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java @@ -31,8 +31,12 @@ private Long appUserCarId; @ApiModelProperty(value = "车牌号") private String plateNum; + @ApiModelProperty(value = "三方平台充电订单号") + private String startChargeSeq; @ApiModelProperty(value = "充电枪id") private Integer chargingGunId; + @ApiModelProperty(value = "订单来源(1=自己平台,2=三方平台)") + private Integer orderSource; @ApiModelProperty(value = "订单编号") private String code; @ApiModelProperty(value = "订单类型(1=充电订单(小程序),2=充电订单(刷卡))") diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java index b2a508f..31cee8d 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java @@ -285,7 +285,7 @@ ChargingListQuery chargingListQuery = new ChargingListQuery(); chargingListQuery.setUid(uid.getUid()); chargingListQuery.setPageCurr(1); - chargingListQuery.setPageSize(99999); + chargingListQuery.setPageSize(9999999); ChargingBillVO data = chargingOrderClient.chargingBillListR(chargingListQuery).getData(); List<ChargingBillVO> chargingBillVOS = new ArrayList<>(); @@ -308,8 +308,9 @@ try (ExcelWriter excelWriter = excelWriterBuilder.withTemplate(stream).build()) { WriteSheet writeSheet = EasyExcel.writerSheet().build(); FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build(); + FillConfig fillConfig2 = FillConfig.builder().direction(WriteDirectionEnum.VERTICAL).build(); excelWriter.fill(new FillWrapper("data1", chargingBillVOS), fillConfig, writeSheet); - excelWriter.fill(new FillWrapper("data2", data.getExportList()), fillConfig, writeSheet); + excelWriter.fill(new FillWrapper("data2", data.getExportList()), fillConfig2, writeSheet); excelWriter.finish(); } catch (Exception e) { return R.fail("excel导出失败!"); @@ -668,7 +669,7 @@ ChargingListQuery chargingListQuery = new ChargingListQuery(); chargingListQuery.setUid(uid.getUid()); chargingListQuery.setPageCurr(1); - chargingListQuery.setPageSize(99999); + chargingListQuery.setPageSize(9999999); ChargingBillVO data = chargingOrderClient.chargingBillListR(chargingListQuery).getData(); List<ChargingBillVO> chargingBillVOS = new ArrayList<>(); diff --git "a/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\345\205\205\347\224\265\347\256\227\345\270\220\345\215\225\345\267\262\345\207\272\350\264\246.xlsx" "b/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\345\205\205\347\224\265\347\256\227\345\270\220\345\215\225\345\267\262\345\207\272\350\264\246.xlsx" index bccbcd0..af2ddd2 100644 --- "a/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\345\205\205\347\224\265\347\256\227\345\270\220\345\215\225\345\267\262\345\207\272\350\264\246.xlsx" +++ "b/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\345\205\205\347\224\265\347\256\227\345\270\220\345\215\225\345\267\262\345\207\272\350\264\246.xlsx" Binary files differ diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java index 584487f..7c451d7 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java @@ -377,7 +377,19 @@ int i =1; for (TChargingOrder tChargingOrder : tChargingOrders) { // 账单信息 - paymentAmount = paymentAmount.add(tChargingOrder.getRechargeAmount()); + if (!tChargingOrder.getOrderSource().equals(2)){ + chargingBillExport.setPaymentAmount(tChargingOrder.getRechargeAmount()); + paymentAmount = paymentAmount.add(tChargingOrder.getRechargeAmount()); + + }else{ + chargingBillExport.setPaymentAmount(tChargingOrder.getServiceCharge()!=null? + tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_DOWN) + :new BigDecimal("0")); + paymentAmount = paymentAmount.add(tChargingOrder.getServiceCharge()!=null? + tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_DOWN) + :new BigDecimal("0")); + + } commissionAmount = commissionAmount.add(tChargingOrder.getRechargeAmount().multiply(bigDecimal1).setScale(2, BigDecimal.ROUND_DOWN)); sharingAmount = sharingAmount.add(tChargingOrder.getSharingAmount()!=null?tChargingOrder.getSharingAmount():new BigDecimal("0")); // 退款信息 @@ -443,8 +455,8 @@ } chargingBillExport.setPaymentAmount(paymentAmount); chargingBillExport.setRefundAmount(refundAmount); - chargingBillExport.setIncome(paymentAmount.subtract(refundAmount).subtract(commissionAmount) - .subtract(sharingAmount).setScale(2, BigDecimal.ROUND_DOWN)); + chargingBillExport.setIncome(paymentAmount.subtract(refundAmount) + .setScale(2, BigDecimal.ROUND_DOWN)); chargingBillExports.add(chargingBillExport); // 导出 List<Map<String, Object>> sheetsList = new ArrayList<>(); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java index 896ddbc..c5f701f 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java @@ -126,14 +126,11 @@ @ApiOperation(value = "充电时段统计-导出", tags = {"管理后台-财务结算"}) @PutMapping("/export") public void export(@RequestBody ChargingListQuery dto) { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - ChargingOrderTimeVO res = chargingOrderService.chargingList(dto); List<TChargingOrderExport> tChargingOrderExports = new ArrayList<>(); List<ChargingOrderListVO> exportList = res.getExportList(); - int i = 0; + int i = 1; List<TChargingGun> data = chargingGunClient.getAllGun().getData(); - List<Site> data9 = siteClient.getSiteAll().getData(); List<TAppUser> data6 = appUserClient.getAllUser().getData(); List<Partner> data7 = siteClient.getAllPartner().getData(); @@ -262,7 +259,7 @@ tChargingOrderExport.setCarType(tAppUserCar.getVehicleModel()); tChargingOrderExport.setCarBrand(tAppUserCar.getVehicleBrand()); } - tChargingOrderExport.setOrderCode(chargingOrderListVO.getCode()); + tChargingOrderExport.setOrderCode(chargingOrderListVO.getStartChargeSeq()); tChargingOrderExport.setIsSingle("是"); tChargingOrderExport.setPayTime(chargingOrderListVO.getPayTime()+""); tChargingOrderExport.setElectrovalenceSiteName("四川明星新能源科技有限公司"); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java index 968a695..50c910b 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java @@ -1055,9 +1055,21 @@ map.put("shopAmount",data1); BigDecimal data2 = vipOrderService.getSumAmout(sixBefore); map.put("vipAmount",data2); + List<TChargingOrder> list = chargingOrderService.lambdaQuery().between(TChargingOrder::getCreateTime, sixBefore, LocalDate.now()).list(); + BigDecimal serviceCharge = new BigDecimal("0"); + BigDecimal commissionAmount = new BigDecimal("0"); + for (TChargingOrder chargingOrder : list) { + if (chargingOrder.getOrderSource().equals(2)){ + serviceCharge = serviceCharge.add(chargingOrder.getServiceCharge()!=null?chargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0")); + commissionAmount = commissionAmount.add(chargingOrder.getServiceCharge()!=null?chargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0")); + }else{ + serviceCharge = serviceCharge.add(chargingOrder.getServiceCharge()); + } - + } + map.put("service_charge",serviceCharge); + map.put("commission_amount",commissionAmount); return R.ok(map); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java index ea26127..84ec02b 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java @@ -315,6 +315,8 @@ } TAppUser data3 = userList.stream().filter(e -> e.getId().equals(tChargingOrder.getAppUserId())).findFirst().orElse(null); + if (data3!=null)tChargingOrder.setUserName(data3.getName()); + if (tChargingOrder.getAppUserCarId()!=null){ TAppUserCar data4 = carList.stream().filter(e -> e.getId().equals(tChargingOrder.getAppUserCarId())).findFirst().orElse(null); if (data4!=null){ @@ -324,13 +326,12 @@ }else{ tChargingOrder.setLicensePlate(tChargingOrder.getPlateNum()); } - if (data3!=null)tChargingOrder.setUserName(data3.getName()); // 累加实收金额 支付结算金额 if (tChargingOrder.getRechargeAmount()!=null){ paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()); } // 总金额 - if (tChargingOrder.getOrderAmount()!=null){ + if (tChargingOrder.getRechargeAmount()!=null){ orderAmount = orderAmount.add(tChargingOrder.getRechargeAmount()); } // 累加累计电费 @@ -375,7 +376,7 @@ } chargingBillListVO.setPaymentAmount(paymentAmount.subtract(sharingAmount)); - chargingBillListVO.setOrderAmount(paymentAmount); + chargingBillListVO.setOrderAmount(refundAmount); chargingBillListVO.setRefundAmount(refundAmount == null?BigDecimal.ZERO:refundAmount); chargingBillListVO.setElectrovalence(electrovalence == null?BigDecimal.ZERO:electrovalence); chargingBillListVO.setServiceCharge(serviceCharge == null?BigDecimal.ZERO:serviceCharge); @@ -430,17 +431,14 @@ e.getSiteId().equals(chargingBillListVO.getSiteId()) : true && e.getPayTime().isBefore(lastDayOfMonth.withHour(23).withMinute(59).withSecond(59)) && e.getPayTime().isAfter(firstDayOfMonth.withHour(0).withMinute(0).withSecond(0))).collect(Collectors.toList()); - tChargingOrders1.addAll(tChargingOrders); - chargingBillVO.setCategory(""); - chargingBillVO.setExportList(tChargingOrders); for (TChargingOrder tChargingOrder : tChargingOrders) { if (tChargingOrder.getOrderAmount()!=null){ paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()); } // 累加订单金额 - if (tChargingOrder.getOrderAmount()!=null){ - orderAmountTotal = orderAmountTotal.add(tChargingOrder.getPaymentAmount()); + if (tChargingOrder.getRechargeAmount()!=null){ + orderAmountTotal = orderAmountTotal.add(tChargingOrder.getRechargeAmount()); } // 累加累计电费 if (tChargingOrder.getElectrovalence()!=null){ @@ -481,10 +479,12 @@ discountTotal = discountTotal.add(tChargingOrder.getVipDiscountAmount()); } } + tChargingOrders1.addAll(tChargingOrders); + chargingBillVO.setExportList(tChargingOrders); } chargingBillVO.setOrderCount(i); chargingBillVO.setChargingCapacity(chargingCapacityTotal); - chargingBillVO.setPaymentAmount(paymentAmountTotal.subtract(sharingAmountTotal)); + chargingBillVO.setPaymentAmount(paymentAmountTotal); chargingBillVO.setOrderAmount(orderAmountTotal); chargingBillVO.setElectrovalence(electrovalenceTotal); chargingBillVO.setServiceCharge(serviceChargeTotal); @@ -570,7 +570,6 @@ siteIds.add(-1); } dto.setSiteIds(siteIds); - List<ChargingBillListVO> list = this.baseMapper.chargingBillList(pageInfo,dto,startTime1,startTime2); List<ChargingBillListVO> list1 = this.baseMapper.chargingBillListNoLimit(dto,startTime1,startTime2); BigDecimal paymentAmountTotal = new BigDecimal("0"); @@ -656,8 +655,10 @@ chargingBillVO.setCategory(""); chargingBillListVO.setOrderCount(tChargingOrders.size()); chargingBillVO.setExportList(tChargingOrders); - + int t = 1; for (TChargingOrder tChargingOrder : tChargingOrders) { + tChargingOrder.setXuhao(t); + t++; if (tChargingOrder.getRechargePaymentType()!=null && tChargingOrder.getRechargePaymentType()==1){ chargingBillListVO.setPayTypeName("微信商户"); } @@ -753,8 +754,12 @@ }else{ tChargingOrder.setLicensePlate(tChargingOrder.getPlateNum()); } - if (data3!=null)tChargingOrder.setUserName(data3.getName()); - if ( tChargingOrder.getPaymentAmount()!=null){ + if (data3!=null){ + tChargingOrder.setUserName(data3.getName()); + tChargingOrder.setPhone(data3.getPhone()); + } + if ( tChargingOrder.getPaymentAmount()!=null&&(!tChargingOrder.getOrderSource().equals(2))){ + // 实收 paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()); } // 总金额 @@ -770,17 +775,22 @@ } // 累加累计服务费 if (tChargingOrder.getServiceCharge()!=null){ - serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge()); + if (tChargingOrder.getOrderSource().equals(2)) { + serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_DOWN)); + // 累加平台分佣 + sharingAmount = sharingAmount.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN)); + // 累加实收 + paymentAmount = paymentAmount.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN)); + }else { + serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge()); + } } // 累加平台手续费 if (tChargingOrder.getOrderAmount()!=null){ commissionAmount = commissionAmount.add(tChargingOrder.getRechargeAmount().multiply(BigDecimal.valueOf(0.006)) .setScale(2,BigDecimal.ROUND_DOWN)); } - // 累加平台分佣 - if (tChargingOrder.getSharingAmount()!=null){ - sharingAmount = sharingAmount.add(tChargingOrder.getSharingAmount()); - } + // 累加充电度数 if (tChargingOrder.getChargingCapacity()!=null){ chargingCapacity = chargingCapacity.add(tChargingOrder.getChargingCapacity()); @@ -857,11 +867,12 @@ BigDecimal chargingCapacity = new BigDecimal("0"); chargingBillListVO.setOrderCount(tChargingOrders.size()); for (TChargingOrder tChargingOrder : tChargingOrders) { - // 累加实收金额 支付金额减去退款金额 - if (tChargingOrder.getPaymentAmount()!=null){ + // 累加实收金额 + if ( tChargingOrder.getPaymentAmount()!=null&&(!tChargingOrder.getOrderSource().equals(2))){ paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()); paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()); } + // 累加订单金额 if (tChargingOrder.getRechargeAmount()!=null){ orderAmount = orderAmount.add(tChargingOrder.getRechargeAmount()); @@ -877,20 +888,29 @@ } // 累加累计服务费 if (tChargingOrder.getServiceCharge()!=null){ - serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge()); - serviceChargeTotal = serviceChargeTotal.add(tChargingOrder.getServiceCharge()); + if (tChargingOrder.getOrderSource().equals(2)) { + serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_DOWN)); + serviceChargeTotal = serviceChargeTotal.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_DOWN)); + // 累加平台分佣 + sharingAmount = sharingAmount.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_DOWN)); + sharingAmountTotal = sharingAmountTotal.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_DOWN)); + // 累加实收 + paymentAmount = paymentAmount.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN)); + paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN)); + }else{ + serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge()); + serviceChargeTotal = serviceChargeTotal.add(tChargingOrder.getServiceCharge()); + } + } - // 累加平台手续费 + + // 累加平台手续费 if (tChargingOrder.getOrderAmount()!=null){ commissionAmount = commissionAmount.add(tChargingOrder.getRechargeAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN)); commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getRechargeAmount().multiply(new BigDecimal("0.006")) .setScale(2,BigDecimal.ROUND_DOWN)); } - // 累加平台分佣 - if (tChargingOrder.getSharingAmount()!=null){ - sharingAmount = sharingAmount.add(tChargingOrder.getSharingAmount()); - sharingAmountTotal = sharingAmountTotal.add(tChargingOrder.getSharingAmount()); - } + // 累加充电度数 if (tChargingOrder.getElectricity()!=null){ chargingCapacity = chargingCapacity.add(tChargingOrder.getElectricity()); 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 21e394a..977b36d 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 @@ -1317,9 +1317,25 @@ BigDecimal commissionMoney = new BigDecimal("0"); 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>()); - + List<Long> collect = list.stream().map(TChargingOrder::getId).collect(Collectors.toList()); + List<TChargingOrderAccountingStrategy> list3 = new ArrayList<>(); + if(collect.size()>=800){ + int i = collect.size() / 800; + int k = collect.size() % 800; + for (int j = 0; j <= i; j++) { + if(j==i&& k>0){ + list3.addAll(chargingOrderAccountingStrategyService.lambdaQuery() + .in(TChargingOrderAccountingStrategy::getChargingOrderId,collect.subList(j * 800, j * 800 + k)).list()); + }else { + List<Long> longs = collect.subList(j * 800, (j + 1) * 800); + list3.addAll(chargingOrderAccountingStrategyService.lambdaQuery() + .in(TChargingOrderAccountingStrategy::getChargingOrderId,longs).list()); + } + } + }else { + list3 = chargingOrderAccountingStrategyService.lambdaQuery() + .in(TChargingOrderAccountingStrategy::getChargingOrderId,collect).list(); + } for (ChargingOrderVO chargingOrderVO : list) { if (roleType == 2){ for (Integer siteId : siteIds) { @@ -1327,8 +1343,8 @@ List<Boolean> t1= partnerClient.getChargingOrderMenu(sysUser.getObjectId(),siteId).getData(); chargingOrderVO.setAuthRecord(t1.get(0)); } - } + chargingOrderVO.setSharingAmount(chargingOrderVO.getServiceCharge()!=null?chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0")); chargingOrderVO.setCommissionAmount(chargingOrderVO.getRechargeAmount()!=null?chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")):new BigDecimal("0")); chargingOrderVO.setPlatFormMoney(chargingOrderVO.getRechargeAmount()!=null?chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0")); chargingOrderVO.setUid(chargingOrderVO.getId()+""); @@ -1383,7 +1399,12 @@ .eq(TChargingOrderRefund::getRefundStatus,2).list(); for (ChargingOrderVO chargingOrderVO : list1) { - paymentMoney= paymentMoney.add(chargingOrderVO.getPaymentAmount()!=null?chargingOrderVO.getPaymentAmount():new BigDecimal("0")); + if (!chargingOrderVO.getOrderSource().equals(2)) { + paymentMoney = paymentMoney.add(chargingOrderVO.getPaymentAmount() != null ? chargingOrderVO.getPaymentAmount() : new BigDecimal("0")); + }else{ + paymentMoney = paymentMoney.add(chargingOrderVO.getServiceCharge() != null ? chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_DOWN) : new BigDecimal("0")); + + } if (chargingOrderVO.getRechargeAmount()!=null){ commissionMoney = commissionMoney.add(chargingOrderVO.getRechargeAmount().multiply(new BigDecimal("0.006")).setScale(2,BigDecimal.ROUND_DOWN)); } @@ -1403,7 +1424,11 @@ refundMoney = refundMoney.add(tChargingOrderRefund.getRefundTotalAmount()); } electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence()!=null?chargingOrderVO.getElectrovalence():new BigDecimal("0")); - serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()!=null?chargingOrderVO.getServiceCharge():new BigDecimal("0")); + if (!chargingOrderVO.getOrderSource().equals(2)){ + serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()!=null?chargingOrderVO.getServiceCharge():new BigDecimal("0")); + }else{ + serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()!=null?chargingOrderVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_DOWN):new BigDecimal("0")); + } } tCharingOrderVO.setTotal(total); tCharingOrderVO.setTime(time); @@ -1491,6 +1516,8 @@ @Resource private SysUserClient sysUserClient; + + @Override public ChargingOrderTimeVO chargingList(ChargingListQuery dto) { String startTime1 = null; @@ -1689,7 +1716,13 @@ "0"+"%(平)/"+ "0"+"%(谷)"); } - + if (chargingOrderListVO.getOrderSource().equals(2)){ + chargingOrderListVO.setSharingAmount(chargingOrderListVO.getServiceCharge()!=null? + chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2,BigDecimal.ROUND_HALF_UP) + :new BigDecimal("0")); + }else{ + chargingOrderListVO.setSharingAmount(new BigDecimal("0")); + } } // 不分页 PageInfo<ChargingOrderListVO> pageInfo1 = new PageInfo<>(1,999999999); @@ -1742,38 +1775,96 @@ BigDecimal ping = new BigDecimal("0"); BigDecimal gu = new BigDecimal("0"); List<Long> collect = list1.stream().map(ChargingOrderListVO::getId).collect(Collectors.toList()); - List<TChargingOrderAccountingStrategy> chargingOrderAccountingStrategies = chargingOrderAccountingStrategyService.lambdaQuery() - .in(TChargingOrderAccountingStrategy::getChargingOrderId,collect).list(); + List<TChargingOrderAccountingStrategy> chargingOrderAccountingStrategies = new ArrayList<>(); + if(collect.size()>=800){ + int i = collect.size() / 800; + int k = collect.size() % 800; + for (int j = 0; j <= i; j++) { + if(j==i&& k>0){ + chargingOrderAccountingStrategies.addAll(chargingOrderAccountingStrategyService.lambdaQuery() + .in(TChargingOrderAccountingStrategy::getChargingOrderId,collect.subList(j * 800, j * 800 + k)).list()); + }else { + List<Long> longs = collect.subList(j * 800, (j + 1) * 800); + chargingOrderAccountingStrategies.addAll(chargingOrderAccountingStrategyService.lambdaQuery() + .in(TChargingOrderAccountingStrategy::getChargingOrderId,longs).list()); + } + } + }else { + chargingOrderAccountingStrategies = chargingOrderAccountingStrategyService.lambdaQuery() + .in(TChargingOrderAccountingStrategy::getChargingOrderId,collect).list(); + } + for (ChargingOrderListVO chargingOrderListVO : list1) { if (chargingOrderListVO.getChargingCapacity()!=null)electronic = electronic.add(chargingOrderListVO.getElectricity()); - if (chargingOrderListVO.getPaymentAmount()!=null)paymentAmount = paymentAmount.add(chargingOrderListVO.getPaymentAmount()); + if (chargingOrderListVO.getPaymentAmount()!=null){ + if (chargingOrderListVO.getOrderSource().equals(2)){ + paymentAmount = paymentAmount.add(chargingOrderListVO.getServiceCharge()!=null?chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP)):new BigDecimal("0")); + }else{ + paymentAmount = paymentAmount.add(chargingOrderListVO.getPaymentAmount()); + } + } if (chargingOrderListVO.getElectrovalence()!=null)electrovalence = electrovalence.add(chargingOrderListVO.getElectrovalence()); - if (chargingOrderListVO.getServiceCharge()!=null)serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge()); - List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId())) - .collect(Collectors.toList()); - for (TChargingOrderAccountingStrategy temp : list2) { - switch (temp.getType()){ - case 1: - if (temp.getChargingCapacity()!=null)jian = jian.add(temp.getChargingCapacity()); - if (temp.getChargingCapacity()!=null)jianElectronic = jianElectronic.add(temp.getElectrovalence()); - if (temp.getChargingCapacity()!=null)jianService = jianService.add(temp.getServiceCharge()); - break; - case 2: - if (temp.getChargingCapacity()!=null)feng = feng.add(temp.getChargingCapacity()); - if (temp.getChargingCapacity()!=null)fengElectronic = fengElectronic.add(temp.getElectrovalence()); - if (temp.getChargingCapacity()!=null)fengService = fengService.add(temp.getServiceCharge()); - break; - case 3: - if (temp.getChargingCapacity()!=null)ping = ping.add(temp.getChargingCapacity()); - if (temp.getChargingCapacity()!=null)pingElectronic = pingElectronic.add(temp.getElectrovalence()); - if (temp.getChargingCapacity()!=null)pingService = pingService.add(temp.getServiceCharge()); - break; - case 4: - if (temp.getChargingCapacity()!=null)gu = gu.add(temp.getChargingCapacity()); - if (temp.getChargingCapacity()!=null)guElectronic = guElectronic.add(temp.getElectrovalence()); - if (temp.getChargingCapacity()!=null)guService = guService.add(temp.getServiceCharge()); - break; + if (chargingOrderListVO.getServiceCharge()!=null){ + if (chargingOrderListVO.getOrderSource().equals(2)){ + serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP))); + }else{ + serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge()); + } + } + if (!chargingOrderListVO.getOrderSource().equals(2)){ + List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId())) + .collect(Collectors.toList()); + for (TChargingOrderAccountingStrategy temp : list2) { + switch (temp.getType()){ + case 1: + if (temp.getChargingCapacity()!=null)jian = jian.add(temp.getChargingCapacity()); + if (temp.getElectrovalence()!=null)jianElectronic = jianElectronic.add(temp.getElectrovalence()); + if (temp.getServiceCharge()!=null)jianService = jianService.add(temp.getServiceCharge()); + break; + case 2: + if (temp.getChargingCapacity()!=null)feng = feng.add(temp.getChargingCapacity()); + if (temp.getElectrovalence()!=null)fengElectronic = fengElectronic.add(temp.getElectrovalence()); + if (temp.getServiceCharge()!=null)fengService = fengService.add(temp.getServiceCharge()); + break; + case 3: + if (temp.getChargingCapacity()!=null)ping = ping.add(temp.getChargingCapacity()); + if (temp.getElectrovalence()!=null)pingElectronic = pingElectronic.add(temp.getElectrovalence()); + if (temp.getServiceCharge()!=null)pingService = pingService.add(temp.getServiceCharge()); + break; + case 4: + if (temp.getChargingCapacity()!=null)gu = gu.add(temp.getChargingCapacity()); + if (temp.getElectrovalence()!=null)guElectronic = guElectronic.add(temp.getElectrovalence()); + if (temp.getServiceCharge()!=null)guService = guService.add(temp.getServiceCharge()); + break; + } + } + }else{ + List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategies.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId())) + .collect(Collectors.toList()); + for (TChargingOrderAccountingStrategy temp : list2) { + switch (temp.getType()){ + case 1: + if (temp.getChargingCapacity()!=null)jian = jian.add(temp.getChargingCapacity()); + if (temp.getElectrovalence()!=null)jianElectronic = jianElectronic.add(temp.getElectrovalence()); + if (temp.getServiceCharge()!=null)jianService = jianService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP))); + break; + case 2: + if (temp.getChargingCapacity()!=null)feng = feng.add(temp.getChargingCapacity()); + if (temp.getElectrovalence()!=null)fengElectronic = fengElectronic.add(temp.getElectrovalence()); + if (temp.getServiceCharge()!=null)fengService = fengService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP))); + break; + case 3: + if (temp.getChargingCapacity()!=null)ping = ping.add(temp.getChargingCapacity()); + if (temp.getElectrovalence()!=null)pingElectronic = pingElectronic.add(temp.getElectrovalence()); + if (temp.getServiceCharge()!=null)pingService = pingService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP))); + break; + case 4: + if (temp.getChargingCapacity()!=null)gu = gu.add(temp.getChargingCapacity()); + if (temp.getElectrovalence()!=null)guElectronic = guElectronic.add(temp.getElectrovalence()); + if (temp.getServiceCharge()!=null)guService = guService.add(temp.getServiceCharge().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_HALF_UP))); + break; + } } } } @@ -1782,28 +1873,29 @@ chargingOrderTimeVO.setPaymentAmount(paymentAmount); chargingOrderTimeVO.setElectrovalence(electrovalence); chargingOrderTimeVO.setServiceCharge(serviceCharge); - // 计算尖峰平谷充电量占比 + // 计算尖峰平谷充电到账占比 + BigDecimal add = jianElectronic.add(fengElectronic).add(pingElectronic).add(guElectronic); // 计算尖峰平谷服务费占比 BigDecimal add1 = jianService.add(fengService).add(pingService).add(guService); - // 计算尖峰平谷充电到账占比 + // 计算尖峰平谷充电量占比 BigDecimal add2 = jian.add(feng).add(ping).add(gu); if (add.compareTo(new BigDecimal("0"))!=0){ - chargingOrderTimeVO.setCapacityProportion(jianElectronic+"度/"+fengElectronic+"度/"+pingElectronic+"度/"+guElectronic+"度-" - +jianElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" - +fengElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" - +pingElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" - +guElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%"); + chargingOrderTimeVO.setCapacityProportion(jian+"度/"+feng+"度/"+ping+"度/"+gu+"度-" + +jian.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +feng.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +ping.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +gu.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%"); chargingOrderTimeVO.setServiceProportion(jianService+"元/"+fengService+"元/"+pingService+"元/"+guService+"元-" +jianService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" +fengService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" +pingService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" +guService.divide(add1,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%"); - chargingOrderTimeVO.setElectronicProportion(jian+"元/"+feng+"元/"+ping+"元/"+gu+"元-" - +jian.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" - +feng.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" - +ping.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" - +gu.divide(add2,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%"); + chargingOrderTimeVO.setElectronicProportion(jianElectronic+"元/"+fengElectronic+"元/"+pingElectronic+"元/"+guElectronic+"元-" + +jianElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +fengElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +pingElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%/" + +guElectronic.divide(add,4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%"); }else{ chargingOrderTimeVO.setCapacityProportion(jianElectronic+"度/"+fengElectronic+"度/"+pingElectronic+"度/"+guElectronic+"度-" +"0"+"%/" @@ -1933,7 +2025,12 @@ chargingOrderListInfoVO.setUid(chargingOrder.getId().toString()); chargingOrderListInfoVO.setCouponDiscountAmount(chargingOrder.getCouponDiscountAmount()); chargingOrderListInfoVO.setVipDiscountAmount(chargingOrder.getVipDiscountAmount()); - chargingOrderListInfoVO.setSharingAmount(chargingOrder.getSharingAmount()); + if (chargingOrder.getOrderSource().equals(2)){ + chargingOrderListInfoVO.setSharingAmount(chargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_HALF_UP)); + }else{ + chargingOrderListInfoVO.setSharingAmount(chargingOrder.getSharingAmount()); + + } // 查询费用明细列表 List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.lambdaQuery() .eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()) diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml index 10a51a0..7770905 100644 --- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml +++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml @@ -336,13 +336,21 @@ SELECT DATE_FORMAT( subquery.create_time, '%m' ) AS MONTH, SUM(electrovalence) AS electrovalence, - SUM(service_charge) AS service_charge + SUM( + CASE + WHEN subquery.order_source = 0 THEN subquery.service_charge + WHEN subquery.order_source = 1 THEN subquery.service_charge + ELSE subquery.service_charge * 0.2 + END + ) AS service_charge + FROM ( SELECT create_time, electrovalence, - service_charge + service_charge, + order_source FROM t_charging_order <where> @@ -365,7 +373,15 @@ </select> <select id="circle" resultType="com.ruoyi.order.dto.SixCircleDto"> SELECT - site_id as siteId,SUM(payment_amount) as paymentAmount + site_id as siteId, + + SUM( + CASE + WHEN order_source = 0 THEN payment_amount + WHEN order_source = 1 THEN payment_amount + ELSE service_charge * 0.2 + END P + ) AS paymentAmount FROM t_charging_order <where> @@ -398,33 +414,49 @@ </select> <select id="getSumByType" resultType="java.util.Map"> SELECT - type, - SUM( charging_capacity ) as charging_capacity , - SUM( period_service_price ) as period_electric_price, - SUM(period_electric_price) as total_amount + t1.type, + SUM( t1.charging_capacity ) as charging_capacity , + + SUM( + CASE + WHEN t2.order_source = 0 THEN t1.period_service_price + WHEN t2.order_source = 1 THEN t1.period_service_price + ELSE t1.period_service_price * 0.2 + END + )as period_electric_price, + SUM(t1.period_electric_price) as total_amount FROM - t_charging_order_accounting_strategy + t_charging_order_accounting_strategy t1 + LEFT JOIN t_charging_order t2 on t1.charging_order_id = t2.id + <where> <if test="chargingOrderIds != null and chargingOrderIds.size() > 0"> - AND charging_order_id IN + AND t1.charging_order_id IN <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")"> #{chargingOrderId} </foreach> </if> </where> GROUP BY - type + t1.type </select> <select id="getDateData" resultType="java.util.Map"> SELECT - DATE_FORMAT( create_time, '%H:00' ) as time, - CAST(SUM(service_charge) AS DECIMAL(20, 6)) as servicecharge, + DATE_FORMAT( create_time, '%H:00' ) as time, + CAST( + SUM( + CASE + WHEN order_source = 0 THEN service_charge + WHEN order_source = 1 THEN service_charge + ELSE service_charge * 0.2 + END + )AS DECIMAL(20, 6)) as servicecharge, CAST(SUM(charging_capacity) AS DECIMAL(20, 6)) as electrovalence, CAST(SUM(electrovalence) AS DECIMAL(20, 4)) AS paymentAmount, SUM(payment_amount) AS paymoney, - count(1) as orderCount + count(1) as orderCount FROM - t_charging_order + t_charging_order <where> del_flag = 0 and recharge_payment_status = 2 and DATE(create_time) = CURDATE() @@ -443,7 +475,11 @@ <select id="getWeekData" resultType="java.util.Map"> SELECT DATE_FORMAT( create_time, '%Y-%m-%d' ) as time, - SUM(service_charge) as servicecharge, + SUM(CASE + WHEN order_source = 0 THEN service_charge + WHEN order_source = 1 THEN service_charge + ELSE service_charge * 0.2 + END) as servicecharge, SUM(charging_capacity) as electrovalence, SUM(electrovalence) AS paymentAmount, SUM(payment_amount) AS paymoney, @@ -468,10 +504,19 @@ <select id="getMonthData" resultType="java.util.Map"> SELECT DATE_FORMAT( create_time, '%Y-%m-%d' ) as time, - SUM(service_charge) as servicecharge, + SUM(CASE + WHEN order_source = 0 THEN service_charge + WHEN order_source = 1 THEN service_charge + ELSE service_charge * 0.2 + END) as servicecharge, SUM(charging_capacity) as electrovalence, SUM(electrovalence) AS paymentAmount, - SUM(payment_amount) AS paymoney, + SUM( + CASE + WHEN order_source = 0 THEN payment_amount + WHEN order_source = 1 THEN payment_amount + ELSE service_charge * 0.2 + END) AS paymoney, count(1) as orderCount FROM t_charging_order @@ -493,7 +538,11 @@ <select id="getYearData" resultType="java.util.Map"> SELECT DATE_FORMAT( create_time, '%Y-%m-%d' ) as time, - SUM(service_charge) as servicecharge, + SUM(CASE + WHEN order_source = 0 THEN service_charge + WHEN order_source = 1 THEN service_charge + ELSE service_charge * 0.2 + END) as servicecharge, SUM(charging_capacity) as electrovalence, SUM(electrovalence) AS paymentAmount, SUM(payment_amount) AS paymoney, @@ -520,7 +569,11 @@ <select id="getByDate" resultType="java.util.Map"> SELECT DATE_FORMAT( create_time, '%Y-%m-%d' ) as time, - SUM(service_charge) as servicecharge, + SUM(CASE + WHEN order_source = 0 THEN service_charge + WHEN order_source = 1 THEN service_charge + ELSE service_charge * 0.2 + END) as servicecharge, SUM(charging_capacity) as electrovalence, SUM(electrovalence) AS paymentAmount, SUM(payment_amount) AS paymoney, @@ -954,11 +1007,16 @@ </if> </select> <select id="countBySource" resultType="java.util.Map"> - select - count(1) as counts, - source_name as source - from t_charging_order - where 1=1 + select + count(1) as counts, + case + when tripartite_platform_name is null then '明星充电' + when tripartite_platform_name = 'KuaiDian' then '快电' + when tripartite_platform_name = 'XinDianTu' then '新电途' + else tripartite_platform_name + end as source + from t_charging_order + where 1=1 AND del_flag = 0 AND recharge_payment_status = 2 and status = 5 <if test="siteIds != null and siteIds.size() > 0"> @@ -974,7 +1032,7 @@ and DATE(create_time) >= #{statisticsQueryDto.startTime} and DATE(create_time) <= #{statisticsQueryDto.endTime} </if> - group by source_name + group by tripartite_platform_name </select> -- Gitblit v1.7.1