Prechádzať zdrojové kódy

快手大盘报表完成80%

yumeng 5 rokov pred
rodič
commit
07fe6b218c

+ 114 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/DateUtils.java

@@ -751,4 +751,118 @@ public class DateUtils extends PropertyEditorSupport {
     }
 
 
+    /**
+     * @param format 返回日期格式
+     * @param date   传入的初始日期
+     * @param num    天数
+     * @return
+     * @throws ParseException
+     */
+    public static String getAnotherDay(String format, String date, Integer num) throws ParseException {
+
+        SimpleDateFormat sdf = new SimpleDateFormat(format);
+        Date date_ = sdf.parse(date);// 将字符串转化为时间格式
+        Calendar calendar = Calendar.getInstance(); // 得到日历
+        calendar.setTime(date_);// 把开始日期赋给日历
+        calendar.add(Calendar.DAY_OF_MONTH, num); // 设置为num天
+        Date resultDate = calendar.getTime(); // 得到时间
+        return sdf.format(resultDate);
+    }
+
+
+    public static String getNowDate(String format) {
+
+        SimpleDateFormat sdf = new SimpleDateFormat(format);
+
+        Date date = new Date();
+
+        return sdf.format(date);
+    }
+
+
+    public static String getMonthBefore(String format, String nowTime, int amount) throws ParseException {
+        // 获取当前时间
+        SimpleDateFormat dateFormat = new SimpleDateFormat(format);
+        Date date = dateFormat.parse(nowTime);
+
+        Calendar calendar = Calendar.getInstance(); //得到日历
+        calendar.setTime(date);//把当前时间赋给日历
+        calendar.add(calendar.MONTH, amount); //设置为前2月,可根据需求进行修改
+        date = calendar.getTime();//获取2个月前的时间
+
+        return dateFormat.format(date);
+    }
+
+    public static Map<String, Object> compare_date(String format, String DATE1, String DATE2) {
+
+
+        DateFormat df = new SimpleDateFormat(format);
+        Map<String, Object> map = new HashMap<>();
+        try {
+            Date dt1 = df.parse(DATE1);
+            Date dt2 = df.parse(DATE2);
+            if (dt1.getTime() > dt2.getTime()) {
+                map.put("bigDate", DATE1);
+                map.put("smallDate", DATE2);
+                return map;
+            } else if (dt1.getTime() < dt2.getTime()) {
+                map.put("bigDate", DATE2);
+                map.put("smallDate", DATE1);
+                return map;
+            }
+        } catch (Exception exception) {
+            exception.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 日期中获取年份
+     *
+     * @param format
+     * @param date
+     * @return
+     * @throws ParseException
+     */
+    public static String getYear(String format, String date) throws ParseException {
+
+        SimpleDateFormat df = new SimpleDateFormat(format);
+        Date parse = df.parse(date);
+        return String.format("%tY", parse);
+
+    }
+
+    /**
+     * 日期中获取月份
+     *
+     * @param format
+     * @param date
+     * @return
+     * @throws ParseException
+     */
+    public static String getMonth(String format, String date) throws ParseException {
+
+        SimpleDateFormat df = new SimpleDateFormat(format);
+        Date parse = df.parse(date);
+        return String.format("%tm", parse);
+
+    }
+
+    /**
+     * 日期中获取天
+     *
+     * @param format
+     * @param date
+     * @return
+     * @throws ParseException
+     */
+    public static String getDay(String format, String date) throws ParseException {
+
+        SimpleDateFormat df = new SimpleDateFormat(format);
+        Date parse = df.parse(date);
+        return String.format("%td", parse);
+
+    }
+
+
 }

+ 0 - 1
module-common/src/main/java/cn/com/ctop/common/module/entity/HttpClientEntity.java

@@ -1,6 +1,5 @@
 package cn.com.ctop.common.module.entity;
 
-import cn.com.ctop.common.module.utils.HttpClientUtils;
 import lombok.Data;
 import org.apache.http.client.CookieStore;
 import org.apache.http.impl.client.CloseableHttpClient;

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

@@ -4,9 +4,13 @@ import cn.com.ctop.bytedance.service.IBytedanceReportService;
 import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
 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 java.util.List;
+
 @Slf4j
 @RestController
 @RequestMapping("/ctop/report")
@@ -32,4 +36,23 @@ public class BytedanceReportController {
     }
 
 
+    @PostMapping("/kuaiShou/accountReport")
+    public JSONObject getKuaiShouAccountReport(@RequestBody JSONObject requestJson) {
+        System.err.println(requestJson);
+        JSONObject json = bytedanceReportService.getKuaiShouAccountReport(requestJson);
+        return json;
+
+    }
+
+
+    @PostMapping("/kuaiShou/accountDetailReport")
+    public List<JSONObject> getKuaiShouAccountDetailReport(@RequestBody JSONObject requestJson) {
+        System.err.println(requestJson);
+
+        List<JSONObject> kuaiShouAccounDetailtReport = bytedanceReportService.getKuaiShouAccounDetailtReport(requestJson);
+        return kuaiShouAccounDetailtReport;
+
+    }
+
+
 }

