Pota1ovO 2 年之前
父节点
当前提交
b6e087cdc4

+ 6 - 1
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/dto/statUser/StatUserGetUserStatByDayOrMonthDTO.java

@@ -30,6 +30,11 @@ public class StatUserGetUserStatByDayOrMonthDTO {
     private Integer type;
 
 
-
+    /**
+     * 统计类型  0个人  1团队
+     */
+    @Schema(description = "统计类型  0个人  1团队")
+    @NotNull(message = "统计类型不能为空")
+    private Integer totalType;
 
 }

+ 47 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/dto/statUser/StatUserGetUserTradeListDTO.java

@@ -0,0 +1,47 @@
+package com.kxs.stat.api.dto.statUser;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+
+/**
+ * 计奖交易-交易统计页面-dto
+ *
+ * @author 系统
+ * @date 2024-05-28 15:48:13
+ */
+@Data
+public class StatUserGetUserTradeListDTO {
+
+    /**
+     * 获取月份
+     */
+    @Schema(description = "获取月份")
+    private String month;
+
+
+    /**
+     * 0:个人 1:计奖
+     */
+    @Schema(description = "0:个人 1:计奖")
+    @NotNull(message = "统计类型不能为空")
+    private Integer totalType;
+
+    /**
+     * 1获取近七日 2获取半年
+     */
+    @Schema(description = "1获取近七日 2获取半年")
+    @NotNull(message = "获取类型不能为空")
+    private Integer getType;
+    /**
+     * 1获取增量 2获取存量 3获取全部
+     */
+    @Schema(description = "1获取增量 2获取存量 3获取全部")
+    @NotNull(message = "获取增存量类型不能为空")
+    private Integer tradeType;
+
+
+
+}

+ 138 - 0
kxs-stat/kxs-stat-api/src/main/java/com/kxs/stat/api/vo/statUser/StatUserGetUserTradeListVO.java

@@ -0,0 +1,138 @@
+package com.kxs.stat.api.vo.statUser;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 计奖交易-我的业绩vo
+ *
+ * @author 系统
+ * @date 2024-05-20 15:48:13
+ */
+@Data
+@Schema(description = "计奖交易-我的业绩返回实体")
+public class StatUserGetUserTradeListVO implements Serializable {
+
+	@Serial
+	private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 总交易额
+     */
+    @Schema(description = "总交易额")
+    private Object totalAmount;
+
+
+    /**
+     * Pos借记卡交易额
+     */
+    @Schema(description = "Pos借记卡交易额")
+    private Object posDebitAmount;
+
+
+    /**
+     * Pos贷记卡交易额
+     */
+    @Schema(description = "Pos贷记卡交易额")
+    private Object posCreditAmount;
+
+
+    /**
+     * 云闪付交易额
+     */
+    @Schema(description = "云闪付交易额")
+    private Object cloudAmunt;
+
+
+    /**
+     * 助力宝交易额
+     */
+    @Schema(description = "助力宝交易额")
+    private Object zlbAmount;
+
+
+    /**
+     * 来客吧活动交易额
+     */
+    @Schema(description = "来客吧活动交易额")
+    private Object lkbActivityAmount;
+
+
+    /**
+     * 来客吧非活动交易额
+     */
+    @Schema(description = "来客吧非活动交易额")
+    private Object lkbAmount;
+
+
+    /**
+     * 广电话费
+     */
+    @Schema(description = "广电话费")
+    private Object gdTelephoneCharge;
+
+
+    /**
+     * 广电活动交易额
+     */
+    @Schema(description = "广电活动交易额")
+    private Object gdActivityAmount;
+
+
+    /**
+     * 总用户数量
+     */
+    @Schema(description = "总用户数量")
+    private Object totalUserCount;
+
+
+    /**
+     * 新增用户数量
+     */
+    @Schema(description = "新增用户数量")
+    private Object userAddCount;
+
+
+    /**
+     * 激活商户数量
+     */
+    @Schema(description = "激活商户数量")
+    private Object activateMerchantCount;
+
+
+    /**
+     * 激活码牌数量
+     */
+    @Schema(description = "激活码牌数量")
+    private Object activateSignCount;
+
+
+    /**
+     * 存量激活SIM卡
+     */
+    @Schema(description = "激活SIM卡")
+    private Object activateSIMCount;
+    /**
+     * 当月激活SIM卡
+     */
+    @Schema(description = "当月激活SIM卡")
+    private Object activateSIMToMonthCount;
+
+    /**
+     * 1:个人  2:计奖
+     */
+    @Schema(description = "1:个人  2:计奖")
+    private Object type;
+
+
+
+
+
+	
+
+}

