ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingBill.java
@@ -55,6 +55,12 @@ @ApiModelProperty(value = "1未出账2已出账") @TableField("status") private Integer status; @ApiModelProperty(value = "1日结2月结") @TableField("orderState") private Integer orderState; @ApiModelProperty(value = "账户类型 1微信商户 2支付宝商户") @TableField("payType") private Integer payType; @ApiModelProperty(value = "uid") @TableField(exist = false) ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/TOrderInvoiceQuery.java
@@ -25,6 +25,8 @@ @ApiModelProperty(value = "开票方式(1=人工,2=自动)") private Integer invoicingMethod; @ApiModelProperty(value = "状态(1=待开票,2=开票中,3=已开票)") private Integer status; @ApiModelProperty(value = "申请人电话") private String userPhone; @@ -32,7 +34,7 @@ @ApiModelProperty(value = "申请人姓名") private String nickName; @ApiModelProperty(value = "公司名称") @ApiModelProperty(value = "公司名称(抬头)") private String name; @ApiModelProperty(value = "用户id 前端忽略") ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillListVO.java
@@ -14,6 +14,7 @@ public class ChargingBillListVO extends TChargingBill { @ApiModelProperty(value = "账单周期") private String billWeek; @ApiModelProperty(value = "充电时间 秒") private Integer chargingSecond; @ApiModelProperty(value = "订单数量") @@ -36,4 +37,6 @@ private BigDecimal commissionAmount; @ApiModelProperty(value = "充电电流 度") private BigDecimal chargingCapacity; @ApiModelProperty(value = "入账金额") private BigDecimal billMoney; } ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java
@@ -5,12 +5,14 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.other.api.domain.TCompany; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TInvoiceType; import com.ruoyi.other.api.domain.TUserTag; import com.ruoyi.other.api.dto.TagListQueryDto; import com.ruoyi.other.api.dto.UnitListQueryDto; import com.ruoyi.other.api.factory.OtherFallbackFactory; import com.ruoyi.other.api.vo.CouponListVOVO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; @@ -24,8 +26,9 @@ */ @FeignClient(contextId = "UnitClient", value = ServiceNameConstants.OTHER_SERVICE, fallbackFactory = OtherFallbackFactory.class) public interface OtherClient { //单位分页 @PostMapping(value = "/t-company/unit/page") @PostMapping(value = "/t-invoice-type/t-company/unit/page") R<Page<TCompany>> queryUnitPage(@RequestBody UnitListQueryDto unitListQueryDto); //单位添加修改 @PostMapping(value = "/t-company/unit/addOrUpdate") ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
@@ -340,7 +340,7 @@ try { // excel模板封装 ExcelWriterBuilder excelWriterBuilder = EasyExcelFactory.write(response.getOutputStream()); InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("template/" +"运营商名称1-充电桩名称1-结算对账单明细-结算月份1" + ".xlsx"); InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("template/" +"结算汇总" + ".xlsx"); // 自动释放资源 try (ExcelWriter excelWriter = excelWriterBuilder.withTemplate(stream).build()) { WriteSheet writeSheet = EasyExcel.writerSheet().build(); ruoyi-service/ruoyi-chargingPile/src/main/resources/template/结算汇总.xlsxBinary files differ
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
@@ -72,12 +72,15 @@ @ApiOperation(value = "列表查询", tags = {"管理后台-账户结算账单"}) public R<AccountListVO> accountBillList(@RequestBody ChargingListQuery dto) { AccountListVO accountListVO = new AccountListVO(); ChargingBillVO res = chargingBillService.chargingBillList(dto); ChargingBillVO res = chargingBillService.chargingBillList1(dto); ChargingBillVO res1 = chargingBillService.chargingBillList(dto); ChargingBillVO res1 = chargingBillService.chargingBillList1(dto); List<ChargingBillListVO> records = res1.getList().getRecords(); accountListVO.setBillCount(records.size()); accountListVO.setTotalAmount(res1.getPaymentAmount().subtract(res1.getRefundAmount()).subtract(res1.getCommissionAmount()).subtract(res1.getSharingAmount())); accountListVO.setTotalAmount( res1.getPaymentAmount().subtract(res1.getRefundAmount()==null?BigDecimal.ZERO:res1.getRefundAmount()) .subtract(res1.getCommissionAmount()==null?BigDecimal.ZERO:res1.getCommissionAmount()) .subtract(res1.getSharingAmount()==null?BigDecimal.ZERO:res1.getSharingAmount())); accountListVO.setPaymentAmount(res1.getPaymentAmount()); accountListVO.setRefundAmount(res1.getRefundAmount()); accountListVO.setCommissionAmount(res1.getCommissionAmount()); @@ -163,6 +166,76 @@ } } } @ApiOperation(value = "导出", tags = {"管理后台-账户结算账单"}) @PutMapping("/exportAccount") public void exportAccount(@RequestBody ChargingListQuery dto) { ChargingBillVO res = chargingBillService.chargingBillList1(dto); List<ChargingBillListVO> list = res.getList().getRecords(); List<TChargingBillExport> tChargingBillExports = new ArrayList<>(); for (ChargingBillListVO orderInvoiceVO : list) { TChargingBillExport tChargingBillExport = new TChargingBillExport(); tChargingBillExport.setCode(orderInvoiceVO.getCode()); switch (orderInvoiceVO.getOrderState()){ case 1: tChargingBillExport.setBillType("日账单"); break; case 2: tChargingBillExport.setBillType("月账单"); break; } tChargingBillExport.setType(orderInvoiceVO.getType().toString()); tChargingBillExport.setBillWeek(orderInvoiceVO.getBillWeek()); tChargingBillExport.setSiteName(orderInvoiceVO.getSiteName()); tChargingBillExport.setPaymentAmount(orderInvoiceVO.getPaymentAmount()); tChargingBillExport.setElectrovalence(orderInvoiceVO.getElectrovalence()); tChargingBillExport.setServiceCharge(orderInvoiceVO.getServiceCharge()); tChargingBillExport.setChargingCapacity(orderInvoiceVO.getChargingCapacity()); Integer chargingSecond = orderInvoiceVO.getChargingSecond(); // 根据秒数 转换为xx小时xx分钟xx秒 如果小时为0不展示 如果分钟为0则不展示 // 计算小时、分钟和秒 int hours = chargingSecond / 60 / 60; int minutes = chargingSecond /60 % 60; int seconds = 0; // 如果没有秒数,则默认是0 // 构造结果字符串 StringBuilder result = new StringBuilder(); if (hours > 0) { result.append(hours).append("小时"); } if (minutes > 0) { result.append(minutes).append("分钟"); } if (seconds > 0 || result.length() == 0) { // 如果秒数大于0,或者小时和分钟都为0,则显示秒数 result.append(seconds).append("秒"); } tChargingBillExport.setChargingTime(result.toString()); tChargingBillExport.setOrderCount(orderInvoiceVO.getOrderCount()); tChargingBillExport.setBillTime(orderInvoiceVO.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); tChargingBillExports.add(tChargingBillExport); } Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TChargingBillExport.class, tChargingBillExports); HttpServletResponse response = WebUtils.response(); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); ServletOutputStream outputStream = null; try { String fileName = URLEncoder.encode("月账单-"+res.getCategory()+"-"+res.getBillWeek()+"-"+res.getSiteName()+".xls", "utf-8"); response.setHeader("Content-Disposition", "attachment;filename=" + fileName); response.setContentType("application/vnd.ms-excel;charset=UTF-8"); response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); outputStream = response.getOutputStream(); workbook.write(outputStream); } catch (IOException e) { e.printStackTrace(); } finally { try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } @ApiOperation(value = "下载-未出账", tags = {"管理后台-充电算账单"}) @PutMapping("/download") public void download(@RequestBody ExportUidDto uid) ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
@@ -118,13 +118,15 @@ } @GetMapping(value = "/settlementTotal") @ApiOperation(value = "结算汇总-列表查询", tags = {"管理后台-财务结算"}) @ApiParam(name = "time", value = "汇报时间2024-01-01 00:00:00") @ApiParam(name = "time", value = "汇报时间2024-01") public AjaxResult<SettlementTotalVO> settlementTotal(String time) { time = time+"-01 00:00:00"; SettlementTotalVO res = chargingOrderService.settlementTotal(time); return AjaxResult.success(res); } @GetMapping(value = "/settlementTotalR") public R<SettlementTotalVO> settlementTotalR( String time) { time = time+"-01 00:00:00"; SettlementTotalVO res = chargingOrderService.settlementTotal(time); return R.ok(res); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingBillMapper.java
@@ -26,5 +26,10 @@ @Param("req") ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2); List<ChargingBillListVO> chargingBillList1( @Param("pageInfo") PageInfo<ChargingBillListVO> pageInfo, @Param("req") ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingBillService.java
@@ -16,5 +16,6 @@ public interface TChargingBillService extends IService<TChargingBill> { ChargingBillVO chargingBillList(ChargingListQuery dto); ChargingBillVO chargingBillList1(ChargingListQuery dto); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java
@@ -61,6 +61,276 @@ @Resource private AppUserCarClient appUserCarClient; @Override public ChargingBillVO chargingBillList1(ChargingListQuery dto) { ChargingBillVO chargingBillVO = new ChargingBillVO(); String startTime1 = null; String startTime2 = null; if (StringUtils.hasLength(dto.getStartTime())){ String[] split = dto.getStartTime().split(" - "); startTime1 = split[0]; startTime2 = split[1]; } PageInfo<ChargingBillListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); List<ChargingBillListVO> list = this.baseMapper.chargingBillList1(pageInfo,dto,startTime1,startTime2); BigDecimal paymentAmountTotal = new BigDecimal("0"); BigDecimal orderAmountTotal = new BigDecimal("0"); BigDecimal electrovalenceTotal = new BigDecimal("0"); BigDecimal serviceChargeTotal = new BigDecimal("0"); BigDecimal commissionAmountTotal = new BigDecimal("0"); BigDecimal sharingAmountTotal = new BigDecimal("0"); BigDecimal chargingCapacityTotal = new BigDecimal("0"); BigDecimal discountTotal = new BigDecimal("0"); BigDecimal refundAmount = new BigDecimal("0"); int orderCount = 0; for (ChargingBillListVO chargingBillListVO : list) { String temp = ""; String temp1 = ""; switch (chargingBillListVO.getType()){ case 1: temp = "全站账单"; temp1 = "全站"; break; case 2: temp = "各个站点账单"; temp1 = siteClient.getSiteByIds(Arrays.asList(chargingBillListVO.getSiteId())).getData().get(0).getName(); break; } chargingBillVO.setCategory(temp); chargingBillVO.setSiteName(temp1); chargingBillVO.setType("月账单"); chargingBillVO.setCode(chargingBillListVO.getCode()); LocalDateTime billTime = chargingBillListVO.getBillTime(); // 将其转化为yyyy-MM格式字符串 chargingBillVO.setCreateTime(billTime.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); // 将billTime减去一个月 转化为yyyy-MM格式字符串 chargingBillVO.setBillWeek(billTime.minusMonths(1).format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM"))); chargingBillListVO.setUid(chargingBillListVO.getId().toString()); // 根据账单的出账时间 查询上个月的充电订单 LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1); // 账单周期 chargingBillListVO.setBillWeek(localDate.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM"))); // 获取 LocalDate 对象 LocalDate date = localDate.toLocalDate(); // 获取该月份的第一天 LocalDate firstDayOfMonth = date.withDayOfMonth(1); // 获取该月份的最后一天 LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth()); QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>() .between("create_time", firstDayOfMonth, lastDayOfMonth) .eq("status", 5) .eq("recharge_payment_status", 2); if (chargingBillListVO.getType() == 2) { eq.eq("site_id", chargingBillListVO.getSiteId()); } List<TChargingOrder> tChargingOrders = chargingOrderList.selectList(eq); int chargingSecond = 0; BigDecimal paymentAmount = new BigDecimal("0"); BigDecimal orderAmount = new BigDecimal("0"); BigDecimal electrovalence = new BigDecimal("0"); BigDecimal serviceCharge = new BigDecimal("0"); BigDecimal commissionAmount = new BigDecimal("0"); BigDecimal sharingAmount = new BigDecimal("0"); BigDecimal chargingCapacity = new BigDecimal("0"); orderCount+=tChargingOrders.size(); chargingBillVO.setCategory(""); chargingBillVO.setExportList(tChargingOrders); for (TChargingOrder tChargingOrder : tChargingOrders) { List<Site> data = siteClient.getSiteByIds(Arrays.asList(tChargingOrder.getSiteId())).getData(); if (!data.isEmpty()){ chargingBillVO.setSiteName(data.get(0).getName()); } TChargingPile data1 = chargingPileClient.getChargingPileById(tChargingOrder.getChargingPileId()).getData(); TChargingGun data2 = chargingGunClient.getChargingGunById(tChargingOrder.getChargingGunId()).getData(); if (data1!=null && data2!=null){ tChargingOrder.setTerminalName(data1.getName()+data2.getName()); tChargingOrder.setTerminalCode(data2.getCode()); } tChargingOrder.setOrderClassification1("线上订单"); tChargingOrder.setRechargePaymentType1("预付"); tChargingOrder.setChargingType("充电桩接口充电服务"); switch (tChargingOrder.getStatus()){ case 1: tChargingOrder.setStatus1("等待中"); break; case 2: tChargingOrder.setStatus1("启动中"); break; case 3: tChargingOrder.setStatus1("充电中"); break; case 4: tChargingOrder.setStatus1("停止中"); break; case 5: tChargingOrder.setStatus1("已结束"); break; case 0: tChargingOrder.setStatus1("未知"); break; } if (tChargingOrder.getEndMode()!=null){ switch (tChargingOrder.getEndMode()){ case 1: tChargingOrder.setEndMode1("主动终止"); break; case 2: tChargingOrder.setEndMode1("满电终止"); break; case 3: tChargingOrder.setEndMode1("费用不足终止"); break; case 0: tChargingOrder.setEndMode1("异常终止"); break; } } BigDecimal add = tChargingOrder.getElectrovalence().add(tChargingOrder.getServiceCharge()); tChargingOrder.setTotalAmount(add.toString()); tChargingOrder.setDiscount(tChargingOrder.getCouponDiscountAmount().toString()); UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(tChargingOrder.getCode()).getData(); if (data5!=null){ if (data5.getTime_remaining()!=null){ chargingSecond+=data5.getTime_remaining()*60; } } Integer cumulativeChargingTime = data5.getCumulative_charging_time(); // 将其转化为xx小时xx分钟xx秒显示 如果是0小时则不展示小时 如果是0分钟则不展示分钟 if (cumulativeChargingTime!=null){ // 计算小时、分钟和秒 int hours = cumulativeChargingTime / 60; int minutes = cumulativeChargingTime % 60; int seconds = 0; // 如果没有秒数,则默认是0 StringBuilder result = new StringBuilder(); if (hours > 0) { result.append(hours).append("小时"); } if (minutes > 0) { result.append(minutes).append("分钟"); } if (seconds > 0 || result.length() == 0) { // 如果秒数大于0,或者小时和分钟都为0,则显示秒数 result.append(seconds).append("秒"); } tChargingOrder.setChargingTime(result.toString()); } tChargingOrder.setEndSoc(data5.getSoc().toString()); TAppUser data3 = appUserClient.getUserById(tChargingOrder.getAppUserId()).getData(); if (tChargingOrder.getAppUserCarId()!=null){ List<TAppUserCar> data4 = appUserCarClient.getCarByIds(Arrays.asList(tChargingOrder.getAppUserCarId())).getData(); if (!data4.isEmpty()){ tChargingOrder.setLicensePlate(data4.get(0).getLicensePlate()); tChargingOrder.setVehicleModel(data4.get(0).getVehicleModel()); } } if (data3!=null)tChargingOrder.setUserName(data3.getName()); // 累加实收金额 支付金额减去退款金额 if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getPaymentAmount()!=null){ paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()).subtract(tChargingOrder.getRefundAmount()); paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()).subtract(tChargingOrder.getRefundAmount()); }else if (tChargingOrder.getPaymentAmount()!=null){ paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()); paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()); } // 累加订单金额 if (tChargingOrder.getOrderAmount()!=null){ orderAmount = orderAmount.add(tChargingOrder.getOrderAmount()); orderAmountTotal = orderAmountTotal.add(tChargingOrder.getOrderAmount()); } // 累加累计电费 if (tChargingOrder.getElectrovalence()!=null){ electrovalence = electrovalence.add(tChargingOrder.getElectrovalence()); electrovalenceTotal = electrovalenceTotal.add(tChargingOrder.getElectrovalence()); } if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus() == 2){ refundAmount = refundAmount.add(tChargingOrder.getRefundAmount()); } // 累加累计服务费 if (tChargingOrder.getServiceCharge()!=null){ serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge()); serviceChargeTotal = serviceChargeTotal.add(tChargingOrder.getServiceCharge()); } // 累加平台手续费 if (tChargingOrder.getCommissionAmount()!=null){ commissionAmount = commissionAmount.add(tChargingOrder.getCommissionAmount()); commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getCommissionAmount()); } // 累加平台分佣 if (tChargingOrder.getSharingAmount()!=null){ sharingAmount = sharingAmount.add(tChargingOrder.getSharingAmount()); sharingAmountTotal = sharingAmountTotal.add(tChargingOrder.getSharingAmount()); } // 累加充电度数 if (tChargingOrder.getChargingCapacity()!=null){ chargingCapacity = chargingCapacity.add(tChargingOrder.getChargingCapacity()); chargingCapacityTotal = chargingCapacityTotal.add(tChargingOrder.getChargingCapacity()); } // 累加优惠金额 if (tChargingOrder.getCouponDiscountAmount()!=null){ discountTotal = discountTotal.add(tChargingOrder.getCouponDiscountAmount()); } if (tChargingOrder.getVipDiscountAmount()!=null){ discountTotal = discountTotal.add(tChargingOrder.getVipDiscountAmount()); } } // 将chargingSecond 这是以秒为单位存放的总秒数 将其转化为xx小时xx分钟xx秒 int hours = chargingSecond / 3600; int minutes = (chargingSecond % 3600) / 60; int seconds = chargingSecond % 60; // 格式化为字符串 String timeString = String.format("%d小时%d分钟%d秒", hours, minutes, seconds); chargingBillVO.setChargingTime(timeString); if (chargingBillVO.getPaymentAmount() == null){ chargingBillVO.setPaymentAmount(BigDecimal.ZERO); } chargingBillVO.setOrderAmount(chargingBillVO.getPaymentAmount().subtract(chargingBillVO.getRefundAmount()==null?BigDecimal.ZERO:chargingBillVO.getRefundAmount()) .subtract(chargingBillVO.getCommissionAmount()==null?BigDecimal.ZERO:chargingBillVO.getCommissionAmount()) .subtract(chargingBillVO.getSharingAmount()==null?BigDecimal.ZERO:chargingBillVO.getSharingAmount())); chargingBillListVO.setPaymentAmount(paymentAmount == null?BigDecimal.ZERO:paymentAmount); chargingBillListVO.setOrderAmount(orderAmount == null?BigDecimal.ZERO:orderAmount); chargingBillListVO.setElectrovalence(electrovalence == null?BigDecimal.ZERO:electrovalence); chargingBillListVO.setServiceCharge(serviceCharge == null?BigDecimal.ZERO:serviceCharge); chargingBillListVO.setCommissionAmount(commissionAmount == null?BigDecimal.ZERO:commissionAmount); chargingBillListVO.setSharingAmount(sharingAmount == null?BigDecimal.ZERO:sharingAmount); chargingBillListVO.setChargingCapacity(chargingCapacity == null?BigDecimal.ZERO:chargingCapacity); chargingBillListVO.setBillMoney(chargingBillListVO.getPaymentAmount().subtract(chargingBillListVO.getRefundAmount()==null?BigDecimal.ZERO:chargingBillListVO.getRefundAmount()) .subtract(chargingBillListVO.getCommissionAmount()==null?BigDecimal.ZERO:chargingBillListVO.getCommissionAmount()) .subtract(chargingBillListVO.getSharingAmount()==null?BigDecimal.ZERO:chargingBillListVO.getSharingAmount())); switch (chargingBillListVO.getType()){ case 1: chargingBillListVO.setSiteName("全站"); break; case 2: Site site = siteClient.getSiteByIds(Arrays.asList(chargingBillListVO.getSiteId())).getData().get(0); if (site!=null){ chargingBillListVO.setSiteName(site.getName()); } break; } // 订单数 chargingBillListVO.setOrderCount(tChargingOrders.size()); // 充电时间秒 chargingBillListVO.setChargingSecond(chargingSecond); } chargingBillVO.setChargingCapacity(chargingCapacityTotal); chargingBillVO.setPaymentAmount(paymentAmountTotal); chargingBillVO.setOrderAmount(orderAmountTotal); chargingBillVO.setElectrovalence(electrovalenceTotal); chargingBillVO.setServiceCharge(serviceChargeTotal); chargingBillVO.setOrderCount(orderCount); chargingBillVO.setCommissionAmount(commissionAmountTotal); chargingBillVO.setSharingAmount(sharingAmountTotal); chargingBillVO.setDiscount(discountTotal); pageInfo.setRecords(list); chargingBillVO.setList(pageInfo); return chargingBillVO; } @Override public ChargingBillVO chargingBillList(ChargingListQuery dto) { ChargingBillVO chargingBillVO = new ChargingBillVO(); String startTime1 = null; ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -1384,6 +1384,22 @@ TChargingOrder chargingOrder= this.getById(uid); ChargingOrderListInfoVO chargingOrderListInfoVO = new ChargingOrderListInfoVO(); chargingOrderListInfoVO.setElectrovalence(chargingOrder.getElectrovalence()); chargingOrderListInfoVO.setServiceCharge(chargingOrder.getServiceCharge()); if (chargingOrder.getElectrovalence()!=null && chargingOrder.getServiceCharge()!=null){ chargingOrderListInfoVO.setTotal(chargingOrder.getElectrovalence().add(chargingOrder.getServiceCharge())); }else{ chargingOrderListInfoVO.setTotal(new BigDecimal("0")); } if (chargingOrderListInfoVO.getTotal().compareTo(new BigDecimal("0"))>0){ if (chargingOrder.getCouponDiscountAmount()!=null&& chargingOrder.getVipDiscountAmount()!=null&& chargingOrder.getSharingAmount()!=null&& chargingOrder.getCommissionAmount()!=null){ chargingOrderListInfoVO.setRealTotal(chargingOrderListInfoVO.getTotal().subtract(chargingOrder.getCouponDiscountAmount()).subtract(chargingOrder.getVipDiscountAmount()).subtract(chargingOrder.getSharingAmount()).subtract(chargingOrder.getCommissionAmount())); }else{ chargingOrderListInfoVO.setRealTotal(chargingOrderListInfoVO.getTotal()); } }else{ chargingOrderListInfoVO.setRealTotal(new BigDecimal("0")); } chargingOrderListInfoVO.setCode(chargingOrder.getCode()); List<Site> data = siteClient.getSiteByIds(Arrays.asList(chargingOrder.getSiteId())).getData(); if (!data.isEmpty()){ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ChargingOrderListInfoVO.java
@@ -58,6 +58,11 @@ private BigDecimal electrovalence; @ApiModelProperty(value = "累计服务费") private BigDecimal serviceCharge; @ApiModelProperty(value = "充电费用(电费加服务费)") private BigDecimal total; @ApiModelProperty(value = "实收(电费加服务费)-优惠券抵扣 -会员抵扣 - 第三方平台分佣 -平台手续费") private BigDecimal realTotal; @ApiModelProperty(value = "开始时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime startTime; ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingBillMapper.xml
@@ -18,5 +18,23 @@ <if test="req.uid != null and req.uid!=''"> and t1.id = #{req.uid} </if> and t1.billType = 1 </select> <select id="chargingBillList1" resultType="com.ruoyi.order.api.vo.ChargingBillListVO"> select t1.* from t_charging_bill t1 where 1=1 <if test="req.type != null "> and t1.type = #{req.type} </if> <if test="req.state != null "> and t1.status = #{req.state} </if> <if test="startTime1 != null and startTime1!=''"> and (t1.bill_time between #{startTime1} and #{startTime2} </if> <if test="req.uid != null and req.uid!=''"> and t1.id = #{req.uid} </if> and t1.billType = 2 </select> </mapper> ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderInvoiceMapper.xml
@@ -49,6 +49,9 @@ <if test="query.invoicingObjectType != null"> AND toi.invoicing_object_type = #{query.invoicingObjectType} </if> <if test="query.status != null"> AND toi.status = #{query.status} </if> <if test="query.invoiceMaterial != null"> AND toi.invoice_material = #{query.invoiceMaterial} </if> ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java
@@ -9,9 +9,11 @@ import com.ruoyi.other.query.InvoiceTypePageList; import com.ruoyi.other.service.TInvoiceTypeService; import io.swagger.annotations.ApiOperation; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -38,6 +40,18 @@ PageInfo<TInvoiceType> pageInfo = invoiceTypeService.pageList(pageList); return AjaxResult.success(pageInfo); } @ResponseBody @GetMapping("/pageListR") @ApiOperation(value = "获取开票公司和类型列表", tags = {"管理后台-发票管理"}) public R<List<TInvoiceType>> pageListR( String company){ List<TInvoiceType> list = new ArrayList<>(); if (StringUtils.hasLength(company)){ list = invoiceTypeService.lambdaQuery().eq(TInvoiceType::getInvoicingCompany, company).list(); }else{ list = invoiceTypeService.lambdaQuery().list(); } return R.ok(list); } @ResponseBody