浏览代码

大盘接口

yumeng 5 年之前
父节点
当前提交
ae5da172bc

+ 10 - 0
module-report/src/main/java/cn/com/ctop/bytedance/controller/BytedanceReportController.java

@@ -55,4 +55,14 @@ public class BytedanceReportController {
     }
 
 
+    @PostMapping("/kuaiShou/getReportList")
+    public List<JSONObject> getReportList(@RequestBody JSONObject requestJson) {
+        System.err.println(requestJson);
+
+        List<JSONObject> kuaiShouAccounDetailtReport = bytedanceReportService.getReportList(requestJson);
+        return kuaiShouAccounDetailtReport;
+
+    }
+
+
 }

+ 17 - 1
module-report/src/main/java/cn/com/ctop/bytedance/mapper/BytedanceReportMapper.java

@@ -49,7 +49,7 @@ public interface BytedanceReportMapper {
      * @param statHour
      * @return
      */
-    JSONObject selectYesterdayByHourAndDate(@Param("date") String date, @Param("statHour") String statHour);
+    JSONObject selectDayHourlyByHourAndDate(@Param("date") String date, @Param("statHour") String statHour);
 
     /**
      * 查询 七天汇总数据
@@ -101,4 +101,20 @@ public interface BytedanceReportMapper {
      * @return
      */
     JSONObject selectDayDailyByDate(@Param("statDate") String statDate);
+
+
+    /**
+     * 按天汇总数据
+     *
+     * @param date
+     * @return
+     */
+    JSONObject selectDayReportByDate(@Param("date") String date);
+
+    /**
+     * 根据日期获取 分时详情数据
+     * @param date
+     * @return
+     */
+    List<JSONObject> selectHourlyDetailsByDate(@Param("date") String date);
 }

+ 34 - 3
module-report/src/main/java/cn/com/ctop/bytedance/mapper/xml/BytedanceReportMapper.xml

@@ -15,7 +15,6 @@
       </select>
 
 
-
     <select id="selectByDate" resultType="com.alibaba.fastjson.JSONObject">
       select
        sum(charge) cost,
@@ -45,7 +44,8 @@
        sum(photo_show) photoShow,
        sum(photo_click) photoClick,
        sum(aclick) aclick,
-       stat_hour statHour
+       stat_hour statHour,
+       stat_date statDate
      from
       ctop_kuaishou_report_hourly_account
       where stat_date = #{date}
@@ -54,7 +54,7 @@
     </select>
 
 
-    <select id="selectYesterdayByHourAndDate" resultType="com.alibaba.fastjson.JSONObject">
+    <select id="selectDayHourlyByHourAndDate" resultType="com.alibaba.fastjson.JSONObject">
       select
        sum(charge) cost,
        sum(photo_show) photoShow,
@@ -152,4 +152,35 @@
       group by stat_date
     </select>
 
+
+    <select id="selectDayReportByDate" resultType="com.alibaba.fastjson.JSONObject">
+      select
+       sum(charge) cost,
+       sum(photo_show) photoShow,
+       sum(photo_click) photoClick,
+       sum(aclick) aclick,
+       stat_date statDate
+     from
+      ctop_kuaishou_report_daily_account
+      where stat_date = #{date}
+      group by stat_date
+    </select>
+
+
+    <select id="selectHourlyDetailsByDate" resultType="com.alibaba.fastjson.JSONObject">
+      select
+       sum(charge) cost,
+       sum(photo_show) photoShow,
+       sum(photo_click) photoClick,
+       sum(aclick) aclick,
+       stat_hour statHour,
+       stat_date statDate
+     from
+      ctop_kuaishou_report_hourly_account
+      where stat_date = #{date}
+      group by stat_hour
+      order by stat_hour desc
+    </select>
+
+
 </mapper>

+ 9 - 0
module-report/src/main/java/cn/com/ctop/bytedance/service/IBytedanceReportService.java

@@ -23,4 +23,13 @@ public interface IBytedanceReportService {
      * @return
      */
     List<JSONObject> getKuaiShouAccounDetailtReport(JSONObject requestJson);
+
+
+    /**
+     * 明细列表
+     *
+     * @param requestJson
+     * @return
+     */
+    List<JSONObject> getReportList(JSONObject requestJson);
 }

