瀏覽代碼

adq对接

yumeng 1 周之前
父節點
當前提交
e8aba35587
共有 12 個文件被更改,包括 773 次插入107 次删除
  1. 52 7
      jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/mapper/xml/AdqAdvertiserReportMapper.xml
  2. 56 11
      jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/mapper/xml/BytedanceAccountReportDailyDwMapper.xml
  3. 56 11
      jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/mapper/xml/KuaishouAccountReportDailyDwMapper.xml
  4. 3 2
      jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/service/impl/AdqAdvertiserReportServiceImpl.java
  5. 3 2
      jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/service/impl/BytedanceAccountReportDailyDwServiceImpl.java
  6. 3 2
      jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/service/impl/KuaishouAccountReportDailyDwServiceImpl.java
  7. 140 72
      jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/service/impl/MaterialStareServiceImpl.java
  8. 260 0
      jeecg-boot-report/src/main/java/cn/com/ctop/report/controller/TencentMaterialReportDailyDwController.java
  9. 21 0
      jeecg-boot-report/src/main/java/cn/com/ctop/report/mapper/TencentMaterialVideoReportDailyDwMapper.java
  10. 114 0
      jeecg-boot-report/src/main/java/cn/com/ctop/report/mapper/xml/TencentMaterialVideoReportDailyDwMapper.xml
  11. 21 0
      jeecg-boot-report/src/main/java/cn/com/ctop/report/service/ITencentMaterialVideoReportDailyDwService.java
  12. 44 0
      jeecg-boot-report/src/main/java/cn/com/ctop/report/service/impl/TencentMaterialVideoReportDailyDwServiceImpl.java

+ 52 - 7
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/mapper/xml/AdqAdvertiserReportMapper.xml

@@ -578,7 +578,7 @@
         ) t3 ON 1 = 1
     </select>
 
-    <sql id="adqOperateGroupRelationTable">
+    <sql id="adqOperateGroupRelationTableHourly">
         SELECT t.managerId, t.userId
         FROM (
                  SELECT m.manage_id AS managerId, u.id AS userId
@@ -616,10 +616,55 @@
         GROUP BY t.managerId, t.userId
     </sql>
 
-    <sql id="adqOperateGroupUsersTable">
+    <sql id="adqOperateGroupRelationTableDaily">
+        SELECT t.managerId, t.userId
+        FROM (
+                 SELECT m.manage_id AS managerId, u.id AS userId
+                 FROM `jeecg-boot`.sys_user u
+                          LEFT JOIN `application`.app_user_manage m ON u.id = m.user_id
+                          LEFT JOIN `jeecg-boot`.sys_user_role ur ON u.id = ur.user_id
+                          LEFT JOIN `jeecg-boot`.sys_role r ON ur.role_id = r.id
+                          INNER JOIN (
+                     SELECT DISTINCT report.user_id
+                     FROM application.adq_advertiser_report_daily report
+                     WHERE report.stat_date >= #{startDate}
+                       AND report.stat_date &lt;= #{endDate}
+                       AND report.cost > 0
+                 ) active_users ON active_users.user_id = u.id
+                 WHERE m.manage_id IN
+                       <foreach collection="managerIds" item="item" separator="," open="(" close=")">
+                           #{item}
+                       </foreach>
+                   AND r.role_name LIKE '%运营%'
+                   AND u.STATUS = 1
+                   AND u.del_flag = 0
+                 GROUP BY m.manage_id, u.id
+                 UNION ALL
+                 SELECT report.user_id AS managerId, report.user_id AS userId
+                 FROM application.adq_advertiser_report_daily report
+                 WHERE report.user_id IN
+                       <foreach collection="managerIds" item="item" separator="," open="(" close=")">
+                           #{item}
+                       </foreach>
+                   AND report.stat_date >= #{startDate}
+                   AND report.stat_date &lt;= #{endDate}
+                   AND report.cost > 0
+                 GROUP BY report.user_id
+             ) t
+        GROUP BY t.managerId, t.userId
+    </sql>
+
+    <sql id="adqOperateGroupUsersTableHourly">
+        SELECT DISTINCT rel.userId
+        FROM (
+                 <include refid="adqOperateGroupRelationTableHourly"/>
+             ) rel
+    </sql>
+
+    <sql id="adqOperateGroupUsersTableDaily">
         SELECT DISTINCT rel.userId
         FROM (
-                 <include refid="adqOperateGroupRelationTable"/>
+                 <include refid="adqOperateGroupRelationTableDaily"/>
              ) rel
     </sql>
 
@@ -775,7 +820,7 @@
                NULL AS 'unitNum',
                NULL AS 'projectNum'
         FROM (
-                 <include refid="adqOperateGroupRelationTable"/>
+                 <include refid="adqOperateGroupRelationTableHourly"/>
              ) rel
                  LEFT JOIN (
             SELECT d.user_id,
@@ -809,7 +854,7 @@
                               END), 0) AS 'lastCost'
             FROM application.adq_advertiser_report_hourly d
                      INNER JOIN (
-                <include refid="adqOperateGroupUsersTable"/>
+                <include refid="adqOperateGroupUsersTableHourly"/>
             ) users ON users.userId = d.user_id
             WHERE d.stat_date >= #{lastTimeStart}
               AND d.stat_date &lt;= #{endDate}
@@ -833,7 +878,7 @@
                NULL AS 'unitNum',
                NULL AS 'projectNum'
         FROM (
-                 <include refid="adqOperateGroupRelationTable"/>
+                 <include refid="adqOperateGroupRelationTableDaily"/>
              ) rel
                  LEFT JOIN (
             SELECT d.user_id,
@@ -863,7 +908,7 @@
                               END), 0) AS 'lastCost'
             FROM application.adq_advertiser_report_daily d
                      INNER JOIN (
-                <include refid="adqOperateGroupUsersTable"/>
+                <include refid="adqOperateGroupUsersTableDaily"/>
             ) users ON users.userId = d.user_id
             WHERE d.stat_date >= #{lastTimeStart}
               AND d.stat_date &lt;= #{endDate}

+ 56 - 11
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/mapper/xml/BytedanceAccountReportDailyDwMapper.xml

@@ -596,7 +596,7 @@
         ) t4 ON 1=1
     </select>
 
