Просмотр исходного кода

计奖交易接口已完成(待校验数据)

Pota1ovO 2 лет назад
Родитель
Сommit
7e66deb698

+ 1 - 1
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/StatUserGetUserTradeStatListVO.java

@@ -22,7 +22,7 @@ public class StatUserGetUserTradeStatListVO implements Serializable {
 	@Serial
 	@Serial
 	private static final long serialVersionUID = 1L;
 	private static final long serialVersionUID = 1L;
 
 
-
+    private String time;
     /**
     /**
      * 总交易额
      * 总交易额
      */
      */

+ 3 - 1
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/mapper/KxsUserTradeMapper.java

@@ -102,8 +102,10 @@ public interface KxsUserTradeMapper extends BaseMapper<KxsUserTrade> {
      * 获取我的业绩
      * 获取我的业绩
      * @param param type 1:个人 2:计奖
      * @param param type 1:个人 2:计奖
      * @param tradeType  0pos  1云闪付
      * @param tradeType  0pos  1云闪付
+     * @param date 该参数为是否根据日查询   不根据传""
      * @return
      * @return
      */
      */
-    KxsUserTrade getMyPosOrCloudTrade(@Param("param")StatUserGetMyTradeDTO param, @Param("tableName")String tableName, @Param("tradeType")Integer tradeType,@Param("userId")Long userId);
+    KxsUserTrade getMyPosOrCloudTrade(@Param("param")StatUserGetMyTradeDTO param, @Param("tableName")String tableName, @Param("tradeType")Integer tradeType,@Param("userId")Long userId,@Param("date") String date);
+
 }
 }
 
 

+ 308 - 172
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/impl/KxsUserTradeServiceImpl.java

@@ -28,7 +28,6 @@ import com.kxs.user.api.dto.kxsapp.IntegralStatDTO;
 import com.kxs.user.api.feign.RemoteKxsUserService;
 import com.kxs.user.api.feign.RemoteKxsUserService;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.cursor.Cursor;
 import org.apache.ibatis.cursor.Cursor;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -66,6 +65,11 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
 
 
     private final KxsZlbTradeMapper kxsZlbTradeMapper;
     private final KxsZlbTradeMapper kxsZlbTradeMapper;
     private final static String PREFIX_TABLE_NAME = "kxs_user_trade_";
     private final static String PREFIX_TABLE_NAME = "kxs_user_trade_";
+
+    private final static String PREFIX_TABLE_NAME_AFTER = "kxs_user_trade_after_";
+    private final static String PREFIX_TABLE_NAME_BEFORE = "kxs_user_trade_before_";
+
+
     private final static String PREFIX_TABLE_NAME_TEMP = "kxs_user_trade_temp_";
     private final static String PREFIX_TABLE_NAME_TEMP = "kxs_user_trade_temp_";
     private final KxsUserGdTradeMapper kxsUserGdTradeMapper;
     private final KxsUserGdTradeMapper kxsUserGdTradeMapper;
     private final KxsLkbActTradeMapper kxsLkbActTradeMapper;
     private final KxsLkbActTradeMapper kxsLkbActTradeMapper;
@@ -216,7 +220,7 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
         List<String> lastMonthTimes = null;
         List<String> lastMonthTimes = null;
         if (type == 1) {
         if (type == 1) {
             //获取今日月份 用以校验是否跨越月份
             //获取今日月份 用以校验是否跨越月份
-            int toDayMonth =  now.getMonthValue();
+            int toDayMonth = now.getMonthValue();
             //近七日
             //近七日
             for (int i = 0; i < 7; i++) {
             for (int i = 0; i < 7; i++) {
                 // 计算每一天的日期
                 // 计算每一天的日期
@@ -225,16 +229,17 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
                 String currentDateString = LocalDateTimeUtil.format(currentDay, DatePattern.PURE_DATE_PATTERN);
                 String currentDateString = LocalDateTimeUtil.format(currentDay, DatePattern.PURE_DATE_PATTERN);
                 //获取当前日的月份值
                 //获取当前日的月份值
                 int monthValue = now.getMonthValue();//判断今日月份值与当前查询日月份是否一致
                 int monthValue = now.getMonthValue();//判断今日月份值与当前查询日月份是否一致
-                if (toDayMonth == monthValue){
+                if (toDayMonth == monthValue) {
                     //一致加入正常查询序列
                     //一致加入正常查询序列
                     times.add(currentDateString);
                     times.add(currentDateString);
-                }else {
+                } else {
                     //不一致构造加入二次查询序列
                     //不一致构造加入二次查询序列
                     lastMonthTimes = new ArrayList<>();
                     lastMonthTimes = new ArrayList<>();
                     lastMonthTimes.add(currentDateString);
                     lastMonthTimes.add(currentDateString);
                 }
                 }
             }
             }
-            StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO = getStatUserGetUserStatByDayOrMonthVO(userId, now, times, lastMonthTimes,type,totalType);
+            //开始查询   该方法整合全部查询
+            StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO = getStatUserGetUserStatByDayOrMonthVO(userId, now, times, lastMonthTimes, type, totalType);
             return R.ok(statUserGetUserStatByDayOrMonthVO);
             return R.ok(statUserGetUserStatByDayOrMonthVO);
         } else if (type == 2) {
         } else if (type == 2) {
             //近半年
             //近半年
@@ -245,7 +250,7 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
                 String currentDateString = LocalDateTimeUtil.format(currentDay, DatePattern.SIMPLE_MONTH_PATTERN);
                 String currentDateString = LocalDateTimeUtil.format(currentDay, DatePattern.SIMPLE_MONTH_PATTERN);
                 times.add(currentDateString);
                 times.add(currentDateString);
             }
             }
