package com.ruoyi.order.controller; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; 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.page.PageInfo; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.security.annotation.Logical; import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.order.api.query.CardBalanceDetailQuery; import com.ruoyi.order.api.query.CardChargingOrderQuery; import com.ruoyi.order.api.vo.CardBalanceDetailVO; import com.ruoyi.order.api.vo.ChargingOrderVO; import com.ruoyi.order.export.CardBalanceDetailExport; import com.ruoyi.order.export.CardChargingOrderExport; import com.ruoyi.order.service.TCardChargingOrderService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; @RestController @RequestMapping("/t-card-charging-order") @Api(tags = "管理后台-刷卡充电订单") public class TCardChargingOrderController { @Resource private TCardChargingOrderService cardChargingOrderService; @GetMapping("/list") @ApiOperation("刷卡充电订单列表") public R> list(CardChargingOrderQuery query) { return R.ok(cardChargingOrderService.pageList(query)); } @RequiresPermissions(value = {"/cardChargingOrder/export", "/cardChargingOrder"}, logical = Logical.OR) @PutMapping("/export") @ApiOperation("刷卡充电订单导出") @Log(title = "刷卡充电订单导出", businessType = BusinessType.EXPORT) public void export(@RequestBody CardChargingOrderQuery query) { List list = cardChargingOrderService.exportList(query); List exports = new ArrayList<>(); for (ChargingOrderVO order : list) { CardChargingOrderExport export = new CardChargingOrderExport(); BeanUtils.copyProperties(order, export); export.setStartTime(formatTime(order.getStartTime())); export.setEndTime(formatTime(order.getEndTime())); exports.add(export); } Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), CardChargingOrderExport.class, exports); writeWorkbook(workbook, "刷卡充电订单导出.xls"); } private String formatTime(LocalDateTime time) { return time == null ? "" : DateUtils.localDateTimeToString(time); } private void writeWorkbook(Workbook workbook, String exportFileName) { HttpServletResponse response = WebUtils.response(); response.setCharacterEncoding("utf-8"); ServletOutputStream outputStream = null; try { String fileName = URLEncoder.encode(exportFileName, "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 { workbook.close(); if (outputStream != null) { outputStream.close(); } } catch (IOException e) { e.printStackTrace(); } } } @GetMapping("/summary") @ApiOperation("刷卡充电订单汇总") public R> summary(CardChargingOrderQuery query) { Map summary = cardChargingOrderService.summary(query); return R.ok(summary == null ? Collections.emptyMap() : summary); } @GetMapping("/balance-income-detail") @ApiOperation("刷卡充电订单余额收入明细") public R>> balanceIncomeDetail(CardChargingOrderQuery query) { return R.ok(cardChargingOrderService.balanceIncomeDetail(query)); } @GetMapping("/accounting-strategy") @ApiOperation("刷卡充电订单计费明细") public R> accountingStrategy(@RequestParam("chargingOrderId") Long chargingOrderId) { List> list = cardChargingOrderService.accountingStrategyList(chargingOrderId); return R.ok(Collections.singletonMap("list", list)); } @RequiresPermissions("/chargingCardBalanceDetail/list") @GetMapping("/balance-detail/list") @ApiOperation("卡片收支明细列表") public R> balanceDetailList(CardBalanceDetailQuery query) { return R.ok(cardChargingOrderService.balanceDetailPage(query)); } @RequiresPermissions("/chargingCardBalanceDetail/list") @GetMapping("/balance-detail/summary") @ApiOperation("卡片收支明细汇总") public R> balanceDetailSummary(CardBalanceDetailQuery query) { return R.ok(cardChargingOrderService.balanceDetailSummary(query)); } @RequiresPermissions("/chargingCardBalanceDetail/export") @PutMapping("/balance-detail/export") @ApiOperation("卡片收支明细导出") @Log(title = "卡片收支明细导出", businessType = BusinessType.EXPORT) public void balanceDetailExport(@RequestBody CardBalanceDetailQuery query) { List list = cardChargingOrderService.balanceDetailExport(query); List exports = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { CardBalanceDetailVO detail = list.get(i); CardBalanceDetailExport export = new CardBalanceDetailExport(); BeanUtils.copyProperties(detail, export); export.setSequence(i + 1); export.setOperationTime(formatTime(detail.getOperationTime())); exports.add(export); } Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), CardBalanceDetailExport.class, exports); writeWorkbook(workbook, "卡片收支明细导出.xls"); } }