|
@@ -741,12 +741,12 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
|
|
|
//获取三张表的查询结果
|
|
|
List<AdsGameDayAgain> list = getListByTableType("total", cri);
|
|
|
- List<AdsGameDayAgainBuy> listBuy = getListByTableType("buy", cri);
|
|
|
- List<AdsGameDayAgainNature> listNature = getListByTableType("nature", cri);
|
|
|
+ List<AdsGameDayAgainBuy> listBuySql = getListByTableType("buy", cri);
|
|
|
+ List<AdsGameDayAgainNature> listNatureSql = getListByTableType("nature", cri);
|
|
|
|
|
|
log.info("list长度:" + list.size());
|
|
|
- log.info("listBuy长度:" + listBuy.size());
|
|
|
- log.info("listNature长度:" + listNature.size());
|
|
|
+ log.info("listBuy长度:" + listBuySql.size());
|
|
|
+ log.info("listNature长度:" + listNatureSql.size());
|
|
|
|
|
|
//创建Map记录数据
|
|
|
Map<LocalDate, List<GameDataAgainDayVO>> map = new TreeMap<>(
|
|
@@ -755,12 +755,16 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
List<List<GameDataAgainDayVO>> tempList = new ArrayList<>();
|
|
|
//记录查询出的记录条数
|
|
|
int count = list.size();
|
|
|
- //如果长度为0返回空结果
|
|
|
+ //如果总复充list长度为0返回空结果
|
|
|
if (count == 0){
|
|
|
return map;
|
|
|
}
|
|
|
- //初始化list
|
|
|
+ //初始化tempList
|
|
|
initList(tempList, count);
|
|
|
+ //补全缺少的数据
|
|
|
+ List resList = findMissDateAgainData(list, listBuySql, listNatureSql);
|
|
|
+ List<AdsGameDayAgainBuy> listBuy = (List<AdsGameDayAgainBuy>) resList.get(0);
|
|
|
+ List<AdsGameDayAgainNature> listNature = (List<AdsGameDayAgainNature>) resList.get(1);
|
|
|
|
|
|
//外层循环8次 表示不同复充次数的数据
|
|
|
for (int i = 0; i < 8; i++) {
|
|
@@ -846,6 +850,10 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
map.put(list.get(i).getDdf(), tempList.get(i));
|
|
|
}
|
|
|
|
|
|
+ log.info("list长度:" + list.size());
|
|
|
+ log.info("listBuy长度:" + listBuy.size());
|
|
|
+ log.info("listNature长度:" + listNature.size());
|
|
|
+
|
|
|
//返回数据
|
|
|
return map;
|
|
|
}
|
|
@@ -932,7 +940,7 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
* @return DayN数据
|
|
|
*/
|
|
|
private DayN getDayNByTableName(Map<String, Object> dayNMap, String tableName) {
|
|
|
- Sql dayNSql = null;
|
|
|
+ Sql dayNSql;
|
|
|
if (dayNMap.get("sourceSystem") != null) {
|
|
|
//构架SQL语句,查询相关DayN表获取相关充值数据
|
|
|
dayNSql = Sqls.create(
|
|
@@ -1083,6 +1091,84 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 补全缺少的日期数据
|
|
|
+ * @param list 查询到的复充趋势总量原始数据
|
|
|
+ * @param listBuy 查询到的复充趋势买量量原始数据
|
|
|
+ * @param listNature 查询到的复充趋势自然量原始数据
|
|
|
+ * @return 返回处理好的结果list
|
|
|
+ */
|
|
|
+ private List findMissDateAgainData(List<AdsGameDayAgain> list,List<AdsGameDayAgainBuy> listBuy, List<AdsGameDayAgainNature> listNature){
|
|
|
+ //初始化买量和自然量复充数据list
|
|
|
+ int count = list.size();
|
|
|
+ List<AdsGameDayAgainBuy> listBuyFinal = new ArrayList<>();
|
|
|
+ List<AdsGameDayAgainNature> listNatureFinal = new ArrayList<>();
|
|
|
+
|
|
|
+ //先判断三个list的数据量是否相同
|
|
|
+ if (count == listBuy.size() && count == listNature.size()){
|
|
|
+ //不少数据
|
|
|
+ List resList = new ArrayList();
|
|
|
+ resList.add(listBuy);
|
|
|
+ resList.add(listNature);
|
|
|
+ return resList;
|
|
|
+ }
|
|
|
+
|
|
|
+ //循环赋初值
|
|
|
+ for (int i = 0; i< count ; i++){
|
|
|
+ listBuyFinal.add(i, AdsGameDayAgainBuy.builder()
|
|
|
+ .dt(list.get(i).getDt())
|
|
|
+ .ddf(list.get(i).getDdf())
|
|
|
+ .gameId(list.get(i).getGameId())
|
|
|
+ .gameName(list.get(i).getGameName())
|
|
|
+ .sourceSystem(list.get(i).getSourceSystem())
|
|
|
+ .buyC1(0L)
|
|
|
+ .buyC2(0L)
|
|
|
+ .buyC3(0L)
|
|
|
+ .buyC4(0L)
|
|
|
+ .buyC5(0L)
|
|
|
+ .buyC6(0L)
|
|
|
+ .buyC7(0L)
|
|
|
+ .buyC8(0L)
|
|
|
+ .buyC9(0L)
|
|
|
+ .build());
|
|
|
+ listNatureFinal.add(i, AdsGameDayAgainNature.builder()
|
|
|
+ .dt(list.get(i).getDt())
|
|
|
+ .ddf(list.get(i).getDdf())
|
|
|
+ .gameId(list.get(i).getGameId())
|
|
|
+ .gameName(list.get(i).getGameName())
|
|
|
+ .sourceSystem(list.get(i).getSourceSystem())
|
|
|
+ .natureC1(0L)
|
|
|
+ .natureC2(0L)
|
|
|
+ .natureC3(0L)
|
|
|
+ .natureC4(0L)
|
|
|
+ .natureC5(0L)
|
|
|
+ .natureC6(0L)
|
|
|
+ .natureC7(0L)
|
|
|
+ .natureC8(0L)
|
|
|
+ .natureC9(0L)
|
|
|
+ .build());
|
|
|
+ }
|
|
|
+
|
|
|
+ //替换已经查询到的数据
|
|
|
+ int tempBuy = 0;
|
|
|
+ int tempNature = 0;
|
|
|
+ for (int i = 0; i < count; i++) {
|
|
|
+ if (tempBuy < listBuy.size() && listBuyFinal.get(i).getDdf().equals(listBuy.get(tempBuy).getDdf())){
|
|
|
+ listBuyFinal.set(i, listBuy.get(tempBuy));
|
|
|
+ tempBuy++;
|
|
|
+ }
|
|
|
+ if (tempNature < listNature.size() && listNatureFinal.get(i).getDdf().equals(listNature.get(tempNature).getDdf())){
|
|
|
+ listNatureFinal.set(i, listNature.get(tempNature));
|
|
|
+ tempNature++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List resList = new ArrayList();
|
|
|
+ resList.add(listBuyFinal);
|
|
|
+ resList.add(listNatureFinal);
|
|
|
+
|
|
|
+ return resList;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 不同表获取不同的list结果
|
|
|
*
|
|
@@ -1140,6 +1226,7 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
game_name,
|
|
|
game_id,
|
|
|
game_classify,
|
|
|
+ source_system,
|
|
|
|
|
|
buy_reg_num,
|
|
|
nature_reg_num,
|