package com.ruoyi.web.controller.api;
|
|
|
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
import com.alibaba.excel.EasyExcel;
|
import com.alibaba.excel.context.AnalysisContext;
|
import com.alibaba.excel.event.AnalysisEventListener;
|
import com.ruoyi.common.basic.PageInfo;
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.utils.WebUtils;
|
import com.ruoyi.system.export.ContractExport;
|
import com.ruoyi.system.importExcel.TBankFlowImportExcel;
|
import com.ruoyi.system.model.TBankFlow;
|
import com.ruoyi.system.query.TBankFlowQuery;
|
import com.ruoyi.system.service.TBankFlowService;
|
import com.ruoyi.system.vo.TBankFlowStatisticsVo;
|
import io.swagger.annotations.ApiOperation;
|
import org.apache.poi.ss.usermodel.Workbook;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.context.request.RequestContextHolder;
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.ServletOutputStream;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.net.URLEncoder;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Vector;
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
/**
|
* <p>
|
* 流水管理 前端控制器
|
* </p>
|
*
|
* @author xiaochen
|
* @since 2025-02-07
|
*/
|
@RestController
|
@RequestMapping("/t-bank-flow")
|
public class TBankFlowController {
|
@Autowired
|
private TBankFlowService flowService;
|
|
/**
|
* 获取流水列表
|
*/
|
@PreAuthorize("@ss.hasPermi('system:bankFlow:list')")
|
@ApiOperation(value = "获取银行流水列表")
|
@PostMapping("/list")
|
public R<PageInfo<TBankFlow>> list(@RequestBody TBankFlowQuery query) {
|
return R.ok(flowService.pageList(query));
|
}
|
|
@ApiOperation(value = "根据支付方式统计流水金额")
|
@PostMapping("/getPaymentStats")
|
public R<TBankFlowStatisticsVo> getPaymentStats(@RequestBody TBankFlowQuery query) {
|
return R.ok(flowService.getPaymentStats(query));
|
}
|
|
@PostMapping("importBankFlow")
|
public void importElectronic(@RequestBody MultipartFile file) {
|
try (
|
InputStream is = file.getInputStream();
|
) {
|
List<TBankFlowImportExcel> failList = new Vector<>();
|
EasyExcel.read(is, TBankFlowImportExcel.class, new AnalysisEventListener<TBankFlowImportExcel>() {
|
private final List<TBankFlowImportExcel> list = new ArrayList<>();
|
final AtomicInteger all = new AtomicInteger();
|
|
@Override
|
public void invoke(TBankFlowImportExcel data, AnalysisContext context) {
|
all.addAndGet(1);
|
boolean isok = data.validate();
|
if (!isok) {
|
failList.add(data);
|
return;
|
}
|
list.add(data);
|
int size = list.size();
|
if (size >= 100) {
|
flowService.saveImportBatch(list, failList);
|
list.clear();
|
}
|
}
|
|
@Override
|
public void doAfterAllAnalysed(AnalysisContext context) {
|
int size = list.size();
|
if (size > 0) {
|
flowService.saveImportBatch(list, failList);
|
}
|
}
|
}).sheet().doRead();
|
// 导出导入结果
|
// ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
// HttpServletResponse response = servletRequestAttributes.getResponse();
|
// response.setContentType("application/vnd.ms-excel;charset=utf-8");
|
// response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
|
// if (failList.size()>0) {
|
// EasyExcel.write(response.getOutputStream(), TBankFlowImportExcel.class).sheet("Sheet1").doWrite(failList);
|
// } else {
|
// TBankFlowImportExcel result = new TBankFlowImportExcel();
|
// result.setResult("全部成功");
|
// failList.add(result);
|
// EasyExcel.write(response.getOutputStream(), TBankFlowImportExcel.class).sheet("Sheet1").doWrite(failList);
|
// }
|
|
|
if (failList.size()==0){
|
TBankFlowImportExcel result = new TBankFlowImportExcel();
|
result.setResult("全部成功");
|
failList.add(result);
|
}
|
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TBankFlowImportExcel.class, failList);
|
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();
|
System.err.println("银行流水返回结果导出失败");
|
} finally {
|
try {
|
outputStream.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
|
|
|
|
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
System.err.println("银行流水返回结果导出失败");
|
}
|
}
|
}
|