Browse Source

素材大盘接口拆分

yangzian 3 years ago
parent
commit
a75f6ef092

+ 34 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialReportOverViewController.java

@@ -67,6 +67,40 @@ public class MaterialReportOverViewController {
         result.setSuccess(true);
         return result;
     }
+ /**
+     *  根据筛选条件查询视频上新 有效
+     *  mediaId 类型 1-头条 2-快手
+     *  projects[] 项目id
+     */
+    @PostMapping("/sumDataVideoNewEffective")
+    public Result<Map<String,Object>> sumDataVideoNewEffective(@RequestBody JSONObject params){
+        Result<Map<String,Object>> result= new Result<>();
+        Map<String, Object> totalModule = materialReportOverViewService.sumDataVideoNewEffective(
+                params.getInteger("mediaId"),
+                params.getString("startDate"),
+                params.getString("endDate"),
+                params.getJSONArray("projects"));
+        result.setResult(totalModule);
+        result.setSuccess(true);
+        return result;
+    }
+ /**
+     *  根据筛选条件查询 爆款视频
+     *  mediaId 类型 1-头条 2-快手
+     *  projects[] 项目id
+     */
+    @PostMapping("/sumDataVideoHot")
+    public Result<Map<String,Object>> sumDataVideoHot(@RequestBody JSONObject params){
+        Result<Map<String,Object>> result= new Result<>();
+        Map<String, Object> totalModule = materialReportOverViewService.sumDataVideoHot(
+                params.getInteger("mediaId"),
+                params.getString("startDate"),
+                params.getString("endDate"),
+                params.getJSONArray("projects"));
+        result.setResult(totalModule);
+        result.setSuccess(true);
+        return result;
+    }
 
     /**
      *  消耗数据趋势图

+ 3 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/MaterialReportOverViewMapper.java

@@ -35,8 +35,10 @@ public interface MaterialReportOverViewMapper {
 
 
 
-    //查询素材时段数据 头条
+    //查询素材 上新 数据 头条
     List<Map<String,String>> queryMaterialCountList(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("projects") JSONArray projects);
+    //上新 快手
+    List<Map<String,String>> queryMaterialCountListKs(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("projects") JSONArray projects);
 
     //查询有消耗的素材 - 头条
     Long queryMaterialCostList(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("projects") JSONArray projects);

+ 35 - 8
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/MaterialReportOverViewMapper.xml

@@ -126,12 +126,13 @@
         AND DATE_FORMAT(create_time, '%Y-%m-%d')&lt;= #{endDate}
     </select>
 
-    <!-- 查询素材时段数据 -->
+    <!-- 查询素材 上新 数据  头条-->
     <select id="queryMaterialCountList" resultType="java.util.HashMap">
         SELECT
-        count(id) as count ,
-        DATE_FORMAT(create_time, '%Y-%m-%d') as time
-        from ctop_material_info
+        count(distinct code) as count ,
+        DATE_FORMAT(cmi.create_time, '%Y-%m-%d') as time
+        from ctop_material_info cmi
+        left join ctop_project cp on cp.id = cmi.project_id
         WHERE 1=1
         <if test="projects !=null">
             AND project_id IN
@@ -140,24 +141,48 @@
                 #{item}
             </foreach>
         </if>
-        and create_time &gt;= #{startDate}
-        and create_time &lt;= #{endDate}
+        and cp.media_id in (1,3)
+        and cmi.create_time &gt;= #{startDate}
+        and cmi.create_time &lt;= #{endDate}
         GROUP BY time
         ORDER BY time
 
     </select>
+<!-- 查询素材 上新 数据  快手-->
+    <select id="queryMaterialCountListKs" resultType="java.util.HashMap">
+        SELECT
+        count(distinct code) as count ,
+        DATE_FORMAT(cmi.create_time, '%Y-%m-%d') as time
+        from ctop_material_info cmi
+        left join ctop_project cp on cp.id = cmi.project_id
+        WHERE 1=1
+        <if test="projects !=null">
+            AND project_id IN
+            <foreach collection="projects" item="item" separator=","
+                     open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+        and cp.media_id in (2,4)
+        and cmi.create_time &gt;= #{startDate}
+        and cmi.create_time &lt;= #{endDate}
+        GROUP BY time
+        ORDER BY time
+    </select>
 
  <!-- 查询有消耗的素材 头条 -->
     <select id="queryMaterialCostList" resultType="long">
         SELECT
-        COUNT(m.id) as count
+        COUNT( distinct m.id) as count
         FROM
         ctop_material_info m
+        LEFT join ctop_project cp on cp.id = m.project_id
         LEFT JOIN ctop_bytedance_video_info v ON m.CODE = v.signature
         LEFT JOIN ctop_bytedance_report_material_daily r ON v.account_id = r.account_id AND v.material_id = r.material_id
         WHERE
         1 = 1
         AND r.cost > 0
+        AND cp.media_id in (1,3)
         <if test="projects !=null">
             AND m.project_id IN
             <foreach collection="projects" item="item" separator=","
@@ -174,13 +199,15 @@
     <select id="queryMaterialCostListKs" resultType="long">
 
         SELECT
-        COUNT(m.id) as count
+        COUNT( distinct m.id ) as count
         FROM
         ctop_material_info m
+        LEFT join ctop_project cp on cp.id = m.project_id
         LEFT JOIN ctop_kuaishou_report_daily_material r ON r.signature = m.code
         WHERE
         1 = 1
         AND r.charge > 0
+        AND cp.media_id in (2,4)
         <if test="projects !=null">
             AND m.project_id IN
             <foreach collection="projects" item="item" separator=","

+ 4 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IMaterialReportOverViewService.java

@@ -22,6 +22,10 @@ public interface IMaterialReportOverViewService {
 
     //查询总消耗、视频总数、爆款视频数、有效是视频数
     Map<String,Object> getTotalModule(int mediaId, String startDate, String endDate, JSONArray projects);
+    //查询 视频上新 和 有效
+    Map<String,Object> sumDataVideoNewEffective(int mediaId, String startDate, String endDate, JSONArray projects);
+    //查询 爆款
+    Map<String,Object> sumDataVideoHot(int mediaId, String startDate, String endDate, JSONArray projects);
 
     //查询消耗趋势图
     List<JSONObject> getTotalChat(int mediaId, String startDate, String endDate, JSONArray projects);

+ 72 - 34
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/MaterialReportOverViewServiceImpl.java

@@ -104,7 +104,36 @@ public class MaterialReportOverViewServiceImpl implements IMaterialReportOverVie
             result.put("yesterdayCost", yesterdayCost);
             //环比 (昨日消耗-前日消耗)/前日消耗 X 100%
             result.put("chainCompare", countLink(yesterdayCost,beforeYesterdayCost));
-            //视频上新
+
+        } else if (mediaId == CtopAdConstant.PLATFORM_TYPE_KUAISHOU_INT) {
+            //总消耗
+            BigDecimal cost = materialReportOverViewMapper.queryKuaishouCost(startDate, endDate, projects);
+            //上阶段
+            BigDecimal lastCost = materialReportOverViewMapper.queryKuaishouCost(DateUtils.addDay(startDate, -DateUtils.dateDiff(startDate, endDate)-1), DateUtils.addDay(startDate, -1), projects);
+            result.put("costTotal", cost);
+            //同比 (本阶段截止昨天消耗-上一个阶段截止和昨天对应日期的消耗)/上一个阶段截止和昨天对应日期的消耗 X 100%
+            result.put("yearOnYearCompare", countLink(cost,lastCost));
+            //昨日消耗
+            BigDecimal yesterdayCost = materialReportOverViewMapper.queryKuaishouCost(endDate, endDate, projects);
+            //前天消耗
+            BigDecimal beforeYesterdayCost = materialReportOverViewMapper.queryKuaishouCost(DateUtils.addDay(endDate, -1), DateUtils.addDay(endDate, -1), projects);
+            result.put("yesterdayCost", yesterdayCost);
+            //环比 (昨日消耗-前日消耗)/前日消耗 X 100%
+            result.put("chainCompare", countLink(yesterdayCost,beforeYesterdayCost));
+        }
+        return result;
+    }
+
+
+
+    @Override
+    public Map<String, Object> sumDataVideoNewEffective(int mediaId, String startDate, String endDate, JSONArray projects) {
+        Map<String, Object> result = new HashMap<>();
+        if (projects.isEmpty()) {
+            projects = getProjectsByCurrentUser(mediaId);
+        }
+        if (mediaId == CtopAdConstant.PLATFORM_TYPE_BYTEDANCE_INT) {
+              //视频上新
             List<Map<String, String>> videoList = materialReportOverViewMapper.queryMaterialCountList(startDate+" 00:00:00", endDate+" 23:59:59", projects);
             //总数
             long videoTotal = videoList.stream().collect(Collectors.summarizingInt(s->Integer.valueOf(String.valueOf(s.get("count"))))).getSum();
@@ -121,6 +150,39 @@ public class MaterialReportOverViewServiceImpl implements IMaterialReportOverVie
             result.put("effectiveTotal",effectiveTotal);
             //素材有效率 = 有效视频数量 / 视频总数 X 100%
             result.put("effectiveCompare",Check.isNull(videoCost) ? 0: new BigDecimal(effectiveTotal).divide(new BigDecimal(videoTotal),4, RoundingMode.HALF_UP));
+
+        } else if (mediaId == CtopAdConstant.PLATFORM_TYPE_KUAISHOU_INT) {
+
+            //视频上新
+            List<Map<String, String>> videoList = materialReportOverViewMapper.queryMaterialCountListKs(startDate+" 00:00:00", endDate+" 23:59:59", projects);
+            //总数
+            long videoTotal = videoList.stream().collect(Collectors.summarizingInt(s->Integer.valueOf(String.valueOf(s.get("count"))))).getSum();
+            result.put("videoList",videoList);
+            result.put("videoTotal",videoTotal);
+            //素材使用率 = 有消耗的素材 / 总数 * 100%
+            long videoCost = materialReportOverViewMapper.queryMaterialCostListKs(startDate+" 00:00:00", endDate+" 23:59:59", projects);
+            result.put("useCompare", Check.isNull(videoCost) ? 0: new BigDecimal(videoCost).divide(new BigDecimal(videoTotal),4, RoundingMode.HALF_UP));
+            //有效视频
+            List<Map<String, String>> effectiveList = materialReportOverViewMapper.selectEffectiveMaterialVideoKs(startDate,endDate, projects);
+            //总数
+            long effectiveTotal = effectiveList.stream().collect(Collectors.summarizingInt(s->Integer.valueOf(String.valueOf(s.get("count"))))).getSum();
+            result.put("effectiveList",effectiveList);
+            result.put("effectiveTotal",effectiveTotal);
+            //素材有效率 = 有效视频数量 / 视频总数 X 100%
+            result.put("effectiveCompare",Check.isNull(videoTotal) ? 0 : new BigDecimal(effectiveTotal).divide(new BigDecimal(videoTotal),4, RoundingMode.HALF_UP));
+
+        }
+        return result;
+    }
+
+    //爆款视频
+    @Override
+    public Map<String, Object> sumDataVideoHot(int mediaId, String startDate, String endDate, JSONArray projects) {
+        Map<String, Object> result = new HashMap<>();
+        if (projects.isEmpty()) {
+            projects = getProjectsByCurrentUser(mediaId);
+        }
+        if (mediaId == CtopAdConstant.PLATFORM_TYPE_BYTEDANCE_INT) {
             //爆款视频
             List<Map<String, String>> hotList = materialReportOverViewMapper.selectHotMaterialVideoBytedance(startDate,endDate, projects);
             //总数
@@ -142,39 +204,6 @@ public class MaterialReportOverViewServiceImpl implements IMaterialReportOverVie
             result.put("hostCompare", countLink(new BigDecimal(yesterday),new BigDecimal(before)));
 
         } else if (mediaId == CtopAdConstant.PLATFORM_TYPE_KUAISHOU_INT) {
-            //总消耗
-            BigDecimal cost = materialReportOverViewMapper.queryKuaishouCost(startDate, endDate, projects);
-            //上阶段
-            BigDecimal lastCost = materialReportOverViewMapper.queryKuaishouCost(DateUtils.addDay(startDate, -DateUtils.dateDiff(startDate, endDate)-1), DateUtils.addDay(startDate, -1), projects);
-            result.put("costTotal", cost);
-            //同比 (本阶段截止昨天消耗-上一个阶段截止和昨天对应日期的消耗)/上一个阶段截止和昨天对应日期的消耗 X 100%
-            result.put("yearOnYearCompare", countLink(cost,lastCost));
-            //昨日消耗
-            BigDecimal yesterdayCost = materialReportOverViewMapper.queryKuaishouCost(endDate, endDate, projects);
-            //前天消耗
-            BigDecimal beforeYesterdayCost = materialReportOverViewMapper.queryKuaishouCost(DateUtils.addDay(endDate, -1), DateUtils.addDay(endDate, -1), projects);
-            result.put("yesterdayCost", yesterdayCost);
-            //环比 (昨日消耗-前日消耗)/前日消耗 X 100%
-            result.put("chainCompare", countLink(yesterdayCost,beforeYesterdayCost));
-
-            //视频上新
-            List<Map<String, String>> videoList = materialReportOverViewMapper.queryMaterialCountList(startDate+" 00:00:00", endDate+" 23:59:59", projects);
-            //总数
-            long videoTotal = videoList.stream().collect(Collectors.summarizingInt(s->Integer.valueOf(String.valueOf(s.get("count"))))).getSum();
-            result.put("videoList",videoList);
-            result.put("videoTotal",videoTotal);
-            //素材使用率 = 有消耗的素材 / 总数 * 100%
-            long videoCost = materialReportOverViewMapper.queryMaterialCostListKs(startDate+" 00:00:00", endDate+" 23:59:59", projects);
-
-            result.put("useCompare", Check.isNull(videoCost) ? 0: new BigDecimal(videoCost).divide(new BigDecimal(videoTotal),4, RoundingMode.HALF_UP));
-            //有效视频
-            List<Map<String, String>> effectiveList = materialReportOverViewMapper.selectEffectiveMaterialVideoKs(startDate,endDate, projects);
-            //总数
-            long effectiveTotal = effectiveList.stream().collect(Collectors.summarizingInt(s->Integer.valueOf(String.valueOf(s.get("count"))))).getSum();
-            result.put("effectiveList",effectiveList);
-            result.put("effectiveTotal",effectiveTotal);
-            //素材有效率 = 有效视频数量 / 视频总数 X 100%
-            result.put("effectiveCompare",Check.isNull(videoTotal) ? 0 : new BigDecimal(effectiveTotal).divide(new BigDecimal(videoTotal),4, RoundingMode.HALF_UP));
             //爆款视频
             List<Map<String, String>> hotList = materialReportOverViewMapper.selectHotMaterialVideoKs(startDate,endDate, projects);
             //总数
@@ -198,6 +227,12 @@ public class MaterialReportOverViewServiceImpl implements IMaterialReportOverVie
         return result;
     }
 
+
+
+
+
+
+
     @Override
     public List<JSONObject> getTotalChat(int mediaId, String startDate, String endDate, JSONArray projects) {
         List<JSONObject> result = new ArrayList<>();
@@ -477,6 +512,9 @@ public class MaterialReportOverViewServiceImpl implements IMaterialReportOverVie
     //环比计算
     private  BigDecimal countLink(BigDecimal numA, BigDecimal numB) {
         BigDecimal link = new BigDecimal("0");
+        if (Check.isNull(numA) || Check.isNull(numB)){
+            return link;
+        }
         if (numB.compareTo(BigDecimal.ZERO)!=0) {
             link = (numA.subtract(numB)).divide(numB, 4, RoundingMode.HALF_UP);
         }