소스 검색

feign 补充 下载报表

lyhzzz 3 년 전
부모
커밋
764b51608b
14개의 변경된 파일164개의 추가작업 그리고 18개의 파일을 삭제
  1. 5 0
      4dkankan-center-api/4dkankan-center-scene-api/src/main/java/com/fdkankan/scene/api/feign/SceneUserSceneClient.java
  2. 2 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ICameraService.java
  3. 89 9
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraServiceImpl.java
  4. 11 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/vo/SceneCountVo.java
  5. 4 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/mapper/IDownloadOrderMapper.java
  6. 3 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/IDownloadOrderService.java
  7. 17 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/DownloadOrderServiceImpl.java
  8. 2 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/controller/api/UserCameraController.java
  9. 3 0
      4dkankan-center-platform/src/main/resources/mapper/order/DownloadOrderMapper.xml
  10. 7 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/feign/UserSceenFeign.java
  11. 2 3
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/mapper/ISceneProMapper.java
  12. 3 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneProService.java
  13. 6 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneProServiceImpl.java
  14. 10 1
      4dkankan-center-scene/src/main/resources/mapper/scene/SceneProMapper.xml

+ 5 - 0
4dkankan-center-api/4dkankan-center-scene-api/src/main/java/com/fdkankan/scene/api/feign/SceneUserSceneClient.java

@@ -80,4 +80,9 @@ public interface SceneUserSceneClient {
 
     @PostMapping("/checkDownLoad")
     ResultData checkDownLoad(@RequestParam(value = "sceneNum") String sceneNum);
+
+    @PostMapping("/findByCameraIds")
+    ResultData findByCameraIds(@RequestParam(value = "cameraIds") String cameraIds,
+                                      @RequestParam(value = "startTime") String startTime,
+                                      @RequestParam(value = "endTime")   String endTime);
 }

+ 2 - 1
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ICameraService.java

@@ -36,7 +36,7 @@ public interface ICameraService extends IService<Camera> {
 
     ResponseCamera findCameraBySn(RequestCamera camera);
 
-    HSSFWorkbook export(String token, HttpServletResponse response) throws Exception;
+    HSSFWorkbook export(String token, HttpServletResponse response,RequestCamera param) throws Exception;
 
     List<Camera> getCameraLikeSnCode(String trim);
 
@@ -56,4 +56,5 @@ public interface ICameraService extends IService<Camera> {
 
     List<ResponseCamera>  convert(List<CameraDetail> list);
 
+    List<Camera> findByIds(List<Long> ids);
 }

+ 89 - 9
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraServiceImpl.java

@@ -5,12 +5,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.constant.*;
+import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.response.ResultData;
-import com.fdkankan.common.util.NumberUtils;
-import com.fdkankan.platform.agent.constant.AgentConstant;
 import com.fdkankan.common.user.SSOUser;
 import com.fdkankan.common.util.DateUtil;
 import com.fdkankan.common.util.FileSizeUtil;
+import com.fdkankan.common.util.NumberUtils;
+import com.fdkankan.platform.agent.constant.AgentConstant;
 import com.fdkankan.platform.goods.entity.Camera;
 import com.fdkankan.platform.goods.entity.CameraDetail;
 import com.fdkankan.platform.goods.entity.Goods;
@@ -19,6 +20,7 @@ import com.fdkankan.platform.goods.service.ICameraDetailService;
 import com.fdkankan.platform.goods.service.ICameraService;
 import com.fdkankan.platform.goods.service.ICameraSpaceService;
 import com.fdkankan.platform.goods.service.IGoodsService;
+import com.fdkankan.platform.order.service.IDownloadOrderService;
 import com.fdkankan.platform.user.entity.User;
 import com.fdkankan.platform.user.entity.UserIncrement;
 import com.fdkankan.platform.user.request.RequestCamera;
@@ -26,9 +28,8 @@ import com.fdkankan.platform.user.service.IUserIncrementService;
 import com.fdkankan.platform.user.service.IUserService;
 import com.fdkankan.platform.user.vo.ResponseCamera;
 import com.fdkankan.platform.user.vo.ResponseCameraSpace;
-import com.fdkankan.common.exception.BusinessException;
-import com.fdkankan.scene.api.feign.SceneUserSceneClient;
 import com.fdkankan.scene.api.dto.SceneProDTO;
+import com.fdkankan.scene.api.feign.SceneUserSceneClient;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFRow;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
@@ -42,10 +43,8 @@ import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -72,6 +71,8 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     private String type;
     @Autowired
     private SceneUserSceneClient sceneUserSceneClient;
+    @Autowired
+    private IDownloadOrderService downloadOrderService;
 
 
     @Override
@@ -339,7 +340,7 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     }
 
     @Override
