|
@@ -0,0 +1,146 @@
|
|
|
|
+package cn.com.ctop.bytedance.controller;
|
|
|
|
+
|
|
|
|
+import cn.com.ctop.bytedance.service.IDailyReportService;
|
|
|
|
+import cn.com.ctop.bytedance.vo.DailyAccountReportVO;
|
|
|
|
+import cn.com.ctop.bytedance.vo.DailyGroupReportVO;
|
|
|
|
+import cn.com.ctop.bytedance.vo.DailyReportVO;
|
|
|
|
+import cn.com.ctop.common.module.utils.Check;
|
|
|
|
+import cn.com.ctop.common.module.utils.ExportExcelUtils;
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
|
+import io.swagger.annotations.Api;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
|
|
+import org.jeecg.common.api.vo.Result;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
|
+
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
|
+import java.io.OutputStream;
|
|
|
|
+import java.io.UnsupportedEncodingException;
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.List;
|
|
|
|
+
|
|
|
|
+@Slf4j
|
|
|
|
+@Api(tags = "广告主日报表")
|
|
|
|
+@RestController
|
|
|
|
+@RequestMapping("/ctop/daily")
|
|
|
|
+public class DailyReportController {
|
|
|
|
+ @Autowired
|
|
|
|
+ private IDailyReportService dailyReportService;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @PostMapping(value = "/getDailyReport")
|
|
|
|
+ public Result<DailyReportVO> getDailyReport(@RequestBody JSONObject requestJson) {
|
|
|
|
+
|
|
|
|
+ Result<DailyReportVO> result = new Result<>();
|
|
|
|
+ try {
|
|
|
|
+ DailyReportVO dailyReport = dailyReportService.getDailyReport(requestJson);
|
|
|
|
+ result.setSuccess(true);
|
|
|
|
+ result.setResult(dailyReport);
|
|
|
|
+
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ result.setSuccess(false);
|
|
|
|
+
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ return result;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 导出报表
|
|
|
|
+ *
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @RequestMapping(value = "/exportDailyReport")
|
|
|
|
+ @ResponseBody
|
|
|
|
+ public void export(HttpServletRequest request, HttpServletResponse response, @RequestBody JSONObject requestJson) throws Exception {
|
|
|
|
+ DailyReportVO dailyReport = dailyReportService.getDailyReport(requestJson);
|
|
|
|
+
|
|
|
|
+ List<List<String>> accountData = new ArrayList<>();
|
|
|
|
+ if (!Check.isNull(dailyReport)) {
|
|
|
|
+ DailyAccountReportVO dailyAccountReport = dailyReport.getDailyAccountReport();
|
|
|
|
+ if (!Check.isNull(dailyAccountReport)) {
|
|
|
|
+ List rowData = new ArrayList();
|
|
|
|
+ rowData.add(requestJson.getString("date")); // 时间
|
|
|
|
+ rowData.add(String.valueOf(dailyAccountReport.getCost())); // 消耗
|
|
|
|
+ rowData.add(String.valueOf(dailyAccountReport.getContractRebateRealCharged())); // 激励花费
|
|
|
|
+ rowData.add(String.valueOf(dailyAccountReport.getActualCost())); // 实际花费
|
|
|
|
+ rowData.add(String.valueOf(dailyAccountReport.getPhotoShow())); // 展示数
|
|
|
|
+ rowData.add(String.valueOf(dailyAccountReport.getPhotoClick())); // 点击数
|
|
|
|
+ rowData.add(String.valueOf(dailyAccountReport.getPhotoClickRatio())); // 点击率
|
|
|
|
+ rowData.add(String.valueOf(dailyAccountReport.getPhotoClickCost())); // 平均点击花费
|
|
|
|
+ rowData.add(String.valueOf(dailyAccountReport.getBclick())); // 行为数
|
|
|
|
+ rowData.add(String.valueOf(dailyAccountReport.getActionRatio())); // 行为率
|
|
|
|
+ rowData.add(String.valueOf(dailyAccountReport.getImpression1kCost())); // 平均千次展现花费
|
|
|
|
+ rowData.add(String.valueOf(dailyAccountReport.getConversions())); // 转化数
|
|
|
|
+ rowData.add(String.valueOf(dailyAccountReport.getConversionPrice())); // 转化单价
|
|
|
|
+ rowData.add(String.valueOf(dailyAccountReport.getConversionRate())); // 转化率
|
|
|
|
+ rowData.add(String.valueOf(dailyAccountReport.getDiscountConversionPrice())); // 折后转化成本
|
|
|
|
+ accountData.add(rowData);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<List<String>> group = new ArrayList<>();
|
|
|
|
+ List<DailyGroupReportVO> dailyGroupReport = dailyReport.getDailyGroupReport();
|
|
|
|
+ if (!Check.isNull(dailyGroupReport)) {
|
|
|
|
+ for (DailyGroupReportVO groupReportVO : dailyGroupReport) {
|
|
|
|
+ List dailyGroup = new ArrayList();
|
|
|
|
+ dailyGroup.add(String.valueOf(groupReportVO.getAccountId()));
|
|
|
|
+ dailyGroup.add(String.valueOf(groupReportVO.getAuthName()));
|
|
|
|
+ dailyGroup.add(String.valueOf(groupReportVO.getStatDate()));
|
|
|
|
+ dailyGroup.add(String.valueOf(groupReportVO.getCampaignName()));
|
|
|
|
+ dailyGroup.add(String.valueOf(groupReportVO.getUnitName()));
|
|
|
|
+ dailyGroup.add(String.valueOf(groupReportVO.getCost()));
|
|
|
|
+ dailyGroup.add(String.valueOf(groupReportVO.getDisCountCost()));
|
|
|
|
+ dailyGroup.add(String.valueOf(groupReportVO.getPhotoShow()));
|
|
|
|
+ dailyGroup.add(String.valueOf(groupReportVO.getPhotoClick()));
|
|
|
|
+ dailyGroup.add(String.valueOf(groupReportVO.getBclick()));
|
|
|
|
+ dailyGroup.add(String.valueOf(groupReportVO.getActionRatio()));
|
|
|
|
+ dailyGroup.add(String.valueOf(groupReportVO.getImpression1kCost()));
|
|
|
|
+ dailyGroup.add(String.valueOf(groupReportVO.getPhotoClickCost()));
|
|
|
|
+ dailyGroup.add(String.valueOf(groupReportVO.getConversions()));
|
|
|
|
+ dailyGroup.add(String.valueOf(groupReportVO.getConversionPrice()));
|
|
|
|
+ dailyGroup.add(String.valueOf(groupReportVO.getClickConversionRate()));
|
|
|
|
+ dailyGroup.add(String.valueOf(groupReportVO.getDiscountConversionPrice()));
|
|
|
|
+ group.add(dailyGroup);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ String[] accountHeaders = {"时间", "消耗", "激励花费", "实际消耗", "展示数", "点击数", "点击率", "平均点击花费", "行为数", "行为率", "平均千次展现花费", "转化数", "转化单价", "转化率", "折后转化成本"};
|
|
|
|
+ String[] groupHeaders = {"账号", "账号名称", "日期", "计划名称", "广告组名称", "消耗", "折后消耗", "展示数", "点击数", "行为数", "行为率", "平均千次展示花费", "平均点击花费", "转化数", "转化单价", "点击转化率", "折后转化成本"};
|
|
|
|
+ OutputStream os = response.getOutputStream();
|
|
|
|
+ ExportExcelUtils eeu = new ExportExcelUtils();
|
|
|
|
+ XSSFWorkbook workbook = new XSSFWorkbook();
|
|
|
|
+ eeu.exportExcel(workbook, 0, "分日数据", accountHeaders, accountData);
|
|
|
|
+ eeu.exportExcel(workbook, 1, "分组数据", groupHeaders, group);
|
|
|
|
+ this.setResponseHeader(response, "日报.xls");
|
|
|
|
+ workbook.write(os);
|
|
|
|
+ os.flush();
|
|
|
|
+ os.close();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //发送响应流方法
|
|
|
|
+ public void setResponseHeader(HttpServletResponse response, String fileName) {
|
|
|
|
+ try {
|
|
|
|
+ try {
|
|
|
|
+ fileName = new String(fileName.getBytes(), "ISO8859-1");
|
|
|
|
+ } catch (UnsupportedEncodingException e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ response.setContentType("application/octet-stream;charset=ISO8859-1");
|
|
|
|
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
|
|
|
|
+ response.addHeader("Pargam", "no-cache");
|
|
|
|
+ response.addHeader("Cache-Control", "no-cache");
|
|
|
|
+ } catch (Exception ex) {
|
|
|
|
+ ex.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|