wangyunpeng hace 1 semana
padre
commit
4dd2b811b6

+ 36 - 0
api-module/src/main/java/com/tzld/piaoquan/api/model/vo/contentplatform/GzhDatastatItemExportVO.java

@@ -0,0 +1,36 @@
+package com.tzld.piaoquan.api.model.vo.contentplatform;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ColumnWidth(20)//宽
+@HeadRowHeight(50)//表头高
+@ContentRowHeight(25)//正文行高
+public class GzhDatastatItemExportVO {
+
+    @ExcelProperty("日期")
+    private String dateStr;
+
+    @ExcelProperty("公众号名称")
+    private String name;
+
+    @ExcelProperty("新增粉丝数")
+    private Integer fansIncreaseCount;
+
+    @ExcelProperty("小程序访问人数")
+    private Integer firstLevel;
+
+    @ExcelProperty("打开率")
+    private Double openRate;
+
+    @ExcelProperty("传播得分")
+    private Double score;
+}

+ 33 - 0
api-module/src/main/java/com/tzld/piaoquan/api/model/vo/contentplatform/QwDatastatItemExportVO.java

@@ -0,0 +1,33 @@
+package com.tzld.piaoquan.api.model.vo.contentplatform;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ColumnWidth(20)//宽
+@HeadRowHeight(50)//表头高
+@ContentRowHeight(25)//正文行高
+public class QwDatastatItemExportVO {
+
+    @ExcelProperty("日期")
+    private String dateStr;
+
+    @ExcelProperty("小程序访问人数")
+    private Integer firstLevel;
+
+    @ExcelProperty("传播得分")
+    private Double score;
+
+    @ExcelProperty("视频标题")
+    private String title;
+
+    @ExcelProperty("视频id")
+    private Long videoId;
+}

+ 60 - 3
api-module/src/main/java/com/tzld/piaoquan/api/service/contentplatform/impl/ContentPlatformDatastatServiceImpl.java

@@ -1,20 +1,31 @@
 package com.tzld.piaoquan.api.service.contentplatform.impl;
 
+import com.alibaba.excel.EasyExcel;
+import com.stuuudy.commons.external.filestorage.enums.EnumFileType;
+import com.stuuudy.commons.external.filestorage.enums.EnumPublicBuckets;
 import com.tzld.piaoquan.api.dao.mapper.contentplatform.ext.ContentPlatformDataStatMapperExt;
 import com.tzld.piaoquan.api.model.config.LoginUserContext;
 import com.tzld.piaoquan.api.model.param.contentplatform.GzhDatastatListParam;
 import com.tzld.piaoquan.api.model.param.contentplatform.QwDatastatListParam;
 import com.tzld.piaoquan.api.model.po.contentplatform.*;
+import com.tzld.piaoquan.api.model.vo.contentplatform.GzhDatastatItemExportVO;
 import com.tzld.piaoquan.api.model.vo.contentplatform.GzhDatastatItemVO;
+import com.tzld.piaoquan.api.model.vo.contentplatform.QwDatastatItemExportVO;
 import com.tzld.piaoquan.api.model.vo.contentplatform.QwDatastatItemVO;
 import com.tzld.piaoquan.api.service.contentplatform.ContentPlatformCooperateAccountService;
 import com.tzld.piaoquan.api.service.contentplatform.ContentPlatformDatastatService;
 import com.tzld.piaoquan.api.service.contentplatform.ContentPlatformPlanService;
+import com.tzld.piaoquan.api.util.AliOssFileTool;
+import com.tzld.piaoquan.api.util.CdnUtil;
 import com.tzld.piaoquan.growth.common.utils.page.Page;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -94,7 +105,9 @@ public class ContentPlatformDatastatServiceImpl implements ContentPlatformDatast
             vo.setFirstLevel(datastat.getFirstLevelCount());
             vo.setScore(datastat.getScore());
             if (Objects.nonNull(vo.getFansIncreaseCount()) && vo.getFansIncreaseCount() > 0) {
-                vo.setOpenRate(vo.getFirstLevel() / (double) vo.getFansIncreaseCount());
+                BigDecimal num = BigDecimal.valueOf(vo.getFirstLevel() / (double) vo.getFansIncreaseCount());
+                BigDecimal rounded = num.setScale(3, RoundingMode.HALF_UP);
+                vo.setOpenRate(rounded.doubleValue());
             }
             result.add(vo);
         }
@@ -213,11 +226,55 @@ public class ContentPlatformDatastatServiceImpl implements ContentPlatformDatast
 
     @Override
     public String gzhDatastatExport(GzhDatastatListParam param) {
-        return null;
+        param.setPageNum(1);
+        param.setPageSize(10000);
+        Page<GzhDatastatItemVO> pageResult = gzhDatastatList(param);
+        List<GzhDatastatItemVO> dataList = pageResult.getObjs();
+        return generateGzhDatastatExcelFile(dataList);
+    }
+
+    public String generateGzhDatastatExcelFile(List<GzhDatastatItemVO> dataList) {
+        ArrayList<GzhDatastatItemExportVO> list = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(dataList)) {
+            for (GzhDatastatItemVO data : dataList) {
+                list.add(new GzhDatastatItemExportVO(data.getDateStr(), data.getName(),
+                        data.getFansIncreaseCount(), data.getFirstLevel(),  data.getOpenRate(), data.getScore()));
+            }
+        } else {
+            list.add(new GzhDatastatItemExportVO());
+        }
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        EasyExcel.write(out, GzhDatastatItemExportVO.class).sheet("").doWrite(list);
+        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(out.toByteArray());
+        String fileName = "公众号数据统计_" + System.currentTimeMillis() + ".xls";
+        AliOssFileTool.saveInPublicReturnHost(byteArrayInputStream, EnumPublicBuckets.PUBBUCKET, fileName, EnumFileType.TEMP_PICTURE);
+        return CdnUtil.DOWNLOAD_CDN_URL_HOST_PICTURE + fileName;
     }
 
     @Override
     public String qwDatastatExport(QwDatastatListParam param) {
-        return null;
+        param.setPageNum(1);
+        param.setPageSize(10000);
+        Page<QwDatastatItemVO> pageResult = qwDatastatList(param);
+        List<QwDatastatItemVO> dataList = pageResult.getObjs();
+        return generateQwDatastatExcelFile(dataList);
+    }
+
+    public String generateQwDatastatExcelFile(List<QwDatastatItemVO> dataList) {
+        ArrayList<QwDatastatItemExportVO> list = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(dataList)) {
+            for (QwDatastatItemVO data : dataList) {
+                list.add(new QwDatastatItemExportVO(data.getDateStr(), data.getFirstLevel(),
+                        data.getScore(), data.getTitle(),  data.getVideoId()));
+            }
+        } else {
+            list.add(new QwDatastatItemExportVO());
+        }
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        EasyExcel.write(out, QwDatastatItemExportVO.class).sheet("").doWrite(list);
+        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(out.toByteArray());
+        String fileName = "企微数据统计_" + System.currentTimeMillis() + ".xls";
+        AliOssFileTool.saveInPublicReturnHost(byteArrayInputStream, EnumPublicBuckets.PUBBUCKET, fileName, EnumFileType.TEMP_PICTURE);
+        return CdnUtil.DOWNLOAD_CDN_URL_HOST_PICTURE + fileName;
     }
 }

+ 6 - 0
pom.xml

@@ -95,6 +95,12 @@
             <artifactId>druid</artifactId>
             <version>1.1.23</version>
         </dependency>
+        <!--easyexcel-->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>3.0.5</version>
+        </dependency>
 
         <dependency>
             <groupId>com.baomidou</groupId>