-    public HSSFWorkbook export(String token, HttpServletResponse response) throws Exception {
+    public HSSFWorkbook export(String token, HttpServletResponse response,RequestCamera param) throws Exception {
 
         String fileName = "我的相机";
         SSOUser ssoUser = userService.getSSOUserByToken(token);
@@ -412,8 +413,81 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
                 }
                 i++;
             }
+        }
+        assert responseCameraList != null;
+        List<Long> cameraIdList = responseCameraList.stream().map(ResponseCamera::getId).collect(Collectors.toList());
+        StringBuilder cameraIds = new StringBuilder();
+        for (Long aLong : cameraIdList) {
+            cameraIds.append(aLong).append(",");
+        }
+        if(cameraIds.length() >0 && cameraIds.toString().contains(",")){
+            cameraIds.deleteCharAt(cameraIds.lastIndexOf(","));
+        }
+        ResultData reultData = sceneUserSceneClient.findByCameraIds(cameraIds.toString(), param.getStartTime(), param.getEndTime());
+        List<SceneProDTO> sceneEntityList = (List<SceneProDTO>) reultData.getData();
+        HashMap<String, Integer> countBySceneNumMap = downloadOrderService.getCountBySceneNum();
+        List<Camera> cameras = this.findByIds(cameraIdList);
+        HashMap<Long, String> cameraSnCodeMap = new HashMap<>();
+        for (Camera camera : cameras) {
+            cameraSnCodeMap.put(camera.getId(),camera.getSnCode());
+        }
+        HashMap<Long, Integer> cameraSnCodeCountMap = new HashMap<>();
+        for (SceneProDTO sceneProEntity : sceneEntityList) {
+            if(cameraSnCodeCountMap.get(sceneProEntity.getCameraId()) ==null){
+                cameraSnCodeCountMap.put(sceneProEntity.getCameraId(),countBySceneNumMap.get(sceneProEntity.getNum()));
+                continue;
+            }
+            Integer num = countBySceneNumMap.get(sceneProEntity.getNum()) == null ? 0 :countBySceneNumMap.get(sceneProEntity.getNum());
+            Integer totalNum = num + (cameraSnCodeCountMap.get(sceneProEntity.getCameraId())== null ? 0 :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 : cameraSnCodeMap.keySet()) {
+            HSSFRow rowData = sheet.createRow(i);
+            i++;
+            rowData.createCell(0).setCellValue(cameraSnCodeMap.get(cameraId) == null ? "" : cameraSnCodeMap.get(cameraId));
+            rowData.createCell(1).setCellValue(param.getStartDate() == null ? "" : param.getStartDate());
+            rowData.createCell(2).setCellValue(param.getEndDate() == null ? "" : param.getEndDate());
+            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 (SceneProDTO sceneProEntity : sceneEntityList) {
+            HSSFRow rowData = sheet2.createRow(k);
+            k++;
+            if(cameraSnCodeMap.get(sceneProEntity.getCameraId()) == null){
+                rowData.createCell(0).setCellValue("");
+            }else {
+                rowData.createCell(0).setCellValue(cameraSnCodeMap.get(sceneProEntity.getCameraId()));
+            }
+            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 ? "" : DateUtil.date2String(sceneProEntity.getCreateTime(),DateUtil.DEFAULT_DATE_FORMAT));
         }
+
         //输出Excel文件
         OutputStream output = response.getOutputStream();
         response.reset();
@@ -553,4 +627,10 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
         return ServerCode.SUCCESS.message();
     }
 
+    @Override
+    public List<Camera> findByIds(List<Long> ids) {
+        LambdaQueryWrapper<Camera> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(Camera::getId,ids);
+        return this.list(queryWrapper);
+    }
 }

