From 516a5014dc1cc20a03ab386a2b658eaf21b6fa8f Mon Sep 17 00:00:00 2001 From: yangkai Date: Tue, 15 Jan 2019 17:38:02 +0800 Subject: [PATCH] =?UTF-8?q?fix=E5=AF=BC=E5=87=BA=E5=95=86=E6=88=B7?= =?UTF-8?q?=E4=BA=A4=E6=98=93=E6=B5=81=E6=B0=B4=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/impls/TradeLogServiceImpl.java | 125 +++++++++++------- .../mappers/payment/TransactionMapper.xml | 3 + 2 files changed, 83 insertions(+), 45 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java index 3b7ca7ca5..0409db451 100644 --- a/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java @@ -672,64 +672,99 @@ public class TradeLogServiceImpl implements TradeLogService { } @Override - public void exportExcel(TradeLogQuery query, JSONObject partner, HttpServletResponse response) throws Exception { + public void exportExcel(TradeLogQuery query, JSONObject partner, HttpServletResponse resp) throws Exception { logger.debug("excel The method======= exportExcel() start......................."); JSONObject transFlow = listPartnerTransFlow(query, partner); // JSONObject analysis = transFlow.getJSONObject("analysis"); if (transFlow.getJSONArray("data").size() > 0) { + OutputStream ous = null; try { List dataList = (List) transFlow.get("data"); String transType; JSONObject device; int status; - for (JSONObject data : dataList) { - transType = data.getString("trans_type"); - if (!"refund".equals(transType)) - continue; - status = data.getIntValue("status"); - if (status == 6) - transType = "Partly " + transType; - else if (status == 7) { - transType = "Fully " + transType; + resp.setContentType("application/octet-stream;"); + resp.addHeader("Content-Disposition", + "attachment; filename=" + "Merchant_Settlement_Info_" + query.getDatefrom() + "_" + query.getDateto() + ".xlsx"); + ous = resp.getOutputStream(); + Workbook wb = new XSSFWorkbook(); + Font font = wb.createFont(); + font.setBoldweight(Font.BOLDWEIGHT_BOLD); + font.setFontHeightInPoints((short) 10); + CellStyle analysisStyle = wb.createCellStyle(); + analysisStyle.setFont(font); + String[] clientIds = query.getClient_ids(); + List clientIdList = new ArrayList<>(); + clientIdList.add("ALL"); + if (clientIds.length >= 2) { + clientIdList.addAll(Arrays.asList(clientIds)); + } + Sheet sheet = null; + JSONObject client = null; + for (int i = 0;i < clientIdList.size();i++) { + if (i == 0) { + sheet = wb.createSheet("ALL"); + } else { + client = clientManager.getClientInfo(Integer.parseInt(clientIdList.get(i))); + sheet = wb.createSheet(client == null ? clientIdList.get(i) : client.getString("client_moniker")); + } + int rowNum = 0; + Row row = sheet.createRow(rowNum); + String[] title = {"Transaction Time", "Client Order ID", "System Order ID", "Client Moniker", "Short Name", "Order ID", "Channel", "Input Amount", "Transaction Amount", "Transaction Currency", "Clearing Amount", "Exchange Rate", + "Transaction Type", "Clearing Status", "Gateway", "Remark", "Dev No"}; + for (int j = 0; j < title.length; j++) { + row.createCell(j, Cell.CELL_TYPE_STRING).setCellValue(title[j]); + } + String platformCurrency = PlatformEnvironment.getEnv().getForeignCurrency(); + for (JSONObject data : dataList) { + if (!clientIdList.get(i).equals(data.getString("client_id")) && i != 0) { + continue; + } + if (i == 0) { + transType = data.getString("trans_type"); + if (!"refund".equals(transType)) { + status = data.getIntValue("status"); + if (status == 6) + transType = "Partly " + transType; + else if (status == 7) { + transType = "Fully " + transType; + } + } + data.put("trans_type", transType); + device = clientDeviceMapper.find(data.getString("order_dev_id")); + if (device != null) + data.put("dev_id", device.getString("client_dev_id")); + scaleDecimalVal(data, "display_amount", platformCurrency); + scaleDecimalVal(data, "transaction_amount", platformCurrency); + scaleDecimalVal(data, "clearing_amount", platformCurrency); + } + row = sheet.createRow(++rowNum); + row.createCell(0, Cell.CELL_TYPE_STRING).setCellValue(data.getString("transaction_time")); + row.createCell(1, Cell.CELL_TYPE_STRING).setCellValue(data.getString("client_order_id")); + row.createCell(2, Cell.CELL_TYPE_STRING).setCellValue(data.getString("system_transaction_id")); + row.createCell(3, Cell.CELL_TYPE_STRING).setCellValue(data.getString("client_moniker")); + row.createCell(4, Cell.CELL_TYPE_STRING).setCellValue(data.getString("short_name")); + row.createCell(5, Cell.CELL_TYPE_STRING).setCellValue(data.getString("order_id")); + row.createCell(6, Cell.CELL_TYPE_STRING).setCellValue(data.getString("channel")); + row.createCell(7, Cell.CELL_TYPE_STRING).setCellValue(data.getString("display_amount")); + row.createCell(8, Cell.CELL_TYPE_STRING).setCellValue(data.getString("transaction_amount")); + row.createCell(9, Cell.CELL_TYPE_STRING).setCellValue(data.getString("currency")); + row.createCell(10, Cell.CELL_TYPE_STRING).setCellValue(data.getString("clearing_amount")); + row.createCell(11, Cell.CELL_TYPE_STRING).setCellValue(data.getString("trans_type").equals("clearing")?"-":data.getBigDecimal("exchange_rate").toString()); + row.createCell(12, Cell.CELL_TYPE_STRING).setCellValue(data.getString("trans_type")); + row.createCell(13, Cell.CELL_TYPE_STRING).setCellValue(data.getString("clear_status")); + row.createCell(14, Cell.CELL_TYPE_STRING).setCellValue(data.getString("gateway")); + row.createCell(15, Cell.CELL_TYPE_STRING).setCellValue(data.getString("order_detail")); + row.createCell(16, Cell.CELL_TYPE_STRING).setCellValue(data.getString("dev_id")); } - data.put("trans_type", transType); - device = clientDeviceMapper.find(data.getString("order_dev_id")); - if (device != null) - data.put("dev_id", device.getString("client_dev_id")); } - JSONObject parmerters = new JSONObject(); - parmerters.put("dateFrom", StringUtils.isNotBlank(query.getDatefrom()) ? query.getDatefrom() : ""); - parmerters.put("dateTo", StringUtils.isNotBlank(query.getDateto()) ? query.getDateto() : DateFormatUtils.format(new Date(), "yyyyMMdd")); - parmerters.put("partnerCode", partner.getString("client_moniker")); - // parmerters.put("actual_fee", analysis.containsKey("actual_fee") ? - // analysis.getBigDecimal("actual_fee") : 0); - JRDataSource jrDataSource = new JRBeanCollectionDataSource(dataList); - response.setContentType("application/vnd.ms-excel"); - String fileName = StringUtils.isEmpty(parmerters.getString("dateFrom")) ? parmerters.getString("dateTo") - : (parmerters.getString("dateFrom") + "~" + parmerters.getString("dateTo")); - // String fileName = new String(URLEncoder.encode(defaultname,"utf8")); - response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); - OutputStream outputStream = response.getOutputStream(); - JasperPrint jasperPrint = JasperFillManager.fillReport(trans_excel.getInputStream(), parmerters, jrDataSource); - // JRXlsExporter exporter = new JRXlsExporter(); - JRXlsxExporter exporter = new JRXlsxExporter(); - ExporterInput exporterInput = new SimpleExporterInput(jasperPrint); - exporter.setExporterInput(exporterInput); - OutputStreamExporterOutput exporterOutput = new SimpleOutputStreamExporterOutput(outputStream); - exporter.setExporterOutput(exporterOutput); - // 设置导出时参数 - SimpleXlsxReportConfiguration xlsReportConfiguration = new SimpleXlsxReportConfiguration(); - xlsReportConfiguration.setOnePagePerSheet(false); - xlsReportConfiguration.setRemoveEmptySpaceBetweenRows(true); - xlsReportConfiguration.setDetectCellType(true); - xlsReportConfiguration.setWhitePageBackground(false); - exporter.setConfiguration(xlsReportConfiguration); - exporter.exportReport(); - outputStream.close(); - } catch (Exception e) { + wb.write(ous); + ous.flush(); + } catch (IOException e) { e.printStackTrace(); + } finally { + IOUtils.closeQuietly(ous); } - } } diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml index 29f9ebe76..4572cdea4 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml @@ -58,6 +58,8 @@