+ 272 - 137
module-report/src/main/java/cn/com/ctop/bytedance/service/impl/BytedanceReportServiceImpl.java

@@ -2,7 +2,6 @@ package cn.com.ctop.bytedance.service.impl;
 
 import cn.com.ctop.bytedance.entity.BytedanceAdvertiserDailyReport;
 import cn.com.ctop.bytedance.mapper.BytedanceAdvertiserDailyReportMapper;
-import cn.com.ctop.bytedance.mapper.BytedanceCampaignDailyReportMapper;
 import cn.com.ctop.bytedance.mapper.BytedanceReportMapper;
 import cn.com.ctop.bytedance.service.IBytedanceReportService;
 import cn.com.ctop.common.module.entity.UserAllocation;
@@ -19,6 +18,7 @@ import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -195,59 +195,54 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
      * @param requestJson
      * @return
      */
-    @Autowired
-    private BytedanceCampaignDailyReportMapper campaignDailyReportMapper;
-
     @Override
     public JSONObject getKuaiShouAccountReport(JSONObject requestJson) {
         Integer type = requestJson.getInteger("type");
         JSONObject accountJson = new JSONObject();
-
         try {
             String nowDate = DateUtils.getNowDate("yyyy-MM-dd"); // 当前日期
             String anotherDay = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -1); // 当前日期-1
             if (type == 1) { // 今日总消耗
                 accountJson = reportMapper.selectDayReport(nowDate);
                 if (!Check.isNull(accountJson)) {
-                    JSONObject yesterJson = reportMapper.selectDayReport(anotherDay);
-                    if (!Check.isNull(yesterJson)) {
+                    JSONObject yesterdayJson = reportMapper.selectDayReport(anotherDay);
+                    if (!Check.isNull(yesterdayJson)) {
                         BigDecimal cost = accountJson.getBigDecimal("cost"); // 今日消耗
-                        BigDecimal yesterCost = yesterJson.getBigDecimal("cost");// 昨日消耗
+                        BigDecimal yesterdayCost = yesterdayJson.getBigDecimal("cost");// 昨日消耗
                         BigDecimal compareBigDecima = new BigDecimal(0);
-                        if (yesterCost.compareTo(compareBigDecima) != 0) {
-                            BigDecimal costProportion = (cost.subtract(yesterCost)).divide(yesterCost, BigDecimal.ROUND_HALF_UP);
+                        if (yesterdayCost.compareTo(compareBigDecima) != 0) {
+                            BigDecimal costProportion = (cost.subtract(yesterdayCost)).divide(yesterdayCost, BigDecimal.ROUND_HALF_UP);
                             accountJson.put("costProportion", costProportion); // 较昨日增加比例
                         } else {
                             accountJson.put("costProportion", 0); // 较昨日增加比例
                         }
 
                         Long photoShow = accountJson.getLong("photoShow");// 今日封面展示
-                        Long yesterPhotoShow = yesterJson.getLong("photoShow");// 昨日封面展示
-                        if (yesterPhotoShow != 0L) {
-                            double showProportion = (photoShow.doubleValue() - yesterPhotoShow.doubleValue()) / yesterPhotoShow.doubleValue();
+                        Long yesterdayPhotoShow = yesterdayJson.getLong("photoShow");// 昨日封面展示
+                        if (yesterdayPhotoShow != 0L) {
+                            double showProportion = (photoShow.doubleValue() - yesterdayPhotoShow.doubleValue()) / yesterdayPhotoShow.doubleValue();
                             accountJson.put("showProportion", showProportion); // 较昨日增加比例
                         } else {
                             accountJson.put("showProportion", 0); // 较昨日增加比例
                         }
 
                         Long photoClick = accountJson.getLong("photoClick");// 今日封面展示
-                        Long yesterphotoClick = yesterJson.getLong("photoShow");// 昨日封面展示
-                        if (yesterPhotoShow != 0L) {
-                            double photoClickProportion = (photoClick.doubleValue() - yesterphotoClick.doubleValue()) / yesterphotoClick.doubleValue();
+                        Long yesterdayPhotoClick = yesterdayJson.getLong("photoShow");// 昨日封面展示
+                        if (yesterdayPhotoClick != 0L) {
+                            double photoClickProportion = (photoClick.doubleValue() - yesterdayPhotoClick.doubleValue()) / yesterdayPhotoClick.doubleValue();
                             accountJson.put("photoClickProportion", photoClickProportion); // 较昨日增加比例
                         } else {
                             accountJson.put("photoClickProportion", 0); // 较昨日增加比例
                         }
 
-                        Long aclick = accountJson.getLong("aclick");// 今日封面展示
-                        Long yesterAclick = yesterJson.getLong("photoShow");// 昨日封面展示
-                        if (yesterPhotoShow != 0L) {
-                            double aClickProportion = (aclick.doubleValue() - yesterAclick.doubleValue()) / yesterAclick.doubleValue();
+                        Long aClick = accountJson.getLong("aclick");// 今日封面展示
+                        Long yesterdayAClick = yesterdayJson.getLong("photoShow");// 昨日封面展示
+                        if (yesterdayAClick != 0L) {
+                            double aClickProportion = (aClick.doubleValue() - yesterdayAClick.doubleValue()) / yesterdayAClick.doubleValue();
                             accountJson.put("aClickProportion", aClickProportion); // 较昨日增加比例
                         } else {
                             accountJson.put("aClickProportion", 0); // 较昨日增加比例
                         }
-
                     }
                 }
             } else if (type == 2) { // 昨日总消耗
@@ -284,13 +279,23 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
                 String sign = requestJson.getString("sign");
                 String bigDate = requestJson.getString("bigDate");
                 String smallDate = requestJson.getString("smallDate");
+
+                JSONObject beComparedJson = new JSONObject();
+                JSONObject comparedJson = new JSONObject();
+
                 if ("month".equals(sign)) {
                     Map<String, Object> dateMap = DateUtils.compare_date("yyyy-MM", bigDate, smallDate);
-                    JSONObject beComparedJson = reportMapper.selectMonthReportByDate((String) dateMap.get("smallDate"));   // 被除数数据
-                    JSONObject comparedJson = reportMapper.selectMonthReportByDate((String) dateMap.get("bigDate"));   // 除数数据
+                    beComparedJson = reportMapper.selectMonthReportByDate((String) dateMap.get("smallDate"));   // 被除数数据
+                    comparedJson = reportMapper.selectMonthReportByDate((String) dateMap.get("bigDate"));   // 除数数据
+                } else if ("day".equals(sign)) {
+                    Map<String, Object> dateMap = DateUtils.compare_date("yyyy-MM-dd", bigDate, smallDate);
+                    beComparedJson = reportMapper.selectDayReportByDate((String) dateMap.get("smallDate"));   // 被除数数据
+                    comparedJson = reportMapper.selectDayReportByDate((String) dateMap.get("bigDate"));   // 除数数据
+                }
+
+                if (!Check.isNull(comparedJson)) {
                     BigDecimal cost = comparedJson.getBigDecimal("cost");
                     BigDecimal comparedCost = beComparedJson.getBigDecimal("cost");
-
                     if (comparedCost.compareTo(new BigDecimal(0)) != 0) {
                         BigDecimal costProportion = (cost.subtract(comparedCost)).divide(comparedCost, BigDecimal.ROUND_HALF_UP);
                         comparedJson.put("costProportion", costProportion);
@@ -306,26 +311,28 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
                     } else {
                         comparedJson.put("photoClickProportion", 0);
                     }
-                    Long comparedPhotoShow = beComparedJson.getLong("photoShow");
-                    Long photoShow = comparedJson.getLong("photoShow");
-                    if (comparedPhotoShow != 0L) {
-                        double showProportion = (photoShow.doubleValue() - comparedPhotoShow.doubleValue()) / comparedPhotoShow.doubleValue();
-                        comparedJson.put("showProportion", showProportion);
-                    } else {
-                        comparedJson.put("showProportion", 0);
-                    }
+
                     Long aClick = comparedJson.getLong("aclick");
-                    Long comparedAclick = beComparedJson.getLong("photoShow");
-                    if (comparedAclick != 0L) {
-                        double aClickProportion = (aClick.doubleValue() - comparedAclick.doubleValue()) / comparedAclick.doubleValue();
+                    Long comparedAClick = beComparedJson.getLong("photoShow");
+                    if (comparedAClick != 0L) {
+                        double aClickProportion = (aClick.doubleValue() - comparedAClick.doubleValue()) / comparedAClick.doubleValue();
                         comparedJson.put("comparedAclick", aClickProportion);
                     } else {
                         comparedJson.put("comparedAclick", 0);
                     }
-                    accountJson.put("beCompared", beComparedJson);
-                    accountJson.put("compared", comparedJson);
                 }
 
+                Long comparedPhotoShow = beComparedJson.getLong("photoShow");
+                Long photoShow = comparedJson.getLong("photoShow");
+                if (comparedPhotoShow != 0L) {
+                    double showProportion = (photoShow.doubleValue() - comparedPhotoShow.doubleValue()) / comparedPhotoShow.doubleValue();
+                    comparedJson.put("showProportion", showProportion);
+                } else {
+                    comparedJson.put("showProportion", 0);
+                }
+                accountJson.put("beCompared", beComparedJson);
+                accountJson.put("compared", comparedJson);
+
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -343,53 +350,64 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
             String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
             String anotherDay = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -1);
             if (type == 1) { //  今日明细
+
+                List<JSONObject> yesterdayDetail = reportMapper.selectReportDetail(anotherDay);
                 List<JSONObject> dayDetail = reportMapper.selectReportDetail(nowDate);
-                for (int i = 0; i < dayDetail.size(); i++) {
-                    JSONObject detailJson = dayDetail.get(i);
-                    String statHour = detailJson.getString("statHour");
-                    JSONObject yesterDayJson = reportMapper.selectYesterdayByHourAndDate(anotherDay, statHour);
-                    if (!Check.isNull(yesterDayJson)) {
-                        BigDecimal cost = detailJson.getBigDecimal("cost"); // 今日消耗
-                        BigDecimal yesterCost = yesterDayJson.getBigDecimal("cost");// 昨日消耗
-                        BigDecimal compareBigDecima = new BigDecimal(0);
-                        if (yesterCost.compareTo(compareBigDecima) != 0) {
-                            BigDecimal costProportion = (cost.subtract(yesterCost)).divide(yesterCost, BigDecimal.ROUND_HALF_UP);
-                            detailJson.put("proportion", costProportion); // 较昨日增加比例
-                        } else {
-                            detailJson.put("proportion", 0); // 较昨日增加比例
-                        }
-                        Long photoShow = detailJson.getLong("photoShow");// 今日封面展示
-                        Long yesterPhotoShow = yesterDayJson.getLong("photoShow");// 昨日封面展示
-                        if (yesterPhotoShow != 0L) {
-                            double showProportion = (photoShow.doubleValue() - yesterPhotoShow.doubleValue()) / yesterPhotoShow.doubleValue();
-                            detailJson.put("proportion", showProportion); // 较昨日增加比例
-                        } else {
-                            detailJson.put("proportion", 0); // 较昨日增加比例
-                        }
+                for (int i = 0; i < yesterdayDetail.size(); i++) {
+                    JSONObject yesterdayJson = yesterdayDetail.get(i);
+                    if (!Check.isNull(yesterdayJson)) {
+                        String yesterdayStatHour = yesterdayJson.getString("statHour");
+
+                        for (int j = 0; j < dayDetail.size(); j++) {
+                            JSONObject nowJson = dayDetail.get(j);
+                            String statHour = nowJson.getString("statHour");
+                            if (yesterdayStatHour.equals(statHour)) {
+                                BigDecimal cost = nowJson.getBigDecimal("cost"); // 今日消耗
+                                BigDecimal yesterdayCost = yesterdayJson.getBigDecimal("cost");// 昨日消耗
+                                BigDecimal compareBigDecimal = new BigDecimal(0);
+                                if (yesterdayCost.compareTo(compareBigDecimal) != 0) {
+                                    BigDecimal costProportion = (cost.subtract(yesterdayCost)).divide(yesterdayCost, BigDecimal.ROUND_HALF_UP);
+                                    nowJson.put("proportion", costProportion); // 较昨日增加比例
+                                } else {
+                                    nowJson.put("proportion", 0); // 较昨日增加比例
+                                }
 
-                        Long photoClick = detailJson.getLong("photoClick");// 今日封面展示
-                        Long yesterphotoClick = yesterDayJson.getLong("photoShow");// 昨日封面展示
-                        if (yesterPhotoShow != 0L) {
-                            double photoClickroportion = (photoClick.doubleValue() - yesterphotoClick.doubleValue()) / yesterphotoClick.doubleValue();
-                            detailJson.put("proportion", photoClickroportion); // 较昨日增加比例
-                        } else {
-                            detailJson.put("proportion", 0); // 较昨日增加比例
-                        }
-                        Long aclick = detailJson.getLong("aclick");// 今日封面展示
-                        Long yesterAclick = yesterDayJson.getLong("photoShow");// 昨日封面展示
-                        if (yesterPhotoShow != 0L) {
-                            double aClickProportion = (aclick.doubleValue() - yesterAclick.doubleValue()) / yesterAclick.doubleValue();
-                            detailJson.put("proportion", aClickProportion); // 较昨日增加比例
-                        } else {
-                            detailJson.put("proportion", 0); // 较昨日增加比例
-                        }
+                                Long photoShow = nowJson.getLong("photoShow");// 今日封面展示
+                                Long yesterdayPhotoShow = yesterdayJson.getLong("photoShow");// 昨日封面展示
+                                if (yesterdayPhotoShow != 0L) {
+                                    double showProportion = (photoShow.doubleValue() - yesterdayPhotoShow.doubleValue()) / yesterdayPhotoShow.doubleValue();
+                                    nowJson.put("proportion", showProportion); // 较昨日增加比例
+                                } else {
+                                    nowJson.put("proportion", 0); // 较昨日增加比例
+                                }
 
-                    }
-                    detail.add(detailJson);
+                                Long photoClick = nowJson.getLong("photoClick");// 今日封面展示
+                                Long yesterdayPhotoClick = yesterdayJson.getLong("photoShow");// 昨日封面展示
+                                if (yesterdayPhotoClick != 0L) {
+                                    double photoClickProportion = (photoClick.doubleValue() - yesterdayPhotoClick.doubleValue()) / yesterdayPhotoClick.doubleValue();
+                                    nowJson.put("proportion", photoClickProportion); // 较昨日增加比例
+                                } else {
+                                    nowJson.put("proportion", 0); // 较昨日增加比例
+                                }
+
+                                Long aClick = nowJson.getLong("aclick");// 今日封面展示
+                                Long yesterdayAClick = yesterdayJson.getLong("photoShow");// 昨日封面展示
+                                if (yesterdayAClick != 0L) {
+                                    double aClickProportion = (aClick.doubleValue() - yesterdayAClick.doubleValue()) / yesterdayAClick.doubleValue();
+                                    nowJson.put("proportion", aClickProportion); // 较昨日增加比例
+                                } else {
+                                    nowJson.put("proportion", 0); // 较昨日增加比例
+                                }
+                                yesterdayJson.put("now", nowJson);
+                            }
 
+                        }
+                    }
+                    detail.add(yesterdayJson);
                 }
             } else if (type == 2) { // 昨日明细
                 detail = reportMapper.selectReportDetail(anotherDay);
+
             } else if (type == 3) { // 近七天明细
                 String endDate = DateUtils.getAnotherDay("yyyy-MM-dd", anotherDay, -7);
                 detail = reportMapper.selectDayDetailByDate(anotherDay, endDate);
@@ -397,96 +415,122 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
             } else if (type == 4) { // 近十五天明细
                 String endDate = DateUtils.getAnotherDay("yyyy-MM-dd", anotherDay, -15);
                 detail = reportMapper.selectDayDetailByDate(anotherDay, endDate);
+
             } else if (type == 5) { // 近1个月明细
                 String endDate = DateUtils.getMonthBefore("yyyy-MM-dd", anotherDay, -1);
                 detail = reportMapper.selectDayDetailByDate(anotherDay, endDate);
+
             } else if (type == 6) { // 近三个月明细
                 String endDate = DateUtils.getMonthBefore("yyyy-MM-dd", anotherDay, -3);
                 detail = reportMapper.selectDayDetailByDate(anotherDay, endDate);
+
             } else if (type == 7) { // 近半年明细
                 String endDate = DateUtils.getMonthBefore("yyyy-MM-dd", anotherDay, -6);
                 detail = reportMapper.selectDayDetailByMonth(anotherDay, endDate);
-            } else if (type == 8) {
+
+            } else if (type == 8) {// 所有数据按月明细
                 detail = reportMapper.selectAllDayDetailByMonth();
-            } else if (type == 9) {
+
+            } else if (type == 9) { // 自定义查询区间
                 String startDate = requestJson.getString("startDate");
                 String endDate = requestJson.getString("endDate");
                 detail = reportMapper.selectDayDetailByDate(startDate, endDate);
-            } else if (type == 10) {
+
+            } else if (type == 10) { // 数据对比
                 String sign = requestJson.getString("sign");
                 String bigDate = requestJson.getString("bigDate");
                 String smallDate = requestJson.getString("smallDate");
+
+                List<JSONObject> comparedArr = new ArrayList<>();
+                String comparedDate = "";
                 if ("month".equals(sign)) {
                     Map<String, Object> dateMap = DateUtils.compare_date("yyyy-MM", bigDate, smallDate);
-                    List<JSONObject> comparedArr = reportMapper.selectDayDetailsByMonth((String) dateMap.get("bigDate"));   // 除数数据
-                    String comparedDate = (String) dateMap.get("smallDate");
-                    for (int i = 0; i < comparedArr.size(); i++) {
-                        JSONObject comparedJson = comparedArr.get(i);
-                        if (!Check.isNull(comparedJson)) {
-                            String statDate = comparedJson.getString("statDate");
+                    comparedDate = (String) dateMap.get("smallDate");
+                    comparedArr = reportMapper.selectDayDetailsByMonth((String) dateMap.get("bigDate"));   // 除数数据
+                } else if ("day".equals(sign)) {
+                    Map<String, Object> dateMap = DateUtils.compare_date("yyyy-MM-dd", bigDate, smallDate);
+                    comparedDate = (String) dateMap.get("smallDate");
+                    comparedArr = reportMapper.selectHourlyDetailsByDate((String) dateMap.get("bigDate"));   // 除数数据
+                }
+
+                for (int i = 0; i < comparedArr.size(); i++) {
+                    JSONObject comparedJson = comparedArr.get(i);
+                    if (!Check.isNull(comparedJson)) {
+
+                        JSONObject beComparedJson = new JSONObject();
+                        String statDate = comparedJson.getString("statDate");
+                        String beComparedDate = "";
+                        String statHour = "";
+                        if ("month".equals(sign)) {
                             String day = DateUtils.getDay("yyyy-MM-dd", statDate);
-                            String beComparedDate = comparedDate + "-" + day;
-                            JSONObject beComparedJson = reportMapper.selectDayDailyByDate(beComparedDate);
-                            if (!Check.isNull(beComparedJson)) {
-                                JSONObject json = new JSONObject();
-                                BigDecimal cost = comparedJson.getBigDecimal("cost");
-                                Long photoShow = comparedJson.getLong("photoShow");
-                                Long photoClick = comparedJson.getLong("photoClick");
-                                Long aClick = comparedJson.getLong("aclick");
-                                json.put("cost", cost);
-                                json.put("photoShow", photoShow);
-                                json.put("photoClick", photoClick);
-                                json.put("aClick", aClick);
-                                json.put("statDate", statDate);
-
-                                BigDecimal comparedCost = beComparedJson.getBigDecimal("cost");
-                                Long comparedPhotoShow = beComparedJson.getLong("photoShow");
-                                Long comparedPhotoClick = beComparedJson.getLong("photoClick");
-                                Long comparedAClick = beComparedJson.getLong("aclick");
-                                json.put("beComparedCost", comparedCost);
-                                json.put("beComparedPhotoShow", comparedPhotoShow);
-                                json.put("beComparedPhotoClick", comparedPhotoClick);
-                                json.put("beComparedAClick", comparedAClick);
-                                json.put("beComparedDate", beComparedDate);
-                                if (comparedCost.compareTo(new BigDecimal(0)) != 0) {
-                                    BigDecimal costProportion = (cost.subtract(comparedCost)).divide(comparedCost, BigDecimal.ROUND_HALF_UP);
-                                    json.put("costProportion", costProportion);
-                                } else {
-                                    json.put("costProportion", 0);
-                                }
+                            beComparedDate = comparedDate + "-" + day;
+                            beComparedJson = reportMapper.selectDayDailyByDate(beComparedDate);
 
-                                if (comparedPhotoClick != 0L) {
-                                    double photoClickProportion = (photoClick.doubleValue() - comparedPhotoClick.doubleValue()) / comparedPhotoClick.doubleValue();
-                                    json.put("photoClickProportion", photoClickProportion);
-                                } else {
-                                    json.put("photoClickProportion", 0);
-                                }
+                        } else if ("day".equals(sign)) {
+                            statHour = comparedJson.getString("statHour");
+                            beComparedJson = reportMapper.selectDayHourlyByHourAndDate(comparedDate, statHour);
+                            beComparedDate = comparedDate;
+                        }
 
-                                if (comparedPhotoShow != 0L) {
-                                    double showProportion = (photoShow.doubleValue() - comparedPhotoShow.doubleValue()) / comparedPhotoShow.doubleValue();
-                                    json.put("showProportion", showProportion);
-                                } else {
-                                    json.put("showProportion", 0);
-                                }
+                        if (!Check.isNull(beComparedJson)) {
+                            JSONObject json = new JSONObject();
+                            BigDecimal cost = comparedJson.getBigDecimal("cost");
+                            Long photoShow = comparedJson.getLong("photoShow");
+                            Long photoClick = comparedJson.getLong("photoClick");
+                            Long aClick = comparedJson.getLong("aclick");
+                            json.put("cost", cost);
+                            json.put("photoShow", photoShow);
+                            json.put("photoClick", photoClick);
+                            json.put("aClick", aClick);
+                            json.put("statDate", statDate);
+                            if ("day".equals(sign)) {
+                                json.put("statHour", statHour);
+                            }
 
-                                if (comparedAClick != 0L) {
-                                    double aClickProportion = (aClick.doubleValue() - comparedAClick.doubleValue()) / comparedAClick.doubleValue();
-                                    json.put("comparedAclick", aClickProportion);
-                                } else {
-                                    json.put("comparedAclick", 0);
-                                }
+                            BigDecimal comparedCost = beComparedJson.getBigDecimal("cost");
+                            Long comparedPhotoShow = beComparedJson.getLong("photoShow");
+                            Long comparedPhotoClick = beComparedJson.getLong("photoClick");
+                            Long comparedAClick = beComparedJson.getLong("aclick");
+                            json.put("beComparedCost", comparedCost);
+                            json.put("beComparedPhotoShow", comparedPhotoShow);
+                            json.put("beComparedPhotoClick", comparedPhotoClick);
+                            json.put("beComparedAClick", comparedAClick);
+                            json.put("beComparedDate", beComparedDate);
+
+                            if (comparedCost.compareTo(new BigDecimal(0)) != 0) {
+                                BigDecimal costProportion = (cost.subtract(comparedCost)).divide(comparedCost, BigDecimal.ROUND_HALF_UP);
+                                json.put("costProportion", costProportion);
+                            } else {
+                                json.put("costProportion", 0);
+                            }
+
+                            if (comparedPhotoClick != 0L) {
+                                double photoClickProportion = (photoClick.doubleValue() - comparedPhotoClick.doubleValue()) / comparedPhotoClick.doubleValue();
+                                json.put("photoClickProportion", photoClickProportion);
+                            } else {
+                                json.put("photoClickProportion", 0);
+                            }
 
-                                detail.add(json);
+                            if (comparedPhotoShow != 0L) {
+                                double showProportion = (photoShow.doubleValue() - comparedPhotoShow.doubleValue()) / comparedPhotoShow.doubleValue();
+                                json.put("showProportion", showProportion);
+                            } else {
+                                json.put("showProportion", 0);
+                            }
 
+                            if (comparedAClick != 0L) {
+                                double aClickProportion = (aClick.doubleValue() - comparedAClick.doubleValue()) / comparedAClick.doubleValue();
+                                json.put("comparedAclick", aClickProportion);
+                            } else {
+                                json.put("comparedAclick", 0);
                             }
 
+                            detail.add(json);
                         }
 
                     }
 
-
                 }
-
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -494,7 +538,98 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
         }
 
         System.err.println(detail);
-
         return detail;
     }
+
+
+    /**
+     * 明细列表
+     *
+     * @param requestJson
+     * @return
+     */
+    @Override
+    public List<JSONObject> getReportList(JSONObject requestJson) {
+        List<JSONObject> reportList = new ArrayList<>();
+        try {
+            Integer type = requestJson.getInteger("type");
+            String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
+            String anotherDay = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -1);
+            if (type == 1) {//今日分时列表
+                reportList = reportMapper.selectReportDetail(nowDate);
+
+            } else if (type == 2) { //昨日分时列表
+
+                reportList = reportMapper.selectReportDetail(anotherDay);
+
+            } else if (type == 3) {// 近七天分天列表
+
+                String endDate = DateUtils.getAnotherDay("yyyy-MM-dd", anotherDay, -7);
+                reportList = reportMapper.selectDayDetailByDate(anotherDay, endDate);
+
+            } else if (type == 4) { // 近十五天明细
+                String endDate = DateUtils.getAnotherDay("yyyy-MM-dd", anotherDay, -15);
+                reportList = reportMapper.selectDayDetailByDate(anotherDay, endDate);
+
+            } else if (type == 5) { // 近1个月明细
+                String endDate = DateUtils.getMonthBefore("yyyy-MM-dd", anotherDay, -1);
+                reportList = reportMapper.selectDayDetailByDate(anotherDay, endDate);
+
+            } else if (type == 6) { // 近三个月明细
+                String endDate = DateUtils.getMonthBefore("yyyy-MM-dd", anotherDay, -3);
+                reportList = reportMapper.selectDayDetailByDate(anotherDay, endDate);
+
+            } else if (type == 7) { // 近半年明细
+                String endDate = DateUtils.getMonthBefore("yyyy-MM-dd", anotherDay, -6);
+                reportList = reportMapper.selectDayDetailByMonth(anotherDay, endDate);
+
+            } else if (type == 8) {// 所有数据按月明细
+                reportList = reportMapper.selectAllDayDetailByMonth();
+
+            } else if (type == 9) { // 自定义查询区间
+                String startDate = requestJson.getString("startDate");
+                String endDate = requestJson.getString("endDate");
+                reportList = reportMapper.selectDayDetailByDate(startDate, endDate);
+            } else if (type == 10) {
+                String sign = requestJson.getString("sign");
+                String bigDate = requestJson.getString("bigDate");
+                String smallDate = requestJson.getString("smallDate");
+
+                Map<String, Object> dateMap = new HashMap<>();
+                if ("month".equals(sign)) {
+                    dateMap = DateUtils.compare_date("yyyy-MM", bigDate, smallDate);
+                } else if ("day".equals(sign)) {
+                    dateMap = DateUtils.compare_date("yyyy-MM-dd", bigDate, smallDate);
+                }
+
+                String comparedDate = (String) dateMap.get("bigDate");
+                String beComparedDate = (String) dateMap.get("smallDate");
+                JSONObject detailJson = new JSONObject();
+                if ("month".equals(sign)) {
+                    List<JSONObject> comparedArr = reportMapper.selectDayDetailsByMonth(beComparedDate);   // 被除数数据
+                    detailJson.put("beStatDate", beComparedDate);
+                    detailJson.put("beComparedDetail", comparedArr);
+                    List<JSONObject> beComparedArr = reportMapper.selectDayDetailsByMonth(comparedDate);   // 除数数据
+                    detailJson.put("statDate", comparedDate);
+                    detailJson.put("comparedDetail", beComparedArr);
+
+                } else if ("day".equals(sign)) {
+                    List<JSONObject> comparedArr = reportMapper.selectHourlyDetailsByDate(comparedDate);// 除数数据
+                    detailJson.put("beStatDate", beComparedDate);
+                    detailJson.put("beComparedDetail", comparedArr);
+                    List<JSONObject> beComparedArr = reportMapper.selectHourlyDetailsByDate(beComparedDate);// 被除数数据
+                    detailJson.put("statDate", comparedDate);
+                    detailJson.put("comparedDetail", beComparedArr);
+
+                }
+                reportList.add(detailJson);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+
+        System.err.println(reportList);
+        return reportList;
+    }
 }