lyhzzz 2 месяцев назад
Родитель
Сommit
e36d946b34
42 измененных файлов с 450 добавлено и 285 удалено
  1. 25 1
      README.md
  2. 29 4
      src/main/java/com/fdkankan/manage/controller/SceneController.java
  3. 4 0
      src/main/java/com/fdkankan/manage/entity/CameraDetail.java
  4. 2 1
      src/main/java/com/fdkankan/manage/entity/CameraType.java
  5. 7 1
      src/main/java/com/fdkankan/manage/entity/Case.java
  6. 19 1
      src/main/java/com/fdkankan/manage/entity/FeedbackOption.java
  7. 2 1
      src/main/java/com/fdkankan/manage/entity/Scene.java
  8. 2 1
      src/main/java/com/fdkankan/manage/entity/ScenePlus.java
  9. 3 0
      src/main/java/com/fdkankan/manage/entity/ScenePro.java
  10. 1 1
      src/main/java/com/fdkankan/manage/generate/AutoGenerate.java
  11. 0 5
      src/main/java/com/fdkankan/manage/httpClient/client/LaserClient.java
  12. 6 37
      src/main/java/com/fdkankan/manage/httpClient/service/LaserService.java
  13. 5 1
      src/main/java/com/fdkankan/manage/mapper/IScenePlusMapper.java
  14. 4 0
      src/main/java/com/fdkankan/manage/mapper/ISceneProMapper.java
  15. 3 0
      src/main/java/com/fdkankan/manage/mq/common/MqQueueUtil.java
  16. 2 0
      src/main/java/com/fdkankan/manage/service/ICameraTypeService.java
  17. 1 1
      src/main/java/com/fdkankan/manage/service/IScenePlusService.java
  18. 5 0
      src/main/java/com/fdkankan/manage/service/ISceneProService.java
  19. 6 4
      src/main/java/com/fdkankan/manage/service/impl/CameraDetailServiceImpl.java
  20. 12 0
      src/main/java/com/fdkankan/manage/service/impl/CameraServiceImpl.java
  21. 9 0
      src/main/java/com/fdkankan/manage/service/impl/CameraTypeServiceImpl.java
  22. 24 0
      src/main/java/com/fdkankan/manage/service/impl/CaseServiceImpl.java
  23. 4 3
      src/main/java/com/fdkankan/manage/service/impl/DownService.java
  24. 23 11
      src/main/java/com/fdkankan/manage/service/impl/FeedbackOptionServiceImpl.java
  25. 3 1
      src/main/java/com/fdkankan/manage/service/impl/RtkAccountServiceImpl.java
  26. 1 2
      src/main/java/com/fdkankan/manage/service/impl/ScenePlusServiceImpl.java
  27. 106 26
      src/main/java/com/fdkankan/manage/service/impl/SceneProServiceImpl.java
  28. 17 1
      src/main/java/com/fdkankan/manage/service/impl/SceneServiceImpl.java
  29. 2 152
      src/main/java/com/fdkankan/manage/test/TestController.java
  30. 30 0
      src/main/java/com/fdkankan/manage/util/CameraUtils.java
  31. 0 22
      src/main/java/com/fdkankan/manage/util/NumTypeUtils.java
  32. 1 1
      src/main/java/com/fdkankan/manage/util/ProvinceUtils.java
  33. 1 0
      src/main/java/com/fdkankan/manage/vo/request/CameraInOutParam.java
  34. 2 1
      src/main/java/com/fdkankan/manage/vo/request/SceneParam.java
  35. 17 0
      src/main/java/com/fdkankan/manage/vo/request/SetFeedOptionParam.java
  36. 4 0
      src/main/java/com/fdkankan/manage/vo/response/CameraDetailVo.java
  37. 6 0
      src/main/java/com/fdkankan/manage/vo/response/SceneVo.java
  38. 4 1
      src/main/resources/bootstrap-dev.yml
  39. 1 1
      src/main/resources/mapper/manage/CameraMapper.xml
  40. 1 1
      src/main/resources/mapper/manage/SceneMapper.xml
  41. 27 0
      src/main/resources/mapper/manage/ScenePlusMapper.xml
  42. 29 3
      src/main/resources/mapper/manage/SceneProMapper.xml

+ 25 - 1
README.md

@@ -205,4 +205,28 @@
     新增字段 oddNumber 开票审批单号
     
     http://120.25.146.52:3090/project/102/interface/api/10708
-~~~~
+~~~~
+
+
+###**v3.2.0**
+~~~~
+一,配置管理
+    1.用户反馈管理,配置项,标签使用 feedbackOption/getTypeList 接口
+    2.feedbackOption/list 
+        返回新增 sysNickName创建人昵称,sysUserName创建人用户名 ,modelApi ai模型的api地址,aiOption场景分类的ai识别配置 数组,[0,1] 0表示通用识别,1表示文物病害
+二,相机所属行业配置
+    1. camera/updateCameraType 添加参数 feedbackOptionId,取值为 feedbackOption/list 中的Id
+    2. camera/list  返回添加 feedbackOptionName行业名称
+三,场景分类设置
+    1.新增接口 scene/setFeedbackOption  POST json入参示例:{"feedbackOptionId":1,"num":"场景码"}
+    2.scene/list 返回添加 feedbackOptionName行业名称
+四,案例管理新增类型
+    1.类型下拉框,新增other标识为其他
+    2.case/addOrUpdate 接口新增参数 feedbackOptionIds 场景分类类型数组
+    3.case/list 接口返回新增 feedbackOptionIds 场景分类类型数组
+五,显示算法授权 authorizeCamera/list 接口返回中的modelAuthCode
+六,增加事业部选型
+七,删除场景恢复
+    1.scene/getDelScene 列表接口  POST json入参示例:{"pageNum":1,"pageSize":10,"snCode":"相机sn","num":"场景码","userName":"用户名"}
+    2.scene/reDelScene  恢复接口  POST json入参示例 {"numList":["SG-t-ICWd217UZfu"]}
+~~~~

+ 29 - 4
src/main/java/com/fdkankan/manage/controller/SceneController.java

@@ -1,22 +1,20 @@
 package com.fdkankan.manage.controller;
 
 
-import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
+import com.fdkankan.manage.common.PageInfo;
 import com.fdkankan.manage.common.ResultCode;
-import com.fdkankan.manage.entity.*;
 import com.fdkankan.manage.exception.BusinessException;
 import com.fdkankan.manage.common.ResultData;
 import com.fdkankan.manage.httpClient.client.FdKKClient;
 import com.fdkankan.manage.service.*;
 import com.fdkankan.manage.vo.request.SceneParam;
+import com.fdkankan.manage.vo.request.SetFeedOptionParam;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
-import java.util.Arrays;
 import java.util.HashMap;
 
 