+ 15 - 4
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/controller/KxsStatUserController.java

@@ -7,11 +7,13 @@ import com.kxs.common.security.util.SecurityUtils;
 import com.kxs.stat.api.dto.statUser.StatUserGetMyTradeDTO;
 
 import com.kxs.stat.api.dto.statUser.StatUserGetUserStatByDayOrMonthDTO;
+import com.kxs.stat.api.dto.statUser.StatUserGetUserTradeListDTO;
 import com.kxs.stat.api.model.KxsUserActTrade;
 import com.kxs.stat.biz.service.KxsMerchantTradeService;
 import com.kxs.stat.biz.service.KxsUserActTradeService;
 import com.kxs.stat.biz.service.KxsUserTradeService;
 
+import io.swagger.v3.oas.annotations.parameters.RequestBody;
 import jakarta.validation.Valid;
 import org.springdoc.core.annotations.ParameterObject;
 import org.springframework.web.bind.annotation.*;
@@ -79,9 +81,9 @@ public class KxsStatUserController {
      * @param param 查询实体
      * @return 计奖交易-我的业绩
      */
-    @GetMapping("/getMyTrade")
-    public R getMyTrade(@ParameterObject StatUserGetMyTradeDTO param) {
-        return kxsUserTradeService.getMyTrade(param);
+    @GetMapping("/getUserTradeStatList")
+    public R getUserTradeStatList(@ParameterObject StatUserGetUserTradeListDTO param) {
+        return kxsUserTradeService.getUserTradeStatList(param);
     }
 
 
@@ -100,7 +102,16 @@ public class KxsStatUserController {
         return kxsUserActTradeService.getActivateMerchantList(totalType,userId,month);
     }
 
-
+    /**
+     * 计奖交易-我的业绩
+     *
+     * @param param 查询实体
+     * @return 计奖交易-我的业绩
+     */
+    @GetMapping("/getMyTrade")
+    public R getMyTrade(@ParameterObject StatUserGetMyTradeDTO param) {
+        return kxsUserTradeService.getMyTrade(param);
+    }
 
 }
 

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

@@ -33,7 +33,7 @@ public interface KxsUserActTradeMapper extends BaseMapper<KxsUserActTrade> {
      * @param userId 用户id
      * @return
      */
-    List<PercentVO> getUserTradeTotal(@Param("times") List<String> times, @Param("userId") Long userId,@Param("type") Integer type);
+    List<PercentVO> getUserTradeTotal(@Param("times") List<String> times, @Param("userId") Long userId,@Param("type") Integer type,@Param("totalType") Integer totalType);
 
     /**
      * 查询用户激活量   全部或根据品牌分组   获取半年或近七天

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

@@ -65,14 +65,14 @@ public interface KxsUserTradeMapper extends BaseMapper<KxsUserTrade> {
      * @Param type 根据类型查询日期  1 日  2月
      * @return
      */
-    List<TrendTimesVO> getUserTradeListByDayOrMonth(@Param("tableName") String tableName, @Param("times") List<String> times, @Param("userId") Long userId, @Param("brandId") Integer brandId, @Param("type") Integer type);
+    List<TrendTimesVO> getUserTradeListByDayOrMonth(@Param("tableName") String tableName, @Param("times") List<String> times, @Param("userId") Long userId, @Param("brandId") Integer brandId, @Param("type") Integer type,@Param("totalType") Integer totalType);
 
     /**
      * 获取传入日期的交易额根据品牌分组
      * @param userId
      * @return
      */
-    List<PercentVO> getUserTradeTotal(@Param("tableName")String tableName,@Param("userId") Long userId,@Param("times") List<String> times,@Param("type") Integer type);
+    List<PercentVO> getUserTradeTotal(@Param("tableName")String tableName,@Param("userId") Long userId,@Param("times") List<String> times,@Param("type") Integer type,@Param("totalType") Integer totalType);
 
 
     StatUserGetHomeAmoutVO getHomeAmout(@Param("userId")Long userId, @Param("tableName")String tableName,@Param("date")String date,@Param("month")String month);

+ 8 - 0
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/KxsUserTradeService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.kxs.common.core.util.R;
 import com.kxs.stat.api.dto.statUser.StatUserGetMyTradeDTO;
 import com.kxs.stat.api.dto.statUser.StatUserGetUserStatByDayOrMonthDTO;
+import com.kxs.stat.api.dto.statUser.StatUserGetUserTradeListDTO;
 import com.kxs.stat.api.model.KxsUserTrade;
 
 import java.math.BigDecimal;
@@ -46,5 +47,12 @@ public interface KxsUserTradeService extends IService<KxsUserTrade> {
      */
     R getMyTrade(StatUserGetMyTradeDTO param);
 
+    /**
+     * 计奖交易-我的业绩
+     * @param param
+     * @return
+     */
+    R getUserTradeStatList(StatUserGetUserTradeListDTO param);
+
 }
 

+ 17 - 15
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/impl/KxsUserActTradeServiceImpl.java

@@ -105,12 +105,8 @@ public class KxsUserActTradeServiceImpl extends ServiceImpl<KxsUserActTradeMappe
     }
 
     private ArrayList<TimeVO> getTimeVOArrayList(Integer totalType,Long userId, List<String> times, int type) {
-        //查询全部激活
-        List<TrendTimesVO> trendTimesVOS = baseMapper.getUserActListByDayOrMonth(times, userId,null, type,totalType);
-        //查询激活, 根据品牌分组
-        List<TrendTimesVO> trendTimesVOListBrand = baseMapper.getUserActListByDayOrMonth(times, userId, 1, type,totalType);
         //构造数据
-        //将全部交易额以及品牌交易额构造进入map  key为品牌id  或  all  或来客吧码牌
+        //将全部激活量  或   品牌激活量  构造进入map  key为品牌id  或  all  或来客吧码牌
         Map<String,List<ActivityAddVO>> timeActivityMap = new HashMap<>();
         //查询来客吧码牌激活
         List<TrendTimesVO> trendTimesVOLkbList = baseMapper.getActivityStatByLkbList(userId, times,totalType);
@@ -126,6 +122,8 @@ public class KxsUserActTradeServiceImpl extends ServiceImpl<KxsUserActTradeMappe
             //将该来客吧码牌构造成时间为key的map
             timeActivityMap.put(time,activityAddVOS);
         }
+        //查询全部激活
+        List<TrendTimesVO> trendTimesVOS = baseMapper.getUserActListByDayOrMonth(times, userId,null, type,totalType);
         //遍历全部激活集合  注  该集合全部不包含来客吧码牌
         for (TrendTimesVO trendTimesVO : trendTimesVOS) {
             //先查询map中是否包含有改时间日期的来客吧码牌激活数据
@@ -156,6 +154,8 @@ public class KxsUserActTradeServiceImpl extends ServiceImpl<KxsUserActTradeMappe
                 activityAddVOList.add(activityAddVO);
             }
         }
