Browse Source

Merge remote-tracking branch 'origin/master' into dev-dsx-deploy-20220414

# Conflicts:
#	4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/controller/api/DeviceSceneController.java
#	4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneController.java
#	4dkankan-center-scene/src/main/java/com/fdkankan/scene/generate/AutoGenerate.java
#	4dkankan-common/src/main/java/com/fdkankan/common/controller/BaseController.java
dengsixing 3 years ago
parent
commit
d48ea74674
69 changed files with 1786 additions and 313 deletions
  1. 0 1
      4dkankan-center-api/4dkankan-center-platform-api/src/main/java/com/fdkankan/platform/api/dto/Camera.java
  2. 17 1
      4dkankan-center-api/4dkankan-center-scene-api/src/main/java/com/fdkankan/scene/api/feign/SceneUserSceneClient.java
  3. 67 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/controller/manager/ManagerAPPController.java
  4. 60 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/entity/AppFile.java
  5. 22 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/mapper/IAppFileMapper.java
  6. 52 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/request/RequestAppFile.java
  7. 28 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/service/IAppFileService.java
  8. 123 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/service/impl/AppFileServiceImpl.java
  9. 0 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/feign/GoodsFeign.java
  10. 5 5
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/generate/AutoGenerate.java
  11. 2 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/ICameraService.java
  12. 0 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/IDeviceService.java
  13. 91 20
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraServiceImpl.java
  14. 5 3
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraVersionServiceImpl.java
  15. 0 17
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/DeviceServiceImpl.java
  16. 11 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/vo/SceneCountVo.java
  17. 77 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/controller/manager/ManagerDownLoadOrderController.java
  18. 82 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/controller/manager/ManagerInCrementOrderController.java
  19. 10 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/mapper/IDownloadOrderMapper.java
  20. 4 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/mapper/IIncrementOrderMapper.java
  21. 12 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/IDownloadOrderService.java
  22. 8 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/IIncrementOrderService.java
  23. 2 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/IInvoiceService.java
  24. 122 5
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/DownloadOrderServiceImpl.java
  25. 113 3
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/IncrementOrderServiceImpl.java
  26. 13 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/InvoiceServiceImpl.java
  27. 4 3
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/controller/api/UserCameraController.java
  28. 2 1
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/controller/manager/ManagerUserController.java
  29. 2 6
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/IUserSceneService.java
  30. 1 2
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/IUserService.java
  31. 7 40
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/UserSceneServiceImpl.java
  32. 7 14
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/UserServiceImpl.java
  33. 21 0
      4dkankan-center-platform/src/main/java/com/fdkankan/platform/util/ResultConvertUtil.java
  34. 11 0
      4dkankan-center-platform/src/main/resources/mapper/agent/AppFileMapper.xml
  35. 26 0
      4dkankan-center-platform/src/main/resources/mapper/order/DownloadOrderMapper.xml
  36. 26 0
      4dkankan-center-platform/src/main/resources/mapper/order/IncrementOrderMapper.xml
  37. 53 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneApplyController.java
  38. 10 11
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneController.java
  39. 2 3
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/UserSceneController.java
  40. 87 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/SceneApply.java
  41. 30 2
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/feign/UserSceenFeign.java
  42. 18 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/mapper/ISceneApplyMapper.java
  43. 3 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/mapper/ISceneCooperationMapper.java
  44. 4 2
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/mapper/ISceneProMapper.java
  45. 11 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/IFdkkLaserService.java
  46. 1 1
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/IScene3dNumService.java
  47. 16 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneApplyService.java
  48. 2 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneCooperationService.java
  49. 1 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneProEditService.java
  50. 4 13
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneProService.java
  51. 2 2
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/IUserSceneService.java
  52. 6 5
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/FolderServiceImpl.java
  53. 81 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/IFdkkLaserServiceImpl.java
  54. 19 15
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/Scene3dNumServiceImpl.java
  55. 20 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneApplyServiceImpl.java
  56. 11 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneCooperationServiceImpl.java
  57. 69 50
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneFileBuildServiceImpl.java
  58. 10 4
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneProEditServiceImpl.java
  59. 94 1
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneProServiceImpl.java
  60. 2 5
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneResourceServiceImpl.java
  61. 48 65
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/UserSceneServiceImpl.java
  62. 24 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/util/ParamConvertUtil.java
  63. 11 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/SceneBySnCodeVo.java
  64. 13 0
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/SceneNumVo.java
  65. 1 1
      4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/SceneParamVO.java
  66. 7 5
      4dkankan-center-scene/src/main/resources/mapper/scene/SceneCooperationMapper.xml
  67. 14 1
      4dkankan-center-scene/src/main/resources/mapper/scene/SceneProMapper.xml
  68. 50 0
      4dkankan-common/src/main/java/com/fdkankan/common/constant/CameraTypeEnum.java
  69. 29 0
      4dkankan-common/src/main/java/com/fdkankan/common/controller/BaseController.java

+ 0 - 1
4dkankan-center-api/4dkankan-center-platform-api/src/main/java/com/fdkankan/platform/api/dto/Camera.java

@@ -62,7 +62,6 @@ public class Camera implements Serializable {
      */
     private Integer tbStatus;
 
-    
 
 }
 

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

@@ -20,7 +20,9 @@ public interface SceneUserSceneClient {
     ResultData<SceneCntDTO> getSceneCnt(@RequestParam(value = "userId") Long userId, @RequestParam(value = "cameraId") Long cameraId) ;
 
     @PostMapping("/getSceneNumByCameraId")
-    ResultData<Integer> getSceneNumByCameraId(@RequestParam(value = "cameraId") Long cameraId) ;
+    ResultData<Integer> getSceneNumByCameraId(@RequestParam(value = "cameraId") Long cameraId,
+                                              @RequestParam(value = "cameraType")Integer cameraType,
+                                              @RequestParam(value = "snCode")String snCode) ;
 
     @PostMapping("/getLastSceneByCameraId")
     ResultData<SceneProDTO> getLastSceneByCameraId(@RequestParam(value = "cameraId") Long cameraId) ;
@@ -71,4 +73,18 @@ public interface SceneUserSceneClient {
                                @RequestParam(value = "userId") Long userId,
                                @RequestParam(value = "snCode")String snCode,
                                @RequestParam(value = "cooperationUserName")String cooperationUserName);
+
+    @PostMapping("/updateImageVersionFromSceneProEdit")
+    ResultData updateImageVersionFromSceneProEdit(@RequestParam(value = "num" ) String num);
+
+    @PostMapping("/getSceneResourceByCameraId")
+    ResultData getSceneResourceByCameraId(@RequestParam(value = "cameraId" ) Long cameraId);
+
+    @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);
 }

+ 67 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/controller/manager/ManagerAPPController.java

@@ -0,0 +1,67 @@
+package com.fdkankan.platform.agent.controller.manager;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.controller.BaseController;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.common.util.FileMd5Util;
+import com.fdkankan.platform.agent.entity.AppFile;
+import com.fdkankan.platform.agent.request.RequestAppFile;
+import com.fdkankan.platform.agent.service.IAppFileService;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Log4j2
+@RestController
+@RequestMapping("/api/manager/app")
+public class ManagerAPPController extends BaseController {
+
+    @Autowired
+    private IAppFileService managerAppService;
+
+
+    @PostMapping(value = "/upload", consumes = { "multipart/form-data" })
+    private ResultData upload(@RequestParam("file") MultipartFile file) {
+        // 将文件转字节-> 字符串
+        String filePath = managerAppService.upload(file);
+        String md5 = FileMd5Util.getFileMD5(filePath);
+        Map<String,String> result = new HashMap<>(2);
+        result.put("md5",md5);
+        return ResultData.ok(md5);
+    }
+
+    @PostMapping(value = "/list")
+    private Page<AppFile> list(@RequestBody RequestAppFile param) {
+        return managerAppService.getPageByParam(param);
+    }
+
+    @PostMapping(value = "/delete")
+    private ResultData delete(@RequestBody RequestAppFile param) {
+        if(ObjectUtils.isEmpty(param.getId())){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        managerAppService.removeById(param.getId());
+        return ResultData.ok();
+    }
+
+    @PostMapping(value = "/agenetList")
+    private List<String> agenetList(@RequestBody RequestAppFile param) {
+        return managerAppService.agenetList(param.getName());
+    }
+
+    @PostMapping(value = "/save")
+    private ResultData save(@RequestBody RequestAppFile param) {
+        managerAppService.saveByParam(param);
+        return ResultData.ok();
+    }
+
+
+}

+ 60 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/entity/AppFile.java

@@ -0,0 +1,60 @@
+package com.fdkankan.platform.agent.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2022-04-27
+ */
+@Getter
+@Setter
+@TableName("t_app_file")
+public class AppFile implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("file_server_type")
+    private String fileServerType;
+
+    @TableField("agent")
+    private String agent;
+
+    @TableField("app_type")
+    private String appType;
+
+    @TableField("url")
+    private String url;
+
+    @TableField("md5")
+    private String md5;
+
+    @TableField("name")
+    private String name;
+
+    @TableField("version")
+    private String version;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+    @TableField("tb_status")
+    @TableLogic
+    private Boolean tbStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+
+}

+ 22 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/mapper/IAppFileMapper.java

@@ -0,0 +1,22 @@
+package com.fdkankan.platform.agent.mapper;
+
+import com.fdkankan.platform.agent.entity.AppFile;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-04-27
+ */
+@Mapper
+public interface IAppFileMapper extends BaseMapper<AppFile> {
+
+    List<String> agentList(@Param("name") String name);
+}

+ 52 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/request/RequestAppFile.java

@@ -0,0 +1,52 @@
+package com.fdkankan.platform.agent.request;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class RequestAppFile extends RequestBase {
+    /**
+     * 服务器类型 OSS 或者 S3
+     */
+    private String fileServerType;
+
+    /**
+     * 代理商标识
+     */
+    private String agent;
+
+    /**
+     *
+     */
+    private String appType;
+
+    private String url;
+
+    /**
+     *
+     */
+    private String md5;
+
+    /**
+     * APP 文件名称
+     */
+    private String name;
+
+    /**
+     * 代理商标识
+     */
+    private String keyword;
+
+
+    private Long id;
+
+
+    private Date createTime;
+
+
+    private Date updateTime;
+
+    private String recStatus;
+}

+ 28 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/service/IAppFileService.java

@@ -0,0 +1,28 @@
+package com.fdkankan.platform.agent.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.platform.agent.entity.AppFile;
+import com.fdkankan.platform.agent.request.RequestAppFile;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-04-27
+ */
+public interface IAppFileService extends IService<AppFile> {
+
+    String upload(MultipartFile file);
+
+    Page<AppFile> getPageByParam(RequestAppFile param);
+
+    List<String> agenetList(String name);
+
+    void saveByParam(RequestAppFile param);
+}

+ 123 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/agent/service/impl/AppFileServiceImpl.java

@@ -0,0 +1,123 @@
+package com.fdkankan.platform.agent.service.impl;
+
+import com.alibaba.csp.sentinel.util.StringUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.exception.BusinessException;
+import com.fdkankan.common.util.FileUtils;
+import com.fdkankan.fyun.oss.UploadToOssUtil;
+import com.fdkankan.platform.agent.entity.AppFile;
+import com.fdkankan.platform.agent.mapper.IAppFileMapper;
+import com.fdkankan.platform.agent.request.RequestAppFile;
+import com.fdkankan.platform.agent.service.IAppFileService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.util.Base64;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-04-27
+ */
+@Service
+public class AppFileServiceImpl extends ServiceImpl<IAppFileMapper, AppFile> implements IAppFileService {
+
+    @Resource
+    private IAppFileMapper appFileMapper;
+    @Autowired
+    private UploadToOssUtil uploadToOssUtil;
+    @Value("${upload.type}")
+    private String ossType;
+    @Value("${oss.prefix.sdk}")
+    private String prefixAli;
+
+    @Override
+    public String upload(MultipartFile file)  {
+        if (ObjectUtils.isEmpty(file) || file.isEmpty() || file.getSize() <= 0) {
+            throw new BusinessException(ErrorCode.FAILURE_CODE_3017);
+        }
+        try {
+            String fileContent = Base64.getEncoder().encodeToString(file.getBytes());
+            String filePath = FileUtils.getResource().concat("uploadAppTmp");
+            FileUtils.createDir(filePath);
+            filePath = filePath.concat("/").concat(file.getOriginalFilename());
+            // 删除旧文件
+            FileUtils.deleteFile(filePath);
+            // 写文件到本地
+            FileUtils.base64ToFileWriter(fileContent, filePath);
+            return filePath;
+        }catch (Exception e){
+            throw new BusinessException(-1,"上传失败");
+        }
+    }
+
+    @Override
+    public Page<AppFile> getPageByParam(RequestAppFile param) {
+        LambdaQueryWrapper<AppFile> queryWrapper = new LambdaQueryWrapper<>();
+        if(StringUtil.isNotBlank(param.getKeyword())){
+            queryWrapper.like(AppFile::getAgent,param.getKeyword());
+        }
+        queryWrapper.orderByDesc(AppFile::getCreateTime);
+        Page<AppFile> page = new Page<>(param.getPageNum(),param.getPageSize());
+        return this.page(page,queryWrapper);
+    }
+
+    @Override
+    public List<String> agenetList(String name) {
+        return appFileMapper.agentList(name);
+    }
+
+    @Override
+    public void saveByParam(RequestAppFile param) {
+        if(ObjectUtils.isEmpty(param.getName())){
+            throw new BusinessException(-1,"文件名称为空,请输入文件名称!");
+        }
+        AppFile managerAPPEntity = new AppFile();
+        BeanUtils.copyProperties(param, managerAPPEntity);
+        String basePath = FileUtils.getResource().concat("uploadAppTmp/");
+
+        String filePath = basePath.concat(param.getName());
+        File file = new File(filePath);
+        if (!file.exists()) {
+            throw new BusinessException(-1,"应用包文件未上传,请先上传文件!");
+        }
+
+        String versionFilePath = basePath.concat("version.json");
+        if (!new File(versionFilePath).exists()) {
+            throw new BusinessException(-1,"version.json 文件未上传,请先上传文件!");
+        }
+
+        String fileType = param.getName().substring(param.getName().lastIndexOf(".")+1);
+
+        String ossPathPrefix = "apps/customApp/" + param.getAgent() + "/"+param.getAppType()+"/";
+
+        uploadToOssUtil.upload(filePath, ossPathPrefix+"4dkankan."+fileType);
+        // 上传到 历史记录文件夹目录
+        uploadToOssUtil.upload(filePath, ossPathPrefix+"oldapps/" + file.getName());
+
+        // 上传到 version.json 文件
+        uploadToOssUtil.upload(versionFilePath, ossPathPrefix+"version/version.json");
+
+        // 删除旧文件
+        FileUtils.deleteFile(filePath);
+        FileUtils.deleteFile(versionFilePath);
+
+        managerAPPEntity.setUrl(prefixAli.concat(ossPathPrefix+"4dkankan."+fileType));
+        managerAPPEntity.setFileServerType(ossType);
+        this.save(managerAPPEntity);
+    }
+
+}

