yumeng před 5 roky
rodič
revize
cbe7c9ac2b

+ 23 - 4
module-common/src/main/java/cn/com/ctop/common/module/utils/ExportExcelUtils.java

@@ -6,6 +6,7 @@ import org.apache.poi.hssf.usermodel.HSSFRichTextString;
 import org.apache.poi.hssf.util.HSSFColor;
 import org.apache.poi.xssf.usermodel.*;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 public class ExportExcelUtils {
@@ -24,7 +25,7 @@ public class ExportExcelUtils {
      * @author: evan @ 2014-01-09
      */
     public void exportExcel(XSSFWorkbook workbook, int sheetNum,
-                            String sheetTitle, String[] headers, List<List<String>> result) throws Exception {
+                            String sheetTitle, String[] headers, List<List<Object>> result) throws Exception {
         // 生成一个表格
         XSSFSheet sheet = workbook.createSheet();
         workbook.setSheetName(sheetNum, sheetTitle);
@@ -63,12 +64,29 @@ public class ExportExcelUtils {
         // 遍历集合数据,产生数据行
         if (result != null) {
             int index = 1;
-            for (List<String> m : result) {
+            for (List<Object> m : result) {
                 row = sheet.createRow(index);
                 int cellIndex = 0;
-                for (String str : m) {
+                for (Object obj : m) {
                     XSSFCell cell = row.createCell((short) cellIndex);
-                    cell.setCellValue(str);
+                    if (!Check.isNull(obj)) {
+                        if (obj instanceof String) {
+                            cell.setCellValue((String) obj);
+                        } else if (obj instanceof Double) {
+                            cell.setCellValue((Double) obj);
+                        } else if (obj instanceof BigDecimal) {
+                            BigDecimal bigDecimal = (BigDecimal) obj;
+                            cell.setCellValue(bigDecimal.doubleValue());
+                        } else if (obj instanceof Long) {
+                            Long aLong = Long.valueOf(String.valueOf(obj));
+                            cell.setCellValue(aLong.doubleValue());
+                        } else {
+                            cell.setCellValue(obj.toString());
+                        }
+                    } else {
+                        cell.setCellValue(0);
+                    }
+
                     cellIndex++;
                 }
                 index++;
@@ -76,4 +94,5 @@ public class ExportExcelUtils {
         }
     }
 
+
 }

+ 21 - 0
module-common/src/main/java/cn/com/ctop/common/module/utils/RateUtil.java

@@ -0,0 +1,21 @@
+package cn.com.ctop.common.module.utils;
+
+import java.math.BigDecimal;
+
+public class RateUtil {
+
+    public static String getRate(BigDecimal value) {
+        if (Check.isNull(value)) {
+            return 0 + "%";
+        }
+        if (value.compareTo(new BigDecimal(0)) == 0) {
+            return 0 + "%";
+        }
+
+        BigDecimal multiply = value.multiply(new BigDecimal(100));
+        return multiply + "%";
+
+
+    }
+
+}

+ 39 - 39
module-report/src/main/java/cn/com/ctop/bytedance/controller/DailyReportController.java

@@ -6,6 +6,7 @@ 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 cn.com.ctop.common.module.utils.RateUtil;
 import com.alibaba.fastjson.JSONObject;
 import io.swagger.annotations.Api;
 import lombok.extern.slf4j.Slf4j;
@@ -49,7 +50,6 @@ public class DailyReportController {
 
     }
 
-
     /**
      * 导出报表
      *
@@ -60,60 +60,60 @@ public class DailyReportController {
     public void export(HttpServletRequest request, HttpServletResponse response, @RequestBody JSONObject requestJson) throws Exception {
         DailyReportVO dailyReport = dailyReportService.getDailyReport(requestJson);
 
-        List<List<String>> accountData = new ArrayList<>();
+        List<List<Object>> accountData = new ArrayList<>();
         if (!Check.isNull(dailyReport)) {
             DailyAccountReportVO dailyAccountReport = dailyReport.getDailyAccountReport();
             if (!Check.isNull(dailyAccountReport)) {
-                List rowData = new ArrayList();
+                List<Object> 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())); // 折后转化成本
+                rowData.add(dailyAccountReport.getCost()); // 消耗
+                rowData.add(dailyAccountReport.getContractRebateRealCharged()); // 激励花费
+                rowData.add(dailyAccountReport.getActualCost()); // 实际花费
+                rowData.add(dailyAccountReport.getPhotoShow()); // 展示数
+                rowData.add(dailyAccountReport.getPhotoClick()); // 点击数
+
+                rowData.add(RateUtil.getRate(dailyAccountReport.getPhotoClickRatio())); // 点击率
+                rowData.add(dailyAccountReport.getPhotoClickCost()); // 平均点击花费
+                rowData.add(dailyAccountReport.getBclick()); // 行为数
+                rowData.add(RateUtil.getRate(dailyAccountReport.getActionRatio())); // 行为率
+                rowData.add(dailyAccountReport.getImpression1kCost()); // 平均千次展现花费
+                rowData.add(dailyAccountReport.getConversions()); // 转化数
+                rowData.add(dailyAccountReport.getConversionPrice()); // 转化单价
+                rowData.add(RateUtil.getRate(dailyAccountReport.getConversionRate())); // 转化率
+                rowData.add(dailyAccountReport.getDiscountConversionPrice()); // 折后转化成本
                 accountData.add(rowData);
             }
         }
 
-        List<List<String>> group = new ArrayList<>();
+        List<List<Object>> 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()));
+                List<Object> dailyGroup = new ArrayList();
+                dailyGroup.add(groupReportVO.getAccountId());
+                dailyGroup.add(groupReportVO.getAuthName());
+                dailyGroup.add(groupReportVO.getStatDate());
+                dailyGroup.add(groupReportVO.getCampaignName());
+                dailyGroup.add(groupReportVO.getUnitName());
+                dailyGroup.add(groupReportVO.getCost()); // 花费
+                dailyGroup.add(groupReportVO.getDisCountCost()); // 折后花费
+                dailyGroup.add(groupReportVO.getPhotoShow()); // 展示数
+                dailyGroup.add(groupReportVO.getPhotoClick()); // 点击数
+                dailyGroup.add(groupReportVO.getBclick());   // 行为数
+                dailyGroup.add(RateUtil.getRate(groupReportVO.getActionRatio())); // 行为率
+                dailyGroup.add(groupReportVO.getImpression1kCost()); // 平均千次展现花费
+                dailyGroup.add(groupReportVO.getPhotoClickCost()); // 平均点击花费
+                dailyGroup.add(groupReportVO.getConversions()); // 转化数
+                dailyGroup.add(groupReportVO.getConversionPrice()); // 转化单价
+                dailyGroup.add(groupReportVO.getClickConversionRate()); // 点击转化率
+                dailyGroup.add(groupReportVO.getDiscountConversionPrice()); // 折后转化成本
                 group.add(dailyGroup);
             }
 
         }
 
-
-        String[] accountHeaders = {"时间", "消耗", "激励花费", "实际消耗", "展示数", "点击数", "点击率", "平均点击花费", "行为数", "行为率", "平均千次展现花费", "转化数", "转化单价", "转化率", "折后转化成本"};
-        String[] groupHeaders = {"账号", "账号名称", "日期", "计划名称", "广告组名称", "消耗", "折后消耗", "展示数", "点击数", "行为数", "行为率", "平均千次展示花费", "平均点击花费", "转化数", "转化单价", "点击转化率", "折后转化成本"};
+        String[] accountHeaders = {"时间", "消耗(元)", "激励花费(元)", "实际消耗(元)", "展示数", "点击数", "点击率", "平均点击花费(元)", "行为数", "行为率", "平均千次展现花费(元)", "转化数(元)", "转化单价", "转化率", "折后转化成本(元)"};
+        String[] groupHeaders = {"账号", "账号名称", "日期", "计划名称", "广告组名称", "消耗(元)", "折后消耗(元)", "展示数", "点击数", "行为数", "行为率", "平均千次展示花费(元)", "平均点击花费(元)", "转化数", "转化单价(元)", "点击转化率", "折后转化成本(元)"};
         OutputStream os = response.getOutputStream();
         ExportExcelUtils eeu = new ExportExcelUtils();
         XSSFWorkbook workbook = new XSSFWorkbook();

+ 0 - 73
module-report/src/main/java/cn/com/ctop/bytedance/controller/ExcelExportUtil.java

@@ -1,73 +0,0 @@
-package cn.com.ctop.bytedance.controller;
-
-import cn.com.ctop.bytedance.entity.ExcelExp;
-import org.apache.poi.hssf.usermodel.*;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.List;
-
-public class ExcelExportUtil {
-    public static void exportManySheetExcel(String file, List<ExcelExp> mysheets) {
-
-        HSSFWorkbook wb = new HSSFWorkbook();//创建工作薄
-        List<ExcelExp> sheets = mysheets;
-
-        //表头样式
-        HSSFCellStyle style = wb.createCellStyle();
-        style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
-        //字体样式
-        HSSFFont fontStyle = wb.createFont();
-        fontStyle.setFontName("微软雅黑");
-        fontStyle.setFontHeightInPoints((short) 12);
-        fontStyle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
-        style.setFont(fontStyle);
-
-        for (ExcelExp excel : sheets) {
-            //新建一个sheet
-            HSSFSheet sheet = wb.createSheet(excel.getFileName());//获取该sheet名称
-
-            String[] handers = excel.getHanders();//获取sheet的标题名
-            HSSFRow rowFirst = sheet.createRow(0);//第一个sheet的第一行为标题
-            //写标题
-            for (int i = 0; i < handers.length; i++) {
-                //获取第一行的每个单元格
-                HSSFCell cell = rowFirst.createCell(i);
-                //往单元格里写数据
-                cell.setCellValue(handers[i]);
-                cell.setCellStyle(style); //加样式
-                sheet.setColumnWidth(i, 4000); //设置每列的列宽
-            }
-
-            //写数据集
-            List<String[]> dataset = excel.getDataset();
-            for (int i = 0; i < dataset.size(); i++) {
-                String[] data = dataset.get(i);//获取该对象
-
-                //创建数据行
-                HSSFRow row = sheet.createRow(i + 1);
-
-                for (int j = 0; j < data.length; j++) {
-                    //设置对应单元格的值
-                    row.createCell(j).setCellValue(data[j]);
-                }
-            }
-        }
-
-        // 写文件
-        try {
-
-            FileOutputStream out = new FileOutputStream(new File(file));
-            out.flush();
-            wb.write(out);
-            out.close();
-        } catch (FileNotFoundException e) {
-            e.printStackTrace();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-}

+ 1 - 3
module-report/src/main/java/cn/com/ctop/bytedance/service/impl/DailyReportServiceImpl.java

@@ -38,8 +38,6 @@ public class DailyReportServiceImpl implements IDailyReportService {
     @Override
     public DailyReportVO getDailyReport(JSONObject requestJson) {
         try {
-
-            System.err.println(requestJson);
             log.info("日报开始统计");
             long startTime = System.currentTimeMillis();
 
@@ -53,7 +51,7 @@ public class DailyReportServiceImpl implements IDailyReportService {
             if (!Check.isNull(dailyAccountReport)) {
                 BigDecimal cost = dailyAccountReport.getCost();
                 BigDecimal contractRebateRealCharged = dailyAccountReport.getContractRebateRealCharged();
-                if (Check.isNull(cost)) {
+                if (!Check.isNull(cost)) {
                     BigDecimal actualCost = ((cost.subtract(contractRebateRealCharged)).divide(discount, 2, RoundingMode.HALF_UP));
                     dailyAccountReport.setActualCost(actualCost);
                 }