+        //查询激活, 根据品牌分组
+        List<TrendTimesVO> trendTimesVOListBrand = baseMapper.getUserActListByDayOrMonth(times, userId, 1, type,totalType);
         //遍历品牌激活
         for (TrendTimesVO trendTimesVO : trendTimesVOListBrand) {
             //查找map获取当前品牌激活统计的时间点
@@ -173,16 +173,7 @@ public class KxsUserActTradeServiceImpl extends ServiceImpl<KxsUserActTradeMappe
         //此时我们的hashmap格式已为TimeVO类格式
         //将map转换为返回实体类
         ArrayList<TimeVO> timeVOS = new ArrayList<>();
-        //直接遍历map无法根据时间返回  弃用
-//        for (Map.Entry<String, List<ActivityAddVO>> entry : timeActivityMap.entrySet()) {
-//            TimeVO timeVO = new TimeVO();
-//            String key = entry.getKey();
-//            List<ActivityAddVO> value = entry.getValue();
-//            timeVO.setDate(key);
-//            timeVO.setActivityAdd(value);
-//            timeVOS.add(timeVO);
-//        }
-        //改用foresch  根据我们传入的时间进行写入
+        //根据我们传入的时间进行写入
         for (String time : times) {
             List<ActivityAddVO> activityAddVOList = timeActivityMap.get(time);
             //存在数据则开始构造TimeVO
@@ -191,6 +182,17 @@ public class KxsUserActTradeServiceImpl extends ServiceImpl<KxsUserActTradeMappe
                 timeVO.setDate(time);
                 timeVO.setActivityAdd(activityAddVOList);
                 timeVOS.add(timeVO);
+            }else {
+                //不存在则填充空数据
+                ArrayList<ActivityAddVO> activityAddVOS = new ArrayList<>();
+                ActivityAddVO activityAddVO = new ActivityAddVO();
+                activityAddVO.setName("all");
+                activityAddVO.setTotal(0);
+                activityAddVOS.add(activityAddVO);
+                TimeVO timeVO = new TimeVO();
+                timeVO.setDate(time);
+                timeVO.setActivityAdd(activityAddVOS);
+                timeVOS.add(timeVO);
             }
         }
         return timeVOS;