+ 0 - 6
module-report/src/main/java/cn/com/ctop/bytedance/mapper/BytedanceReportMapper.java

@@ -1,6 +0,0 @@
-package cn.com.ctop.bytedance.mapper;
-
-
-public interface BytedanceReportMapper {
-
-}

+ 111 - 0
module-report/src/main/java/cn/com/ctop/bytedance/mapper/ReportMapper.java

@@ -0,0 +1,111 @@
+package cn.com.ctop.bytedance.mapper;
+
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface ReportMapper {
+
+    /**
+     * 今日消耗
+     *
+     * @param date
+     * @return
+     */
+    JSONObject selectDayReport(@Param("date") String date);
+
+    /**
+     * 查询明细
+     *
+     * @param date
+     * @return
+     */
+    List<JSONObject> selectReportDetail(@Param("date") String date);
+
+    /**
+     * 根据开始、结束日期查询消耗
+     *
+     * @param anotherDay
+     * @param endDate
+     * @return
+     */
+    JSONObject selectByDate(@Param("startDate") String anotherDay, @Param("endDate") String endDate);
+
+    /**
+     * 查询全部消耗 包括今日消耗
+     *
+     * @return
+     */
+    JSONObject selectAllAccount();
+
+    /**
+     * 查询 昨日消耗
+     *
+     * @param anotherDay
+     * @return
+     */
+    JSONObject selectYesterday(@Param("date") String anotherDay);
+
+    /**
+     * 根据日期 小时 查询信息
+     *
+     * @param date
+     * @param statHour
+     * @return
+     */
+    JSONObject selectYesterdayByHourAndDate(@Param("date") String date, @Param("statHour") String statHour);
+
+    /**
+     * 查询 七天汇总数据
+     *
+     * @param anotherDay
+     * @param endDate
+     * @return
+     */
+    List<JSONObject> selectDayDetailByDate(@Param("startDate") String anotherDay, @Param("endDate") String endDate);
+
+    /**
+     * 按月 明细
+     *
+     * @param anotherDay
+     * @param endDate
+     * @return
+     */
+    List<JSONObject> selectDayDetailByMonth(@Param("startDate") String anotherDay, @Param("endDate") String endDate);
+
+    /**
+     * 查询所有按月统计数据
+     *
+     * @return
+     */
+    List<JSONObject> selectAllDayDetailByMonth();
+
+
+    /**
+     * 根据月份 查询
+     *
+     * @param date
+     * @return
+     */
+    JSONObject selectMonthReportByDate(@Param("date") String date);
+
+
+    /**
+     * 根据月份查询按日明细
+     *
+     * @param date
+     * @return
+     */
+    List<JSONObject> selectDayDetailsByMonth(@Param("date") String date);
+
+    /**
+     * 根据日期查询汇总数据
+     *
+     * @param statDate
+     * @return
+     */
+    JSONObject selectDayDailyByDate(@Param("statDate") String statDate);
+}

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

@@ -1,5 +0,0 @@
-<?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.bytedance.mapper.BytedanceReportMapper">
-
-</mapper>