-            StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO = getStatUserGetUserStatByDayOrMonthVO(userId, now, times, lastMonthTimes,type,totalType);
+            StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO = getStatUserGetUserStatByDayOrMonthVO(userId, now, times, lastMonthTimes, type, totalType);
             return R.ok(statUserGetUserStatByDayOrMonthVO);
             return R.ok(statUserGetUserStatByDayOrMonthVO);
         } else {
         } else {
             return R.failed("类型错误");
             return R.failed("类型错误");
@@ -277,7 +282,7 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
         //获取今日新增用户
         //获取今日新增用户
         Integer userAddToDay = statUserGetHomeAmoutVO.getUserAddToDay();
         Integer userAddToDay = statUserGetHomeAmoutVO.getUserAddToDay();
         List<String> todayList = Arrays.asList(today);
         List<String> todayList = Arrays.asList(today);
-        List<TrendTimesVO> userAddTrendToday = kxsUserNewTradeMapper.getUserAddTrend(userId, todayList, 1,1);
+        List<TrendTimesVO> userAddTrendToday = kxsUserNewTradeMapper.getUserAddTrend(userId, todayList, 1, 1);
         for (TrendTimesVO trendTimesVO : userAddTrendToday) {
         for (TrendTimesVO trendTimesVO : userAddTrendToday) {
             userAddToDay += trendTimesVO.getTotal();
             userAddToDay += trendTimesVO.getTotal();
         }
         }
@@ -286,7 +291,7 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
         //获取本月新增用户
         //获取本月新增用户
         Integer userAddMonth = statUserGetHomeAmoutVO.getUserAddMonth();
         Integer userAddMonth = statUserGetHomeAmoutVO.getUserAddMonth();
         List<String> monthList = Arrays.asList(month);
         List<String> monthList = Arrays.asList(month);
-        List<TrendTimesVO> userAddTrendMonth = kxsUserNewTradeMapper.getUserAddTrend(userId, monthList, 2,1);
+        List<TrendTimesVO> userAddTrendMonth = kxsUserNewTradeMapper.getUserAddTrend(userId, monthList, 2, 1);
         for (TrendTimesVO trendTimesVO : userAddTrendMonth) {
         for (TrendTimesVO trendTimesVO : userAddTrendMonth) {
             userAddMonth += trendTimesVO.getTotal();
             userAddMonth += trendTimesVO.getTotal();
         }
         }
@@ -294,7 +299,7 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
 
 
         //获取今日新增商户
         //获取今日新增商户
         Integer merchantAddToDay = statUserGetHomeAmoutVO.getMerchantAddToDay();
         Integer merchantAddToDay = statUserGetHomeAmoutVO.getMerchantAddToDay();
-        List<TrendTimesVO> userActListByDay = kxsUserActTradeMapper.getUserActListByDayOrMonth(monthList, userId, null, 1,1);
+        List<TrendTimesVO> userActListByDay = kxsUserActTradeMapper.getUserActListByDayOrMonth(monthList, userId, null, 1, 1);
         for (TrendTimesVO trendTimesVO : userActListByDay) {
         for (TrendTimesVO trendTimesVO : userActListByDay) {
             merchantAddToDay += trendTimesVO.getTotal();
             merchantAddToDay += trendTimesVO.getTotal();
         }
         }
@@ -302,7 +307,7 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
 
 
         //获取本月新增商户
         //获取本月新增商户
         Integer merchantAddMonth = statUserGetHomeAmoutVO.getMerchantAddMonth();
         Integer merchantAddMonth = statUserGetHomeAmoutVO.getMerchantAddMonth();
-        List<TrendTimesVO> userActListByMonth = kxsUserActTradeMapper.getUserActListByDayOrMonth(monthList, userId, null, 2,1);
+        List<TrendTimesVO> userActListByMonth = kxsUserActTradeMapper.getUserActListByDayOrMonth(monthList, userId, null, 2, 1);
         for (TrendTimesVO trendTimesVO : userActListByMonth) {
         for (TrendTimesVO trendTimesVO : userActListByMonth) {
             merchantAddMonth += trendTimesVO.getTotal();
             merchantAddMonth += trendTimesVO.getTotal();
         }
         }
@@ -314,31 +319,31 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
     public R getMyTrade(StatUserGetMyTradeDTO param) {
     public R getMyTrade(StatUserGetMyTradeDTO param) {
         Long userId = SecurityUtils.getUser().getId();
         Long userId = SecurityUtils.getUser().getId();
         String month = param.getMonth();
         String month = param.getMonth();
-         String type = param.getType();
-         //拼接表名
+        String type = param.getType();
+        //拼接表名
         String tableName = PREFIX_TABLE_NAME + month;
         String tableName = PREFIX_TABLE_NAME + month;
         StatUserGetMyTradeVO statUserGetMyTradeVO = new StatUserGetMyTradeVO();
         StatUserGetMyTradeVO statUserGetMyTradeVO = new StatUserGetMyTradeVO();
         KxsUserTrade kxsUserPosTrade = new KxsUserTrade();
         KxsUserTrade kxsUserPosTrade = new KxsUserTrade();
         //获取pos交易额
         //获取pos交易额
         try {
         try {
             //此处存在查询的月份不在统计范围,找不到表的错误,直接包裹跳过视为当月无交易
             //此处存在查询的月份不在统计范围,找不到表的错误,直接包裹跳过视为当月无交易
-            kxsUserPosTrade = baseMapper.getMyPosOrCloudTrade(param,tableName,0,userId);
-        }catch (Exception e){
+            kxsUserPosTrade = baseMapper.getMyPosOrCloudTrade(param, tableName, 0, userId,"");
+        } catch (Exception e) {
             log.info(e.getMessage());
             log.info(e.getMessage());
         }
         }
         BigDecimal posDebitAmount = BigDecimal.ZERO;
         BigDecimal posDebitAmount = BigDecimal.ZERO;
         BigDecimal posCreditAmount = BigDecimal.ZERO;
         BigDecimal posCreditAmount = BigDecimal.ZERO;
-        if (kxsUserPosTrade != null){
+        if (kxsUserPosTrade != null) {
             BigDecimal proBDirectTradeAmt = kxsUserPosTrade.getProBDirectTradeAmt();//稳定期B贷记卡
             BigDecimal proBDirectTradeAmt = kxsUserPosTrade.getProBDirectTradeAmt();//稳定期B贷记卡
             BigDecimal proADirectTradeAmt = kxsUserPosTrade.getProADirectTradeAmt();//稳定期A贷记卡
             BigDecimal proADirectTradeAmt = kxsUserPosTrade.getProADirectTradeAmt();//稳定期A贷记卡
-            BigDecimal proDirectTradeAmt =  kxsUserPosTrade.getProDirectTradeAmt();//稳定期贷记卡
+            BigDecimal proDirectTradeAmt = kxsUserPosTrade.getProDirectTradeAmt();//稳定期贷记卡
             BigDecimal helpDirectTradeAmt = kxsUserPosTrade.getHelpDirectTradeAmt();//扶持期贷记卡交易额
             BigDecimal helpDirectTradeAmt = kxsUserPosTrade.getHelpDirectTradeAmt();//扶持期贷记卡交易额
 
 
 
 
-            BigDecimal proBDebitTradeAmt =  kxsUserPosTrade.getProBDebitTradeAmt();//稳定期B借记卡
-            BigDecimal proADebitTradeAmt =  kxsUserPosTrade.getProADebitTradeAmt();//稳定期A借记卡
-            BigDecimal proDebitTradeAmt =   kxsUserPosTrade.getProDebitTradeAmt();//稳定期借记卡
-            BigDecimal helpDebitTradeAmt =  kxsUserPosTrade.getHelpDebitTradeAmt();//扶持期借记卡
+            BigDecimal proBDebitTradeAmt = kxsUserPosTrade.getProBDebitTradeAmt();//稳定期B借记卡
+            BigDecimal proADebitTradeAmt = kxsUserPosTrade.getProADebitTradeAmt();//稳定期A借记卡
+            BigDecimal proDebitTradeAmt = kxsUserPosTrade.getProDebitTradeAmt();//稳定期借记卡
+            BigDecimal helpDebitTradeAmt = kxsUserPosTrade.getHelpDebitTradeAmt();//扶持期借记卡
 
 
             //pos借记卡
             //pos借记卡
             posDebitAmount = posDebitAmount.add(proBDebitTradeAmt).add(proADebitTradeAmt).add(proDebitTradeAmt).add(helpDebitTradeAmt);
             posDebitAmount = posDebitAmount.add(proBDebitTradeAmt).add(proADebitTradeAmt).add(proDebitTradeAmt).add(helpDebitTradeAmt);
@@ -351,12 +356,12 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
         //获取云闪付交易额
         //获取云闪付交易额
         try {
         try {
             //此处存在查询的月份不在统计范围,找不到表的错误,直接包裹跳过视为当月无交易
             //此处存在查询的月份不在统计范围,找不到表的错误,直接包裹跳过视为当月无交易
-            kxsUserCloudTrade = baseMapper.getMyPosOrCloudTrade(param,tableName,1,userId);
-        }catch (Exception e){
+            kxsUserCloudTrade = baseMapper.getMyPosOrCloudTrade(param, tableName, 1, userId,"");
+        } catch (Exception e) {
             log.info(e.getMessage());
             log.info(e.getMessage());
         }
         }
         BigDecimal cloudAmount = BigDecimal.ZERO;
         BigDecimal cloudAmount = BigDecimal.ZERO;
-        if (kxsUserCloudTrade != null){
+        if (kxsUserCloudTrade != null) {
             cloudAmount = cloudAmount.add(kxsUserCloudTrade.getProBDirectTradeAmt())
             cloudAmount = cloudAmount.add(kxsUserCloudTrade.getProBDirectTradeAmt())
                     .add(kxsUserCloudTrade.getProADirectTradeAmt())
                     .add(kxsUserCloudTrade.getProADirectTradeAmt())
                     .add(kxsUserCloudTrade.getProDirectTradeAmt())
                     .add(kxsUserCloudTrade.getProDirectTradeAmt())
@@ -372,7 +377,7 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
         //助力宝交易额
         //助力宝交易额
         TotalTradeAmtVO totalTradeAmtVO = kxsZlbTradeMapper.getZlbTrade(userId, month, 2, Integer.valueOf(type));
         TotalTradeAmtVO totalTradeAmtVO = kxsZlbTradeMapper.getZlbTrade(userId, month, 2, Integer.valueOf(type));
         BigDecimal zlbAmt = BigDecimal.ZERO;
         BigDecimal zlbAmt = BigDecimal.ZERO;
-        if (totalTradeAmtVO != null){
+        if (totalTradeAmtVO != null) {
             zlbAmt = totalTradeAmtVO.getZlbAmt();
             zlbAmt = totalTradeAmtVO.getZlbAmt();
         }
         }
         statUserGetMyTradeVO.setZlbAmount(zlbAmt);//助力宝
         statUserGetMyTradeVO.setZlbAmount(zlbAmt);//助力宝
@@ -381,7 +386,7 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
         totalTradeAmtVO = kxsLkbTradeMapper.getLkbTrade(userId, month, 2, Integer.valueOf(type));
         totalTradeAmtVO = kxsLkbTradeMapper.getLkbTrade(userId, month, 2, Integer.valueOf(type));
         BigDecimal lkbActAmt = BigDecimal.ZERO;
         BigDecimal lkbActAmt = BigDecimal.ZERO;
         BigDecimal lkbAmt = BigDecimal.ZERO;
         BigDecimal lkbAmt = BigDecimal.ZERO;
-        if (totalTradeAmtVO != null){
+        if (totalTradeAmtVO != null) {
             lkbActAmt = totalTradeAmtVO.getLkbActAmt();
             lkbActAmt = totalTradeAmtVO.getLkbActAmt();
             lkbAmt = totalTradeAmtVO.getLkbAmt();
             lkbAmt = totalTradeAmtVO.getLkbAmt();
         }
         }
@@ -391,15 +396,15 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
 
 
         totalTradeAmtVO = kxsUserGdTradeMapper.getGdTrade(userId, month, 2, Integer.valueOf(type));
         totalTradeAmtVO = kxsUserGdTradeMapper.getGdTrade(userId, month, 2, Integer.valueOf(type));
         BigDecimal gdAmount = BigDecimal.ZERO;
         BigDecimal gdAmount = BigDecimal.ZERO;
-        if (totalTradeAmtVO != null){
+        if (totalTradeAmtVO != null) {
             gdAmount = totalTradeAmtVO.getGdAmount();
             gdAmount = totalTradeAmtVO.getGdAmount();
         }
         }
         statUserGetMyTradeVO.setGdTelephoneCharge(gdAmount);//广电话费
         statUserGetMyTradeVO.setGdTelephoneCharge(gdAmount);//广电话费
 
 
         //广电交易额
         //广电交易额
-        totalTradeAmtVO = kxsUserGdTradeMapper.getGdActCount(userId, month,2, Integer.valueOf(type));
+        totalTradeAmtVO = kxsUserGdTradeMapper.getGdActCount(userId, month, 2, Integer.valueOf(type));
         BigDecimal gdActivityAmount = BigDecimal.ZERO;
         BigDecimal gdActivityAmount = BigDecimal.ZERO;
-        if (totalTradeAmtVO != null){
+        if (totalTradeAmtVO != null) {
             Integer gdCount = totalTradeAmtVO.getGdCount();
             Integer gdCount = totalTradeAmtVO.getGdCount();
             //广电激活量 * 10000
             //广电激活量 * 10000
             gdActivityAmount = gdActivityAmount.add(new BigDecimal(gdCount * 10000));
             gdActivityAmount = gdActivityAmount.add(new BigDecimal(gdCount * 10000));
@@ -420,194 +425,325 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
         statUserGetMyTradeVO.setUserAddCount(userAddMonth);//新增用户
         statUserGetMyTradeVO.setUserAddCount(userAddMonth);//新增用户
 
 
 
 
-
-        Integer totalUserCount = kxsUserNewTradeMapper.getUserAllTrend(userId,type);
-        statUserGetMyTradeVO.setTotalUserCount(totalUserCount != null? totalUserCount : 0);//总用户
+        Integer totalUserCount = kxsUserNewTradeMapper.getUserAllTrend(userId, type);
+        statUserGetMyTradeVO.setTotalUserCount(totalUserCount != null ? totalUserCount : 0);//总用户
 
 
         //获取累计全部激活商户
         //获取累计全部激活商户
-        Integer merchantAddMonth = kxsUserActTradeMapper.getUserActListByAll(userId,Integer.valueOf(type),1,3,null);
+        Integer merchantAddMonth = kxsUserActTradeMapper.getUserActListByAll(userId, Integer.valueOf(type), 1, 3, null);
         statUserGetMyTradeVO.setActivateMerchantCount(merchantAddMonth);//商户总激活
         statUserGetMyTradeVO.setActivateMerchantCount(merchantAddMonth);//商户总激活
 
 
         //获取累计全部激活码牌
         //获取累计全部激活码牌
-        Integer signCount = kxsLkbActTradeMapper.getSignCount(userId,type);
-        statUserGetMyTradeVO.setActivateSignCount(signCount != null? signCount:0);//码牌
+        Integer signCount = kxsLkbActTradeMapper.getSignCount(userId, type);
+        statUserGetMyTradeVO.setActivateSignCount(signCount != null ? signCount : 0);//码牌
 
 
         //获取
         //获取
-        Integer simCount = kxsUserActTradeMapper.getUserActListByAll(userId,Integer.valueOf(type),2,2, Integer.valueOf(month));
-        statUserGetMyTradeVO.setActivateSIMCount(simCount != null? simCount : 0);//存量激活sim卡
-        Integer simToMonthCount = kxsUserActTradeMapper.getUserActListByAll(userId,Integer.valueOf(type),2,1, Integer.valueOf(month));
-        statUserGetMyTradeVO.setActivateSIMToMonthCount(simToMonthCount != null ? simToMonthCount :0);//当月
+        Integer simCount = kxsUserActTradeMapper.getUserActListByAll(userId, Integer.valueOf(type), 2, 2, Integer.valueOf(month));
+        statUserGetMyTradeVO.setActivateSIMCount(simCount != null ? simCount : 0);//存量激活sim卡
+        Integer simToMonthCount = kxsUserActTradeMapper.getUserActListByAll(userId, Integer.valueOf(type), 2, 1, Integer.valueOf(month));
+        statUserGetMyTradeVO.setActivateSIMToMonthCount(simToMonthCount != null ? simToMonthCount : 0);//当月
         statUserGetMyTradeVO.setType(param.getType());
         statUserGetMyTradeVO.setType(param.getType());
         return R.ok(statUserGetMyTradeVO);
         return R.ok(statUserGetMyTradeVO);
     }
     }
 
 
     @Override
     @Override
     public R getUserTradeStatList(StatUserGetUserTradeListDTO param) {
     public R getUserTradeStatList(StatUserGetUserTradeListDTO param) {
-//         String month = param.getMonth();
-//         Integer totalType = param.getTotalType();
-//        Long userId = param.getUserId();
-//        Integer getType = param.getGetType();
-//         Integer tradeType = param.getTradeType();
-//        LocalDate now = LocalDate.now();
-//        List<String> times = new ArrayList<>();
-//        if (tradeType.equals(3)){//获取全部
-//            if (getType.equals(2)){//查询近半年
-//                //近半年
-//                for (int i = 0; i < 6; i++) {
-//                    // 计算过去半年每月月份
-//                    LocalDate currentDay = now.minusMonths(i);
-//                    // 将LocalDate转换为字符串
-//                    String currentDateString = LocalDateTimeUtil.format(currentDay, DatePattern.SIMPLE_MONTH_PATTERN);
-//                    times.add(currentDateString);
-//                }
-//                //获取交易额
-//
-//                //构造查询Dto
-//                StatUserGetMyTradeDTO statUserGetMyTradeDTO = new StatUserGetMyTradeDTO();
-//                statUserGetMyTradeDTO.setMonth(month);
-//                statUserGetMyTradeDTO.setType(totalType.toString());
-//                ArrayList<KxsUserTrade> kxsUserTrades = new ArrayList<>();
-//                //查询进半年需要循环查询不同的表
-//                for (String time : times) {
-//                    try {
-//                        //拼接表名
-//                        String lastTableName = PREFIX_TABLE_NAME + time;
-//                        //查询个人交易额
-//                        KxsUserTrade myPosOrCloudTrade = baseMapper.getMyPosOrCloudTrade(statUserGetMyTradeDTO, lastTableName, 1, userId);
-//                        kxsUserTrades.add(myPosOrCloudTrade);
-//                    }catch (Exception e){
-//                        log.info(e.getMessage());
-//                    }
-//                }
-//            }else if (getType.equals(1)){//查询近七日
-//                //校验时间格式是yyyyMM
-//                AssertUtil.isyyyyMM(month);
-//                //判断month是否是本月  否则获取月份中全部日日期
-//                int year = Integer.parseInt(month.substring(0, 4));
-//                int monthOfYear = Integer.parseInt(month.substring(4, 6));
-//                // 判断给定的月份字符串是否表示当前月份
-//                boolean isCurrentMonth = year == now.getYear() && monthOfYear == now.getMonthValue();
-//                // 如果是当前月份,则生成本月到今天的日期字符串
-//                if (isCurrentMonth) {
-//                    LocalDate firstDayOfMonth = now.withDayOfMonth(1);
-//                    for (LocalDate date = firstDayOfMonth; !date.isAfter(now); date = date.plusDays(1)) {
-//                        times.add(date.format(DateTimeFormatter.ofPattern("yyyyMMdd")));
-//                    }
-//                } else {
-//                    // 如果不是当前月份,则生成整个月的日期字符串
-//                    LocalDate firstDayOfMonth = LocalDate.of(year, monthOfYear, 1);
-//                    int daysInMonth = firstDayOfMonth.lengthOfMonth();
-//                    for (int day = 1; day <= daysInMonth; day++) {
-//                        LocalDate date = firstDayOfMonth.withDayOfMonth(day);
-//                        times.add(date.format(DateTimeFormatter.ofPattern("yyyyMMdd")));
-//                    }
-//                }
-//            }
-            //以上  查询时间参数times已构造完毕
-
-
-//            StatUserGetUserTradeStatListVO statUserGetUserTradeStatListVO = new StatUserGetUserTradeStatListVO();
-//            statUserGetUserTradeStatListVO.setTotalAmount();
-//            statUserGetUserTradeStatListVO.setPosDebitAmount();
-//            statUserGetUserTradeStatListVO.setPosCreditAmount();
-//            statUserGetUserTradeStatListVO.setCloudAmunt();
-//            statUserGetUserTradeStatListVO.setZlbAmount();
-//            statUserGetUserTradeStatListVO.setLkbActivityAmount();
-//            statUserGetUserTradeStatListVO.setLkbAmount();
-//            statUserGetUserTradeStatListVO.setGdTelephoneCharge();
-//            statUserGetUserTradeStatListVO.setGdActivityAmount();
-
-
-
-//        }
-        return null;
+        String month = param.getMonth();//查询月
+        Integer totalType = param.getTotalType();//查询类型 0个人 1团队
+        Long userId = param.getUserId();
+        Integer getType = param.getGetType();//获取类型 1获取近七日 2获取半年
+        Integer tradeType = param.getTradeType();//1获取增量 2获取存量 3获取全部
+        LocalDate now = LocalDate.now();
+        String tableName = "";
+        List<String> times = new ArrayList<>();
+        if (tradeType.equals(3)) {//获取全部
+            tableName = PREFIX_TABLE_NAME; //全部
+            if (getType.equals(2)) {//查询近半年
+                ArrayList<StatUserGetUserTradeStatListVO> statUserGetUserTradeStatListVOS = getStatUserGetUserTradeStatListVOSByMonth(month, totalType, userId, getType, now, times, tableName);
+                return R.ok(statUserGetUserTradeStatListVOS);
+            } else if (getType.equals(1)) {//查询月详细
+                ArrayList<StatUserGetUserTradeStatListVO> statUserGetUserTradeStatListVOS = getUserGetUserTradeStatListVOSByDay(month, totalType, userId, getType, now, times, tableName);
+                return R.ok(statUserGetUserTradeStatListVOS);
+            }
+        }else if (tradeType.equals(2)){
+            tableName =  PREFIX_TABLE_NAME_BEFORE; //存量
+            if (getType.equals(2)) {//查询近半年
+                ArrayList<StatUserGetUserTradeStatListVO> statUserGetUserTradeStatListVOS = getStatUserGetUserTradeStatListVOSByMonth(month, totalType, userId, getType, now, times, tableName);
+                return R.ok(statUserGetUserTradeStatListVOS);
+            } else if (getType.equals(1)) {//查询月详细
+                ArrayList<StatUserGetUserTradeStatListVO> statUserGetUserTradeStatListVOS = getUserGetUserTradeStatListVOSByDay(month, totalType, userId, getType, now, times, tableName);
+                return R.ok(statUserGetUserTradeStatListVOS);
+            }
+        }else if (tradeType.equals(1)){
+            tableName = PREFIX_TABLE_NAME_AFTER; //增量
+            if (getType.equals(2)) {//查询近半年
+                ArrayList<StatUserGetUserTradeStatListVO> statUserGetUserTradeStatListVOS = getStatUserGetUserTradeStatListVOSByMonth(month, totalType, userId, getType, now, times, tableName);
+                return R.ok(statUserGetUserTradeStatListVOS);
+            } else if (getType.equals(1)) {//查询月详细
+                ArrayList<StatUserGetUserTradeStatListVO> statUserGetUserTradeStatListVOS = getUserGetUserTradeStatListVOSByDay(month, totalType, userId, getType, now, times, tableName);
+                return R.ok(statUserGetUserTradeStatListVOS);
+            }
+        }
+        return R.failed("获取增存量类型错误");
+    }
+
+    private ArrayList<StatUserGetUserTradeStatListVO> getUserGetUserTradeStatListVOSByDay(String month, Integer totalType, Long userId, Integer getType, LocalDate now, List<String> times,String tableName) {
+        //校验时间格式是yyyyMM
+        AssertUtil.isyyyyMM(month);
+        //判断month是否是本月  否则获取月份中全部日日期
+        int year = Integer.parseInt(month.substring(0, 4));
+        int monthOfYear = Integer.parseInt(month.substring(4, 6));
+        // 判断给定的月份字符串是否表示当前月份
+        boolean isCurrentMonth = year == now.getYear() && monthOfYear == now.getMonthValue();
+        // 如果是当前月份,则生成本月到今天的日期字符串
+        if (isCurrentMonth) {
+            LocalDate firstDayOfMonth = now.withDayOfMonth(1);
+            for (LocalDate date = firstDayOfMonth; !date.isAfter(now); date = date.plusDays(1)) {
+                times.add(date.format(DateTimeFormatter.ofPattern("yyyyMMdd")));
+            }
+        } else {
+            // 如果不是当前月份,则生成整个月的日期字符串
+            LocalDate firstDayOfMonth = LocalDate.of(year, monthOfYear, 1);
+            int daysInMonth = firstDayOfMonth.lengthOfMonth();
+            for (int day = 1; day <= daysInMonth; day++) {
+                LocalDate date = firstDayOfMonth.withDayOfMonth(day);
+                times.add(date.format(DateTimeFormatter.ofPattern("yyyyMMdd")));
+            }
+        }
+        //拼接表名
+        String lastTableName = tableName + month;
+        ArrayList<StatUserGetUserTradeStatListVO> statUserGetUserTradeStatListVOS = new ArrayList<>();
+        //构造查询Dto
+        StatUserGetMyTradeDTO statUserGetMyTradeDTO = new StatUserGetMyTradeDTO();
+        statUserGetMyTradeDTO.setMonth(month);
+        statUserGetMyTradeDTO.setType(totalType.toString());
+        for (int i = times.size() - 1; i >= 0; i--) {
+            String time = times.get(i);
+            //查询交易额
+            KxsUserTrade myPosTrade = baseMapper.getMyPosOrCloudTrade(statUserGetMyTradeDTO, lastTableName, 0, userId,time);
+            if(myPosTrade == null){
+                myPosTrade = new KxsUserTrade();
+            }
+            StatUserGetUserTradeStatListVO statUserGetUserTradeStatListVO = getMonthTrade(totalType, userId, getType, statUserGetMyTradeDTO, myPosTrade, month,time, tableName);
+            statUserGetUserTradeStatListVO.setTime(time);
+            statUserGetUserTradeStatListVOS.add(statUserGetUserTradeStatListVO);
+        }
+        return statUserGetUserTradeStatListVOS;
+    }
+
+    private ArrayList<StatUserGetUserTradeStatListVO> getStatUserGetUserTradeStatListVOSByMonth(String month, Integer totalType, Long userId, Integer getType, LocalDate now, List<String> times,String tableName) {
+        //近半年
+        for (int i = 0; i < 6; i++) {
+            // 计算过去半年每月月份
+            LocalDate currentDay = now.minusMonths(i);
+            // 将LocalDate转换为字符串
+            String currentDateString = LocalDateTimeUtil.format(currentDay, DatePattern.SIMPLE_MONTH_PATTERN);
+            times.add(currentDateString);
+        }
+        //获取交易额
+        //构造查询Dto
+        StatUserGetMyTradeDTO statUserGetMyTradeDTO = new StatUserGetMyTradeDTO();
+        statUserGetMyTradeDTO.setMonth(month);
+        statUserGetMyTradeDTO.setType(totalType.toString());
+        ArrayList<StatUserGetUserTradeStatListVO> statUserGetUserTradeStatListVOS = new ArrayList<>();
+        //查询进半年需要循环查询不同的表
+        for (int i = times.size() - 1; i >= 0; i--) {
+            String time = times.get(i);
+            try {
+                //拼接表名  因有可能查询不存在的表导致报错我们try包裹视为无数据
+                String lastTableName = tableName + time;
+                //查询交易额
+                KxsUserTrade myPosTrade = baseMapper.getMyPosOrCloudTrade(statUserGetMyTradeDTO, lastTableName, 0, userId,"");
+                if (myPosTrade == null){
+                    myPosTrade = new KxsUserTrade();
+                }
+                StatUserGetUserTradeStatListVO statUserGetUserTradeStatListVO = getMonthTrade(totalType, userId, getType, statUserGetMyTradeDTO, myPosTrade, month,time, tableName);
+                statUserGetUserTradeStatListVO.setTime(time);
+                statUserGetUserTradeStatListVOS.add(statUserGetUserTradeStatListVO);
+            } catch (Exception e) {
+                log.info(e.getMessage());
+            }
+        }
+        return statUserGetUserTradeStatListVOS;
+    }
+
+    private StatUserGetUserTradeStatListVO getMonthTrade(Integer totalType, Long userId, Integer getType, StatUserGetMyTradeDTO statUserGetMyTradeDTO, KxsUserTrade kxsUserTrade,String month,String date,String tableName) {
+        BigDecimal helpDirectTradeAmt = kxsUserTrade.getHelpDirectTradeAmt() == null? BigDecimal.ZERO : kxsUserTrade.getHelpDirectTradeAmt();//扶贷
+        BigDecimal helpDebitTradeAmt = kxsUserTrade.getHelpDebitTradeAmt() == null? BigDecimal.ZERO : kxsUserTrade.getHelpDebitTradeAmt();//扶借
+
+        BigDecimal proDirectTradeAmt = kxsUserTrade.getProDirectTradeAmt() == null? BigDecimal.ZERO : kxsUserTrade.getProDirectTradeAmt();//稳贷
+        BigDecimal proDebitTradeAmt = kxsUserTrade.getProDebitTradeAmt() == null? BigDecimal.ZERO : kxsUserTrade.getProDebitTradeAmt();//稳借
+
+        BigDecimal proADirectTradeAmt = kxsUserTrade.getProADirectTradeAmt() == null? BigDecimal.ZERO : kxsUserTrade.getProADirectTradeAmt();//稳A贷
+        BigDecimal proADebitTradeAmt = kxsUserTrade.getProADebitTradeAmt() == null? BigDecimal.ZERO : kxsUserTrade.getProADebitTradeAmt();//稳A借
+
+        BigDecimal proBDebitTradeAmt = kxsUserTrade.getProBDebitTradeAmt() == null? BigDecimal.ZERO : kxsUserTrade.getProBDebitTradeAmt();//稳B借
+        BigDecimal proBDirectTradeAmt = kxsUserTrade.getProBDirectTradeAmt() == null? BigDecimal.ZERO : kxsUserTrade.getProBDirectTradeAmt();//稳B贷
+
+        BigDecimal totalAmount = BigDecimal.ZERO;
+
+        StatUserGetUserTradeStatListVO statUserGetUserTradeStatListVO = new StatUserGetUserTradeStatListVO();
+
+        //pos机交易额
+        statUserGetUserTradeStatListVO.setPosDebitAmount(helpDebitTradeAmt.add(proDebitTradeAmt).add(proADebitTradeAmt).add(proBDirectTradeAmt));
+        statUserGetUserTradeStatListVO.setPosCreditAmount(helpDirectTradeAmt.add(proDirectTradeAmt).add(proADirectTradeAmt).add(proBDebitTradeAmt));
+
+        //拼接表名
+        tableName = tableName + month;
+        KxsUserTrade myCloudTrade = baseMapper.getMyPosOrCloudTrade(statUserGetMyTradeDTO, tableName, 1, userId,"");
+        if(myCloudTrade == null){
+            myCloudTrade = new KxsUserTrade();
+        }
+        BigDecimal helpDirectTradeAmtCloud = myCloudTrade.getHelpDirectTradeAmt() == null? BigDecimal.ZERO : myCloudTrade.getHelpDirectTradeAmt();//扶贷
+        BigDecimal helpDebitTradeAmtCloud = myCloudTrade.getHelpDebitTradeAmt() == null? BigDecimal.ZERO : myCloudTrade.getHelpDebitTradeAmt();//扶借
+
+        BigDecimal proDirectTradeAmtCloud = myCloudTrade.getProDirectTradeAmt() == null? BigDecimal.ZERO : myCloudTrade.getProDirectTradeAmt();//稳贷
+        BigDecimal proDebitTradeAmtCloud = myCloudTrade.getProDebitTradeAmt() == null? BigDecimal.ZERO : myCloudTrade.getProDebitTradeAmt();//稳借
+
+        BigDecimal proADirectTradeAmtCloud = myCloudTrade.getProADirectTradeAmt() == null? BigDecimal.ZERO : myCloudTrade.getProADirectTradeAmt();//稳A贷
+        BigDecimal proADebitTradeAmtCloud = myCloudTrade.getProADebitTradeAmt() == null? BigDecimal.ZERO : myCloudTrade.getProADebitTradeAmt();//稳A借
+
+        BigDecimal proBDebitTradeAmtCloud = myCloudTrade.getProBDebitTradeAmt() == null? BigDecimal.ZERO : myCloudTrade.getProBDebitTradeAmt();//稳B借
+        BigDecimal proBDirectTradeAmtCloud = myCloudTrade.getProBDirectTradeAmt() == null? BigDecimal.ZERO : myCloudTrade.getProBDirectTradeAmt();//稳B贷
+        BigDecimal posAmount = helpDirectTradeAmtCloud
+                .add(helpDebitTradeAmtCloud)
+                .add(proDirectTradeAmtCloud)
+                .add(proDebitTradeAmtCloud)
+                .add(proADirectTradeAmtCloud)
+                .add(proADebitTradeAmtCloud)
+                .add(proBDebitTradeAmtCloud)
+                .add(proBDirectTradeAmtCloud);
+        //云闪付交易额
+        statUserGetUserTradeStatListVO.setCloudAmunt(posAmount);
+        totalAmount = totalAmount.add(posAmount);
+        //助力宝交易额
+        TotalTradeAmtVO TotalTradeAmtVO  = kxsZlbTradeMapper.getZlbTrade(userId, String.valueOf(date), getType, totalType);
+        TotalTradeAmtVO = TotalTradeAmtVO == null ? new TotalTradeAmtVO() : TotalTradeAmtVO;
+
+
+        BigDecimal zlbAmt = TotalTradeAmtVO.getZlbAmt() == null ? BigDecimal.ZERO : TotalTradeAmtVO.getZlbAmt();
+        statUserGetUserTradeStatListVO.setZlbAmount(zlbAmt);
+        totalAmount = totalAmount.add(zlbAmt);
+
+        //来客吧交易额
+        TotalTradeAmtVO = kxsLkbTradeMapper.getLkbTrade(userId, String.valueOf(date), getType, totalType);
+        TotalTradeAmtVO = TotalTradeAmtVO == null ? new TotalTradeAmtVO() : TotalTradeAmtVO;
+
+        BigDecimal lkbActAmt = TotalTradeAmtVO.getLkbActAmt() == null ? BigDecimal.ZERO : TotalTradeAmtVO.getLkbActAmt();
+        statUserGetUserTradeStatListVO.setLkbActivityAmount(lkbActAmt);
+        totalAmount = totalAmount.add(lkbActAmt);
+
+
+        BigDecimal lkbAmt = TotalTradeAmtVO.getLkbAmt() == null ? BigDecimal.ZERO : TotalTradeAmtVO.getLkbAmt();
+        statUserGetUserTradeStatListVO.setLkbAmount(lkbAmt);
+        totalAmount = totalAmount.add(lkbAmt);
+        //广电话费
+        TotalTradeAmtVO = kxsUserGdTradeMapper.getGdTrade(userId, String.valueOf(date), getType, totalType);
+        TotalTradeAmtVO = TotalTradeAmtVO == null ? new TotalTradeAmtVO() : TotalTradeAmtVO;
+
+        BigDecimal gdAmount = TotalTradeAmtVO.getGdAmount() == null ?  BigDecimal.ZERO : TotalTradeAmtVO.getGdAmount();
+        statUserGetUserTradeStatListVO.setGdTelephoneCharge(gdAmount);
+        totalAmount = totalAmount.add(gdAmount);
+
+
+        //广电激活量
+        TotalTradeAmtVO = kxsUserGdTradeMapper.getGdActCount(userId, String.valueOf(date), getType, totalType);
+        TotalTradeAmtVO = TotalTradeAmtVO == null ? new TotalTradeAmtVO() : TotalTradeAmtVO;
+
+        BigDecimal gdActAmt = BigDecimal.valueOf(TotalTradeAmtVO.getGdCount() != null ? TotalTradeAmtVO.getGdCount() * 10000 : 0);
+        statUserGetUserTradeStatListVO.setGdActivityAmount(gdActAmt);
+        totalAmount = totalAmount.add(gdActAmt);
+
+        //总额
+        statUserGetUserTradeStatListVO.setTotalAmount(totalAmount);
+
+        return statUserGetUserTradeStatListVO;
     }
     }
 
 
     private BigDecimal getAmountToDayOrMonth(Long userId, String date, String tableName, BigDecimal amount, int type) {
     private BigDecimal getAmountToDayOrMonth(Long userId, String date, String tableName, BigDecimal amount, int type) {
         //pos交易
         //pos交易
         TotalTradeAmtVO totalTradeAmtVO = baseMapper.getPosTrade(userId, tableName, date, type);
         TotalTradeAmtVO totalTradeAmtVO = baseMapper.getPosTrade(userId, tableName, date, type);
-        if (totalTradeAmtVO!= null){
+        if (totalTradeAmtVO != null) {
             amount = amount.add(totalTradeAmtVO.getPosAmt());
             amount = amount.add(totalTradeAmtVO.getPosAmt());
         }
         }
         //来客吧交易额
         //来客吧交易额
-        totalTradeAmtVO = kxsLkbTradeMapper.getLkbTrade(userId, date, type,1);
-        if (totalTradeAmtVO!= null) {
+        totalTradeAmtVO = kxsLkbTradeMapper.getLkbTrade(userId, date, type, 1);
+        if (totalTradeAmtVO != null) {
             amount = amount.add(totalTradeAmtVO.getLkbAmt());
             amount = amount.add(totalTradeAmtVO.getLkbAmt());
             amount = amount.add(totalTradeAmtVO.getLkbActAmt());
             amount = amount.add(totalTradeAmtVO.getLkbActAmt());
         }
         }
         //助力宝交易额
         //助力宝交易额
-        totalTradeAmtVO = kxsZlbTradeMapper.getZlbTrade(userId, date, type,1);
+        totalTradeAmtVO = kxsZlbTradeMapper.getZlbTrade(userId, date, type, 1);
         if (totalTradeAmtVO != null) {
         if (totalTradeAmtVO != null) {
             amount = amount.add(totalTradeAmtVO.getZlbAmt());
             amount = amount.add(totalTradeAmtVO.getZlbAmt());
         }
         }
         //广电交易额
         //广电交易额
-        totalTradeAmtVO = kxsUserGdTradeMapper.getGdActCount(userId, date, type,1);
-        if (totalTradeAmtVO != null){
+        totalTradeAmtVO = kxsUserGdTradeMapper.getGdActCount(userId, date, type, 1);
+        if (totalTradeAmtVO != null) {
             Integer gdCount = totalTradeAmtVO.getGdCount();
             Integer gdCount = totalTradeAmtVO.getGdCount();
             //广电激活量 * 10000
             //广电激活量 * 10000
             amount = amount.add(new BigDecimal(gdCount * 10000));
             amount = amount.add(new BigDecimal(gdCount * 10000));
         }
         }
         //广电话费
         //广电话费
-        totalTradeAmtVO = kxsUserGdTradeMapper.getGdTrade(userId, date, type,1);
-        if (totalTradeAmtVO != null){
+        totalTradeAmtVO = kxsUserGdTradeMapper.getGdTrade(userId, date, type, 1);
+        if (totalTradeAmtVO != null) {
             amount = amount.add(totalTradeAmtVO.getGdAmount());
             amount = amount.add(totalTradeAmtVO.getGdAmount());
         }
         }
         return amount;
         return amount;
     }
     }
 
 
 
 
-    private StatUserGetUserStatByDayOrMonthVO getStatUserGetUserStatByDayOrMonthVO(Long userId, LocalDate now, List<String> times, List<String> lastMonthTimes, Integer type,Integer totalType) {
+    private StatUserGetUserStatByDayOrMonthVO getStatUserGetUserStatByDayOrMonthVO(Long userId, LocalDate now, List<String> times, List<String> lastMonthTimes, Integer type, Integer totalType) {
         StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO = new StatUserGetUserStatByDayOrMonthVO();
         StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO = new StatUserGetUserStatByDayOrMonthVO();
         /* ------ 交易趋势图 ------ */
         /* ------ 交易趋势图 ------ */
-        setTreadeTrend(userId, now, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO,type,totalType);
+        setTreadeTrend(userId, now, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO, type, totalType);
         /* ------ 交易百分比及总额 ------ */
         /* ------ 交易百分比及总额 ------ */
-        setTreadeTotalAndPercent(userId, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO,type,totalType);
+        setTreadeTotalAndPercent(userId, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO, type, totalType);
         /* ------ 激活百分比及总额 ------ */
         /* ------ 激活百分比及总额 ------ */
-        setActTotalAndPercent(userId, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO,type,totalType);
+        setActTotalAndPercent(userId, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO, type, totalType);
         /* ------ 激活趋势图 ------ */
         /* ------ 激活趋势图 ------ */
-        setActTrend(userId, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO,type,totalType);
+        setActTrend(userId, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO, type, totalType);
         /* ------ 新增用户趋势图 ------ */
         /* ------ 新增用户趋势图 ------ */
-        setUserAddTrend(userId, times, type, statUserGetUserStatByDayOrMonthVO,totalType);
+        setUserAddTrend(userId, times, type, statUserGetUserStatByDayOrMonthVO, totalType);
         return statUserGetUserStatByDayOrMonthVO;
         return statUserGetUserStatByDayOrMonthVO;
     }
     }
 
 
     private void setUserAddTrend(Long userId, List<String> times, Integer type, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO, Integer totalType) {
     private void setUserAddTrend(Long userId, List<String> times, Integer type, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO, Integer totalType) {
         TrendVO trendVO = new TrendVO();
         TrendVO trendVO = new TrendVO();
-        List<TrendTimesVO> trendTimesVOS = kxsUserNewTradeMapper.getUserAddTrend(userId, times, type,totalType);
-        repZero(times,trendTimesVOS);
+        List<TrendTimesVO> trendTimesVOS = kxsUserNewTradeMapper.getUserAddTrend(userId, times, type, totalType);
+        repZero(times, trendTimesVOS);
         trendVO.setName("all");
         trendVO.setName("all");
         trendVO.setTimes(trendTimesVOS);
         trendVO.setTimes(trendTimesVOS);
         statUserGetUserStatByDayOrMonthVO.setUserAddTrend(trendVO);
         statUserGetUserStatByDayOrMonthVO.setUserAddTrend(trendVO);
     }
     }
 
 
-    private void setActTrend(Long userId, List<String> times, List<String> lastMonthTimes, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO,Integer type, Integer totalType) {
+    private void setActTrend(Long userId, List<String> times, List<String> lastMonthTimes, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO, Integer type, Integer totalType) {
 
 
 
 
         //查询用户全部激活根据日期分组
         //查询用户全部激活根据日期分组
-        List<TrendTimesVO> trendTimesActVOS = kxsUserActTradeMapper.getUserActListByDayOrMonth(times, userId,null,type,totalType);
+        List<TrendTimesVO> trendTimesActVOS = kxsUserActTradeMapper.getUserActListByDayOrMonth(times, userId, null, type, totalType);
         //判断是否二次查询
         //判断是否二次查询
-        if (lastMonthTimes != null){
-            List<TrendTimesVO> trendTimesActVOSLast = kxsUserActTradeMapper.getUserActListByDayOrMonth(lastMonthTimes, userId,null,type,totalType);
+        if (lastMonthTimes != null) {
+            List<TrendTimesVO> trendTimesActVOSLast = kxsUserActTradeMapper.getUserActListByDayOrMonth(lastMonthTimes, userId, null, type, totalType);
             trendTimesActVOS.addAll(trendTimesActVOSLast);
             trendTimesActVOS.addAll(trendTimesActVOSLast);
         }
         }
         //查询用户全部激活量根据 日期以及品牌 分组
         //查询用户全部激活量根据 日期以及品牌 分组
-        List<TrendTimesVO> trendTimesActBrandVOS = kxsUserActTradeMapper.getUserActListByDayOrMonth(times, userId,1,type,totalType);
+        List<TrendTimesVO> trendTimesActBrandVOS = kxsUserActTradeMapper.getUserActListByDayOrMonth(times, userId, 1, type, totalType);
         //判断是否二次查询
         //判断是否二次查询
-        if (lastMonthTimes != null){
-            List<TrendTimesVO> trendTimesActBrandVOSLast = kxsUserActTradeMapper.getUserActListByDayOrMonth(lastMonthTimes, userId,1,type,totalType);
+        if (lastMonthTimes != null) {
+            List<TrendTimesVO> trendTimesActBrandVOSLast = kxsUserActTradeMapper.getUserActListByDayOrMonth(lastMonthTimes, userId, 1, type, totalType);
             trendTimesActBrandVOS.addAll(trendTimesActBrandVOSLast);
             trendTimesActBrandVOS.addAll(trendTimesActBrandVOSLast);
         }
         }
         //构造数据
         //构造数据
-        ArrayList<TrendVO> trendVOSBrand = getTrendVOS(trendTimesActVOS, trendTimesActBrandVOS,times);
+        ArrayList<TrendVO> trendVOSBrand = getTrendVOS(trendTimesActVOS, trendTimesActBrandVOS, times);
         statUserGetUserStatByDayOrMonthVO.setActMerchantTrend(trendVOSBrand);//激活趋势图
         statUserGetUserStatByDayOrMonthVO.setActMerchantTrend(trendVOSBrand);//激活趋势图
     }
     }
 
 
-    private void setActTotalAndPercent(Long userId, List<String> times, List<String> lastMonthTimes, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO, Integer type,Integer totalType) {
+    private void setActTotalAndPercent(Long userId, List<String> times, List<String> lastMonthTimes, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO, Integer type, Integer totalType) {
         //获取传入日期激活商户数根据品牌分组
         //获取传入日期激活商户数根据品牌分组
-        List<PercentVO> percentVOSAct = kxsUserActTradeMapper.getUserTradeTotal(times, userId,type,totalType);
+        List<PercentVO> percentVOSAct = kxsUserActTradeMapper.getUserTradeTotal(times, userId, type, totalType);
         //判断是否二次查询
         //判断是否二次查询
-        if (lastMonthTimes != null){
-            List<PercentVO> percentVOSActLast = kxsUserActTradeMapper.getUserTradeTotal(lastMonthTimes, userId,type,totalType);
+        if (lastMonthTimes != null) {
+            List<PercentVO> percentVOSActLast = kxsUserActTradeMapper.getUserTradeTotal(lastMonthTimes, userId, type, totalType);
             percentVOSAct.addAll(percentVOSActLast);
             percentVOSAct.addAll(percentVOSActLast);
         }
         }
         //总激活数
         //总激活数
@@ -617,24 +753,24 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
         }
         }
         //计算百分比
         //计算百分比
         for (PercentVO percentVO : percentVOSAct) {
         for (PercentVO percentVO : percentVOSAct) {
-            percentVO.setPercent(BigDecimal.valueOf(percentVO.getTotal()).divide(BigDecimal.valueOf(actTotalCount),6, RoundingMode.HALF_UP));
+            percentVO.setPercent(BigDecimal.valueOf(percentVO.getTotal()).divide(BigDecimal.valueOf(actTotalCount), 6, RoundingMode.HALF_UP));
         }
         }
         statUserGetUserStatByDayOrMonthVO.setActMerchantPercent(percentVOSAct);//激活百分比
         statUserGetUserStatByDayOrMonthVO.setActMerchantPercent(percentVOSAct);//激活百分比
         statUserGetUserStatByDayOrMonthVO.setActMerchantTotal(actTotalCount);//激活总数
         statUserGetUserStatByDayOrMonthVO.setActMerchantTotal(actTotalCount);//激活总数
     }
     }
 
 
-    private void setTreadeTotalAndPercent(Long userId, List<String> times, List<String> lastMonthTimes, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO,Integer type,Integer totalType) {
+    private void setTreadeTotalAndPercent(Long userId, List<String> times, List<String> lastMonthTimes, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO, Integer type, Integer totalType) {
         String thisMoth = LocalDateTimeUtil.format(LocalDateTime.now(), DatePattern.SIMPLE_MONTH_PATTERN);
         String thisMoth = LocalDateTimeUtil.format(LocalDateTime.now(), DatePattern.SIMPLE_MONTH_PATTERN);
         String tableName = PREFIX_TABLE_NAME + thisMoth;
         String tableName = PREFIX_TABLE_NAME + thisMoth;
         //获取全部品牌总交易额
         //获取全部品牌总交易额
-        List<PercentVO> percentVOS = baseMapper.getUserTradeTotal(tableName,userId, times,type,totalType);
+        List<PercentVO> percentVOS = baseMapper.getUserTradeTotal(tableName, userId, times, type, totalType);
         //判断是否二次查询
         //判断是否二次查询
-        if (lastMonthTimes != null){
+        if (lastMonthTimes != null) {
             //需要构造上月表名
             //需要构造上月表名
             LocalDate date = LocalDate.now().minusMonths(1);//月份减一
             LocalDate date = LocalDate.now().minusMonths(1);//月份减一
             String lastMoth = LocalDateTimeUtil.format(date, DatePattern.SIMPLE_MONTH_PATTERN);
             String lastMoth = LocalDateTimeUtil.format(date, DatePattern.SIMPLE_MONTH_PATTERN);
             String lastTableName = PREFIX_TABLE_NAME + lastMoth;
             String lastTableName = PREFIX_TABLE_NAME + lastMoth;
-            List<PercentVO> percentVOSLast = baseMapper.getUserTradeTotal(lastTableName,userId, lastMonthTimes,type,totalType);
+            List<PercentVO> percentVOSLast = baseMapper.getUserTradeTotal(lastTableName, userId, lastMonthTimes, type, totalType);
             percentVOS.addAll(percentVOSLast);
             percentVOS.addAll(percentVOSLast);
         }
         }
         BigDecimal totalAmout = BigDecimal.ZERO;
         BigDecimal totalAmout = BigDecimal.ZERO;
@@ -644,59 +780,59 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
         }
         }
         //计算百分比
         //计算百分比
         for (PercentVO percentVO : percentVOS) {
         for (PercentVO percentVO : percentVOS) {
-            percentVO.setPercent(percentVO.getAmount().divide(totalAmout,6, RoundingMode.HALF_UP));
+            percentVO.setPercent(percentVO.getAmount().divide(totalAmout, 6, RoundingMode.HALF_UP));
         }
         }
         statUserGetUserStatByDayOrMonthVO.setTreadePercent(percentVOS);//交易百分比
         statUserGetUserStatByDayOrMonthVO.setTreadePercent(percentVOS);//交易百分比
         statUserGetUserStatByDayOrMonthVO.setTreadeTotal(totalAmout);//交易总额
         statUserGetUserStatByDayOrMonthVO.setTreadeTotal(totalAmout);//交易总额
     }
     }
 
 
-    private void setTreadeTrend(Long userId, LocalDate now, List<String> times, List<String> lastMonthTimes, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO,Integer type,Integer totalType) {
+    private void setTreadeTrend(Long userId, LocalDate now, List<String> times, List<String> lastMonthTimes, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO, Integer type, Integer totalType) {
         String thisMoth = LocalDateTimeUtil.format(now, DatePattern.SIMPLE_MONTH_PATTERN);
         String thisMoth = LocalDateTimeUtil.format(now, DatePattern.SIMPLE_MONTH_PATTERN);
         String tableName = PREFIX_TABLE_NAME + thisMoth;
         String tableName = PREFIX_TABLE_NAME + thisMoth;
         List<TrendTimesVO> trendTimesVOS = new ArrayList<>();
         List<TrendTimesVO> trendTimesVOS = new ArrayList<>();
-        if (type == 1){
+        if (type == 1) {
             //查询用户全部交易额根据日期分组
             //查询用户全部交易额根据日期分组
-            trendTimesVOS = baseMapper.getUserTradeListByDayOrMonth(tableName, times, userId,null,type,totalType);
+            trendTimesVOS = baseMapper.getUserTradeListByDayOrMonth(tableName, times, userId, null, type, totalType);
             //判断是否需要二次查询
             //判断是否需要二次查询
-            if (lastMonthTimes != null){
+            if (lastMonthTimes != null) {
                 //需要构造上月表名
                 //需要构造上月表名
                 LocalDate date = now.minusMonths(1);//月份减一
                 LocalDate date = now.minusMonths(1);//月份减一
                 String lastMoth = LocalDateTimeUtil.format(date, DatePattern.SIMPLE_MONTH_PATTERN);
                 String lastMoth = LocalDateTimeUtil.format(date, DatePattern.SIMPLE_MONTH_PATTERN);
                 String lastTableName = PREFIX_TABLE_NAME + lastMoth;
                 String lastTableName = PREFIX_TABLE_NAME + lastMoth;
                 try {
                 try {
                     //因为这里可能存在查询的月份的表未创建的原因  使用try包裹跳过报错  视为该月无数据
                     //因为这里可能存在查询的月份的表未创建的原因  使用try包裹跳过报错  视为该月无数据
-                    List<TrendTimesVO> trendTimesVOSByLastMonthTimes = baseMapper.getUserTradeListByDayOrMonth(lastTableName, lastMonthTimes, userId,null,type,totalType);
+                    List<TrendTimesVO> trendTimesVOSByLastMonthTimes = baseMapper.getUserTradeListByDayOrMonth(lastTableName, lastMonthTimes, userId, null, type, totalType);
                     trendTimesVOS.addAll(trendTimesVOSByLastMonthTimes);
                     trendTimesVOS.addAll(trendTimesVOSByLastMonthTimes);
-                }catch (Exception e){
+                } catch (Exception e) {
                     log.info(e.getMessage());
                     log.info(e.getMessage());
                 }
                 }
             }
             }
-        }else {
+        } else {
             for (String month : times) {
             for (String month : times) {
                 //拼接表名
                 //拼接表名
                 String newTableName = PREFIX_TABLE_NAME + month;
                 String newTableName = PREFIX_TABLE_NAME + month;
                 //因为这里可能存在查询的月份的表未创建的原因  使用try包裹跳过报错  视为该月无数据
                 //因为这里可能存在查询的月份的表未创建的原因  使用try包裹跳过报错  视为该月无数据
-                try{
-                    List<TrendTimesVO> userTradeListByDayOrMonth = baseMapper.getUserTradeListByDayOrMonth(newTableName, times, userId, null, type,totalType);
+                try {
+                    List<TrendTimesVO> userTradeListByDayOrMonth = baseMapper.getUserTradeListByDayOrMonth(newTableName, times, userId, null, type, totalType);
                     trendTimesVOS.addAll(userTradeListByDayOrMonth);
                     trendTimesVOS.addAll(userTradeListByDayOrMonth);
-                }catch (Exception e){
+                } catch (Exception e) {
                     log.info(e.getMessage());
                     log.info(e.getMessage());
                 }
                 }
             }
             }
         }
         }
         //查询用户全部交易额根据 日期以及品牌 分组
         //查询用户全部交易额根据 日期以及品牌 分组
-        List<TrendTimesVO> trendTimesVOListBrand = baseMapper.getUserTradeListByDayOrMonth(tableName, times, userId,1,type,totalType);
+        List<TrendTimesVO> trendTimesVOListBrand = baseMapper.getUserTradeListByDayOrMonth(tableName, times, userId, 1, type, totalType);
         //判断是否需要二次查询
         //判断是否需要二次查询
-        if (lastMonthTimes != null){
+        if (lastMonthTimes != null) {
             //需要构造上月表名
             //需要构造上月表名
             LocalDate date = now.minusMonths(1);//月份减一
             LocalDate date = now.minusMonths(1);//月份减一
             String lastMoth = LocalDateTimeUtil.format(date, DatePattern.SIMPLE_MONTH_PATTERN);
             String lastMoth = LocalDateTimeUtil.format(date, DatePattern.SIMPLE_MONTH_PATTERN);
             String lastTableName = PREFIX_TABLE_NAME + lastMoth;
             String lastTableName = PREFIX_TABLE_NAME + lastMoth;
-            List<TrendTimesVO> trendTimesVOListBrandLast = baseMapper.getUserTradeListByDayOrMonth(lastTableName, lastMonthTimes, userId,1,type,totalType);
+            List<TrendTimesVO> trendTimesVOListBrandLast = baseMapper.getUserTradeListByDayOrMonth(lastTableName, lastMonthTimes, userId, 1, type, totalType);
             trendTimesVOListBrand.addAll(trendTimesVOListBrandLast);
             trendTimesVOListBrand.addAll(trendTimesVOListBrandLast);
         }
         }
         //构造数据
         //构造数据
-        ArrayList<TrendVO> trendVOS = getTrendVOS(trendTimesVOS, trendTimesVOListBrand,times);
+        ArrayList<TrendVO> trendVOS = getTrendVOS(trendTimesVOS, trendTimesVOListBrand, times);
         statUserGetUserStatByDayOrMonthVO.setTreadeTrend(trendVOS);//交易趋势
         statUserGetUserStatByDayOrMonthVO.setTreadeTrend(trendVOS);//交易趋势
     }
     }
 
 
@@ -708,12 +844,12 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
             for (TrendTimesVO trendTimesVO : trendTimesVOS) {
             for (TrendTimesVO trendTimesVO : trendTimesVOS) {
                 brandId = trendTimesVO.getBrandId();
                 brandId = trendTimesVO.getBrandId();
                 //如果存在则开启标识
                 //如果存在则开启标识
-                if (time.equals(trendTimesVO.getTime())){
+                if (time.equals(trendTimesVO.getTime())) {
                     repFlag = 1;
                     repFlag = 1;
                 }
                 }
             }
             }
             //当返回集合中不存在查询的时间则构造一条0数据加入trendTimesVOS集合
             //当返回集合中不存在查询的时间则构造一条0数据加入trendTimesVOS集合
-            if (repFlag == 0){
+            if (repFlag == 0) {
                 TrendTimesVO trendTimesVO = new TrendTimesVO();
                 TrendTimesVO trendTimesVO = new TrendTimesVO();
                 trendTimesVO.setTime(time);
                 trendTimesVO.setTime(time);
                 trendTimesVO.setTotal(0);
                 trendTimesVO.setTotal(0);
@@ -723,18 +859,18 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
         }
         }
     }
     }
 
 
-    private static ArrayList<TrendVO> getTrendVOS(List<TrendTimesVO> trendTimesVOS, List<TrendTimesVO> trendTimesVOListBrand,List<String> times) {
+    private static ArrayList<TrendVO> getTrendVOS(List<TrendTimesVO> trendTimesVOS, List<TrendTimesVO> trendTimesVOListBrand, List<String> times) {
         //将全部交易额以及品牌交易额构造进入map  key为品牌id  或  all
         //将全部交易额以及品牌交易额构造进入map  key为品牌id  或  all
-        Map<String,List<TrendTimesVO>> treadTrend = new HashMap<>();
+        Map<String, List<TrendTimesVO>> treadTrend = new HashMap<>();
         treadTrend.put("all", trendTimesVOS);
         treadTrend.put("all", trendTimesVOS);
         for (TrendTimesVO trendTimesVO : trendTimesVOListBrand) {
         for (TrendTimesVO trendTimesVO : trendTimesVOListBrand) {
             List<TrendTimesVO> trendTimesVOSBrand = treadTrend.get(trendTimesVO.getBrandId() == null ? null : trendTimesVO.getBrandId().toString());
             List<TrendTimesVO> trendTimesVOSBrand = treadTrend.get(trendTimesVO.getBrandId() == null ? null : trendTimesVO.getBrandId().toString());
-            if (trendTimesVOSBrand == null){
+            if (trendTimesVOSBrand == null) {
                 //未查询到则构造map  key为品牌id
                 //未查询到则构造map  key为品牌id
                 trendTimesVOSBrand = new ArrayList<>();
                 trendTimesVOSBrand = new ArrayList<>();
                 trendTimesVOSBrand.add(trendTimesVO);
                 trendTimesVOSBrand.add(trendTimesVO);
-                treadTrend.put(trendTimesVO.getBrandId() != null ? trendTimesVO.getBrandId().toString():"all",trendTimesVOSBrand);
-            }else {
+                treadTrend.put(trendTimesVO.getBrandId() != null ? trendTimesVO.getBrandId().toString() : "all", trendTimesVOSBrand);
+            } else {
                 trendTimesVOSBrand.add(trendTimesVO);
                 trendTimesVOSBrand.add(trendTimesVO);
             }
             }
         }
         }
@@ -742,7 +878,7 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
         ArrayList<TrendVO> trendVOS = new ArrayList<>();
         ArrayList<TrendVO> trendVOS = new ArrayList<>();
         for (Map.Entry<String, List<TrendTimesVO>> entry : treadTrend.entrySet()) {
         for (Map.Entry<String, List<TrendTimesVO>> entry : treadTrend.entrySet()) {
             //补0数据
             //补0数据
-            repZero(times,entry.getValue());
+            repZero(times, entry.getValue());
             TrendVO trendVO = new TrendVO();
             TrendVO trendVO = new TrendVO();
             trendVO.setName(entry.getKey());
             trendVO.setName(entry.getKey());
             trendVO.setTimes(entry.getValue());
             trendVO.setTimes(entry.getValue());

+ 3 - 0
kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsUserTradeMapper.xml

@@ -273,6 +273,9 @@
             and total_type = #{param.type}
             and total_type = #{param.type}
             and user_id = #{userId}
             and user_id = #{userId}
             and trade_type = #{tradeType}
             and trade_type = #{tradeType}
+            <if test="date != '' and date != null">
+                and trade_date = #{date}
+            </if>
         </where>
         </where>
     </select>
     </select>