|
|
@ -672,64 +672,99 @@ public class TradeLogServiceImpl implements TradeLogService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@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.......................");
|
|
|
|
logger.debug("excel The method======= exportExcel() start.......................");
|
|
|
|
JSONObject transFlow = listPartnerTransFlow(query, partner);
|
|
|
|
JSONObject transFlow = listPartnerTransFlow(query, partner);
|
|
|
|
// JSONObject analysis = transFlow.getJSONObject("analysis");
|
|
|
|
// JSONObject analysis = transFlow.getJSONObject("analysis");
|
|
|
|
if (transFlow.getJSONArray("data").size() > 0) {
|
|
|
|
if (transFlow.getJSONArray("data").size() > 0) {
|
|
|
|
|
|
|
|
OutputStream ous = null;
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
List<JSONObject> dataList = (List<JSONObject>) transFlow.get("data");
|
|
|
|
List<JSONObject> dataList = (List<JSONObject>) transFlow.get("data");
|
|
|
|
String transType;
|
|
|
|
String transType;
|
|
|
|
JSONObject device;
|
|
|
|
JSONObject device;
|
|
|
|
int status;
|
|
|
|
int status;
|
|
|
|
for (JSONObject data : dataList) {
|
|
|
|
resp.setContentType("application/octet-stream;");
|
|
|
|
transType = data.getString("trans_type");
|
|
|
|
resp.addHeader("Content-Disposition",
|
|
|
|
if (!"refund".equals(transType))
|
|
|
|
"attachment; filename=" + "Merchant_Settlement_Info_" + query.getDatefrom() + "_" + query.getDateto() + ".xlsx");
|
|
|
|
continue;
|
|
|
|
ous = resp.getOutputStream();
|
|
|
|
status = data.getIntValue("status");
|
|
|
|
Workbook wb = new XSSFWorkbook();
|
|
|
|
if (status == 6)
|
|
|
|
Font font = wb.createFont();
|
|
|
|
transType = "Partly " + transType;
|
|
|
|
font.setBoldweight(Font.BOLDWEIGHT_BOLD);
|
|
|
|
else if (status == 7) {
|
|
|
|
font.setFontHeightInPoints((short) 10);
|
|
|
|
transType = "Fully " + transType;
|
|
|
|
CellStyle analysisStyle = wb.createCellStyle();
|
|
|
|
|
|
|
|
analysisStyle.setFont(font);
|
|
|
|
|
|
|
|
String[] clientIds = query.getClient_ids();
|
|
|
|
|
|
|
|
List<String> 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();
|
|
|
|
wb.write(ous);
|
|
|
|
parmerters.put("dateFrom", StringUtils.isNotBlank(query.getDatefrom()) ? query.getDatefrom() : "");
|
|
|
|
ous.flush();
|
|
|
|
parmerters.put("dateTo", StringUtils.isNotBlank(query.getDateto()) ? query.getDateto() : DateFormatUtils.format(new Date(), "yyyyMMdd"));
|
|
|
|
} catch (IOException e) {
|
|
|
|
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();
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
IOUtils.closeQuietly(ous);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|