Browse Source

媒介报表

hcst_sunzhen 4 years ago
parent
commit
762203d068

+ 3 - 31
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MediaReportCtrl.java

@@ -82,7 +82,7 @@ public class MediaReportCtrl {
         Result<List<Product>> result = new Result();
 
         try {
-            List<Product> allProductList = mediaReportService.getAllProductList(requestBody.getInteger("mediaType"));
+            List<Product> allProductList = mediaReportService.getAllProductList(requestBody.getInteger("mediaType"), requestBody.getString("advertiserId"));
             result.setResult(allProductList);
         }catch (Exception e){
             log.error(e.getMessage());
@@ -190,24 +190,6 @@ public class MediaReportCtrl {
         return result;
     }
 
-
-    //@PostMapping("/{pageNum}/{pageSize}")
-    //public Result<PageInfo<JSONObject>> toutiaoMediaReport(@PathVariable int pageNum,
-    //                                              @PathVariable int pageSize,
-    //                                              @RequestBody JSONObject requestBody){
-    //    Result<PageInfo<JSONObject>> result = new Result<>();
-    //    if(requestBody.isEmpty()){
-    //        log.error("requestBody is null");
-    //        result.setSuccess(false);
-    //        return result;
-    //    }
-    //    PageInfo<JSONObject> pageInfo =mediaReportService.toutiaoMediaReport(pageNum ,pageSize,requestBody);
-    //
-    //    result.setResult(pageInfo);
-    //    result.setSuccess(true);
-    //    return result;
-    //}
-
     /**
      *  导出数据
      * @param requestBody
@@ -215,15 +197,9 @@ public class MediaReportCtrl {
      * @param response
      */
     @PostMapping("/exportMediaReportExcel")
-    public Result exportMediaReportExcel(@RequestBody JSONObject requestBody,
+    public void exportMediaReportExcel(@RequestBody JSONObject requestBody,
                                HttpServletRequest request,
                                HttpServletResponse response) {
-        Result result = new Result();
-        if(StringUtils.isBlank(requestBody.getString("todayDate")) || requestBody.getInteger("mediaType") ==null){
-            result.setSuccess(false);
-            result.setMessage("参数有误");
-        }
-
         String today = requestBody.getString("todayDate");
         Date todayDate = DateUtils.parseDate(today, "yyyy-MM-dd");
         Date yesterdayDate = DateUtils.addDay(todayDate, -1);
@@ -235,10 +211,8 @@ public class MediaReportCtrl {
         excelData.forEach(data->{
             List<Object> temp= new ArrayList<>();
             temp.add(data.get("mediaType")==null?"-":(data.getInteger("mediaType")==1?"头条":"快手"));
-            //temp.add(data.get("advertiserId")==null?"-":data.get("advertiserId"));
             temp.add(data.get("advertiserName")==null?"-":data.get("advertiserName"));
             temp.add(data.get("productName")==null?"-":data.get("productName"));
-            //temp.add(data.get("operatorManger")==null?"-":data.get("operatorManger"));
             temp.add(data.get("operator")==null?"-":data.get("operator"));
             temp.add(data.get("sale")==null?"-":data.get("sale"));
             temp.add(data.get("todayCost"));
@@ -252,17 +226,15 @@ public class MediaReportCtrl {
             OutputStream os = response.getOutputStream();
             ExportExcelUtils eeu = new ExportExcelUtils();
             XSSFWorkbook workbook = new XSSFWorkbook();
-            eeu.exportExcel(workbook, 0, "媒介报表", headers, excelList);
+            eeu.exportExcelForMediaReport(workbook, 0, "媒介报表", headers, excelList);
             HttpUtils.setResponseHeader(response, "媒介报表.xlsx");
             workbook.write(os);
             os.flush();
             os.close();
         }catch (IOException e){
             log.error(e.getMessage());
-            result.setSuccess(false);
         }
 
-        return result;
     }
 
 

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/MediaReportMapper.java

@@ -23,6 +23,6 @@ public interface MediaReportMapper {
     //头条媒介报表
     List<JSONObject> toutiaoMediaReport(@Param("today") String today ,@Param("yesterday") String yesterday, @Param("advertiserId") String advertiserId, @Param("companyId")String companyId, @Param("productId")Long productId);
 
-    List<Product> getAllProductList(@Param("mediaType")Integer mediaType);
+    List<Product> getAllProductList(@Param("mediaType")Integer mediaType, @Param("advertiserId")String advertiserId);
 
 }

+ 20 - 8
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/mapper/xml/MediaReportMapper.xml

@@ -273,9 +273,9 @@
         productName,
         sale,
         operator,
-        todayCost,
-        yesterdayCost,
-        ( todayCost - yesterdayCost ) AS diffCost,
+        format(todayCost,3) as todayCost,
+        format(yesterdayCost,3) as yesterdayCost,
+        format(( todayCost - yesterdayCost ),3) AS diffCost,
         companyName
         FROM
                 (
@@ -343,7 +343,11 @@
                                     AND report.stat_date = #{yesterday}
                              )
                         ,0) AS yesterdayCost,
-                    d.company_name AS companyName
+                        case
+                            when d.company_id = 'd57fecdcf7a94d009736d9c850731582' then '华北'
+                            when d.company_id = '6608ed13c0dd42de93c790dbdf124234' then '华南'
+                            when d.company_id = '4b10089775c040119e139087517aed88' then '华东'
+                            else '-' end AS companyName
                     FROM
                         ctop_product a
                         LEFT JOIN ctop_product_project_map b ON a.id = b.product_id
@@ -351,6 +355,7 @@
                         LEFT JOIN user_company d ON c.user_id = d.user_id
                     WHERE
                         d.company_id IS NOT NULL
+                        AND a.product_status = 1
                         AND a.media_id = 2
                         <if test="advertiserId != null and advertiserId != ''">
                         AND a.advertiser_id = #{advertiserId}
@@ -376,9 +381,9 @@
         productName,
         sale,
         operator,
-        todayCost,
-        yesterdayCost,
-        ( todayCost - yesterdayCost ) AS diffCost,
+        format(todayCost,2) as todayCost,
+        format(yesterdayCost,2) as yesterdayCost,
+        format(( todayCost - yesterdayCost ),2) AS diffCost,
         companyName
         FROM
             (
@@ -446,7 +451,10 @@
                             )
                             AND date_format( report.stat_datetime, '%Y-%m-%d' ) = #{yesterday}
                             ),0) AS yesterdayCost,
-                    d.company_name AS companyName
+                    case when d.company_id = 'd57fecdcf7a94d009736d9c850731582' then '华北'
+                         when d.company_id = '6608ed13c0dd42de93c790dbdf124234' then '华南'
+                         when d.company_id = '4b10089775c040119e139087517aed88' then '华东'
+                         else '-' end AS companyName
                 FROM
                     ctop_product a
                     LEFT JOIN ctop_product_project_map b ON a.id = b.product_id
@@ -455,6 +463,7 @@
                 WHERE
                     d.company_id IS NOT NULL
                     AND a.media_id = 1
+                    AND a.product_status = 1
                     <if test="advertiserId != null and advertiserId != ''">
                         AND a.advertiser_id = #{advertiserId}
                     </if>
@@ -484,6 +493,9 @@
         <if test="mediaType != null">
             and media_id = #{mediaType}
         </if>
+        <if test="advertiserId != null">
+            and advertiser_id = #{advertiserId}
+        </if>
     </select>
 
 </mapper>

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/IMediaReportService.java

@@ -12,7 +12,7 @@ public interface IMediaReportService {
 
     List<JSONObject> queryProjectNameByAdvertiserId(String advertiserId);
 
-    List<Product> getAllProductList(Integer mediaType);
+    List<Product> getAllProductList(Integer mediaType, String advertiserId);
 
     PageInfo<JSONObject> queryReportByCondition(int pageNo,int pageSize,JSONObject requestBody);
 

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/service/impl/MediaReportServiceImpl.java

@@ -30,8 +30,8 @@ public class MediaReportServiceImpl implements IMediaReportService {
     }
 
     @Override
-    public List<Product> getAllProductList(Integer mediaType){
-        return mediaReportMapper.getAllProductList(mediaType);
+    public List<Product> getAllProductList(Integer mediaType, String advertiserId){
+        return mediaReportMapper.getAllProductList(mediaType, advertiserId);
     }
 
 

+ 120 - 0
module-common/src/main/java/cn/com/ctop/common/module/utils/ExportExcelUtils.java

@@ -91,4 +91,124 @@ public class ExportExcelUtils {
             }
         }
     }
+
+    public void exportExcelForMediaReport(XSSFWorkbook workbook, int sheetNum,
+                            String sheetTitle, String[] headers, List<List<Object>> result) {
+        // 生成一个表格
+        XSSFSheet sheet = workbook.createSheet();
+        workbook.setSheetName(sheetNum, sheetTitle);
+        // 设置表格默认列宽度为20个字节
+        sheet.setDefaultColumnWidth((short) 20);
+        sheet.setColumnWidth(0, 15 * 256);
+        sheet.setColumnWidth(1, 40 * 256);
+        sheet.setColumnWidth(2, 30 * 256);
+        sheet.setColumnWidth(3, 35 * 256);
+        sheet.setColumnWidth(4, 20 * 256);
+        sheet.setColumnWidth(5, 20 * 256);
+        sheet.setColumnWidth(6, 20 * 256);
+        sheet.setColumnWidth(7, 20 * 256);
+        sheet.setColumnWidth(8, 15 * 256);
+        // 生成一个样式
+        XSSFCellStyle style = workbook.createCellStyle();
+        // 设置这些样式
+        style.setFillForegroundColor(IndexedColors.PALE_BLUE.index);
+        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+        style.setBorderBottom(BorderStyle.THIN);
+        style.setBorderLeft(BorderStyle.THIN);
+        style.setBorderRight(BorderStyle.THIN);
+        style.setBorderTop(BorderStyle.THIN);
+        // style.setAlignment(HorizontalAlignment.CENTER);
+        style.setAlignment(HorizontalAlignment.CENTER);
+        style.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
+        // 生成一个字体
+        XSSFFont font = workbook.createFont();
+        font.setColor(IndexedColors.BLACK.index);
+        font.setFontHeightInPoints((short) 12);
+        font.setBold(true);
+        // 把字体应用到当前的样式
+        style.setFont(font);
+
+        // 指定当单元格内容显示不下时自动换行
+        style.setWrapText(true);
+
+        //同一行第一个cell
+        XSSFCellStyle cellStyle = workbook.createCellStyle();
+        cellStyle.setAlignment(HorizontalAlignment.CENTER);
+        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+        cellStyle.setWrapText(true);
+
+        // 产生表格标题行
+        XSSFRow row = sheet.createRow(0);
+        for (int i = 0; i < headers.length; i++) {
+            XSSFCell cell = row.createCell((short) i);
+            cell.setCellStyle(style);
+            XSSFRichTextString text = new XSSFRichTextString(headers[i]);
+            cell.setCellValue(text.toString());
+        }
+        // 遍历集合数据,产生数据行
+        if (result != null) {
+            int index = 1;
+            for (List<Object> m : result) {
+                row = sheet.createRow(index);
+                int cellIndex = 0;
+
+                for (Object obj : m) {
+                    XSSFCell cell = row.createCell((short) cellIndex);
+                    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) {
+                            cell.setCellValue(String.valueOf(obj));
+                        } else {
+                            cell.setCellValue(obj.toString());
+                        }
+                    } else {
+                        cell.setCellValue(0);
+                    }
+                    cell.setCellStyle(cellStyle);
+
+                    cellIndex++;
+                }
+                index++;
+            }
+        }
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 }