浏览代码

修改查询报表bug

zhaoxian 3 年之前
父节点
当前提交
d49299591b

+ 7 - 29
jeecg-boot-module-system/src/main/java/cn/com/ctop/toutiao/modules/report/controller/BytedanceVideoReportCtrl.java

@@ -54,15 +54,8 @@ public class BytedanceVideoReportCtrl {
             String order = requestBody.getString("order");
             int pageSize = requestBody.getInteger("pageSize");
             int pageNo = requestBody.getInteger("pageNo");
-            String filedAll = JsonResourceUtil.joinAllFiled(AccountReportConstants.getDicMapByVideo());
-            filedAll = filedAll.replace("like_material", "`like`").
-                    replace("material_show", "`show`").
-                    replace("convert_material", "`convert`").
-                    replace("play50_feed_break", "play_50_feed_break").
-                    replace("play100_feed_break", "play_100_feed_break").
-                    replace("play25_feed_break", "play_25_feed_break").
-                    replace("play75_feed_break", "play_75_feed_break").
-                    replace("share_material", "share");
+            String filedAll = JsonResourceUtil.joinAllFiled(AccountReportConstants.getDicMapByVideo2());
+
             if (!Check.isNull(target) && "material_show".equals(target)) {
                 target = "`show`";
             } else if ("convert_material".equals(target)) {
@@ -106,15 +99,8 @@ public class BytedanceVideoReportCtrl {
             String startDate = requestBody.getString("startDate");
             String endDate = requestBody.getString("endDate");
 
-            String filedAll = JsonResourceUtil.joinAllFiled(AccountReportConstants.getDicMapByVideo());
-            filedAll = filedAll.replace("like_material", "`like`").
-                    replace("material_show", "`show`").
-                    replace("convert_material", "`convert`").
-                    replace("play50_feed_break", "play_50_feed_break").
-                    replace("play100_feed_break", "play_100_feed_break").
-                    replace("play25_feed_break", "play_25_feed_break").
-                    replace("play75_feed_break", "play_75_feed_break").
-                    replace("share_material", "share");
+            String filedAll = JsonResourceUtil.joinAllFiled(AccountReportConstants.getDicMapByVideo2());
+
             try {
                 if (accountIds.isEmpty()) {
                     accountIds = null;
@@ -144,22 +130,14 @@ public class BytedanceVideoReportCtrl {
             //默认消耗必查
             columns.add("cost");
         }
-        String filed = JsonResourceUtil.joinFiled(AccountReportConstants.getDicMapByVideo(), columns);
-        filed = filed.replace("like_material", "`like`").
-                replace("material_show", "`show`").
-                replace("convert_material", "`convert`").
-                replace("play50_feed_break", "play_50_feed_break").
-                replace("play100_feed_break", "play_100_feed_break").
-                replace("play25_feed_break", "play_25_feed_break").
-                replace("play75_feed_break", "play_75_feed_break").
-                replace("share_material", "share");
-        List<String> titles = new ArrayList<>(JsonResourceUtil.joinTitle(AccountReportConstants.getDicMapByVideo(), columns));
+        String filed = JsonResourceUtil.joinFiled(AccountReportConstants.getDicMapByVideo2(), columns);
+
+        List<String> titles = new ArrayList<>(JsonResourceUtil.joinTitle(AccountReportConstants.getDicMapByVideo2(), columns));
         //此处增加两个元素是为了保证数据顺序
         if ("exportDetail".equals(exportType)) {
             titles.add(0, "客户");
             titles.add(1, "项目名称");
             titles.add(2, "时间");
-            titles.add(3, "消耗");
             columns.add(0, "advertiserName");
             columns.add(1, "projectName");
             columns.add(2, "statDate");

+ 1 - 1
jeecg-boot-module-system/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/BytedanceVideoReportMapper.xml

@@ -16,7 +16,7 @@
         DATE_FORMAT(stat_datetime,'%Y-%m-%d') AS createTime,
         sum( t1.SHOW ) AS showMaterial,
         t1.leader_name AS 'teamLeader',
-        concat( CAST( round( sum( t1.in_app_pay ) / sum( t1.CONVERT )* 100, 2 ) AS CHAR ), '%' ) AS 'firstPurchase',
+        CASE WHEN t1.convert != 0 THEN concat( CAST( round(sum(t1.in_app_pay)/sum(t1.convert)* 100, 2 ) AS CHAR ), '%' ) ELSE '0.00%' end AS 'firstPurchase',
         ${filed}
         FROM
         application.bytedance_material_video_report_daily_dw t1

+ 0 - 7
jeecg-boot-module-system/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceAccountReportServiceImpl.java

@@ -158,13 +158,6 @@ public class BytedanceAccountReportServiceImpl implements IBytedanceAccountRepor
 
     @Override
     public List<JSONObject> getExcelDataBy(String filed, String mediaId, JSONArray accounts, String startDate, String endDate, int hour, String target, String order) {
-        filed = filed.replace("like_num", "`like`").
-                replace("show_num", "`show`").
-                replace("convert_num", "`convert`").
-                replace("play50_feed_break", "play_50_feed_break").
-                replace("play100_feed_break", "play_100_feed_break").
-                replace("play25_feed_break", "play_25_feed_break").
-                replace("play75_feed_break", "play_75_feed_break");
         List<JSONObject> result;
         if (startDate.equals(endDate)) {
             //由于时报数据不准,修改逻辑除当日数据外全部请求日报数据

+ 161 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/common/constant/AccountReportConstants.java

@@ -990,9 +990,6 @@ public class AccountReportConstants {
             "  }\n" +
             "}";
 
-    public static void main(String[] args) {
-        System.out.println(BYTEDANCE_VIDEO_REPORT_MAPPING_JSON);
-    }
     public static final String BYTEDANCE_VIDEO_REPORT_MAPPING_JSON = "{\n" +
             "  \"cost\": {\n" +
             "    \"filed\": \"IFNULL(sum(t1.cost),0) as cost \",\n" +
@@ -1150,6 +1147,163 @@ public class AccountReportConstants {
 
 
 
+    public static final String BYTEDANCE_VIDEO_REPORT_MAPPING_JSON2 = "{\n" +
+            "  \"cost\": {\n" +
+            "    \"filed\": \"IFNULL(sum(t1.cost),0) as cost \",\n" +
+            "    \"comment\": \"消耗\"\n" +
+            "  },\n" +
+            "  \"cpm\": {\n" +
+            "    \"filed\": \"CASE WHEN sum(t1.cost) / sum(t1._`show`) IS NULL THEN 0 ELSE ROUND((sum(t1.cost) / sum(t1._`show`)) * 1000, 2 ) END AS cpm \",\n" +
+            "    \"comment\": \"平均千次展现费用\"\n" +
+            "  },\n" +
+            "  \"clickMaterial\": {\n" +
+            "    \"filed\": \"IFNULL(sum(t1.click),0) as clickMaterial \",\n" +
+            "    \"comment\": \"点击数\"\n" +
+            "  },\n" +
+            "  \"ctr\": {\n" +
+            "    \"filed\": \"CASE WHEN sum(t1._`show`) != 0 THEN CONCAT(CAST(ROUND((sum(t1.click) / sum(t1._`show`)) * 100,2) AS CHAR) ,'%') ELSE '0%' end  AS ctr\",\n" +
+            "    \"comment\": \"点击率\"\n" +
+            "  },\n" +
+            "  \"cpc\": {\n" +
+            "    \"filed\": \"CASE WHEN sum(t1.click) / sum(t1.cost) IS NULL THEN 0 ELSE ROUND((sum(t1.cost) / sum(t1.click)), 2) END AS cpc \",\n" +
+            "    \"comment\": \"平均点击单价\"\n" +
+            "  },\n" +
+            "  \"convertMaterial\": {\n" +
+            "    \"filed\": \"IFNULL(sum(t1.`convert`),0) as convertMaterial \",\n" +
+            "    \"comment\": \"转化数\"\n" +
+            "  },\n" +
+            "  \"convertCost\": {\n" +
+            "    \"filed\": \"CASE WHEN sum(t1.cost) / sum(t1.`convert`) IS NULL THEN 0 ELSE ROUND((sum(t1.cost) / sum(t1.`convert`)), 2 ) END AS convertCost \",\n" +
+            "    \"comment\": \"转化成本\"\n" +
+            "  },\n" +
+            "  \"convertRate\": {\n" +
+            "    \"filed\": \"CASE WHEN sum(t1._`show`)!= 0 THEN concat(CAST(round(sum(t1.`convert`) / sum(t1._`show`)*100,2) AS CHAR) ,'%') ELSE '0%' end  AS convertRate \",\n" +
+            "    \"comment\": \"转化率\"\n" +
+            "  },\n" +
+            "  \"downloadStart\": {\n" +
+            "    \"filed\": \"IFNULL(sum(download_start),0) as downloadStart \",\n" +
+            "    \"comment\": \"安卓开始下载数\"\n" +
+            "  },\n" +
+            "  \"downloadStartCost\": {\n" +
+            "    \"filed\": \"CASE WHEN sum(t1.cost) / (t1.download_start) IS NULL THEN 0 ELSE ROUND(sum(t1.cost) / sum(t1.download_start),3) end AS downloadStartCost \",\n" +
+            "    \"comment\": \"安卓开始下载成本\"\n" +
+            "  },\n" +
+            "  \"downloadStartRate\": {\n" +
+            "    \"filed\": \"CASE WHEN sum(t1.click) != 0 THEN concat(CAST(round(sum(t1.download_start) / sum(t1.click)*100,2) AS CHAR) ,'%') ELSE '0%' end  AS downloadStartRate \",\n" +
+            "    \"comment\": \"安卓开始下载率\"\n" +
+            "  },\n" +
+            "  \"downloadFinish\": {\n" +
+            "    \"filed\": \"IFNULL(sum(t1.download_finish),0) as downloadFinish \",\n" +
+            "    \"comment\": \"安卓下载完成数\"\n" +
+            "  },\n" +
+            "  \"downloadFinishCost\": {\n" +
+            "    \"filed\": \"CASE WHEN sum(t1.cost) / sum(t1.download_finish) IS NULL THEN 0 ELSE  ROUND(sum(t1.cost) / sum(t1.download_finish),3) end AS downloadFinishCost \",\n" +
+            "    \"comment\": \"安卓下载完成成本\"\n" +
+            "  },\n" +
+            "  \"downloadFinishRate\": {\n" +
+            "    \"filed\": \"CASE WHEN sum(t1.download_finish) != 0 THEN concat(CAST(round(sum(t1.install_finish) / sum(t1.download_finish)*100,2) AS CHAR),'%') ELSE '0%' end  AS downloadFinishRate \",\n" +
+            "    \"comment\": \"安卓下载完成率\"\n" +
+            "  },\n" +
+            "  \"active\": {\n" +
+            "    \"filed\": \"IFNULL(sum(t1.active),0) as active \",\n" +
+            "    \"comment\": \"激活数\"\n" +
+            "  },\n" +
+            "  \"activeCost\": {\n" +
+            "    \"filed\": \"CASE WHEN sum(t1.cost) / sum(t1.active) IS NULL THEN 0 ELSE ROUND(sum(t1.cost) / sum(t1.active),3) end AS activeCost \",\n" +
+            "    \"comment\": \"激活成本\"\n" +
+            "  },\n" +
+            "  \"activeRate\": {\n" +
+            "    \"filed\": \"CASE WHEN sum(t1.click)!= 0 THEN concat( CAST(round(sum(t1.active) / sum(t1.click)*100,2) AS CHAR),'%') ELSE '0%' end  as activeRate\",\n" +
+            "    \"comment\": \"激活率\"\n" +
+            "  },\n" +
+            "  \"register\": {\n" +
+            "    \"filed\": \"IFNULL(sum(t1.register),0) as register  \",\n" +
+            "    \"comment\": \"注册数\"\n" +
+            "  },\n" +
+            "  \"activeRegisterCost\": {\n" +
+            "    \"filed\": \"CASE WHEN sum(t1.cost) / sum(t1.register) IS NULL THEN 0 ELSE round(sum(t1.cost)/sum(t1.register),3) end as activeRegisterCost \",\n" +
+            "    \"comment\": \"注册成本\"\n" +
+            "  },\n" +
+            "  \"activeRegisterRate\": {\n" +
+            "    \"filed\": \" CASE WHEN sum(t1.active) != 0 THEN concat(CAST(round(sum(t1.register) / sum(t1.active)*100,2) AS CHAR) ,'%') ELSE '0%' end  as activeRegisterRate \",\n" +
+            "    \"comment\": \"注册率\"\n" +
+            "  },\n" +
+            "  \"gameAddiction\": {\n" +
+            "    \"filed\": \"IFNULL(sum(t1.game_addiction),0) as gameAddiction  \",\n" +
+            "    \"comment\": \"关键行为数\"\n" +
+            "  },\n" +
+            "  \"gameAddictionCost\": {\n" +
+            "    \"filed\": \"CASE WHEN sum(t1.cost) / sum(t1.game_addiction) IS NULL THEN 0 ELSE round(sum(t1.cost)/sum(t1.game_addiction),3) end as gameAddictionCost \",\n" +
+            "    \"comment\": \"关键行为成本\"\n" +
+            "  },\n" +
+            "  \"gameAddictionRate\": {\n" +
+            "    \"filed\": \"CASE WHEN sum(t1.active)!= 0 THEN concat(CAST(round(sum(t1.game_addiction) / sum(t1.active)*100,2) AS CHAR),'%') ELSE '0%' end  as gameAddictionRate\",\n" +
+            "    \"comment\": \"关键行为率\"\n" +
+            "  },\n" +
+            "  \"nextDayOpen\": {\n" +
+            "    \"filed\": \"IFNULL(sum(t1.next_day_open),0) as nextDayOpen \",\n" +
+            "    \"comment\": \"次留数\"\n" +
+            "  },\n" +
+            "  \"nextDayOpenCost\": {\n" +
+            "    \"filed\": \"CASE WHEN sum(t1.cost) / sum(t1.next_day_open) IS NULL THEN 0 ELSE round(sum(t1.cost)/sum(t1.next_day_open),3) end as nextDayOpenCost \",\n" +
+            "    \"comment\": \"次留成本\"\n" +
+            "  },\n" +
+            "  \"nextDayOpenRate\": {\n" +
+            "    \"filed\": \"CASE WHEN  sum(t1.active)!= 0 THEN concat(CAST(round(sum(t1.next_day_open) / sum(t1.active)*100,2) AS CHAR) ,'%') ELSE '0%' end  as nextDayOpenRate \",\n" +
+            "    \"comment\": \"次留率\"\n" +
+            "  },\n" +
+            "  \"activePayAmount\": {\n" +
+            "    \"filed\": \"IFNULL(sum(pay_count),0) as activePayAmount \",\n" +
+            "    \"comment\": \"付费数\"\n" +
+            "  },\n" +
+            "  \"activePayCost\": {\n" +
+            "    \"filed\": \"CASE WHEN sum(t1.cost) / sum(t1.pay_count) IS NULL THEN 0 ELSE round(sum(t1.cost)/sum(t1.pay_count),3) end as activePayCost \",\n" +
+            "    \"comment\": \"付费成本\"\n" +
+            "  },\n" +
+            "  \"form\": {\n" +
+            "    \"filed\": \"IFNULL(sum(t1.form),0) as form \",\n" +
+            "    \"comment\": \"表单提交\"\n" +
+            "  },\n" +
+            "  \"validPlayCost\": {\n" +
+            "    \"filed\": \"CASE WHEN sum(t1.cost) / sum(t1.valid_play) IS NULL THEN 0 ELSE round(sum(t1.cost)/sum(t1.valid_play),3) end as validPlayCost \",\n" +
+            "    \"comment\": \"有效播放成本\"\n" +
+            "  },\n" +
+            "  \"play25FeedBreak\": {\n" +
+            "    \"filed\": \"IFNULL(sum(t1.play_25_feed_break),0) as play25FeedBreak \",\n" +
+            "    \"comment\": \"25%进度播放数\"\n" +
+            "  },\n" +
+            "  \"play50FeedBreak\": {\n" +
+            "    \"filed\": \"IFNULL(sum(t1.play_50_feed_break),0) as play50FeedBreak\",\n" +
+            "    \"comment\": \"50%进度播放数\"\n" +
+            "  },\n" +
+            "  \"play75FeedBreak\": {\n" +
+            "    \"filed\": \"IFNULL(sum(t1.play_75_feed_break),0) as play75FeedBreak\",\n" +
+            "    \"comment\": \"75%进度播放数\"\n" +
+            "  },\n" +
+            "  \"play100FeedBreak\": {\n" +
+            "    \"filed\": \"IFNULL(sum(t1.play_100_feed_break),0) as play100FeedBreak\",\n" +
+            "    \"comment\": \"100%进度播放数\"\n" +
+            "  },\n" +
+            "  \"follow\": {\n" +
+            "    \"filed\": \"IFNULL(sum(t1.follow),0) as follow \",\n" +
+            "    \"comment\": \"新增关注数\"\n" +
+            "  },\n" +
+            "  \"likeMaterial\": {\n" +
+            "    \"filed\": \"IFNULL(sum(t1.`like`),0) as likeMaterial \",\n" +
+            "    \"comment\": \"点赞数\"\n" +
+            "  },\n" +
+            "  \"shareMaterial\": {\n" +
+            "    \"filed\": \"IFNULL(sum(t1.share),0) as shareMaterial \",\n" +
+            "    \"comment\": \"分享数\"\n" +
+            "  },\n" +
+            "  \"showMaterial\": {\n" +
+            "    \"filed\": \"IFNULL(t1._`show`, 0 ) AS materialShow \",\n" +
+            "    \"comment\": \"展示数\"\n" +
+            "  }\n" +
+            "}";
+
+
+
     public static final String BYTEDANCE_VIDEO_REPORT_MAPPING_JSON_NEW = "{\n" +
             "  \"cost\": {\n" +
             "    \"filed\": \"IFNULL(sum(t1.cost),0) as cost \",\n" +
@@ -1316,6 +1470,10 @@ public class AccountReportConstants {
         Object jsonByVideo = JSON.parseObject(BYTEDANCE_VIDEO_REPORT_MAPPING_JSON);
         return JsonResourceUtil.jsonToMap(jsonByVideo);
     }
+    public static Map<String, Map<String, Object>> getDicMapByVideo2(){
+        Object jsonByVideo = JSON.parseObject(BYTEDANCE_VIDEO_REPORT_MAPPING_JSON);
+        return JsonResourceUtil.jsonToMap(jsonByVideo);
+    }
     public static Map<String, Map<String, Object>> getDicMapByVideoNew(){
         Object jsonByVideo = JSON.parseObject(BYTEDANCE_VIDEO_REPORT_MAPPING_JSON_NEW);
         return JsonResourceUtil.jsonToMap(jsonByVideo);