+ 98 - 29
kxs-stat/kxs-stat-biz/src/main/java/com/kxs/stat/biz/service/impl/KxsUserTradeServiceImpl.java

@@ -12,6 +12,7 @@ import com.kxs.common.core.util.R;
 import com.kxs.common.security.util.SecurityUtils;
 import com.kxs.stat.api.dto.statUser.StatUserGetMyTradeDTO;
 import com.kxs.stat.api.dto.statUser.StatUserGetUserStatByDayOrMonthDTO;
+import com.kxs.stat.api.dto.statUser.StatUserGetUserTradeListDTO;
 import com.kxs.stat.api.model.KxsLkbTrade;
 import com.kxs.stat.api.model.KxsUserActTrade;
 import com.kxs.stat.api.model.KxsUserLogoutTrade;
@@ -26,6 +27,7 @@ import com.kxs.user.api.dto.kxsapp.IntegralStatDTO;
 import com.kxs.user.api.feign.RemoteKxsUserService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.cursor.Cursor;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
@@ -206,6 +208,7 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
     public R getUserStatByDayOrMonth(StatUserGetUserStatByDayOrMonthDTO param) {
         Long userId = param.getUserId();
         Integer type = param.getType();
+        Integer totalType = param.getTotalType();
         LocalDate now = LocalDate.now();
         List<String> times = new ArrayList<>();
         List<String> lastMonthTimes = null;
@@ -229,7 +232,7 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
                     lastMonthTimes.add(currentDateString);
                 }
             }