+ 0 - 1
4dkankan-center-platform/src/main/java/com/fdkankan/platform/feign/GoodsFeign.java

@@ -72,7 +72,6 @@ public class GoodsFeign {
 
     @PostMapping("/getCameraById")
     public Camera getCameraById(@RequestParam(value = "cameraId") Long cameraId) {
-        sceneUserSceneClient.getSceneNumByCameraId(1L);
         Camera camera = cameraService.getAvailableById(cameraId);
         return camera;
     }

+ 5 - 5
4dkankan-center-platform/src/main/java/com/fdkankan/platform/generate/AutoGenerate.java

@@ -16,8 +16,8 @@ public class AutoGenerate {
     public static void main(String[] args) {
         String path ="H:\\project\\4dkankan-parent\\4dkankan-center-platform";
 
-        generate(path,"user", getTables(new String[]{
-                "tm_increment_log"
+        generate(path,"agent", getTables(new String[]{
+                "t_app_file"
         }));
 
 //        generate(path,"goods", getTables(new String[]{
@@ -45,8 +45,8 @@ public class AutoGenerate {
 
 
     public static void  generate(String path,String moduleName,  List<String> tables){
-        FastAutoGenerator.create("jdbc:mysql://localhost:3306/4dkankan_center_application",
-                "root","123456")
+        FastAutoGenerator.create("jdbc:mysql://192.168.0.47:13306/4dkankan-center-platform",
+                "root","4dkk2020cuikuan%")
                 .globalConfig(builder -> {
                     builder.author("")               //作者
                             .outputDir(path+"\\src\\main\\java")    //输出路径(写到java目录)
@@ -69,7 +69,7 @@ public class AutoGenerate {
                 })
                 .strategyConfig(builder -> {
                     builder.addInclude(tables)
-                            .addTablePrefix("tm_")
+                            .addTablePrefix("t_")
                             .serviceBuilder()
                             .formatServiceFileName("I%sService")
                             .formatServiceImplFileName("%sServiceImpl")

+ 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);
 }

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

@@ -20,9 +20,7 @@ public interface IDeviceService {
 
     ResponseCameraApp bindProCamera(RequestCamera camera) throws Exception;
 
-    String getScenes(RequestCamera param) throws Exception;
 
-    String deleteScene(String sceneNum) throws Exception;
 
     Camera findByChildNameAndChildPassword(String appUserName, String appPassword) throws Exception;
 

+ 91 - 20
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
@@ -156,7 +157,7 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
                 }
             }
             ResultData<Integer> sceneNumResult = sceneUserSceneClient
-                .getSceneNumByCameraId(responseCamera.getId());
+                .getSceneNumByCameraId(responseCamera.getId(),responseCamera.getType(),responseCamera.getSnCode());
             if(!sceneNumResult.getSuccess())
                 throw new Exception(ServerCode.FEIGN_REQUEST_FAILD.message());
             responseCamera.setSceneNum(sceneNumResult.getData());
@@ -249,16 +250,7 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
 
     private void addCamera(Long userId, Integer cameraType, Long cameraId){
         cameraDetailService.bind(userId,cameraId);
-        // TODO:  updateUserIdByCameraId
-//        if (cameraType == null || cameraType == 0){
-//            result = sceneService.updateUserIdByCameraId(userId, cameraId);
-//        }else {
-//            result = sceneService.updateUserIdByCameraIdPro(userId, cameraId);
-//        }
-//
-//        if (result.getCode() == Result.CODE_FAILURE){
-//            throw new Exception(LoginConstant.ERROR_MSG);
-//        }
+        sceneUserSceneClient.updateUserIdByCameraId(userId,cameraId);
     }
 
     @Override
@@ -348,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);
@@ -421,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();
@@ -562,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);
+    }
 }

+ 5 - 3
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/CameraVersionServiceImpl.java

@@ -17,9 +17,11 @@ import com.fdkankan.platform.goods.common.UploadPath;
 import com.fdkankan.platform.goods.entity.CameraVersion;
 import com.fdkankan.platform.goods.mapper.ICameraVersionMapper;
 import com.fdkankan.platform.goods.service.ICameraVersionService;
+import com.fdkankan.scene.api.feign.SceneUserSceneClient;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
@@ -48,6 +50,8 @@ public class CameraVersionServiceImpl extends ServiceImpl<ICameraVersionMapper,
     private String prefixAli;
     @Resource
     private UploadToOssUtil uploadToOssUtil;
+    @Autowired
+    private SceneUserSceneClient sceneUserSceneClient;
 
     private LambdaQueryWrapper<CameraVersion> getQueryByType(String type){
         LambdaQueryWrapper<CameraVersion> queryWrapper = new LambdaQueryWrapper<>();
@@ -170,9 +174,7 @@ public class CameraVersionServiceImpl extends ServiceImpl<ICameraVersionMapper,
 
     @Override
     public int updateImageVersion(String num) {
-        //    @Update("UPDATE t_scene_pro_edit SET images_version = images_version + 1
-        //    WHERE pro_id = (SELECT id FROM t_scene_pro WHERE num=#{num} and rec_status = 'A' ) ")
-        // TODO: 2022/1/12
+        sceneUserSceneClient.updateImageVersionFromSceneProEdit(num);
         return 1;
     }
 }

+ 0 - 17
4dkankan-center-platform/src/main/java/com/fdkankan/platform/goods/service/impl/DeviceServiceImpl.java

@@ -211,23 +211,6 @@ public class DeviceServiceImpl implements IDeviceService {
     }
 
     @Override
-    public String getScenes(RequestCamera param) throws Exception {
-       // return sceneService.findScenesPagerByCondition(param, "create_time desc");
-        //todo findScenesPagerByCondition
-        return ServerCode.SUCCESS.message();
-    }
-
-    @Override
-    public String deleteScene(String sceneNum) throws Exception {
-//        Result result = sceneService.deleteScene(sceneNum);
-//        if (result.getCode() == Result.CODE_FAILURE){
-//            throw new Exception(LoginConstant.ERROR_MSG);
-//        }
-        //todo deleteScene
-        return ServerCode.SUCCESS.message();
-    }
-
-    @Override
     public Camera findByChildNameAndChildPassword(String appUserName, String appPassword) throws Exception{
         Camera dbCameraEntity = cameraService.getByChildName(appUserName);
         if (dbCameraEntity == null){

+ 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;
+}

+ 77 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/controller/manager/ManagerDownLoadOrderController.java

@@ -0,0 +1,77 @@
+package com.fdkankan.platform.order.controller.manager;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.common.controller.BaseController;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.platform.order.service.IDownloadOrderService;
+import com.fdkankan.platform.user.request.RequestOrder;
+import com.fdkankan.platform.user.vo.ResponseOrder;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.File;
+import java.net.URLEncoder;
+
+@Log4j2
+@RestController
+@RequestMapping("/api/manager/downloadOrder")
+public class ManagerDownLoadOrderController extends BaseController {
+
+    @Autowired
+    private IDownloadOrderService downloadOrderService;
+
+    /**
+     * 获取订单列表
+     * @return
+     */
+    @PostMapping(value = {"/list"})
+    public Page<ResponseOrder> list(@RequestBody RequestOrder param) throws Exception {
+         return downloadOrderService.getOrderList(param);
+    }
+
+    /**
+     * 获取订单详情
+     * @return
+     */
+    @RequestMapping(value = "/detail", method = RequestMethod.POST)
+    public ResponseOrder detail(@RequestBody RequestOrder param) throws Exception {
+         return downloadOrderService.findByOrderId(param.getOrderId());
+    }
+
+    /**
+     * 订单发货确认
+     */
+    @GetMapping(value = "/export")
+    public void export(String type, String orderSn, String phoneNum, String expressNum, String startDate, String endDate,String tradeNum) throws Exception {
+        RequestOrder param = new RequestOrder();
+        param.setType(type);
+        param.setOrderSn(orderSn);
+        param.setPhoneNum(phoneNum);
+        param.setTradeNum(tradeNum);
+        param.setExpressNum(expressNum);
+        param.setStartDate(startDate);
+        param.setEndDate(endDate);
+        String filePath  = downloadOrderService.export(param);
+        if(ObjectUtils.isEmpty(filePath)){
+            throw new BusinessException(-1,"下载失败,请重试");
+        }
+        String fileName = URLEncoder.encode(new File(filePath).getName(), "UTF-8");
+
+        String agent = request.getHeader("User-Agent");
+        if (agent != null && (agent.contains("MSIE")||agent.contains("Trident"))) {
+            fileName = URLEncoder.encode(fileName, "UTF-8");
+        } else {
+            //非IE浏览器的处理:
+            fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
+        }
+        response.setHeader("Content-Disposition", "attachment; filename=\""+fileName+"\"");
+        response.setContentType(request.getServletContext().getMimeType(fileName));
+        File file = new File(filePath);
+        response.setContentLength((int) file.length());
+        output(response, file);
+    }
+
+
+}

+ 82 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/controller/manager/ManagerInCrementOrderController.java

@@ -0,0 +1,82 @@
+package com.fdkankan.platform.order.controller.manager;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.common.controller.BaseController;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.platform.order.service.IIncrementOrderService;
+import com.fdkankan.platform.user.request.RequestOrder;
+import com.fdkankan.platform.user.vo.ResponseOrder;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.io.File;
+import java.net.URLEncoder;
+
+@Log4j2
+@RestController
+@RequestMapping("/api/manager/incrementOrder")
+public class ManagerInCrementOrderController extends BaseController {
+
+    @Autowired
+    private IIncrementOrderService incrementOrderService;
+
+    /**
+     * 获取订单列表
+     * @return
+     */
+    @RequestMapping(value = {"/list"}, method = RequestMethod.POST)
+    public Page<ResponseOrder> list(@RequestBody RequestOrder param) throws Exception {
+        return incrementOrderService.getOrderList(param);
+    }
+
+    /**
+     * 获取订单详情
+     * @return
+     */
+    @RequestMapping(value = "/detail", method = RequestMethod.POST)
+    public ResponseOrder detail(@RequestBody RequestOrder param) throws Exception {
+        return incrementOrderService.findOrderByOrderId(param.getOrderId());
+    }
+
+    /**
+     * 订单发货确认
+     */
+    @RequestMapping(value = "/export", method = RequestMethod.GET)
+    public void export(String type, String orderSn, String phoneNum, String expressNum, String startDate, String endDate,String tradeNum) throws Exception {
+        RequestOrder param = new RequestOrder();
+        param.setType(type);
+        param.setOrderSn(orderSn);
+        param.setPhoneNum(phoneNum);
+        param.setExpressNum(expressNum);
+        param.setTradeNum(tradeNum);
+        param.setStartDate(startDate);
+        param.setEndDate(endDate);
+        String filePath  = incrementOrderService.export(param);
+        if(ObjectUtils.isEmpty(filePath)){
+            throw new BusinessException(-1,"下载失败,请重试");
+        }
+        if(ObjectUtils.isEmpty(filePath)){
+            throw new BusinessException(-1,"下载失败,请重试");
+        }
+        String fileName = URLEncoder.encode(new File(filePath).getName(), "UTF-8");
+        String agent = request.getHeader("User-Agent");
+        if (agent != null && (agent.contains("MSIE")||agent.contains("Trident"))) {
+            fileName = URLEncoder.encode(fileName, "UTF-8");
+        } else {
+            //非IE浏览器的处理:
+            fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
+        }
+        response.setHeader("Content-Disposition", "attachment; filename=\""+fileName+"\"");
+        response.setContentType(request.getServletContext().getMimeType(fileName));
+        File file = new File(filePath);
+        response.setContentLength((int) file.length());
+        output(response, file);
+
+    }
+
+}

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

@@ -1,9 +1,15 @@
 package com.fdkankan.platform.order.mapper;
 
-import com.fdkankan.platform.order.entity.DownloadOrder;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.platform.goods.vo.SceneCountVo;
+import com.fdkankan.platform.order.entity.DownloadOrder;
+import com.fdkankan.platform.user.request.RequestOrder;
+import com.fdkankan.platform.user.vo.ResponseOrder;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * <p>
  * 下载次数订单表 Mapper 接口
@@ -15,4 +21,7 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface IDownloadOrderMapper extends BaseMapper<DownloadOrder> {
 
+    List<SceneCountVo> getCountBySceneNum();
+
+    Page<ResponseOrder> getOrderList(Page<DownloadOrder> objectPage, RequestOrder param);
 }

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

@@ -1,7 +1,10 @@
 package com.fdkankan.platform.order.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.platform.order.entity.IncrementOrder;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fdkankan.platform.user.request.RequestOrder;
+import com.fdkankan.platform.user.vo.ResponseOrder;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -15,4 +18,5 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface IIncrementOrderMapper extends BaseMapper<IncrementOrder> {
 
+    Page<ResponseOrder> getOrderList(Page<Object> objectPage, RequestOrder param);
 }

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

@@ -1,13 +1,16 @@
 package com.fdkankan.platform.order.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fdkankan.platform.order.entity.DownloadOrder;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.platform.order.entity.DownloadOrder;
 import com.fdkankan.platform.user.request.RequestDownloadOrder;
 import com.fdkankan.platform.user.request.RequestIncrementOrder;
+import com.fdkankan.platform.user.request.RequestOrder;
 import com.fdkankan.platform.user.vo.ResponseDownloadOrder;
+import com.fdkankan.platform.user.vo.ResponseOrder;
 
 import java.math.BigDecimal;
+import java.util.HashMap;
 
 /**
  * <p>
@@ -28,4 +31,12 @@ public interface IDownloadOrderService extends IService<DownloadOrder> {
     boolean paySuccessDownloadOrder(String orderSn, String tradeNo, int paymentTypeName);
 
     ResponseDownloadOrder getVoById(Long downloadOrderId);
+
+    HashMap<String, Integer> getCountBySceneNum();
+
+    Page<ResponseOrder> getOrderList(RequestOrder param);
+
+    ResponseOrder findByOrderId(Long orderId);
+
+    String export(RequestOrder param);
 }

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

@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.platform.order.entity.IncrementOrder;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.platform.user.request.RequestIncrementOrder;
+import com.fdkankan.platform.user.request.RequestOrder;
 import com.fdkankan.platform.user.vo.ResponseIncrementOrder;
+import com.fdkankan.platform.user.vo.ResponseOrder;
 
 import java.math.BigDecimal;
 
@@ -27,4 +29,10 @@ public interface IIncrementOrderService extends IService<IncrementOrder> {
     boolean paySuccessIncrementOrder(String orderSn, String tradeNo, int paymentTypeName);
 
     ResponseIncrementOrder getVoById(Long incrementOrderId);
+
+    Page<ResponseOrder> getOrderList(RequestOrder param);
+
+    ResponseOrder findOrderByOrderId(Long orderId);
+
+    String export(RequestOrder param);
 }

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

@@ -53,4 +53,6 @@ public interface IInvoiceService extends IService<Invoice> {
     String sendExpress(RequestInvoice param);
 
     List<ResponseInvoice> getVoListByParam(RequestTrade param);
+
+    Invoice getInvoiceByDownloadOrderId(Long downloadOrderId);
 }

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

@@ -4,11 +4,17 @@ 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.FileUtils;
 import com.fdkankan.common.util.NumberUtils;
+import com.fdkankan.platform.common.ConstantExcel;
+import com.fdkankan.platform.common.ExcelUtil;
 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;
@@ -16,18 +22,21 @@ import com.fdkankan.platform.order.service.IDownloadOrderService;
 import com.fdkankan.platform.order.service.IInvoiceService;
 import com.fdkankan.platform.user.request.RequestDownloadOrder;
 import com.fdkankan.platform.user.request.RequestIncrementOrder;
+import com.fdkankan.platform.user.request.RequestOrder;
 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 com.fdkankan.platform.user.vo.ResponseOrder;
+import com.fdkankan.platform.util.ResultConvertUtil;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * <p>
@@ -44,6 +53,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 +159,110 @@ 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;
+    }
+
+    @Override
+    public Page<ResponseOrder> getOrderList(RequestOrder param) {
+        Page<ResponseOrder> orderList = downloadOrderMapper.getOrderList(new Page<>(param.getPageNum(), param.getPageSize()), param);
+        ResultConvertUtil.getOrderList(orderList.getRecords());
+        return orderList;
+    }
+
+    @Override
+    public ResponseOrder findByOrderId(Long orderId) {
+        DownloadOrder order = this.getById(orderId);
+        ResponseOrder responseOrder = new ResponseOrder();
+        if (order != null){
+            responseOrder.setId(order.getId());
+            responseOrder.setOrderSn(order.getOrderSn());
+            responseOrder.setOrderStatus("已完成");
+            if (order.getPayStatus().equals(1)) {
+                responseOrder.setPaymentStatus("已付款");
+            }
+            if (order.getPayStatus().equals(-2)) {
+                responseOrder.setPaymentStatus("已退款");
+            }
+            if (order.getPayStatus() <= 0) {
+                responseOrder.setPaymentStatus("未付款");
+            }
+            responseOrder.setPaymentTypeName(order.getPayType());
+            responseOrder.setTotalAmount(order.getAmount());
+            responseOrder.setOrderTime(order.getCreateTime());
+            responseOrder.setFinishTime(order.getTradeTime());
+            responseOrder.setUserId(order.getUserId());
+            Invoice  invoice = invoiceService.getInvoiceByDownloadOrderId(order.getId());
+            if(invoice != null){
+                ResponseInvoice responseInvoice = new ResponseInvoice();
+                BeanUtils.copyProperties(invoice, responseInvoice);
+                responseOrder.setInvoice(responseInvoice);
+            }
+        }
+        return responseOrder;
+    }
+
+    @Override
+    public String export(RequestOrder param) {
+        List<ResponseOrder> orders = downloadOrderMapper.getOrderList(null, param).getRecords();
+        List<Map> dataList = new ArrayList<Map>();
+        int serNum = 1;
+        for (int i = 0; i < orders.size(); ++i) {
+            ResponseOrder order = orders.get(i);
+            Map<String, String> item = new HashMap();
+            String num = order.getOrderSn();
+            if (order.getPaymentStatus().equals("0") || order.getPaymentStatus().equals("-1")) { //未支付
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[0], String.valueOf(serNum));
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[1], "");
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[10], "未付款");
+            } else if (order.getPaymentStatus().equals("1")){
+                //支付成功
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[0], String.valueOf(serNum));
+                if(!ObjectUtils.isEmpty(order.getFinishTime())){
+                    item.put(ConstantExcel.ORDEREXCELCOLENNAME[1], new SimpleDateFormat("yyyyMMddhhmmss").format(order.getFinishTime()));
+                }
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[10], "已付款");
+            } else if(order.getPaymentStatus().equals("-2")){
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[10], "全额退款");
+            }
+
+            item.put(ConstantExcel.ORDEREXCELCOLENNAME[2], order.getOrderSn());
+            item.put(ConstantExcel.ORDEREXCELCOLENNAME[3], order.getUserName());
+            item.put(ConstantExcel.ORDEREXCELCOLENNAME[4], String.valueOf(order.getTotalAmount()));
+            if (order.getPaymentTypeName() == -1) {
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[5], "未支付");
+            } else {
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[5], ConstantExcel.PAYFORM[order.getPaymentTypeName()]);
+            }
+            item.put(ConstantExcel.ORDEREXCELCOLENNAME[9], "已确认");
+            item.put(ConstantExcel.ORDEREXCELCOLENNAME[12], order.getTradeNum());
+
+            Invoice invoice = invoiceService.getInvoiceByDownloadOrderId(order.getId());
+            if (!ObjectUtils.isEmpty(invoice)) {
+                int type = invoice.getType();
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[13], ConstantExcel.INVOICE[type - 1]);
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[14], invoice.getTitle());
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[15], invoice.getCode());
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[16], invoice.getOrganizedAddress());
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[17], invoice.getRegisterPhone());
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[18], invoice.getBankName());
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[19], invoice.getBankAccount());
+            }
+            ++serNum;
+            dataList.add(item);
+        }
+        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        String dateStr = dateFormat.format(new Date());
+        String filePath = FileUtils.getResource().concat("excel/");
+        FileUtils.createDir(filePath);
+
+        ExcelUtil.writeExcel(dataList, 20, filePath + dateStr + ".xls", 1);
+        return filePath + dateStr + ".xls";    }
 }

+ 113 - 3
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/IncrementOrderServiceImpl.java

@@ -7,7 +7,10 @@ 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.FileUtils;
 import com.fdkankan.common.util.NumberUtils;
+import com.fdkankan.platform.common.ConstantExcel;
+import com.fdkankan.platform.common.ExcelUtil;
 import com.fdkankan.platform.goods.common.SkuCache;
 import com.fdkankan.platform.goods.service.IGoodsSkuService;
 import com.fdkankan.platform.goods.vo.ResponseGoodsSku;
@@ -17,16 +20,21 @@ import com.fdkankan.platform.order.mapper.IIncrementOrderMapper;
 import com.fdkankan.platform.order.service.IIncrementOrderService;
 import com.fdkankan.platform.order.service.IInvoiceService;
 import com.fdkankan.platform.user.request.RequestIncrementOrder;
+import com.fdkankan.platform.user.request.RequestOrder;
 import com.fdkankan.platform.user.vo.ResponseIncrementOrder;
 import com.fdkankan.platform.user.vo.ResponseInvoice;
+import com.fdkankan.platform.user.vo.ResponseOrder;
+import com.fdkankan.platform.util.ResultConvertUtil;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * <p>
@@ -43,6 +51,8 @@ public class IncrementOrderServiceImpl extends ServiceImpl<IIncrementOrderMapper
     private IGoodsSkuService goodsSkuService;
     @Autowired
     private IInvoiceService invoiceService;
+    @Resource
+    private IIncrementOrderMapper incrementOrderMapper;
 
     @Override
     public ResponseIncrementOrder saveByOrderParam(Long userId, RequestIncrementOrder order, BigDecimal price) {
@@ -147,4 +157,104 @@ public class IncrementOrderServiceImpl extends ServiceImpl<IIncrementOrderMapper
         }
         return responseIncrementOrder;
     }
+
+    @Override
+    public Page<ResponseOrder> getOrderList(RequestOrder param) {
+        Page<ResponseOrder> orderList = incrementOrderMapper.getOrderList(new Page<>(param.getPageNum(), param.getPageSize()), param);
+        ResultConvertUtil.getOrderList(orderList.getRecords());
+        return orderList;
+    }
+
+    @Override
+    public ResponseOrder findOrderByOrderId(Long orderId) {
+        IncrementOrder order = this.getById(orderId);
+        ResponseOrder responseOrder = new ResponseOrder();
+        if (order != null){
+            responseOrder.setId(order.getId());
+            responseOrder.setOrderSn(order.getOrderSn());
+            responseOrder.setOrderStatus("已完成");
+            if (order.getPayStatus().equals(1)) {
+                responseOrder.setPaymentStatus("已付款");
+            }
+            if (order.getPayStatus().equals(-2)) {
+                responseOrder.setPaymentStatus("已退款");
+            }
+            if (order.getPayStatus() <= 0) {
+                responseOrder.setPaymentStatus("未付款");
+            }
+            responseOrder.setPaymentTypeName(order.getPayType());
+            responseOrder.setTotalAmount(order.getAmount());
+            responseOrder.setOrderTime(order.getCreateTime());
+            responseOrder.setFinishTime(order.getTradeTime());
+            responseOrder.setUserId(order.getUserId());
+            Invoice  invoice = invoiceService.getInvoiceByDownloadOrderId(order.getId());
+            if(invoice != null){
+                ResponseInvoice responseInvoice = new ResponseInvoice();
+                BeanUtils.copyProperties(invoice, responseInvoice);
+                responseOrder.setInvoice(responseInvoice);
+            }
+        }
+        return responseOrder;
+    }
+
+    @Override
+    public String export(RequestOrder param) {
+        List<ResponseOrder> orders = incrementOrderMapper.getOrderList(null,param).getRecords();
+        List<Map> dataList = new ArrayList<Map>();
+        int serNum = 1;
+        for (int i = 0; i < orders.size(); ++i) {
+            ResponseOrder order = orders.get(i);
+            Map<String, String> item = new HashMap();
+            String num = order.getOrderSn();
+            if (order.getPaymentStatus().equals("0") || order.getPaymentStatus().equals("-1")) { //未支付
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[0], String.valueOf(serNum));
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[1], "");
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[10], "未付款");
+            } else if (order.getPaymentStatus().equals("1")){
+                //支付成功
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[0], String.valueOf(serNum));
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[1], new SimpleDateFormat("yyyyMMddhhmmss").format(order.getFinishTime()));
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[10], "已付款");
+            } else if(order.getPaymentStatus().equals("-2")){
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[10], "全额退款");
+            }
+
+            item.put(ConstantExcel.ORDEREXCELCOLENNAME[2], order.getOrderSn());
+            item.put(ConstantExcel.ORDEREXCELCOLENNAME[3], order.getUserName());
+            item.put(ConstantExcel.ORDEREXCELCOLENNAME[4], String.valueOf(order.getTotalAmount()));
+            if (order.getPaymentTypeName() == -1) {
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[5], "未支付");
+            } else {
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[5], ConstantExcel.PAYFORM[order.getPaymentTypeName()]);
+            }
+            item.put(ConstantExcel.ORDEREXCELCOLENNAME[6], order.getShipAddress());
+            item.put(ConstantExcel.ORDEREXCELCOLENNAME[7], order.getShipMobile());
+            item.put(ConstantExcel.ORDEREXCELCOLENNAME[8], order.getShipName());
+            item.put(ConstantExcel.ORDEREXCELCOLENNAME[9], "已确认");
+
+            item.put(ConstantExcel.ORDEREXCELCOLENNAME[12], order.getTradeNum());
+
+            Invoice invoice = invoiceService.getInvoiceByDownloadOrderId(order.getId());
+            if (!ObjectUtils.isEmpty(invoice)) {
+                int type = invoice.getType();
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[13], ConstantExcel.INVOICE[type - 1]);
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[14], invoice.getTitle());
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[15], invoice.getCode());
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[16], invoice.getOrganizedAddress());
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[17], invoice.getRegisterPhone());
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[18], invoice.getBankName());
+                item.put(ConstantExcel.ORDEREXCELCOLENNAME[19], invoice.getBankAccount());
+            }
+            ++serNum;
+            dataList.add(item);
+        }
+        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        String dateStr = dateFormat.format(new Date());
+
+        String filePath = FileUtils.getResource().concat("excel/");
+        FileUtils.createDir(filePath);
+
+        ExcelUtil.writeExcel(dataList, 20, filePath + dateStr + ".xls", 1);
+
+        return filePath + dateStr + ".xls";    }
 }

+ 13 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/order/service/impl/InvoiceServiceImpl.java

@@ -485,4 +485,17 @@ public class InvoiceServiceImpl extends ServiceImpl<IInvoiceMapper, Invoice> imp
         this.updateById(invoiceEntity);
         return invoiceEntity;
     }
+
+    @Override
+    public Invoice getInvoiceByDownloadOrderId(Long downloadOrderId) {
+        LambdaQueryWrapper<Invoice> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Invoice::getDownloadOrderId,downloadOrderId)
+                .eq(Invoice::getTbStatus,TbStatus.VALID.code());
+        queryWrapper.last("LIMIT 1");
+        List<Invoice> list = this.list(queryWrapper);
+        if(list == null || list.size() <=0 ){
+            return  null;
+        }
+        return list.get(0);
+    }
 }

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

@@ -2,6 +2,7 @@ package com.fdkankan.platform.user.controller.api;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.common.controller.BaseController;
+import com.fdkankan.common.response.ResultData;
 import com.fdkankan.platform.goods.entity.CameraDetailNumEntity;
 import com.fdkankan.platform.goods.service.ICameraService;
 import com.fdkankan.platform.user.request.RequestCamera;
@@ -151,7 +152,7 @@ public class UserCameraController extends BaseController {
      * cameraId  相机id
      */
     @RequestMapping(value = "/sceneResourceByCameraId", method = RequestMethod.POST)
-    public String sceneResourceByCameraId(@RequestBody RequestCamera camera,@RequestHeader String token) throws Exception{
+    public ResultData sceneResourceByCameraId(@RequestBody RequestCamera camera, @RequestHeader String token) throws Exception{
         return userService.sceneResourceByCameraId(camera);
     }
 
@@ -159,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);
     }
 
     /**

+ 2 - 1
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/controller/manager/ManagerUserController.java

@@ -3,6 +3,7 @@ package com.fdkankan.platform.user.controller.manager;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.common.controller.BaseController;
+import com.fdkankan.common.response.ResultData;
 import com.fdkankan.platform.user.entity.IncrementLog;
 import com.fdkankan.platform.user.entity.Manager;
 import com.fdkankan.platform.user.entity.ReceiverInfo;
@@ -183,7 +184,7 @@ public class ManagerUserController extends BaseController {
      * @return
      */
     @RequestMapping(value = "/checkDownload", method = RequestMethod.POST)
-    public Map<String, Object> checkDownload(@RequestBody RequestUser param) throws Exception{
+    public ResultData checkDownload(@RequestBody RequestUser param) throws Exception{
         return userSceneService.checkDownload(param);
     }
 

+ 2 - 6
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/IUserSceneService.java

@@ -1,9 +1,9 @@
 package com.fdkankan.platform.user.service;
 
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.platform.user.request.RequestUser;
+
 import java.util.Map;
 
 /**
@@ -16,14 +16,10 @@ import java.util.Map;
  **/
 public interface IUserSceneService {
 
-    Map<String, Object> checkDownload(RequestUser param);
+    ResultData checkDownload(RequestUser param);
 
     Map<String, Object> downloadSceneAdmin(RequestUser param, String token);
 
     JSONObject getSceneDownloadProcessAdmin(String sceneNum) throws Exception;
 
-//    Page<SceneVO> getScenes(String token, SceneParamVO param);
-
-//    ResultData findSceneNumber(long userId, String snCode);
-
 }

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

@@ -16,7 +16,6 @@ import com.fdkankan.platform.user.vo.SSOUserVo;
 
 import java.util.HashMap;
 import java.util.List;
-import org.springframework.web.bind.annotation.RequestParam;
 
 /**
  * <p>
@@ -80,7 +79,7 @@ public interface IUserService extends IService<User> {
 
     String saveCooperationUser(RequestCamera camera, String token) throws Exception;
 
-    String sceneResourceByCameraId(RequestCamera camera);
+    ResultData sceneResourceByCameraId(RequestCamera camera);
 
     SSOUser getSSOUserByUserId(Long userId);
 

+ 7 - 40
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/UserSceneServiceImpl.java

@@ -3,6 +3,7 @@ package com.fdkankan.platform.user.service.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.response.ResultData;
 import com.fdkankan.platform.common.DownloadStatusEnum;
 import com.fdkankan.platform.goods.service.ICameraService;
 import com.fdkankan.platform.user.request.RequestUser;
@@ -10,12 +11,13 @@ import com.fdkankan.platform.user.service.IUserSceneService;
 import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.scene.api.feign.SceneUserSceneClient;
-import java.util.HashMap;
-import java.util.Map;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
+import java.util.Map;
+
 @Service
 public class UserSceneServiceImpl implements IUserSceneService {
 
@@ -28,13 +30,11 @@ public class UserSceneServiceImpl implements IUserSceneService {
 
 
     @Override
-    public Map<String, Object> checkDownload(RequestUser param) {
+    public ResultData checkDownload(RequestUser param) {
         if(StringUtils.isEmpty(param.getSceneNum())){
             throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
         }
-        Map<String, Object> result = new HashMap<>();
-        //todo
-        return result;
+        return sceneUserSceneClient.checkDownLoad(param.getSceneNum());
     }
 
     @Override
@@ -42,17 +42,7 @@ public class UserSceneServiceImpl implements IUserSceneService {
         if(StringUtils.isEmpty(param.getSceneNum())){
             throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
         }
-
-//        ScenePro sceneProEntity = sceneService.findProBySceneNum(param.getSceneNum());
-//        if(sceneProEntity == null){
-//            throw new BusinessException(SceneConstant.FAILURE_CODE_5005, SceneConstant.FAILURE_MSG_5005);
-//        }
-//
-//        SceneProEditEntity sceneProEditEntity = sceneProEditService.findByProId(sceneProEntity.getId());
-//        if(sceneProEditEntity == null){
-//            throw new BusinessException(SceneConstant.FAILURE_CODE_5005, SceneConstant.FAILURE_MSG_5005);
-//        }
-        //todo findProBySceneNum  findByProId
+        sceneUserSceneClient.checkDownLoad(param.getSceneNum());
         Map<String, Object> result = new HashMap<>();
 
         result.put("downloadStatus", 1);
@@ -73,7 +63,6 @@ public class UserSceneServiceImpl implements IUserSceneService {
         // 获取下载进度
         String processStr = redisUtil.get(String.format(RedisKey.PREFIX_DOWNLOAD_PROGRESS, sceneNum));
         if (StringUtils.isEmpty(processStr)) {
-            Map<String, Object> result = new HashMap<>(1);
             JSONObject object = new JSONObject();
             object.put("status", 1000);
             object.put("url", "");
@@ -94,27 +83,5 @@ public class UserSceneServiceImpl implements IUserSceneService {
         return process;
     }
 
-//    @Override
-//    public ResultData findSceneNumber(long userId, String snCode) {
-//        Map<String, Object> map = new HashMap<>();
-//        Camera camera = null;
-//        if (!ObjectUtils.isEmpty(snCode)) {
-//            camera = cameraService.getBySnCode(snCode);
-//            if(ObjectUtils.isEmpty(camera)){
-//                map.put("sceneNum", 0);
-//                map.put("cooperatimeNum", 0);
-//                return ResultData.ok(map);
-//            }
-//        }
-//
-//        //双目场景数量
-//        ResultData<SceneCnt> resultData = sceneUserSceneClient.getSceneCnt(userId, Objects.isNull(camera) ? null : camera.getId());
-//        SceneCnt sceneCnt = resultData.getData();
-//        map.put("sceneNum", sceneCnt.getSceneCnt() + sceneCnt.getSceneProCnt());
-//        map.put("cooperatimeNum", sceneCnt.getCooperSceneCnt());
-//
-//        return ResultData.ok(map);
-//    }
-
 
 }

+ 7 - 14
4dkankan-center-platform/src/main/java/com/fdkankan/platform/user/service/impl/UserServiceImpl.java

@@ -395,16 +395,7 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
             if(userIncrementEntity != null){
                 userIncrementService.unbindCamera(cameraDetailEntity.getUserId(), userIncrementEntity.getId(), true,cameraDetailEntity,userIncrementEntity);
             }
-
-            //todo
-//            if (cameraDetailEntity.getType() == 0){
-//                result2 = sceneService.updateUserIdByCameraId(null, Long.valueOf(id));
-//            }else {
-//                result2 = sceneService.updateUserIdByCameraIdPro(null, Long.valueOf(id));
-//            }
-//            if (result2.getCode() == Result.CODE_FAILURE){
-//                throw new Exception(LoginConstant.ERROR_MSG);
-//            }
+            sceneUserSceneClient.updateUserIdByCameraId(null,Long.valueOf(id));
             RequestCamera camera = new RequestCamera();
             camera.setCameraId(Long.valueOf(id));
             deleteCooperationUser(camera,cameraDetailEntity);
@@ -482,15 +473,17 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
     }
 
     @Override
-    public String sceneResourceByCameraId(RequestCamera camera) {
-        //todo
-        return null;
+    public ResultData sceneResourceByCameraId(RequestCamera camera) {
+        if(camera.getCameraId() == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        return sceneUserSceneClient.getSceneResourceByCameraId(camera.getCameraId());
     }
 
     @Override
     public SSOUser getSSOUserByUserId(Long userId) {
         User user = this.getById(userId);
-        if(user == null || "I".equals(user)){
+        if(user == null || 1 == user.getTbStatus()){
             throw new BusinessException(ErrorCode.USER_NOT_EXIST);
         }
         return this.getSsoUserByUserName(user,user.getUserName());

+ 21 - 0
4dkankan-center-platform/src/main/java/com/fdkankan/platform/util/ResultConvertUtil.java

@@ -0,0 +1,21 @@
+package com.fdkankan.platform.util;
+
+import com.fdkankan.platform.order.constant.OrderEnum;
+import com.fdkankan.platform.user.vo.ResponseOrder;
+
+import java.util.List;
+
+public class ResultConvertUtil {
+
+    public static void getOrderList(List<ResponseOrder> orderList) {
+        for (ResponseOrder order : orderList) {
+            order.setOrderStatus("completed");
+            switch (order.getPaymentTypeName()){
+                case 1 :  order.setPaymentStatus(OrderEnum.PaymentStatus.paid.name());    break;
+                case -2 : order.setPaymentStatus(OrderEnum.PaymentStatus.refunded.name());break;
+                default:  order.setPaymentStatus(OrderEnum.PaymentStatus.unpaid.name());  break;
+            }
+        }
+    }
+
+}

+ 11 - 0
4dkankan-center-platform/src/main/resources/mapper/agent/AppFileMapper.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.platform.agent.mapper.IAppFileMapper">
+
+    <select id="agentList" resultType="string">
+        select distinct agent from t_app_file
+        <if test="name != null and name !='' ">
+            where name like concat('%',#{name},'%')
+        </if>
+    </select>
+</mapper>

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

@@ -2,4 +2,30 @@
 <!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>
+
+    <select id="getOrderList" resultType="com.fdkankan.platform.user.vo.ResponseOrder" >
+        SELECT o.id,o.order_sn,o.create_time orderTime,amount totalAmount,pay_type paymentTypeName,number trade_num,
+                o.pay_status paymentStatus,trade_time finishTime,o.user_id, c.sn_code snCode,
+                abroad, u.user_name,o.scene_num sceneNum,o.scene_name sceneName  FROM t_download_order o
+         LEFT JOIN t_scene_pro s on s.num = o.scene_num
+         LEFT JOIN t_camera c on c.id = s.camera_id
+         LEFT JOIN t_user u on o.user_id = u.id
+         where o.tb_status = 0 and (o.pay_status = 1 or o.pay_status = -2)
+        <if test="  param.phoneNum != null and  param.phoneNum !='' " >
+            and u.user_name like  CONCAT('%',#{param.phoneNum},'%'))
+        </if>
+        <if test="param.startDate != null and param.startDate !='' " >
+            and o.create_time &gt;= ${param.startDate} '00:00:00'
+        </if>
+        <if test=" param.endDate != null and param.endDate !='' " >
+            and o.create_time &lt;= ${param.endDate} '23:59:59'
+        </if>
+        <if test="  param.tradeNum != null and  param.tradeNum !='' " >
+            and o.number like  CONCAT('%',#{param.tradeNum},'%'))
+        </if>
+        order by o.create_time desc
+    </select>
 </mapper>

+ 26 - 0
4dkankan-center-platform/src/main/resources/mapper/order/IncrementOrderMapper.xml

@@ -2,4 +2,30 @@
 <!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.IIncrementOrderMapper">
 
+    <select id="getOrderList" resultType="com.fdkankan.platform.user.vo.ResponseOrder" >
+        SELECT o.id,o.order_sn,o.create_time orderTime,amount totalAmount,
+        pay_type paymentTypeName,pay_status paymentStatus,number trade_num,trade_time finishTime,
+        count goodsNum, user_id,abroad, u.user_name FROM t_increment_order o
+        LEFT JOIN t_user u on o.user_id = u.id
+        <if test="param.expressNum !=null and param.expressNum !='' ">
+            LEFT JOIN t_order_item oi on oi.order_id = o.id
+        </if>
+        where o.tb_status = 0 and (o.pay_status = 1 or o.pay_status = -2)
+        <if test="  param.phoneNum != null and  param.phoneNum !='' " >
+            and u.user_name like  CONCAT('%',#{param.phoneNum},'%'))
+        </if>
+        <if test="param.startDate != null and param.startDate !='' " >
+            and o.create_time &gt;= ${param.startDate} '00:00:00'
+        </if>
+        <if test=" param.endDate != null and param.endDate !='' " >
+            and o.create_time &lt;= ${param.endDate} '23:59:59'
+        </if>
+        <if test="  param.orderSn != null and  param.orderSn !='' " >
+            and o.order_sn like  CONCAT('%',#{param.orderSn},'%'))
+        </if>
+        <if test="  param.tradeNum != null and  param.tradeNum !='' " >
+            and o.number like  CONCAT('%',#{param.tradeNum},'%'))
+        </if>
+        order by o.create_time desc
+    </select>
 </mapper>

+ 53 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneApplyController.java

@@ -0,0 +1,53 @@
+package com.fdkankan.scene.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.scene.entity.SceneApply;
+import com.fdkankan.scene.service.ISceneApplyService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * @author 
+ * @since 2022-04-27
+ */
+@RestController
+@RequestMapping("/api/demo/scene")
+public class SceneApplyController {
+    @Autowired
+    private ISceneApplyService sceneApplyService;
+
+    /**
+     * 新增演示场景申请
+     */
+    @PostMapping("/save")
+    public ResultData save(@RequestBody SceneApply sceneApplyEntity){
+        sceneApplyService.save(sceneApplyEntity);
+        return ResultData.ok();
+    }
+
+    @PostMapping("/pageList")
+    public ResultData pageList(@RequestBody JSONObject param){
+        Integer page =param.get("pageNum") == null ? 1 : param.getInteger("pageNum");
+        Integer pageSize =param.get("pageSize") == null ? 10 : param.getInteger("pageSize");
+        return ResultData.ok(sceneApplyService.page(new Page<>(page,pageSize)));
+    }
+
+    @PostMapping("/delete")
+    public ResultData delete(@RequestBody JSONObject param){
+        if(param.get("id") == null){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        sceneApplyService.removeById(param.getInteger("id"));
+        return ResultData.ok();
+    }
+}
+

+ 10 - 11
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneController.java

@@ -1,22 +1,13 @@
 package com.fdkankan.scene.controller;
 
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fdkankan.common.constant.ErrorCode;
-import com.fdkankan.common.constant.PayStatus;
 import com.fdkankan.common.constant.SceneInfoReqType;
-import com.fdkankan.common.constant.ServerCode;
-import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.common.controller.BaseController;
 import com.fdkankan.common.response.ResultData;
-import com.fdkankan.redis.util.RedisUtil;
-import com.fdkankan.scene.entity.SceneDataDownload;
-import com.fdkankan.scene.entity.SceneEditInfo;
-import com.fdkankan.scene.entity.ScenePro;
 import com.fdkankan.scene.service.*;
 import com.fdkankan.scene.vo.*;
-import java.util.Objects;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -31,7 +22,7 @@ import org.springframework.web.bind.annotation.*;
  */
 @RestController
 @RequestMapping("/service/scene")
-public class SceneController {
+public class SceneController extends BaseController{
 
     @Autowired
     ISceneProService sceneProService;
@@ -208,6 +199,14 @@ public class SceneController {
     public ResultData getStatusByScene(SceneParamVO param) throws Exception{
         return sceneProService.getStatusByScene(param);
     }
+    /**
+     *    获取场景信息接口
+     */
+    @RequestMapping(value = "/getScenesBySnCode", method = RequestMethod.GET)
+    public ResultData getScenesBySnCode(String snCode) throws Exception{
+        return sceneProService.getScenesBySnCode(snCode,getToken());
+    }
+
 
     /**
      * <p>

+ 2 - 3
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/UserSceneController.java

@@ -44,9 +44,8 @@ public class UserSceneController extends BaseController {
      * @return
      */
     @PostMapping(value = "/findSceneNumber")
-    public ResultData findSceneNumber(String snCode) throws Exception{
-        Long userId = this.getUserId();
-        return userSceneService.findSceneNumber(userId, snCode);
+    public ResultData findSceneNumber() throws Exception{
+        return userSceneService.findSceneNumber(getToken());
     }
 
     /**

+ 87 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/SceneApply.java

@@ -0,0 +1,87 @@
+package com.fdkankan.scene.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2022-04-27
+ */
+@Getter
+@Setter
+@TableName("t_scene_apply")
+public class SceneApply implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 姓名
+     */
+    @TableField("name")
+    private String name;
+
+    /**
+     * 手机号码
+     */
+    @TableField("phone")
+    private String phone;
+
+    /**
+     * 邮箱地址
+     */
+    @TableField("email")
+    private String email;
+
+    /**
+     * 公司
+     */
+    @TableField("company")
+    private String company;
+
+    /**
+     * 行业
+     */
+    @TableField("job")
+    private String job;
+
+    /**
+     * 大洲
+     */
+    @TableField("continent")
+    private String continent;
+
+    /**
+     * 国家
+     */
+    @TableField("country")
+    private String country;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+    @TableField("tb_status")
+    @TableLogic
+    private Boolean tbStatus;
+
+
+}

+ 30 - 2
4dkankan-center-scene/src/main/java/com/fdkankan/scene/feign/UserSceenFeign.java

@@ -50,6 +50,10 @@ public class UserSceenFeign {
     ISceneCooperationService sceneCooperationService;
     @Autowired
     IFdkkLaserService fdkkLaserService;
+    @Autowired
+    ISceneProEditService sceneProEditService;
+    @Autowired
+    ISceneResourceService sceneResourceService;
 
     @PostMapping("/getSceneCnt")
     ResultData<SceneCntDTO> getSceneCnt(@RequestParam(value = "userId") Long userId, Long cameraId){
@@ -58,8 +62,10 @@ public class UserSceenFeign {
     }
 
     @PostMapping("/getSceneNumByCameraId")
-    public ResultData<Integer> getSceneNumByCameraId(@RequestParam(value = "cameraId") Long cameraId){
-        Integer sceneNum = userSceneService.getSceneNumByCameraId(cameraId);
+    ResultData<Integer> getSceneNumByCameraId(@RequestParam(value = "cameraId") Long cameraId,
+                                              @RequestParam(value = "cameraType")Integer cameraType,
+                                              @RequestParam(value = "snCode")String snCode) {
+        Integer sceneNum = userSceneService.getSceneNumByCameraId(cameraId,cameraType,snCode);
         return ResultData.ok(sceneNum);
     }
 
@@ -185,5 +191,27 @@ public class UserSceenFeign {
         }
         return sceneProList;
     }
+
+    @PostMapping("/updateImageVersionFromSceneProEdit")
+    ResultData updateImageVersionFromSceneProEdit(@RequestParam(value = "num" ) String num){
+        sceneProEditService.updateImageVersionByNum(num);
+        return ResultData.ok();
+    }
+
+    @PostMapping("/getSceneResourceByCameraId")
+    ResultData getSceneResourceByCameraId(@RequestParam(value = "cameraId" ) Long cameraId){
+        return ResultData.ok(sceneResourceService.findByCameraId(cameraId));
+    }
+    @PostMapping("/checkDownLoad")
+    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));
+    }
 }
 

+ 18 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/mapper/ISceneApplyMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.scene.mapper;
+
+import com.fdkankan.scene.entity.SceneApply;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-04-27
+ */
+@Mapper
+public interface ISceneApplyMapper extends BaseMapper<SceneApply> {
+
+}

+ 3 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/mapper/ISceneCooperationMapper.java

@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fdkankan.scene.vo.SceneParamVO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * <p>
  *  Mapper 接口
@@ -19,4 +21,5 @@ public interface ISceneCooperationMapper extends BaseMapper<SceneCooperation> {
 
     Page selectCooperationSceneListNew(SceneParamVO param);
 
+    Integer getCooperationSceneNum(Long userId, List<Integer> sceneSourceList);
 }

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

@@ -1,9 +1,10 @@
 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.SceneBySnCodeVo;
 import com.fdkankan.scene.vo.SceneParamVO;
 import com.fdkankan.scene.vo.SceneProVO;
 import com.fdkankan.scene.vo.SceneVO;
@@ -58,6 +59,7 @@ public interface ISceneProMapper extends BaseMapper<ScenePro> {
     List<SceneProPO> selectSceneList(SceneParamVO param);
 
 
+    List<SceneProPO> findByCameraIds(String cameraIds, String startTime, String endTime);
 
-
+    List<SceneBySnCodeVo> getNumAndNameByCameraId(@Param("cameraId") Long cameraId, @Param("userId")  Long userId);
 }

+ 11 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/IFdkkLaserService.java

@@ -1,5 +1,10 @@
 package com.fdkankan.scene.service;
 
+import com.fdkankan.scene.vo.SceneBySnCodeVo;
+import com.fdkankan.scene.vo.SceneNumVo;
+
+import java.util.List;
+
 /**
  * <p>
  * TODO
@@ -15,4 +20,10 @@ public interface IFdkkLaserService {
     void disableCooperation(String snCode, String cooperationUserName);
 
     void enableCameraCooperation(String snCode, String cooperationUserName);
+
+    SceneNumVo getLaserSceneNumByUser(String token);
+
+    List<SceneBySnCodeVo> getScenesBySnCode(String snCode, String token);
+
+    Integer getLaserSceneNum(String snCode);
 }

+ 1 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/IScene3dNumService.java

@@ -25,7 +25,7 @@ public interface IScene3dNumService extends IService<Scene3dNum> {
      * 从码池中取出一个场景码
      * @return
      */
-    String generateSceneNum();
+    String generateSceneNum(Integer cameraType);
 
     /**
      * 批量生成场景码并放入码池

+ 16 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneApplyService.java

@@ -0,0 +1,16 @@
+package com.fdkankan.scene.service;
+
+import com.fdkankan.scene.entity.SceneApply;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-04-27
+ */
+public interface ISceneApplyService extends IService<SceneApply> {
+
+}

+ 2 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneCooperationService.java

@@ -37,4 +37,6 @@ public interface ISceneCooperationService extends IService<SceneCooperation> {
     void updateRecStatusList(List<Long> ids);
 
     void saveByResourceIds(List<SceneProPO> scenePros, Long cameraId, String resourceIds, Long userId);
+
+    Integer getCooperationSceneNum(Long userId, List<Integer> sceneSourceList);
 }

+ 1 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/ISceneProEditService.java

@@ -19,4 +19,5 @@ public interface ISceneProEditService extends IService<SceneProEdit> {
 
      void updateImageVersionByProId(Long id);
 
+    void updateImageVersionByNum(String num);
 }

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

@@ -5,16 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.scene.entity.ScenePro;
 import com.fdkankan.scene.entity.SceneProPO;
-import com.fdkankan.scene.vo.DeleteHotIconParamVO;
-import com.fdkankan.scene.vo.DeleteHotParamVO;
-import com.fdkankan.scene.vo.FileNameAndDataParamVO;
-import com.fdkankan.scene.vo.SaveTagsParamVO;
-import com.fdkankan.scene.vo.BaseDataParamVO;
-import com.fdkankan.scene.vo.SaveTagsVisibleParamVO;
-import com.fdkankan.scene.vo.SceneEditParamVO;
-import com.fdkankan.scene.vo.SceneParamVO;
-import com.fdkankan.scene.vo.SceneVO;
-import com.fdkankan.scene.vo.FileParamVO;
+import com.fdkankan.scene.vo.*;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -205,9 +196,9 @@ 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);
 
-
-
-
+    ResultData getScenesBySnCode(String snCode, String token);
 }

+ 2 - 2
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/IUserSceneService.java

@@ -22,11 +22,11 @@ public interface IUserSceneService {
 
     SceneCntDTO getSceneCnt(Long userId, Long cameraId);
 
-    ResultData findSceneNumber(long userId, String snCode) throws Exception;
+    ResultData findSceneNumber(String token) throws Exception;
 
     ResultData getNewScenes(SceneParamVO param) throws Exception;
 
-    Integer getSceneNumByCameraId(Long cameraId);
+    Integer getSceneNumByCameraId(Long cameraId,Integer cameraType,String snCode);
 
     SceneProDTO getLastSceneByCameraId( Long cameraId);
 

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

@@ -4,11 +4,12 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.RecStatus;
-import com.fdkankan.common.constant.SceneConstant;
 import com.fdkankan.common.constant.TbStatus;
+import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.common.util.DateExtUtil;
 import com.fdkankan.scene.entity.Folder;
@@ -17,12 +18,9 @@ import com.fdkankan.scene.entity.ScenePro;
 import com.fdkankan.scene.mapper.IFolderMapper;
 import com.fdkankan.scene.service.IFolderSceneService;
 import com.fdkankan.scene.service.IFolderService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.scene.service.ISceneProService;
 import com.fdkankan.scene.vo.FolderParamVO;
 import com.fdkankan.scene.vo.FolderVO;
-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;
@@ -219,6 +217,9 @@ public class FolderServiceImpl extends ServiceImpl<IFolderMapper, Folder> implem
         }else{
             wrapper.eq(Folder::getParentId, param.getParentId());
         }
+        if(param.getType() !=null){
+            wrapper.eq(Folder::getFolderType,param.getType());
+        }
         long count = this.count(wrapper);
         if(count > 0){
             throw new BusinessException(ErrorCode.FAILURE_CODE_5030);

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

@@ -5,9 +5,13 @@ import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.HttpCode;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.scene.service.IFdkkLaserService;
+import com.fdkankan.scene.vo.SceneBySnCodeVo;
+import com.fdkankan.scene.vo.SceneNumVo;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
@@ -26,6 +30,9 @@ public class IFdkkLaserServiceImpl implements IFdkkLaserService {
     private final String UPDATE_SCENE_STATUS_URL_TEMPLATE="/indoor/%s/scene/useStatus/%s";
     private final String DISABLE_COOPERATION_SCENE_URL="/laser/4dage/scene/cooperation/disable";
     private final String ENABLE_COOPERATION_CAMERA_URL="/laser/4dage/scene/cooperation/cameraSave";
+    private final String GET_LASER_SCENE_USER_URL="/laser/4dage/getSceneNum";
+    private final String GET_LASER_SCENE_CODE_URL="/laser/4dage/scene/getScenesBySnCode";
+    private final String GET_LASER_SCENE_CNT_URL="/laser/4dage/scene/getSceneNumByCamera";
 
     @Value("${4dkk.laserService.host}")
     private String laserHost;
@@ -82,6 +89,80 @@ public class IFdkkLaserServiceImpl implements IFdkkLaserService {
         }
     }
 
+    /**
+     * 根据用户获取激光相机数量
+     * @param token
+     * @return
+     */
+    @Override
+    public SceneNumVo getLaserSceneNumByUser(String token) {
+        SceneNumVo sceneNumVo = new SceneNumVo();
+        try {
+            String url = laserHost + GET_LASER_SCENE_USER_URL;
+            HttpHeaders headers = new HttpHeaders();
+            headers.add("fdToken", token);
+            HttpEntity<Object> formEntity = new HttpEntity<>( headers);
+            log.info("获取激光转台相机场景数,url:{},fdToken:{}",GET_LASER_SCENE_USER_URL,token);
+            ResponseEntity<Result> responseEntity = restTemplate.postForEntity(url,formEntity, Result.class);
+            log.info("获取激光转台相机场景数,url:{},fdToken:{},结果:{}",url,token,JSONObject.toJSONString(responseEntity.getBody()));
+            if(responseEntity.getStatusCode() != HttpStatus.OK || responseEntity.getBody().getCode() != HttpStatus.OK.value()){
+                log.error("自研激光转台相机协作失败!");
+                return sceneNumVo;
+            }
+            sceneNumVo = JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getBody().getData()), SceneNumVo.class);
+            sceneNumVo.setTotalNum(sceneNumVo.getSceneNum() + sceneNumVo.getCooperationSceneNum());
+        }catch (Exception e){
+            log.error("自研激光转台相机协作失败!",e);
+        }
+        return sceneNumVo ;
+    }
+
+    /**
+     * 根据相机编码获取激光场景
+     */
+    public  List<SceneBySnCodeVo> getScenesBySnCode(String snCode, String token) {
+        List<SceneBySnCodeVo> sceneVo = new ArrayList<>();
+        try {
+            String url = laserHost + GET_LASER_SCENE_CODE_URL;
+            Map<String, String> param = new HashMap<>();
+            param.put("snCode",snCode);
+            HttpHeaders headers = new HttpHeaders();
+            headers.add("fdToken", token);
+            HttpEntity<Object> formEntity = new HttpEntity<>(param, headers);
+            log.info("获取激光转台场景,url:{},param:{},fdToken:{}",GET_LASER_SCENE_USER_URL,param,token);
+            ResponseEntity<Result> responseEntity = restTemplate.postForEntity(url,formEntity, Result.class);
+            log.info("获取激光转台场景,url:{},param:{},fdToken:{},结果:{}",url,param,token,JSONObject.toJSONString(responseEntity.getBody()));
+            if(responseEntity.getStatusCode() != HttpStatus.OK || responseEntity.getBody().getCode() != HttpStatus.OK.value()){
+                log.error("自研激光转台相机协作失败!");
+                return sceneVo;
+            }
+            sceneVo = JSONObject.parseObject(JSONObject.toJSONString(responseEntity.getBody().getData()), List.class);
+        }catch (Exception e){
+            log.error("自研激光转台相机协作失败!",e);
+        }
+        return sceneVo ;
+    }
+
+    /**
+     * 根据 snCode 获取激光场景场景数量
+     */
+    public Integer getLaserSceneNum(String snCode){
+        Map<String, String> params = new HashMap<>();
+        params.put("snCode",snCode);
+        try {
+            String url = laserHost + GET_LASER_SCENE_CNT_URL;
+            log.info("获取激光转台相机场景数,url:{},params:{}",GET_LASER_SCENE_CNT_URL, JSONObject.toJSONString(params));
+            ResponseEntity<Result> responseEntity = restTemplate.postForEntity(url,params, Result.class);
+            log.info("获取激光转台相机场景数,url:{},params:{},结果:{}",url, JSONObject.toJSONString(params),JSONObject.toJSONString(responseEntity.getBody()));
+            if(responseEntity.getStatusCode() != HttpStatus.OK || responseEntity.getBody().getCode() != HttpStatus.OK.value()){
+                log.error("自研激光转台相机协作失败!");
+            }
+            return (Integer) responseEntity.getBody().getData();
+        }catch (Exception e){
+            log.error("自研激光转台相机协作失败!",e);
+        }
+        return 0;
+    }
     @Data
     public static class Result<T> implements Serializable {
         private static final long serialVersionUID = -1491499610244557029L;

+ 19 - 15
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/Scene3dNumServiceImpl.java

@@ -3,10 +3,12 @@ package com.fdkankan.scene.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.common.constant.CameraTypeEnum;
 import com.fdkankan.common.constant.CommonStatus;
-import com.fdkankan.common.constant.RecStatus;
+import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.TbStatus;
+import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.RandomUtil;
 import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.constant.RedisLockKey;
@@ -15,22 +17,17 @@ import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.scene.entity.Scene3dNum;
 import com.fdkankan.scene.mapper.IScene3dNumMapper;
 import com.fdkankan.scene.service.IScene3dNumService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fdkankan.common.constant.ErrorCode;
-import com.fdkankan.common.exception.BusinessException;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.stream.Collectors;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.context.config.annotation.RefreshScope;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
 
+import java.util.HashSet;
 import java.util.List;
 import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -59,11 +56,11 @@ public class Scene3dNumServiceImpl extends ServiceImpl<IScene3dNumMapper, Scene3
     private int batchSize;
 
     @Override
-    public String generateSceneNum(){
+    public String generateSceneNum(Integer cameraType){
         // 从缓存中获取
-        String sceneNum = (String)redisUtil.lLeftPop(RedisKey.FDKANKAN_SCENE_NUMS);
+        String sceneNum = redisUtil.lLeftPop(RedisKey.FDKANKAN_SCENE_NUMS);
         if(Objects.nonNull(sceneNum)){
-            return sceneNum;
+            return addPrefix(sceneNum,cameraType);
         }
         // 分布式加锁
         Long loading =  redisUtil.incr(RedisLockKey.LOCK_FDKANKAN_SCENE_NUMS, 1);
@@ -87,12 +84,19 @@ public class Scene3dNumServiceImpl extends ServiceImpl<IScene3dNumMapper, Scene3
                 e.printStackTrace();
             }
         }
-        sceneNum = (String)redisUtil.lLeftPop(RedisKey.FDKANKAN_SCENE_NUMS);
+        sceneNum = redisUtil.lLeftPop(RedisKey.FDKANKAN_SCENE_NUMS);
         if(StrUtil.isEmpty(sceneNum)){
             log.error("场景码加载失败");
             throw new BusinessException(ErrorCode.FAILURE_CODE_5053);
         }
-        return sceneNum;
+        return addPrefix(sceneNum,cameraType);
+    }
+
+    private  static  String addPrefix( String num,Integer cameraType){
+        if(cameraType == null){
+            return num;
+        }
+        return CameraTypeEnum.getSceneNumPrefixByType(cameraType) + num;
     }
 
     @Override

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

@@ -0,0 +1,20 @@
+package com.fdkankan.scene.service.impl;
+
+import com.fdkankan.scene.entity.SceneApply;
+import com.fdkankan.scene.mapper.ISceneApplyMapper;
+import com.fdkankan.scene.service.ISceneApplyService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-04-27
+ */
+@Service
+public class SceneApplyServiceImpl extends ServiceImpl<ISceneApplyMapper, SceneApply> implements ISceneApplyService {
+
+}

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

@@ -17,6 +17,7 @@ import com.fdkankan.scene.entity.*;
 import com.fdkankan.scene.mapper.ISceneCooperationMapper;
 import com.fdkankan.scene.mapper.ISceneProMapper;
 import com.fdkankan.scene.service.*;
+import com.fdkankan.scene.util.ParamConvertUtil;
 import com.fdkankan.scene.vo.SceneCooperationParamVO;
 import com.fdkankan.scene.vo.SceneParamVO;
 import com.fdkankan.scene.vo.SceneVO;
@@ -57,6 +58,8 @@ public class SceneCooperationServiceImpl extends ServiceImpl<ISceneCooperationMa
     ISceneEditInfoExtService sceneEditInfoExtService;
     @Autowired
     ISceneResourceCooperationService sceneResourceCooperationService;
+    @Autowired
+    ISceneCooperationMapper sceneCooperationMapper;
 
     @Override
     public void updateRecStatus(String sceneNum) {
@@ -148,6 +151,9 @@ public class SceneCooperationServiceImpl extends ServiceImpl<ISceneCooperationMa
         List<SceneProPO> sceneList = new ArrayList<>();
         List<Folder> folderList = new ArrayList<>();
 
+        if(StringUtil.isNotBlank(param.getSceneSource())){
+            param.setSceneSourceList(ParamConvertUtil.getSceneSource(param.getSceneSource()));
+        }
 
         //根目录时,需要排除已经归类的场景
         if(ObjectUtils.isEmpty(param.getFolderId())){
@@ -244,4 +250,9 @@ public class SceneCooperationServiceImpl extends ServiceImpl<ISceneCooperationMa
             sceneResourceCooperationService.saveBatch(sceneResourceCooperationEntityList);
         }
     }
+
+    @Override
+    public Integer getCooperationSceneNum(Long userId, List<Integer> sceneSourceList) {
+        return sceneCooperationMapper.getCooperationSceneNum(userId,sceneSourceList);
+    }
 }

+ 69 - 50
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneFileBuildServiceImpl.java

@@ -814,7 +814,10 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         if(!password.equals(camera.getChildPassword())){
             throw new BusinessException(ErrorCode.FAILURE_CODE_3014);
         }
-
+        CameraDetail cameraDetail = platformGoodsClient.getCameraDetailByCameraId(camera.getId()).getData();
+        if(cameraDetail == null){
+            throw new BusinessException(CameraConstant.FAILURE_6003);
+        }
         String unicode = prefix.substring(prefix.lastIndexOf("/") + 1);
         String path = ConstantFilePath.BUILD_MODEL_PATH + unicode;
 
@@ -840,7 +843,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                 //重算的场景,先移除该场景对应的容量
                 sceneProService.rebuildReduceSpaceBySceneNum(sceneNum);
             }else {
-                sceneNum = scene3dNumService.generateSceneNum();
+                sceneNum = scene3dNumService.generateSceneNum(cameraDetail.getCameraType());
                 rebuild = 0;
             }
         }
@@ -865,13 +868,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             }
         }
 
