|
|
@ -21,9 +21,11 @@ import au.com.royalpay.payment.manage.organizations.core.OrgManager;
|
|
|
|
import au.com.royalpay.payment.manage.tradelog.beans.PreRefundQueryBean;
|
|
|
|
import au.com.royalpay.payment.manage.tradelog.beans.PreRefundQueryBean;
|
|
|
|
import au.com.royalpay.payment.manage.tradelog.beans.TradeLogQuery;
|
|
|
|
import au.com.royalpay.payment.manage.tradelog.beans.TradeLogQuery;
|
|
|
|
import au.com.royalpay.payment.manage.tradelog.core.TradeLogService;
|
|
|
|
import au.com.royalpay.payment.manage.tradelog.core.TradeLogService;
|
|
|
|
|
|
|
|
import au.com.royalpay.payment.tools.env.PlatformEnvironment;
|
|
|
|
import au.com.royalpay.payment.tools.exceptions.BadRequestException;
|
|
|
|
import au.com.royalpay.payment.tools.exceptions.BadRequestException;
|
|
|
|
import au.com.royalpay.payment.tools.permission.enums.ManagerRole;
|
|
|
|
import au.com.royalpay.payment.tools.permission.enums.ManagerRole;
|
|
|
|
import au.com.royalpay.payment.tools.permission.enums.PartnerRole;
|
|
|
|
import au.com.royalpay.payment.tools.permission.enums.PartnerRole;
|
|
|
|
|
|
|
|
import au.com.royalpay.payment.tools.utils.CurrencyAmountUtils;
|
|
|
|
import au.com.royalpay.payment.tools.utils.PageListUtils;
|
|
|
|
import au.com.royalpay.payment.tools.utils.PageListUtils;
|
|
|
|
import au.com.royalpay.payment.tools.utils.TimeZoneUtils;
|
|
|
|
import au.com.royalpay.payment.tools.utils.TimeZoneUtils;
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
@ -545,41 +547,46 @@ public class TradeLogServiceImpl implements TradeLogService {
|
|
|
|
// File jasperFile = trans_flow.getFile();
|
|
|
|
// File jasperFile = trans_flow.getFile();
|
|
|
|
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").isEmpty()) {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
List<JSONObject> dataList = (List<JSONObject>) transFlow.get("data");
|
|
|
|
List<JSONObject> dataList = (List<JSONObject>) transFlow.get("data");
|
|
|
|
JSONObject parmerters = new JSONObject();
|
|
|
|
JSONObject parmerters = new JSONObject();
|
|
|
|
parmerters.put("dateFrom", StringUtils.isNotBlank(query.getDatefrom())
|
|
|
|
parmerters.put("dateFrom", StringUtils.isNotBlank(query.getDatefrom())
|
|
|
|
? DateFormatUtils.format(DateUtils.parseDate(query.getDatefrom(), new String[]{"yyyyMMdd"}), "dd/MM/yyyy") : "");
|
|
|
|
? DateFormatUtils.format(DateUtils.parseDate(query.getDatefrom(), "yyyyMMdd"), "dd/MM/yyyy") : "");
|
|
|
|
parmerters.put("dateTo",
|
|
|
|
parmerters.put("dateTo",
|
|
|
|
StringUtils.isNotBlank(query.getDateto())
|
|
|
|
StringUtils.isNotBlank(query.getDateto())
|
|
|
|
? DateFormatUtils.format(DateUtils.parseDate(query.getDateto(), new String[]{"yyyyMMdd"}), "dd/MM/yyyy")
|
|
|
|
? DateFormatUtils.format(DateUtils.parseDate(query.getDateto(), "yyyyMMdd"), "dd/MM/yyyy")
|
|
|
|
: DateFormatUtils.format(new Date(), "dd/MM/yyyy"));
|
|
|
|
: DateFormatUtils.format(new Date(), "dd/MM/yyyy"));
|
|
|
|
parmerters.put("dateRange", (StringUtils.isNotBlank(parmerters.getString("dateFrom")) ? parmerters.getString("dateFrom") : "") + "~"
|
|
|
|
parmerters.put("dateRange", (StringUtils.isNotBlank(parmerters.getString("dateFrom")) ? parmerters.getString("dateFrom") : "") + "~"
|
|
|
|
+ parmerters.getString("dateTo"));
|
|
|
|
+ parmerters.getString("dateTo"));
|
|
|
|
parmerters.put("partnerCode", partner.getString("client_moniker"));
|
|
|
|
parmerters.put("partnerCode", partner.getString("client_moniker"));
|
|
|
|
parmerters.put("clientName", partner.getJSONObject("client").getString("company_name"));
|
|
|
|
parmerters.put("clientName", partner.getJSONObject("client").getString("company_name"));
|
|
|
|
parmerters.put("clientAddress", partner.getJSONObject("client").getString("address"));
|
|
|
|
parmerters.put("clientAddress", partner.getJSONObject("client").getString("address"));
|
|
|
|
System.out.print(parmerters.toJSONString());
|
|
|
|
|
|
|
|
parmerters.put("balance", analysis.getDoubleValue("balance"));
|
|
|
|
parmerters.put("balance", analysis.getDoubleValue("balance"));
|
|
|
|
parmerters.put("logo", logo.getInputStream());
|
|
|
|
parmerters.put("logo", logo.getInputStream());
|
|
|
|
parmerters.put("actual_fee", analysis.containsKey("actual_fee") ? analysis.getBigDecimal("actual_fee") : 0);
|
|
|
|
parmerters.put("actual_fee", takeDecimalOrDefault(analysis, "actual_fee", BigDecimal.ZERO));
|
|
|
|
parmerters.put("totalSettledAmount",
|
|
|
|
parmerters.put("totalSettledAmount", takeDecimalOrDefault(analysis, "total_settle_amount", BigDecimal.ZERO));
|
|
|
|
analysis.containsKey("total_settle_amount") ? analysis.getBigDecimal("total_settle_amount").setScale(2, BigDecimal.ROUND_DOWN) : 0);
|
|
|
|
parmerters.put("royalpay_charge", takeDecimalOrDefault(analysis, "total_royal_surcharge", BigDecimal.ZERO));
|
|
|
|
parmerters.put("royalpay_charge", analysis.containsKey("total_royal_surcharge") ? analysis.getBigDecimal("total_royal_surcharge").setScale(2, BigDecimal.ROUND_DOWN) : 0);
|
|
|
|
parmerters.put("total_fee", takeDecimalOrDefault(analysis, "total_surcharge", BigDecimal.ZERO));
|
|
|
|
parmerters.put("total_fee", analysis.containsKey("total_surcharge") ? analysis.getBigDecimal("total_surcharge").setScale(2, BigDecimal.ROUND_DOWN) : 0);
|
|
|
|
parmerters.put("alipay_fee", takeDecimalOrDefault(analysis, "alipay_fee", BigDecimal.ZERO));
|
|
|
|
parmerters.put("alipay_fee", analysis.containsKey("alipay_fee") ? analysis.getBigDecimal("alipay_fee").setScale(2, BigDecimal.ROUND_DOWN) : 0);
|
|
|
|
parmerters.put("wechat_fee", takeDecimalOrDefault(analysis, "wechat_fee", BigDecimal.ZERO));
|
|
|
|
parmerters.put("wechat_fee", analysis.containsKey("wechat_fee") ? analysis.getBigDecimal("wechat_fee").setScale(2, BigDecimal.ROUND_DOWN) : 0);
|
|
|
|
parmerters.put("bestpay_fee", takeDecimalOrDefault(analysis, "bestpay_fee", BigDecimal.ZERO));
|
|
|
|
parmerters.put("bestpay_fee", analysis.containsKey("bestpay_fee") ? analysis.getBigDecimal("bestpay_fee").setScale(2, BigDecimal.ROUND_DOWN) : 0);
|
|
|
|
parmerters.put("jd_fee", takeDecimalOrDefault(analysis, "jd_fee", BigDecimal.ZERO));
|
|
|
|
parmerters.put("jd_fee", analysis.containsKey("jd_fee") ? analysis.getBigDecimal("jd_fee").setScale(2, BigDecimal.ROUND_DOWN) : 0);
|
|
|
|
parmerters.put("alipay_online_fee", takeDecimalOrDefault(analysis, "alipay_online_fee", BigDecimal.ZERO)); // parmerters.put("gst", analysis.containsKey("clearing_fee") ?
|
|
|
|
parmerters.put("alipay_online_fee", analysis.containsKey("alipay_online_fee") ? analysis.getBigDecimal("alipay_online_fee").setScale(2, BigDecimal.ROUND_DOWN) : 0); // parmerters.put("gst", analysis.containsKey("clearing_fee") ?
|
|
|
|
|
|
|
|
// analysis.getBigDecimal("clearing_fee").multiply(new BigDecimal(0.11)).setScale(2,
|
|
|
|
// analysis.getBigDecimal("clearing_fee").multiply(new BigDecimal(0.11)).setScale(2,
|
|
|
|
// BigDecimal.ROUND_DOWN) : 0);
|
|
|
|
// BigDecimal.ROUND_DOWN) : 0);
|
|
|
|
// parmerters.put("gst",
|
|
|
|
// parmerters.put("gst",
|
|
|
|
// analysis.containsKey("total_royal_surcharge") ? analysis.getBigDecimal("total_royal_surcharge").divide(new BigDecimal(11), 2, BigDecimal.ROUND_DOWN) : 0);
|
|
|
|
// analysis.containsKey("total_royal_surcharge") ? analysis.getBigDecimal("total_royal_surcharge").divide(new BigDecimal(11), 2, BigDecimal.ROUND_DOWN) : 0);
|
|
|
|
|
|
|
|
dataList.parallelStream().forEach(item -> {
|
|
|
|
|
|
|
|
scaleDecimalVal(item, "display_amount", item.getString("currency"));
|
|
|
|
|
|
|
|
String platformCurrency = PlatformEnvironment.getEnv().getForeignCurrency();
|
|
|
|
|
|
|
|
scaleDecimalVal(item, "clearing_amount", platformCurrency);
|
|
|
|
|
|
|
|
scaleDecimalVal(item, "settle_amount", platformCurrency);
|
|
|
|
|
|
|
|
scaleDecimalVal(item, "total_surcharge", platformCurrency);
|
|
|
|
|
|
|
|
});
|
|
|
|
JRDataSource jrDataSource = new JRBeanCollectionDataSource(dataList);
|
|
|
|
JRDataSource jrDataSource = new JRBeanCollectionDataSource(dataList);
|
|
|
|
response.setContentType("application/pdf");
|
|
|
|
response.setContentType("application/pdf");
|
|
|
|
String fileName = parmerters.getString("dateRange").replaceAll("/", "");
|
|
|
|
String fileName = partner.getString("client_moniker") + "_" + parmerters.getString("dateRange").replaceAll("/", "");
|
|
|
|
response.setHeader("Content-Disposition", "attachment;fileName=" + fileName + ".pdf");
|
|
|
|
response.setHeader("Content-Disposition", "attachment;fileName=" + fileName + ".pdf");
|
|
|
|
OutputStream outs = response.getOutputStream();
|
|
|
|
OutputStream outs = response.getOutputStream();
|
|
|
|
byte[] bytes = JasperRunManager.runReportToPdf(trans_flow.getInputStream(), parmerters, jrDataSource);
|
|
|
|
byte[] bytes = JasperRunManager.runReportToPdf(trans_flow.getInputStream(), parmerters, jrDataSource);
|
|
|
@ -593,6 +600,19 @@ public class TradeLogServiceImpl implements TradeLogService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void scaleDecimalVal(JSONObject obj, String key, String currency) {
|
|
|
|
|
|
|
|
BigDecimal decimal = obj.getBigDecimal(key);
|
|
|
|
|
|
|
|
if (decimal == null) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
obj.put(key, CurrencyAmountUtils.scale(decimal, currency));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private BigDecimal takeDecimalOrDefault(JSONObject analysis, String key, BigDecimal defaultVal) {
|
|
|
|
|
|
|
|
BigDecimal decimal = analysis.containsKey(key) ? analysis.getBigDecimal(key) : defaultVal;
|
|
|
|
|
|
|
|
return CurrencyAmountUtils.scale(decimal, PlatformEnvironment.getEnv().getForeignCurrency());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void exportExcel(TradeLogQuery query, JSONObject partner, HttpServletResponse response) throws Exception {
|
|
|
|
public void exportExcel(TradeLogQuery query, JSONObject partner, HttpServletResponse response) throws Exception {
|
|
|
|
logger.debug("excel The method======= exportExcel() start.......................");
|
|
|
|
logger.debug("excel The method======= exportExcel() start.......................");
|
|
|
|