diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java index a6422e90a..9ecac4225 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java @@ -174,6 +174,5 @@ public interface TransactionMapper { List getSettlementLogDetailList(@Param("clientOrders") List clientOrders, @Param("client_id") int clientId); List getClientOrderByTransactionTime(JSONObject params); - - List listTransFlowDetail(JSONObject params); + } diff --git a/src/main/java/au/com/royalpay/payment/manage/tradelog/core/TradeLogService.java b/src/main/java/au/com/royalpay/payment/manage/tradelog/core/TradeLogService.java index 954cc6cc5..572edbcc7 100644 --- a/src/main/java/au/com/royalpay/payment/manage/tradelog/core/TradeLogService.java +++ b/src/main/java/au/com/royalpay/payment/manage/tradelog/core/TradeLogService.java @@ -54,4 +54,6 @@ public interface TradeLogService { void exportSettlementLog(TradeLogQuery query, JSONObject partner, HttpServletResponse response); void exportPDFSettlement(TradeLogQuery query, JSONObject partner, HttpServletResponse response); + + void exportExcelAllPartner(TradeLogQuery query, JSONObject partner, HttpServletResponse httpResponse) throws Exception; } 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 ef5de2650..cc3a593cb 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 @@ -673,91 +673,64 @@ public class TradeLogServiceImpl implements TradeLogService { } @Override - public void exportExcel(TradeLogQuery query, JSONObject partner, HttpServletResponse resp) throws Exception { + public void exportExcel(TradeLogQuery query, JSONObject partner, HttpServletResponse response) throws Exception { logger.debug("excel The method======= exportExcel() start......................."); - int client_id = partner.getIntValue("client_id"); - String timezone = partner.getJSONObject("client").getString("timezone"); - JSONObject params = query.toParams(timezone); - clientManager.validateClients(client_id, params); - params.put("client_id", client_id); - List logs = transactionMapper.listTransFlowDetail(params); - - TimeZoneUtils.switchTimeZoneToString(logs, timezone, "dd/MM/yyyy HH:mm:ss", Arrays.asList("transaction_time")); - if (logs.size() > 0) { - OutputStream ous = null; - String transType; - int status; - HSSFWorkbook wb = new HSSFWorkbook(); - 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)); - } - HSSFSheet sheet = null; - JSONObject client = null; - String platformCurrency = PlatformEnvironment.getEnv().getForeignCurrency(); - for (String clientId : clientIdList) { - if ("ALL".equals(clientId)) { - sheet = wb.createSheet(clientId); - } else { - client = clientManager.getClientInfo(Integer.parseInt(clientId)); - sheet = wb.createSheet(client == null ? clientId : 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]); - } - if ("ALL".equals(clientId)) { - for (JSONObject log : logs) { - String login_id = log.getString("login_id"); - if (StringUtils.isNotEmpty(login_id)) { - log.put("order_detail", (StringUtils.isEmpty(log.getString("order_detail")) ? "" : login_id+":"+log.getString("order_detail"))); - }else{ - log.put("order_detail", (StringUtils.isEmpty(log.getString("order_detail")) ? "" : log.getString("order_detail"))); - } - transType = log.getString("trans_type"); - if (!"refund".equals(transType)) { - status = log.getIntValue("status"); - if (status == 6) - transType = "Partly " + transType; - else if (status == 7) { - transType = "Fully " + transType; - } - } - log.put("trans_type", transType); - scaleDecimalVal(log, "display_amount", platformCurrency); - scaleDecimalVal(log, "transaction_amount", platformCurrency); - scaleDecimalVal(log, "clearing_amount", platformCurrency); - row = sheet.createRow(++rowNum); - excelTrans(row, log); - } - } else { - List logsByClientId = logs.stream().filter(log -> log.getString("client_id").equals(clientId)).collect(Collectors.toList()); - for (JSONObject log : logsByClientId) { - row = sheet.createRow(++rowNum); - excelTrans(row, log); + JSONObject transFlow = listPartnerTransFlow(query, partner); + // JSONObject analysis = transFlow.getJSONObject("analysis"); + if (transFlow.getJSONArray("data").size() > 0) { + 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; } + 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")); } - } - resp.setContentType("application/octet-stream;"); - resp.addHeader("Content-Disposition", - "attachment; filename=" + "Merchant_Settlement_Info_" + query.getDatefrom() + "_" + query.getDateto() + ".xls"); - ous = resp.getOutputStream(); - try { - wb.write(ous); - ous.close(); + 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) { e.printStackTrace(); } + } } @@ -1373,4 +1346,97 @@ public class TradeLogServiceImpl implements TradeLogService { e.printStackTrace(); } } + + @Override + public void exportExcelAllPartner(TradeLogQuery query, JSONObject partner, HttpServletResponse resp) throws Exception { + logger.debug("excel The method======= exportExcel() start......................."); + int client_id = partner.getIntValue("client_id"); + String timezone = partner.getJSONObject("client").getString("timezone"); + JSONObject params = query.toParams(timezone); + clientManager.validateClients(client_id, params); + params.put("client_id", client_id); + List logs = transactionMapper.listTransFlow(params); + + TimeZoneUtils.switchTimeZoneToString(logs, timezone, "dd/MM/yyyy HH:mm:ss", Arrays.asList("transaction_time")); + if (logs.size() > 0) { + OutputStream ous = null; + String transType; + int status; + HSSFWorkbook wb = new HSSFWorkbook(); + 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)); + } + HSSFSheet sheet = null; + JSONObject client = null; + JSONObject device = null; + String platformCurrency = PlatformEnvironment.getEnv().getForeignCurrency(); + for (String clientId : clientIdList) { + if ("ALL".equals(clientId)) { + sheet = wb.createSheet(clientId); + } else { + client = clientManager.getClientInfo(Integer.parseInt(clientId)); + sheet = wb.createSheet(client == null ? clientId : 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]); + } + if ("ALL".equals(clientId)) { + for (JSONObject log : logs) { + String login_id = log.getString("login_id"); + if (StringUtils.isNotEmpty(login_id)) { + log.put("order_detail", (StringUtils.isEmpty(log.getString("order_detail")) ? "" : login_id+":"+log.getString("order_detail"))); + }else{ + log.put("order_detail", (StringUtils.isEmpty(log.getString("order_detail")) ? "" : log.getString("order_detail"))); + } + transType = log.getString("trans_type"); + if ("refund".equals(transType)) { + status = log.getIntValue("status"); + if (status == 6) + transType = "Partly " + transType; + else if (status == 7) { + transType = "Fully " + transType; + } + log.put("trans_type", transType); + device = clientDeviceMapper.find(log.getString("order_dev_id")); + if (device != null) + log.put("dev_id", device.getString("client_dev_id")); + } + scaleDecimalVal(log, "display_amount", platformCurrency); + scaleDecimalVal(log, "transaction_amount", platformCurrency); + scaleDecimalVal(log, "clearing_amount", platformCurrency); + row = sheet.createRow(++rowNum); + excelTrans(row, log); + } + } else { + List logsByClientId = logs.stream().filter(log -> log.getString("client_id").equals(clientId)).collect(Collectors.toList()); + for (JSONObject log : logsByClientId) { + row = sheet.createRow(++rowNum); + excelTrans(row, log); + } + } + } + resp.setContentType("application/octet-stream;"); + resp.addHeader("Content-Disposition", + "attachment; filename=" + query.getDatefrom() + "_" + query.getDateto() + ".xls"); + ous = resp.getOutputStream(); + try { + wb.write(ous); + ous.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } } diff --git a/src/main/java/au/com/royalpay/payment/manage/tradelog/web/TradeFlowController.java b/src/main/java/au/com/royalpay/payment/manage/tradelog/web/TradeFlowController.java index fef98d397..fcaa29b04 100644 --- a/src/main/java/au/com/royalpay/payment/manage/tradelog/web/TradeFlowController.java +++ b/src/main/java/au/com/royalpay/payment/manage/tradelog/web/TradeFlowController.java @@ -71,4 +71,8 @@ public class TradeFlowController { tradeLogService.exportPDFSettlement(query, partner, response); } + @PartnerMapping(value = "/report/excel_detail_all", method = RequestMethod.GET) + public void exportExcelDetailAllPartner(TradeLogQuery query, @ModelAttribute(CommonConsts.PARTNER_STATUS) JSONObject partner, HttpServletResponse httpResponse) throws Exception { + tradeLogService.exportExcelAllPartner(query,partner,httpResponse); + } } 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 23b2f5ecf..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 @@ - - diff --git a/src/main/resources/jasper/trans_excel.jasper b/src/main/resources/jasper/trans_excel.jasper index 4a5fa401f..51c5ed6fc 100644 Binary files a/src/main/resources/jasper/trans_excel.jasper and b/src/main/resources/jasper/trans_excel.jasper differ diff --git a/src/main/ui/static/payment/tradelog/templates/balance_report.html b/src/main/ui/static/payment/tradelog/templates/balance_report.html index 91feaa526..bdaca8d6d 100644 --- a/src/main/ui/static/payment/tradelog/templates/balance_report.html +++ b/src/main/ui/static/payment/tradelog/templates/balance_report.html @@ -175,6 +175,7 @@
  • PDF
  • EXCEL
  • EXCEL(Detail)
  • +
  • EXCEL(All Partner Detail)
  • diff --git a/src/main/ui/static/payment/tradelog/transflow.js b/src/main/ui/static/payment/tradelog/transflow.js index 8f7f29714..9b83f39cb 100644 --- a/src/main/ui/static/payment/tradelog/transflow.js +++ b/src/main/ui/static/payment/tradelog/transflow.js @@ -110,6 +110,9 @@ define(['angular', 'uiBootstrap', 'uiRouter'], function (angular) { if (type=='excel_detail'){ url='/client/trans_flow/report/excel_detail'; } + if (type=='excel_detail_all'){ + url='/client/trans_flow/report/excel_detail_all'; + } var connectSymbol = '?'; var params = angular.copy($scope.params); if (params.clearing_status) {