-        ResultData<CameraDetail> detailResult = platformGoodsClient.getCameraDetailByCameraId(camera.getId());
-        CameraDetail cameraDetail = detailResult.getData();
 
-        if(cameraDetail ==  null){
-            log.error("该相机详情不存在:" + cameraName);
-            throw new BusinessException(CameraConstant.FAILURE_6003);
-        }
 
         String icon = null;
         if(jsonObject.containsKey("icon") && StrUtil.isNotEmpty(jsonObject.getString("icon"))){
@@ -960,8 +957,28 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
         String data = FileUtils.readFile(ConstantFilePath.BUILD_MODEL_PATH + unicode + "/data.fdage");
         JSONObject jsonObject = JSONObject.parseObject(data);
+        String cameraName = jsonObject.getJSONObject("cam").getString("uuid");
 
-        String sceneNum = scene3dNumService.generateSceneNum();
+        log.info("查询相机:" + cameraName);
+        Camera cameraEntity = platformGoodsClient.getCameraByChildName(cameraName).getData();
+        if(cameraEntity ==  null){
+            log.error("该相机不存在:" + cameraName);
+            //偶现data.fdage给的相机码多了或少了4DKKPRO_
+            if(cameraName.contains("4DKKPRO_")){
+                cameraEntity = platformGoodsClient.getCameraByChildName(cameraName.replace("4DKKPRO_", "")).getData();
+            }else {
+                cameraEntity = platformGoodsClient.getCameraByChildName("4DKKPRO_" + cameraName).getData();
+            }
+            if(cameraEntity == null){
+                throw new BusinessException(CameraConstant.FAILURE_6003);
+            }
+        }
+        CameraDetail detailEntity = platformGoodsClient.getCameraDetailByCameraId(cameraEntity.getId()).getData();
+        if(detailEntity ==  null){
+            log.error("该相机详情不存在:" + cameraName);
+            throw new BusinessException(CameraConstant.FAILURE_6003);
+        }
+        String sceneNum = scene3dNumService.generateSceneNum(detailEntity.getCameraType());
 
         return ResultData.ok(mainUrl + sceneProNewUrl + sceneNum);
     }