+ 11 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/vo/SceneCountVo.java

@@ -0,0 +1,11 @@
+package com.fdkankan.platform.goods.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class SceneCountVo implements Serializable {
+    private String sceneNum;
+    private Integer total;
+}

+ 4 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/mapper/IDownloadOrderMapper.java

@@ -1,9 +1,12 @@
 package com.fdkankan.platform.order.mapper;
 
+import com.fdkankan.platform.goods.vo.SceneCountVo;
 import com.fdkankan.platform.order.entity.DownloadOrder;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * <p>
  * 下载次数订单表 Mapper 接口
@@ -15,4 +18,5 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface IDownloadOrderMapper extends BaseMapper<DownloadOrder> {
 
+    List<SceneCountVo> getCountBySceneNum();
 }

+ 3 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/IDownloadOrderService.java

@@ -8,6 +8,7 @@ import com.fdkankan.platform.user.request.RequestIncrementOrder;
 import com.fdkankan.platform.user.vo.ResponseDownloadOrder;
 
 import java.math.BigDecimal;
+import java.util.HashMap;
 
 /**
  * <p>
@@ -28,4 +29,6 @@ public interface IDownloadOrderService extends IService<DownloadOrder> {
     boolean paySuccessDownloadOrder(String orderSn, String tradeNo, int paymentTypeName);
 
     ResponseDownloadOrder getVoById(Long downloadOrderId);
+
+    HashMap<String, Integer> getCountBySceneNum();
 }

+ 17 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/DownloadOrderServiceImpl.java

@@ -4,11 +4,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.TbStatus;
+import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.NumberUtils;
 import com.fdkankan.platform.goods.common.SkuCache;
 import com.fdkankan.platform.goods.service.IGoodsSkuService;
 import com.fdkankan.platform.goods.vo.ResponseGoodsSku;
+import com.fdkankan.platform.goods.vo.SceneCountVo;
 import com.fdkankan.platform.order.entity.DownloadOrder;
 import com.fdkankan.platform.order.entity.Invoice;
 import com.fdkankan.platform.order.mapper.IDownloadOrderMapper;
@@ -18,15 +21,15 @@ import com.fdkankan.platform.user.request.RequestDownloadOrder;
 import com.fdkankan.platform.user.request.RequestIncrementOrder;
 import com.fdkankan.platform.user.vo.ResponseDownloadOrder;
 import com.fdkankan.platform.user.vo.ResponseInvoice;
-import com.fdkankan.common.constant.ErrorCode;
-import com.fdkankan.common.exception.BusinessException;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -44,6 +47,8 @@ public class DownloadOrderServiceImpl extends ServiceImpl<IDownloadOrderMapper,
     private IGoodsSkuService goodsSkuService;
     @Autowired
     private IInvoiceService invoiceService;
+    @Resource
+    private IDownloadOrderMapper downloadOrderMapper;
 
     @Override
     public ResponseDownloadOrder saveByOrderParam(Long userId, RequestIncrementOrder order, BigDecimal price) {
@@ -148,4 +153,14 @@ public class DownloadOrderServiceImpl extends ServiceImpl<IDownloadOrderMapper,
         }
         return responseDownloadOrder;
     }
+
+    @Override
+    public HashMap<String, Integer> getCountBySceneNum() {
+        HashMap<String,Integer> map = new HashMap<>();
+        List<SceneCountVo> countBySceneNum = downloadOrderMapper.getCountBySceneNum();
+        for (SceneCountVo sceneCountVo : countBySceneNum) {
+            map.put(sceneCountVo.getSceneNum(),sceneCountVo.getTotal());
+        }
+        return map;
+    }
 }

+ 2 - 2
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/controller/api/UserCameraController.java

@@ -160,8 +160,8 @@ public class UserCameraController extends BaseController {
      * 获取四维看看PRO - 我的相机列表 并到处execl
      */
     @RequestMapping(value = "/export", method = RequestMethod.POST)
