From b5287202ae5f4aad48ae286558bd4404bdfab187 Mon Sep 17 00:00:00 2001 From: yangkai Date: Thu, 24 Jan 2019 13:02:29 +0800 Subject: [PATCH] fix --- .../mappers/payment/TransactionMapper.java | 3 +- .../manage/tradelog/core/TradeLogService.java | 2 + .../core/impls/TradeLogServiceImpl.java | 224 ++++++++++++------ .../tradelog/web/TradeFlowController.java | 4 + .../mappers/payment/TransactionMapper.xml | 89 +------ src/main/resources/jasper/trans_excel.jasper | Bin 48553 -> 51050 bytes .../tradelog/templates/balance_report.html | 1 + .../ui/static/payment/tradelog/transflow.js | 3 + 8 files changed, 159 insertions(+), 167 deletions(-) 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 4a5fa401f4cb227302bbc3c1b46681e197e51bba..51c5ed6fcfd03f512b349050ee29edcf1c328eae 100644 GIT binary patch literal 51050 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
  • 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) {