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=充电订单(刷卡))") 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<>(); ruoyi-service/ruoyi-chargingPile/src/main/resources/template/充电算帐单已出账.xlsxBinary files differ
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
@@ -377,7 +377,19 @@ int i =1; for (TChargingOrder tChargingOrder : tChargingOrders) { // 账单信息 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<>(); 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("四川明星新能源科技有限公司"); 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); } 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){ 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){ 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()); 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) { 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")); 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() 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()); 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.getChargingCapacity()!=null)jianElectronic = jianElectronic.add(temp.getElectrovalence()); if (temp.getChargingCapacity()!=null)jianService = jianService.add(temp.getServiceCharge()); 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.getChargingCapacity()!=null)fengElectronic = fengElectronic.add(temp.getElectrovalence()); if (temp.getChargingCapacity()!=null)fengService = fengService.add(temp.getServiceCharge()); 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.getChargingCapacity()!=null)pingElectronic = pingElectronic.add(temp.getElectrovalence()); if (temp.getChargingCapacity()!=null)pingService = pingService.add(temp.getServiceCharge()); 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.getChargingCapacity()!=null)guElectronic = guElectronic.add(temp.getElectrovalence()); if (temp.getChargingCapacity()!=null)guService = guService.add(temp.getServiceCharge()); 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()); 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()) 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,27 +414,43 @@ </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, 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, @@ -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, @@ -956,7 +1009,12 @@ <select id="countBySource" resultType="java.util.Map"> select count(1) as counts, source_name as source 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 @@ -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>