浏览代码

新增数据项

wangyunpeng 1 月之前
父节点
当前提交
5c3ffea666
共有 1 个文件被更改,包括 30 次插入25 次删除
  1. 30 25
      api-module/src/main/java/com/tzld/piaoquan/api/job/ContentPlatformDatastatJob.java

+ 30 - 25
api-module/src/main/java/com/tzld/piaoquan/api/job/ContentPlatformDatastatJob.java

@@ -70,6 +70,7 @@ public class ContentPlatformDatastatJob {
                 "FROM    loghubods.out_channel_mid_first_total first_level " +
                 "left join loghubods.out_channel_mid_split_total fission " +
                 "on first_level.channel_shortname = fission.channel_shortname and first_level.subchannel = fission.subchannel and first_level.dt = fission.dt " +
+                "and first_level.type = fission.type and first_level.tag = fission.tag " +
                 "WHERE   first_level.dt = %s and first_level.type = '公众号即时回复' and first_level.tag = '投放渠道内分客户分账号去重';", dt);
         List<Record> dataList = OdpsUtil.getOdpsData(sql);
         // 所有公众号
@@ -102,7 +103,7 @@ public class ContentPlatformDatastatJob {
                 }
 
                 if (Objects.nonNull(fissionCount) && fissionCount > 0 && firstLevelCount > 0) {
-                    BigDecimal num = BigDecimal.valueOf(fissionCount / firstLevelCount);
+                    BigDecimal num = BigDecimal.valueOf(fissionCount.doubleValue() / firstLevelCount);
                     BigDecimal rounded = num.setScale(2, RoundingMode.HALF_UP);
                     item.setScore(rounded.doubleValue());
                 }
@@ -124,10 +125,11 @@ public class ContentPlatformDatastatJob {
         }
         Long now = System.currentTimeMillis();
         // 公众号自动回复数据统计