+ 169 - 0
module-report/src/main/java/cn/com/ctop/bytedance/mapper/xml/ReportMapper.xml

@@ -0,0 +1,169 @@
+<?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.bytedance.mapper.ReportMapper">
+
+    <select id="selectDayReport" resultType="com.alibaba.fastjson.JSONObject">
+      select
+       sum(charge) cost,
+       sum(photo_show) photoShow,
+       sum(photo_click) photoClick,
+       sum(aclick) aclick
+     from
+      ctop_kuaishou_report_hourly_account
+      where stat_date = #{date}
+    </select>
+
+    <select id="selectYesterday" resultType="com.alibaba.fastjson.JSONObject">
+      select
+       sum(charge) cost,
+       sum(photo_show) photoShow,
+       sum(photo_click) photoClick,
+       sum(aclick) aclick
+     from
+      ctop_kuaishou_report_hourly_account
+      where stat_date = #{date}
+    </select>
+
+
+    <select id="selectByDate" resultType="com.alibaba.fastjson.JSONObject">
+      select
+       sum(charge) cost,
+       sum(photo_show) photoShow,
+       sum(photo_click) photoClick,
+       sum(aclick) aclick
+     from
+      ctop_kuaishou_report_daily_account
+      where stat_date &lt;= #{startDate}
+      and  stat_date &gt;= #{endDate}
+    </select>
+
+    <select id="selectAllAccount" resultType="com.alibaba.fastjson.JSONObject">
+      select
+       sum(charge) cost,
+       sum(photo_show) photoShow,
+       sum(photo_click) photoClick,
+       sum(aclick) aclick
+     from
+      ctop_kuaishou_report_hourly_account
+    </select>
+
+
+    <select id="selectReportDetail" resultType="com.alibaba.fastjson.JSONObject">
+
+      select
+       sum(charge) cost,
+       sum(photo_show) photoShow,
+       sum(photo_click) photoClick,
+       sum(aclick) aclick,
+       stat_hour statHour
+     from
+      ctop_kuaishou_report_hourly_account
+      where stat_date = #{date}
+      group by stat_hour
+      order by stat_hour desc
+    </select>
+
+
+    <select id="selectYesterdayByHourAndDate" resultType="com.alibaba.fastjson.JSONObject">
+      select
+       sum(charge) cost,
+       sum(photo_show) photoShow,
+       sum(photo_click) photoClick,
+       sum(aclick) aclick
+     from
+      ctop_kuaishou_report_hourly_account
+      where stat_date = #{date}
+      and stat_hour = #{statHour}
+    </select>
+
+
+    <select id="selectDayDetailByDate" resultType="com.alibaba.fastjson.JSONObject">
+      select
+       charge cost,
+       photo_show photoShow,
+       photo_click photoClick,
+       aclick aclick,
+       stat_date statDate
+     from
+      ctop_kuaishou_report_daily_account
+      where stat_date &lt;= #{startDate}
+      and  stat_date &gt;= #{endDate}
+      order by stat_date desc
+    </select>
+
+
+    <select id="selectDayDetailByMonth" resultType="com.alibaba.fastjson.JSONObject">
+      select
+       sum(charge) cost,
+       sum(photo_show) photoShow,
+       sum(photo_click) photoClick,
+       sum(aclick) aclick,
+       DATE_FORMAT(stat_date,'%Y-%m') statDate
+     from
+      ctop_kuaishou_report_daily_account
+      where stat_date &lt;= #{startDate}
+      and  stat_date &gt;= #{endDate}
+      group by DATE_FORMAT(stat_date,'%Y-%m')
+      order by stat_date desc
+    </select>
+
+    <select id="selectAllDayDetailByMonth" resultType="com.alibaba.fastjson.JSONObject">
+      select
+       sum(charge) cost,
+       sum(photo_show) photoShow,
+       sum(photo_click) photoClick,
+       sum(aclick) aclick,
+       DATE_FORMAT(stat_date,'%Y-%m') statDate
+     from
+      ctop_kuaishou_report_daily_account
+      group by DATE_FORMAT(stat_date,'%Y-%m')
+      order by stat_date desc
+    </select>
+
+
+    <select id="selectMonthReportByDate" resultType="com.alibaba.fastjson.JSONObject">
+      select
+       sum(charge) cost,
+       sum(photo_show) photoShow,
+       sum(photo_click) photoClick,
+       sum(aclick) aclick,
+       DATE_FORMAT(stat_date,'%Y-%m') statDate
+     from
+      ctop_kuaishou_report_daily_account
+      where DATE_FORMAT(stat_date,'%Y-%m') = #{date}
+    </select>
+
+
+    <select id="selectDayDetailsByMonth" 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 DATE_FORMAT(stat_date,'%Y-%m') = #{date}
+      group by stat_date
+      order by stat_date desc
+    </select>
+
+
+    <select id="selectDayDailyByDate" 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 = #{statDate}
+      group by stat_date
+
+    </select>
+
+
+
+
+</mapper>

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

