|
|
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.kxs.common.core.constant.CommonConstants;
|
|
|
import com.kxs.common.core.constant.SecurityConstants;
|
|
|
+import com.kxs.common.core.util.AssertUtil;
|
|
|
import com.kxs.common.core.util.R;
|
|
|
import com.kxs.common.security.util.SecurityUtils;
|
|
|
import com.kxs.stat.api.dto.statUser.StatUserGetMyTradeDTO;
|
|
|
@@ -38,6 +39,7 @@ import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
@@ -257,6 +259,7 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
|
|
|
String today = LocalDateTimeUtil.format(now, DatePattern.PURE_DATE_PATTERN);
|
|
|
//拼接表名
|
|
|
String tableName = PREFIX_TABLE_NAME + month;
|
|
|
+//// 一次性查询全部数据 已弃用
|
|
|
// StatUserGetHomeAmoutVO statUserGetHomeAmoutVO1 = baseMapper.getHomeAmout(userId,tableName,date,month);
|
|
|
//今日交易额
|
|
|
StatUserGetHomeAmoutVO statUserGetHomeAmoutVO = new StatUserGetHomeAmoutVO();
|
|
|
@@ -315,8 +318,14 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
|
|
|
//拼接表名
|
|
|
String tableName = PREFIX_TABLE_NAME + month;
|
|
|
StatUserGetMyTradeVO statUserGetMyTradeVO = new StatUserGetMyTradeVO();
|
|
|
+ KxsUserTrade kxsUserPosTrade = new KxsUserTrade();
|
|
|
//获取pos交易额
|
|
|
- KxsUserTrade kxsUserPosTrade = baseMapper.getMyPosOrCloudTrade(param,tableName,0,userId);
|
|
|
+ try {
|
|
|
+ //此处存在查询的月份不在统计范围,找不到表的错误,直接包裹跳过视为当月无交易
|
|
|
+ kxsUserPosTrade = baseMapper.getMyPosOrCloudTrade(param,tableName,0,userId);
|
|
|
+ }catch (Exception e){
|
|
|
+ log.info(e.getMessage());
|
|
|
+ }
|
|
|
BigDecimal posDebitAmount = BigDecimal.ZERO;
|
|
|
BigDecimal posCreditAmount = BigDecimal.ZERO;
|
|
|
if (kxsUserPosTrade != null){
|
|
|
@@ -338,9 +347,14 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
|
|
|
}
|
|
|
statUserGetMyTradeVO.setPosDebitAmount(posDebitAmount);//Pos借记卡
|
|
|
statUserGetMyTradeVO.setPosCreditAmount(posCreditAmount);//Pos贷记卡
|
|
|
-
|
|
|
+ KxsUserTrade kxsUserCloudTrade = new KxsUserTrade();
|
|
|
//获取云闪付交易额
|
|
|
- KxsUserTrade kxsUserCloudTrade = baseMapper.getMyPosOrCloudTrade(param,tableName,1,userId);
|
|
|
+ try {
|
|
|
+ //此处存在查询的月份不在统计范围,找不到表的错误,直接包裹跳过视为当月无交易
|
|
|
+ kxsUserCloudTrade = baseMapper.getMyPosOrCloudTrade(param,tableName,1,userId);
|
|
|
+ }catch (Exception e){
|
|
|
+ log.info(e.getMessage());
|
|
|
+ }
|
|
|
BigDecimal cloudAmount = BigDecimal.ZERO;
|
|
|
if (kxsUserCloudTrade != null){
|
|
|
cloudAmount = cloudAmount.add(kxsUserCloudTrade.getProBDirectTradeAmt())
|
|
|
@@ -431,13 +445,81 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
|
|
|
public R getUserTradeStatList(StatUserGetUserTradeListDTO param) {
|
|
|
// String month = param.getMonth();
|
|
|
// Integer totalType = param.getTotalType();
|
|
|
-// Integer getType = param.getGetType();
|
|
|
+// Long userId = param.getUserId();
|
|
|
+// Integer getType = param.getGetType();
|
|
|
// Integer tradeType = param.getTradeType();
|
|
|
-// if (tradeType.equals(3)){
|
|
|
-// //获取全部
|
|
|
+// 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;
|
|
|
}
|
|
|
|
|
|
@@ -508,9 +590,6 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
|
|
|
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,totalType);
|
|
|
//判断是否二次查询
|
|
|
@@ -518,9 +597,8 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
|
|
|
List<TrendTimesVO> trendTimesActBrandVOSLast = kxsUserActTradeMapper.getUserActListByDayOrMonth(lastMonthTimes, userId,1,type,totalType);
|
|
|
trendTimesActBrandVOS.addAll(trendTimesActBrandVOSLast);
|
|
|
}
|
|
|
- repZero(times,trendTimesActBrandVOS);
|
|
|
//构造数据
|
|
|
- ArrayList<TrendVO> trendVOSBrand = getTrendVOS(trendTimesActVOS, trendTimesActBrandVOS);
|
|
|
+ ArrayList<TrendVO> trendVOSBrand = getTrendVOS(trendTimesActVOS, trendTimesActBrandVOS,times);
|
|
|
statUserGetUserStatByDayOrMonthVO.setActMerchantTrend(trendVOSBrand);//激活趋势图
|
|
|
}
|
|
|
|
|
|
@@ -593,8 +671,6 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
|
|
|
log.info(e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
- //此处需要判断查询出的日期跟times比较,不存在的自动补0
|
|
|
- repZero(times, trendTimesVOS);
|
|
|
}else {
|
|
|
for (String month : times) {
|
|
|
//拼接表名
|
|
|
@@ -607,8 +683,6 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
|
|
|
log.info(e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
- //此处需要判断查询出的日期跟查询的times比较,不存在的自动补0
|
|
|
- repZero(times, trendTimesVOS);
|
|
|
}
|
|
|
//查询用户全部交易额根据 日期以及品牌 分组
|
|
|
List<TrendTimesVO> trendTimesVOListBrand = baseMapper.getUserTradeListByDayOrMonth(tableName, times, userId,1,type,totalType);
|
|
|
@@ -622,7 +696,7 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
|
|
|
trendTimesVOListBrand.addAll(trendTimesVOListBrandLast);
|
|
|
}
|
|
|
//构造数据
|
|
|
- ArrayList<TrendVO> trendVOS = getTrendVOS(trendTimesVOS, trendTimesVOListBrand);
|
|
|
+ ArrayList<TrendVO> trendVOS = getTrendVOS(trendTimesVOS, trendTimesVOListBrand,times);
|
|
|
statUserGetUserStatByDayOrMonthVO.setTreadeTrend(trendVOS);//交易趋势
|
|
|
}
|
|
|
|
|
|
@@ -649,7 +723,7 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private static ArrayList<TrendVO> getTrendVOS(List<TrendTimesVO> trendTimesVOS, List<TrendTimesVO> trendTimesVOListBrand) {
|
|
|
+ private static ArrayList<TrendVO> getTrendVOS(List<TrendTimesVO> trendTimesVOS, List<TrendTimesVO> trendTimesVOListBrand,List<String> times) {
|
|
|
//将全部交易额以及品牌交易额构造进入map key为品牌id 或 all
|
|
|
Map<String,List<TrendTimesVO>> treadTrend = new HashMap<>();
|
|
|
treadTrend.put("all", trendTimesVOS);
|
|
|
@@ -659,7 +733,7 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
|
|
|
//未查询到则构造map key为品牌id
|
|
|
trendTimesVOSBrand = new ArrayList<>();
|
|
|
trendTimesVOSBrand.add(trendTimesVO);
|
|
|
- treadTrend.put(trendTimesVO.getBrandId().toString(),trendTimesVOSBrand);
|
|
|
+ treadTrend.put(trendTimesVO.getBrandId() != null ? trendTimesVO.getBrandId().toString():"all",trendTimesVOSBrand);
|
|
|
}else {
|
|
|
trendTimesVOSBrand.add(trendTimesVO);
|
|
|
}
|
|
|
@@ -667,6 +741,8 @@ public class KxsUserTradeServiceImpl extends ServiceImpl<KxsUserTradeMapper, Kxs
|
|
|
//将map转换为返回实体类
|
|
|
ArrayList<TrendVO> trendVOS = new ArrayList<>();
|
|
|
for (Map.Entry<String, List<TrendTimesVO>> entry : treadTrend.entrySet()) {
|
|
|
+ //补0数据
|
|
|
+ repZero(times,entry.getValue());
|
|
|
TrendVO trendVO = new TrendVO();
|
|
|
trendVO.setName(entry.getKey());
|
|
|
trendVO.setTimes(entry.getValue());
|