lyhzzz 2 years ago
parent
commit
ae8958f3f7

+ 6 - 0
pom.xml

@@ -142,6 +142,12 @@
             <version>2.0</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>3.1.0</version>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 66 - 1
src/main/java/com/fdkankan/tk/controller/DataCountController.java

@@ -1,7 +1,14 @@
 package com.fdkankan.tk.controller;
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.tk.common.PageInfo;
 import com.fdkankan.tk.common.ResultData;
+import com.fdkankan.tk.response.RoomListDataVo;
+import com.fdkankan.tk.response.UserMsgVo;
 import com.fdkankan.tk.service.DataCountService;
+import com.fdkankan.tk.service.IExcelService;
 import com.fdkankan.tk.service.IRoomService;
 import org.omg.CORBA.INTERNAL;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -9,6 +16,10 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
 @RestController
 public class DataCountController extends BaseController {
 
@@ -16,7 +27,8 @@ public class DataCountController extends BaseController {
     DataCountService dataCountService;
     @Autowired
     IRoomService roomService;
-
+    @Autowired
+    IExcelService excelService;
     /**
      * 整体概况
      */
@@ -74,6 +86,32 @@ public class DataCountController extends BaseController {
     }
 
     /**
+     */
+    @GetMapping("/exportRoomData")
+    public void exportRoomData(@RequestParam(required = false) String roomTitle,
+                       @RequestParam(required = false) String startTime,
+                       @RequestParam(required = false) String endTime,
+                       HttpServletRequest request,
+                       HttpServletResponse response) throws Exception {
+
+        PageInfo<RoomListDataVo> pageInfo = dataCountService.roomDataList(getToken(), roomTitle, startTime, endTime, 1, 9999);
+
+        ExcelWriter excelWriter = null;
+        try {
+            excelWriter = EasyExcel.write(response.getOutputStream(),RoomListDataVo.class).build();
+            excelService.commonExport(request,response,"房间数据", (List<?>) pageInfo.getList(),excelWriter);
+
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            if(excelWriter != null){
+                excelWriter.finish();
+            }
+        }
+
+    }
+
+    /**
      * 房间留言列表
      */
     @GetMapping("/roomMsgList")
@@ -85,4 +123,31 @@ public class DataCountController extends BaseController {
 
         return ResultData.ok(dataCountService.roomMsgList(getToken(),roomTitle,startTime,endTime,pageNum,pageSize));
     }
+
+
+    /**
+     */
+    @GetMapping("/exportRoomMsg")
+    public void exportRoomMsg(@RequestParam(required = false) String roomTitle,
+                            @RequestParam(required = false) String startTime,
+                            @RequestParam(required = false) String endTime,
+                            HttpServletRequest request,
+                            HttpServletResponse response) throws Exception {
+
+        PageInfo<UserMsgVo> pageInfo = dataCountService.roomMsgList(getToken(), roomTitle, startTime, endTime, 1, 9999);
+
+        ExcelWriter excelWriter = null;
+        try {
+            excelWriter = EasyExcel.write(response.getOutputStream(),UserMsgVo.class).build();
+            excelService.commonExport(request,response,"房间留言", (List<?>) pageInfo.getList(),excelWriter);
+
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            if(excelWriter != null){
+                excelWriter.finish();
+            }
+        }
+
+    }
 }

+ 19 - 0
src/main/java/com/fdkankan/tk/response/RoomListDataVo.java

@@ -1,16 +1,35 @@
 package com.fdkankan.tk.response;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
 import lombok.Data;
 
 import java.util.List;
 
 @Data
 public class RoomListDataVo {
+
+    @ExcelProperty("房间名称")
     private String roomTitle;
+
+    @ExcelProperty("相关场景")
     private List<String> sceneNameList;
+
+    @ExcelProperty("总观看时长(min)")
     private Long lookTime;
+
+    @ExcelProperty("创建时间")
     private String createTime;
+
+    @ExcelIgnore
     private Integer roomStatus;
+
+    @ExcelProperty("房间状态")
+    private String roomStatusStr;
+
+    @ExcelProperty("总观看人数")
     private Long lookManCount;
+
+    @ExcelProperty("分享总数")
     private Long shareCount;
 }

+ 23 - 0
src/main/java/com/fdkankan/tk/response/UserMsgVo.java

@@ -1,5 +1,7 @@
 package com.fdkankan.tk.response;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
 import lombok.Data;
 
 import java.util.Date;
@@ -7,16 +9,37 @@ import java.util.List;
 
 @Data
 public class UserMsgVo {
+
+    @ExcelProperty("昵称")
     private String nickName;
+
+    @ExcelIgnore
     private String wxUserId;
+
+    @ExcelProperty("手机号码")
     private String phoneNumber;
+
+    @ExcelIgnore
     private String roomId;
+
+    @ExcelProperty("房间名称")
     private String roomTitle;
+
+    @ExcelProperty("在线时长(min)")
     private Long onlineTime;
+
+    @ExcelProperty("初次进入房间")
     private Date firstInRoomTime;
+
+    @ExcelProperty("最后离开房间")
     private Date lastOutRoomTime;
+
+    @ExcelProperty("留言条数")
     private Long textCount;
+
+    @ExcelProperty("留言内容")
     private List<String> texts;
 
+    @ExcelIgnore
     private Integer liveId;
 }

+ 10 - 2
src/main/java/com/fdkankan/tk/service/DataCountService.java

@@ -1,6 +1,8 @@
 package com.fdkankan.tk.service;
 import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.tk.common.PageInfo;
 import com.fdkankan.tk.common.util.JwtUtil;
@@ -14,7 +16,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.GetMapping;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -171,7 +176,7 @@ public class DataCountService {
         return dataCounts;
     }
 
-    public Object roomDataList(String token,String roomTitle, String startTime, String endTime, Integer pageNum, Integer pageSize) {
+    public PageInfo<RoomListDataVo> roomDataList(String token,String roomTitle, String startTime, String endTime, Integer pageNum, Integer pageSize) {
         startTime = Dateutils.formatStartTime(startTime);
         endTime = Dateutils.formatEndTime(endTime);
 
@@ -256,7 +261,7 @@ public class DataCountService {
         return PageInfo.PageInfo(pageVo);
     }
 
-    public Object roomMsgList(String token ,String roomTitle, String startTime, String endTime, Integer pageNum, Integer pageSize) {
+    public PageInfo<UserMsgVo> roomMsgList(String token ,String roomTitle, String startTime, String endTime, Integer pageNum, Integer pageSize) {
         List<Room> roomList = roomService.getRoomByToken(token);
         List<String> roomIdsDb = roomList.stream().map(Room::getRoomId).collect(Collectors.toList());
         List<String> roomIds = roomIdsDb;
@@ -319,4 +324,7 @@ public class DataCountService {
         }
         return PageInfo.PageInfo(page);
     }
+
+
+
 }

+ 23 - 0
src/main/java/com/fdkankan/tk/service/IExcelService.java

@@ -0,0 +1,23 @@
+package com.fdkankan.tk.service;
+
+import com.alibaba.excel.ExcelWriter;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * <p>
+ * TODO
+ * </p>
+ *
+ * @author dengsixing
+ * @since 2022/6/6
+ **/
+public interface IExcelService {
+
+    void commonExport(HttpServletRequest request, HttpServletResponse response, String name, List<?> result, ExcelWriter excelWriter) throws Exception ;
+
+    void commonExport(HttpServletRequest request, HttpServletResponse response,String name,List<?> result,Class<?> clazz) throws Exception;
+
+}

+ 59 - 0
src/main/java/com/fdkankan/tk/service/impl/ExcelServiceImpl.java

@@ -0,0 +1,59 @@
+package com.fdkankan.tk.service.impl;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.fdkankan.tk.service.IExcelService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.net.URLEncoder;
+import java.util.List;
+
+/**
+ * <p>
+ * TODO
+ * </p>
+ *
+ * @author dengsixing
+ * @since 2022/6/6
+ **/
+@Service
+@Slf4j
+public class ExcelServiceImpl implements IExcelService {
+
+
+    public void commonExport(HttpServletRequest request, HttpServletResponse response,String name,List<?> result,ExcelWriter excelWriter) throws Exception {
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("utf-8");
+        String fileName = name  + ".xlsx";
+        fileName = URLEncoder.encode(fileName, "UTF-8");
+        response.setHeader("Content-disposition", "attachment;filename=" + fileName);
+        WriteSheet writeSheet = EasyExcel.writerSheet(name).build();
+        excelWriter.write(result, writeSheet);
+    }
+
+    public void commonExport(HttpServletRequest request, HttpServletResponse response,String name,List<?> result,Class<?> clazz) throws Exception {
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("utf-8");
+        String fileName = name  + ".xlsx";
+        fileName = URLEncoder.encode(fileName, "UTF-8");
+        response.setHeader("Content-disposition", "attachment;filename=" + fileName);
+        ExcelWriter excelWriter = null;
+        try {
+            excelWriter = EasyExcel.write(response.getOutputStream(), clazz).build();
+            WriteSheet writeSheet = EasyExcel.writerSheet(name).build();
+            excelWriter.write(result, writeSheet);
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            if(excelWriter != null){
+                excelWriter.finish();
+            }
+        }
+    }
+
+
+}