-            StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO = getStatUserGetUserStatByDayOrMonthVO(userId, now, times, lastMonthTimes,type);
+            StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO = getStatUserGetUserStatByDayOrMonthVO(userId, now, times, lastMonthTimes,type,totalType);
             return R.ok(statUserGetUserStatByDayOrMonthVO);
         } else if (type == 2) {
             //近半年
@@ -240,7 +243,7 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
                 String currentDateString = LocalDateTimeUtil.format(currentDay, DatePattern.SIMPLE_MONTH_PATTERN);
                 times.add(currentDateString);
             }
-            StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO = getStatUserGetUserStatByDayOrMonthVO(userId, now, times, lastMonthTimes,type);
+            StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO = getStatUserGetUserStatByDayOrMonthVO(userId, now, times, lastMonthTimes,type,totalType);
             return R.ok(statUserGetUserStatByDayOrMonthVO);
         } else {
             return R.failed("类型错误");
@@ -424,6 +427,20 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
         return R.ok(statUserGetMyTradeVO);
     }
 
+    @Override
+    public R getUserTradeStatList(StatUserGetUserTradeListDTO param) {
+//         String month = param.getMonth();
+//         Integer totalType = param.getTotalType();
+//         Integer getType = param.getGetType();
+//         Integer tradeType = param.getTradeType();
+//         if (tradeType.equals(3)){
+//             //获取全部
+//
+//         }
+
+        return null;
+    }
+
     private BigDecimal getAmountToDayOrMonth(Long userId, String date, String tableName, BigDecimal amount, int type) {
         //pos交易
         TotalTradeAmtVO totalTradeAmtVO = baseMapper.getPosTrade(userId, tableName, date, type);
@@ -457,55 +474,62 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
     }
 
 