@@ -994,26 +1011,8 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         // TODO: 2022/3/19 plus 版本稳定后删除-------------------------------end
 
         int rebuild = 1;
-        if(scene1 != null){
-            sceneNum = scene1.getNum();
-            if(scene1.getSceneStatus() == SceneStatus.wait.code()){
-                log.info(sceneNum + ":场景处于计算中,不能再计算");
-                return;
-            }
-        }else {
-            sceneNum = scene3dNumService.generateSceneNum();
-            rebuild = 0;
-        }
         log.info("是否是重算,rebuild:{}",rebuild);
 
-        if(sceneNum == null){
-            log.error("大场景序号为空:" + sceneNum);
-            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
-        }
-
-        String imageViewPath = String.format(UploadFilePath.IMG_VIEW_PATH, sceneNum);
-        String dataViewPath = String.format(UploadFilePath.DATA_VIEW_PATH, sceneNum);
-
         log.info("查询相机:" + snCode);
         ResultData<Camera> cameraResult = platformGoodsClient.getCameraByChildName(snCode);
         Camera camera = cameraResult.getData();
@@ -1033,6 +1032,23 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             log.error("该相机详情不存在:" + snCode);
             throw new BusinessException(CameraConstant.FAILURE_6003);
         }
+        if(scene1 != null){
+            sceneNum = scene1.getNum();
+            if(scene1.getSceneStatus() == SceneStatus.wait.code()){
+                log.info(sceneNum + ":场景处于计算中,不能再计算");
+                return;
+            }
+        }else {
+            sceneNum = scene3dNumService.generateSceneNum(cameraDetail.getCameraType());
+            rebuild = 0;
+        }
+        if(sceneNum == null){
+            log.error("大场景序号为空:" + sceneNum);
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+        }
+
+        String imageViewPath = String.format(UploadFilePath.IMG_VIEW_PATH, sceneNum);
+        String dataViewPath = String.format(UploadFilePath.DATA_VIEW_PATH, sceneNum);
 
         String userName = null;
         if(cameraDetail.getUserId() != null){
@@ -1261,11 +1277,6 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         }
         String sceneNum = null;
         try{
-            sceneNum = scene3dNumService.generateSceneNum();
-            if(sceneNum == null){
-                log.error("大场景序号为空:" + sceneNum);
-                throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
-            }
 
             log.info("查询相机:" + buildScene.getCameraName());
             ResultData<Camera> cameraResult= platformGoodsClient.getCameraByChildName(buildScene.getCameraName());
@@ -1279,6 +1290,11 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             ResultData<CameraDetail> cameraDetailResult = platformGoodsClient.getCameraDetailByCameraId(camera.getId());
             CameraDetail cameraDetail = cameraDetailResult.getData();
 
+            sceneNum = scene3dNumService.generateSceneNum(cameraDetail.getCameraType());
+            if(sceneNum == null){
+                log.error("大场景序号为空:" + sceneNum);
+                throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+            }
             int balance = Integer.valueOf(cameraDetail.getBalance());
             if(balance - Constant.MONEY_SCENE <0){
                 log.error("相机点数不足:" + buildScene.getCameraName());
@@ -1342,24 +1358,6 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
                 String cameraName = jsonObject.getJSONObject("cam").getString("uuid");
                 String unicode = jsonObject.getString("creator") + "_" + jsonObject.getString("uuidtime");
-                //查看场景中的文件目录是否有改文件id,有则重新计算改场景,无则新建场景
-                SceneProPO proEntity = sceneProService.findByFileId("/" + fileId + "/");
-                int rebuild = 1;
-                if(proEntity != null){
-                    sceneNum = proEntity.getNum();
-                    if(proEntity.getSceneStatus() == SceneStatus.wait.code()){
-                        log.info(sceneNum + ":场景处于计算中,不能再计算");
-                        return;
-                    }
-                }else {
-                    sceneNum = scene3dNumService.generateSceneNum();
-                    rebuild = 0;
-                }
-
-                if(sceneNum == null){
-                    log.error("大场景序号为空:" + sceneNum);
-                    throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
-                }
 
                 log.info("查询相机:" + cameraName);
                 ResultData<Camera> cameraResult = platformGoodsClient.getCameraByChildName(cameraName);
@@ -1387,6 +1385,27 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                     throw new BusinessException(CameraConstant.FAILURE_6003);
                 }
 
+                //查看场景中的文件目录是否有改文件id,有则重新计算改场景,无则新建场景
+                SceneProPO proEntity = sceneProService.findByFileId("/" + fileId + "/");
+                int rebuild = 1;
+                if(proEntity != null){
+                    sceneNum = proEntity.getNum();
+                    if(proEntity.getSceneStatus() == SceneStatus.wait.code()){
+                        log.info(sceneNum + ":场景处于计算中,不能再计算");
+                        return;
+                    }
+                }else {
+                    sceneNum = scene3dNumService.generateSceneNum(cameraDetail.getCameraType());
+                    rebuild = 0;
+                }
+
+                if(sceneNum == null){
+                    log.error("大场景序号为空:" + sceneNum);
+                    throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+                }
+
+
+
                 String userName = null;
                 if(cameraDetail.getUserId() != null){
                     ResultData<SSOUser> ssoResult = platformUserClient.getSSOUserByUserId(cameraDetail.getUserId());

+ 10 - 4
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneProEditServiceImpl.java

@@ -1,14 +1,14 @@
 package com.fdkankan.scene.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.fdkankan.common.constant.RecStatus;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.constant.TbStatus;
+import com.fdkankan.scene.entity.ScenePro;
 import com.fdkankan.scene.entity.SceneProEdit;
 import com.fdkankan.scene.mapper.ISceneProEditExtMapper;
 import com.fdkankan.scene.mapper.ISceneProEditMapper;
 import com.fdkankan.scene.service.ISceneProEditExtService;
 import com.fdkankan.scene.service.ISceneProEditService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.scene.service.ISceneProService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -57,6 +57,12 @@ public class SceneProEditServiceImpl extends ServiceImpl<ISceneProEditMapper, Sc
         sceneProEditExtMapper.updateImageVersionByProEditId(sceneProEdit.getId());
     }
 
-
-
+    @Override
+    public void updateImageVersionByNum(String num) {
+        ScenePro scenePro = sceneProService.findBySceneNum(num);
+        if(Objects.isNull(scenePro)){
+            return;
+        }
+        this.updateImageVersionByProId(scenePro.getId());
+    }
 }

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

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.csp.sentinel.util.StringUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -15,9 +16,13 @@ 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.user.SSOLoginHelper;
+import com.fdkankan.common.user.SSOUser;
 import com.fdkankan.common.util.*;
 import com.fdkankan.fyun.constant.StorageType;
 import com.fdkankan.fyun.oss.UploadToOssUtil;
