|
|
@ -3,6 +3,7 @@ package au.com.royalpay.payment.manage.analysis.core.impls;
|
|
|
|
import au.com.royalpay.payment.manage.analysis.core.DailyReport;
|
|
|
|
import au.com.royalpay.payment.manage.analysis.core.DailyReport;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.cashback.CashbackRecordsMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.cashback.CashbackRecordsMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.financial.FinancialBDCommissionConfigMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.financial.FinancialBDCommissionConfigMapper;
|
|
|
|
|
|
|
|
import au.com.royalpay.payment.manage.mappers.financial.FinancialBDConfigMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.financial.FinancialBDPrizeLogMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.financial.FinancialBDPrizeLogMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.log.ClearingLogMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.log.ClearingLogMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.log.DailyReportMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.log.DailyReportMapper;
|
|
|
@ -10,7 +11,6 @@ import au.com.royalpay.payment.manage.mappers.payment.TransactionMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.redpack.ActPartnerLMLogMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.redpack.ActPartnerLMLogMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.system.ClientMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.system.ClientMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.system.ManagerMapper;
|
|
|
|
import au.com.royalpay.payment.manage.mappers.system.ManagerMapper;
|
|
|
|
import au.com.royalpay.payment.tools.permission.enums.ManagerRole;
|
|
|
|
|
|
|
|
import au.com.royalpay.payment.tools.connections.mpsupport.MpWechatApi;
|
|
|
|
import au.com.royalpay.payment.tools.connections.mpsupport.MpWechatApi;
|
|
|
|
import au.com.royalpay.payment.tools.connections.mpsupport.MpWechatApiProvider;
|
|
|
|
import au.com.royalpay.payment.tools.connections.mpsupport.MpWechatApiProvider;
|
|
|
|
import au.com.royalpay.payment.tools.connections.mpsupport.beans.TemplateMessage;
|
|
|
|
import au.com.royalpay.payment.tools.connections.mpsupport.beans.TemplateMessage;
|
|
|
@ -18,6 +18,7 @@ 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.exceptions.ForbiddenException;
|
|
|
|
import au.com.royalpay.payment.tools.exceptions.ForbiddenException;
|
|
|
|
import au.com.royalpay.payment.tools.exceptions.NotFoundException;
|
|
|
|
import au.com.royalpay.payment.tools.exceptions.NotFoundException;
|
|
|
|
|
|
|
|
import au.com.royalpay.payment.tools.permission.enums.ManagerRole;
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
import org.apache.commons.lang3.time.DateFormatUtils;
|
|
|
|
import org.apache.commons.lang3.time.DateFormatUtils;
|
|
|
@ -31,7 +32,10 @@ import java.math.BigDecimal;
|
|
|
|
import java.text.DecimalFormat;
|
|
|
|
import java.text.DecimalFormat;
|
|
|
|
import java.text.NumberFormat;
|
|
|
|
import java.text.NumberFormat;
|
|
|
|
import java.text.ParseException;
|
|
|
|
import java.text.ParseException;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
|
|
|
import java.util.Calendar;
|
|
|
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Created by yishuqian on 16/11/2017.
|
|
|
|
* Created by yishuqian on 16/11/2017.
|
|
|
@ -59,16 +63,17 @@ public class DailyReportImp implements DailyReport {
|
|
|
|
private Logger logger = LoggerFactory.getLogger(getClass());
|
|
|
|
private Logger logger = LoggerFactory.getLogger(getClass());
|
|
|
|
@Resource
|
|
|
|
@Resource
|
|
|
|
private TransactionMapper transactionMapper;
|
|
|
|
private TransactionMapper transactionMapper;
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
|
|
private FinancialBDConfigMapper financialBDConfigMapper;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void generateReport(String date, boolean sendMsg) {
|
|
|
|
public void generateReport(String date, boolean sendMsg) {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
Date beginTime = DateUtils.parseDate(date, new String[]{"yyyy-MM-dd"});
|
|
|
|
Date beginTime = DateUtils.parseDate(date, new String[]{"yyyy-MM-dd"});
|
|
|
|
String reportId =DateFormatUtils.format(beginTime,"yyyy-MM-dd");
|
|
|
|
String reportId = DateFormatUtils.format(beginTime, "yyyy-MM-dd");
|
|
|
|
Date yesterdayEndTime = DateUtils.addDays(beginTime, 1);
|
|
|
|
Date yesterdayEndTime = DateUtils.addDays(beginTime, 1);
|
|
|
|
String endDate = DateFormatUtils.format(yesterdayEndTime, "yyyy-MM-dd");
|
|
|
|
String endDate = DateFormatUtils.format(yesterdayEndTime, "yyyy-MM-dd");
|
|
|
|
Date endTime = DateUtils.parseDate(endDate, new String[]{"yyyy-MM-dd"});
|
|
|
|
Date endTime = DateUtils.parseDate(endDate, new String[]{"yyyy-MM-dd"});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
JSONObject report = dailyReportMapper.findOne(reportId);
|
|
|
|
JSONObject report = dailyReportMapper.findOne(reportId);
|
|
|
@ -80,7 +85,7 @@ public class DailyReportImp implements DailyReport {
|
|
|
|
report.put("analysis_date", beginTime);
|
|
|
|
report.put("analysis_date", beginTime);
|
|
|
|
report.put("report_date", new Date());
|
|
|
|
report.put("report_date", new Date());
|
|
|
|
|
|
|
|
|
|
|
|
JSONObject creditReport = getCreditReport(beginTime,endTime);
|
|
|
|
JSONObject creditReport = getCreditReport(beginTime, endTime);
|
|
|
|
report.put("credit", creditReport.toJSONString());
|
|
|
|
report.put("credit", creditReport.toJSONString());
|
|
|
|
|
|
|
|
|
|
|
|
JSONObject debitReport = getDebitReport(beginTime);
|
|
|
|
JSONObject debitReport = getDebitReport(beginTime);
|
|
|
@ -103,67 +108,69 @@ public class DailyReportImp implements DailyReport {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private JSONObject getKPI(Date dt){
|
|
|
|
private JSONObject getKPI(Date dt) {
|
|
|
|
JSONObject report = new JSONObject();
|
|
|
|
JSONObject report = new JSONObject();
|
|
|
|
List<JSONObject> kpiList =new ArrayList<>();
|
|
|
|
List<JSONObject> kpiList = new ArrayList<>();
|
|
|
|
List<JSONObject> prizeAmountAndBdTypeList = financialBDPrizeLogMapper.findBdPrizeAmountMonth(DateUtils.truncate(dt, Calendar.DATE),DateUtils.truncate(DateUtils.addDays(dt,1), Calendar.DATE),DateUtils.truncate(dt, Calendar.MONTH));
|
|
|
|
List<JSONObject> prizeAmountAndBdTypeList = financialBDPrizeLogMapper.findBdPrizeAmountMonth(DateUtils.truncate(dt, Calendar.DATE), DateUtils.truncate(DateUtils.addDays(dt, 1), Calendar.DATE), DateUtils.truncate(dt, Calendar.MONTH));
|
|
|
|
List<JSONObject> prizeAmountAndBdTypeListYesterDay = financialBDPrizeLogMapper.findBdPrizeAmountMonth(DateUtils.truncate(DateUtils.addDays(dt,-1), Calendar.DATE),DateUtils.truncate(dt, Calendar.DATE),DateUtils.truncate(DateUtils.addDays(dt,-1), Calendar.MONTH));
|
|
|
|
List<JSONObject> prizeAmountAndBdTypeListYesterDay = financialBDPrizeLogMapper.findBdPrizeAmountMonth(DateUtils.truncate(DateUtils.addDays(dt, -1), Calendar.DATE), DateUtils.truncate(dt, Calendar.DATE), DateUtils.truncate(DateUtils.addDays(dt, -1), Calendar.MONTH));
|
|
|
|
List<JSONObject> clientsAmount = clientMapper.createClientsByGroup(DateUtils.truncate(dt, Calendar.DATE),DateUtils.truncate(DateUtils.addDays(dt,1), Calendar.DATE),DateUtils.truncate(dt, Calendar.MONTH));
|
|
|
|
List<JSONObject> clientsAmount = clientMapper.createClientsByGroup(DateUtils.truncate(dt, Calendar.DATE), DateUtils.truncate(DateUtils.addDays(dt, 1), Calendar.DATE), DateUtils.truncate(dt, Calendar.MONTH));
|
|
|
|
//BD团队总KPI
|
|
|
|
//BD团队总KPI
|
|
|
|
BigDecimal total_kpi_amount = BigDecimal.ZERO;
|
|
|
|
BigDecimal total_kpi_amount = BigDecimal.ZERO;
|
|
|
|
//BD团队当月总销售额
|
|
|
|
//BD团队当月总销售额
|
|
|
|
BigDecimal total_month_amount = BigDecimal.ZERO;
|
|
|
|
BigDecimal total_month_amount = BigDecimal.ZERO;
|
|
|
|
for(JSONObject p :prizeAmountAndBdTypeList){
|
|
|
|
for (JSONObject p : prizeAmountAndBdTypeList) {
|
|
|
|
JSONObject kpi = new JSONObject();
|
|
|
|
JSONObject kpi = new JSONObject();
|
|
|
|
kpi.put("bd_group",p.getString("bd_group"));
|
|
|
|
kpi.put("bd_group", p.getString("bd_group"));
|
|
|
|
kpi.put("bd_name",p.getString("bd_name"));
|
|
|
|
kpi.put("bd_name", p.getString("bd_name"));
|
|
|
|
kpi.put("group_name",groupName(p.getIntValue("bd_type")));
|
|
|
|
kpi.put("group_name", groupName(p.getIntValue("bd_type")));
|
|
|
|
//昨日数据
|
|
|
|
//昨日数据
|
|
|
|
kpi.put("total_amount",p.getBigDecimal("total_amount"));
|
|
|
|
kpi.put("total_amount", p.getBigDecimal("total_amount"));
|
|
|
|
//当月数据
|
|
|
|
//当月数据
|
|
|
|
kpi.put("month_amount",p.getBigDecimal("month_amount"));
|
|
|
|
kpi.put("month_amount", p.getBigDecimal("month_amount"));
|
|
|
|
BigDecimal kpi_amount = financialBDCommissionConfigMapper.findCurrentCommissionMaxAmount(DateFormatUtils.format(DateUtils.truncate(dt,Calendar.MONTH),"yyyy-MM"), p.getIntValue("bd_type"));
|
|
|
|
BigDecimal kpi_amount = financialBDCommissionConfigMapper.findCurrentCommissionMaxAmount(DateFormatUtils.format(DateUtils.truncate(dt, Calendar.MONTH), "yyyy-MM"), p.getIntValue("bd_type"));
|
|
|
|
kpi.put("kpi_amount",kpi_amount);
|
|
|
|
kpi.put("kpi_amount", kpi_amount);
|
|
|
|
for(JSONObject prize : prizeAmountAndBdTypeListYesterDay){
|
|
|
|
for (JSONObject prize : prizeAmountAndBdTypeListYesterDay) {
|
|
|
|
if(prize.getString("bd_group").equals(kpi.getString("bd_group"))){
|
|
|
|
if (prize.getString("bd_group").equals(kpi.getString("bd_group"))) {
|
|
|
|
BigDecimal compare = kpi.getBigDecimal("total_amount").subtract(prize.getBigDecimal("total_amount"));
|
|
|
|
BigDecimal compare = kpi.getBigDecimal("total_amount").subtract(prize.getBigDecimal("total_amount"));
|
|
|
|
kpi.put("compare",compare);
|
|
|
|
kpi.put("compare", compare);
|
|
|
|
kpi.put("compare_value",Math.abs(compare.doubleValue()));
|
|
|
|
kpi.put("compare_value", Math.abs(compare.doubleValue()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
kpi.put("kpi_percent", p.getBigDecimal("month_amount").divide(kpi_amount, 4, BigDecimal.ROUND_HALF_DOWN).multiply(BigDecimal.valueOf(100)).toString().substring(0, 5) + "%");
|
|
|
|
kpi.put("kpi_percent", p.getBigDecimal("month_amount").divide(kpi_amount, 4, BigDecimal.ROUND_HALF_DOWN).multiply(BigDecimal.valueOf(100)).toString().substring(0, 5) + "%");
|
|
|
|
for (JSONObject clientAmount : clientsAmount) {
|
|
|
|
for (JSONObject clientAmount : clientsAmount) {
|
|
|
|
if (clientAmount.getString("bd_group").equals(kpi.getString("bd_group"))) {
|
|
|
|
if (clientAmount.getString("bd_group").equals(kpi.getString("bd_group"))) {
|
|
|
|
// sys_clients中查询出此bd创建并属于此bd的商户,并且时间是昨天和本月
|
|
|
|
//查询该领队下所有BD
|
|
|
|
JSONObject countByBd = clientMapper.findCountByBd(clientAmount.getString("bd_group"), DateUtils.truncate(DateUtils.addDays(dt, 1), Calendar.DATE), DateUtils.truncate(dt, Calendar.DATE), DateUtils.truncate(dt, Calendar.MONTH));
|
|
|
|
List<JSONObject> teamBDs = financialBDConfigMapper.listGroupBds(kpi.getString("bd_group"));
|
|
|
|
if (countByBd.getInteger("month_count") == null){
|
|
|
|
int bdMonthClientCount = 0;
|
|
|
|
kpi.put("clients_month", 0);
|
|
|
|
int bdYesterdayClientCount = 0;
|
|
|
|
}else {
|
|
|
|
for (int i = 0; i < teamBDs.size(); i++) {
|
|
|
|
kpi.put("clients_month", countByBd.getInteger("month_count"));
|
|
|
|
// sys_clients中查询出此bd创建并属于此bd的商户,并且时间是昨天和本月
|
|
|
|
}
|
|
|
|
JSONObject countByBd = clientMapper.findCountByBd(teamBDs.get(i).getString("manager_id"), DateUtils.truncate(DateUtils.addDays(dt, 1), Calendar.DATE), DateUtils.truncate(dt, Calendar.DATE), DateUtils.truncate(dt, Calendar.MONTH));
|
|
|
|
if (countByBd.getInteger("yesterday_count") == null){
|
|
|
|
if (countByBd.getInteger("month_count") != null) {
|
|
|
|
kpi.put("clients_yesterday", 0);
|
|
|
|
bdMonthClientCount += countByBd.getInteger("month_count");
|
|
|
|
}else {
|
|
|
|
}
|
|
|
|
kpi.put("clients_yesterday", countByBd.getInteger("yesterday_count"));
|
|
|
|
if (countByBd.getInteger("yesterday_count") != null) {
|
|
|
|
|
|
|
|
bdYesterdayClientCount += countByBd.getInteger("yesterday_count");
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// kpi.put("clients_month", clientAmount.getBigDecimal("clients_month"));
|
|
|
|
kpi.put("clients_month", bdMonthClientCount);
|
|
|
|
// kpi.put("clients_yesterday", clientAmount.getBigDecimal("clients_yesterday"));
|
|
|
|
kpi.put("clients_yesterday", bdYesterdayClientCount);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
total_kpi_amount = total_kpi_amount.add(kpi_amount);
|
|
|
|
total_kpi_amount = total_kpi_amount.add(kpi_amount);
|
|
|
|
total_month_amount = total_month_amount.add(p.getBigDecimal("month_amount"));
|
|
|
|
total_month_amount = total_month_amount.add(p.getBigDecimal("month_amount"));
|
|
|
|
kpiList.add(kpi);
|
|
|
|
kpiList.add(kpi);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
report.put("kpiList",kpiList);
|
|
|
|
report.put("kpiList", kpiList);
|
|
|
|
report.put("kpi_percent_total",total_month_amount.divide(total_kpi_amount,4,BigDecimal.ROUND_HALF_DOWN).multiply(BigDecimal.valueOf(100)).toString().substring(0,5)+"%");
|
|
|
|
report.put("kpi_percent_total", total_month_amount.divide(total_kpi_amount, 4, BigDecimal.ROUND_HALF_DOWN).multiply(BigDecimal.valueOf(100)).toString().substring(0, 5) + "%");
|
|
|
|
report.put("total_month_amount",total_month_amount);
|
|
|
|
report.put("total_month_amount", total_month_amount);
|
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
|
calendar.setTime(dt);
|
|
|
|
calendar.setTime(dt);
|
|
|
|
report.put("time_percent",BigDecimal.valueOf(calendar.get(Calendar.DAY_OF_MONTH)).divide(BigDecimal.valueOf(calendar.getActualMaximum(Calendar.DAY_OF_MONTH)),4,BigDecimal.ROUND_HALF_DOWN).multiply(BigDecimal.valueOf(100)).toString().substring(0,5)+"%");
|
|
|
|
report.put("time_percent", BigDecimal.valueOf(calendar.get(Calendar.DAY_OF_MONTH)).divide(BigDecimal.valueOf(calendar.getActualMaximum(Calendar.DAY_OF_MONTH)), 4, BigDecimal.ROUND_HALF_DOWN).multiply(BigDecimal.valueOf(100)).toString().substring(0, 5) + "%");
|
|
|
|
return report;
|
|
|
|
return report;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private String groupName(int bd_type){
|
|
|
|
private String groupName(int bd_type) {
|
|
|
|
switch (bd_type) {
|
|
|
|
switch (bd_type) {
|
|
|
|
case 1:
|
|
|
|
case 1:
|
|
|
|
return "Sydney Team";
|
|
|
|
return "Sydney Team";
|
|
|
@ -181,21 +188,21 @@ public class DailyReportImp implements DailyReport {
|
|
|
|
private JSONObject getDebitReport(Date dt) {
|
|
|
|
private JSONObject getDebitReport(Date dt) {
|
|
|
|
JSONObject report = new JSONObject();
|
|
|
|
JSONObject report = new JSONObject();
|
|
|
|
BigDecimal redpack = actPartnerLMLogMapper.getRedpackAmount(dt);
|
|
|
|
BigDecimal redpack = actPartnerLMLogMapper.getRedpackAmount(dt);
|
|
|
|
BigDecimal last_redpack = actPartnerLMLogMapper.getRedpackAmount(DateUtils.addDays(dt,-1));
|
|
|
|
BigDecimal last_redpack = actPartnerLMLogMapper.getRedpackAmount(DateUtils.addDays(dt, -1));
|
|
|
|
JSONObject redpackObj = new JSONObject();
|
|
|
|
JSONObject redpackObj = new JSONObject();
|
|
|
|
redpackObj.put("value",redpack);
|
|
|
|
redpackObj.put("value", redpack);
|
|
|
|
BigDecimal redpack_compare = redpack.subtract(last_redpack);
|
|
|
|
BigDecimal redpack_compare = redpack.subtract(last_redpack);
|
|
|
|
redpackObj.put("compare",redpack_compare);
|
|
|
|
redpackObj.put("compare", redpack_compare);
|
|
|
|
redpackObj.put("compare_value",Math.abs(redpack_compare.doubleValue()));
|
|
|
|
redpackObj.put("compare_value", Math.abs(redpack_compare.doubleValue()));
|
|
|
|
report.put("redpack",redpackObj);
|
|
|
|
report.put("redpack", redpackObj);
|
|
|
|
BigDecimal cashback = cashbackRecordsMapper.getSettleDelayDebit(dt);
|
|
|
|
BigDecimal cashback = cashbackRecordsMapper.getSettleDelayDebit(dt);
|
|
|
|
BigDecimal last_cashback = cashbackRecordsMapper.getSettleDelayDebit(DateUtils.addDays(dt,-1));
|
|
|
|
BigDecimal last_cashback = cashbackRecordsMapper.getSettleDelayDebit(DateUtils.addDays(dt, -1));
|
|
|
|
JSONObject cashObj = new JSONObject();
|
|
|
|
JSONObject cashObj = new JSONObject();
|
|
|
|
cashObj.put("value",cashback);
|
|
|
|
cashObj.put("value", cashback);
|
|
|
|
BigDecimal cashback_compare = cashback.subtract(last_cashback);
|
|
|
|
BigDecimal cashback_compare = cashback.subtract(last_cashback);
|
|
|
|
cashObj.put("compare",cashback_compare);
|
|
|
|
cashObj.put("compare", cashback_compare);
|
|
|
|
cashObj.put("compare_value",Math.abs(cashback_compare.doubleValue()));
|
|
|
|
cashObj.put("compare_value", Math.abs(cashback_compare.doubleValue()));
|
|
|
|
report.put("cashback",cashObj);
|
|
|
|
report.put("cashback", cashObj);
|
|
|
|
// BigDecimal total_debit=redpack.add(cashback);
|
|
|
|
// BigDecimal total_debit=redpack.add(cashback);
|
|
|
|
// BigDecimal last_debit=last_redpack.add(last_cashback);
|
|
|
|
// BigDecimal last_debit=last_redpack.add(last_cashback);
|
|
|
|
// report.put("total_debit",total_debit);
|
|
|
|
// report.put("total_debit",total_debit);
|
|
|
@ -205,9 +212,9 @@ public class DailyReportImp implements DailyReport {
|
|
|
|
return report;
|
|
|
|
return report;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private JSONObject getCreditReport(Date beginTime,Date endTime) {
|
|
|
|
private JSONObject getCreditReport(Date beginTime, Date endTime) {
|
|
|
|
JSONObject report = new JSONObject();
|
|
|
|
JSONObject report = new JSONObject();
|
|
|
|
List<JSONObject> settles = transactionMapper.getSettleDataDailyReport(beginTime,endTime);
|
|
|
|
List<JSONObject> settles = transactionMapper.getSettleDataDailyReport(beginTime, endTime);
|
|
|
|
JSONObject yesterdayTotal = this.computerTotalAmount(settles);
|
|
|
|
JSONObject yesterdayTotal = this.computerTotalAmount(settles);
|
|
|
|
BigDecimal yesterday_settle_amount = yesterdayTotal.getBigDecimal("total_settle_amount");
|
|
|
|
BigDecimal yesterday_settle_amount = yesterdayTotal.getBigDecimal("total_settle_amount");
|
|
|
|
BigDecimal yesterday_credit_amount = yesterdayTotal.getBigDecimal("total_credit_amount");
|
|
|
|
BigDecimal yesterday_credit_amount = yesterdayTotal.getBigDecimal("total_credit_amount");
|
|
|
@ -218,7 +225,7 @@ public class DailyReportImp implements DailyReport {
|
|
|
|
BigDecimal yesterday_channel_surcharge = yesterdayTotal.getBigDecimal("total_channel_surcharge");
|
|
|
|
BigDecimal yesterday_channel_surcharge = yesterdayTotal.getBigDecimal("total_channel_surcharge");
|
|
|
|
BigDecimal yesterday_tax_amount = yesterdayTotal.getBigDecimal("total_tax_amount");
|
|
|
|
BigDecimal yesterday_tax_amount = yesterdayTotal.getBigDecimal("total_tax_amount");
|
|
|
|
|
|
|
|
|
|
|
|
List<JSONObject> last_settle = transactionMapper.getSettleDataDailyReport(DateUtils.addDays(beginTime,-1),DateUtils.addDays(endTime,-1));
|
|
|
|
List<JSONObject> last_settle = transactionMapper.getSettleDataDailyReport(DateUtils.addDays(beginTime, -1), DateUtils.addDays(endTime, -1));
|
|
|
|
JSONObject lastTotal = this.computerTotalAmount(last_settle);
|
|
|
|
JSONObject lastTotal = this.computerTotalAmount(last_settle);
|
|
|
|
BigDecimal last_settle_amount = lastTotal.getBigDecimal("total_settle_amount");
|
|
|
|
BigDecimal last_settle_amount = lastTotal.getBigDecimal("total_settle_amount");
|
|
|
|
BigDecimal last_total_credit = lastTotal.getBigDecimal("total_credit_amount");
|
|
|
|
BigDecimal last_total_credit = lastTotal.getBigDecimal("total_credit_amount");
|
|
|
@ -238,44 +245,44 @@ public class DailyReportImp implements DailyReport {
|
|
|
|
JSONObject percentage_yesterday_channel_surcharge = this.percentage(yesterday_channel_surcharge, last_channel_surcharge);
|
|
|
|
JSONObject percentage_yesterday_channel_surcharge = this.percentage(yesterday_channel_surcharge, last_channel_surcharge);
|
|
|
|
JSONObject percentage_yesterday_tax_amount = this.percentage(yesterday_tax_amount, last_tax_amount);
|
|
|
|
JSONObject percentage_yesterday_tax_amount = this.percentage(yesterday_tax_amount, last_tax_amount);
|
|
|
|
|
|
|
|
|
|
|
|
report.put("channels",settles);
|
|
|
|
report.put("channels", settles);
|
|
|
|
report.put("total_settle_amount",new JSONObject(){{
|
|
|
|
report.put("total_settle_amount", new JSONObject() {{
|
|
|
|
put("amount",yesterday_settle_amount);
|
|
|
|
put("amount", yesterday_settle_amount);
|
|
|
|
put("compare",percentage_yesterday_settle_amount);
|
|
|
|
put("compare", percentage_yesterday_settle_amount);
|
|
|
|
}});
|
|
|
|
}});
|
|
|
|
report.put("total_credit_amount",new JSONObject(){{
|
|
|
|
report.put("total_credit_amount", new JSONObject() {{
|
|
|
|
put("amount",yesterday_credit_amount);
|
|
|
|
put("amount", yesterday_credit_amount);
|
|
|
|
put("compare",percentage_yesterday_total_credit);
|
|
|
|
put("compare", percentage_yesterday_total_credit);
|
|
|
|
}});
|
|
|
|
}});
|
|
|
|
report.put("total_debit_amount",new JSONObject(){{
|
|
|
|
report.put("total_debit_amount", new JSONObject() {{
|
|
|
|
put("amount",yesterday_debit_amount);
|
|
|
|
put("amount", yesterday_debit_amount);
|
|
|
|
put("compare",percentage_yesterday_debit_amount);
|
|
|
|
put("compare", percentage_yesterday_debit_amount);
|
|
|
|
}});
|
|
|
|
}});
|
|
|
|
report.put("total_net_trading",new JSONObject(){{
|
|
|
|
report.put("total_net_trading", new JSONObject() {{
|
|
|
|
put("amount",yesterday_net_trading);
|
|
|
|
put("amount", yesterday_net_trading);
|
|
|
|
put("compare",percentage_yesterday_net_trading);
|
|
|
|
put("compare", percentage_yesterday_net_trading);
|
|
|
|
}});
|
|
|
|
}});
|
|
|
|
report.put("total_total_surcharge",new JSONObject(){{
|
|
|
|
report.put("total_total_surcharge", new JSONObject() {{
|
|
|
|
put("amount",yesterday_total_surcharge);
|
|
|
|
put("amount", yesterday_total_surcharge);
|
|
|
|
put("compare",percentage_yesterday_total_surcharge);
|
|
|
|
put("compare", percentage_yesterday_total_surcharge);
|
|
|
|
}});
|
|
|
|
}});
|
|
|
|
report.put("total_royal_surcharge",new JSONObject(){{
|
|
|
|
report.put("total_royal_surcharge", new JSONObject() {{
|
|
|
|
put("amount",yesterday_royal_surcharge);
|
|
|
|
put("amount", yesterday_royal_surcharge);
|
|
|
|
put("compare",percentage_yesterday_royal_surcharge);
|
|
|
|
put("compare", percentage_yesterday_royal_surcharge);
|
|
|
|
}});
|
|
|
|
}});
|
|
|
|
report.put("total_channel_surcharge",new JSONObject(){{
|
|
|
|
report.put("total_channel_surcharge", new JSONObject() {{
|
|
|
|
put("amount",yesterday_channel_surcharge);
|
|
|
|
put("amount", yesterday_channel_surcharge);
|
|
|
|
put("compare",percentage_yesterday_channel_surcharge);
|
|
|
|
put("compare", percentage_yesterday_channel_surcharge);
|
|
|
|
}});
|
|
|
|
}});
|
|
|
|
report.put("total_tax_amount",new JSONObject(){{
|
|
|
|
report.put("total_tax_amount", new JSONObject() {{
|
|
|
|
put("amount",yesterday_tax_amount);
|
|
|
|
put("amount", yesterday_tax_amount);
|
|
|
|
put("compare",percentage_yesterday_tax_amount);
|
|
|
|
put("compare", percentage_yesterday_tax_amount);
|
|
|
|
}});
|
|
|
|
}});
|
|
|
|
|
|
|
|
|
|
|
|
return report;
|
|
|
|
return report;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private JSONObject computerTotalAmount(List<JSONObject> settles){
|
|
|
|
private JSONObject computerTotalAmount(List<JSONObject> settles) {
|
|
|
|
BigDecimal total_settle_amount = new BigDecimal("0.00");
|
|
|
|
BigDecimal total_settle_amount = new BigDecimal("0.00");
|
|
|
|
BigDecimal total_credit_amount = new BigDecimal("0.00");
|
|
|
|
BigDecimal total_credit_amount = new BigDecimal("0.00");
|
|
|
|
BigDecimal total_debit_amount = new BigDecimal("0.00");
|
|
|
|
BigDecimal total_debit_amount = new BigDecimal("0.00");
|
|
|
@ -286,41 +293,41 @@ public class DailyReportImp implements DailyReport {
|
|
|
|
BigDecimal total_tax_amount = new BigDecimal("0.00");
|
|
|
|
BigDecimal total_tax_amount = new BigDecimal("0.00");
|
|
|
|
DecimalFormat df1 = new DecimalFormat("0.00");
|
|
|
|
DecimalFormat df1 = new DecimalFormat("0.00");
|
|
|
|
|
|
|
|
|
|
|
|
for (int i=0;i<settles.size();i++){
|
|
|
|
for (int i = 0; i < settles.size(); i++) {
|
|
|
|
JSONObject jsonObject = settles.get(i);
|
|
|
|
JSONObject jsonObject = settles.get(i);
|
|
|
|
|
|
|
|
|
|
|
|
BigDecimal settle_amount = jsonObject.getBigDecimal("settle_amount");
|
|
|
|
BigDecimal settle_amount = jsonObject.getBigDecimal("settle_amount");
|
|
|
|
total_settle_amount = total_settle_amount.add(settle_amount);
|
|
|
|
total_settle_amount = total_settle_amount.add(settle_amount);
|
|
|
|
jsonObject.put("settle_amount",df1.format(settle_amount));
|
|
|
|
jsonObject.put("settle_amount", df1.format(settle_amount));
|
|
|
|
|
|
|
|
|
|
|
|
BigDecimal credit_amount = jsonObject.getBigDecimal("credit_amount");
|
|
|
|
BigDecimal credit_amount = jsonObject.getBigDecimal("credit_amount");
|
|
|
|
total_credit_amount = total_credit_amount.add(credit_amount);
|
|
|
|
total_credit_amount = total_credit_amount.add(credit_amount);
|
|
|
|
jsonObject.put("credit_amount",df1.format(credit_amount));
|
|
|
|
jsonObject.put("credit_amount", df1.format(credit_amount));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BigDecimal debit_amount = jsonObject.getBigDecimal("debit_amount");
|
|
|
|
BigDecimal debit_amount = jsonObject.getBigDecimal("debit_amount");
|
|
|
|
total_debit_amount = total_debit_amount.add(debit_amount);
|
|
|
|
total_debit_amount = total_debit_amount.add(debit_amount);
|
|
|
|
jsonObject.put("debit_amount",df1.format(debit_amount));
|
|
|
|
jsonObject.put("debit_amount", df1.format(debit_amount));
|
|
|
|
|
|
|
|
|
|
|
|
BigDecimal net_trading = jsonObject.getBigDecimal("net_trading");
|
|
|
|
BigDecimal net_trading = jsonObject.getBigDecimal("net_trading");
|
|
|
|
total_net_trading = total_net_trading.add(net_trading);
|
|
|
|
total_net_trading = total_net_trading.add(net_trading);
|
|
|
|
jsonObject.put("net_trading",df1.format(net_trading));
|
|
|
|
jsonObject.put("net_trading", df1.format(net_trading));
|
|
|
|
|
|
|
|
|
|
|
|
BigDecimal total_surcharge = jsonObject.getBigDecimal("total_surcharge");
|
|
|
|
BigDecimal total_surcharge = jsonObject.getBigDecimal("total_surcharge");
|
|
|
|
total_total_surcharge = total_total_surcharge.add(total_surcharge);
|
|
|
|
total_total_surcharge = total_total_surcharge.add(total_surcharge);
|
|
|
|
jsonObject.put("total_surcharge",df1.format(total_surcharge));
|
|
|
|
jsonObject.put("total_surcharge", df1.format(total_surcharge));
|
|
|
|
|
|
|
|
|
|
|
|
BigDecimal royal_surcharge = jsonObject.getBigDecimal("royal_surcharge");
|
|
|
|
BigDecimal royal_surcharge = jsonObject.getBigDecimal("royal_surcharge");
|
|
|
|
total_royal_surcharge = total_royal_surcharge.add(royal_surcharge);
|
|
|
|
total_royal_surcharge = total_royal_surcharge.add(royal_surcharge);
|
|
|
|
jsonObject.put("royal_surcharge",df1.format(royal_surcharge));
|
|
|
|
jsonObject.put("royal_surcharge", df1.format(royal_surcharge));
|
|
|
|
|
|
|
|
|
|
|
|
BigDecimal channel_surcharge = jsonObject.getBigDecimal("channel_surcharge");
|
|
|
|
BigDecimal channel_surcharge = jsonObject.getBigDecimal("channel_surcharge");
|
|
|
|
total_channel_surcharge = total_channel_surcharge.add(channel_surcharge);
|
|
|
|
total_channel_surcharge = total_channel_surcharge.add(channel_surcharge);
|
|
|
|
jsonObject.put("channel_surcharge",df1.format(channel_surcharge));
|
|
|
|
jsonObject.put("channel_surcharge", df1.format(channel_surcharge));
|
|
|
|
|
|
|
|
|
|
|
|
BigDecimal tax_amount = jsonObject.getBigDecimal("tax_amount");
|
|
|
|
BigDecimal tax_amount = jsonObject.getBigDecimal("tax_amount");
|
|
|
|
total_tax_amount = total_tax_amount.add(tax_amount);
|
|
|
|
total_tax_amount = total_tax_amount.add(tax_amount);
|
|
|
|
jsonObject.put("tax_amount",df1.format(tax_amount));
|
|
|
|
jsonObject.put("tax_amount", df1.format(tax_amount));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
String finalTotal_settle_amount = df1.format(total_settle_amount);
|
|
|
|
String finalTotal_settle_amount = df1.format(total_settle_amount);
|
|
|
|
String finalTotal_credit_amount = df1.format(total_credit_amount);
|
|
|
|
String finalTotal_credit_amount = df1.format(total_credit_amount);
|
|
|
@ -330,8 +337,8 @@ public class DailyReportImp implements DailyReport {
|
|
|
|
String finalTotal_royal_surcharge = df1.format(total_royal_surcharge);
|
|
|
|
String finalTotal_royal_surcharge = df1.format(total_royal_surcharge);
|
|
|
|
String finalTotal_channel_surcharge = df1.format(total_channel_surcharge);
|
|
|
|
String finalTotal_channel_surcharge = df1.format(total_channel_surcharge);
|
|
|
|
String finalTotal_tax_amount = df1.format(total_tax_amount);
|
|
|
|
String finalTotal_tax_amount = df1.format(total_tax_amount);
|
|
|
|
return new JSONObject(){{
|
|
|
|
return new JSONObject() {{
|
|
|
|
put("total_settle_amount",finalTotal_settle_amount);
|
|
|
|
put("total_settle_amount", finalTotal_settle_amount);
|
|
|
|
put("total_credit_amount", finalTotal_credit_amount);
|
|
|
|
put("total_credit_amount", finalTotal_credit_amount);
|
|
|
|
put("total_debit_amount", finalTotal_debit_amount);
|
|
|
|
put("total_debit_amount", finalTotal_debit_amount);
|
|
|
|
put("total_net_trading", finalTotal_net_trading);
|
|
|
|
put("total_net_trading", finalTotal_net_trading);
|
|
|
@ -343,28 +350,27 @@ public class DailyReportImp implements DailyReport {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private JSONObject percentage(BigDecimal num1, BigDecimal num2) {
|
|
|
|
private JSONObject percentage(BigDecimal num1, BigDecimal num2) {
|
|
|
|
boolean positive =true;
|
|
|
|
boolean positive = true;
|
|
|
|
double n1 = num1.doubleValue();
|
|
|
|
double n1 = num1.doubleValue();
|
|
|
|
double n2 = num2.doubleValue();
|
|
|
|
double n2 = num2.doubleValue();
|
|
|
|
if(Double.compare(n2, 0) == 0)
|
|
|
|
if (Double.compare(n2, 0) == 0)
|
|
|
|
throw new RuntimeException("输入有误");
|
|
|
|
throw new RuntimeException("输入有误");
|
|
|
|
double ratio = n1 / n2;
|
|
|
|
double ratio = n1 / n2;
|
|
|
|
if(ratio<1){
|
|
|
|
if (ratio < 1) {
|
|
|
|
positive = false;
|
|
|
|
positive = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
NumberFormat format = NumberFormat.getPercentInstance();
|
|
|
|
NumberFormat format = NumberFormat.getPercentInstance();
|
|
|
|
format.setMaximumFractionDigits(2);
|
|
|
|
format.setMaximumFractionDigits(2);
|
|
|
|
String result=format.format(ratio<1?1-ratio:ratio-1);
|
|
|
|
String result = format.format(ratio < 1 ? 1 - ratio : ratio - 1);
|
|
|
|
|
|
|
|
|
|
|
|
boolean finalPositive = positive;
|
|
|
|
boolean finalPositive = positive;
|
|
|
|
return new JSONObject(){{
|
|
|
|
return new JSONObject() {{
|
|
|
|
put("compare",result);
|
|
|
|
put("compare", result);
|
|
|
|
put("positive", finalPositive);
|
|
|
|
put("positive", finalPositive);
|
|
|
|
}};
|
|
|
|
}};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public JSONObject getReport(String reportId, String openid) {
|
|
|
|
public JSONObject getReport(String reportId, String openid) {
|
|
|
|
JSONObject manager = managerMapper.findByWxOpenId(openid);
|
|
|
|
JSONObject manager = managerMapper.findByWxOpenId(openid);
|
|
|
@ -382,13 +388,14 @@ public class DailyReportImp implements DailyReport {
|
|
|
|
report.put("report_date", report.getDate("report_date"));
|
|
|
|
report.put("report_date", report.getDate("report_date"));
|
|
|
|
return report;
|
|
|
|
return report;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void publishMessages(List<JSONObject> users, String reportId, String range) {
|
|
|
|
private void publishMessages(List<JSONObject> users, String reportId, String range) {
|
|
|
|
ArrayList<String> clean_users = new ArrayList<>();
|
|
|
|
ArrayList<String> clean_users = new ArrayList<>();
|
|
|
|
String url = PlatformEnvironment.getEnv().concatUrl("/analysis/daily_reports/" + reportId);
|
|
|
|
String url = PlatformEnvironment.getEnv().concatUrl("/analysis/daily_reports/" + reportId);
|
|
|
|
String time = DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm");
|
|
|
|
String time = DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm");
|
|
|
|
for (JSONObject user : users) {
|
|
|
|
for (JSONObject user : users) {
|
|
|
|
String openId = user.getString("wx_openid");
|
|
|
|
String openId = user.getString("wx_openid");
|
|
|
|
if(openId!=null && clean_users.contains(openId)){
|
|
|
|
if (openId != null && clean_users.contains(openId)) {
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (openId != null) {
|
|
|
|
if (openId != null) {
|
|
|
@ -403,7 +410,7 @@ public class DailyReportImp implements DailyReport {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
logger.info("DailyReportUsers"+clean_users.toString());
|
|
|
|
logger.info("DailyReportUsers" + clean_users.toString());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private TemplateMessage initMsg(String range, String url, String time, String openId, String templateId) {
|
|
|
|
private TemplateMessage initMsg(String range, String url, String time, String openId, String templateId) {
|
|
|
|