-    private StatUserGetUserStatByDayOrMonthVO getStatUserGetUserStatByDayOrMonthVO(Long userId, LocalDate now, List<String> times, List<String> lastMonthTimes, Integer type) {
+    private StatUserGetUserStatByDayOrMonthVO getStatUserGetUserStatByDayOrMonthVO(Long userId, LocalDate now, List<String> times, List<String> lastMonthTimes, Integer type,Integer totalType) {
         StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO = new StatUserGetUserStatByDayOrMonthVO();
         /* ------ 交易趋势图 ------ */
-        setTreadeTrend(userId, now, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO,type);
+        setTreadeTrend(userId, now, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO,type,totalType);
         /* ------ 交易百分比及总额 ------ */
-        setTreadeTotalAndPercent(userId, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO,type);
+        setTreadeTotalAndPercent(userId, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO,type,totalType);
         /* ------ 激活百分比及总额 ------ */
-        setActTotalAndPercent(userId, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO,type);
+        setActTotalAndPercent(userId, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO,type,totalType);
         /* ------ 激活趋势图 ------ */
-        setActTrend(userId, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO,type);
+        setActTrend(userId, times, lastMonthTimes, statUserGetUserStatByDayOrMonthVO,type,totalType);
         /* ------ 新增用户趋势图 ------ */
-        setUserAddTrend(userId, times, type, statUserGetUserStatByDayOrMonthVO);
+        setUserAddTrend(userId, times, type, statUserGetUserStatByDayOrMonthVO,totalType);
         return statUserGetUserStatByDayOrMonthVO;
     }
 
-    private void setUserAddTrend(Long userId, List<String> times, Integer type, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO) {
+    private void setUserAddTrend(Long userId, List<String> times, Integer type, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO, Integer totalType) {
         TrendVO trendVO = new TrendVO();
-        List<TrendTimesVO> trendTimesVOS = kxsUserNewTradeMapper.getUserAddTrend(userId, times, type,1);
+        List<TrendTimesVO> trendTimesVOS = kxsUserNewTradeMapper.getUserAddTrend(userId, times, type,totalType);
+        repZero(times,trendTimesVOS);
         trendVO.setName("all");
         trendVO.setTimes(trendTimesVOS);
         statUserGetUserStatByDayOrMonthVO.setUserAddTrend(trendVO);
     }
 
-    private void setActTrend(Long userId, List<String> times, List<String> lastMonthTimes, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO,Integer type) {
+    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,1);
+        List<TrendTimesVO> trendTimesActVOS = kxsUserActTradeMapper.getUserActListByDayOrMonth(times, userId,null,type,totalType);
         //判断是否二次查询
         if (lastMonthTimes != null){
-            List<TrendTimesVO> trendTimesActVOSLast = kxsUserActTradeMapper.getUserActListByDayOrMonth(lastMonthTimes, userId,null,type,1);
+            List<TrendTimesVO> trendTimesActVOSLast = kxsUserActTradeMapper.getUserActListByDayOrMonth(lastMonthTimes, userId,null,type,totalType);
             trendTimesActVOS.addAll(trendTimesActVOSLast);
         }
+        repZero(times,trendTimesActVOS);
+
+
         //查询用户全部激活量根据 日期以及品牌 分组
-        List<TrendTimesVO> trendTimesActBrandVOS = kxsUserActTradeMapper.getUserActListByDayOrMonth(times, userId,1,type,1);
+        List<TrendTimesVO> trendTimesActBrandVOS = kxsUserActTradeMapper.getUserActListByDayOrMonth(times, userId,1,type,totalType);
         //判断是否二次查询
         if (lastMonthTimes != null){
-            List<TrendTimesVO> trendTimesActBrandVOSLast = kxsUserActTradeMapper.getUserActListByDayOrMonth(lastMonthTimes, userId,1,type,1);
+            List<TrendTimesVO> trendTimesActBrandVOSLast = kxsUserActTradeMapper.getUserActListByDayOrMonth(lastMonthTimes, userId,1,type,totalType);
             trendTimesActBrandVOS.addAll(trendTimesActBrandVOSLast);
         }
+        repZero(times,trendTimesActBrandVOS);
         //构造数据
         ArrayList<TrendVO> trendVOSBrand = getTrendVOS(trendTimesActVOS, trendTimesActBrandVOS);
         statUserGetUserStatByDayOrMonthVO.setActMerchantTrend(trendVOSBrand);//激活趋势图
     }
 
-    private void setActTotalAndPercent(Long userId, List<String> times, List<String> lastMonthTimes, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO, Integer type) {
+    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);
+        List<PercentVO> percentVOSAct = kxsUserActTradeMapper.getUserTradeTotal(times, userId,type,totalType);
         //判断是否二次查询
         if (lastMonthTimes != null){
-            List<PercentVO> percentVOSActLast = kxsUserActTradeMapper.getUserTradeTotal(lastMonthTimes, userId,type);
+            List<PercentVO> percentVOSActLast = kxsUserActTradeMapper.getUserTradeTotal(lastMonthTimes, userId,type,totalType);
             percentVOSAct.addAll(percentVOSActLast);
         }
         //总激活数
@@ -521,14 +545,18 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
         statUserGetUserStatByDayOrMonthVO.setActMerchantTotal(actTotalCount);//激活总数
     }
 
-    private void setTreadeTotalAndPercent(Long userId, List<String> times, List<String> lastMonthTimes, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO,Integer type) {
+    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 tableName = PREFIX_TABLE_NAME + thisMoth;
         //获取全部品牌总交易额
-        List<PercentVO> percentVOS = baseMapper.getUserTradeTotal(tableName,userId, times,type);
+        List<PercentVO> percentVOS = baseMapper.getUserTradeTotal(tableName,userId, times,type,totalType);
         //判断是否二次查询
         if (lastMonthTimes != null){
-            List<PercentVO> percentVOSLast = baseMapper.getUserTradeTotal(tableName,userId, lastMonthTimes,type);
+            //需要构造上月表名
+            LocalDate date = LocalDate.now().minusMonths(1);//月份减一
+            String lastMoth = LocalDateTimeUtil.format(date, DatePattern.SIMPLE_MONTH_PATTERN);
+            String lastTableName = PREFIX_TABLE_NAME + lastMoth;
+            List<PercentVO> percentVOSLast = baseMapper.getUserTradeTotal(lastTableName,userId, lastMonthTimes,type,totalType);
             percentVOS.addAll(percentVOSLast);
         }
         BigDecimal totalAmout = BigDecimal.ZERO;
@@ -544,35 +572,53 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
         statUserGetUserStatByDayOrMonthVO.setTreadeTotal(totalAmout);//交易总额
     }
 
