|
@@ -1,5 +1,6 @@
|
|
|
package com.fdkankan.ucenter.controller;
|
|
|
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.fdkankan.common.exception.BusinessException;
|
|
@@ -10,16 +11,26 @@ import com.fdkankan.ucenter.common.ResultData;
|
|
|
import com.fdkankan.ucenter.constant.LoginConstant;
|
|
|
import com.fdkankan.ucenter.entity.Camera;
|
|
|
import com.fdkankan.ucenter.entity.CameraDetail;
|
|
|
+import com.fdkankan.ucenter.entity.ScenePro;
|
|
|
import com.fdkankan.ucenter.entity.User;
|
|
|
-import com.fdkankan.ucenter.service.ICameraDetailService;
|
|
|
-import com.fdkankan.ucenter.service.ICameraService;
|
|
|
-import com.fdkankan.ucenter.service.ISceneResourceService;
|
|
|
-import com.fdkankan.ucenter.service.IUserService;
|
|
|
+import com.fdkankan.ucenter.service.*;
|
|
|
+import com.fdkankan.ucenter.util.DateUserUtil;
|
|
|
import com.fdkankan.ucenter.vo.request.CameraParam;
|
|
|
+import com.fdkankan.ucenter.vo.request.ExportCameraParam;
|
|
|
+import com.fdkankan.ucenter.vo.response.CameraAppVo;
|
|
|
+import com.fdkankan.ucenter.vo.response.CameraExcelVo;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.apache.poi.hssf.usermodel.HSSFRow;
|
|
|
+import org.apache.poi.hssf.usermodel.HSSFSheet;
|
|
|
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
+import java.io.OutputStream;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -35,6 +46,8 @@ public class CameraController extends BaseController {
|
|
|
ISceneResourceService sceneResourceService;
|
|
|
@Autowired
|
|
|
IUserService userService;
|
|
|
+ @Autowired
|
|
|
+ ISceneProService sceneProService;
|
|
|
|
|
|
/**
|
|
|
* 获取设备到期数量
|
|
@@ -159,4 +172,182 @@ public class CameraController extends BaseController {
|
|
|
}
|
|
|
return Result.success(userService.findCameraDetailByChildName(getToken(), jsonObject.getString("childName")));
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取四维看看PRO - 我的相机列表 并到处execl
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "/export", method = RequestMethod.POST)
|
|
|
+ public HSSFWorkbook export(@RequestBody ExportCameraParam param) throws Exception {
|
|
|
+
|
|
|
+ String fileName = "我的相机";
|
|
|
+ User user = userService.getByToken(getToken());
|
|
|
+ List<CameraExcelVo> responseCameraList = cameraDetailService.getListByUserAndTypeEx(user.getId());
|
|
|
+ List<Long> cameraIdList = responseCameraList.stream().map(CameraExcelVo::getCameraId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ LambdaQueryWrapper<ScenePro> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.in(ScenePro::getCameraId,cameraIdList);
|
|
|
+ wrapper.orderByDesc(ScenePro::getCreateTime);
|
|
|
+ List<ScenePro> sceneEntityList = sceneProService.list(wrapper);
|
|
|
+
|
|
|
+ HashMap<Long,List<ScenePro>> sceneProMap = new HashMap<>();
|
|
|
+ for (ScenePro scenePro : sceneEntityList) {
|
|
|
+ if(sceneProMap.get(scenePro.getCameraId()) == null){
|
|
|
+ List<ScenePro> proList = new ArrayList<>();
|
|
|
+ proList.add(scenePro);
|
|
|
+ sceneProMap.put(scenePro.getCameraId(),proList);
|
|
|
+ }else {
|
|
|
+ sceneProMap.get(scenePro.getCameraId()).add(scenePro);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ HSSFWorkbook wb = new HSSFWorkbook();
|
|
|
+ if (responseCameraList != null) {
|
|
|
+ HSSFSheet sheet = wb.createSheet("camera");
|
|
|
+ //在sheet里创建第一行,这里即是表头
|
|
|
+ HSSFRow rowTitle = sheet.createRow(0);
|
|
|
+ rowTitle.createCell(0).setCellValue("S/N码");
|
|
|
+ rowTitle.createCell(1).setCellValue("云容量");
|
|
|
+ rowTitle.createCell(2).setCellValue("到期时间");
|
|
|
+ rowTitle.createCell(3).setCellValue("协作者");
|
|
|
+ rowTitle.createCell(4).setCellValue("拍摄场景数量");
|
|
|
+ rowTitle.createCell(5).setCellValue("最后拍摄时间");
|
|
|
+
|
|
|
+ int i = 1;
|
|
|
+ String rl = "";
|
|
|
+ String UsedSpaceStr = "";
|
|
|
+ String TotalSpaceStr = "";
|
|
|
+ for (CameraExcelVo rc : responseCameraList) {
|
|
|
+ HSSFRow rowData = sheet.createRow(i);
|
|
|
+ rowData.createCell(0).setCellValue(rc.getSnCode());
|
|
|
+
|
|
|
+
|
|
|
+ if(rc.getUsedSpaceStr() == null || StringUtils.isEmpty(rc.getUsedSpaceStr())){
|
|
|
+ UsedSpaceStr = "0GB";
|
|
|
+ }else {
|
|
|
+ UsedSpaceStr = rc.getUsedSpaceStr();
|
|
|
+ }
|
|
|
+
|
|
|
+ if(rc.getTotalSpaceStr() == null || StringUtils.isEmpty(rc.getTotalSpaceStr())){
|
|
|
+ TotalSpaceStr = "0GB";
|
|
|
+ }else {
|
|
|
+ TotalSpaceStr = rc.getTotalSpaceStr();
|
|
|
+ }
|
|
|
+
|
|
|
+ if(rc.getSpaceEndStr() == null){
|
|
|
+ rowData.createCell(1).setCellValue(UsedSpaceStr + " / " + TotalSpaceStr);
|
|
|
+ }else {
|
|
|
+ if(rc.getIsExpired() == null || rc.getIsExpired() == 1){
|
|
|
+ rowData.createCell(1).setCellValue(UsedSpaceStr + " / " + TotalSpaceStr);
|
|
|
+ }else{
|
|
|
+ rowData.createCell(1).setCellValue(UsedSpaceStr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(rc.getSpaceEndStr() == null ){
|
|
|
+ rowData.createCell(2).setCellValue("");
|
|
|
+ }else{
|
|
|
+ rowData.createCell(2).setCellValue(rc.getSpaceEndStr());
|
|
|
+ }
|
|
|
+
|
|
|
+ if(rc.getCooperationUser() == null ){
|
|
|
+ rowData.createCell(3).setCellValue("");
|
|
|
+ }else{
|
|
|
+ rowData.createCell(3).setCellValue(rc.getCooperationUser());
|
|
|
+ }
|
|
|
+ List<ScenePro> proList = sceneProMap.get(rc.getCameraId());
|
|
|
+ if(proList == null || proList.size() <=0){
|
|
|
+ rowData.createCell(4).setCellValue("");
|
|
|
+ rowData.createCell(5).setCellValue("");
|
|
|
+ }else {
|
|
|
+ rowData.createCell(4).setCellValue(proList.size());
|
|
|
+ String lastTime = null;
|
|
|
+ for (ScenePro scenePro : proList) {
|
|
|
+ if(lastTime == null){
|
|
|
+ lastTime = scenePro.getCreateTime();
|
|
|
+ }else {
|
|
|
+ Date date1 = DateUserUtil.getDate(lastTime);
|
|
|
+ Date date2 = DateUserUtil.getDate(scenePro.getCreateTime());
|
|
|
+ if(date2.getTime() >date1.getTime()){
|
|
|
+ lastTime = scenePro.getCreateTime();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ rowData.createCell(5).setCellValue(lastTime);
|
|
|
+ }
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ HashMap<Long, Camera> cameraMap = cameraService.getByIds(cameraIdList);
|
|
|
+ HashMap<Long, Integer> cameraSnCodeCountMap = new HashMap<>();
|
|
|
+ for (ScenePro sceneProEntity : sceneEntityList) {
|
|
|
+ if(cameraSnCodeCountMap.get(sceneProEntity.getCameraId()) ==null){
|
|
|
+ cameraSnCodeCountMap.put(sceneProEntity.getCameraId(),1);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ Integer totalNum = 1 + cameraSnCodeCountMap.get(sceneProEntity.getCameraId()) ;
|
|
|
+ cameraSnCodeCountMap.put(sceneProEntity.getCameraId(),totalNum);
|
|
|
+ }
|
|
|
+
|
|
|
+ HSSFSheet sheet = wb.createSheet("scene");
|
|
|
+ //在sheet里创建第一行,这里即是表头
|
|
|
+ HSSFRow rowTitle = sheet.createRow(0);
|
|
|
+ rowTitle.createCell(0).setCellValue("S/N码");
|
|
|
+ rowTitle.createCell(1).setCellValue("开始时间");
|
|
|
+ rowTitle.createCell(2).setCellValue("结束时间");
|
|
|
+ rowTitle.createCell(3).setCellValue("场景数量");
|
|
|
+ int i = 1;
|
|
|
+ for (Long cameraId : cameraMap.keySet()) {
|
|
|
+ HSSFRow rowData = sheet.createRow(i);
|
|
|
+ i++;
|
|
|
+ rowData.createCell(0).setCellValue(cameraMap.get(cameraId) == null ? "" : cameraMap.get(cameraId).getSnCode());
|
|
|
+ rowData.createCell(1).setCellValue(param.getStartTime() == null ? "" : param.getStartTime());
|
|
|
+ rowData.createCell(2).setCellValue(param.getEndTime() == null ? "" : param.getEndTime());
|
|
|
+ if(cameraSnCodeCountMap.get(cameraId) == null){
|
|
|
+ rowData.createCell(3).setCellValue("");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ rowData.createCell(3).setCellValue(cameraSnCodeCountMap.get(cameraId));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ HSSFSheet sheet2 = wb.createSheet("info");
|
|
|
+ //在sheet里创建第一行,这里即是表头
|
|
|
+ HSSFRow rowTitle2 = sheet2.createRow(0);
|
|
|
+ rowTitle2.createCell(0).setCellValue("S/N码");
|
|
|
+ rowTitle2.createCell(1).setCellValue("场景码");
|
|
|
+ rowTitle2.createCell(2).setCellValue("场景名称");
|
|
|
+ rowTitle2.createCell(3).setCellValue("场景链接");
|
|
|
+ rowTitle2.createCell(4).setCellValue("创建时间");
|
|
|
+
|
|
|
+ int k = 1;
|
|
|
+ for (ScenePro sceneProEntity : sceneEntityList) {
|
|
|
+ HSSFRow rowData = sheet2.createRow(k);
|
|
|
+ k++;
|
|
|
+ if(cameraMap.get(sceneProEntity.getCameraId()) == null){
|
|
|
+ rowData.createCell(0).setCellValue("");
|
|
|
+ }else {
|
|
|
+ rowData.createCell(0).setCellValue(cameraMap.get(sceneProEntity.getCameraId()).getSnCode());
|
|
|
+ }
|
|
|
+ rowData.createCell(1).setCellValue(sceneProEntity.getNum() == null ? "" :sceneProEntity.getNum());
|
|
|
+ rowData.createCell(2).setCellValue(sceneProEntity.getSceneName() == null ? "" :sceneProEntity.getSceneName());
|
|
|
+ rowData.createCell(3).setCellValue(sceneProEntity.getWebSite() == null ? "" :sceneProEntity.getWebSite());
|
|
|
+ rowData.createCell(4).setCellValue(sceneProEntity.getCreateTime() == null ? "" : sceneProEntity.getCreateTime());
|
|
|
+ }
|
|
|
+
|
|
|
+ //输出Excel文件
|
|
|
+ OutputStream output = response.getOutputStream();
|
|
|
+ response.reset();
|
|
|
+ //中文名称要进行编码处理
|
|
|
+ response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("GB2312"), "ISO8859-1") + ".xls");
|
|
|
+ response.setContentType("application/msexcel");
|
|
|
+ wb.write(output);
|
|
|
+ output.close();
|
|
|
+
|
|
|
+ return wb;
|
|
|
+ }
|
|
|
}
|