ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/ChargingListQuery.java
@@ -1,6 +1,7 @@ package com.ruoyi.order.api.model; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountListVO.java
@@ -14,15 +14,17 @@ @ApiModel(value = "ChargingBillListVO对象",description = "充电算帐单列表VO") public class AccountListVO{ @ApiModelProperty(value = "账单数量") private String billCount; private Integer billCount; @ApiModelProperty(value = "总入账金额") private BigDecimal totalAmount; @ApiModelProperty(value = "总支付结算金额") private BigDecimal paymentAmount; @ApiModelProperty(value = "总退款结算金额") private BigDecimal orderAmount; private BigDecimal refundAmount; @ApiModelProperty(value = "平台手续费") private BigDecimal commissionAmount; @ApiModelProperty(value = "分佣") private BigDecimal sharingAmount; @ApiModelProperty(value = "列表数据") private PageInfo<ChargingBillListVO> list; ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillListVO.java
@@ -34,7 +34,6 @@ private BigDecimal serviceCharge; @ApiModelProperty(value = "平台手续费") private BigDecimal commissionAmount; @ApiModelProperty(value = "充电电流 度") private BigDecimal chargingCapacity; } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillVO.java
@@ -18,6 +18,8 @@ private BigDecimal paymentAmount; @ApiModelProperty(value = "订单总金额") private BigDecimal orderAmount; @ApiModelProperty(value = "总退款金额") private BigDecimal refundAmount; @ApiModelProperty(value = "累计电费") private BigDecimal electrovalence; @ApiModelProperty(value = "累计服务费") ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
@@ -1,6 +1,8 @@ package com.ruoyi.chargingPile.controller; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.chargingPile.api.model.TParkingLot; @@ -10,15 +12,30 @@ import com.ruoyi.chargingPile.api.vo.TParkingRecordPageInfoVO; import com.ruoyi.chargingPile.api.vo.TParkingRecordVO; import com.ruoyi.chargingPile.dto.ParkingRecordPageQuery; import com.ruoyi.chargingPile.export.TParkingRecordExport; import com.ruoyi.chargingPile.service.TParkingLotService; import com.ruoyi.chargingPile.service.TParkingRecordService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.WebUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.order.api.query.TOrderInvoiceQuery; import com.ruoyi.order.api.vo.TOrderInvoiceVO; import io.swagger.annotations.ApiOperation; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; /** * <p> @@ -58,7 +75,50 @@ public R<TParkingRecordPageInfoVO> pageList(@RequestBody ParkingRecordQuery query) { return R.ok(parkingRecordService.pageList(query)); } @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "导出") @PutMapping("/export") public void export(@RequestBody ParkingRecordQuery query) { List<TParkingRecordVO> records = parkingRecordService.pageList(query).getParkingRecordVOS().getRecords(); List<TParkingRecordExport> orderInvoiceExports = new ArrayList<>(); for (TParkingRecordVO orderInvoiceVO : records) { TParkingRecordExport orderInvoiceExport = new TParkingRecordExport(); BeanUtils.copyProperties(orderInvoiceVO,orderInvoiceExport); if (orderInvoiceVO.getFreeDuration()!=null){ orderInvoiceExport.setParkingDuration(orderInvoiceVO.getParkingDuration()-orderInvoiceVO.getFreeDuration()); }else{ orderInvoiceExport.setParkingDuration(orderInvoiceVO.getParkingDuration()); } if (orderInvoiceVO.getTimeoutAmount()!=null){ orderInvoiceExport.setAmount(orderInvoiceVO.getOrderAmount().subtract(orderInvoiceVO.getTimeoutAmount())); }else{ orderInvoiceExport.setAmount(orderInvoiceVO.getOrderAmount()); } orderInvoiceExports.add(orderInvoiceExport); } Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TParkingRecordExport.class, orderInvoiceExports); HttpServletResponse response = WebUtils.response(); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); ServletOutputStream outputStream = null; try { String fileName = URLEncoder.encode("停车记录.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(tags = {"后台-订单管理-停车记录"},value = "详情") @GetMapping(value = "/detail") public R<TParkingRecord> detail(Long id) { ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/export/TParkingRecordExport.java
New file @@ -0,0 +1,41 @@ package com.ruoyi.chargingPile.export; import cn.afterturn.easypoi.excel.annotation.Excel; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; @Data @ApiModel(value = "导出充电算帐单-导出") public class TParkingRecordExport implements Serializable { @Excel(name = "账单编号",width = 30) private String code; @Excel(name = "站点名称",width = 30) private String siteName; @Excel(name = "出场时间",width = 30) private String outParkingTime; @Excel(name = "进场时间",width = 30) private String inParkingTime; @Excel(name = "车牌号",width = 30) private String licensePlate; @Excel(name = "车辆颜色",width = 30) private String vehicleColor; @Excel(name = "总费用",width = 30) private BigDecimal orderAmount; @Excel(name = "超时占位费",width = 30) private BigDecimal timeoutAmount; @Excel(name = "停车费",width = 30) private BigDecimal amount; @Excel(name = "免费时长(分钟)",width = 30) private Integer freeDuration; @Excel(name = "停车总时长(分钟)",width = 30) private Integer parkingDuration; @Excel(name = "收费时长(分钟)",width = 30) private Integer payDuration; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
@@ -72,6 +72,17 @@ public R<AccountListVO> accountBillList(@RequestBody ChargingListQuery dto) { AccountListVO accountListVO = new AccountListVO(); ChargingBillVO res = chargingBillService.chargingBillList(dto); dto.setPageCurr(1); dto.setPageSize(99999999); ChargingBillVO res1 = chargingBillService.chargingBillList(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.setPaymentAmount(res1.getPaymentAmount()); accountListVO.setRefundAmount(res1.getRefundAmount()); accountListVO.setCommissionAmount(res1.getCommissionAmount()); accountListVO.setSharingAmount(res1.getSharingAmount()); accountListVO.setList(res.getList()); return R.ok(accountListVO); } @PostMapping(value = "/chargingBillList") ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java
@@ -80,6 +80,7 @@ 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 = ""; @@ -243,6 +244,9 @@ 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());