+import com.fdkankan.platform.api.dto.Camera;
+import com.fdkankan.platform.api.dto.CameraDetail;
 import com.fdkankan.platform.api.feign.PlatformGoodsClient;
 import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.constant.RedisLockKey;
@@ -31,7 +36,6 @@ import com.fdkankan.scene.service.*;
 import com.fdkankan.scene.vo.*;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
-import java.util.Map.Entry;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.joda.time.DateTime;
@@ -44,6 +48,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.Resource;
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
@@ -51,6 +56,7 @@ import java.io.InputStreamReader;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.util.*;
+import java.util.Map.Entry;
 import java.util.stream.Collectors;
 
 /**
@@ -127,6 +133,14 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     IScenePlusService scenePlusService;
     @Autowired
     IScenePlusExtService scenePlusExtService;
+    @Autowired
+    ISceneDownloadLogService sceneDownloadLogService;
+    @Autowired
+    SSOLoginHelper ssoLoginHelper;
+    @Autowired
+    IFdkkLaserService fdkkLaserService;
+    @Resource
+    ISceneProMapper sceneProMapper;
 
     @Override
     public List<SceneVO> convert(List<ScenePro> list){
@@ -5224,6 +5238,85 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         return ResultData.ok();
     }
 
+    @Override
+    public ResultData checkDownLoad(String sceneNum) {
+        if(StringUtils.isEmpty(sceneNum)){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        ScenePro scenePro = sceneProService.findBySceneNum(sceneNum);
+        if(scenePro == null ){
+            throw  new BusinessException(ErrorCode.FAILURE_CODE_5005);
+        }
+        SceneProEdit sceneProEdit = sceneProEditService.findByProId(scenePro.getId());
+        if(sceneProEdit == null){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+        }
+        //downloadStatus,1打包资源下载,2已下载过,3下载过,并且没有修改过,无需打包直接返回下载地址,-1没下载次数不足
+        SceneDownloadLog sceneDownloadLogEntity = sceneDownloadLogService.findByStatusAndNum(sceneNum, 0);
+        Map<String, Object> result = new HashMap<>();
+        if(sceneDownloadLogEntity != null){
+            result.put("downloadStatus", 1);
+            return ResultData.ok(result);
+        }
+        sceneDownloadLogEntity = sceneDownloadLogService.findByStatusAndNum(sceneNum, 1);
+
+        //3下载过,并且没有修改过
+        if(sceneDownloadLogEntity != null && sceneDownloadLogEntity.getSceneVersion().intValue() ==
+                sceneProEdit.getVersion()){
 
+            result.put("downloadStatus", 3);
+            result.put("downloadUrl", sceneDownloadLogEntity.getDownloadUrl());
+            return ResultData.ok(result);
+        }
 
+        //下载过
+        if(sceneDownloadLogEntity != null){
+            result.put("downloadStatus", 2);
+            // 清除旧的下载信息
+            redisUtil.del(RedisKey.PREFIX_DOWNLOAD_PROGRESS_V4.concat(sceneNum));
+            return ResultData.ok(result);
+        }
+
+        //未下载过
+        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);
+    }
+
+    @Override
+    public ResultData getScenesBySnCode(String snCode, String token) {
+        if(StringUtils.isEmpty(token)){
+            throw new BusinessException(3004, "无token参数");
+        }
+
+        SSOUser ssoUser = ssoLoginHelper.loginCheck(token);
+        if(ssoUser == null){
+            throw new BusinessException(3004, "token参数不正确");
+        }
+
+        if(StringUtil.isEmpty(snCode)){
+            throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        Camera cameraEntity = platformGoodsClient.getCameraBySnCode(snCode).getData();
+        if(cameraEntity == null ){
+            throw new BusinessException(CameraConstant.FAILURE_6018);
+        }
+        CameraDetail cameraDetailEntity = platformGoodsClient.getCameraDetailByCameraId(cameraEntity.getId()).getData();
+        if(cameraDetailEntity == null ){
+            throw new BusinessException(CameraConstant.FAILURE_6018);
+        }
+        if(!cameraDetailEntity.getUserId().equals(ssoUser.getId())){
+            return ResultData.ok();
+        }
+        if(cameraDetailEntity.getCameraType() == 10 ){    //激光场景
+            List<SceneBySnCodeVo> scenesBySnCode = fdkkLaserService.getScenesBySnCode(snCode, token);
+            return ResultData.ok(scenesBySnCode);
+        }
+        List<SceneBySnCodeVo> sceneVo = sceneProMapper.getNumAndNameByCameraId(cameraEntity.getId(), ssoUser.getId());
+        return ResultData.ok(sceneVo);
+    }
 }

+ 2 - 5
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneResourceServiceImpl.java

@@ -2,7 +2,7 @@ package com.fdkankan.scene.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.fdkankan.common.constant.RecStatus;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.constant.TbStatus;
 import com.fdkankan.scene.entity.SceneResource;
 import com.fdkankan.scene.entity.SceneResourceCamera;
@@ -11,7 +11,6 @@ import com.fdkankan.scene.mapper.ISceneResourceMapper;
 import com.fdkankan.scene.service.ISceneResourceCameraService;
 import com.fdkankan.scene.service.ISceneResourceCooperationService;
 import com.fdkankan.scene.service.ISceneResourceService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -63,9 +62,7 @@ public class SceneResourceServiceImpl extends ServiceImpl<ISceneResourceMapper,
         if(CollUtil.isEmpty(sceneResourceCameraList)){
             return null;
         }
-        List<Long> sceneResIdList = sceneResourceCameraList.stream().map(srCoo -> {
-            return srCoo.getSceneResourceId();
-        }).collect(Collectors.toList());
+        List<Long> sceneResIdList = sceneResourceCameraList.stream().map(SceneResourceCamera::getSceneResourceId).collect(Collectors.toList());
 
         return this.list(new LambdaQueryWrapper<SceneResource>().in(SceneResource::getId, sceneResIdList));
 

+ 48 - 65
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/UserSceneServiceImpl.java

@@ -8,66 +8,35 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.common.bean.DownLoadProgressBean;
 import com.fdkankan.common.bean.DownLoadTaskBean;
-import com.fdkankan.common.constant.DownloadStatus;
-import com.fdkankan.common.constant.ErrorCode;
-import com.fdkankan.common.constant.SceneDownloadProgressStatus;
-import com.fdkankan.common.constant.SceneSource;
-import com.fdkankan.common.constant.ServerCode;
+import com.fdkankan.common.constant.*;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.response.PageInfo;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.common.user.SSOLoginHelper;
 import com.fdkankan.common.user.SSOUser;
 import com.fdkankan.common.util.PageInfoUtils;
-import com.fdkankan.platform.api.feign.PlatformGoodsClient;
-import com.fdkankan.platform.api.feign.PlatformUserClient;
 import com.fdkankan.platform.api.dto.Camera;
 import com.fdkankan.platform.api.dto.User;
+import com.fdkankan.platform.api.feign.PlatformGoodsClient;
+import com.fdkankan.platform.api.feign.PlatformUserClient;
 import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.scene.api.dto.SceneCntDTO;
 import com.fdkankan.scene.api.dto.SceneProDTO;
-import com.fdkankan.scene.entity.Folder;
-import com.fdkankan.scene.entity.FolderScene;
-import com.fdkankan.scene.entity.Scene;
-import com.fdkankan.scene.entity.SceneCooperation;
-import com.fdkankan.scene.entity.SceneDownloadLog;
-import com.fdkankan.scene.entity.SceneEditInfo;
-import com.fdkankan.scene.entity.SceneEditInfoExt;
-import com.fdkankan.scene.entity.ScenePlus;
-import com.fdkankan.scene.entity.ScenePro;
-import com.fdkankan.scene.entity.SceneProExt;
-import com.fdkankan.scene.entity.SceneProPO;
+import com.fdkankan.scene.entity.*;
 import com.fdkankan.scene.mapper.ISceneProMapper;
-import com.fdkankan.scene.service.IFolderSceneService;
-import com.fdkankan.scene.service.IFolderService;
-import com.fdkankan.scene.service.ISceneCooperationService;
-import com.fdkankan.scene.service.ISceneDownloadLogService;
-import com.fdkankan.scene.service.ISceneEditInfoExtService;
-import com.fdkankan.scene.service.ISceneEditInfoService;
-import com.fdkankan.scene.service.IScenePlusService;
-import com.fdkankan.scene.service.ISceneProExtService;
-import com.fdkankan.scene.service.ISceneProService;
-import com.fdkankan.scene.service.ISceneService;
-import com.fdkankan.scene.service.IUserSceneService;
-import com.fdkankan.scene.vo.FolderVO;
-import com.fdkankan.scene.vo.SceneDownloadParamVO;
-import com.fdkankan.scene.vo.SceneParamVO;
-import com.fdkankan.scene.vo.SceneVO;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
+import com.fdkankan.scene.service.*;
+import com.fdkankan.scene.util.ParamConvertUtil;
+import com.fdkankan.scene.vo.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
 
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
-import org.springframework.util.ObjectUtils;
 
 @Service
 @Slf4j
@@ -103,6 +72,8 @@ public class UserSceneServiceImpl implements IUserSceneService {
     private ISceneEditInfoService sceneEditInfoService;
     @Autowired
     private ISceneDownloadLogService sceneDownloadLogService;
+    @Autowired
+    private IFdkkLaserService fdkkLaserService;
 
     @Override
     public Page<SceneVO> getScenes(String token, SceneParamVO param) {
@@ -204,28 +175,37 @@ public class UserSceneServiceImpl implements IUserSceneService {
     }
 
     @Override
-    public ResultData findSceneNumber(long userId, String snCode) throws Exception{
-        Map<String, Object> map = new HashMap<>();
-        Camera camera = null;
-        if (!ObjectUtils.isEmpty(snCode)) {
-            ResultData<Camera> cameraResultData = platformGoodsClient.getCameraBySnCode(snCode);
-            if(!cameraResultData.getSuccess()){
-                throw new Exception(ServerCode.FEIGN_REQUEST_FAILD.message());
-            }
-            camera = cameraResultData.getData();
-            if(ObjectUtils.isEmpty(camera)){
-                map.put("sceneNum", 0);
-                map.put("cooperatimeNum", 0);
-                return ResultData.ok(map);
-            }
-        }
+    public ResultData findSceneNumber(String token) throws Exception{
+        SSOUser ssoUser = ssoLoginHelper.loginCheck(token);
+        SceneNumVo sceneNumVoKk = getSceneNumVoByType(Arrays.asList(1,2,12,13,14), ssoUser.getId());
+        sceneNumVoKk.setSceneNum( sceneNumVoKk.getSceneNum());
+        sceneNumVoKk.setTotalNum(sceneNumVoKk.getTotalNum());
+
+        SceneNumVo sceneNumVoKj = getSceneNumVoByType(Collections.singletonList(3), ssoUser.getId());
+        SceneNumVo sceneNumVoSS = fdkkLaserService.getLaserSceneNumByUser(token);
+        HashMap<String, SceneNumVo> hashMap = new HashMap<>();
+        hashMap.put("kk",sceneNumVoKk);
+        hashMap.put("kJ",sceneNumVoKj);
+        hashMap.put("SS",sceneNumVoSS);
+    return ResultData.ok(hashMap);
+    }
 
-        //双目场景数量
-        SceneCntDTO sceneCntDTO = this.getSceneCnt(userId, Objects.isNull(camera) ? null : camera.getId());
-        map.put("sceneNum", sceneCntDTO.getSceneCnt() + sceneCntDTO.getSceneProCnt());
-        map.put("cooperatimeNum", sceneCntDTO.getCooperSceneCnt());
+    private SceneNumVo getSceneNumVoByType(List<Integer> sceneSourceList,Long userId){
+        SceneNumVo sceneNumVo = new SceneNumVo();
+        LambdaQueryWrapper<ScenePlus> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ScenePlus::getUserId, userId);
+        queryWrapper.eq(ScenePlus::getSceneSource, sceneSourceList);
+        Integer sceneNum = Math.toIntExact(scenePlusService.count(queryWrapper));
+        sceneNumVo.setCooperationSceneNum(sceneCooperationService.getCooperationSceneNum(userId,sceneSourceList));
+        sceneNumVo.setSceneNum(sceneNum);
+        sceneNumVo.setTotalNum(sceneNumVo.getSceneNum() + sceneNumVo.getCooperationSceneNum());
+        return sceneNumVo;
+    }
 
-        return ResultData.ok(map);
+    private Integer getSceneNumOld(Long userId) {
+        LambdaQueryWrapper<Scene> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Scene::getUserId, userId);
+        return Math.toIntExact(sceneService.count(queryWrapper));
     }
 
     @Override
@@ -300,7 +280,10 @@ public class UserSceneServiceImpl implements IUserSceneService {
     }
 
     @Override
-    public Integer getSceneNumByCameraId(Long cameraId) {
+    public Integer getSceneNumByCameraId(Long cameraId,Integer cameraType,String snCode) {
+        if(cameraType == 10){
+            return fdkkLaserService.getLaserSceneNum(snCode);
+        }
         Long cnt = sceneProService.findSceneNumByCameraId(cameraId);
         return Integer.parseInt(String.valueOf(cnt));
     }
@@ -476,10 +459,7 @@ public class UserSceneServiceImpl implements IUserSceneService {
             }
 
             if(StrUtil.isNotBlank(param.getSceneSource())){
-                param.setSceneSourceList(
-                    Arrays.stream(param.getSceneSource().split(","))
-                        .map(source->Integer.parseInt(source))
-                        .collect(Collectors.toList()));
+                param.setSceneSourceList(ParamConvertUtil.getSceneSource(param.getSceneSource()));
             }
 
             if(searchCamera){
@@ -498,6 +478,9 @@ public class UserSceneServiceImpl implements IUserSceneService {
             List<Long> sceneIdList = folderSceneService
                 .getSceneIdListByFolderId(param.getFolderId());
 
+            if(StrUtil.isNotBlank(param.getSceneSource())){
+                param.setSceneSourceList(ParamConvertUtil.getSceneSource(param.getSceneSource()));
+            }
             if(CollUtil.isNotEmpty(sceneIdList)){
                 param.setSceneIdList(sceneIdList);
                 if(searchCamera){

+ 24 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/util/ParamConvertUtil.java

@@ -0,0 +1,24 @@
+package com.fdkankan.scene.util;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+public class ParamConvertUtil {
+
+    public static List<String> getSceneSource(String sceneSource){
+        List<String> sceneSourceList ;
+        switch (sceneSource){
+            case "1" : sceneSourceList = Arrays.asList("1","2","12","13","14"); break;  //四维看看
+            case "3" : sceneSourceList = Collections.singletonList("3"); break;//四维看见
+            default:
+                if(sceneSource.contains(",")){
+                    sceneSource = sceneSource + ",12,13,14";
+                    sceneSourceList = Arrays.asList(sceneSource.split(","));
+                    break;
+                }
+                sceneSourceList = Collections.singletonList(sceneSource);break;
+        }
+        return sceneSourceList;
+    }
+}

+ 11 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/SceneBySnCodeVo.java

@@ -0,0 +1,11 @@
+package com.fdkankan.scene.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class SceneBySnCodeVo implements Serializable {
+    private String sceneNum;    //场景码
+    private String sceneName;   //场景名称
+}

+ 13 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/SceneNumVo.java

@@ -0,0 +1,13 @@
+package com.fdkankan.scene.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class SceneNumVo implements Serializable {
+    private Integer cooperationSceneNum = 0;    //协作场景数量
+    private Integer sceneNum = 0;               //场景数量
+    private Integer totalNum = 0;
+   // private Integer type;                   //场景类型 0看看,1看见,2深时
+}

+ 1 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/vo/SceneParamVO.java

@@ -148,7 +148,7 @@ public class SceneParamVO extends RequestBase implements Serializable {
 
     private String sceneSource;
 
-    private List<Integer> sceneSourceList;
+    private List<String> sceneSourceList;
 
     private Date startTime;
 

+ 7 - 5
4dkankan-center-scene/src/main/resources/mapper/scene/SceneCooperationMapper.xml

@@ -40,12 +40,14 @@
       and f.parent_id = #{folderId}
     </if>
 
+  </select>
 
-
-
-
-
-
+  <select id="getCooperationSceneNum" resultType="integer">
+    SELECT count(0) FROM t_scene_cooperation a LEFT JOIN t_scene_plus b ON a.scene_num = b.num  WHERE a.tb_status = 0 AND b.tb_status = 0
+            AND a.user_id = #{userId}  AND b.scene_source in
+    <foreach collection="sceneSource" item="index" open="(" close=")" separator=",">
+      #{index}
+    </foreach>
   </select>
 
 

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

@@ -341,6 +341,19 @@
         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>
 
-
+    <select id="getNumAndNameByCameraId" resultType="com.fdkankan.scene.vo.SceneBySnCodeVo">
+        SELECT num AS sceneNum,scene_name AS sceneName FROM t_scene_pro
+        WHERE  rec_status = 'A' AND camera_id = #{cameraId} AND user_id = #{userId} AND scene_source!=11
+    </select>
 </mapper>

+ 50 - 0
4dkankan-common/src/main/java/com/fdkankan/common/constant/CameraTypeEnum.java

@@ -0,0 +1,50 @@
+package com.fdkankan.common.constant;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public enum CameraTypeEnum {
+    DOUBLE_EYE(0,"KK-","4DKKLITE_","旧双目相机"),
+    FDKK_PRO(1,"KK-","4DKKPRO_","四维看看pro八目相机"),
+    FDKK_LITE(2,"KK-","4DKKLITE_","四维看看lite"),
+    ZHIHOUSE_REDHOUSE(5,"KK-","4DKKLITE_","指房宝小红屋相机"),
+    DOUBLE_EYE_TURN(9,"KJ-","4DKKLITE_","双目转台"),
+    LASER_TURN(10,"SS-","4DKKLA_","激光转台");
+
+
+    private int type;
+    private String sceneNumPrefix;
+    private String wifiNamePrefix;
+    private String desc;
+
+    public int getType() {
+        return type;
+    }
+
+    public String getSceneNumPrefix() {
+        return sceneNumPrefix;
+    }
+
+    static Map<Integer,CameraTypeEnum> typeMaps = new HashMap<>(5);
+
+    static{
+        for (CameraTypeEnum typeEnum : CameraTypeEnum.values()) {
+            typeMaps.put(typeEnum.getType(),typeEnum);
+        }
+    }
+
+    CameraTypeEnum(Integer type, String sceneNumPrefix, String wifiNamePrefix, String desc) {
+        this.type = type;
+        this.sceneNumPrefix = sceneNumPrefix;
+        this.wifiNamePrefix = wifiNamePrefix;
+        this.desc = desc;
+    }
+
+    public static String getSceneNumPrefixByType(Integer type){
+        if(typeMaps.containsKey(type)){
+            return typeMaps.get(type).getSceneNumPrefix();
+        }
+        return "";
+    }
+
+}

+ 29 - 0
4dkankan-common/src/main/java/com/fdkankan/common/controller/BaseController.java

@@ -12,6 +12,12 @@ import org.springframework.beans.propertyeditors.StringTrimmerEditor;
 import org.springframework.web.bind.WebDataBinder;
 import org.springframework.web.bind.annotation.InitBinder;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.util.Date;
+import java.util.Objects;
+
 public class BaseController {
     @Autowired
     protected HttpServletRequest request;
@@ -39,4 +45,27 @@ public class BaseController {
         }
         return null;
     }
+
+    public static void output(HttpServletResponse resp, File file) {
+        OutputStream os = null;
+        BufferedInputStream bis = null;
+        byte[] buff = new byte[1024];
+        try {
+            os = resp.getOutputStream();
+            bis = new BufferedInputStream(new FileInputStream(file));
+            int i = 0;
+            while ((i = bis.read(buff)) != -1) {
+                os.write(buff, 0, i);
+                os.flush();
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                bis.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
 }