diff --git a/src/main/java/au/com/royalpay/payment/manage/bdprize/core/impls/BDPrizeServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/bdprize/core/impls/BDPrizeServiceImpl.java index 96983fe27..cd11363f8 100644 --- a/src/main/java/au/com/royalpay/payment/manage/bdprize/core/impls/BDPrizeServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/bdprize/core/impls/BDPrizeServiceImpl.java @@ -693,7 +693,20 @@ public class BDPrizeServiceImpl implements BDPrizeService { @Override public List getBDTeamKpiCompletionDegree(String month) { - List prizeAmountAndBdTypeList = financialBDPrizeLogMapper.findBdPrizeAmountAndBdType(getReportByMonth(month)); + JSONObject report = financialBDPrizeRecordMapper.findByMonth(month); + List prizeAmountAndBdTypeList = new ArrayList<>(); + if (report == null) { + try { + Date start_date = DateUtils.parseDate(month+"-01","yyyy-MM-dd"); + Date end_date = DateUtils.addMonths(start_date,1); + prizeAmountAndBdTypeList = financialBDPrizeLogMapper.findBdPrizeAmountRealTime(start_date,end_date); + } catch (ParseException e) { + e.printStackTrace(); + } + }else{ + prizeAmountAndBdTypeList = financialBDPrizeLogMapper.findBdPrizeAmountAndBdType(getReportByMonth(month)); + } + for (JSONObject prize : prizeAmountAndBdTypeList) { BigDecimal kpi = financialBDCommissionConfigMapper.findCurrentCommissionMaxAmount(month, prize.getIntValue("bd_type")); prize.put("kpi", kpi); @@ -707,12 +720,36 @@ public class BDPrizeServiceImpl implements BDPrizeService { @Override public List getBDProportionByTeamType(String month, String teamType) { - return financialBDConfigMapper.findManagerByTeamType(teamType, getReportByMonth(month)); + JSONObject report = financialBDPrizeRecordMapper.findByMonth(month); + if (report == null) { + try { + Date start_date = DateUtils.parseDate(month+"-01","yyyy-MM-dd"); + Date end_date = DateUtils.addMonths(start_date,1); + return financialBDConfigMapper.findManagerByTeamTypeRealTime(teamType,start_date,end_date); + } catch (ParseException e) { + e.printStackTrace(); + throw new BadRequestException("Month is wrong"); + } + }else { + return financialBDConfigMapper.findManagerByTeamType(teamType, getReportByMonth(month)); + } } @Override public JSONObject getBDKpiByManagerId(String month, String manager_id) { - return financialBDPrizeLogMapper.findByReportAndBDTotal(getReportByMonth(month), manager_id); + JSONObject report = financialBDPrizeRecordMapper.findByMonth(month); + if (report == null) { + try { + Date start_date = DateUtils.parseDate(month+"-01","yyyy-MM-dd"); + Date end_date = DateUtils.addMonths(start_date,1); + return financialBDPrizeLogMapper.findByReportAndBDTotalRealTime(manager_id,start_date,end_date); + } catch (ParseException e) { + e.printStackTrace(); + throw new BadRequestException("Month is wrong"); + } + }else { + return financialBDPrizeLogMapper.findByReportAndBDTotal(getReportByMonth(month), manager_id); + } } public String getReportByMonth(String month) { diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialBDConfigMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialBDConfigMapper.java index 9037c1afc..eeb7296e9 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialBDConfigMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialBDConfigMapper.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject; import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; +import java.util.Date; import java.util.List; /** @@ -39,4 +40,6 @@ public interface FinancialBDConfigMapper { JSONObject listCityCommission(@Param("city") String city, @Param("record_id") String record_id); List findManagerByTeamType(@Param("bd_type") String bdType, @Param("record_id") String record_id); + + List findManagerByTeamTypeRealTime(@Param("bd_type") String bdType, @Param("start_date") Date start_date, @Param("end_date") Date end_date); } diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialBDPrizeLogMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialBDPrizeLogMapper.java index 2342a4a73..daccb3c33 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialBDPrizeLogMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialBDPrizeLogMapper.java @@ -9,6 +9,7 @@ import com.github.miemiedev.mybatis.paginator.domain.PageBounds; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.util.Date; import java.util.List; /** @@ -39,6 +40,27 @@ public interface FinancialBDPrizeLogMapper { "GROUP BY fbpl.manager_id") JSONObject findByReportAndBDTotal(@Param("record_id") String recordId, @Param("manager_id") String managerId); + + @Select("SELECT\n" + + "\tc.bd_name,\n" + + "\tc.manager_id,\n" + + "\tc.kpi_amount,\n" + + "\tsum( o.total * d.proportion ) AS total_amount \n" + + "FROM\n" + + "\tstatistics_customer_order o\n" + + "\tINNER JOIN sys_clients sc ON sc.client_id = o.client_id\n" + + "\tINNER JOIN sys_client_bd d ON o.client_id = d.client_id\n" + + "\tINNER JOIN financial_bd_config c ON d.bd_id = c.manager_id \n" + + "WHERE\n" + + "\tsc.org_id = 1 \n" + + "\tAND o.date >= #{start_date} \n" + + "\tAND o.date < #{end_date} \n" + + "\tAND d.start_date <= o.date AND d.is_valid = 1 AND ( d.end_date IS NULL OR d.end_date > o.date \n" + + "\t) \n" + + "\tAND c.get_prize = 1 \n" + + "\tAND c.manager_id = #{manager_id}") + JSONObject findByReportAndBDTotalRealTime(@Param("manager_id") String manage_id, @Param("start_date") Date start_date, @Param("end_date") Date end_date); + @Select("SELECT prize_log_id,record_id,manager_id,bd_name,bd_level,SUM(total_amount) total_amount," + "SUM(total_prize) total_prize,SUM(total_donation) total_donation, SUM(send_prize) send_prize," + "SUM(hold_prize) hold_prize,last_punish,prize_type FROM financial_bd_prize_log fbpl " + @@ -67,4 +89,23 @@ public interface FinancialBDPrizeLogMapper { "WHERE prize_type = 1 AND record_id = #{record_id}\n" + "GROUP BY l.manager_id") List findBdPrizeAmountAndBdType(@Param("record_id") String recordId); + + @Select("SELECT\n" + + "\tc.*,\n" + + "\tsum( ( o.total ) * d.proportion ) AS total_amount\n" + + "FROM\n" + + "\tstatistics_customer_order o\n" + + "\tINNER JOIN sys_clients sc ON sc.client_id = o.client_id\n" + + "\tINNER JOIN sys_client_bd d ON o.client_id = d.client_id\n" + + "\tINNER JOIN financial_bd_config c ON d.bd_id = c.manager_id \n" + + "WHERE\n" + + "\tsc.org_id = 1 \n" + + "\tAND o.date >= #{start_date} \n" + + "\tAND o.date < #{end_date} \n" + + "\tAND d.start_date <= o.date AND d.is_valid = 1 AND ( d.end_date IS NULL OR d.end_date > o.date \n" + + "\t) \n" + + "\tAND c.get_prize = 1 \n" + + "GROUP BY\n" + + "\tc.bd_group") + List findBdPrizeAmountRealTime(@Param("start_date") Date start_date, @Param("end_date") Date end_date); } diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialBDConfigMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialBDConfigMapper.xml index 214a67c88..755fe1e07 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialBDConfigMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialBDConfigMapper.xml @@ -125,4 +125,27 @@ group by manager_id ) log ON log.manager_id = config.manager_id - \ No newline at end of file + + +