-    public HSSFWorkbook export(@RequestHeader String token, HttpServletResponse response) throws Exception {
-        return cameraService.export(token,response);
+    public HSSFWorkbook export(@RequestHeader String token, HttpServletResponse response,@RequestBody RequestCamera param) throws Exception {
+        return cameraService.export(token,response,param);
     }
 
     /**

+ 3 - 0
4dkankan-center-platform/src/main/resources/mapper/order/DownloadOrderMapper.xml

@@ -2,4 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fdkankan.platform.order.mapper.IDownloadOrderMapper">
 
+    <select id="getCountBySceneNum" resultType="com.fdkankan.platform.goods.vo.SceneCountVo">
+        SELECT scene_num as sceneNum,count(*)as total FROM t_download_order WHERE  REC_STATUS = 'A' GROUP BY scene_num
+    </select>
 </mapper>

+ 7 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/feign/UserSceenFeign.java

@@ -204,5 +204,12 @@ public class UserSceenFeign {
     ResultData checkDownLoad(@RequestParam(value = "sceneNum") String sceneNum){
         return sceneProService.checkDownLoad(sceneNum);
     }
+
+    @PostMapping("/findByCameraIds")
+    ResultData findByCameraIds(@RequestParam(value = "cameraIds") String cameraIds,
+                                      @RequestParam(value = "startTime") String startTime,
+                                      @RequestParam(value = "endTime")   String endTime){
+        return ResultData.ok( sceneProService.findByCameraIds(cameraIds,startTime,endTime));
+    }
 }
 

+ 2 - 3
4dkankan-center-scene/src/main/java/com/fdkankan/scene/mapper/ISceneProMapper.java

@@ -1,8 +1,8 @@
 package com.fdkankan.scene.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.scene.entity.ScenePro;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fdkankan.scene.entity.SceneProPO;
 import com.fdkankan.scene.vo.SceneParamVO;
 import com.fdkankan.scene.vo.SceneProVO;
@@ -58,6 +58,5 @@ public interface ISceneProMapper extends BaseMapper<ScenePro> {
     List<SceneProPO> selectSceneList(SceneParamVO param);
 
 
-
-
+    List<SceneProPO> findByCameraIds(String cameraIds, String startTime, String endTime);
 }

+ 3 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneProService.java

@@ -3,6 +3,7 @@ package com.fdkankan.scene.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.common.response.ResultData;
+import com.fdkankan.scene.api.dto.SceneProDTO;
 import com.fdkankan.scene.entity.ScenePro;
 import com.fdkankan.scene.entity.SceneProPO;
 import com.fdkankan.scene.vo.DeleteHotIconParamVO;
@@ -206,4 +207,6 @@ public interface ISceneProService extends IService<ScenePro> {
     ResultData getStatusByScene(SceneParamVO param) throws Exception;
 
     ResultData checkDownLoad(String sceneNum);
+
+    List<SceneProPO> findByCameraIds(String cameraIds, String startTime, String endTime);
 }

+ 6 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneProServiceImpl.java

@@ -23,6 +23,7 @@ import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.constant.RedisLockKey;
 import com.fdkankan.redis.util.RedisLockUtil;
 import com.fdkankan.redis.util.RedisUtil;
+import com.fdkankan.scene.api.dto.SceneProDTO;
 import com.fdkankan.scene.bean.IconBean;
 import com.fdkankan.scene.bean.TagBean;
 import com.fdkankan.scene.entity.*;
@@ -5266,4 +5267,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         result.put("downloadStatus", 0);
         return ResultData.ok(result);
     }
+
+    @Override
+    public List<SceneProPO> findByCameraIds(String cameraIds, String startTime, String endTime) {
+        return  this.baseMapper.findByCameraIds(cameraIds, startTime, endTime);
+    }
 }

+ 10 - 1
4dkankan-center-scene/src/main/resources/mapper/scene/SceneProMapper.xml

@@ -341,6 +341,15 @@
         order by t.id desc
     </select>
 
-
+    <select id="findByCameraIds" resultType="com.fdkankan.scene.entity.SceneProPO">
+        SELECT * FROM t_scene_pro WHERE camera_id in (${cameraIds}) AND rec_status = 'A'
+        <if test= 'startTime != null'>
+            AND create_time &gt;= #{startTime}
+        </if>
+        <if test= 'endTime != null'>
+             AND create_time &lt;= #{endTime}
+        </if>
+        ORDER BY camera_id,create_time DESC
+    </select>
 
 </mapper>