|
@@ -33,6 +33,15 @@ public class KuaiShouYiCheReportController {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+ @PostMapping("dailyReport")
|
|
|
|
+ public Result<JSONObject> dailyReport(@RequestBody JSONObject requestJson) {
|
|
|
|
+ Result<JSONObject> result = new Result<>();
|
|
|
|
+ JSONObject hourReport = yiCheReportService.getDailyReport(requestJson);
|
|
|
|
+ result.setResult(hourReport);
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 导出报表
|
|
* 导出报表
|
|
*
|
|
*
|
|
@@ -40,7 +49,7 @@ public class KuaiShouYiCheReportController {
|
|
*/
|
|
*/
|
|
@RequestMapping(value = "/exportHourReport")
|
|
@RequestMapping(value = "/exportHourReport")
|
|
@ResponseBody
|
|
@ResponseBody
|
|
- public void export(HttpServletRequest request, HttpServletResponse response, @RequestBody JSONObject requestJson) throws Exception {
|
|
|
|
|
|
+ public void exportHourReport(HttpServletRequest request, HttpServletResponse response, @RequestBody JSONObject requestJson) throws Exception {
|
|
|
|
|
|
JSONObject hourReport = yiCheReportService.getHourReport(requestJson);
|
|
JSONObject hourReport = yiCheReportService.getHourReport(requestJson);
|
|
JSONArray androidArr = hourReport.getJSONArray("android");
|
|
JSONArray androidArr = hourReport.getJSONArray("android");
|
|
@@ -94,6 +103,167 @@ public class KuaiShouYiCheReportController {
|
|
os.close();
|
|
os.close();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ @RequestMapping(value = "/exportDailyReport")
|
|
|
|
+ @ResponseBody
|
|
|
|
+ public void exportDailyReport(HttpServletRequest request, HttpServletResponse response, @RequestBody JSONObject requestJson) throws Exception {
|
|
|
|
+ JSONObject dailyReport = yiCheReportService.getDailyReport(requestJson);
|
|
|
|
+ JSONObject androidJson = dailyReport.getJSONObject("android");
|
|
|
|
+
|
|
|
|
+ // 安卓相关
|
|
|
|
+ List<List<Object>> androidList = new ArrayList<>();
|
|
|
|
+ if (!Check.isNull(androidJson)) {
|
|
|
|
+ List<Object> android = new ArrayList();
|
|
|
|
+ android.add(androidJson.getString("agent"));
|
|
|
|
+ android.add(androidJson.getString("media"));
|
|
|
|
+ android.add(androidJson.getString("systemType"));
|
|
|
|
+ android.add(androidJson.getString("statDate"));
|
|
|
|
+ android.add(androidJson.getBigDecimal("charge"));
|
|
|
|
+ android.add(androidJson.getBigDecimal("cashCost"));
|
|
|
|
+ android.add(androidJson.getLong("photoShow"));
|
|
|
|
+ android.add(androidJson.getLong("photoClick"));
|
|
|
|
+ android.add(androidJson.getString("clickRate"));
|
|
|
|
+ android.add(androidJson.getString("impression1kCost"));
|
|
|
|
+ android.add(androidJson.getLong("bclick"));
|
|
|
|
+ android.add(androidJson.getString("eventJinJianApp"));
|
|
|
|
+ android.add(androidJson.getLong("activation"));
|
|
|
|
+ android.add(androidJson.getLong("youMengactivation"));
|
|
|
|
+ android.add(androidJson.getLong("tdActivation"));
|
|
|
|
+ android.add(androidJson.getBigDecimal("activationCost"));
|
|
|
|
+ android.add(androidJson.getBigDecimal("youMengactivationCost"));
|
|
|
|
+ android.add(androidJson.getBigDecimal("tdActivationCost"));
|
|
|
|
+ android.add(androidJson.getBigDecimal("actionCost"));
|
|
|
|
+ android.add(androidJson.getBigDecimal("clickCost"));
|
|
|
|
+ android.add(androidJson.getString("actionRatio"));
|
|
|
|
+ android.add(androidJson.getString("eventJinJianAppRatio"));
|
|
|
|
+ android.add(androidJson.getString("activationRatio"));
|
|
|
|
+ androidList.add(android);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ JSONObject iosJson = dailyReport.getJSONObject("ios");
|
|
|
|
+
|
|
|
|
+ // 安卓相关
|
|
|
|
+ List<List<Object>> iosList = new ArrayList<>();
|
|
|
|
+ if (!Check.isNull(iosJson)) {
|
|
|
|
+ List<Object> ios = new ArrayList();
|
|
|
|
+ ios.add(iosJson.getString("agent"));
|
|
|
|
+ ios.add(iosJson.getString("media"));
|
|
|
|
+ ios.add(iosJson.getString("systemType"));
|
|
|
|
+ ios.add(iosJson.getString("statDate"));
|
|
|
|
+ ios.add(iosJson.getBigDecimal("charge"));
|
|
|
|
+ ios.add(iosJson.getBigDecimal("cashCost"));
|
|
|
|
+ ios.add(iosJson.getLong("photoShow"));
|
|
|
|
+ ios.add(iosJson.getLong("photoClick"));
|
|
|
|
+ ios.add(iosJson.getString("clickRate"));
|
|
|
|
+ ios.add(iosJson.getString("impression1kCost"));
|
|
|
|
+ ios.add(iosJson.getLong("bclick"));
|
|
|
|
+ ios.add(iosJson.getString("eventJinJianApp"));
|
|
|
|
+ ios.add(iosJson.getLong("activation"));
|
|
|
|
+ ios.add(iosJson.getLong("youMengactivation"));
|
|
|
|
+ ios.add(iosJson.getLong("tdActivation"));
|
|
|
|
+ ios.add(iosJson.getBigDecimal("activationCost"));
|
|
|
|
+ ios.add(iosJson.getBigDecimal("youMengactivationCost"));
|
|
|
|
+ ios.add(iosJson.getBigDecimal("tdActivationCost"));
|
|
|
|
+ ios.add(iosJson.getBigDecimal("actionCost"));
|
|
|
|
+ ios.add(iosJson.getBigDecimal("clickCost"));
|
|
|
|
+ ios.add(iosJson.getString("actionRatio"));
|
|
|
|
+ ios.add(iosJson.getString("eventJinJianAppRatio"));
|
|
|
|
+ ios.add(iosJson.getString("activationRatio"));
|
|
|
|
+ iosList.add(ios);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 应用直达
|
|
|
|
+ JSONObject directApplicationJson = dailyReport.getJSONObject("directApplication");
|
|
|
|
+ List<List<Object>> directApplicationList = new ArrayList<>();
|
|
|
|
+ if (!Check.isNull(directApplicationJson)) {
|
|
|
|
+ List<Object> directApplication = new ArrayList();
|
|
|
|
+ directApplication.add(directApplicationJson.getString("agent"));
|
|
|
|
+ directApplication.add(directApplicationJson.getString("media"));
|
|
|
|
+ directApplication.add(directApplicationJson.getString("systemType"));
|
|
|
|
+ directApplication.add(directApplicationJson.getString("statDate"));
|
|
|
|
+ directApplication.add(directApplicationJson.getBigDecimal("charge"));
|
|
|
|
+ directApplication.add(directApplicationJson.getBigDecimal("cashCost"));
|
|
|
|
+ directApplication.add(directApplicationJson.getLong("photoShow"));
|
|
|
|
+ directApplication.add(directApplicationJson.getLong("photoClick"));
|
|
|
|
+ directApplication.add(directApplicationJson.getString("clickRate"));
|
|
|
|
+ directApplication.add(directApplicationJson.getString("impression1kCost"));
|
|
|
|
+ directApplication.add(directApplicationJson.getLong("bclick"));
|
|
|
|
+ directApplication.add(directApplicationJson.getString("eventJinJianApp"));
|
|
|
|
+ directApplication.add(directApplicationJson.getLong("activation"));
|
|
|
|
+ directApplication.add(directApplicationJson.getLong("youMengactivation"));
|
|
|
|
+ directApplication.add(directApplicationJson.getLong("tdActivation"));
|
|
|
|
+ directApplication.add(directApplicationJson.getBigDecimal("activationCost"));
|
|
|
|
+ directApplication.add(directApplicationJson.getBigDecimal("youMengactivationCost"));
|
|
|
|
+ directApplication.add(directApplicationJson.getBigDecimal("tdActivationCost"));
|
|
|
|
+ directApplication.add(directApplicationJson.getBigDecimal("actionCost"));
|
|
|
|
+ directApplication.add(directApplicationJson.getBigDecimal("clickCost"));
|
|
|
|
+ directApplication.add(directApplicationJson.getString("actionRatio"));
|
|
|
|
+ directApplication.add(directApplicationJson.getString("eventJinJianAppRatio"));
|
|
|
|
+ directApplication.add(directApplicationJson.getString("activationRatio"));
|
|
|
|
+ directApplicationList.add(directApplication);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 应用直达
|
|
|
|
+ JSONArray channelSubcontractingArr = dailyReport.getJSONArray("channelSubcontracting");
|
|
|
|
+ List<List<Object>> channelSubcontractingList = new ArrayList<>();
|
|
|
|
+ if (!Check.isNull(channelSubcontractingArr)) {
|
|
|
|
+ for (int i = 0; i < channelSubcontractingArr.size(); i++) {
|
|
|
|
+ JSONObject channelSubcontractingJson = channelSubcontractingArr.getJSONObject(i);
|
|
|
|
+ List<Object> channelSubcontracting = new ArrayList();
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getString("agent"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getString("media"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getString("systemType"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getString("statDate"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getString("campaignName"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getBigDecimal("charge"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getBigDecimal("cashCost"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getLong("photoShow"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getLong("photoClick"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getString("clickRate"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getString("impression1kCost"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getLong("bclick"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getString("eventJinJianApp"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getLong("activation"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getLong("youMengactivation"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getLong("tdActivation"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getBigDecimal("activationCost"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getBigDecimal("youMengactivationCost"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getBigDecimal("tdActivationCost"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getBigDecimal("actionCost"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getBigDecimal("clickCost"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getString("actionRatio"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getString("eventJinJianAppRatio"));
|
|
|
|
+ channelSubcontracting.add(channelSubcontractingJson.getString("activationRatio"));
|
|
|
|
+ channelSubcontractingList.add(channelSubcontracting);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String[] iosHeaders = {"代理商", "媒体", "设备", "日期", "账面花费", "现金花费", "曝光", "点击", "点击率", "千次曝光花费", "行为量", "下载完成数", "账户激活量", "友盟激活量", "TD激活量", "账户激活成本", "友盟激活成本", "TD激活成本", "平均行为单价", "平均点击单价", "行为率", "下载完成行为率", "下载完成激活率"};
|
|
|
|
+ String[] androidHeaders = {"代理商", "媒体", "设备", "日期", "账面花费", "现金花费", "曝光", "点击", "点击率", "千次曝光花费", "行为量", "下载完成数", "账户激活量", "友盟激活量", "TD激活量", "账户激活成本", "友盟激活成本", "TD激活成本", "平均行为单价", "平均点击单价", "行为率", "下载完成行为率", "下载完成激活率"};
|
|
|
|
+ String[] directApplicationHeaders = {"代理商", "媒体", "设备", "日期", "账面花费", "现金花费", "曝光", "点击", "点击率", "千次曝光花费", "行为量", "下载完成数", "账户激活量", "友盟激活量", "TD激活量", "账户激活成本", "友盟激活成本", "TD激活成本", "平均行为单价", "平均点击单价", "行为率", "下载完成行为率", "下载完成激活率"};
|
|
|
|
+ String[] channelSubcontractingHeaders = {"代理商", "媒体", "设备", "日期", "渠道包", "账面花费", "现金花费", "曝光", "点击", "点击率", "千次曝光花费", "行为量", "下载完成数", "账户激活量", "友盟激活量", "TD激活量", "账户激活成本", "友盟激活成本", "TD激活成本", "平均行为单价", "平均点击单价", "行为率", "下载完成行为率", "下载完成激活率"};
|
|
|
|
+
|
|
|
|
+ OutputStream os = response.getOutputStream();
|
|
|
|
+ ExportExcelUtils eeu = new ExportExcelUtils();
|
|
|
|
+ XSSFWorkbook workbook = new XSSFWorkbook();
|
|
|
|
+ eeu.exportExcel(workbook, 0, "安卓汇总", androidHeaders, androidList);
|
|
|
|
+ eeu.exportExcel(workbook, 1, "ios汇总", iosHeaders, iosList);
|
|
|
|
+ eeu.exportExcel(workbook, 2, "应用直达", directApplicationHeaders, directApplicationList);
|
|
|
|
+ eeu.exportExcel(workbook, 3, "渠道包分包", channelSubcontractingHeaders, channelSubcontractingList);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ this.setResponseHeader(response, "易车日报.xls");
|
|
|
|
+ workbook.write(os);
|
|
|
|
+ os.flush();
|
|
|
|
+ os.close();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
//发送响应流方法
|
|
//发送响应流方法
|
|
public void setResponseHeader(HttpServletResponse response, String fileName) {
|
|
public void setResponseHeader(HttpServletResponse response, String fileName) {
|
|
try {
|
|
try {
|