@@ -2,6 +2,25 @@ package cn.com.ctop.bytedance.service;
 
 import com.alibaba.fastjson.JSONObject;
 
+import java.util.List;
+
 public interface IBytedanceReportService {
     JSONObject getAccountReport(String loginId);
+
+    /**
+     * 快手 大盘报表
+     *
+     * @param requestJson
+     * @return
+     */
+    JSONObject getKuaiShouAccountReport(JSONObject requestJson);
+
+
+    /**
+     * 获取明细
+     *
+     * @param
+     * @return
+     */
+    List<JSONObject> getKuaiShouAccounDetailtReport(JSONObject requestJson);
 }

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

@@ -2,7 +2,7 @@ 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.BytedanceReportMapper;
+import cn.com.ctop.bytedance.mapper.ReportMapper;
 import cn.com.ctop.bytedance.service.IBytedanceReportService;
 import cn.com.ctop.common.module.entity.UserAllocation;
 import cn.com.ctop.common.module.mapper.UserAllocationMapper;
@@ -12,11 +12,14 @@ import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportDailyAccountMapp
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 @Service
 public class BytedanceReportServiceImpl implements IBytedanceReportService {
@@ -27,7 +30,7 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
     private BytedanceAdvertiserDailyReportMapper bytedanceAdvertiserDailyReportMapper;
 
     @Autowired
-    private BytedanceReportMapper bytedanceReportMapper;
+    private ReportMapper reportMapper;
 
     @Autowired
     private KuaishouReportDailyAccountMapper kuaishouReportDailyAccountMapper;
@@ -185,5 +188,308 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
         return returnJson;
     }
 