-    private void setTreadeTrend(Long userId, LocalDate now, List<String> times, List<String> lastMonthTimes, StatUserGetUserStatByDayOrMonthVO statUserGetUserStatByDayOrMonthVO,Integer type) {
+    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 tableName = PREFIX_TABLE_NAME + thisMoth;
         List<TrendTimesVO> trendTimesVOS = new ArrayList<>();
         if (type == 1){
             //查询用户全部交易额根据日期分组
-            trendTimesVOS = baseMapper.getUserTradeListByDayOrMonth(tableName, times, userId,null,type);
+            trendTimesVOS = baseMapper.getUserTradeListByDayOrMonth(tableName, times, userId,null,type,totalType);
             //判断是否需要二次查询
             if (lastMonthTimes != null){
-                List<TrendTimesVO> trendTimesVOSByLastMonthTimes = baseMapper.getUserTradeListByDayOrMonth(tableName, lastMonthTimes, userId,null,type);
-                trendTimesVOS.addAll(trendTimesVOSByLastMonthTimes);
+                //需要构造上月表名
+                LocalDate date = now.minusMonths(1);//月份减一
+                String lastMoth = LocalDateTimeUtil.format(date, DatePattern.SIMPLE_MONTH_PATTERN);
+                String lastTableName = PREFIX_TABLE_NAME + lastMoth;
+                try {
+                    //因为这里可能存在查询的月份的表未创建的原因  使用try包裹跳过报错  视为该月无数据
+                    List<TrendTimesVO> trendTimesVOSByLastMonthTimes = baseMapper.getUserTradeListByDayOrMonth(lastTableName, lastMonthTimes, userId,null,type,totalType);
+                    trendTimesVOS.addAll(trendTimesVOSByLastMonthTimes);
+                }catch (Exception e){
+                    log.info(e.getMessage());
+                }
             }
+            //此处需要判断查询出的日期跟times比较,不存在的自动补0
+            repZero(times, trendTimesVOS);
         }else {
             for (String month : times) {
                 //拼接表名
                 String newTableName = PREFIX_TABLE_NAME + month;
+                //因为这里可能存在查询的月份的表未创建的原因  使用try包裹跳过报错  视为该月无数据
                 try{
-                    List<TrendTimesVO> userTradeListByDayOrMonth = baseMapper.getUserTradeListByDayOrMonth(newTableName, times, userId, null, type);
+                    List<TrendTimesVO> userTradeListByDayOrMonth = baseMapper.getUserTradeListByDayOrMonth(newTableName, times, userId, null, type,totalType);
                     trendTimesVOS.addAll(userTradeListByDayOrMonth);
                 }catch (Exception e){
                     log.info(e.getMessage());
                 }
             }
+            //此处需要判断查询出的日期跟查询的times比较,不存在的自动补0
+            repZero(times, trendTimesVOS);
         }
         //查询用户全部交易额根据 日期以及品牌 分组
-        List<TrendTimesVO> trendTimesVOListBrand = baseMapper.getUserTradeListByDayOrMonth(tableName, times, userId,1,type);
+        List<TrendTimesVO> trendTimesVOListBrand = baseMapper.getUserTradeListByDayOrMonth(tableName, times, userId,1,type,totalType);
         //判断是否需要二次查询
         if (lastMonthTimes != null){
-            List<TrendTimesVO> trendTimesVOListBrandLast = baseMapper.getUserTradeListByDayOrMonth(tableName, lastMonthTimes, userId,1,type);
+            //需要构造上月表名
+            LocalDate date = now.minusMonths(1);//月份减一
+            String lastMoth = LocalDateTimeUtil.format(date, DatePattern.SIMPLE_MONTH_PATTERN);
+            String lastTableName = PREFIX_TABLE_NAME + lastMoth;
+            List<TrendTimesVO> trendTimesVOListBrandLast = baseMapper.getUserTradeListByDayOrMonth(lastTableName, lastMonthTimes, userId,1,type,totalType);
             trendTimesVOListBrand.addAll(trendTimesVOListBrandLast);
         }
         //构造数据
@@ -580,12 +626,35 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
         statUserGetUserStatByDayOrMonthVO.setTreadeTrend(trendVOS);//交易趋势
     }
 
