From 4b26e3b108dff9a96873a66aa20e94096e68e4cb Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期四, 23 一月 2025 18:30:25 +0800
Subject: [PATCH] bug修改
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java | 553 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 500 insertions(+), 53 deletions(-)
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
index cfed3a4..6c2f211 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
@@ -1,29 +1,52 @@
package com.ruoyi.order.controller;
-import com.ruoyi.account.api.feignClient.AppUserCarClient;
-import com.ruoyi.account.api.feignClient.AppUserClient;
-import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient;
-import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient;
-import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient;
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
+import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
+import com.alibaba.nacos.shaded.com.google.common.collect.Maps;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.ruoyi.chargingPile.api.feignClient.SiteClient;
+import com.ruoyi.chargingPile.api.model.Site;
+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.redis.service.RedisService;
-import com.ruoyi.common.security.service.TokenService;
+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.model.*;
+import com.ruoyi.order.api.query.TOrderInvoiceQuery;
+import com.ruoyi.order.api.vo.AccountListVO;
+import com.ruoyi.order.api.vo.ChargingBillListVO;
import com.ruoyi.order.api.vo.ChargingBillVO;
-import com.ruoyi.order.api.vo.ChargingOrderTimeVO;
-import com.ruoyi.order.dto.ChargingBillQuery;
-import com.ruoyi.order.dto.ChargingListQuery;
+import com.ruoyi.order.api.vo.TOrderInvoiceVO;
+import com.ruoyi.order.export.*;
import com.ruoyi.order.service.*;
-import com.ruoyi.order.vo.ChargingOrderListInfoVO;
-import com.ruoyi.payment.api.feignClient.AliPaymentClient;
-import com.ruoyi.payment.api.feignClient.WxPaymentClient;
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.beans.factory.annotation.Autowired;
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.math.BigDecimal;
+import java.net.URLEncoder;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.TemporalAdjusters;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
/**
* <p>
@@ -39,53 +62,477 @@
public class ChargingBillController {
@Resource
- private TChargingOrderService chargingOrderService;
- @Autowired
- private TokenService tokenService;
- @Autowired
- private TOrderEvaluateService orderEvaluateService;
-
- @Resource
- private WxPaymentClient wxPaymentClient;
-
- @Resource
- private RedisService redisService;
-
- @Resource
- private AliPaymentClient aliPaymentClient;
- @Resource
- private TShoppingOrderService shoppingOrderService;
-
- @Resource
- private AppUserClient appUserClient;
-
- @Resource
- private TVipOrderService vipOrderService;
- @Resource
- private ParkingLotClient parkingLotClient;
- @Resource
- private TChargingOrderRefundService chargingOrderRefundService;
-
- @Resource
- private TShoppingOrderRefundService shoppingOrderRefundService;
- @Resource
- private TVipOrderRefundService vipOrderRefundService;
+ private TChargingBillService chargingBillService;
@Resource
private SiteClient siteClient;
@Resource
- private ChargingPileClient chargingPileClient;
+ private TChargingOrderService chargingOrderService;
@Resource
- private ChargingGunClient chargingGunClient;
+ private TChargingOrderRefundService tChargingOrderRefundService;
@Resource
- private AppUserCarClient appUserCarClient;
- @Resource
- private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService;
- @ResponseBody
- @PostMapping(value = "/chargingList")
+ private TChargingBillService tChargingBillService;
+ @GetMapping(value = "/test")
+ public R accountAdd() {
+// List<TChargingBill> list = tChargingBillService.lambdaQuery().list();
+// for (TChargingBill tChargingBill : list) {
+// tChargingBill.setStatus(2);
+// }
+// tChargingBillService.updateBatchById(list);
+// List<TChargingOrder> list = chargingOrderService.lambdaQuery().list();
+// for (TChargingOrder chargingOrder : list) {
+// chargingOrder.setSharingAmount(new BigDecimal("0"));
+// List<TChargingOrderRefund> list1 = tChargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getChargingOrderId, chargingOrder.getId()).list();
+// tChargingOrderRefundService.removeBatchByIds(list1);
+// chargingOrderService.removeById(chargingOrder);
+// }
+// chargingOrderService.updateBatchById(list);
+// TChargingBill tChargingBill = new TChargingBill();
+// Random random = new Random();
+// String randomDigits = random.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+// .mapToObj(String::valueOf)
+// .collect(Collectors.joining()); // 将其连接成一个字符串
+// tChargingBill.setCode("JSD"+randomDigits );
+// tChargingBill.setType(1);
+// tChargingBill.setSiteId(0);
+// tChargingBill.setBillTime(LocalDateTime.now().plusDays(1));
+// tChargingBill.setStatus(1);
+// tChargingBill.setOrderState(2);
+// tChargingBill.setBillType(1);
+// chargingBillService.save(tChargingBill);
+// TChargingBill tChargingBill1 = new TChargingBill();
+// Random random1 = new Random();
+// String randomDigits1 = random1.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+// .mapToObj(String::valueOf)
+// .collect(Collectors.joining()); // 将其连接成一个字符串
+// tChargingBill1.setCode("JSD"+randomDigits1);
+// tChargingBill1.setType(2);
+// tChargingBill1.setSiteId(13);
+// tChargingBill1.setBillTime(LocalDateTime.now().plusDays(1));
+// tChargingBill1.setStatus(1);
+// tChargingBill1.setOrderState(2);
+// tChargingBill1.setBillType(1);
+// chargingBillService.save(tChargingBill1);
+//
+// TChargingBill tChargingBil3 = new TChargingBill();
+// Random random2 = new Random();
+// String randomDigits2 = random2.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+// .mapToObj(String::valueOf)
+// .collect(Collectors.joining()); // 将其连接成一个字符串
+// tChargingBil3.setCode("JSD"+randomDigits2 );
+// tChargingBil3.setType(1);
+// tChargingBil3.setSiteId(0);
+// tChargingBil3.setBillTime(LocalDateTime.now().plusDays(1));
+// tChargingBil3.setStatus(1);
+// tChargingBil3.setOrderState(2);
+// tChargingBil3.setBillType(2);
+// chargingBillService.save(tChargingBil3);
+// TChargingBill tChargingBill14 = new TChargingBill();
+// Random random3 = new Random();
+// String randomDigits3 = random3.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+// .mapToObj(String::valueOf)
+// .collect(Collectors.joining()); // 将其连接成一个字符串
+// tChargingBill14.setCode("JSD"+randomDigits3);
+// tChargingBill14.setType(2);
+// tChargingBill14.setSiteId(13);
+// tChargingBill14.setBillTime(LocalDateTime.now().plusDays(1));
+// tChargingBill14.setStatus(1);
+// tChargingBill14.setOrderState(2);
+// tChargingBill14.setBillType(2);
+// chargingBillService.save(tChargingBill14);
+ return R.ok();
+ }
+
+
+ @RequiresPermissions(value = {"/accountSettlementStatement"}, logical = Logical.OR)
+ @PostMapping(value = "/accountBillList")
+ @ApiOperation(value = "列表查询", tags = {"管理后台-账户结算账单"})
+ public R<AccountListVO> accountBillList(@RequestBody ChargingListQuery dto) {
+ AccountListVO accountListVO = new AccountListVO();
+ ChargingBillVO res = chargingBillService.chargingBillList1(dto);
+ List<ChargingBillListVO> records = res.getList().getRecords();
+ accountListVO.setBillCount(records.size());
+ accountListVO.setTotalAmount(res.getPaymentAmount().subtract(res.getRefundAmount()).subtract(res.getCommissionAmount()).subtract(res.getSharingAmount()).setScale(2, BigDecimal.ROUND_DOWN));
+ accountListVO.setPaymentAmount(res.getPaymentAmount().setScale(2, BigDecimal.ROUND_DOWN));
+ accountListVO.setRefundAmount(res.getRefundAmount().setScale(2, BigDecimal.ROUND_DOWN));
+ accountListVO.setCommissionAmount(res.getCommissionAmount().setScale(2, BigDecimal.ROUND_DOWN));
+ accountListVO.setSharingAmount(res.getSharingAmount().setScale(2, BigDecimal.ROUND_DOWN));
+ accountListVO.setList(res.getList());
+ accountListVO.setOrderList(res.getExportList());
+ return R.ok(accountListVO);
+ }
+
+ @RequiresPermissions(value = {"/chargeBill"}, logical = Logical.OR)
+ @PostMapping(value = "/chargingBillList")
@ApiOperation(value = "充电算帐单列表查询", tags = {"管理后台-充电算账单"})
- public AjaxResult<ChargingBillVO> chargingList(@RequestBody ChargingListQuery dto) {
+ public AjaxResult<ChargingBillVO> chargingBillList(@RequestBody ChargingListQuery dto) {
+ ChargingBillVO res = chargingBillService.chargingBillList(dto);
+ return AjaxResult.success(res);
+ }
+ @PostMapping(value = "/chargingBillListR")
+ public R<ChargingBillVO> chargingBillListR(@RequestBody ChargingListQuery dto) {
+ ChargingBillVO res = chargingBillService.chargingBillList(dto);
+ return R.ok(res);
+ }
+ @GetMapping(value = "/chargingBillListExport")
+ public R<ChargingBillVO> chargingBillListExport(String uid) {
+ return R.ok(null);
+ }
+
+
+ @RequiresPermissions(value = {"/chargeBill/export"}, logical = Logical.OR)
+ @ApiOperation(value = "导出", tags = {"管理后台-充电算账单"})
+ @PutMapping("/export")
+ public void export(@RequestBody ChargingListQuery dto)
+ {
- return AjaxResult.success(null);
+ ChargingBillVO res = chargingBillService.chargingBillList(dto);
+ List<ChargingBillListVO> list = res.getList().getRecords();
+ List<TChargingBillExport> tChargingBillExports = new ArrayList<>();
+ for (ChargingBillListVO orderInvoiceVO : list) {
+ TChargingBillExport tChargingBillExport = new TChargingBillExport();
+ tChargingBillExport.setCode(orderInvoiceVO.getCode());
+ tChargingBillExport.setBillType("月账单");
+ 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();
+ }
+ }
+ }
+
+
+ @RequiresPermissions(value = {"/accountSettlementStatement/export"}, logical = Logical.OR)
+ @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)
+ {
+ List<ChargingBillExport> chargingBillExports = new ArrayList<>();
+ List<ChargingBillRefundExport> chargingBillRefundExports = new ArrayList<>();
+ List<ChargingBillPayExport> chargingBillPayExports = new ArrayList<>();
+ TChargingBill byId = chargingBillService.getById(uid.getUid());
+ ChargingBillExport chargingBillExport = new ChargingBillExport();
+ chargingBillExport.setCode(byId.getCode());
+ chargingBillExport.setAccountType("微信商户");
+ chargingBillExport.setType(byId.getType().toString());
+ LocalDateTime billTime = byId.getBillTime();
+ // 将billTime 减去一个月 转化为yyyy-MM格式字符串
+ billTime = billTime.minusMonths(1);
+ chargingBillExport.setBillWeek(DateUtils.parseDateToStr("yyyy-MM",DateUtils.toDate(billTime)));
+
+ chargingBillExport.setBillTime(DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",DateUtils.toDate(billTime)));
+ List<Site> data = siteClient.getSiteByIds(Arrays.asList(byId.getSiteId())).getData();
+ if (!data.isEmpty()){
+ chargingBillExport.setSiteName(data.get(0).getName());
+ }
+// // 根据账单的出账时间 查询上个月的充电订单
+ LocalDateTime localDate = byId.getBillTime().minusMonths(1);
+// // 账单周期
+// // 获取 LocalDate 对象
+// LocalDate date = localDate.toLocalDate();
+// // 获取该月份的第一天
+// LocalDate firstDayOfMonth = date.withDayOfMonth(1);
+ // 获取 LocalDate 对象
+ LocalDate date = localDate.toLocalDate();
+ // 获取该月份的第一天
+ LocalDate firstDayOfMonth = date.withDayOfMonth(1);
+ // 获取该月份的最后一天
+ LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
+ // 获取该月份的最后一天
+// 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 (byId.getType() == 2) {
+ eq.eq("site_id", byId.getSiteId());
+ }
+ BigDecimal paymentAmount = new BigDecimal("0");
+ BigDecimal refundAmount = new BigDecimal("0");
+ BigDecimal commissionAmount = new BigDecimal("0");
+ BigDecimal sharingAmount = new BigDecimal("0");
+
+ List<TChargingOrder> tChargingOrders = chargingOrderService.list(eq);
+ // 累加支付金额
+ BigDecimal bigDecimal = new BigDecimal("0");
+ BigDecimal bigDecimal1 = new BigDecimal("0.006");
+
+ int i =1;
+ for (TChargingOrder tChargingOrder : tChargingOrders) {
+ // 账单信息
+ paymentAmount = paymentAmount.add(tChargingOrder.getRechargeAmount());
+ commissionAmount = commissionAmount.add(tChargingOrder.getPaymentAmount().multiply(bigDecimal1).setScale(2, BigDecimal.ROUND_DOWN));
+ sharingAmount = sharingAmount.add(tChargingOrder.getSharingAmount()!=null?tChargingOrder.getSharingAmount():new BigDecimal("0"));
+ // 退款信息
+ ChargingBillRefundExport chargingBillRefundExport = new ChargingBillRefundExport();
+ ChargingBillPayExport chargingBillPayExport = new ChargingBillPayExport();
+
+ chargingBillRefundExport.setId(i+"");
+ switch (tChargingOrder.getRechargePaymentType()){
+ case 1:
+ chargingBillRefundExport.setPlatform("微信");
+ chargingBillRefundExport.setPlatformPay("微信小程序支付");
+ chargingBillPayExport.setPlatform("微信");
+ chargingBillPayExport.setPlatformPay("微信小程序支付");
+ break;
+ case 2:
+ chargingBillRefundExport.setPlatform("支付宝");
+ chargingBillRefundExport.setPlatformPay("支付宝小程序支付");
+ chargingBillPayExport.setPlatform("支付宝");
+ chargingBillPayExport.setPlatformPay("支付宝小程序支付");
+
+ }
+ List<TChargingOrderRefund> one1 = tChargingOrderRefundService.lambdaQuery()
+ .eq(TChargingOrderRefund::getChargingOrderId, tChargingOrder.getId())
+ .eq(TChargingOrderRefund::getRefundStatus, 2)
+ .list();
+ for (TChargingOrderRefund one : one1) {
+ refundAmount= refundAmount.add(one.getRefundAmount());
+ chargingBillRefundExport.setRechargeSerialNumber(tChargingOrder.getRechargeSerialNumber());
+ chargingBillRefundExport.setCode(tChargingOrder.getCode());
+ chargingBillRefundExport.setPayTime(tChargingOrder.getCreateTime()!=null?DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",DateUtils.toDate(tChargingOrder.getCreateTime())):"");
+ if (one.getRefundTime()!=null){
+ chargingBillRefundExport.setRefundTime(DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",DateUtils.toDate(one.getRefundTime())));
+ }
+ chargingBillRefundExport.setRefundMoney(one.getRefundAmount().toString());
+ chargingBillRefundExport.setRefundRemark(one.getRefundReason());
+ chargingBillRefundExport.setRefundCode(one.getRefundCode());
+ chargingBillRefundExport.setRefundSerialNumber(one.getRefundSerialNumber());
+ chargingBillRefundExports.add(chargingBillRefundExport);
+ }
+
+ // 支付信息
+ chargingBillPayExport.setId(i+"");
+ chargingBillPayExport.setRechargeSerialNumber(tChargingOrder.getRechargeSerialNumber());
+ chargingBillPayExport.setCode(tChargingOrder.getCode());
+ chargingBillPayExport.setPayTime(tChargingOrder.getPayTime()!=null?DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",DateUtils.toDate(tChargingOrder.getPayTime())):"");
+ chargingBillPayExport.setPaymentAmount(tChargingOrder.getRechargeAmount().toString());
+ chargingBillPayExport.setTotal("");
+ chargingBillPayExports.add(chargingBillPayExport);
+ i++;
+ bigDecimal = bigDecimal.add(tChargingOrder.getRechargeAmount());
+ }
+ if (!chargingBillPayExports.isEmpty()){
+ chargingBillPayExports.get(0).setTotal(bigDecimal+"");
+ }
+ if (byId.getSiteId()==0){
+ chargingBillExport.setSiteName("全站");
+ }else{
+ List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(byId.getSiteId())).getData();
+ if (data1!=null&&(!data1.isEmpty())){
+ String name = data1.get(0).getName();
+ chargingBillExport.setSiteName(name);
+ }
+ }
+ chargingBillExport.setPaymentAmount(paymentAmount);
+ chargingBillExport.setRefundAmount(refundAmount);
+ chargingBillExport.setIncome(paymentAmount.subtract(refundAmount).subtract(commissionAmount)
+ .subtract(sharingAmount).setScale(2, BigDecimal.ROUND_DOWN));
+ chargingBillExports.add(chargingBillExport);
+ // 导出
+ List<Map<String, Object>> sheetsList = new ArrayList<>();
+ for (int i1 = 1; i1 <= 3; i1++) {
+ String sheetName="";
+ switch (i1){
+ case 1:
+ sheetName= "账单信息";
+ Map<String, Object> exportMap = Maps.newHashMap();
+ ExportParams exportParams = new ExportParams(null, sheetName, ExcelType.HSSF);
+ // 以下3个参数为API中写死的参数名 分别是sheet配置/导出类(注解定义)/数据集
+ exportMap.put("title", exportParams);
+ exportMap.put("entity", ChargingBillExport.class);
+ exportMap.put("data", chargingBillExports);
+ // 加入多sheet配置列表
+ sheetsList.add(exportMap);
+ break;
+ case 2:
+ sheetName= "退款订单";
+ Map<String, Object> exportMap1 = Maps.newHashMap();
+ ExportParams exportParams1 = new ExportParams(null, sheetName, ExcelType.HSSF);
+ // 以下3个参数为API中写死的参数名 分别是sheet配置/导出类(注解定义)/数据集
+ exportMap1.put("title", exportParams1);
+ exportMap1.put("entity", ChargingBillRefundExport.class);
+ exportMap1.put("data", chargingBillRefundExports);
+ // 加入多sheet配置列表
+ sheetsList.add(exportMap1);
+ break;
+ case 3:
+ sheetName= "支付记录";
+ Map<String, Object> exportMap2 = Maps.newHashMap();
+ ExportParams exportParams2 = new ExportParams(null, sheetName, ExcelType.HSSF);
+ // 以下3个参数为API中写死的参数名 分别是sheet配置/导出类(注解定义)/数据集
+ exportMap2.put("title", exportParams2);
+ exportMap2.put("entity", ChargingBillPayExport.class);
+ exportMap2.put("data", chargingBillPayExports);
+ // 加入多sheet配置列表
+ sheetsList.add(exportMap2);
+ break;
+ }
+ }
+ if (!chargingBillRefundExports.isEmpty()){
+ ChargingBillRefundExport chargingBillRefundExport = chargingBillRefundExports.get(0);
+ chargingBillRefundExport.setTotal(refundAmount.toString());
+ }
+ if (!chargingBillPayExports.isEmpty()){
+ ChargingBillPayExport chargingBillPayExport = chargingBillPayExports.get(0);
+ chargingBillPayExport.setTotal(refundAmount.toString());
+ }
+ String type="";
+ String type1="";
+ switch (byId.getType()){
+ case 1:
+ type = "全站账单";
+ type1 = "全站";
+ break;
+ case 2:
+ type = "各个站点账单";
+ List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(byId.getSiteId())).getData();
+ if (!data1.isEmpty()){
+ type1 = data.get(0).getName();
+ }
+ break;
+ }
+ String s = DateUtils.parseDateToStr("yyyy-MM", DateUtils.toDate(billTime));
+
+ Workbook workbook = ExcelExportUtil.exportExcel(sheetsList, ExcelType.HSSF);
+ HttpServletResponse response = WebUtils.response();
+ response.setContentType("application/vnd.ms-excel");
+ response.setCharacterEncoding("utf-8");
+ ServletOutputStream outputStream = null;
+ try {
+ String fileName = URLEncoder.encode("账户结算账单-月账单-"+type+"-"+s+"-"+type1+".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();
+ }
+ }
}
}
--
Gitblit v1.7.1