Prechádzať zdrojové kódy

修改内容:付费趋势总

shishaosong 1 rok pred
rodič
commit
3ae2b5b93c

+ 85 - 165
game-data/game-data-serve/src/main/java/com/zanxiang/game/data/serve/service/impl/AccountAgentDayServiceImpl.java

@@ -219,58 +219,75 @@ public class AccountAgentDayServiceImpl implements IAccountAgentDayService {
 
     private void setDayTotalRechargeTrend(GamePromoteDayTotalVO item) {
         BigDecimal trendDay1Money = new BigDecimal(item.getTrendDay1().split("/")[0]);
-        item.setRechargeTrendDay1(getSumRechargeTrendVO(item.getTrendDay1(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay2(getSumRechargeTrendVO(item.getTrendDay2(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay3(getSumRechargeTrendVO(item.getTrendDay3(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay4(getSumRechargeTrendVO(item.getTrendDay4(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay5(getSumRechargeTrendVO(item.getTrendDay5(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay6(getSumRechargeTrendVO(item.getTrendDay6(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay7(getSumRechargeTrendVO(item.getTrendDay7(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay8(getSumRechargeTrendVO(item.getTrendDay8(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay9(getSumRechargeTrendVO(item.getTrendDay9(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay10(getSumRechargeTrendVO(item.getTrendDay10(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay11(getSumRechargeTrendVO(item.getTrendDay11(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay12(getSumRechargeTrendVO(item.getTrendDay12(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay13(getSumRechargeTrendVO(item.getTrendDay13(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay14(getSumRechargeTrendVO(item.getTrendDay14(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay15(getSumRechargeTrendVO(item.getTrendDay15(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay16(getSumRechargeTrendVO(item.getTrendDay16(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay17(getSumRechargeTrendVO(item.getTrendDay17(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay18(getSumRechargeTrendVO(item.getTrendDay18(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay19(getSumRechargeTrendVO(item.getTrendDay19(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay20(getSumRechargeTrendVO(item.getTrendDay20(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay21(getSumRechargeTrendVO(item.getTrendDay21(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay22(getSumRechargeTrendVO(item.getTrendDay22(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay23(getSumRechargeTrendVO(item.getTrendDay23(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay24(getSumRechargeTrendVO(item.getTrendDay24(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay25(getSumRechargeTrendVO(item.getTrendDay25(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay26(getSumRechargeTrendVO(item.getTrendDay26(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay27(getSumRechargeTrendVO(item.getTrendDay27(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay28(getSumRechargeTrendVO(item.getTrendDay28(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay29(getSumRechargeTrendVO(item.getTrendDay29(), trendDay1Money, item.getCost()));
-
-        item.setRechargeTrendMonth1(getSumRechargeTrendVO(item.getTrendMonth1(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendMonth2(getSumRechargeTrendVO(item.getTrendMonth2(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendMonth3(getSumRechargeTrendVO(item.getTrendMonth3(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendMonth6(getSumRechargeTrendVO(item.getTrendMonth6(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendYear1(getSumRechargeTrendVO(item.getTrendYear1(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendTotal(getSumRechargeTrendVO(item.getTrendTotal(), trendDay1Money, item.getCost()));
+        item.setRechargeTrendDay1(getSumRechargeTrendVO(item.getTrendDay1()));
+        item.setRechargeTrendDay2(getSumRechargeTrendVO(item.getTrendDay2()));
+        item.setRechargeTrendDay3(getSumRechargeTrendVO(item.getTrendDay3()));
+        item.setRechargeTrendDay4(getSumRechargeTrendVO(item.getTrendDay4()));
+        item.setRechargeTrendDay5(getSumRechargeTrendVO(item.getTrendDay5()));
+        item.setRechargeTrendDay6(getSumRechargeTrendVO(item.getTrendDay6()));
+        item.setRechargeTrendDay7(getSumRechargeTrendVO(item.getTrendDay7()));
+        item.setRechargeTrendDay8(getSumRechargeTrendVO(item.getTrendDay8()));
+        item.setRechargeTrendDay9(getSumRechargeTrendVO(item.getTrendDay9()));
+        item.setRechargeTrendDay10(getSumRechargeTrendVO(item.getTrendDay10()));
+        item.setRechargeTrendDay11(getSumRechargeTrendVO(item.getTrendDay11()));
+        item.setRechargeTrendDay12(getSumRechargeTrendVO(item.getTrendDay12()));
+        item.setRechargeTrendDay13(getSumRechargeTrendVO(item.getTrendDay13()));
+        item.setRechargeTrendDay14(getSumRechargeTrendVO(item.getTrendDay14()));
+        item.setRechargeTrendDay15(getSumRechargeTrendVO(item.getTrendDay15()));
+        item.setRechargeTrendDay16(getSumRechargeTrendVO(item.getTrendDay16()));
+        item.setRechargeTrendDay17(getSumRechargeTrendVO(item.getTrendDay17()));
+        item.setRechargeTrendDay18(getSumRechargeTrendVO(item.getTrendDay18()));
+        item.setRechargeTrendDay19(getSumRechargeTrendVO(item.getTrendDay19()));
+        item.setRechargeTrendDay20(getSumRechargeTrendVO(item.getTrendDay20()));
+        item.setRechargeTrendDay21(getSumRechargeTrendVO(item.getTrendDay21()));
+        item.setRechargeTrendDay22(getSumRechargeTrendVO(item.getTrendDay22()));
+        item.setRechargeTrendDay23(getSumRechargeTrendVO(item.getTrendDay23()));
+        item.setRechargeTrendDay24(getSumRechargeTrendVO(item.getTrendDay24()));
+        item.setRechargeTrendDay25(getSumRechargeTrendVO(item.getTrendDay25()));
+        item.setRechargeTrendDay26(getSumRechargeTrendVO(item.getTrendDay26()));
+        item.setRechargeTrendDay27(getSumRechargeTrendVO(item.getTrendDay27()));
+        item.setRechargeTrendDay28(getSumRechargeTrendVO(item.getTrendDay28()));
+        item.setRechargeTrendDay29(getSumRechargeTrendVO(item.getTrendDay29()));
+
+        item.setRechargeTrendMonth1(getSumRechargeTrendVO(item.getTrendMonth1()));
+        item.setRechargeTrendMonth2(getSumRechargeTrendVO(item.getTrendMonth2()));
+        item.setRechargeTrendMonth3(getSumRechargeTrendVO(item.getTrendMonth3()));
+        item.setRechargeTrendMonth6(getSumRechargeTrendVO(item.getTrendMonth6()));
+        item.setRechargeTrendYear1(getSumRechargeTrendVO(item.getTrendYear1()));
+
+        String[] trendDayResult = item.getTrendTotal().split("/");
+        BigDecimal dayTotalRecharge = new BigDecimal(trendDayResult[1]);
+        BigDecimal dayRecharge = new BigDecimal(trendDayResult[0]);
+        BigDecimal cost = item.getCost();
+        item.setRechargeTrendTotal(RechargeTrendVO.builder()
+                .rechargeMoney(new BigDecimal(trendDayResult[0]))
+                .rechargeUserCount(Long.valueOf(trendDayResult[2]))
+                .rechargeMoneyTotal(dayTotalRecharge)
+                .increase(cost.compareTo(BigDecimal.ZERO) == 0 ?
+                        BigDecimal.ZERO : dayRecharge.divide(cost, 4, RoundingMode.DOWN))
+                .back(cost.compareTo(BigDecimal.ZERO) == 0 ?
+                        BigDecimal.ZERO : dayTotalRecharge.divide(cost, 4, RoundingMode.DOWN))
+                .multiples(trendDay1Money.compareTo(BigDecimal.ZERO) == 0 ?
+                        BigDecimal.ZERO : dayTotalRecharge.divide(trendDay1Money, 4, RoundingMode.DOWN))
+                .build());
     }
 
-    private RechargeTrendVO getSumRechargeTrendVO(String trendDay, BigDecimal trendDay1Money, BigDecimal cost) {
+    private RechargeTrendVO getSumRechargeTrendVO(String trendDay) {
         String[] trendDayResult = trendDay.split("/");
         BigDecimal dayTotalRecharge = new BigDecimal(trendDayResult[1]);
         BigDecimal dayRecharge = new BigDecimal(trendDayResult[0]);
+        BigDecimal currCost = new BigDecimal(trendDayResult[3]);
+        BigDecimal currDay1 = new BigDecimal(trendDayResult[4]);
         return RechargeTrendVO.builder()
                 .rechargeMoney(dayRecharge)
                 .rechargeUserCount(Long.valueOf(trendDayResult[2]))
                 .rechargeMoneyTotal(dayTotalRecharge)
-                .increase(cost.compareTo(BigDecimal.ZERO) == 0 ?
-                        BigDecimal.ZERO:dayRecharge.divide(cost,4, RoundingMode.DOWN))
-                .back(cost.compareTo(BigDecimal.ZERO) == 0 ?
-                        BigDecimal.ZERO:dayTotalRecharge.divide(cost,4, RoundingMode.DOWN))
-                .multiples(trendDay1Money.compareTo(BigDecimal.ZERO) == 0 ?
-                        BigDecimal.ZERO:dayTotalRecharge.divide(trendDay1Money,4, RoundingMode.DOWN))
+                .increase(currCost.compareTo(BigDecimal.ZERO) == 0 ?
+                        BigDecimal.ZERO:dayRecharge.divide(currCost,4, RoundingMode.DOWN))
+                .back(currCost.compareTo(BigDecimal.ZERO) == 0 ?
+                        BigDecimal.ZERO:dayTotalRecharge.divide(currCost,4, RoundingMode.DOWN))
+                .multiples(currDay1.compareTo(BigDecimal.ZERO) == 0 ?
+                        BigDecimal.ZERO:dayTotalRecharge.divide(currDay1,4, RoundingMode.DOWN))
                 .build();
     }
 
@@ -372,9 +389,6 @@ public class AccountAgentDayServiceImpl implements IAccountAgentDayService {
         showSql.setParam("rechargeEndDay", dto.getRechargeEndDay());
         //循环总数据的每条数据
         List<GamePromoteTotalVO> hasRechargeDayList = list.stream().map(item -> {
-
-            setTotalRechargeTrend(item);
-
             showSql.setParam("sourceSystem", item.getSourceSystem());
             showSql.setParam("agentId", item.getAgentId());
             showSql.setParam("accountId", item.getAccountId());
@@ -488,46 +502,6 @@ public class AccountAgentDayServiceImpl implements IAccountAgentDayService {
         return new Page<>(hasRechargeDayList, pager);
     }
 
-    private void setTotalRechargeTrend(GamePromoteTotalVO item) {
-        BigDecimal trendDay1Money = new BigDecimal(item.getTrendDay1().split("/")[0]);
-        item.setRechargeTrendDay1(getSumRechargeTrendVO(item.getTrendDay1(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay2(getSumRechargeTrendVO(item.getTrendDay2(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay3(getSumRechargeTrendVO(item.getTrendDay3(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay4(getSumRechargeTrendVO(item.getTrendDay4(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay5(getSumRechargeTrendVO(item.getTrendDay5(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay6(getSumRechargeTrendVO(item.getTrendDay6(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay7(getSumRechargeTrendVO(item.getTrendDay7(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay8(getSumRechargeTrendVO(item.getTrendDay8(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay9(getSumRechargeTrendVO(item.getTrendDay9(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay10(getSumRechargeTrendVO(item.getTrendDay10(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay11(getSumRechargeTrendVO(item.getTrendDay11(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay12(getSumRechargeTrendVO(item.getTrendDay12(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay13(getSumRechargeTrendVO(item.getTrendDay13(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay14(getSumRechargeTrendVO(item.getTrendDay14(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay15(getSumRechargeTrendVO(item.getTrendDay15(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay16(getSumRechargeTrendVO(item.getTrendDay16(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay17(getSumRechargeTrendVO(item.getTrendDay17(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay18(getSumRechargeTrendVO(item.getTrendDay18(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay19(getSumRechargeTrendVO(item.getTrendDay19(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay20(getSumRechargeTrendVO(item.getTrendDay20(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay21(getSumRechargeTrendVO(item.getTrendDay21(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay22(getSumRechargeTrendVO(item.getTrendDay22(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay23(getSumRechargeTrendVO(item.getTrendDay23(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay24(getSumRechargeTrendVO(item.getTrendDay24(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay25(getSumRechargeTrendVO(item.getTrendDay25(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay26(getSumRechargeTrendVO(item.getTrendDay26(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay27(getSumRechargeTrendVO(item.getTrendDay27(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay28(getSumRechargeTrendVO(item.getTrendDay28(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay29(getSumRechargeTrendVO(item.getTrendDay29(), trendDay1Money, item.getCost()));
-
-        item.setRechargeTrendMonth1(getSumRechargeTrendVO(item.getTrendMonth1(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendMonth2(getSumRechargeTrendVO(item.getTrendMonth2(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendMonth3(getSumRechargeTrendVO(item.getTrendMonth3(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendMonth6(getSumRechargeTrendVO(item.getTrendMonth6(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendYear1(getSumRechargeTrendVO(item.getTrendYear1(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendTotal(getSumRechargeTrendVO(item.getTrendTotal(), trendDay1Money, item.getCost()));
-    }
-
     @Override
     public Map<LocalDate, List<AgentDayAgainVO>> accountAgentDayAgain(AgentDayAgainDTO dto) {
 
@@ -821,50 +795,9 @@ public class AccountAgentDayServiceImpl implements IAccountAgentDayService {
                 BigDecimal.ZERO : gamePromoteTotalSumVO.getCost().divide(BigDecimal.valueOf(gamePromoteTotalSumVO.getOldUserRechargeCount()), 4, RoundingMode.DOWN));
         gamePromoteTotalSumVO.setShowRechargeCountCost(gamePromoteTotalSumVO.getShowRechargeCount() == 0 ?
                 BigDecimal.ZERO : gamePromoteTotalSumVO.getCost().divide(BigDecimal.valueOf(gamePromoteTotalSumVO.getShowRechargeCount()), 4, RoundingMode.DOWN));
-        setTotalSumRechargeTrend(gamePromoteTotalSumVO);
         return gamePromoteTotalSumVO;
     }
 
-    private void setTotalSumRechargeTrend(GamePromoteTotalSumVO item) {
-        BigDecimal trendDay1Money = new BigDecimal(item.getTrendDay1().split("/")[0]);
-        item.setRechargeTrendDay1(getSumRechargeTrendVO(item.getTrendDay1(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay2(getSumRechargeTrendVO(item.getTrendDay2(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay3(getSumRechargeTrendVO(item.getTrendDay3(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay4(getSumRechargeTrendVO(item.getTrendDay4(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay5(getSumRechargeTrendVO(item.getTrendDay5(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay6(getSumRechargeTrendVO(item.getTrendDay6(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay7(getSumRechargeTrendVO(item.getTrendDay7(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay8(getSumRechargeTrendVO(item.getTrendDay8(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay9(getSumRechargeTrendVO(item.getTrendDay9(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay10(getSumRechargeTrendVO(item.getTrendDay10(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay11(getSumRechargeTrendVO(item.getTrendDay11(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay12(getSumRechargeTrendVO(item.getTrendDay12(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay13(getSumRechargeTrendVO(item.getTrendDay13(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay14(getSumRechargeTrendVO(item.getTrendDay14(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay15(getSumRechargeTrendVO(item.getTrendDay15(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay16(getSumRechargeTrendVO(item.getTrendDay16(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay17(getSumRechargeTrendVO(item.getTrendDay17(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay18(getSumRechargeTrendVO(item.getTrendDay18(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay19(getSumRechargeTrendVO(item.getTrendDay19(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay20(getSumRechargeTrendVO(item.getTrendDay20(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay21(getSumRechargeTrendVO(item.getTrendDay21(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay22(getSumRechargeTrendVO(item.getTrendDay22(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay23(getSumRechargeTrendVO(item.getTrendDay23(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay24(getSumRechargeTrendVO(item.getTrendDay24(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay25(getSumRechargeTrendVO(item.getTrendDay25(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay26(getSumRechargeTrendVO(item.getTrendDay26(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay27(getSumRechargeTrendVO(item.getTrendDay27(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay28(getSumRechargeTrendVO(item.getTrendDay28(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendDay29(getSumRechargeTrendVO(item.getTrendDay29(), trendDay1Money, item.getCost()));
-
-        item.setRechargeTrendMonth1(getSumRechargeTrendVO(item.getTrendMonth1(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendMonth2(getSumRechargeTrendVO(item.getTrendMonth2(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendMonth3(getSumRechargeTrendVO(item.getTrendMonth3(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendMonth6(getSumRechargeTrendVO(item.getTrendMonth6(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendYear1(getSumRechargeTrendVO(item.getTrendYear1(), trendDay1Money, item.getCost()));
-        item.setRechargeTrendTotal(getSumRechargeTrendVO(item.getTrendTotal(), trendDay1Money, item.getCost()));
-    }
-
     private SimpleCriteria getSimpleCriteria(GamePromoteTotalSumDTO dto) {
         SimpleCriteria cri = Cnd.cri();
         // 组装条件
@@ -1212,11 +1145,21 @@ public class AccountAgentDayServiceImpl implements IAccountAgentDayService {
                          """
                 +trendDay()+
                         """
-                         CONCAT(SUM(CAST(SPLIT_PART(amount_m1 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m1, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m1, '/', 2) AS BIGINT))) AS trend_month1,
-                         CONCAT(SUM(CAST(SPLIT_PART(amount_m2 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m2, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m2, '/', 2) AS BIGINT))) AS trend_month2,
-                         CONCAT(SUM(CAST(SPLIT_PART(amount_m3 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m3, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m3, '/', 2) AS BIGINT))) AS trend_month3,
-                         CONCAT(SUM(CAST(SPLIT_PART(amount_m6 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m6, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m6, '/', 2) AS BIGINT))) AS trend_month6,
-                         CONCAT(SUM(CAST(SPLIT_PART(amount_y1 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_y1, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_y1, '/', 2) AS BIGINT))) AS trend_year1,
+                         CONCAT(SUM(CAST(SPLIT_PART(amount_m1 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m1, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m1, '/', 2) AS BIGINT)),'/',
+                            SUM(IF(DATE_ADD(dt, INTERVAL 29 DAY) > CURRENT_DATE(), 0, cost)), '/',
+                            SUM(IF(DATE_ADD(dt, INTERVAL 29 DAY) > CURRENT_DATE(), 0, CAST(SPLIT_PART(amount_d1 , '/', 1) AS DECIMAL(10, 2))))) AS trend_month1,
+                         CONCAT(SUM(CAST(SPLIT_PART(amount_m2 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m2, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m2, '/', 2) AS BIGINT)),'/',
+                            SUM(IF(DATE_ADD(dt, INTERVAL 59 DAY) > CURRENT_DATE(), 0, cost)), '/',
+                            SUM(IF(DATE_ADD(dt, INTERVAL 59 DAY) > CURRENT_DATE(), 0, CAST(SPLIT_PART(amount_d1 , '/', 1) AS DECIMAL(10, 2))))) AS trend_month2,
+                         CONCAT(SUM(CAST(SPLIT_PART(amount_m3 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m3, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m3, '/', 2) AS BIGINT)),'/',
+                            SUM(IF(DATE_ADD(dt, INTERVAL 89 DAY) > CURRENT_DATE(), 0, cost)), '/',
+                            SUM(IF(DATE_ADD(dt, INTERVAL 89 DAY) > CURRENT_DATE(), 0, CAST(SPLIT_PART(amount_d1 , '/', 1) AS DECIMAL(10, 2))))) AS trend_month3,
+                         CONCAT(SUM(CAST(SPLIT_PART(amount_m6 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m6, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m6, '/', 2) AS BIGINT)),'/',
+                            SUM(IF(DATE_ADD(dt, INTERVAL 179 DAY) > CURRENT_DATE(), 0, cost)), '/',
+                            SUM(IF(DATE_ADD(dt, INTERVAL 179 DAY) > CURRENT_DATE(), 0, CAST(SPLIT_PART(amount_d1 , '/', 1) AS DECIMAL(10, 2))))) AS trend_month6,
+                         CONCAT(SUM(CAST(SPLIT_PART(amount_y1 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_y1, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_y1, '/', 2) AS BIGINT)),'/',
+                            SUM(IF(DATE_ADD(dt, INTERVAL 359 DAY) > CURRENT_DATE(), 0, cost)), '/',
+                            SUM(IF(DATE_ADD(dt, INTERVAL 359 DAY) > CURRENT_DATE(), 0, CAST(SPLIT_PART(amount_d1 , '/', 1) AS DECIMAL(10, 2))))) AS trend_year1,
                          CONCAT(SUM(CAST(SPLIT_PART(amount_sum , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_sum, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_sum, '/', 2) AS BIGINT))) AS trend_total,
                     round(if(sum(register_num) > 0, sum(first_new_user_amount_num) / sum(register_num), 0), 4) as first_recharge_rate,
                     round(if(sum(register_num) > 0, sum(buy_new_user_total_amount_num) / sum(register_num), 0), 4) as buy_user_recharge_rate,
@@ -1242,23 +1185,18 @@ public class AccountAgentDayServiceImpl implements IAccountAgentDayService {
                         """;
     }
 
-    private String trendDay(){
+    private String trendDay() {
         StringBuilder trendDay = new StringBuilder(StringUtils.EMPTY);
+        LocalDate now = LocalDate.now();
         for (int day = 1; day <= 29; day++) {
-            trendDay.append("CONCAT(")
-                    .append("SUM(CAST(SPLIT_PART(amount_d")
-                    .append(day)
-                    .append(" , '/', 1) AS DECIMAL(10, 2))), ")
-                    .append("'/', ")
-                    .append("SUM(CAST(SPLIT_PART(amount_d")
-                    .append(day)
-                    .append(", '/', 6) AS DECIMAL(10, 2))), ")
-                    .append("'/', ")
-                    .append("SUM(CAST(SPLIT_PART(amount_d")
-                    .append(day)
-                    .append(", '/', 2) AS BIGINT))")
-                    .append(") AS trend_day")
-                    .append(day).append(",");
+            trendDay.append("""
+                    CONCAT(
+                        SUM(CAST(SPLIT_PART(amount_d%s , '/', 1) AS DECIMAL(10, 2))), '/',
+                        SUM(CAST(SPLIT_PART(amount_d%s, '/', 6) AS DECIMAL(10, 2))), '/',
+                        SUM(CAST(SPLIT_PART(amount_d%s, '/', 2) AS BIGINT)), '/',
+                        SUM(IF(DATE_ADD(dt, INTERVAL %s DAY) > '%s', 0, cost)), '/',
+                        SUM(IF(DATE_ADD(dt, INTERVAL %s DAY) > '%s', 0, CAST(SPLIT_PART(amount_d1 , '/', 1) AS DECIMAL(10, 2))))
+                    ) AS trend_day%s,""".formatted(day, day, day, day - 1, now,day-1,now,day));
         }
         return trendDay.toString();
     }
@@ -1362,15 +1300,6 @@ public class AccountAgentDayServiceImpl implements IAccountAgentDayService {
                          round(if(sum(cost) > 0, sum(SPLIT_PART(amount_m6, '/', 6)) / sum(cost), 0), 4) as roi_day180,
                          round(if(sum(cost) > 0, sum(SPLIT_PART(amount_y1, '/', 6)) / sum(cost), 0), 4) as roi_year1,
                          round(if(sum(cost) > 0, sum(SPLIT_PART(amount_sum, '/', 6)) / sum(cost), 0), 4) as roi_total,
-                          """
-                            +trendDay()+
-                          """
-                         CONCAT(SUM(CAST(SPLIT_PART(amount_m1 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m1, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m1, '/', 2) AS BIGINT))) AS trend_month1,
-                         CONCAT(SUM(CAST(SPLIT_PART(amount_m2 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m2, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m2, '/', 2) AS BIGINT))) AS trend_month2,
-                         CONCAT(SUM(CAST(SPLIT_PART(amount_m3 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m3, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m3, '/', 2) AS BIGINT))) AS trend_month3,
-                         CONCAT(SUM(CAST(SPLIT_PART(amount_m6 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m6, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m6, '/', 2) AS BIGINT))) AS trend_month6,
-                         CONCAT(SUM(CAST(SPLIT_PART(amount_y1 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_y1, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_y1, '/', 2) AS BIGINT))) AS trend_year1,
-                         CONCAT(SUM(CAST(SPLIT_PART(amount_sum , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_sum, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_sum, '/', 2) AS BIGINT))) AS trend_total,
                 	round(if(sum(a.register_num) > 0, sum(a.first_new_user_amount_num) / sum(a.register_num), 0), 4) as first_recharge_rate,
                 	round(if(sum(a.register_num) > 0, sum(a.new_user_total_amount_num) / sum(a.register_num), 0), 4) as today_recharge_rate,
                 	round(if(sum(a.first_new_user_amount_count) > 0, sum(a.first_new_user_amount) / sum(a.first_new_user_amount_count), 0), 4) as avg_first_user_recharge,
@@ -1486,15 +1415,6 @@ public class AccountAgentDayServiceImpl implements IAccountAgentDayService {
                          round(if(sum(cost) > 0, sum(SPLIT_PART(amount_m6, '/', 6)) / sum(cost), 0), 4) as roi_day180,
                          round(if(sum(cost) > 0, sum(SPLIT_PART(amount_y1, '/', 6)) / sum(cost), 0), 4) as roi_year1,
                          round(if(sum(cost) > 0, sum(SPLIT_PART(amount_sum, '/', 6)) / sum(cost), 0), 4) as roi_total,
-                        """
-                +trendDay()+
-                        """
-                         CONCAT(SUM(CAST(SPLIT_PART(amount_m1 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m1, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m1, '/', 2) AS BIGINT))) AS trend_month1,
-                         CONCAT(SUM(CAST(SPLIT_PART(amount_m2 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m2, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m2, '/', 2) AS BIGINT))) AS trend_month2,
-                         CONCAT(SUM(CAST(SPLIT_PART(amount_m3 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m3, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m3, '/', 2) AS BIGINT))) AS trend_month3,
-                         CONCAT(SUM(CAST(SPLIT_PART(amount_m6 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m6, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_m6, '/', 2) AS BIGINT))) AS trend_month6,
-                         CONCAT(SUM(CAST(SPLIT_PART(amount_y1 , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_y1, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_y1, '/', 2) AS BIGINT))) AS trend_year1,
-                         CONCAT(SUM(CAST(SPLIT_PART(amount_sum , '/', 1) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_sum, '/', 6) AS DECIMAL(10, 2))),'/',SUM(CAST(SPLIT_PART(amount_sum, '/', 2) AS BIGINT))) AS trend_total,
                 	round(if(sum(a.register_num) > 0, sum(a.first_new_user_amount_num) / sum(a.register_num), 0), 4) as first_recharge_rate,
                 	round(if(sum(a.register_num) > 0, sum(a.new_user_total_amount_num) / sum(a.register_num), 0), 4) as today_recharge_rate,
                 	round(if(sum(a.first_new_user_amount_count) > 0, sum(a.first_new_user_amount) / sum(a.first_new_user_amount_count), 0), 4) as avg_first_user_recharge,