@@ -185,5 +183,32 @@ public class SceneController {
     public ResultData getRestStoreProcess(@RequestParam(required = false) String num){
         return ResultData.ok(sceneProService.getRestStoreProcess(num));
     }
+
+    @PostMapping("/setFeedbackOption")
+    public ResultData setFeedOption(@RequestBody SetFeedOptionParam param){
+        if(param.getFeedbackOptionId() == null || StringUtils.isBlank(param.getNum())){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        sceneProService.setFeedbackOption(param);
+        return ResultData.ok();
+    }
+
+    @PostMapping("/getDelScene")
+    public ResultData getDelScene(@RequestBody SceneParam param){
+        if(StringUtils.isBlank(param.getNum()) && StringUtils.isBlank(param.getSnCode()) && StringUtils.isBlank(param.getUserName())){
+            return ResultData.ok(PageInfo.PageInfoEmpty(param.getPageNum(),param.getPageSize()));
+        }
+        param.setRecStatus("I");
+        return ResultData.ok(sceneProService.pageList(param));
+    }
+
+    @PostMapping("/reDelScene")
+    public ResultData reDelScene(@RequestBody SceneParam param){
+        if(param.getNumList() == null || param.getNumList().isEmpty()){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        sceneProService.reDelScene(param.getNumList());
+        return ResultData.ok();
+    }
 }
 

+ 4 - 0
src/main/java/com/fdkankan/manage/entity/CameraDetail.java

@@ -165,4 +165,8 @@ public class CameraDetail implements Serializable {
 
     @TableField("version")
     private String version;
+
+    @TableField("feedback_option_id")
+    private Integer feedbackOptionId;
+
 }

+ 2 - 1
src/main/java/com/fdkankan/manage/entity/CameraType.java

@@ -65,5 +65,6 @@ public class CameraType implements Serializable {
     @TableField("update_time")
     private Date updateTime;
 
-
+    @TableField("is_laser")
+    private Boolean isLaser;
 }

+ 7 - 1
src/main/java/com/fdkankan/manage/entity/Case.java

@@ -1,5 +1,6 @@
 package com.fdkankan.manage.entity;
 
+import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -7,6 +8,8 @@ import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.util.Date;
+
+import com.fdkankan.manage.common.typehandle.JsonArrayTypeHandler;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -20,7 +23,7 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-@TableName("t_case")
+@TableName(value = "t_case",autoResultMap = true)
 public class Case implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -43,6 +46,9 @@ public class Case implements Serializable {
     @TableField("type_id")
     private String typeId;
 
+    @TableField(typeHandler= JsonArrayTypeHandler.class)
+    private JSONArray feedbackOptionIds;
+
     @TableField("icon_ids")
     private String iconIds;
 

+ 19 - 1
src/main/java/com/fdkankan/manage/entity/FeedbackOption.java

@@ -1,5 +1,6 @@
 package com.fdkankan.manage.entity;
 
+import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -8,6 +9,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
+
+import com.fdkankan.manage.common.typehandle.JsonArrayTypeHandler;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -21,7 +24,7 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-@TableName("t_feedback_option")
+@TableName(value = "t_feedback_option",autoResultMap = true)
 public class FeedbackOption implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -50,6 +53,15 @@ public class FeedbackOption implements Serializable {
     @TableField("is_system")
     private Integer isSystem;
 
+    @TableField("sys_user_id")
+    private Long sysUserId;
+
+    @TableField(typeHandler= JsonArrayTypeHandler.class)
+    private JSONArray aiOption;
+
+    @TableField("model_api")
+    private String modelApi;
+
     @TableField("rec_status")
     @TableLogic(value = "A",delval = "I")
     private String recStatus;
@@ -62,4 +74,10 @@ public class FeedbackOption implements Serializable {
 
     @TableField(exist = false)
     private BigDecimal score;
+
+    @TableField(exist = false)
+    private String sysNickName;
+
+    @TableField(exist = false)
+    private String sysUserName;
 }

+ 2 - 1
src/main/java/com/fdkankan/manage/entity/Scene.java

@@ -271,5 +271,6 @@ public class Scene implements Serializable {
     @TableField("screencap_thumb")
     private String screencapThumb;
 
-
+    @TableField("feedback_option_id")
+    private Integer feedbackOptionId;
 }

+ 2 - 1
src/main/java/com/fdkankan/manage/entity/ScenePlus.java

@@ -113,5 +113,6 @@ public class ScenePlus implements Serializable {
     @TableLogic(value = "A",delval = "I")
     private String recStatus;
 
-
+    @TableField("feedback_option_id")
+    private Integer feedbackOptionId;
 }

+ 3 - 0
src/main/java/com/fdkankan/manage/entity/ScenePro.java

@@ -228,4 +228,7 @@ public class ScenePro implements Serializable {
 
     @TableField("is_obj")
     private Integer isObj;
+
+    @TableField("feedback_option_id")
+    private Integer feedbackOptionId;
 }

+ 1 - 1
src/main/java/com/fdkankan/manage/generate/AutoGenerate.java

@@ -18,7 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir");
 
         generate(path,"manage", getTables(new String[]{
-                "t_app_secret"
+                "t_feedback_num"
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 0 - 5
src/main/java/com/fdkankan/manage/httpClient/client/LaserClient.java

@@ -53,11 +53,6 @@ public interface LaserClient {
      */
     @Post(value = "/laser/4dage/scene/cooperation/cameraSave",interceptor = SignInterceptor.class)
     Result cooperationCameraSave(@JSONBody List<Map<String, String> >param);
-    /**
-     * 添加相机协作
-     */
-    @Post(value = "/laser/init/{sceneNum}/saveOrEdit",interceptor = SignInterceptor.class)
-    Result saveOrEdit(@Var("sceneNum") String sceneNum, @JSONBody  Map<String,Object> params);
 
     /**
      * 下载深时场景

+ 6 - 37
src/main/java/com/fdkankan/manage/httpClient/service/LaserService.java

@@ -63,6 +63,8 @@ public class LaserService {
     RedisUtil redisUtil;
     @Autowired
     ISceneColdStorageService sceneColdStorageService;
+    @Autowired
+    ICameraTypeService cameraTypeService;
 
 
     public PageInfo pageList(SceneParam param) {
@@ -225,7 +227,7 @@ public class LaserService {
     private List<String> setSnCodes(List<CameraDetail> cameraDetails) {
         if(cameraDetails != null && cameraDetails.size() >0){
             Set<Long> cameraIds = cameraDetails.stream()
-                    .filter(entity -> entity.getType() == 10 || entity.getType() == 11).map(CameraDetail::getCameraId).collect(Collectors.toSet());
+                    .filter(entity -> cameraTypeService.isLaser(entity.getType())).map(CameraDetail::getCameraId).collect(Collectors.toSet());
             if(cameraIds.size() >0){
                 List<Camera> cameraList = cameraService.listByIds(cameraIds);
                 return cameraList.stream().map(Camera::getSnCode).collect(Collectors.toList());
@@ -300,44 +302,11 @@ public class LaserService {
     }
 
 
-    public void copy(String snCode, String createTime, String newNum, Integer status, String sceneKey, String sceneName, Long userId){
-        String phone = null;
-        if(userId != null){
-            User user = userService.getById(userId);
-            if(user != null){
-                phone = user.getUserName();
-            }
-        }
-        Map<String,Object> params = new HashMap<>();
-        params.put("childName",snCode);
-        params.put("createTime", createTime);
-        params.put("phone", phone);
-        params.put("sceneCode", newNum);
-        params.put("snCode",snCode);
-        params.put("status", status);
-        params.put("password", sceneKey);
-        params.put("title", sceneName);
-        params.put("userId", userId);
-        params.put("copy", true);
-        Result result = laserClient.saveOrEdit(newNum, params);
-        if( result.getCode() != HttpStatus.OK.value()){
-            log.error("激光场景状态同步失败!");
-        }
-    }
 
     public void delete(String num) {
-        try {
-            Map<String,Object> params = new HashMap<>();
-            params.put("sceneCode", num);
-            params.put("status", -1);
-            Result result = laserClient.saveOrEdit(num, params);
-            if(result.getCode() != HttpStatus.OK.value()){
-                log.error("激光场景状态同步失败!");
-            }
-        }catch (Exception e){
-            log.error("激光场景状态同步失败!",e);
-        }
-
+        HashMap<String,Object> map = new HashMap<>();
+        map.put("numList",Arrays.asList(num));
+        rabbitMqProducer.sendByWorkQueue(MqQueueUtil.laserDeleteScene,map);
     }
 
 

+ 5 - 1
src/main/java/com/fdkankan/manage/mapper/IScenePlusMapper.java

@@ -6,7 +6,6 @@ import com.fdkankan.manage.vo.response.GroupByCount;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -27,4 +26,9 @@ public interface IScenePlusMapper extends BaseMapper<ScenePlus> {
     Long getSpaceSumByCameraId(@Param("cameraId") Long cameraId);
 
     List<ScenePlus> getByUserIdsAndLocation(@Param("userIds")List<Long> userIds, @Param("location")Integer location);
+
+
+    List<ScenePlus> selectDelPro(@Param("numList")List<String> numList);
+    void reDelScenePro(@Param("numList")List<String> numList);
+    void reDelSceneProEdit(@Param("proIds")List<Long> proIds);
 }

+ 4 - 0
src/main/java/com/fdkankan/manage/mapper/ISceneProMapper.java

@@ -33,4 +33,8 @@ public interface ISceneProMapper extends BaseMapper<ScenePro> {
     List<GroupByCount> getProSpaceGroupByCameraId();
 
     Long getSpaceSumByCameraId(@Param("cameraId") Long cameraId);
+
+    List<ScenePro> selectDelPro(@Param("numList")List<String> numList);
+    void reDelScenePro(@Param("numList")List<String> numList);
+    void reDelSceneProEdit(@Param("proIds")List<Long> proIds);
 }

+ 3 - 0
src/main/java/com/fdkankan/manage/mq/common/MqQueueUtil.java

@@ -11,4 +11,7 @@ public class MqQueueUtil {
     public static String laserMoveQueue = "laser-migrate-scene";
     public static String laserMoveWenBaoQueue = "relics-migrate-scene-queue";
     public static String laserMoveWenBaoQueue2 = "pano-migrate-scene-queue";
+    public static String RECOVER_SCENE = "recover-scene";
+    public static String PANO_RECOVER_SCENE = "pano-recover-scene";
+    public static String laserDeleteScene = "laser-delete-scene";
 }

+ 2 - 0
src/main/java/com/fdkankan/manage/service/ICameraTypeService.java

@@ -14,4 +14,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
 public interface ICameraTypeService extends IService<CameraType> {
 
     CameraType getByType(Integer cameraType);
+
+    Boolean isLaser(Integer type);
 }

+ 1 - 1
src/main/java/com/fdkankan/manage/service/IScenePlusService.java

@@ -1,6 +1,6 @@
 package com.fdkankan.manage.service;
 
-import com.fdkankan.manage.entity.CameraDetail;
+import com.fdkankan.manage.common.PageInfo;
 import com.fdkankan.manage.entity.ScenePlus;
 import com.baomidou.mybatisplus.extension.service.IService;
 

+ 5 - 0
src/main/java/com/fdkankan/manage/service/ISceneProService.java

@@ -6,6 +6,7 @@ import com.fdkankan.manage.entity.ScenePlus;
 import com.fdkankan.manage.entity.ScenePro;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.manage.vo.request.SceneParam;
+import com.fdkankan.manage.vo.request.SetFeedOptionParam;
 import com.fdkankan.manage.vo.response.GroupByCount;
 
 import java.util.HashMap;
@@ -67,4 +68,8 @@ public interface ISceneProService extends IService<ScenePro> {
     void updateTitleByNum(String sceneNum, String sceneNewTitle);
 
     Object labelList();
+
+    void setFeedbackOption(SetFeedOptionParam param);
+
+    void reDelScene(List<String> numList);
 }

+ 6 - 4
src/main/java/com/fdkankan/manage/service/impl/CameraDetailServiceImpl.java

@@ -53,6 +53,8 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
     IIncrementTypeService incrementTypeService;
     @Autowired
     IFolderSceneService folderSceneService;
+    @Autowired
+    ICameraTypeService cameraTypeService;
 
 
     @Override
@@ -67,7 +69,7 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
         }
         String snCode = null;
         String cooperationUserName = null;
-        if(cameraDetail.getType() == 10 || cameraDetail.getType() == 11){
+        if(cameraTypeService.isLaser(cameraDetail.getType())){
             Camera cameraEntity = cameraService.getById(cameraDetail.getCameraId());
             snCode = cameraEntity.getSnCode();
             cooperationUserName  = user.getUserName();
@@ -82,7 +84,7 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
         //恢复10G基本容量
         this.update(wrapper);
 
-        if(!"local".equals(CacheUtil.uploadType) && cameraDetail.getType() !=10 && cameraDetail.getType() !=11){
+        if(!"local".equals(CacheUtil.uploadType) && !cameraTypeService.isLaser(cameraDetail.getType())){
             sceneProService.lockOrUnLockBySpace(cameraDetail);     //封存场景
         }
         //解绑删除相机。文件夹与场景绑定关系
@@ -231,7 +233,7 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
         long usedSpace = cameraDetail.getUsedSpace() - space ;
         cameraDetail.setUsedSpace(usedSpace < 0 ? 0L :usedSpace);
         //解封封存场景
-        if(cameraDetail.getType() != 10 && cameraDetail.getType() !=11){
+        if(!cameraTypeService.isLaser(cameraDetail.getType())){
             sceneProService.lockOrUnLockBySpace(cameraDetail);
         }
         this.updateById(cameraDetail);
@@ -267,7 +269,7 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
 
     @Override
     public Boolean checkSpace(CameraDetail detailEntity, Long space) {
-        if(!"aws".equals(CacheUtil.uploadType) && (detailEntity.getType() == 10 || detailEntity.getType() == 11)){
+        if(!"aws".equals(CacheUtil.uploadType) && cameraTypeService.isLaser(detailEntity.getType())){
             return true;
         }
         UserIncrement userIncrement = userIncrementService.getByCameraId(detailEntity.getCameraId());

+ 12 - 0
src/main/java/com/fdkankan/manage/service/impl/CameraServiceImpl.java

@@ -60,6 +60,8 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
     ICameraWifiPrefixService cameraWifiPrefixService;
     @Autowired
     ICameraTypeService cameraTypeService;
+    @Autowired
+    IFeedbackOptionService feedbackOptionService;
 
     @Override
     public List<Camera> getListByCameraIdList(List<Long> cameraIdList) {
@@ -106,8 +108,16 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
         for (CameraType cameraType : list) {
             typeHashMap.put(cameraType.getCameraType().toString(),cameraType);
         }
+        List<Integer> fIds = voPage.getRecords().stream().map(CameraDetailVo::getFeedbackOptionId).collect(Collectors.toList());
+        HashMap<Integer, FeedbackOption> mapByIds = feedbackOptionService.getMapByIds(new HashSet<>(fIds));
         for (CameraDetailVo record : voPage.getRecords()) {
             record.setTypeStr(typeHashMap.get(record.getType()).getName());
+            FeedbackOption feedbackOption = mapByIds.get(record.getFeedbackOptionId());
+            if(feedbackOption != null){
+                record.setFeedbackOptionName(feedbackOption.getNameCn());
+            }else {
+                record.setFeedbackOptionId(null);
+            }
         }
         return PageInfo.PageInfo(voPage);
     }
@@ -174,6 +184,7 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
             cameraDetail.setUsedSpace(0L);
             cameraDetail.setColour(param.getColour());
             cameraDetail.setVersion(param.getVersion());
+            cameraDetail.setFeedbackOptionId(param.getFeedbackOptionId());
 
             cameraDetail.setUnit(CacheUtil.cameraUnit);
             if(cameraDetail.getUnit().equals("SP")){
@@ -589,6 +600,7 @@ public class CameraServiceImpl extends ServiceImpl<ICameraMapper, Camera> implem
         wrapper.set(CameraDetail::getGoodsId,param.getCameraType() == 1? 4: param.getCameraType());
         wrapper.set(CameraDetail::getColour,param.getColour());
         wrapper.set(CameraDetail::getVersion,param.getVersion());
+        wrapper.set(CameraDetail::getFeedbackOptionId,param.getFeedbackOptionId());
         cameraDetailService.update(wrapper);
 
 

+ 9 - 0
src/main/java/com/fdkankan/manage/service/impl/CameraTypeServiceImpl.java

@@ -24,4 +24,13 @@ public class CameraTypeServiceImpl extends ServiceImpl<ICameraTypeMapper, Camera
         wrapper.eq(CameraType::getCameraType, cameraType);
         return this.getOne(wrapper);
     }
+
+    @Override
+    public Boolean isLaser(Integer type) {
+        CameraType byType = this.getByType(type);
+        if(byType == null){
+            return false;
+        }
+        return byType.getIsLaser();
+    }
 }

+ 24 - 0
src/main/java/com/fdkankan/manage/service/impl/CaseServiceImpl.java

@@ -6,10 +6,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.manage.common.PageInfo;
 import com.fdkankan.manage.entity.Case;
+import com.fdkankan.manage.entity.FeedbackOption;
 import com.fdkankan.manage.entity.SysUser;
 import com.fdkankan.manage.mapper.ICaseMapper;
 import com.fdkankan.manage.service.ICaseService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.manage.service.IFeedbackOptionService;
 import com.fdkankan.manage.service.ISysUserService;
 import com.fdkankan.manage.vo.request.CaseParam;
 import com.fdkankan.manage.vo.response.CaseVo;
@@ -20,7 +22,9 @@ import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -36,6 +40,8 @@ public class CaseServiceImpl extends ServiceImpl<ICaseMapper, Case> implements I
 
     @Autowired
     ISysUserService sysUserService;
+    @Autowired
+    IFeedbackOptionService feedbackOptionService;
 
     @Override
     public Object pageList(CaseParam param) {
@@ -60,6 +66,14 @@ public class CaseServiceImpl extends ServiceImpl<ICaseMapper, Case> implements I
         Page<Case> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
 
         List<CaseVo> voList = new ArrayList<>();
+        List<JSONArray> arrayList = page.getRecords().stream().map(Case::getFeedbackOptionIds).collect(Collectors.toList());
+        HashSet<Integer> optionIds = new HashSet<>();
+        for (JSONArray jsonArray : arrayList) {
+            for (Object object : jsonArray) {
+                optionIds.add((Integer) object);
+            }
+        }
+        HashMap<Integer, FeedbackOption> mapByIds = feedbackOptionService.getMapByIds(optionIds);
         for (Case record : page.getRecords()) {
             CaseVo vo = new CaseVo();
             BeanUtils.copyProperties(record,vo);
@@ -67,6 +81,16 @@ public class CaseServiceImpl extends ServiceImpl<ICaseMapper, Case> implements I
             if(sysuser != null){
                 vo.setSysUserName(sysuser.getNickName());
             }
+            JSONArray feedbackOptionIds = record.getFeedbackOptionIds();
+            JSONArray newFeedIds = new JSONArray();
+            for (Object feedbackOptionId : feedbackOptionIds) {
+                FeedbackOption feedbackOption = mapByIds.get((Integer) feedbackOptionId);
+                if(feedbackOption !=null){
+                    newFeedIds.add(feedbackOption.getId());
+                }
+            }
+            vo.setFeedbackOptionIds(newFeedIds);
+
             voList.add(vo);
         }
 

+ 4 - 3
src/main/java/com/fdkankan/manage/service/impl/DownService.java

@@ -10,6 +10,7 @@ import com.fdkankan.manage.exception.BusinessException;
 import com.fdkankan.manage.entity.*;
 import com.fdkankan.manage.httpClient.service.LaserService;
 import com.fdkankan.manage.service.*;
+import com.fdkankan.manage.util.CameraUtils;
 import com.fdkankan.manage.vo.response.DownVo;
 import com.fdkankan.manage.vo.response.DownloadProcessVo;
 import com.fdkankan.manage.vo.response.SSDownSceneVo;
@@ -57,7 +58,7 @@ public class DownService implements IDownService {
         }
         Integer sceneType = scenePro !=null ? scenePro.getSceneSource() : plus.getSceneSource();
         log.info("checkDownLoad--sceneType:{},isObj:{}",sceneType,isObj);
-        if((sceneType == 4 || sceneType == 5 ||  sceneType == 57) && isObj !=1){ //深时场景
+        if(CameraUtils.isLaser(sceneType,isObj)){ //深时场景
             return SSCheckDownload(sceneNum);
         }
         int isUp = 0;
@@ -135,7 +136,7 @@ public class DownService implements IDownService {
 
         Integer sceneType = scenePro !=null ? scenePro.getSceneSource() : scenePlus.getSceneSource();
         log.info("down--sceneType:{},isObj:{}",sceneType,isObj);
-        if((sceneType == 4 || sceneType == 5 || sceneType == 57) && isObj !=1){ //深时场景
+        if(CameraUtils.isLaser(sceneType,isObj)){ //深时场景
             return SSDownload(sceneNum,userId);
         }
 
@@ -183,7 +184,7 @@ public class DownService implements IDownService {
         }
         Integer sceneType = scenePro !=null ? scenePro.getSceneSource() : scenePlus.getSceneSource();
         log.info("downloadProcess--sceneType:{},isObj:{}",sceneType,isObj);
-        if((sceneType == 4 || sceneType == 5|| sceneType == 57) && isObj !=1){ //深时场景
+        if(CameraUtils.isLaser(sceneType,isObj)){ //深时场景
             return SSDownloadProcess(sceneNum);
         }
         String redisKey = RedisKey.PREFIX_DOWNLOAD_PROGRESS;

+ 23 - 11
src/main/java/com/fdkankan/manage/service/impl/FeedbackOptionServiceImpl.java

@@ -1,24 +1,30 @@
 package com.fdkankan.manage.service.impl;
 
+import cn.dev33.satoken.stp.StpUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.manage.common.PageInfo;
 import com.fdkankan.manage.common.ResultCode;
 import com.fdkankan.manage.entity.FeedbackOption;
+import com.fdkankan.manage.entity.SysUser;
 import com.fdkankan.manage.exception.BusinessException;
 import com.fdkankan.manage.mapper.IFeedbackOptionMapper;
 import com.fdkankan.manage.service.IFeedbackOptionService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.manage.service.ISysUserService;
 import com.fdkankan.manage.vo.request.FeedbackOptionParam;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.sql.BatchUpdateException;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -31,20 +37,33 @@ import java.util.List;
 @Service
 public class FeedbackOptionServiceImpl extends ServiceImpl<IFeedbackOptionMapper, FeedbackOption> implements IFeedbackOptionService {
 
+    @Autowired
+    ISysUserService sysUserService;
+
     @Override
     public Object pageList(FeedbackOptionParam param) {
         LambdaQueryWrapper<FeedbackOption> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(FeedbackOption::getTypeId,param.getTypeId());
-        wrapper.orderByAsc(FeedbackOption::getId);
+        wrapper.orderByDesc(FeedbackOption::getId);
         Page<FeedbackOption> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
+        Set<Long> sysIds = page.getRecords().stream().map(FeedbackOption::getSysUserId).collect(Collectors.toSet());
+        HashMap<Long, SysUser> byIds = sysUserService.getByIds(sysIds);
+        for (FeedbackOption record : page.getRecords()) {
+            SysUser sysUser = byIds.get(record.getSysUserId());
+            if(sysUser != null){
+                record.setSysNickName(sysUser.getNickName());
+                record.setSysUserName(sysUser.getUserName());
+            }
+        }
         return PageInfo.PageInfo(page);
     }
 
     @Override
     public void add(FeedbackOption feedbackOption) {
-        if(feedbackOption.getTypeId() == null || StringUtils.isBlank(feedbackOption.getNameCn()) || StringUtils.isBlank(feedbackOption.getNameEn())){
+        if(feedbackOption.getTypeId() == null || StringUtils.isBlank(feedbackOption.getNameCn()) ){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
+        feedbackOption.setSysUserId(Long.valueOf(StpUtil.getLoginId().toString()));
         this.save(feedbackOption);
     }
 
@@ -53,15 +72,8 @@ public class FeedbackOptionServiceImpl extends ServiceImpl<IFeedbackOptionMapper
         if(feedbackOption.getId() == null){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
-        LambdaUpdateWrapper<FeedbackOption> updateWrapper = new LambdaUpdateWrapper<>();
-        if(StringUtils.isNotBlank(feedbackOption.getNameCn())){
-            updateWrapper.set(FeedbackOption::getNameCn,feedbackOption.getNameCn());
-        }
-        if(StringUtils.isNotBlank(feedbackOption.getNameEn())){
-            updateWrapper.set(FeedbackOption::getNameEn,feedbackOption.getNameEn());
-        }
-        updateWrapper.eq(FeedbackOption::getId,feedbackOption.getId());
-        this.update(updateWrapper);
+        feedbackOption.setUpdateTime(null);
+        this.updateById(feedbackOption);
     }
 
     @Override

+ 3 - 1
src/main/java/com/fdkankan/manage/service/impl/RtkAccountServiceImpl.java

@@ -65,6 +65,8 @@ public class RtkAccountServiceImpl extends ServiceImpl<IRtkAccountMapper, RtkAcc
     ICameraDetailService cameraDetailService;
     @Autowired
     IExcelService excelService;
+    @Autowired
+    ICameraTypeService cameraTypeService;
 
     @Override
     public RtkAccount getOneNotUseAccount(String rtkSnCode,String cameraSn) {
@@ -74,7 +76,7 @@ public class RtkAccountServiceImpl extends ServiceImpl<IRtkAccountMapper, RtkAcc
             Camera camera = cameraService.getBySnCode(cameraSn);
             if(camera != null){
                 CameraDetail cameraDetail = cameraDetailService.getByCameraId(camera.getId());
-                if(cameraDetail != null && ( cameraDetail.getType() == 10 || cameraDetail.getType() == 11)){
+                if(cameraDetail != null && cameraTypeService.isLaser(cameraDetail.getType())){
                     time = 4 * 60 * 60L;
                 }
             }

+ 1 - 2
src/main/java/com/fdkankan/manage/service/impl/ScenePlusServiceImpl.java

@@ -2,7 +2,7 @@ package com.fdkankan.manage.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.fdkankan.common.util.DateUtil;
+import com.fdkankan.manage.common.PageInfo;
 import com.fdkankan.manage.httpClient.service.LaserService;
 import com.fdkankan.manage.entity.*;
 import com.fdkankan.manage.mapper.IScenePlusMapper;
@@ -13,7 +13,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 

+ 106 - 26
src/main/java/com/fdkankan/manage/service/impl/SceneProServiceImpl.java

@@ -17,11 +17,10 @@ import com.fdkankan.manage.constant.SceneTypeLabelEnum;
 import com.fdkankan.manage.exception.BusinessException;
 import com.fdkankan.common.util.*;
 import com.fdkankan.manage.httpClient.client.FdKKClient;
-import com.fdkankan.manage.httpClient.client.OverallClient;
 import com.fdkankan.manage.httpClient.service.LaserService;
 import com.fdkankan.manage.entity.*;
 import com.fdkankan.manage.httpClient.service.OverallService;
-import com.fdkankan.manage.httpClient.vo.OverallVo;
+import com.fdkankan.manage.mapper.IScenePlusMapper;
 import com.fdkankan.manage.mapper.ISceneProMapper;
 import com.fdkankan.manage.mq.common.MqQueueUtil;
 import com.fdkankan.manage.mq.param.ScenePayStatusVo;
@@ -29,9 +28,9 @@ import com.fdkankan.manage.mq.param.SceneRestStoreVo;
 import com.fdkankan.manage.service.*;
 import com.fdkankan.manage.util.CameraUtils;
 import com.fdkankan.manage.util.DateUtils;
-import com.fdkankan.manage.util.NumTypeUtils;
 import com.fdkankan.manage.util.SceneStatusUtil;
 import com.fdkankan.manage.vo.request.SceneParam;
+import com.fdkankan.manage.vo.request.SetFeedOptionParam;
 import com.fdkankan.manage.vo.response.*;
 import com.fdkankan.rabbitmq.util.RabbitMqProducer;
 import com.fdkankan.redis.util.RedisUtil;
@@ -107,6 +106,10 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     IMqSendLogService mqSendLogService;
     @Autowired
     OverallService overallService;
+    @Autowired
+    ICameraTypeService cameraTypeService;
+    @Autowired
+    IFeedbackOptionService feedbackOptionService;
 
 
     @Override
@@ -162,7 +165,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         if(cameraDetail == null ){
             return;
         }
-        if(!"aws".equals(CacheUtil.uploadType) && ( cameraDetail.getType() ==10 || cameraDetail.getType() == 11)){
+        if(!"aws".equals(CacheUtil.uploadType) && cameraTypeService.isLaser(cameraDetail.getType())){
             return;
         }
         ScenePayStatusVo scenePayStatusVo = new ScenePayStatusVo(cameraDetail.getCameraId());
@@ -206,13 +209,15 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
     @Override
     public PageInfo pageList(SceneParam param) {
-
-        SceneTypeLabelEnum sceneTypeLabelEnum = SceneTypeLabelEnum.getByLabelType(param.getType());
-        if(sceneTypeLabelEnum == null){
-            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        SceneTypeLabelEnum sceneTypeLabelEnum = null;
+        if(param.getType() != null){
+            sceneTypeLabelEnum = SceneTypeLabelEnum.getByLabelType(param.getType());
+            if(sceneTypeLabelEnum == null){
+                throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+            }
         }
 
-        if(param.getType() == 3){ //双目lite
+        if(param.getType() != null && param.getType() == 3){ //双目lite
            return sceneService.pageList(param);
         }
         //优化查询,去掉left join
@@ -242,7 +247,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             return PageInfo.PageInfoEmpty(param.getPageNum(),param.getPageSize());
         }
         HashMap<String, JSONObject> laserMap = new HashMap<>();
-        param.setIsLaser(sceneTypeLabelEnum.getLaser());
+        param.setIsLaser(sceneTypeLabelEnum != null && sceneTypeLabelEnum.getLaser());
 
         Page<SceneVo> page = this.getBaseMapper().pageList(new Page<>(param.getPageNum(),param.getPageSize()),param);
         List<SceneVo> records = page.getRecords();
@@ -253,6 +258,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         HashMap<String,MqSendLog> mqSendLogMap = null;
 
         List<String> sceneNumList = page.getRecords().stream().map(SceneVo::getNum).collect(Collectors.toList());
+        List<Integer> feedbackOptionIds = page.getRecords().stream().map(SceneVo::getFeedbackOptionId).collect(Collectors.toList());
+        HashMap<Integer, FeedbackOption> mapByIds = feedbackOptionService.getMapByIds(new HashSet<>(feedbackOptionIds));
+
         if(!records.isEmpty()){
             map = copyLogService.getByNewNumList(sceneNumList);
             coldStorageMap = sceneColdStorageService.getByNumList(sceneNumList);
@@ -263,7 +271,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
             if(param.getIsLaser()){
                 laserMap = laserService.list(sceneNumList,sceneTypeLabelEnum.getSceneSource().get(0));
-
             }
 
             List<String> modelingNumList = page.getRecords().stream().filter(e -> e.getStatus() == 0).map(SceneVo::getNum).collect(Collectors.toList());
@@ -290,6 +297,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                 if(record.getSceneSource() != null && (SceneTypeLabelEnum.isLaserBySceneSource(record.getSceneSource()))){
                     record.setComputeTime(record.getMeshComputeTime());
                 }
+                if(CameraUtils.isLaser(record.getSceneSource(),record.getIsObj())){
+                    record.setSceneName(record.getLaserTitle());
+                }
             }
             if(record.getStatus() != -2){
                 record.setComputeTime(null);
@@ -329,7 +339,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                 }
                 record.setBuildErrorReason(SceneBuildProcessLogEnum.getReason(process));
             }
-            //{"latitude":22.3672085,"longitude":113.595673,"altitude":9.275519,"horizontalAccuracy":65.0,"verticalAccuracy":10.0,"timestamp":1564381147.2775609}
             record.setAddressComponent(commonService.getAddressComponent(record.getGps()));
 
             if(mqSendLogMap!=null){
@@ -339,13 +348,13 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                     record.setStatus(-4);
                 }
             }
+            FeedbackOption feedbackOption = mapByIds.get(record.getFeedbackOptionId());
+            if(feedbackOption != null){
+                record.setFeedbackOptionName(feedbackOption.getNameCn());
+            }else {
+                record.setFeedbackOptionId(null);
+            }
 
-//            if(record.getLocation() != null && (record.getLocation() == 5 || record.getLocation() == 6)){
-//                if(record.getMixture() != 1){
-//                    record.setSlamCount(record.getShootCount());
-//                    record.setShootCount(null);
-//                }
-//            }
         }
         return PageInfo.PageInfo(page);
     }
@@ -467,19 +476,18 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         sceneResourceCameraService.setCooperationUser(cameraDetail,num);
 
         //String newDataSource = updateFdageNewDataSource(scenePro, scenePlus, oldCamera.getSnCode(), param.getSnCode(), dataSource);
-
-        if(cameraDetail.getType() == 10 || cameraDetail.getType() == 11){       //深时场景
+        Boolean newIsLaser = cameraTypeService.isLaser(cameraDetail.getType());
+        Boolean oldIsLaser = cameraTypeService.isLaser(oldCameraDetail.getType());
+        if(newIsLaser){       //深时场景
             //迁移深时 dataSource
             //FileUtil.move(new File(dataSource +"_laserData"),new File(newDataSource+"_laserData"),true);
             laserService.move(num,oldCamera.getSnCode(),camera.getSnCode(),cameraDetail.getUserId(),dataSource);
         }
-        cameraDetailService.updateUseSpace(oldCameraDetail.getCameraId(),oldCameraDetail.getUnit().equals("SP")?-1L: -space);
-        cameraDetailService.updateUseSpace(cameraDetail.getCameraId(),cameraDetail.getUnit().equals("SP")?+1L: +space);
 
-        if(!"aws".equals(CacheUtil.uploadType) && oldCameraDetail.getType() != 11 && oldCameraDetail.getType() != 10 && subSpace >0){           //有剩余容量解封容量内场景
+        if(!"aws".equals(CacheUtil.uploadType) && !oldIsLaser && subSpace >0){           //有剩余容量解封容量内场景
             cameraIds.add(oldCameraDetail.getCameraId());
         }
-        if(!"aws".equals(CacheUtil.uploadType) && cameraDetail.getType() != 11 && cameraDetail.getType() != 10){           //有剩余容量解封容量内场景
+        if(!"aws".equals(CacheUtil.uploadType) && !oldIsLaser){           //有剩余容量解封容量内场景
             cameraIds.add(cameraDetail.getCameraId());
         }
         if("aws".equals(CacheUtil.uploadType) && subSpace >0){           //有剩余容量解封容量内场景
@@ -686,7 +694,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             }
             scenePlusService.removeById(scenePlus.getId());
         }
-        if(sceneSource != null && (sceneSource == 4 || sceneSource == 5 || sceneSource ==57)){
+        if(CameraUtils.isLaser(sceneSource)){
             laserService.delete(num);
         }
         //overallService.delete(num);
@@ -913,7 +921,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             }
         }
         //深时场景通知修改计算完成时间
-        if(sceneResource != null && (sceneResource == 4 || sceneResource == 5)){
+        if(CameraUtils.isLaser(sceneResource)){
             HashMap<String,String> map = new HashMap<>();
             map.put("sceneCode",num);
             map.put("algorithmTime",date);
@@ -965,4 +973,76 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     public Object labelList() {
         return SceneTypeLabelEnum.getAllProperties();
     }
+
+    @Override
+    public void setFeedbackOption(SetFeedOptionParam param) {
+        LambdaUpdateWrapper<ScenePro> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.eq(ScenePro::getNum,param.getNum());
+        updateWrapper.set(ScenePro::getFeedbackOptionId,param.getFeedbackOptionId());
+        this.update(updateWrapper);
+
+        LambdaUpdateWrapper<ScenePlus> updateWrapper2 = new LambdaUpdateWrapper<>();
+        updateWrapper2.eq(ScenePlus::getNum,param.getNum());
+        updateWrapper2.set(ScenePlus::getFeedbackOptionId,param.getFeedbackOptionId());
+        scenePlusService.update(updateWrapper2);
+
+        LambdaUpdateWrapper<Scene> updateWrapper3 = new LambdaUpdateWrapper<>();
+        updateWrapper3.eq(Scene::getNum,param.getNum());
+        updateWrapper3.set(Scene::getFeedbackOptionId,param.getFeedbackOptionId());
+        sceneService.update(updateWrapper3);
+    }
+
+    @Autowired
+    IScenePlusMapper scenePlusMapper;
+    @Override
+    public void reDelScene(List<String> numList) {
+
+        List<String> laserNumList = new ArrayList<>();
+        List<String> qjkkNumList = new ArrayList<>();
+        List<ScenePro> sceneProList = this.getBaseMapper().selectDelPro(numList);
+        if(!sceneProList.isEmpty()){
+            List<Long> proIds = sceneProList.stream().map(ScenePro::getId).collect(Collectors.toList());
+            this.getBaseMapper().reDelScenePro(numList);
+            this.getBaseMapper().reDelSceneProEdit(proIds);
+
+            List<String> lNumList = sceneProList.stream().filter(e -> CameraUtils.isLaser(e.getSceneSource())).map(ScenePro::getNum).collect(Collectors.toList());
+            if(!lNumList.isEmpty()){
+                laserNumList.addAll(lNumList);
+            }
+            List<String> lNumList2 = sceneProList.stream().filter(e -> CameraUtils.isQjkk(e.getSceneSource())).map(ScenePro::getNum).collect(Collectors.toList());
+            if(!lNumList2.isEmpty()){
+                qjkkNumList.addAll(lNumList2);
+            }
+        }
+
+        List<ScenePlus> scenePlusList = scenePlusMapper.selectDelPro(numList);
+        if(!scenePlusList.isEmpty()){
+            List<Long> plusIds = scenePlusList.stream().map(ScenePlus::getId).collect(Collectors.toList());
+            scenePlusMapper.reDelScenePro(numList);
+            scenePlusMapper.reDelSceneProEdit(plusIds);
+
+            List<String> lNumList = scenePlusList.stream().filter(e -> CameraUtils.isLaser(e.getSceneSource())).map(ScenePlus::getNum).collect(Collectors.toList());
+            if(!lNumList.isEmpty()){
+                laserNumList.addAll(lNumList);
+            }
+
+            List<String> lNumList2 = scenePlusList.stream().filter(e -> CameraUtils.isQjkk(e.getSceneSource())).map(ScenePlus::getNum).collect(Collectors.toList());
+            if(!lNumList2.isEmpty()){
+                qjkkNumList.addAll(lNumList2);
+            }
+        }
+
+        if(!laserNumList.isEmpty()){
+            HashMap<String,Object> map = new HashMap<>();
+            map.put("numList",laserNumList);
+            rabbitMqProducer.sendByWorkQueue(MqQueueUtil.RECOVER_SCENE,map);
+        }
+        if(!qjkkNumList.isEmpty()){
+            HashMap<String,Object> map = new HashMap<>();
+            map.put("numList",qjkkNumList);
+            rabbitMqProducer.sendByWorkQueue(MqQueueUtil.PANO_RECOVER_SCENE,map);
+        }
+
+    }
+
 }

+ 17 - 1
src/main/java/com/fdkankan/manage/service/impl/SceneServiceImpl.java

@@ -5,18 +5,23 @@ 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.manage.common.PageInfo;
+import com.fdkankan.manage.entity.FeedbackOption;
 import com.fdkankan.manage.entity.Scene;
 import com.fdkankan.manage.mapper.ISceneMapper;
+import com.fdkankan.manage.service.IFeedbackOptionService;
 import com.fdkankan.manage.service.ISceneService;
 import com.fdkankan.manage.util.SceneStatusUtil;
 import com.fdkankan.manage.vo.request.SceneParam;
 import com.fdkankan.manage.vo.response.GroupByCount;
 import com.fdkankan.manage.vo.response.SceneVo;
 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.HashSet;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -29,7 +34,8 @@ import java.util.List;
 @Service
 public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implements ISceneService {
 
-
+    @Autowired
+    IFeedbackOptionService feedbackOptionService;
     @Override
     public void unbindCamera(Long cameraId) {
         LambdaUpdateWrapper<Scene> wrapper = new LambdaUpdateWrapper<>();
@@ -57,11 +63,21 @@ public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implement
     @Override
     public PageInfo pageList(SceneParam param) {
         Page<SceneVo> page = this.getBaseMapper().pageList(new Page<>(param.getPageNum(), param.getPageSize()), param);
+        List<Integer> feedbackOptionIds = page.getRecords().stream().map(SceneVo::getFeedbackOptionId).collect(Collectors.toList());
+        HashMap<Integer, FeedbackOption> mapByIds = feedbackOptionService.getMapByIds(new HashSet<>(feedbackOptionIds));
+
         for (SceneVo record : page.getRecords()) {
             record.setStatusString(SceneStatusUtil.getStatusString(record));
             if(StringUtils.isNotBlank(record.getCopyTime())){
                 record.setIsCopy(true);
             }
+
+            FeedbackOption feedbackOption = mapByIds.get(record.getFeedbackOptionId());
+            if(feedbackOption != null){
+                record.setFeedbackOptionName(feedbackOption.getNameCn());
+            }else {
+                record.setFeedbackOptionId(null);
+            }
         }
         return PageInfo.PageInfo(page);
     }

+ 2 - 152
src/main/java/com/fdkankan/manage/test/TestController.java

@@ -64,130 +64,6 @@ public class TestController {
         return ResultData.ok(ciphertext);
     }
 
-    /**
-     * 重置相机容量
-     */
-    @RequestMapping("/testCameraSpace")
-    public ResultData testCameraSpace(@RequestParam(required = false) Long userId){
-        cameraService.initAllCameraSpace(userId);
-        return ResultData.ok();
-    }
-
-    @RequestMapping("/testCameraSpaceId")
-    public ResultData testCameraSpaceId(@RequestParam(required = false) Long cameraId){
-        cameraDetailService.initSpace(cameraId);
-        return ResultData.ok();
-    }
-
-
-    /**
-     * 导入excel
-     * type 0 入库模板, 1出库模板 ,2 客户关联模板 ,3 rtk设备模版,4rtk账号模版
-     */
-    @PostMapping("/uploadExcel")
-    public ResultData uploadExcel(@RequestParam(required = false) MultipartFile file) throws IOException {
-        String originalFilename = file.getOriginalFilename();
-        assert originalFilename != null;
-        String fileType=originalFilename.substring(originalFilename.lastIndexOf(".")+1);
-        if (!fileType.equalsIgnoreCase("xlsx")) {
-            throw new BusinessException(ResultCode.FILE_TYPE_ERROR);
-        }
-        List<HashMap<Integer, String>> excelRowList = new ArrayList<>();
-        try {
-            excelRowList = ExcelUtil.getExcelRowList(file);
-        }catch (Exception e){
-            throw new BusinessException(ResultCode.TEMPLATE_TYPE_ERROR);
-        }
-        System.out.println(excelRowList);
-        return ResultData.ok();
-    }
-    @Autowired
-    ThreadService threadService;
-
-    @GetMapping("/restStroeTest")
-    public ResultData restStoreTest() throws InterruptedException {
-        String bucket = "4dkankan";
-        String cloudBucket = "4dkk-bak";
-        String path = "test001";
-//        try {
-//            fYunFileServiceInterface.restoreFolder(cloudBucket,path,1);
-//        }catch (Exception e){
-//            throw new BusinessException(ResultCode.SCENE_STORE_ING);
-//        }
-        threadService.checkRestore("1",cloudBucket,bucket,path);
-        return ResultData.ok();
-    }
-
-
-    @GetMapping("/initCamera")
-    public ResultData initCamera(){
-        String[] snCodes = this.getSnCodeTest();
-        List<String> snCodeList = Arrays.asList(snCodes);
-        LambdaQueryWrapper<Camera> wrapper = new LambdaQueryWrapper<>();
-        wrapper.notIn(Camera::getSnCode,snCodeList);
-        List<Camera> list = cameraService.list(wrapper);
-        for (Camera camera : list) {
-            if(camera == null){
-                continue;
-            }
-            CameraDetail cameraDetail = cameraDetailService.getByCameraId(camera.getId());
-            if(cameraDetail == null){
-                continue;
-            }
-            if(cameraDetail.getType() == 10){
-                continue;
-            }
-            Long proSpace = sceneProService.getCountByCameraId(cameraDetail.getCameraId());
-            Long plusSpace = scenePlusService.getCountByCameraId(cameraDetail.getCameraId());
-            LambdaUpdateWrapper<CameraDetail> wrapper1 = new LambdaUpdateWrapper<>();
-            wrapper1.eq(CameraDetail::getId,cameraDetail.getId());
-            wrapper1.set(CameraDetail::getUnit,"SP");
-            wrapper1.set(CameraDetail::getTotalSpace,5);
-            wrapper1.set(CameraDetail::getUsedSpace,(plusSpace == null ?0L:plusSpace )+( proSpace == null ?0L:proSpace));
-            cameraDetailService.update(wrapper1);
-            sceneProService.lockOrUnLockBySpace(cameraDetail.getCameraId());
-        }
-
-        return ResultData.ok();
-    }
-
-    @RequestMapping("/restFolderScene")
-    public ResultData restFolderScene(){
-        List<FolderScene> list = folderSceneService.list();
-        for (FolderScene folderScene : list) {
-            Long sceneId = folderScene.getSceneId();
-            Long folderId = folderScene.getFolderId();
-            Folder folder = folderService.getById(folderId);
-            if(folder == null){
-                folderSceneService.removeById(folderScene.getId());
-                continue;
-            }
-            Long fUserId = folder.getUserId();
-            Long sUserId = null;
-            ScenePro pro = sceneProService.getById(sceneId);
-            if(pro != null && pro.getIsUpgrade() == 0){
-                sUserId = pro.getUserId();
-            }
-            ScenePlus plus = scenePlusService.getById(sceneId);
-            if(plus != null ){
-                sUserId = plus.getUserId();
-            }
-            if(sUserId != null && !sUserId.equals(fUserId)){
-                folderSceneService.removeById(folderScene.getId());
-            }
-            if(sUserId == null){
-                folderSceneService.removeById(folderScene.getId());
-            }
-        }
-        return ResultData.ok();
-    }
-
-    private String[] getSnCodeTest(){
-        String res [] = {
-                "0292D9F64",
-        };
-        return res;
-    }
 
 
     /**
@@ -223,34 +99,8 @@ public class TestController {
         return ResultData.ok();
     }
 
-    @Autowired
-    IMqCameraLevelService mqCameraLevelService;
-    @Autowired
-    IMqNumLevelService mqNumLevelService;
-
-    @PostMapping("/updateModelingLevel")
-    public ResultData updateModelingLevel(@RequestBody ModelingLevelParam param){
-        if(param.getConfigId() == null && (param.getCameraId() == null || StringUtils.isBlank(param.getNum()))){
-            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
-        }
-        if(param.getCameraId() != null){
-            MqCameraLevel cameraLevel = mqCameraLevelService.getByCameraId(param.getCameraId());
-            if(cameraLevel == null){
-                mqCameraLevelService.saveEntity(param.getCameraId(),param.getConfigId());
-            }else {
-                mqCameraLevelService.updateLevelById(cameraLevel.getId(),param.getConfigId());
-            }
-        }
-        if(StringUtils.isNotBlank(param.getNum())){
-            MqNumLevel mqNumLevel = mqNumLevelService.getByNum(param.getNum(),param.getType());
-            if(mqNumLevel == null){
-                mqNumLevelService.saveEntity(param.getNum(),param.getConfigId(),param.getType());
-            }else {
-                mqNumLevelService.updateLevelById(mqNumLevel.getId(),param.getConfigId());
-            }
-        }
-
-        return ResultData.ok();
+    public static void main(String[] args) {
+        System.out.println(SecurityUtil.MD5("0\u0001FDFDDLDL"));
     }
 
 }

+ 30 - 0
src/main/java/com/fdkankan/manage/util/CameraUtils.java

@@ -1,7 +1,12 @@
 package com.fdkankan.manage.util;
 
+import java.util.Arrays;
+import java.util.List;
+
 public class CameraUtils {
 
+    public static List<Integer> laserSceneSourceList = Arrays.asList(4,5,7,57);
+    public static List<Integer> laserCameraTypeList = Arrays.asList(10,11,12);
     public static  Integer getCameraType2(Integer type){
         switch (type){
             case 0 : return 1;
@@ -38,4 +43,29 @@ public class CameraUtils {
         }
         return "";
     }
+
+    public static boolean isLaser(Integer sceneSource, Integer isObj) {
+        if(sceneSource == null || isObj == null){
+            return false;
+        }
+        return isLaser(sceneSource) && isObj == 0;
+    }
+
+    public static boolean isLaser(Integer sceneSource) {
+        if(sceneSource == null){
+            return false;
+        }
+        return laserSceneSourceList.contains(sceneSource);
+    }
+
+    public static boolean isLaserCamera(Integer cameraType) {
+        if(cameraType == null){
+            return false;
+        }
+        return laserCameraTypeList.contains(cameraType);
+    }
+
+    public static boolean isQjkk(Integer sceneSource) {
+        return sceneSource == 6;
+    }
 }

+ 0 - 22
src/main/java/com/fdkankan/manage/util/NumTypeUtils.java

@@ -1,22 +0,0 @@
-package com.fdkankan.manage.util;
-
-public class NumTypeUtils {
-
-    public static Boolean isLaser(Integer type){
-        switch (type){
-            case 0:
-            case 1:
-            case 3:
-            case 4:
-            case 5:
-            case 7:
-                return false;
-            case 2:
-            case 6:
-            case 8:
-            case 57:
-                return true;
-        }
-        return false;
-    }
-}

+ 1 - 1
src/main/java/com/fdkankan/manage/util/ProvinceUtils.java

@@ -18,7 +18,7 @@ import java.util.Objects;
 @Slf4j
 public class ProvinceUtils {
 
-    public static String amapKey = "3609daa52e8ae4493393292213e2fb98";
+    public static String amapKey = "333e2da7205de9e3bdab9df3ea48f29f";
 
     public static String getAddressByIpHost ="https://restapi.amap.com/v3/ip?ip=%s&key=%s";
 

+ 1 - 0
src/main/java/com/fdkankan/manage/vo/request/CameraInOutParam.java

@@ -22,4 +22,5 @@ public class CameraInOutParam {
 
     private String colour;
     private String version;
+    private Integer feedbackOptionId;
 }

+ 2 - 1
src/main/java/com/fdkankan/manage/vo/request/SceneParam.java

@@ -17,7 +17,7 @@ public class SceneParam extends RequestBase {
     private String sceneName;   //场景标题
     private String snCode;      //sn码
     private String userName;    //绑定账号
-    private Integer type = 0;   //0 看看,1看见,2深时
+    private Integer type ;   //0 看看,1看见,2深时
     private Integer companyId;
 
     private List<String> snCodes;
@@ -40,6 +40,7 @@ public class SceneParam extends RequestBase {
     private List<Integer> locations;
     private Integer locationType;
     private Boolean isLaser;
+    private String recStatus = "A";
 
     private List<String> numList = new ArrayList<>();
     public String getStartTime() {

+ 17 - 0
src/main/java/com/fdkankan/manage/vo/request/SetFeedOptionParam.java

@@ -0,0 +1,17 @@
+package com.fdkankan.manage.vo.request;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SetFeedOptionParam {
+    private Integer feedbackOptionId;
+    private String num;
+
+
+}
+

+ 4 - 0
src/main/java/com/fdkankan/manage/vo/response/CameraDetailVo.java

@@ -34,6 +34,10 @@ public class CameraDetailVo {
 
     private String version;
 
+    private Integer feedbackOptionId;
+
+    private String feedbackOptionName;
+
     public String getWarrantyDate() {
         if(buyDate ==null){
             return null;

+ 6 - 0
src/main/java/com/fdkankan/manage/vo/response/SceneVo.java

@@ -1,5 +1,6 @@
 package com.fdkankan.manage.vo.response;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fdkankan.manage.entity.SceneBuildProcessLog;
 import lombok.Data;
 
@@ -58,4 +59,9 @@ public class SceneVo {
     private Long meshComputeTime; //mesh计算时间 单位秒
 
     private Integer sceneSource;
+
+    private Integer feedbackOptionId;
+
+    private String feedbackOptionName;
+
 }

+ 4 - 1
src/main/resources/bootstrap-dev.yml

@@ -32,10 +32,13 @@ spring:
             group: DEFAULT_GROUP
             refresh: true
 
-          - data-id: sa-token-config.yaml
+          - data-id: common-rabbitmq-config.yaml
             group: DEFAULT_GROUP
             refresh: true
 
+          - data-id: sa-token-config.yaml
+            group: DEFAULT_GROUP
+            refresh: true
       discovery:
         server-addr: ${spring.cloud.nacos.config.server-addr}
         namespace: ${spring.cloud.nacos.config.namespace}

+ 1 - 1
src/main/resources/mapper/manage/CameraMapper.xml

@@ -4,7 +4,7 @@
 
     <select id="pageList" resultType="com.fdkankan.manage.vo.response.CameraDetailVo">
         select c.id ,c.sn_code,c.activated_time ,d.create_time as outTime ,d.type,d.own as outType ,co.company_name ,u.user_name, c.wifi_name,
-        d.order_sn,an.id as agentId,an.name as agentName,d.buy_date,d.colour,d.version
+        d.order_sn,an.id as agentId,an.name as agentName,d.buy_date,d.colour,d.version,d.feedback_option_id
         from t_camera c
         left join t_camera_detail d on c.id = d.camera_id
         left join t_company co on d.company_id = co.id

+ 1 - 1
src/main/resources/mapper/manage/SceneMapper.xml

@@ -20,7 +20,7 @@
 
     <select id="pageList" resultType="com.fdkankan.manage.vo.response.SceneVo">
         select s.scene_name ,s.num,s.create_time,c.sn_code,s.space as sceneSize,cl.old_num,cl.create_time ,u.user_name,s.view_count,s.status,s.pay_status,
-               s.web_site , s.thumb ,cl.create_time  as copy_time
+               s.web_site , s.thumb ,cl.create_time  as copy_time,s.feedback_option_id
         from t_scene s
         left join t_scene_copy_log cl on s.num = cl.new_num
         left join t_user u on s.user_id = u.id

+ 27 - 0
src/main/resources/mapper/manage/ScenePlusMapper.xml

@@ -32,4 +32,31 @@
             </foreach>
 
     </select>
+
+
+
+    <select id="selectDelPro" resultType="com.fdkankan.manage.entity.ScenePlus" >
+        select * from t_scene_plus  WHERE rec_status = 'I'
+        and num in
+        <foreach item="num" collection="numList" open="(" separator="," close=")">
+            #{num}
+        </foreach>
+    </select>
+
+
+    <update id="reDelScenePro">
+        update t_scene_plus set rec_status = 'A' WHERE rec_status = 'I'
+        and num in
+        <foreach item="num" collection="numList" open="(" separator="," close=")">
+            #{num}
+        </foreach>
+    </update>
+
+    <update id="reDelSceneProEdit">
+        update t_scene_plus_ext set rec_status = 'A' WHERE rec_status = 'I'
+        and plus_id in
+        <foreach item="plusId" collection="proIds" open="(" separator="," close=")">
+            #{plusId}
+        </foreach>
+    </update>
 </mapper>

+ 29 - 3
src/main/resources/mapper/manage/SceneProMapper.xml

@@ -24,7 +24,8 @@
         SELECT * FROM(
         select s.scene_name ,s.num,s.create_time,s.space as sceneSize
         ,s.view_count,s.status,s.pay_status,'v3' as scene_version ,s.web_site , s.thumb
-        ,null as algorithmTime,data_source,s.shoot_count,s.gps,s.user_id,s.camera_id,s.compute_time,null as location,null as mixture,s.laser_title,null as slamCount,null as meshComputeTime,s.scene_source
+        ,null as algorithmTime,data_source,s.shoot_count,s.gps,s.user_id,s.camera_id,s.compute_time,null as location,null as mixture,s.laser_title,null as slamCount,
+         null as meshComputeTime,s.scene_source,s.feedback_option_id,s.is_obj
         from t_scene_pro s
         <include refid="commonWhere"></include>
         <if test="param.isLaser ==0 and param.sceneName != null and param.sceneName!='' ">
@@ -46,7 +47,8 @@
         UNION ALL
         select s.title as sceneName ,s.num,s.create_time,e.space as sceneSize
         ,e.view_count,s.scene_status as status,s.pay_status,'v4' as scene_version,e.web_site,e.thumb
-        ,algorithm_time,data_source,e.shoot_count,e.gps,s.user_id,s.camera_id,e.compute_time,e.location,e.mixture,s.laser_title,e.slam_count,e.mesh_compute_time,s.scene_source
+        ,algorithm_time,data_source,e.shoot_count,e.gps,s.user_id,s.camera_id,e.compute_time,e.location,e.mixture,s.laser_title,e.slam_count,
+        e.mesh_compute_time,s.scene_source,s.feedback_option_id,e.is_obj
         from t_scene_plus s
         left join t_scene_plus_ext e on s.id = e.plus_id
         <include refid="commonWhere"></include>
@@ -73,7 +75,7 @@
     </select>
 
     <sql id="commonWhere">
-        where s.rec_status = 'A'
+        where s.rec_status = #{param.recStatus}
         <if test="param.cameraIds !=null and param.cameraIds.size >0">
             and s.camera_id in
             <foreach item="cameraId" collection="param.cameraIds" open="(" separator="," close=")">
@@ -150,5 +152,29 @@
         select sum(space) from t_scene_pro where rec_status= 'A' and status = -2 and is_upgrade = 0 and camera_id = #{cameraId}
     </select>
 
+    <select id="selectDelPro" resultType="com.fdkankan.manage.entity.ScenePro">
+        select * from t_scene_pro  WHERE rec_status = 'I'
+        and num in
+        <foreach item="num" collection="numList" open="(" separator="," close=")">
+            #{num}
+        </foreach>
+    </select>
+
+
+    <update id="reDelScenePro">
+        update t_scene_pro set rec_status = 'A' WHERE rec_status = 'I'
+        and num in
+        <foreach item="num" collection="numList" open="(" separator="," close=")">
+            #{num}
+        </foreach>
+    </update>
+
+    <update id="reDelSceneProEdit">
+        update t_scene_pro_edit set rec_status = 'A' WHERE rec_status = 'I'
+        and pro_id in
+        <foreach item="proId" collection="proIds" open="(" separator="," close=")">
+            #{proId}
+        </foreach>
+    </update>
 
 </mapper>