| | |
| | | |
| | | import cn.afterturn.easypoi.excel.ExcelExportUtil; |
| | | import cn.afterturn.easypoi.excel.entity.ExportParams; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.ruoyi.account.api.feignClient.AppUserCarClient; |
| | | import com.ruoyi.account.api.feignClient.AppUserClient; |
| | | import com.ruoyi.account.api.model.TAppUser; |
| | |
| | | private AccountingStrategyOrderService accountingStrategyOrderService; |
| | | @Resource |
| | | private TChargingOrderAccountingStrategyService tChargingOrderAccountingStrategyService; |
| | | @Resource |
| | | private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient; |
| | | |
| | | |
| | | |
| | | |
| | | @RequiresPermissions(value = {"/chargingPeriodStatistics"}, logical = Logical.OR) |
| | |
| | | @ApiOperation(value = "充电时段统计-导出", tags = {"管理后台-财务结算"}) |
| | | @PutMapping("/export") |
| | | public void export(@RequestBody ChargingListQuery dto) { |
| | | ChargingOrderTimeVO res = chargingOrderService.chargingList(dto); |
| | | List<TChargingOrderExport> tChargingOrderExports = new ArrayList<>(); |
| | | List<ChargingOrderListVO> exportList = res.getExportList(); |
| | | List<ChargingOrderListVO> exportList = chargingOrderService.export(dto); |
| | | 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(); |
| | | List<AccountingStrategyOrder> listAll = accountingStrategyOrderService.lambdaQuery() |
| | | .list(); |
| | | List<TChargingOrderAccountingStrategy> stageCostAll = tChargingOrderAccountingStrategyService.list(); |
| | | // List<Long> collect = exportList.stream().map(ChargingOrderListVO::getId).collect(Collectors.toList()); |
| | | // List<TChargingOrderAccountingStrategy> stageCostAll = tChargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>() |
| | | // .in("charging_order_id", collect)); |
| | | List<TVip> data5 = vipClient.getAllVip().getData(); |
| | | List<TAppUserCar> data8 = appUserCarClient.getAllCar().getData(); |
| | | for (ChargingOrderListVO chargingOrderListVO : exportList) { |
| | |
| | | tChargingOrderExport.setId(i); |
| | | tChargingOrderExport.setCode(chargingOrderListVO.getCode()); |
| | | tChargingOrderExport.setTerminalName(chargingOrderListVO.getTerminalName()); |
| | | // 查询这笔订单的计费策略名称 |
| | | List<AccountingStrategyOrder> list = listAll.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList()); |
| | | |
| | | |
| | | if (!list.isEmpty()){ |
| | | tChargingOrderExport.setName(list.get(0).getName()); |
| | | } |
| | | tChargingOrderExport.setName(chargingOrderListVO.getAccountingStrategyName()); |
| | | tChargingOrderExport.setOrderClassification("1"); |
| | | tChargingOrderExport.setStartType("扫码"); |
| | | tChargingOrderExport.setOne("小程序"); |
| | |
| | | } |
| | | |
| | | } |
| | | tChargingOrderExport.setPaymentMethod(getPaymentMethod(chargingOrderListVO)); |
| | | tChargingOrderExport.setCashPayAmount(formatMoney(getCashPayAmount(chargingOrderListVO))); |
| | | tChargingOrderExport.setBalancePayAmount(formatMoney(getBalancePayAmount(chargingOrderListVO))); |
| | | if (chargingOrderListVO.getCreateTime()!=null){ |
| | | String s1 = DateUtils.localDateTimeToString(chargingOrderListVO.getCreateTime()); |
| | | tChargingOrderExport.setCreateTime(s1); |
| | |
| | | tChargingOrderExport.setServiceCharge(chargingOrderListVO.getServiceCharge()+""); |
| | | tChargingOrderExport.setTotal(chargingOrderListVO.getPaymentAmount()+""); |
| | | tChargingOrderExport.setChargingCapacity(chargingOrderListVO.getElectricity()+""); |
| | | List<TChargingOrderAccountingStrategy> stageCost = stageCostAll.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList()); |
| | | if (!stageCost.isEmpty()){ |
| | | // 累加时段电费单价 取平均值 |
| | | BigDecimal bigDecimal1 = new BigDecimal("0"); |
| | | BigDecimal bigDecimal2 = new BigDecimal("0"); |
| | | BigDecimal bigDecimal3 = new BigDecimal("0"); |
| | | BigDecimal size = new BigDecimal(stageCost.size()); |
| | | |
| | | for (TChargingOrderAccountingStrategy tChargingOrderAccountingStrategy : stageCost) { |
| | | bigDecimal1 = bigDecimal1.add(tChargingOrderAccountingStrategy.getPeriodElectricPrice()); |
| | | bigDecimal2 = bigDecimal2.add(tChargingOrderAccountingStrategy.getPeriodServicePrice()); |
| | | bigDecimal3 = bigDecimal3.add(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice()); |
| | | } |
| | | BigDecimal divide1 = bigDecimal1.divide(size, 2, RoundingMode.HALF_DOWN); |
| | | BigDecimal divide2 = bigDecimal2.divide(size, 2, RoundingMode.HALF_DOWN); |
| | | BigDecimal divide3 = bigDecimal3.divide(size, 2, RoundingMode.HALF_DOWN); |
| | | tChargingOrderExport.setElectrovalencePrice(divide1+""); |
| | | tChargingOrderExport.setServiceChargePrice(divide2+""); |
| | | tChargingOrderExport.setServiceChargePriceLook(divide3+""); |
| | | } |
| | | if (chargingOrderListVO.getStartTime()!=null && chargingOrderListVO.getEndTime()!=null){ |
| | | LocalDateTime startTime = chargingOrderListVO.getStartTime(); |
| | | LocalDateTime endTime = chargingOrderListVO.getEndTime(); |
| | | // 计算时间差 单位秒 |
| | | long between = ChronoUnit.SECONDS.between(startTime, endTime); |
| | | tChargingOrderExport.setCumulativeChargingTime((between*60)+""); |
| | | } |
| | | tChargingOrderExport.setRechargeAmount(chargingOrderListVO.getRechargeAmount().toString()); |
| | | tChargingOrderExport.setRefundAmount(chargingOrderListVO.getRefundAmount().toString()); |
| | | // List<TChargingOrderAccountingStrategy> stageCost = stageCostAll.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList()); |
| | | // if (!stageCost.isEmpty()){ |
| | | // // 累加时段电费单价 取平均值 |
| | | // BigDecimal bigDecimal1 = new BigDecimal("0"); |
| | | // BigDecimal bigDecimal2 = new BigDecimal("0"); |
| | | // BigDecimal bigDecimal3 = new BigDecimal("0"); |
| | | // BigDecimal size = new BigDecimal(stageCost.size()); |
| | | // |
| | | // for (TChargingOrderAccountingStrategy tChargingOrderAccountingStrategy : stageCost) { |
| | | // bigDecimal1 = bigDecimal1.add(tChargingOrderAccountingStrategy.getPeriodElectricPrice()); |
| | | // bigDecimal2 = bigDecimal2.add(tChargingOrderAccountingStrategy.getPeriodServicePrice()); |
| | | // bigDecimal3 = bigDecimal3.add(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice()); |
| | | // } |
| | | // BigDecimal divide1 = bigDecimal1.divide(size, 2, RoundingMode.HALF_DOWN); |
| | | // BigDecimal divide2 = bigDecimal2.divide(size, 2, RoundingMode.HALF_DOWN); |
| | | // BigDecimal divide3 = bigDecimal3.divide(size, 2, RoundingMode.HALF_DOWN); |
| | | // tChargingOrderExport.setElectrovalencePrice(divide1+""); |
| | | // tChargingOrderExport.setServiceChargePrice(divide2+""); |
| | | // tChargingOrderExport.setServiceChargePriceLook(divide3+""); |
| | | // } |
| | | tChargingOrderExport.setElectrovalencePrice(""); |
| | | tChargingOrderExport.setServiceChargePrice(""); |
| | | tChargingOrderExport.setServiceChargePriceLook(""); |
| | | tChargingOrderExport.setCumulativeChargingTime(chargingOrderListVO.getChargingSecond() + ""); |
| | | tChargingOrderExport.setRefundAmount(null != chargingOrderListVO.getRefundAmount() ? chargingOrderListVO.getRefundAmount().toString() : ""); |
| | | tChargingOrderExport.setStartSoc(chargingOrderListVO.getStartSoc()); |
| | | tChargingOrderExport.setEndtSoc(chargingOrderListVO.getEndSoc()); |
| | | tChargingOrderExport.setIsSoc("否"); |
| | |
| | | TAppUserCar tAppUserCar = data8.stream().filter(e -> e.getId().equals(chargingOrderListVO.getAppUserId())).findFirst().orElse(null); |
| | | if (tAppUserCar!=null){ |
| | | tChargingOrderExport.setCarNumber(tAppUserCar.getLicensePlate()); |
| | | tChargingOrderExport.setCarType(tAppUserCar.getVehicleModel()); |
| | | tChargingOrderExport.setCarBrand(tAppUserCar.getVehicleBrand()); |
| | | } |
| | | tChargingOrderExport.setBalanceIncome(formatMoney(chargingOrderListVO.getBalanceIncome())); |
| | | tChargingOrderExport.setBalanceGiftIncome(formatMoney(chargingOrderListVO.getBalanceGiftIncome())); |
| | | tChargingOrderExport.setTripartiteCommission(formatMoney(chargingOrderListVO.getSharingAmount())); |
| | | tChargingOrderExport.setOrderCode(chargingOrderListVO.getStartChargeSeq()); |
| | | tChargingOrderExport.setIsSingle("是"); |
| | | tChargingOrderExport.setPayTime(chargingOrderListVO.getPayTime()+""); |
| | | tChargingOrderExport.setElectrovalenceSiteName("四川明星新能源科技有限公司"); |
| | | tChargingOrderExport.setCompanyNameAdmin("四川明星新能源科技有限公司"); |
| | | tChargingOrderExport.setMoneyType("线上计费"); |
| | | tChargingOrderExport.setDeviceType("设备直连(自由集控)"); |
| | | tChargingOrderExport.setSettlementCompanyName("四川明星新能源科技有限公司"); |
| | | tChargingOrderExport.setPrePaymentType("先付后退"); |
| | | tChargingOrderExport.setIsSecurity("是"); |
| | | tChargingOrderExport.setSharingAmount(formatMoney(chargingOrderListVO.getSharingAmount())); |
| | | tChargingOrderExport.setIsWhitelist(Integer.valueOf(1).equals(chargingOrderListVO.getIsWhitelist()) ? "是" : "否"); |
| | | tChargingOrderExport.setWhitelistElectricRefundAmount(formatMoney(chargingOrderListVO.getWhitelistElectricRefundAmount())); |
| | | tChargingOrderExport.setWhitelistServiceRefundAmount(formatMoney(chargingOrderListVO.getWhitelistServiceRefundAmount())); |
| | | tChargingOrderExports.add(tChargingOrderExport); |
| | | i++; |
| | | } |
| | | Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TChargingOrderExport.class, tChargingOrderExports); |
| | | HttpServletResponse response = WebUtils.response(); |
| | |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | private String getPaymentMethod(ChargingOrderListVO chargingOrderListVO) { |
| | | Integer payMethod = chargingOrderListVO.getPayMethod(); |
| | | String thirdPayName = getThirdPayName(chargingOrderListVO.getRechargePaymentType()); |
| | | if (Integer.valueOf(1).equals(payMethod)) { |
| | | return "余额支付"; |
| | | } |
| | | if (Integer.valueOf(2).equals(payMethod)) { |
| | | return thirdPayName.isEmpty() ? "余额支付" : "余额支付+" + thirdPayName; |
| | | } |
| | | if (Integer.valueOf(3).equals(payMethod)) { |
| | | return thirdPayName; |
| | | } |
| | | return thirdPayName; |
| | | } |
| | | |
| | | private String getThirdPayName(Integer rechargePaymentType) { |
| | | if (Integer.valueOf(1).equals(rechargePaymentType)) { |
| | | return "微信支付"; |
| | | } |
| | | if (Integer.valueOf(2).equals(rechargePaymentType) || Integer.valueOf(3).equals(rechargePaymentType)) { |
| | | return "支付宝支付"; |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | private BigDecimal getCashPayAmount(ChargingOrderListVO chargingOrderListVO) { |
| | | if (chargingOrderListVO.getThirdPayAmount() != null) { |
| | | return chargingOrderListVO.getThirdPayAmount(); |
| | | } |
| | | if (Integer.valueOf(3).equals(chargingOrderListVO.getPayMethod())) { |
| | | return nullToZero(chargingOrderListVO.getPaymentAmount()); |
| | | } |
| | | return BigDecimal.ZERO; |
| | | } |
| | | |
| | | private BigDecimal getBalancePayAmount(ChargingOrderListVO chargingOrderListVO) { |
| | | if (chargingOrderListVO.getBalancePayAmount() != null) { |
| | | return chargingOrderListVO.getBalancePayAmount(); |
| | | } |
| | | if (Integer.valueOf(1).equals(chargingOrderListVO.getPayMethod())) { |
| | | return nullToZero(chargingOrderListVO.getPaymentAmount()); |
| | | } |
| | | return BigDecimal.ZERO; |
| | | } |
| | | |
| | | private BigDecimal nullToZero(BigDecimal amount) { |
| | | return amount == null ? BigDecimal.ZERO : amount; |
| | | } |
| | | |
| | | private String formatMoney(BigDecimal amount) { |
| | | return nullToZero(amount).setScale(2, RoundingMode.HALF_UP).toPlainString(); |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | } |
| | | |