-    <sql id="toutiaoOperateGroupRelationTable">
+    <sql id="toutiaoOperateGroupRelationTableHourly">
         SELECT t.managerId, t.userId
         FROM (
                  SELECT m.manage_id AS managerId, u.id AS userId
@@ -634,10 +634,55 @@
         GROUP BY t.managerId, t.userId
     </sql>
 
-    <sql id="toutiaoOperateGroupUsersTable">
+    <sql id="toutiaoOperateGroupRelationTableDaily">
+        SELECT t.managerId, t.userId
+        FROM (
+                 SELECT m.manage_id AS managerId, u.id AS userId
+                 FROM `jeecg-boot`.sys_user u
+                          LEFT JOIN `application`.app_user_manage m ON u.id = m.user_id
+                          LEFT JOIN `jeecg-boot`.sys_user_role ur ON u.id = ur.user_id
+                          LEFT JOIN `jeecg-boot`.sys_role r ON ur.role_id = r.id
+                          INNER JOIN (
+                     SELECT DISTINCT report.user_id
+                     FROM application.bytedance_advertiser_report_daily_dw report
+                     WHERE report.stat_datetime >= #{startDate}
+                       AND report.stat_datetime &lt;= #{endDate}
+                       AND report.cost > 0
+                 ) active_users ON active_users.user_id = u.id
+                 WHERE m.manage_id IN
+                       <foreach collection="managerIds" item="item" separator="," open="(" close=")">
+                           #{item}
+                       </foreach>
+                   AND r.role_name LIKE '%运营%'
+                   AND u.STATUS = 1
+                   AND u.del_flag = 0
+                 GROUP BY m.manage_id, u.id
+                 UNION ALL
+                 SELECT report.user_id AS managerId, report.user_id AS userId
+                 FROM application.bytedance_advertiser_report_daily_dw report
+                 WHERE report.user_id IN
+                       <foreach collection="managerIds" item="item" separator="," open="(" close=")">
+                           #{item}
+                       </foreach>
+                   AND report.stat_datetime >= #{startDate}
+                   AND report.stat_datetime &lt;= #{endDate}
+                   AND report.cost > 0
+                 GROUP BY report.user_id
+             ) t
+        GROUP BY t.managerId, t.userId
+    </sql>
+
+    <sql id="toutiaoOperateGroupUsersTableHourly">
+        SELECT DISTINCT rel.userId
+        FROM (
+                 <include refid="toutiaoOperateGroupRelationTableHourly"/>
+             ) rel
+    </sql>
+
+    <sql id="toutiaoOperateGroupUsersTableDaily">
         SELECT DISTINCT rel.userId
         FROM (
-                 <include refid="toutiaoOperateGroupRelationTable"/>
+                 <include refid="toutiaoOperateGroupRelationTableDaily"/>
              ) rel
     </sql>
 
@@ -731,7 +776,7 @@
                IFNULL(SUM(base.unitNum), 0) AS 'unitNum',
                IFNULL(SUM(base.projectNum), 0) AS 'projectNum'
         FROM (
-                 <include refid="toutiaoOperateGroupRelationTable"/>
+                 <include refid="toutiaoOperateGroupRelationTableHourly"/>
              ) rel
                  LEFT JOIN (
             SELECT d.user_id,
@@ -740,7 +785,7 @@
                    SUM(d.cost) AS 'totalCost'
             FROM `application`.bytedance_advertiser_report_hourly_dw d
                      INNER JOIN (
-                <include refid="toutiaoOperateGroupUsersTable"/>
+                <include refid="toutiaoOperateGroupUsersTableHourly"/>
             ) users ON users.userId = d.user_id
             WHERE d.cost > 0
               AND d.hour &lt;= #{hour}
@@ -753,7 +798,7 @@
                    SUM(d.cost) AS 'lastCost'
             FROM `application`.bytedance_advertiser_report_hourly_dw d
                      INNER JOIN (
-                <include refid="toutiaoOperateGroupUsersTable"/>
+                <include refid="toutiaoOperateGroupUsersTableHourly"/>
             ) users ON users.userId = d.user_id
             WHERE d.cost > 0
               AND d.hour &lt;= #{hour}
@@ -767,7 +812,7 @@
                    IFNULL(SUM(base.new_cpd_project_num), 0) AS 'projectNum'
             FROM application.app_bytedance_account_base_info_d base
                      INNER JOIN (
-                <include refid="toutiaoOperateGroupUsersTable"/>
+                <include refid="toutiaoOperateGroupUsersTableHourly"/>
             ) users ON users.userId = base.user_id
             WHERE base.stat_date >= #{startDate}
               AND base.stat_date &lt;= #{endDate}
@@ -791,7 +836,7 @@
                IFNULL(SUM(base.unitNum), 0) AS 'unitNum',
                IFNULL(SUM(base.projectNum), 0) AS 'projectNum'
         FROM (
-                 <include refid="toutiaoOperateGroupRelationTable"/>
+                 <include refid="toutiaoOperateGroupRelationTableDaily"/>
              ) rel
                  LEFT JOIN (
             SELECT d.user_id,
@@ -800,7 +845,7 @@
                    SUM(d.cost) AS 'totalCost'
             FROM `application`.bytedance_advertiser_report_daily_dw d
                      INNER JOIN (
-                <include refid="toutiaoOperateGroupUsersTable"/>
+                <include refid="toutiaoOperateGroupUsersTableDaily"/>
             ) users ON users.userId = d.user_id
             WHERE d.cost > 0
               AND d.stat_datetime >= #{startDate}
@@ -812,7 +857,7 @@
                    SUM(d.cost) AS 'lastCost'
             FROM `application`.bytedance_advertiser_report_daily_dw d
                      INNER JOIN (
-                <include refid="toutiaoOperateGroupUsersTable"/>
+                <include refid="toutiaoOperateGroupUsersTableDaily"/>
             ) users ON users.userId = d.user_id
             WHERE d.cost > 0
               AND d.stat_datetime >= #{lastTimeStart}
@@ -825,7 +870,7 @@
                    IFNULL(SUM(base.new_cpd_project_num), 0) AS 'projectNum'
             FROM application.app_bytedance_account_base_info_d base
                      INNER JOIN (
-                <include refid="toutiaoOperateGroupUsersTable"/>
+                <include refid="toutiaoOperateGroupUsersTableDaily"/>
             ) users ON users.userId = base.user_id
             WHERE base.stat_date >= #{startDate}
               AND base.stat_date &lt;= #{endDate}

+ 56 - 11
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/mapper/xml/KuaishouAccountReportDailyDwMapper.xml

@@ -623,7 +623,7 @@
         ) t4 ON 1=1
     </select>
 
-    <sql id="kuaishouOperateGroupRelationTable">
+    <sql id="kuaishouOperateGroupRelationTableHourly">
         SELECT t.managerId, t.userId
         FROM (
                  SELECT m.manage_id AS managerId, u.id AS userId
@@ -661,10 +661,55 @@
         GROUP BY t.managerId, t.userId
     </sql>
 
-    <sql id="kuaishouOperateGroupUsersTable">
+    <sql id="kuaishouOperateGroupRelationTableDaily">
+        SELECT t.managerId, t.userId
+        FROM (
+                 SELECT m.manage_id AS managerId, u.id AS userId
+                 FROM `jeecg-boot`.sys_user u
+                          LEFT JOIN `application`.app_user_manage m ON u.id = m.user_id
+                          LEFT JOIN `jeecg-boot`.sys_user_role ur ON u.id = ur.user_id
+                          LEFT JOIN `jeecg-boot`.sys_role r ON ur.role_id = r.id
+                          INNER JOIN (
+                     SELECT DISTINCT report.user_id
+                     FROM application.kuaishou_account_report_daily_dw report
+                     WHERE report.stat_date >= #{startDate}
+                       AND report.stat_date &lt;= #{endDate}
+                       AND report.charge > 0
+                 ) active_users ON active_users.user_id = u.id
+                 WHERE m.manage_id IN
+                       <foreach collection="managerIds" item="item" separator="," open="(" close=")">
+                           #{item}
+                       </foreach>
+                   AND r.role_name LIKE '%运营%'
+                   AND u.STATUS = 1
+                   AND u.del_flag = 0
+                 GROUP BY m.manage_id, u.id
+                 UNION ALL
+                 SELECT report.user_id AS managerId, report.user_id AS userId
+                 FROM application.kuaishou_account_report_daily_dw report
+                 WHERE report.user_id IN
+                       <foreach collection="managerIds" item="item" separator="," open="(" close=")">
+                           #{item}
+                       </foreach>
+                   AND report.stat_date >= #{startDate}
+                   AND report.stat_date &lt;= #{endDate}
+                   AND report.charge > 0
+                 GROUP BY report.user_id
+             ) t
+        GROUP BY t.managerId, t.userId
+    </sql>
+
+    <sql id="kuaishouOperateGroupUsersTableHourly">
+        SELECT DISTINCT rel.userId
+        FROM (
+                 <include refid="kuaishouOperateGroupRelationTableHourly"/>
+             ) rel
+    </sql>
+
+    <sql id="kuaishouOperateGroupUsersTableDaily">
         SELECT DISTINCT rel.userId
         FROM (
-                 <include refid="kuaishouOperateGroupRelationTable"/>
+                 <include refid="kuaishouOperateGroupRelationTableDaily"/>
              ) rel
     </sql>
 
@@ -756,7 +801,7 @@
                    END AS 'yearOnYearCost',
                IFNULL(SUM(base.unitNum), 0) AS 'unitNum'
         FROM (
-                 <include refid="kuaishouOperateGroupRelationTable"/>
+                 <include refid="kuaishouOperateGroupRelationTableHourly"/>
              ) rel
                  LEFT JOIN (
             SELECT d.user_id,
@@ -765,7 +810,7 @@
                    SUM(d.charge) AS 'totalCost'
             FROM `application`.kuaishou_account_report_hourly_dw d
                      INNER JOIN (
-                <include refid="kuaishouOperateGroupUsersTable"/>
+                <include refid="kuaishouOperateGroupUsersTableHourly"/>
             ) users ON users.userId = d.user_id
             WHERE d.charge > 0
               AND d.hour &lt;= #{hour}
@@ -778,7 +823,7 @@
                    SUM(d.charge) AS 'lastCost'
             FROM `application`.kuaishou_account_report_hourly_dw d
                      INNER JOIN (
-                <include refid="kuaishouOperateGroupUsersTable"/>
+                <include refid="kuaishouOperateGroupUsersTableHourly"/>
             ) users ON users.userId = d.user_id
             WHERE d.charge > 0
               AND d.hour &lt;= #{hour}
@@ -791,7 +836,7 @@
                    IFNULL(SUM(base.new_all_unit_num), 0) AS 'unitNum'
             FROM application.app_kuaishou_account_today_base_info_d base
                      INNER JOIN (
-                <include refid="kuaishouOperateGroupUsersTable"/>
+                <include refid="kuaishouOperateGroupUsersTableHourly"/>
             ) users ON users.userId = base.user_id
             WHERE base.stat_date >= #{startDate}
               AND base.stat_date &lt;= #{endDate}
@@ -814,7 +859,7 @@
                    END AS 'yearOnYearCost',
                IFNULL(SUM(base.unitNum), 0) AS 'unitNum'
         FROM (
-                 <include refid="kuaishouOperateGroupRelationTable"/>
+                 <include refid="kuaishouOperateGroupRelationTableDaily"/>
              ) rel
                  LEFT JOIN (
             SELECT d.user_id,
@@ -823,7 +868,7 @@
                    SUM(d.charge) AS 'totalCost'
             FROM `application`.kuaishou_account_report_daily_dw d
                      INNER JOIN (
-                <include refid="kuaishouOperateGroupUsersTable"/>
+                <include refid="kuaishouOperateGroupUsersTableDaily"/>
             ) users ON users.userId = d.user_id
             WHERE d.charge > 0
               AND d.stat_date >= #{startDate}
@@ -835,7 +880,7 @@
                    SUM(d.charge) AS 'lastCost'
             FROM `application`.kuaishou_account_report_daily_dw d
                      INNER JOIN (
-                <include refid="kuaishouOperateGroupUsersTable"/>
+                <include refid="kuaishouOperateGroupUsersTableDaily"/>
             ) users ON users.userId = d.user_id
             WHERE d.charge > 0
               AND d.stat_date >= #{lastTimeStart}
@@ -847,7 +892,7 @@
                    IFNULL(SUM(base.new_all_unit_num), 0) AS 'unitNum'
             FROM application.app_kuaishou_account_today_base_info_d base
                      INNER JOIN (
-                <include refid="kuaishouOperateGroupUsersTable"/>
+                <include refid="kuaishouOperateGroupUsersTableDaily"/>
             ) users ON users.userId = base.user_id
             WHERE base.stat_date >= #{startDate}
               AND base.stat_date &lt;= #{endDate}

+ 3 - 2
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/service/impl/AdqAdvertiserReportServiceImpl.java

@@ -77,6 +77,7 @@ public class AdqAdvertiserReportServiceImpl implements IAdqAdvertiserReportServi
     public JSONObject getTrendCharge(String type, Long projectId, String startTime, String endTime) {
         Integer startTimeInt = DateUtils.getDateInteger(startTime);
         Integer endTimeInt = DateUtils.getDateInteger(endTime);
+        boolean currentDayOnly = startTime.equals(endTime) && startTime.equals(DateUtils.formatDate(new Date()));
 
         List<JSONObject> today = null;
         List<JSONObject> yesterday = null;
@@ -85,13 +86,13 @@ public class AdqAdvertiserReportServiceImpl implements IAdqAdvertiserReportServi
         } else if ("2".equals(type)) {
             today = adqAdvertiserReportMapper.getAdvertiserNoByDays(startTimeInt, endTimeInt);
         } else if ("3".equals(type)) {
-            if (startTime.equals(endTime)) {
+            if (currentDayOnly) {
                 today = adqAdvertiserReportMapper.getUnitNoByHours(startTimeInt);
             } else {
                 today = adqAdvertiserReportMapper.getUnitNoByDays(startTimeInt, endTimeInt);
             }
         } else {
-            if (startTime.equals(endTime)) {
+            if (currentDayOnly) {
                 today = adqAdvertiserReportMapper.getHourCost(projectId, startTimeInt);
                 yesterday = adqAdvertiserReportMapper.getHourCost(projectId, DateUtils.getDateInteger(DateUtils.getLastDay(startTime, 1)));
             } else {

+ 3 - 2
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/service/impl/BytedanceAccountReportDailyDwServiceImpl.java

@@ -44,6 +44,7 @@ public class BytedanceAccountReportDailyDwServiceImpl implements IBytedanceAccou
     public JSONObject getTrendCharge(String type, Long projectId, String startTime, String endTime) {
         Integer startTimeInt = DateUtils.getDateInteger(startTime);
         Integer endTimeInt = DateUtils.getDateInteger(endTime);
+        boolean currentDayOnly = startTime.equals(endTime) && startTime.equals(DateUtils.formatDate(new Date()));
 
         List<JSONObject> today = null;
         List<JSONObject> yesterday = null;
@@ -52,13 +53,13 @@ public class BytedanceAccountReportDailyDwServiceImpl implements IBytedanceAccou
         } else if ("2".equals(type)) {
             today = bytedanceAccountReportDailyDwMapper.getAdvertiserNoByDays(startTimeInt, endTimeInt);
         } else if ("3".equals(type)) {
-            if (startTime.equals(endTime)) {
+            if (currentDayOnly) {
                 today = bytedanceAccountReportDailyDwMapper.getUnitNoByHours(startTimeInt);
             } else {
                 today = bytedanceAccountReportDailyDwMapper.getUnitNoByDays(startTimeInt, endTimeInt);
             }
         } else {
-            if (startTime.equals(endTime)) {
+            if (currentDayOnly) {
                 today = bytedanceAccountReportDailyDwMapper.getHourCost(projectId, startTimeInt);
                 yesterday = bytedanceAccountReportDailyDwMapper.getHourCost(projectId, DateUtils.getDateInteger(DateUtils.getLastDay(startTime, 1)));
             } else {

+ 3 - 2
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/service/impl/KuaishouAccountReportDailyDwServiceImpl.java

@@ -43,6 +43,7 @@ public class KuaishouAccountReportDailyDwServiceImpl implements IKuaishouAccount
     public JSONObject getTrendCharge(String type, Long projectId, String startTime, String endTime) {
         Integer startTimeInt = DateUtils.getDateInteger(startTime);
         Integer endTimeInt = DateUtils.getDateInteger(endTime);
+        boolean currentDayOnly = startTime.equals(endTime) && startTime.equals(DateUtils.formatDate(new Date()));
 
         List<JSONObject> today = null;
         List<JSONObject> yesterday = null;
@@ -51,13 +52,13 @@ public class KuaishouAccountReportDailyDwServiceImpl implements IKuaishouAccount
         } else if ("2".equals(type)) {
             today = kuaishouAccountReportDailyDwMapper.getAdvertiserNoByDays(startTimeInt, endTimeInt);
         } else if ("3".equals(type)) {
-            if (startTime.equals(endTime)) {
+            if (currentDayOnly) {
                 today = kuaishouAccountReportDailyDwMapper.getUnitNoByHours(startTimeInt);
             } else {
                 today = kuaishouAccountReportDailyDwMapper.getUnitNoByDays(startTimeInt, endTimeInt);
             }
         } else {
-            if (startTime.equals(endTime)) {
+            if (currentDayOnly) {
                 today = kuaishouAccountReportDailyDwMapper.getHourcharge(projectId, startTimeInt);
                 yesterday = kuaishouAccountReportDailyDwMapper.getHourcharge(projectId, DateUtils.getDateInteger(DateUtils.getLastDay(startTime, 1)));
             } else {

+ 140 - 72
jeecg-boot-material-view/src/main/java/org/jeecg/ctop/material/service/impl/MaterialStareServiceImpl.java

@@ -68,6 +68,8 @@ public class MaterialStareServiceImpl implements MaterialStareService {
     public Result kuaiShousumData(String mediaType, String type, String startTime, String endTime, String userId) {
         long stratDate = DateUtils.getDateInteger(startTime);
         long endDate = DateUtils.getDateInteger(endTime);
+        long nowDate = DateUtils.getDateInteger(DateUtils.getDate("yyyy-MM-dd"));
+        boolean currentDayOnly = isCurrentDayOnly(stratDate, endDate, nowDate);
         //查询当前人员所有下级
         Set<String> operatorUserIds = getAffiliateId(userId);
         //头条
@@ -76,7 +78,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
             //汇总
             if (StringUtils.equals(type, "1")) {
                 //查询一天数据时 查询时报
-                if (stratDate == endDate) {
+                if (currentDayOnly) {
                     Map resultMap = new HashMap<>();
                     //时报
                     List<Map> todayList = materialStareMapper.getBytedanceCostHourlyByUserIdList(stratDate, endDate, operatorUserIds);
@@ -94,7 +96,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
 
             //运营个人
             if (StringUtils.equals(type, "2")) {
-                if (stratDate == endDate) {
+                if (currentDayOnly) {
                     //时报 消耗前5
                     List<JSONObject> userList = materialStareMapper.getBytedanceCostByTop5HourList(stratDate, endDate, operatorUserIds);
                     List<Map> resultList = new ArrayList<>();
@@ -132,7 +134,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
             //汇总
             if (StringUtils.equals(type, "1")) {
                 //查询一天数据时 查询时报
-                if (stratDate == endDate) {
+                if (currentDayOnly) {
                     Map resultMap = new HashMap<>();
                     //时报
                     List<Map> todayList = materialStareMapper.getKuaiShouCostHourlyByUserIdList(stratDate, endDate, operatorUserIds);
@@ -149,7 +151,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
 
                 //运营个人
             } else if (StringUtils.equals(type, "2")) {
-                if (stratDate == endDate) {
+                if (currentDayOnly) {
                     //时报 消耗前5
                     List<JSONObject> userList = materialStareMapper.getKuaiShouCostByTop5HourList(stratDate, endDate, operatorUserIds);
                     List<Map> resultList = new ArrayList<>();
@@ -184,7 +186,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
         }
         if (StringUtils.equals(mediaType, "16")) {
             if (StringUtils.equals(type, "1")) {
-                if (stratDate == endDate) {
+                if (currentDayOnly) {
                     Map resultMap = new HashMap<>();
                     List<Map> todayList = materialStareMapper.getAdqCostHourlyByUserIdList(stratDate, endDate, operatorUserIds);
                     long time = DateUtils.getDateInteger(DateUtils.addDayParse(Long.toString(endDate), -1));
@@ -197,7 +199,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
                 return Result.successMsg("查询-腾讯-日报-汇总成功。", dailyList);
             }
             if (StringUtils.equals(type, "2")) {
-                if (stratDate == endDate) {
+                if (currentDayOnly) {
                     List<JSONObject> userList = materialStareMapper.getAdqCostByTop5HourList(stratDate, endDate, operatorUserIds);
                     List<Map> resultList = new ArrayList<>();
                     for (JSONObject jsonObject : userList) {
@@ -245,6 +247,8 @@ public class MaterialStareServiceImpl implements MaterialStareService {
 
         long stratDate = DateUtils.getDateInteger(startTime);
         long endDate = DateUtils.getDateInteger(endTime);
+        long nowDate = DateUtils.getDateInteger(DateUtils.getDate("yyyy-MM-dd"));
+        boolean currentDayOnly = isCurrentDayOnly(stratDate, endDate, nowDate);
         Set<String> userSet = new HashSet<String>() {{
             add(userId);
         }};
@@ -275,7 +279,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
         //头条
         if (StringUtils.equals(mediaType, "1")) {
             //查询一天数据时 查询时报
-            if (stratDate == endDate) {
+            if (currentDayOnly) {
                 Map resultMap = new HashMap<>();
                 //时报
                 List<Map> todayList = materialStareMapper.getBytedanceCostHourlyByUserIdList(stratDate, endDate, userSet);
@@ -293,7 +297,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
         //快手
         if (StringUtils.equals(mediaType, "2")) {
             //查询一天数据时 查询时报
-            if (stratDate == endDate) {
+            if (currentDayOnly) {
                 Map resultMap = new HashMap<>();
                 //时报
                 List<Map> todayList = materialStareMapper.getKuaiShouCostHourlyByUserIdList(stratDate, endDate, userSet);
@@ -309,7 +313,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
             return Result.successMsg("查询运营个人-日报-汇总成功。", dailyList);
         }
         if (StringUtils.equals(mediaType, "16")) {
-            if (stratDate == endDate) {
+            if (currentDayOnly) {
                 Map resultMap = new HashMap<>();
                 List<Map> todayList = materialStareMapper.getAdqCostHourlyByUserIdList(stratDate, endDate, userSet);
                 long time = DateUtils.getDateInteger(DateUtils.addDayParse(Long.toString(endDate), -1));
@@ -359,27 +363,38 @@ public class MaterialStareServiceImpl implements MaterialStareService {
                 long startDate = Long.valueOf(DateUtils.getDateInteger(startTime));
                 long endDate = Long.valueOf(DateUtils.getDateInteger(endTime));
                 boolean currentDay = startDate == endDate && startDate == nowDate;
+                Map<String, String> lastTime = DateUtils.getStartEndTime(startTime, endTime);
+                long lastTimeStart = Long.valueOf(DateUtils.getDateInteger(lastTime.get("lastTimeStart")));
+                long lastTimeEnd = Long.valueOf(DateUtils.getDateInteger(lastTime.get("lastTimeEnd")));
                 JSONObject projectUserSummary = materialStareMapper.getBytedanceOperateProjectUserSummary(startDate, endDate, operatorUserIds);
                 JSONObject sectionSummary = currentDay
                         ? materialStareMapper.getBytedanceTotalCost(startDate, endDate, nowHour, operatorUserIds)
                         : materialStareMapper.getBytedanceOperateSummary(startDate, endDate, operatorUserIds);
-                JSONObject compareSummary = materialStareMapper.getOperateTodayYesterdaySummary(
-                        "application.bytedance_advertiser_report_hourly_dw",
-                        "stat_datetime",
-                        "cost",
-                        "hour",
-                        nowDate,
-                        nowDate,
-                        nowHour,
-                        time,
-                        operatorUserIds
-                );
-                double todayCost = getJsonDouble(compareSummary, "todayCost");
-                resultMap.put("todayCost", todayCost);
-                double yesterdayCost = getJsonDouble(compareSummary, "yesterdayCost");
-                resultMap.put("compare", formatRate(todayCost, yesterdayCost, decimalFormat));
                 Double tCost = getJsonDouble(sectionSummary, "totalCost");
                 resultMap.put("sectionCost", tCost);
+                if (currentDay) {
+                    JSONObject compareSummary = materialStareMapper.getOperateTodayYesterdaySummary(
+                            "application.bytedance_advertiser_report_hourly_dw",
+                            "stat_datetime",
+                            "cost",
+                            "hour",
+                            nowDate,
+                            nowDate,
+                            nowHour,
+                            time,
+                            operatorUserIds
+                    );
+                    double todayCost = getJsonDouble(compareSummary, "todayCost");
+                    resultMap.put("todayCost", todayCost);
+                    double yesterdayCost = getJsonDouble(compareSummary, "yesterdayCost");
+                    resultMap.put("compare", formatRate(todayCost, yesterdayCost, decimalFormat));
+                } else {
+                    JSONObject periodSummary = materialStareMapper.getBytedancePeriodCostSummary(startDate, endDate, lastTimeStart, lastTimeEnd, operatorUserIds);
+                    double currentCost = getJsonDouble(periodSummary, "currentCost");
+                    double lastCost = getJsonDouble(periodSummary, "lastCost");
+                    resultMap.put("todayCost", currentCost);
+                    resultMap.put("compare", formatRate(currentCost, lastCost, decimalFormat));
+                }
                 int activeUserNum = getJsonInt(projectUserSummary, "userNum");
                 Double userAverageAccount = safeDivide(getJsonDouble(sectionSummary, "accountNum"), activeUserNum);
                 Double userAveragecost = safeDivide(tCost, activeUserNum);
@@ -394,29 +409,40 @@ public class MaterialStareServiceImpl implements MaterialStareService {
                 long startDate = Long.valueOf(DateUtils.getDateInteger(startTime));
                 long endDate = Long.valueOf(DateUtils.getDateInteger(endTime));
                 boolean currentDay = startDate == endDate && startDate == nowDate;
+                Map<String, String> lastTime = DateUtils.getStartEndTime(startTime, endTime);
+                long lastTimeStart = Long.valueOf(DateUtils.getDateInteger(lastTime.get("lastTimeStart")));
+                long lastTimeEnd = Long.valueOf(DateUtils.getDateInteger(lastTime.get("lastTimeEnd")));
                 JSONObject summary = currentDay
                         ? materialStareMapper.getKuaiShouTotalCost(startDate, endDate, nowHour, operatorUserIds)
                         : materialStareMapper.getKuaiShouOperateSummary(startDate, endDate, operatorUserIds);
                 JSONObject projectUserSummary = currentDay
                         ? materialStareMapper.getKuaiShouOperateProjectUserSummary(startDate, endDate, nowHour, operatorUserIds)
                         : materialStareMapper.getKuaiShouOperateSummary(startDate, endDate, operatorUserIds);
-                JSONObject compareSummary = materialStareMapper.getOperateTodayYesterdaySummary(
-                        "application.kuaishou_account_report_hourly_dw",
-                        "stat_date",
-                        "charge",
-                        "hour",
-                        nowDate,
-                        nowDate,
-                        nowHour,
-                        time,
-                        operatorUserIds
-                );
-                double todayCost = getJsonDouble(compareSummary, "todayCost");
-                resultMap.put("todayCost", todayCost);
-                double yesterdayCost = getJsonDouble(compareSummary, "yesterdayCost");
-                resultMap.put("compare", formatRate(todayCost, yesterdayCost, decimalFormat));
                 double sectionCost = getJsonDouble(summary, "totalCost");
                 resultMap.put("sectionCost", sectionCost);
+                if (currentDay) {
+                    JSONObject compareSummary = materialStareMapper.getOperateTodayYesterdaySummary(
+                            "application.kuaishou_account_report_hourly_dw",
+                            "stat_date",
+                            "charge",
+                            "hour",
+                            nowDate,
+                            nowDate,
+                            nowHour,
+                            time,
+                            operatorUserIds
+                    );
+                    double todayCost = getJsonDouble(compareSummary, "todayCost");
+                    resultMap.put("todayCost", todayCost);
+                    double yesterdayCost = getJsonDouble(compareSummary, "yesterdayCost");
+                    resultMap.put("compare", formatRate(todayCost, yesterdayCost, decimalFormat));
+                } else {
+                    JSONObject periodSummary = materialStareMapper.getKuaiShouPeriodCostSummary(startDate, endDate, lastTimeStart, lastTimeEnd, operatorUserIds);
+                    double currentCost = getJsonDouble(periodSummary, "currentCost");
+                    double lastCost = getJsonDouble(periodSummary, "lastCost");
+                    resultMap.put("todayCost", currentCost);
+                    resultMap.put("compare", formatRate(currentCost, lastCost, decimalFormat));
+                }
                 int activeUserNum = getJsonInt(projectUserSummary, "userNum");
                 Double userAverageAccount = safeDivide(getJsonDouble(summary, "accountNum"), activeUserNum);
                 Double userAveragecost = safeDivide(sectionCost, activeUserNum);
@@ -426,20 +452,31 @@ public class MaterialStareServiceImpl implements MaterialStareService {
                 resultMap.put("projectNum", String.valueOf(getJsonInt(projectUserSummary, "projectNum")));
             }
             if (mediaType.equals("16")) {
-                JSONObject jsonObjectNow = materialStareMapper.getAdqTotalCost(nowDate, nowDate, nowHour, operatorUserIds);
-                double todayCost = getJsonDouble(jsonObjectNow, "totalCost");
-                resultMap.put("todayCost", todayCost);
-                JSONObject jsonObjectYesterday = materialStareMapper.getAdqTotalCost(time, time, nowHour, operatorUserIds);
-                double yesterdayCost = getJsonDouble(jsonObjectYesterday, "totalCost");
-                resultMap.put("compare", formatRate(todayCost, yesterdayCost, decimalFormat));
                 long startDate = Long.valueOf(DateUtils.getDateInteger(startTime));
                 long endDate = Long.valueOf(DateUtils.getDateInteger(endTime));
                 boolean currentDay = startDate == endDate && startDate == nowDate;
+                Map<String, String> lastTime = DateUtils.getStartEndTime(startTime, endTime);
+                long lastTimeStart = Long.valueOf(DateUtils.getDateInteger(lastTime.get("lastTimeStart")));
+                long lastTimeEnd = Long.valueOf(DateUtils.getDateInteger(lastTime.get("lastTimeEnd")));
                 JSONObject totalCost = currentDay
                         ? materialStareMapper.getAdqTotalCost(startDate, endDate, nowHour, operatorUserIds)
                         : materialStareMapper.getAdqTotalCostDaily(startDate, endDate, operatorUserIds);
                 Double tCost = getJsonDouble(totalCost, "totalCost");
                 resultMap.put("sectionCost", tCost);
+                if (currentDay) {
+                    JSONObject jsonObjectNow = materialStareMapper.getAdqTotalCost(nowDate, nowDate, nowHour, operatorUserIds);
+                    double todayCost = getJsonDouble(jsonObjectNow, "totalCost");
+                    resultMap.put("todayCost", todayCost);
+                    JSONObject jsonObjectYesterday = materialStareMapper.getAdqTotalCost(time, time, nowHour, operatorUserIds);
+                    double yesterdayCost = getJsonDouble(jsonObjectYesterday, "totalCost");
+                    resultMap.put("compare", formatRate(todayCost, yesterdayCost, decimalFormat));
+                } else {
+                    JSONObject periodSummary = materialStareMapper.getAdqPeriodCostSummary(startDate, endDate, lastTimeStart, lastTimeEnd, operatorUserIds);
+                    double currentCost = getJsonDouble(periodSummary, "currentCost");
+                    double lastCost = getJsonDouble(periodSummary, "lastCost");
+                    resultMap.put("todayCost", currentCost);
+                    resultMap.put("compare", formatRate(currentCost, lastCost, decimalFormat));
+                }
                 Double userAverageAccount = safeDivide(getJsonDouble(totalCost, "accountNum"), safeSize(operatorUserIds));
                 Double userAveragecost = safeDivide(tCost, safeSize(operatorUserIds));
                 DecimalFormat df = new DecimalFormat("#.000");
@@ -502,7 +539,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
             resultMap.put("todayCost", todayCost);
             resultMap.put("todayCompare", formatRate(todayCost, yesterdayCost, decimalFormat));
 
-            boolean currentDayOnly = stratDate == endDate && endDate == nowDate;
+            boolean currentDayOnly = isCurrentDayOnly(stratDate, endDate, nowDate);
             double timeCost;
             double lastCost;
             if (currentDayOnly) {
@@ -566,7 +603,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
             resultMap.put("todayCost", todayCost);
             resultMap.put("todayCompare", formatRate(todayCost, yesterdayCost, decimalFormat));
 
-            boolean currentDayOnly = stratDate == endDate && endDate == nowDate;
+            boolean currentDayOnly = isCurrentDayOnly(stratDate, endDate, nowDate);
             double timeCost;
             double lastCost;
             if (currentDayOnly) {
@@ -625,7 +662,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
             resultMap.put("todayCost", todayCost);
             resultMap.put("todayCompare", formatRate(todayCost, yesterdayCost, decimalFormat));
 
-            boolean currentDayOnly = stratDate == endDate && endDate == nowDate;
+            boolean currentDayOnly = isCurrentDayOnly(stratDate, endDate, nowDate);
             double timeCost;
             double lastCost;
             if (currentDayOnly) {
@@ -687,7 +724,6 @@ public class MaterialStareServiceImpl implements MaterialStareService {
             long lastTimeEnd = Long.valueOf(DateUtils.getDateInteger(lastTime.get("lastTimeEnd")));
 
             long now = Long.valueOf(DateUtils.getDateInteger(DateUtils.getDate("yyyy-MM-dd")));
-
             PageHelper.startPage(pageNum, pageSize);
             List<KuaiShouOperateVo> listOperate = loadOperatePageData(mediaType, startDate, entDate, now, operatorUserIds);
             enrichOperateList(listOperate, mediaType, startDate, entDate, now, lastTimeStart, lastTimeEnd, decimalFormat);
@@ -767,6 +803,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
             Set<String> operatorUserIds = getAffiliateId(userId);
             long startDate = Long.valueOf(DateUtils.getDateInteger(startTime));
             long entDate = Long.valueOf(DateUtils.getDateInteger(endTime));
+            boolean currentDayOnly = isCurrentDayOnly(startDate, entDate, now);
             Map<String, String> lastTime = DateUtils.getStartEndTime(startTime, endTime);
             long lastTimeStart = Long.valueOf(DateUtils.getDateInteger(lastTime.get("lastTimeStart")));
             long lastTimeEnd = Long.valueOf(DateUtils.getDateInteger(lastTime.get("lastTimeEnd")));
@@ -779,7 +816,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
             parameterMap.put("startEqually", DateUtils.getDateInteger(DateUtils.addDayParse(String.valueOf(DateUtils.getDateInteger(startTime)), -7)));
             parameterMap.put("endEqually", DateUtils.getDateInteger(DateUtils.addDayParse(String.valueOf(DateUtils.getDateInteger(endTime)), -7)));
             if ("1".equals(mediaType)) {
-                if (startDate == now || entDate == now) {
+                if (currentDayOnly) {
                     parameterMap.put("tableName", "application.bytedance_advertiser_report_hourly_dw");
                     parameterMap.put("hour", DateUtils.getNowHour());
                 } else {
@@ -787,7 +824,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
                     parameterMap.remove("hour");
                 }
             } else {
-                if (startDate == now || entDate == now) {
+                if (currentDayOnly) {
                     parameterMap.put("tableName", "application.kuaishou_account_report_hourly_dw");
                     parameterMap.put("hour", DateUtils.getNowHour());
                 } else {
@@ -860,6 +897,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
             //2022-02-15 ==>> 20220215
             long startDate = Long.valueOf(DateUtils.getDateInteger(startTime));
             long entDate = Long.valueOf(DateUtils.getDateInteger(endTime));
+            boolean currentDayOnly = isCurrentDayOnly(startDate, entDate, now);
 
             //计算环比 时间值 上阶段时间 以及 两个日期之间的 间隔天数
             Map<String, String> lastTime = DateUtils.getStartEndTime(startTime, endTime);
@@ -886,7 +924,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
                     //当天
                     int newUnitNumNow = 0;
                     int trustUnitNum = 0;
-                    if (startDate == now || entDate == now) {
+                    if (currentDayOnly) {
 
                         //查询当天数据
 
@@ -967,7 +1005,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
                     //当天
                     int newUnitNumNow = 0;
                     int trustUnitNum = 0;
-                    if (startDate == now || entDate == now) {
+                    if (currentDayOnly) {
                         //查询 当天有效 上新计划 上新组
                         JSONObject newEffect = materialStareMapper.getKuaiShouAccountNowBaseByUserId(null, projectInfo.getProjectId(), null, now, now);
                         newUnitNumNow = Check.isNull(newEffect) ? 0 : newEffect.getInteger("newUnitNum");//组
@@ -1541,6 +1579,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
             long startDate = Long.valueOf(DateUtils.getDateInteger(startTime));
 
             long entDate = Long.valueOf(DateUtils.getDateInteger(endTime));
+            boolean currentDayOnly = isCurrentDayOnly(startDate, entDate, nowDate);
 
             //计算环比 时间值 上阶段时间 以及 两个日期之间的 间隔天数
             Map<String, String> lastTime = DateUtils.getStartEndTime(startTime, endTime);
@@ -1599,7 +1638,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
             Map<String, KuaiShouOperateVo> currentOperateMap = toOperateUserMap(loadOperateDataByMedia(mediaType, daysBetween, startDate, entDate, allActiveUserIds));
             Map<String, KuaiShouOperateVo> yearOnYearOperateMap = toOperateUserMap(loadOperateDataByMedia(mediaType, daysBetween, lastTimeStart, lastTimeEnd, allActiveUserIds));
             Map<String, JSONObject> historyBaseMap = loadUserBaseMapByMedia(mediaType, allActiveUserIds, startDate, entDate);
-            Map<String, JSONObject> todayBaseMap = (startDate == nowDate || entDate == nowDate) ? loadTodayUserBaseMapByMedia(mediaType, allActiveUserIds, nowDate) : new HashMap<>();
+            Map<String, JSONObject> todayBaseMap = currentDayOnly ? loadTodayUserBaseMapByMedia(mediaType, allActiveUserIds, nowDate) : new HashMap<>();
             for (KuaiShouOperateGroupVo groupVo : operationList) {
                 //下级员工
                 Set<String> allAffiliateUserIds = affiliateMap.computeIfAbsent(groupVo.getUserId(), this::getAffiliateId);
@@ -1678,6 +1717,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
 
             long startDate = Long.valueOf(DateUtils.getDateInteger(startTime));
             long entDate = Long.valueOf(DateUtils.getDateInteger(endTime));
+            boolean currentDayOnly = isCurrentDayOnly(startDate, entDate, nowDate);
             //计算环比 时间值 上阶段时间 以及 两个日期之间的 间隔天数
             Map<String, String> lastTime = DateUtils.getStartEndTime(startTime, endTime);
             long lastTimeStart = Long.valueOf(DateUtils.getDateInteger(lastTime.get("lastTimeStart")));
@@ -1686,14 +1726,18 @@ public class MaterialStareServiceImpl implements MaterialStareService {
             //查询用户角色
             String roleCode = materialStareMapper.getRoleCodeByUserId(userId);
 
-            //所有运营经理 1-头条 2-快手
+            //所有运营经理 1-头条 2-快手 16-腾讯
+            List<KuaiShouOperateGroupVo> allOperationManagerList;
             String roleCodeName = "";
             if (mediaType.equals("1")) {
                 roleCodeName = "touTiaoOperationManager";
+                allOperationManagerList = materialStareMapper.getOperationManagerUser(roleCodeName);
+            } else if (mediaType.equals("16")) {
+                allOperationManagerList = dashboardQuerySupport.getTencentOperationManagers();
             } else {
                 roleCodeName = "kuaishouOperationManager";
+                allOperationManagerList = materialStareMapper.getOperationManagerUser(roleCodeName);
             }
-            List<KuaiShouOperateGroupVo> allOperationManagerList = materialStareMapper.getOperationManagerUser(roleCodeName);
             List<String> allManagerList = allOperationManagerList.stream().map(KuaiShouOperateGroupVo::getUserId).collect(Collectors.toList());
 
             List<KuaiShouOperateGroupVo> operationManagerList = new ArrayList<>();
@@ -1716,18 +1760,25 @@ public class MaterialStareServiceImpl implements MaterialStareService {
                 Result.successMsg("运营组列表数据查询成功。", null);
             }
 
+            List<String> managerIds = operationManagerList.stream().map(KuaiShouOperateGroupVo::getUserId).collect(Collectors.toList());
+            Map<String, Set<String>> activeTeamMemberMap = mediaType.equals("16")
+                    ? dashboardQuerySupport.getOperateTeamMembers(mediaType, managerIds, startDate, entDate)
+                    : new HashMap<>();
+
             for (KuaiShouOperateGroupVo groupVo : operationManagerList) {
                 //下级员工
                 //Set<String> operatorUserIds = getAffiliateId(groupVo.getUserId());
 
                 //运营经理下的下级员工
-                Set<String> operatorUserIds = materialStareMapper.getAllOperatorsByLearderId(groupVo.getUserId());
+                Set<String> operatorUserIds = mediaType.equals("16")
+                        ? activeTeamMemberMap.get(groupVo.getUserId())
+                        : materialStareMapper.getAllOperatorsByLearderId(groupVo.getUserId());
 
 
                 //有消耗的账户
                 if (mediaType.equals("1")) {
                     operatorUserIds = materialStareMapper.getBytedanceAllOperators(null, DateUtils.getDateInteger(startTime).longValue(), DateUtils.getDateInteger(endTime).longValue(), operatorUserIds);
-                } else {
+                } else if (mediaType.equals("2")) {
                     operatorUserIds = materialStareMapper.getKuaiShouAllOperators(null, DateUtils.getDateInteger(startTime).longValue(), DateUtils.getDateInteger(endTime).longValue(), operatorUserIds);
                 }
 
@@ -1744,15 +1795,21 @@ public class MaterialStareServiceImpl implements MaterialStareService {
                 List<KuaiShouOperateVo> listOperate = new ArrayList<>();
 
                 if (mediaType.equals("1")) {
-                    if (daysBetween <= 1) {
+                    if (currentDayOnly) {
                         //时报
                         listOperate = materialStareMapper.getBytedanceOperateInfoHourly(startDate, entDate, getCurrentHourSafe(), operatorUserIds);
                     } else {
 
                         listOperate = materialStareMapper.getBytedanceOperateInfo(startDate, entDate, operatorUserIds);
                     }
+                } else if (mediaType.equals("16")) {
+                    if (currentDayOnly) {
+                        listOperate = materialStareMapper.getAdqOperateInfoHourly(startDate, entDate, getCurrentHourSafe(), operatorUserIds);
+                    } else {
+                        listOperate = materialStareMapper.getAdqOperateInfo(startDate, entDate, operatorUserIds);
+                    }
                 } else {
-                    if (daysBetween <= 1) {
+                    if (currentDayOnly) {
                         listOperate = materialStareMapper.getKuaiShouOperateInfoHourly(startDate, entDate, getCurrentHourSafe(), operatorUserIds);
                     } else {
                         listOperate = materialStareMapper.getKuaiShouOperateInfo(startDate, entDate, operatorUserIds);
@@ -1784,6 +1841,8 @@ public class MaterialStareServiceImpl implements MaterialStareService {
                 List<KuaiShouOperateVo> yearOnYearInfo = new ArrayList<>();
                 if (mediaType.equals("1")) {
                     yearOnYearInfo = materialStareMapper.getBytedanceOperateInfo(lastTimeStart, lastTimeEnd, operatorUserIds);
+                } else if (mediaType.equals("16")) {
+                    yearOnYearInfo = materialStareMapper.getAdqOperateInfo(lastTimeStart, lastTimeEnd, operatorUserIds);
                 } else {
                     yearOnYearInfo = materialStareMapper.getKuaiShouOperateInfo(lastTimeStart, lastTimeEnd, operatorUserIds);
                 }
@@ -1798,7 +1857,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
 
                 //当天
                 int newUnitNumNow = 0;
-                if (startDate == nowDate || entDate == nowDate) {
+                if (currentDayOnly) {
                     JSONObject newEffect = new JSONObject();
                     if (mediaType.equals("1")) {
                         //查询 当天有效 上新计划 上新组
@@ -1806,7 +1865,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
                         Integer unitNum = Check.isNull(newEffect) ? 0 : newEffect.getInteger("newUnitNum");//组
                         Integer unitNum1 = Check.isNull(newEffect) ? 0 : newEffect.getInteger("newUnitNum2");//组
                         newUnitNumNow = Math.addExact(unitNum, unitNum1);
-                    } else {
+                    } else if (mediaType.equals("2")) {
                         //查询 当天有效 上新计划 上新组
                         newEffect = materialStareMapper.getKuaiShouAccountNowBaseByUserId(operatorUserIds, null, null, nowDate, nowDate);
                         newUnitNumNow = Check.isNull(newEffect) ? 0 : newEffect.getInteger("newUnitNum");//组
@@ -1819,7 +1878,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
                     Integer unitNum1 = Check.isNull(newEffect) ? 0 : newEffect.getInteger("newUnitNum2");//组
                     newUnitNumNow = Math.addExact(unitNum, unitNum1);
                     groupVo.setNewProjectNum(Check.isNull(newEffect) ? 0 : newEffect.getInteger("newCpdProjectNum"));
-                } else {
+                } else if (mediaType.equals("2")) {
                     //查询 历史上新组
                     JSONObject newEffect = materialStareMapper.getKuaiShouAccountBaseByUserId(operatorUserIds, null, null, startDate, entDate);
                     newUnitNumNow = Check.isNull(newEffect) ? 0 : newEffect.getInteger("newUnitNum") + newUnitNumNow;
@@ -1866,8 +1925,9 @@ public class MaterialStareServiceImpl implements MaterialStareService {
         parameterMap.put("userIds", operatorUserIds);
         parameterMap.put("startEqually", DateUtils.getDateInteger(DateUtils.addDayParse(String.valueOf(DateUtils.getDateInteger(startTime)), -7)));
         parameterMap.put("endEqually", DateUtils.getDateInteger(DateUtils.addDayParse(String.valueOf(DateUtils.getDateInteger(endTime)), -7)));
+        boolean currentDayOnly = isCurrentDayOnly(startDate, entDate, now);
         if (mediaType.equals("1")) {
-            if (startDate == now || entDate == now) {
+            if (currentDayOnly) {
                 parameterMap.put("tableName", "application.bytedance_advertiser_report_hourly_dw");
                 parameterMap.put("hour", DateUtils.getNowHour());
             } else {
@@ -1876,7 +1936,7 @@ public class MaterialStareServiceImpl implements MaterialStareService {
             }
         }
         if (mediaType.equals("2")) {
-            if (startDate == now || entDate == now) {
+            if (currentDayOnly) {
                 parameterMap.put("tableName", "application.kuaishou_account_report_hourly_dw");
                 parameterMap.put("hour", DateUtils.getNowHour());
             } else {
@@ -2152,19 +2212,20 @@ public class MaterialStareServiceImpl implements MaterialStareService {
     }
 
     private List<KuaiShouOperateVo> loadOperatePageData(String mediaType, long startDate, long endDate, long nowDate, Set<String> userIds) {
+        boolean currentDayOnly = isCurrentDayOnly(startDate, endDate, nowDate);
         if ("1".equals(mediaType)) {
-            if (startDate == nowDate) {
+            if (currentDayOnly) {
                 return materialStareMapper.getBytedanceOperateInfoHourly(nowDate, nowDate, getCurrentHourSafe(), userIds);
             }
             return materialStareMapper.getBytedanceOperateInfo(startDate, endDate, userIds);
         }
         if ("16".equals(mediaType)) {
-            if (startDate == nowDate) {
+            if (currentDayOnly) {
                 return materialStareMapper.getAdqOperateInfoHourly(nowDate, nowDate, getCurrentHourSafe(), userIds);
             }
             return materialStareMapper.getAdqOperateInfo(startDate, endDate, userIds);
         }
-        if (startDate == nowDate) {
+        if (currentDayOnly) {
             return materialStareMapper.getKuaiShouOperateInfoHourly(nowDate, nowDate, getCurrentHourSafe(), userIds);
         }
         return materialStareMapper.getKuaiShouOperateInfo(startDate, endDate, userIds);
@@ -2181,7 +2242,8 @@ public class MaterialStareServiceImpl implements MaterialStareService {
                 .collect(Collectors.toSet());
         Map<String, KuaiShouOperateVo> yearOnYearMap = toOperateUserMap(loadOperatePageData(mediaType, lastTimeStart, lastTimeEnd, nowDate, userIds));
         Map<String, JSONObject> historyBaseMap = loadUserBaseMapByMedia(mediaType, userIds, startDate, endDate);
-        Map<String, JSONObject> todayBaseMap = (startDate == nowDate || endDate == nowDate)
+        boolean currentDayOnly = isCurrentDayOnly(startDate, endDate, nowDate);
+        Map<String, JSONObject> todayBaseMap = currentDayOnly
                 ? loadTodayUserBaseMapByMedia(mediaType, userIds, nowDate)
                 : new HashMap<>();
         for (KuaiShouOperateVo operate : listOperate) {
@@ -2228,24 +2290,30 @@ public class MaterialStareServiceImpl implements MaterialStareService {
         if (userIds == null || userIds.isEmpty()) {
             return new ArrayList<>();
         }
+        long nowDate = DateUtils.getDateInteger(DateUtils.getDate("yyyy-MM-dd"));
+        boolean currentDayOnly = isCurrentDayOnly(startDate, endDate, nowDate);
         if ("1".equals(mediaType)) {
-            if (daysBetween != null && daysBetween <= 1) {
+            if (currentDayOnly) {
                 return materialStareMapper.getBytedanceOperateInfoHourly(startDate, endDate, getCurrentHourSafe(), userIds);
             }
             return materialStareMapper.getBytedanceOperateInfo(startDate, endDate, userIds);
         }
         if ("16".equals(mediaType)) {
-            if (daysBetween != null && daysBetween <= 1) {
+            if (currentDayOnly) {
                 return materialStareMapper.getAdqOperateInfoHourly(startDate, endDate, getCurrentHourSafe(), userIds);
             }
             return materialStareMapper.getAdqOperateInfo(startDate, endDate, userIds);
         }
-        if (daysBetween != null && daysBetween <= 1) {
+        if (currentDayOnly) {
             return materialStareMapper.getKuaiShouOperateInfoHourly(startDate, endDate, getCurrentHourSafe(), userIds);
         }
         return materialStareMapper.getKuaiShouOperateInfo(startDate, endDate, userIds);
     }
 
+    private boolean isCurrentDayOnly(long startDate, long endDate, long nowDate) {
+        return startDate == endDate && startDate == nowDate;
+    }
+
     private Map<String, KuaiShouOperateVo> toOperateUserMap(List<KuaiShouOperateVo> rows) {
         Map<String, KuaiShouOperateVo> result = new LinkedHashMap<>();
         if (rows == null || rows.isEmpty()) {

+ 260 - 0
jeecg-boot-report/src/main/java/cn/com/ctop/report/controller/TencentMaterialReportDailyDwController.java

@@ -0,0 +1,260 @@
+package cn.com.ctop.report.controller;
+
+import cn.com.ctop.common.constant.AccountReportConstants;
+import cn.com.ctop.common.mapper.SysRoleMapper;
+import cn.com.ctop.common.utils.Check;
+import cn.com.ctop.common.utils.ExportExcelUtils;
+import cn.com.ctop.common.utils.HttpUtils;
+import cn.com.ctop.common.utils.JsonResourceUtil;
+import cn.com.ctop.report.service.ITencentMaterialVideoReportDailyDwService;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.github.pagehelper.PageInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.util.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("material/report")
+@Slf4j
+public class TencentMaterialReportDailyDwController {
+    @Autowired
+    private ITencentMaterialVideoReportDailyDwService tencentMaterialVideoReportDailyDwService;
+    @Autowired
+    private SysRoleMapper sysRoleMapper;
+
+    @PostMapping("/tencent/list")
+    public Result<PageInfo<JSONObject>> getListReport(@RequestBody JSONObject requestBody) {
+        Result<PageInfo<JSONObject>> result = new Result<>();
+        try {
+            int pageSize = requestBody.getInteger("pageSize");
+            int pageNo = requestBody.getInteger("pageNo");
+            String startDate = requestBody.getString("startDate");
+            if (Check.isNull(startDate)) {
+                throw new Exception("请输入查询开始时间");
+            }
+            String endDate = requestBody.getString("endDate");
+            if (Check.isNull(endDate)) {
+                throw new Exception("请输入查询结束时间");
+            }
+            long days = DateUtils.getDiscrepantDays(startDate, endDate) + 1;
+            if (days > 60) {
+                throw new Exception("开始和结束时间的时间跨度,不能超过60天,请重新选择");
+            }
+
+            String filedAll = JsonResourceUtil.joinAllFiled(AccountReportConstants.getKuaishouVideoReportMap());
+            if (Check.isNull(filedAll)) {
+                throw new Exception("初始化查询 字段返回为空");
+            }
+
+            String userId = requestBody.getString("userId");
+            if (Check.isNull(userId)) {
+                throw new Exception("用户id不能为空");
+            }
+            Map<String, Object> requestMap = buildRequestMap(requestBody, filedAll, startDate, endDate, userId);
+            PageInfo<JSONObject> listData =
+                    tencentMaterialVideoReportDailyDwService.getTencentVideoPageReportByMap(requestMap, pageSize, pageNo);
+            if (Check.isNull(listData)) {
+                throw new Exception("暂无素材相关信息,请检查账户");
+            }
+            result.setSuccess(true);
+            result.setResult(listData);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.setSuccess(false);
+            result.setMessage(e.toString());
+        }
+        return result;
+    }
+
+    @PostMapping("/tencent/detail")
+    public Result<List<JSONObject>> getReportDetail(@RequestBody JSONObject requestBody) {
+        Result<List<JSONObject>> result = new Result<>();
+        if (requestBody.isEmpty()) {
+            log.error("request body is empty");
+            result.setSuccess(false);
+            return result;
+        }
+
+        JSONArray accountIds = requestBody.getJSONArray("accountIds");
+        String signature = requestBody.getString("signature");
+        String materialType = requestBody.getString("materialType");
+        String startDate = requestBody.getString("startDate");
+        String endDate = requestBody.getString("endDate");
+        String filedAll = JsonResourceUtil.joinAllFiled(AccountReportConstants.getDicMapKs());
+        try {
+            if (accountIds != null && accountIds.isEmpty()) {
+                accountIds = null;
+            }
+            List<JSONObject> listData = tencentMaterialVideoReportDailyDwService.getVideoDetailBy(
+                    accountIds, startDate, endDate, filedAll, signature, materialType);
+            result.setResult(listData);
+            result.setSuccess(true);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.setSuccess(false);
+        }
+        return result;
+    }
+
+    @PostMapping("/tencent/excelV2")
+    public void excelV2(@RequestBody JSONObject requestBody,
+                        HttpServletRequest request,
+                        HttpServletResponse response) {
+        try {
+            String startDate = requestBody.getString("startDate");
+            if (Check.isNull(startDate)) {
+                throw new Exception("请输入查询开始时间");
+            }
+            String endDate = requestBody.getString("endDate");
+            if (Check.isNull(endDate)) {
+                throw new Exception("请输入查询结束时间");
+            }
+
+            String filedAll = JsonResourceUtil.joinAllFiled(AccountReportConstants.getKuaishouVideoReportMap());
+            if (Check.isNull(filedAll)) {
+                throw new Exception("初始化查询 字段返回为空");
+            }
+
+            String userId = requestBody.getString("userId");
+            if (Check.isNull(userId)) {
+                throw new Exception("用户id不能为空");
+            }
+            Map<String, Object> requestMap = buildRequestMap(requestBody, filedAll, startDate, endDate, userId);
+
+            JSONArray columns = requestBody.getJSONArray("columns");
+            List<String> columns2 = new ArrayList<>();
+            columns2.add("materialTypeName");
+            columns2.add("materialName");
+            columns2.add("signature");
+            columns2.add("projectName");
+            columns2.add("designLeader");
+            columns2.add("clip");
+            columns2.add("plan");
+            columns2.add("shot");
+            columns2.add("channel");
+            columns2.add("createTime");
+            if (!Check.isNull(columns)) {
+                for (int i = 0; i < columns.size(); i++) {
+                    columns2.add(columns.getString(i));
+                }
+            }
+            columns2.add("url");
+            List<String> titles = getFieldTitles(AccountReportConstants.getKuaishouVideoReportDict(), columns2);
+
+            List<JSONObject> listData = tencentMaterialVideoReportDailyDwService.getTencentVideoPageReportByMap(requestMap);
+            if (Check.isNull(listData)) {
+                throw new Exception("暂无素材相关信息,请检查账户");
+            }
+            List<List<Object>> excelList = new ArrayList<>();
+            for (JSONObject jsonObject : listData) {
+                List<Object> temp = new ArrayList<>();
+                for (String key : columns2) {
+                    temp.add(jsonObject.getString(key));
+                }
+                excelList.add(temp);
+            }
+
+            try {
+                String[] strings = titles.toArray(new String[]{});
+                OutputStream os = response.getOutputStream();
+                ExportExcelUtils eeu = new ExportExcelUtils();
+                XSSFWorkbook workbook = new XSSFWorkbook();
+                eeu.exportExcel(workbook, 0, "腾讯视频素材报表", strings, excelList);
+                HttpUtils.setResponseHeader(response, "腾讯视频素材.xlsx");
+                workbook.write(os);
+                os.flush();
+                os.close();
+            } catch (IOException e) {
+                log.error(e.getMessage());
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+    }
+
+    private Map<String, Object> buildRequestMap(JSONObject requestBody,
+                                                String filedAll,
+                                                String startDate,
+                                                String endDate,
+                                                String userId) {
+        Map<String, Object> requestMap = new HashMap<>();
+        requestMap.put("filed", filedAll);
+        requestMap.put("startDate", Long.parseLong(startDate.replace("-", "")));
+        requestMap.put("endDate", Long.parseLong(endDate.replace("-", "")));
+
+        if (!Check.isNull(requestBody.getJSONArray("accountIds"))) {
+            requestMap.put("accountIds", requestBody.getJSONArray("accountIds"));
+        }
+        if (!Check.isNull(requestBody.getString("target"))) {
+            requestMap.put("target", requestBody.getString("target"));
+        }
+        if (!Check.isNull(requestBody.getString("order"))) {
+            requestMap.put("order", requestBody.getString("order"));
+        }
+        if (!Check.isNull(requestBody.getInteger("channelType"))) {
+            requestMap.put("channelType", requestBody.getInteger("channelType"));
+        }
+        if (!Check.isNull(requestBody.getString("materialType"))) {
+            requestMap.put("materialType", requestBody.getString("materialType"));
+        }
+
+        String roleCode = sysRoleMapper.getRoleCodeByUserId(userId);
+        if ("clip".equals(roleCode)) {
+            requestMap.put("clipId", userId);
+        } else if (!Check.isNull(requestBody.getString("clipId"))) {
+            requestMap.put("clipId", requestBody.getString("clipId"));
+        }
+
+        if ("shot".equals(roleCode)) {
+            requestMap.put("shotId", userId);
+        } else if (!Check.isNull(requestBody.getString("shotId"))) {
+            requestMap.put("shotId", requestBody.getString("shotId"));
+        }
+
+        if ("plan".equals(roleCode)) {
+            requestMap.put("planId", userId);
+        } else if (!Check.isNull(requestBody.getString("planId"))) {
+            requestMap.put("planId", requestBody.getString("planId"));
+        }
+
+        if ("designTeamLeader".equals(roleCode)) {
+            requestMap.put("leaderId", userId);
+        } else if (!Check.isNull(requestBody.getString("leaderId"))) {
+            requestMap.put("leaderId", requestBody.getString("leaderId"));
+        }
+        return requestMap;
+    }
+
+    private List<String> getFieldTitles(Map<String, Map<String, Object>> fieldMap, List<String> columns) {
+        List<String> titles = new ArrayList<>();
+        for (String column : columns) {
+            if ("materialTypeName".equals(column)) {
+                titles.add("素材类型");
+                continue;
+            }
+            Map<String, Object> value = fieldMap.get(column);
+            if (Check.isNull(value)) {
+                titles.add("-");
+                continue;
+            }
+            titles.add(String.valueOf(value.get("comment")));
+        }
+        return titles;
+    }
+}

+ 21 - 0
jeecg-boot-report/src/main/java/cn/com/ctop/report/mapper/TencentMaterialVideoReportDailyDwMapper.java

@@ -0,0 +1,21 @@
+package cn.com.ctop.report.mapper;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+public interface TencentMaterialVideoReportDailyDwMapper {
+    Long getTotalByMap(Map<String, Object> requestMap);
+
+    List<JSONObject> getTencentVideoReportByMap(Map<String, Object> requestMap);
+
+    List<JSONObject> queryVideoDetailBy(@Param("accountIds") JSONArray accountIds,
+                                        @Param("startDate") String startDate,
+                                        @Param("endDate") String endDate,
+                                        @Param("filed") String filed,
+                                        @Param("signature") String signature,
+                                        @Param("materialType") String materialType);
+}

+ 114 - 0
jeecg-boot-report/src/main/java/cn/com/ctop/report/mapper/xml/TencentMaterialVideoReportDailyDwMapper.xml

@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.report.mapper.TencentMaterialVideoReportDailyDwMapper">
+
+    <sql id="baseWhere">
+        where 1 = 1
+        <if test="accountIds != null and accountIds != ''">
+            and account_id in
+            <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="startDate != null and startDate != ''">
+            and stat_date &gt;= #{startDate}
+        </if>
+        <if test="endDate != null and endDate != ''">
+            and stat_date &lt;= #{endDate}
+        </if>
+        <if test="leaderId != null and leaderId != ''">
+            and leader_id = #{leaderId}
+        </if>
+        <if test="channelType != null">
+            and channel_type = #{channelType}
+        </if>
+        <if test="clipId != null and clipId != ''">
+            and clip_id = #{clipId}
+        </if>
+        <if test="planId != null and planId != ''">
+            and plan_id = #{planId}
+        </if>
+        <if test="shotId != null and shotId != ''">
+            and shot_id = #{shotId}
+        </if>
+        <if test="companyId != null and companyId != ''">
+            and clip_company_id = #{companyId}
+        </if>
+        <if test="materialType != null and materialType != ''">
+            and material_type = #{materialType}
+        </if>
+    </sql>
+
+    <select id="getTotalByMap" resultType="java.lang.Long">
+        select count(1)
+        from (
+            select signature, material_type
+            from application.adq_material_report_daily_dw
+            <include refid="baseWhere"/>
+            group by signature, material_type
+        ) t
+    </select>
+
+    <select id="getTencentVideoReportByMap" resultType="com.alibaba.fastjson.JSONObject" parameterType="map">
+        select t1.*
+        from (
+            select
+                ifnull(clip_name, '-') as clip,
+                ifnull(plan_name, '-') as plan,
+                ifnull(shot_name, '-') as shot,
+                ifnull(leader_name, '-') as designLeader,
+                ifnull(video_name, '-') as materialName,
+                ifnull(cover_url, '-') as coverUrl,
+                ifnull(video_url, '-') as url,
+                ifnull(channel_name, '-') as channel,
+                ifnull(stat_date, '-') as createTime,
+                ifnull(material_type, '-') as materialType,
+                case material_type
+                    when 'IMAGE' then 'IMAGE'
+                    when 'VIDEO' then 'VIDEO'
+                    else ifnull(material_type, '-')
+                end as materialTypeName,
+                signature,
+                ifnull(project_name, '-') as projectName,
+                ${filed}
+            from application.adq_material_report_daily_dw
+            <include refid="baseWhere"/>
+            group by signature, material_type
+            order by ${target} ${order}
+        ) t1
+    </select>
+
+    <select id="queryVideoDetailBy" resultType="com.alibaba.fastjson.JSONObject">
+        select
+            t1.stat_date as statDate,
+            t1.signature,
+            t1.video_url as url,
+            t1.cover_url as converUrl,
+            ifnull(t1.material_type, '-') as materialType,
+            case t1.material_type
+                when 'IMAGE' then 'IMAGE'
+                when 'VIDEO' then 'VIDEO'
+                else ifnull(t1.material_type, '-')
+            end as materialTypeName,
+            ifnull(t1.video_name, '-') as materialName,
+            t1.project_name as projectName,
+            t1.advertiser_name as advertiserName,
+            t1.stat_date as createTime,
+            ${filed}
+        from application.adq_material_report_daily_dw t1
+        where t1.signature = #{signature}
+          and t1.stat_date >= #{startDate}
+          and t1.stat_date &lt;= #{endDate}
+        <if test="materialType != null and materialType != ''">
+            and t1.material_type = #{materialType}
+        </if>
+        <if test="accountIds != null">
+            and t1.account_id in
+            <foreach item="item" index="index" collection="accountIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        group by t1.signature, t1.material_type, t1.stat_date
+        order by t1.stat_date desc
+    </select>
+</mapper>

+ 21 - 0
jeecg-boot-report/src/main/java/cn/com/ctop/report/service/ITencentMaterialVideoReportDailyDwService.java

@@ -0,0 +1,21 @@
+package cn.com.ctop.report.service;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.github.pagehelper.PageInfo;
+
+import java.util.List;
+import java.util.Map;
+
+public interface ITencentMaterialVideoReportDailyDwService {
+    PageInfo<JSONObject> getTencentVideoPageReportByMap(Map<String, Object> requestMap, int pageSize, int pageNo);
+
+    List<JSONObject> getTencentVideoPageReportByMap(Map<String, Object> requestMap);
+
+    List<JSONObject> getVideoDetailBy(JSONArray accountIds,
+                                      String startDate,
+                                      String endDate,
+                                      String filedAll,
+                                      String signature,
+                                      String materialType);
+}

+ 44 - 0
jeecg-boot-report/src/main/java/cn/com/ctop/report/service/impl/TencentMaterialVideoReportDailyDwServiceImpl.java

@@ -0,0 +1,44 @@
+package cn.com.ctop.report.service.impl;
+
+import cn.com.ctop.report.mapper.TencentMaterialVideoReportDailyDwMapper;
+import cn.com.ctop.report.service.ITencentMaterialVideoReportDailyDwService;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class TencentMaterialVideoReportDailyDwServiceImpl implements ITencentMaterialVideoReportDailyDwService {
+    @Resource
+    private TencentMaterialVideoReportDailyDwMapper materialVideoReportDailyDwMapper;
+
+    @Override
+    public PageInfo<JSONObject> getTencentVideoPageReportByMap(Map<String, Object> requestMap, int pageSize, int pageNo) {
+        Long total = materialVideoReportDailyDwMapper.getTotalByMap(requestMap);
+        PageHelper.startPage(pageNo, pageSize, false);
+        PageInfo pageInfo = new PageInfo(materialVideoReportDailyDwMapper.getTencentVideoReportByMap(requestMap));
+        pageInfo.setTotal(total);
+        return pageInfo;
+    }
+
+    @Override
+    public List<JSONObject> getTencentVideoPageReportByMap(Map<String, Object> requestMap) {
+        return materialVideoReportDailyDwMapper.getTencentVideoReportByMap(requestMap);
+    }
+
+    @Override
+    public List<JSONObject> getVideoDetailBy(JSONArray accountIds,
+                                             String startDate,
+                                             String endDate,
+                                             String filedAll,
+                                             String signature,
+                                             String materialType) {
+        return materialVideoReportDailyDwMapper.queryVideoDetailBy(
+                accountIds, startDate, endDate, filedAll, signature, materialType);
+    }
+}