-        String sql = String.format("SELECT  first_level.channel_shortname, first_level.first_uv, , fission.split_uv " +
+        String sql = String.format("SELECT  first_level.channel_shortname, first_level.first_uv, fission.split_uv " +
                 "FROM    loghubods.out_channel_mid_first_total first_level " +
                 "left join loghubods.out_channel_mid_split_total fission " +
-                "on first_level.channel_shortname = fission.channel_shortname and first_level.subchannel = fission.subchannel and first_level.dt = fission.dt " +
+                "on first_level.channel_shortname = fission.channel_shortname and first_level.dt = fission.dt " +
+                "and first_level.type = fission.type and first_level.tag = fission.tag " +
                 "WHERE   first_level.dt = %s and first_level.type = '公众号即时回复' and first_level.tag = '投放渠道内去重' ;", dt);
         List<Record> dataList = OdpsUtil.getOdpsData(sql);
         // 所有公众号
@@ -167,7 +169,7 @@ public class ContentPlatformDatastatJob {
                 item.setFansIncreaseCount(fansIncreaseCount);
 
                 if (Objects.nonNull(fissionCount) && fissionCount > 0 && firstLevelCount > 0) {
-                    BigDecimal num = BigDecimal.valueOf(fissionCount / firstLevelCount);
+                    BigDecimal num = BigDecimal.valueOf(fissionCount.doubleValue() / firstLevelCount);
                     BigDecimal rounded = num.setScale(2, RoundingMode.HALF_UP);
                     item.setScore(rounded.doubleValue());
                 }
@@ -194,10 +196,11 @@ public class ContentPlatformDatastatJob {
         }
         Long now = System.currentTimeMillis();
         // 公众号自动回复数据统计
-        String sql = String.format("SELECT first_level.subchannel, first_level.first_uv, , fission.split_uv " +
+        String sql = String.format("SELECT first_level.subchannel, first_level.first_uv, fission.split_uv " +
                 "FROM    loghubods.out_channel_mid_first_total first_level " +
                 "left join loghubods.out_channel_mid_split_total fission " +
-                "on first_level.channel_shortname = fission.channel_shortname and first_level.subchannel = fission.subchannel and first_level.dt = fission.dt " +
+                "on first_level.subchannel = fission.subchannel and first_level.dt = fission.dt " +
+                "and first_level.type = fission.type and first_level.tag = fission.tag " +
                 "WHERE   first_level.dt = %s and first_level.type = '服务号代运营' and first_level.tag = '投放渠道内分客户分账号去重' ;", dt);
         List<Record> dataList = OdpsUtil.getOdpsData(sql);
         // 所有公众号
@@ -230,7 +233,7 @@ public class ContentPlatformDatastatJob {
                 }
 
                 if (Objects.nonNull(fissionCount) && fissionCount > 0 && firstLevelCount > 0) {
-                    BigDecimal num = BigDecimal.valueOf(fissionCount / firstLevelCount);
+                    BigDecimal num = BigDecimal.valueOf(fissionCount.doubleValue() / firstLevelCount);
                     BigDecimal rounded = num.setScale(2, RoundingMode.HALF_UP);
                     item.setScore(rounded.doubleValue());
                 }
@@ -252,10 +255,11 @@ public class ContentPlatformDatastatJob {
         }
         Long now = System.currentTimeMillis();
         // 公众号自动回复数据统计
-        String sql = String.format("SELECT  first_level.channel_shortname, first_level.first_uv, , fission.split_uv " +
+        String sql = String.format("SELECT  first_level.channel_shortname, first_level.first_uv, fission.split_uv " +
                 "FROM    loghubods.out_channel_mid_first_total first_level " +
                 "left join loghubods.out_channel_mid_split_total fission " +
-                "on first_level.channel_shortname = fission.channel_shortname and first_level.subchannel = fission.subchannel and first_level.dt = fission.dt " +
+                "on first_level.channel_shortname = fission.channel_shortname and first_level.dt = fission.dt " +
+                "and first_level.type = fission.type and first_level.tag = fission.tag " +
                 "WHERE   first_level.dt = %s and first_level.type = '服务号代运营' and first_level.tag = '投放渠道内去重' ;", dt);
         List<Record> dataList = OdpsUtil.getOdpsData(sql);
         // 所有公众号
@@ -295,7 +299,7 @@ public class ContentPlatformDatastatJob {
                 item.setFansIncreaseCount(fansIncreaseCount);
 
                 if (Objects.nonNull(fissionCount) && fissionCount > 0 && firstLevelCount > 0) {
-                    BigDecimal num = BigDecimal.valueOf(fissionCount / firstLevelCount);
+                    BigDecimal num = BigDecimal.valueOf(fissionCount.doubleValue() / firstLevelCount);
                     BigDecimal rounded = num.setScale(2, RoundingMode.HALF_UP);
                     item.setScore(rounded.doubleValue());
                 }
@@ -444,12 +448,12 @@ public class ContentPlatformDatastatJob {
         if (StringUtils.hasText(param)) {
             dt = param;
         }
-        dataStatMapperExt.deleteQwDatastatTotal(dt);
         Map<String, ContentPlatformQwDataStatTotal> saveMap = new HashMap<>();
-        String outSql = String.format("SELECT first_level.channel_shortname, first_level.first_uv, , fission.split_uv " +
+        String outSql = String.format("SELECT first_level.channel_shortname, first_level.first_uv, fission.split_uv " +
                 "FROM    loghubods.out_channel_mid_first_total first_level " +
                 "left join loghubods.out_channel_mid_split_total fission " +
-                "on first_level.channel_shortname = fission.channel_shortname and first_level.subchannel = fission.subchannel and first_level.dt = fission.dt " +
+                "on first_level.channel_shortname = fission.channel_shortname and first_level.dt = fission.dt " +
+                "and first_level.type = fission.type and first_level.tag = fission.tag " +
                 "WHERE   first_level.dt = %s and first_level.type = '企微外部' and first_level.tag = '投放渠道内去重' ;", dt);
         List<Record> outDataList = OdpsUtil.getOdpsData(outSql);
         Long now = System.currentTimeMillis();
@@ -469,7 +473,7 @@ public class ContentPlatformDatastatJob {
                 }
 
                 if (Objects.nonNull(fissionCount) && fissionCount > 0 && firstLevelCount > 0) {
-                    BigDecimal num = BigDecimal.valueOf(fissionCount / firstLevelCount);
+                    BigDecimal num = BigDecimal.valueOf(fissionCount.doubleValue() / firstLevelCount);
                     BigDecimal rounded = num.setScale(2, RoundingMode.HALF_UP);
                     item.setScore(rounded.doubleValue());
                 }
@@ -480,14 +484,7 @@ public class ContentPlatformDatastatJob {
         }
         List<ContentPlatformQwDataStatTotal> saveList = new ArrayList<>(saveMap.values());
         if (CollectionUtils.isNotEmpty(saveList)) {
-            List<String> channels = saveList.stream().map(ContentPlatformQwDataStatTotal::getChannel).distinct().collect(Collectors.toList());
-            List<ContentPlatformQwDataStatTotal> channelScoreList = dataStatMapperExt.getQwTotalDatastatScoreList(dt, channels);
-            Map<String, Double> channelScoreMap = channelScoreList.stream()
-                    .filter(o -> Objects.nonNull(o.getChannel()) && Objects.nonNull(o.getScore()))
-                    .collect(Collectors.toMap(ContentPlatformQwDataStatTotal::getChannel, ContentPlatformQwDataStatTotal::getScore, (a, b) -> a));
-            for (ContentPlatformQwDataStatTotal item : saveList) {
-                item.setScore(channelScoreMap.get(item.getChannel()));
-            }
+            dataStatMapperExt.deleteQwDatastatTotal(dt);
             dataStatMapperExt.batchInsertQwDatastatTotal(saveList);
         }
         return ReturnT.SUCCESS;
@@ -499,7 +496,6 @@ public class ContentPlatformDatastatJob {
         if (StringUtils.hasText(param)) {
             dt = param;
         }
-        dataStatMapperExt.deleteQwDatastatReplyTotal(dt);
         Map<String, ContentPlatformQwDataStatReplyTotal> saveMap = new HashMap<>();
         String outSql = String.format("SELECT * FROM loghubods.qw_out_touliu_behavior_total WHERE dt=%s and 推送方式 = '自动回复';", dt);
         List<Record> outDataList = OdpsUtil.getOdpsData(outSql);
@@ -557,6 +553,7 @@ public class ContentPlatformDatastatJob {
             for (ContentPlatformQwDataStatReplyTotal item : saveList) {
                 item.setScore(channelScoreMap.get(item.getChannel()));
             }
+            dataStatMapperExt.deleteQwDatastatReplyTotal(dt);
             dataStatMapperExt.batchInsertQwDatastatReplyTotal(saveList);
         }
         return ReturnT.SUCCESS;
@@ -569,10 +566,11 @@ public class ContentPlatformDatastatJob {
             dt = param;
         }
         List<ContentPlatformQwDataStatSubChannel> saveList = new ArrayList<>();
-        String outSql = String.format("SELECT  first_level.channel_shortname, first_level.subchannel, first_level.first_uv, , fission.split_uv " +
+        String outSql = String.format("SELECT  first_level.channel_shortname, first_level.subchannel, first_level.first_uv, fission.split_uv " +
                 "FROM    loghubods.out_channel_mid_first_total first_level " +
                 "left join loghubods.out_channel_mid_split_total fission " +
                 "on first_level.channel_shortname = fission.channel_shortname and first_level.subchannel = fission.subchannel and first_level.dt = fission.dt " +
+                "and first_level.type = fission.type and first_level.tag = fission.tag " +
                 "WHERE   first_level.dt = %s and first_level.type = '企微外部' and first_level.tag = '投放渠道内分客户分账号去重' ;", dt);
         List<Record> outDataList = OdpsUtil.getOdpsData(outSql);
         List<ContentPlatformAccount> accountList = getAllAccount();
@@ -611,7 +609,7 @@ public class ContentPlatformDatastatJob {
                 }
 
                 if (Objects.nonNull(fissionCount) && fissionCount > 0 && firstLevelCount > 0) {
-                    BigDecimal num = BigDecimal.valueOf(fissionCount / firstLevelCount);
+                    BigDecimal num = BigDecimal.valueOf(fissionCount.doubleValue() / firstLevelCount);
                     BigDecimal rounded = num.setScale(2, RoundingMode.HALF_UP);
                     item.setScore(rounded.doubleValue());
                 }
@@ -622,6 +620,7 @@ public class ContentPlatformDatastatJob {
             for (Record record : noSubChannelRecordList) {
                 String channel = (String) record.get(0);
                 int firstLevelCount = Integer.parseInt((String) record.get(2));
+                Integer fissionCount = parseInteger(record.get(3));
                 ContentPlatformQwDataStatSubChannel item = new ContentPlatformQwDataStatSubChannel();
                 item.setDateStr(dt);
                 ContentPlatformAccount account = accountMap.get(channel);
@@ -634,6 +633,12 @@ public class ContentPlatformDatastatJob {
                     item.setFirstLevelCount(0);
                 }
                 item.setFirstLevelCount(item.getFirstLevelCount() + firstLevelCount);
+
+                if (Objects.nonNull(fissionCount) && fissionCount > 0 && firstLevelCount > 0) {
+                    BigDecimal num = BigDecimal.valueOf(fissionCount.doubleValue() / firstLevelCount);
+                    BigDecimal rounded = num.setScale(2, RoundingMode.HALF_UP);
+                    item.setScore(rounded.doubleValue());
+                }
                 item.setCreateTimestamp(now);
                 saveList.add(item);
             }