Ver Fonte

导出支付记录

fulonglong há 2 anos atrás
pai
commit
adc5fbd62d

+ 16 - 0
pom.xml

@@ -231,6 +231,22 @@
             <artifactId>httpmime</artifactId>
             <version>4.5.10</version>
         </dependency>
+        <!-- 导入和导出-->
+        <dependency>
+            <groupId>cn.afterturn</groupId>
+            <artifactId>easypoi-base</artifactId>
+            <version>4.4.0</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.afterturn</groupId>
+            <artifactId>easypoi-web</artifactId>
+            <version>4.4.0</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.afterturn</groupId>
+            <artifactId>easypoi-annotation</artifactId>
+            <version>4.4.0</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 29 - 0
src/main/java/com/charging/chargingparking/dto/PayDTO.java

@@ -0,0 +1,29 @@
+package com.charging.chargingparking.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author 墨鱼_mo
+ * @date 2022/8/10 0010 上午 10:53
+ */
+@Data
+public class PayDTO {
+
+    @Excel(name = "车牌", height = 8, width = 13, isImportField = "true")
+    private String carNum;
+    @Excel(name = "停车场", height = 8, width = 13, isImportField = "true")
+    private String  parkingName;
+    @Excel(name = "支付时间", height = 8, width = 13, isImportField = "true")
+    private String payTimeStr;
+    @Excel(name = "应付金额", height = 8, width = 13, isImportField = "true")
+    private BigDecimal  payAmount;
+    @Excel(name = "已付金额", height = 8, width = 13, isImportField = "true")
+    private BigDecimal actualPayAmount;
+    @Excel(name = "支付方式", height = 8, width = 13, isImportField = "true")
+    private String  payNameStr;
+
+}

+ 91 - 0
src/main/java/com/charging/chargingparking/modules/backController/BackParkingPayController.java

@@ -1,8 +1,13 @@
 package com.charging.chargingparking.modules.backController;
 
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.io.resource.ClassPathResource;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.charging.chargingparking.dto.MessageResult;
+import com.charging.chargingparking.dto.PayDTO;
 import com.charging.chargingparking.dto.PojoUtils;
 import com.charging.chargingparking.entity.ParkingInfo;
 import com.charging.chargingparking.entity.ParkingPay;
@@ -14,13 +19,19 @@ import com.charging.chargingparking.service.ParkingRecordService;
 import com.charging.chargingparking.service.ParkingUserRelationService;
 import com.charging.chargingparking.sys.service.UserService;
 import com.charging.chargingparking.utils.StringUtils;
+import com.google.common.collect.Maps;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -169,6 +180,86 @@ public class BackParkingPayController {
         return msgResult;
     }
 
+    @ApiOperation(value = "导出支付记录")
+    @GetMapping(value = "exportPayList")
+    public void exportPayList(
+            String carNum, String payTimeRange, String parkingName, HttpServletResponse response,
+            @RequestAttribute String subject) {
+        Map<String, Object> searchParams = new HashMap<>();
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("a.create_time", "desc"));
+        if (StringUtils.isNotEmpty(carNum)) {
+            searchParams.put("carNum", "%" + carNum + "%");
+        }
+        if (StringUtils.isNotEmpty(parkingName)) {
+            searchParams.put("parkingName", parkingName);
+        }
+        if (StringUtils.isNotEmpty(payTimeRange)) {
+            String[] timeRangeArray = payTimeRange.split(",");
+            String startTime = "";
+            String endTime = "";
+            if (timeRangeArray.length == 1) {
+                startTime = timeRangeArray[0];
+                //startTime += " 00:00:00";
+            } else if (timeRangeArray.length == 2) {
+                startTime = timeRangeArray[0];
+                endTime = timeRangeArray[1];
+                //startTime += " 00:00:00";
+                //endTime += " 23:59:59";
+            }
+
+            searchParams.put("pay_time_start", startTime);
+            searchParams.put("pay_time_end", endTime);
+        }
+
+        if(!userService.hasRole(subject,"SYSADMIN")) {
+            searchParams.put("filterParkingList", parkingUserRelationService.findByUserId(subject));
+        }
+
+        com.github.pagehelper.Page<ParkingPay> page = parkingPayService.pageSearch(searchParams, 1, 100000, sortList);
+
+        List<ParkingPay> parkingPayList = page.getResult();
+        List<PayDTO> exportList = new ArrayList<>();
+        if (parkingPayList.size()>0){
+            for (ParkingPay parkingPay : parkingPayList){
+                PayDTO payDTO = new PayDTO();
+                BeanUtils.copyProperties(parkingPay,payDTO);
+                payDTO.setActualPayAmount(parkingPay.getPayAmount());
+                if ("wechat".equals(parkingPay.getPayName())){
+                    payDTO.setPayNameStr("微信");
+                }
+                if ("alipay".equals(parkingPay.getPayName())){
+                    payDTO.setPayNameStr("支付宝");
+                }
+                payDTO.setPayTimeStr(DateUtil.format(parkingPay.getPayTime(),"yyyy-MM-dd HH:mm:ss"));
+                exportList.add(payDTO);
+            }
+        }
+
+
+
+        Map map = Maps.newHashMap();
+        map.put("list", exportList);
+        //获取导出模板地址
+        ClassPathResource classPathResource = new ClassPathResource("static/payExcel.xls");
+        String path = classPathResource.getPath();
+        TemplateExportParams templateExportParams1 = new TemplateExportParams(path);
+        Workbook wb = ExcelExportUtil.exportExcel(templateExportParams1, map);
+        String fileName = "支付记录.xlsx";
+        try {
+            response.setContentType("application/octet-stream;charset=utf-8");
+            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8"));
+            response.flushBuffer();
+            wb.write(response.getOutputStream());
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+    }
+
+
+
+
     @ApiOperation(value = "汇总")
     @RequestMapping(value = "amountSummary", method = RequestMethod.POST)
     public MessageResult<Map> amountSummary(

BIN
src/main/resources/static/payExcel.xls