+    private static void repZero(List<String> times, List<TrendTimesVO> trendTimesVOS) {
+        for (String time : times) {
+            //补充标识
+            int repFlag = 0;
+            Integer brandId = null;
+            for (TrendTimesVO trendTimesVO : trendTimesVOS) {
+                brandId = trendTimesVO.getBrandId();
+                //如果存在则开启标识
+                if (time.equals(trendTimesVO.getTime())){
+                    repFlag = 1;
+                }
+            }
+            //当返回集合中不存在查询的时间则构造一条0数据加入trendTimesVOS集合
+            if (repFlag == 0){
+                TrendTimesVO trendTimesVO = new TrendTimesVO();
+                trendTimesVO.setTime(time);
+                trendTimesVO.setTotal(0);
+                trendTimesVO.setBrandId(brandId);
+                trendTimesVOS.add(trendTimesVO);
+            }
+        }
+    }
+
     private static ArrayList<TrendVO> getTrendVOS(List<TrendTimesVO> trendTimesVOS, List<TrendTimesVO> trendTimesVOListBrand) {
         //将全部交易额以及品牌交易额构造进入map  key为品牌id  或  all
         Map<String,List<TrendTimesVO>> treadTrend = new HashMap<>();
         treadTrend.put("all", trendTimesVOS);
         for (TrendTimesVO trendTimesVO : trendTimesVOListBrand) {
-            List<TrendTimesVO> trendTimesVOSBrand = treadTrend.get(trendTimesVO.getBrandId().toString());
+            List<TrendTimesVO> trendTimesVOSBrand = treadTrend.get(trendTimesVO.getBrandId() == null ? null : trendTimesVO.getBrandId().toString());
             if (trendTimesVOSBrand == null){
                 //未查询到则构造map  key为品牌id
                 trendTimesVOSBrand = new ArrayList<>();

+ 1 - 1
kxs-stat/kxs-stat-biz/src/main/resources/mapper/KxsUserActTradeMapper.xml

@@ -33,7 +33,7 @@
         kxs_user_act_trade
         WHERE del_flag != 1
         AND user_id = #{userId}
-        AND total_type = 1
+        AND total_type = #{totalType}
         <if test="type == 1">
             and trade_date in
             <foreach collection="times" item="time" open="(" separator="," close=")">

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

@@ -104,7 +104,7 @@
         AND kut.trade_date = kzt.trade_date
         where kut.del_flag != 1
         and kut.user_id = #{userId}
-        and kut.total_type = 1
+        and kut.total_type = #{totalType}
         <if test="type == 1">
             and kut.trade_date in
             <foreach collection="times" item="time" open="(" separator="," close=")">
@@ -151,7 +151,7 @@
             </foreach>
         </if>
         and kut.user_id = #{userId}
-        and kut.total_type = 1
+        and kut.total_type = #{totalType}
         GROUP BY kut.brand_id
     </select>