+    /**
+     * 快手-大盘报表
+     *
+     * @param requestJson
+     * @return
+     */
+    @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);
+                JSONObject yesterJson = reportMapper.selectYesterday(anotherDay);
+                if (!Check.isNull(yesterJson)) {
+                    BigDecimal cost = accountJson.getBigDecimal("cost"); // 今日消耗
+                    BigDecimal yesterCost = yesterJson.getBigDecimal("cost");// 昨日消耗
+                    BigDecimal compareBigDecima = new BigDecimal(0);
+                    if (yesterCost.compareTo(compareBigDecima) != 0) {
+                        BigDecimal costProportion = (cost.subtract(yesterCost)).divide(yesterCost, 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();
+                        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();
+                        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();
+                        accountJson.put("aClickProportion", aClickProportion); // 较昨日增加比例
+                    } else {
+                        accountJson.put("aClickProportion", 0); // 较昨日增加比例
+                    }
+
+                }
+
+            } else if (type == 2) { // 昨日总消耗
+                accountJson = reportMapper.selectYesterday(anotherDay);
 
+            } else if (type == 3) { // 近七天
+                String endDate = DateUtils.getAnotherDay("yyyy-MM-dd", anotherDay, -7);
+                accountJson = reportMapper.selectByDate(anotherDay, endDate);
+
+            } else if (type == 4) { // 近15天
+                String endDate = DateUtils.getAnotherDay("yyyy-MM-dd", anotherDay, -15);
+                accountJson = reportMapper.selectByDate(anotherDay, endDate);
+
+            } else if (type == 5) {// 近一个月
+                String endDate = DateUtils.getMonthBefore("yyyy-MM-dd", anotherDay, -1);
+                accountJson = reportMapper.selectByDate(anotherDay, endDate);
+
+            } else if (type == 6) {// 近三个月
+                String endDate = DateUtils.getMonthBefore("yyyy-MM-dd", anotherDay, -3);
+                accountJson = reportMapper.selectByDate(anotherDay, endDate);
+
+            } else if (type == 7) {// 近六个月
+                String endDate = DateUtils.getMonthBefore("yyyy-MM-dd", anotherDay, -6);
+                accountJson = reportMapper.selectByDate(anotherDay, endDate);
+
+            } else if (type == 8) {  // 所有
+                accountJson = reportMapper.selectAllAccount();
+
+            } else if (type == 9) {  // 自定义查询日期
+                String startDate = requestJson.getString("startDate");
+                String endDate = requestJson.getString("endDate");
+                accountJson = reportMapper.selectByDate(startDate, endDate);
+            } else if (type == 10) {
+                String sign = requestJson.getString("sign");
+                String bigDate = requestJson.getString("bigDate");
+                String smallDate = requestJson.getString("smallDate");
+                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"));   // 除数数据
+                    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);
+                    } else {
+                        comparedJson.put("costProportion", 0);
+                    }
+
+                    Long photoClick = comparedJson.getLong("photoClick");
+                    Long comparedPhotoClick = beComparedJson.getLong("photoShow");
+                    if (comparedPhotoClick != 0L) {
+                        double photoClickProportion = (photoClick.doubleValue() - comparedPhotoClick.doubleValue()) / comparedPhotoClick.doubleValue();
+                        comparedJson.put("photoClickProportion", photoClickProportion);
+                    } 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();
+                        comparedJson.put("comparedAclick", aClickProportion);
+                    } else {
+                        comparedJson.put("comparedAclick", 0);
+                    }
+                    accountJson.put("beCompared", beComparedJson);
+                    accountJson.put("compared", comparedJson);
+                }
+
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return accountJson;
+    }
+
+    @Override
+    public List<JSONObject> getKuaiShouAccounDetailtReport(JSONObject requestJson) {
+        Integer type = requestJson.getInteger("type");
+        List<JSONObject> detail = new ArrayList<>();
+        try {
+            String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
+            String anotherDay = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -1);
+            if (type == 1) { //  今日明细
+                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); // 较昨日增加比例
+                        }
+
+                        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); // 较昨日增加比例
+                        }
+                        detail.add(detailJson);
+                    }
+
+                }
+                System.err.println(detail);
+            } else if (type == 2) { // 昨日明细
+                detail = reportMapper.selectReportDetail(anotherDay);
+                System.err.println(detail);
+            } else if (type == 3) { // 近七天明细
+                String endDate = DateUtils.getAnotherDay("yyyy-MM-dd", anotherDay, -7);
+                detail = reportMapper.selectDayDetailByDate(anotherDay, endDate);
+
+            } 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) {
+                detail = reportMapper.selectAllDayDetailByMonth();
+            } else if (type == 9) {
+                String startDate = requestJson.getString("startDate");
+                String endDate = requestJson.getString("endDate");
+                detail = reportMapper.selectDayDetailByDate(startDate, endDate);
+            } else if (type == 10) {
+                String sign = requestJson.getString("sign");
+                String bigDate = requestJson.getString("bigDate");
+                String smallDate = requestJson.getString("smallDate");
+                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("bigDate");
+                    for (int i = 0; i < comparedArr.size(); i++) {
+                        JSONObject comparedJson = comparedArr.get(i);
+                        if (!Check.isNull(comparedJson)) {
+                            String statDate = comparedJson.getString("statDate");
+                            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);
+                                }
+
+                                if (comparedPhotoClick != 0L) {
+                                    double photoClickProportion = (photoClick.doubleValue() - comparedPhotoClick.doubleValue()) / comparedPhotoClick.doubleValue();
+                                    json.put("photoClickProportion", photoClickProportion);
+                                } else {
+                                    json.put("photoClickProportion", 0);
+                                }
+
+                                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();
+
+        }
+
+
+        return detail;
+    }
 }