lyhzzz 7 ay önce
ebeveyn
işleme
4db9b38464

+ 64 - 0
src/main/java/com/fdkankan/manage/common/SceneTypeEnum.java

@@ -0,0 +1,64 @@
+package com.fdkankan.manage.common;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public enum SceneTypeEnum {
+    kk(0, Arrays.asList(1),false,false,"看看"),
+    kj(1,Arrays.asList(3),false,false,"看见"),
+    ss_laser(2,Arrays.asList(4),true,false,"深时点云"),
+    ss_mesh(5,Arrays.asList(4),false,false,"深时mesh"),
+    sg_laser(6,Arrays.asList(5),true,false,"深光点云"),
+    sg_mesh(7,Arrays.asList(5),false,false,"深光mesh"),
+    yzl(8,Arrays.asList(1),false,true,"圆周率")
+
+    ;
+
+
+    private int type;
+    private List<Integer> sceneSource;
+    private Boolean isLaser;
+    private Boolean threeCamera;
+    private String desc;
+
+    public int getType() {
+        return type;
+    }
+
+    public List<Integer> getSceneSource() {
+        return sceneSource;
+    }
+
+    public Boolean getThreeCamera() {
+        return threeCamera;
+    }
+
+    public Boolean getLaser() {
+        return isLaser;
+    }
+
+    public static Map<Integer, SceneTypeEnum> typeMaps = new HashMap<>(7);
+
+    static{
+        for (SceneTypeEnum typeEnum : SceneTypeEnum.values()) {
+            typeMaps.put(typeEnum.getType(),typeEnum);
+        }
+    }
+
+    SceneTypeEnum(Integer type, List<Integer> sceneSource,Boolean isLaser, Boolean threeCamera, String desc) {
+        this.type = type;
+        this.sceneSource = sceneSource;
+        this.isLaser = isLaser;
+        this.threeCamera = threeCamera;
+        this.desc = desc;
+    }
+
+    public static SceneTypeEnum getEnumByType(Integer type){
+        if(typeMaps.containsKey(type)){
+            return typeMaps.get(type);
+        }
+        return null;
+    }
+}

+ 12 - 3
src/main/java/com/fdkankan/manage/controller/CaseController.java

@@ -80,7 +80,7 @@ public class CaseController {
                     caseIdAll.addAll(openCaseIds);
                 }
             }
-            List<JySceneUserAuth> jySceneUserAuths = jySceneUserAuthService.getByJyUserId(jyUser.getId());
+            List<JySceneUserAuth> jySceneUserAuths = jySceneUserAuthService.getByJyUserIdAndCaseId(jyUser.getId(),0,openCaseIds);
             jySceneUserAuths.stream().filter(e ->e.getCaseId() != null).forEach( e-> authHashMap.put(e.getCaseId(),e));
             authCaseIds = jySceneUserAuths.stream().map(JySceneUserAuth::getCaseId).collect(Collectors.toList());
             if(!authCaseIds.isEmpty()){
@@ -138,7 +138,7 @@ public class CaseController {
 
     @PostMapping("/addOrUpdate")
     public ResultData addOrUpdate(@RequestBody CaseParam param){
-        caseService.addOrUpdate(param);
+
         List<String> numList = new ArrayList<>();
         for (CaseNumType caseNumType : param.getSceneNumParam()) {
             if(!caseNumType.getNumList().isEmpty()){
@@ -146,8 +146,17 @@ public class CaseController {
             }
         }
         if(!numList.isEmpty()){
-            jySceneAuthService.delByNumList(numList);
+            List<CaseNum> list = caseNumService.getByNumList(numList);
+            Set<Integer> setIds = list.stream().map(CaseNum::getCaseId).collect(Collectors.toSet());
+            if(!setIds.isEmpty()){
+                List<Case> cases = caseService.listByIds(setIds);
+                if(!cases.isEmpty()){
+                    throw new BusinessException(ResultCode.NUM_IN_CASE);
+                }
+            }
         }
+        caseService.addOrUpdate(param);
+        jySceneAuthService.delByNumList(numList);
         return ResultData.ok();
     }
 

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

@@ -70,6 +70,8 @@ public interface LaserClient {
 
     @Post("/laser/jm/scene/updateUser")
     FdkkResponse updateUser(@JSONBody LaserUpdateUserVo laserUpdateUserVo);
+    @Post("/laser/jm/scene/updateSceneUser")
+    FdkkResponse updateSceneUser(@JSONBody LaserUpdateUserVo laserUpdateUserVo);
 
     /**
      * 下载深时场景

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

@@ -151,6 +151,12 @@ public class LaserService {
             throw new BusinessException(fdkkResponse.getCode(),fdkkResponse.getMsg());
         }
     }
+    public void updateSceneUser(LaserUpdateUserVo laserUpdateUserVo) {
+        FdkkResponse fdkkResponse = laserClient.updateSceneUser(laserUpdateUserVo);
+        if(fdkkResponse.getCode() != 200){
+            throw new BusinessException(fdkkResponse.getCode(),fdkkResponse.getMsg());
+        }
+    }
 
     public SSDownSceneVo downOfflineSceneStatus(String num) {
         try {

+ 8 - 0
src/main/java/com/fdkankan/manage/httpClient/vo/LaserUpdateUserVo.java

@@ -15,4 +15,12 @@ public class LaserUpdateUserVo {
 
     //@ApiModelProperty(value = "修改-用户Id")
     private Long toUserId;
+
+    private String sceneCode;
+
+    public LaserUpdateUserVo(Long userId, String toUserName, Long toUserId) {
+        this.userId = userId;
+        this.toUserName = toUserName;
+        this.toUserId = toUserId;
+    }
 }

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

@@ -27,4 +27,7 @@ public interface ISceneProMapper extends BaseMapper<ScenePro> {
     List<GroupByCount> getCountGroupByCameraId(@Param("cameraIds") List<Long> cameraIds);
 
     Page<SceneVo> pageList(Page<SceneVo> page, SceneParam param);
+    Page<SceneVo> pageList2(Page<SceneVo> page, SceneParam param);
+    Page<SceneVo> selectMesh(Page<SceneVo> page, SceneParam param);
+    Page<SceneVo> selectLaser(Page<SceneVo> page, SceneParam param);
 }

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

@@ -28,4 +28,6 @@ public interface ICaseNumService extends IService<CaseNum> {
     HashMap<Integer,CaseNumType> getCaseNumTypeByCaseId(Integer caseId);
 
     List<CaseNum> getByNum(String num);
+
+    List<CaseNum> getByNumList(List<String> numList);
 }

+ 4 - 0
src/main/java/com/fdkankan/manage/service/IJySceneUserAuthService.java

@@ -37,6 +37,10 @@ public interface IJySceneUserAuthService extends IService<JySceneUserAuth> {
 
     List<JySceneUserAuth> getByJyUserId(Integer jyUserId);
 
+    List<JySceneUserAuth> getByJyUserIdAndCaseId(Integer jyUserId, Integer authType, List<Integer> openCaseIds);
+    List<JySceneUserAuth> getByJyUserIdAndNum(Integer jyUserId, Integer authType, List<String> numList);
+
+
     Object checkNumAuth(String num,Integer caseId,String token,String clientIP,String userName,String password);
 
 

+ 7 - 0
src/main/java/com/fdkankan/manage/service/impl/CaseNumServiceImpl.java

@@ -99,4 +99,11 @@ public class CaseNumServiceImpl extends ServiceImpl<ICaseNumMapper, CaseNum> imp
         wrapper.eq(CaseNum::getNum,num);
         return this.list(wrapper);
     }
+
+    @Override
+    public List<CaseNum> getByNumList(List<String> numList) {
+        LambdaQueryWrapper<CaseNum> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(CaseNum::getNum,numList);
+        return this.list(wrapper);
+    }
 }

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

@@ -54,6 +54,9 @@ public class CaseServiceImpl extends ServiceImpl<ICaseMapper, Case> implements I
         }
         if(param.getCaseIds() != null && !param.getCaseIds().isEmpty()){
             wrapper.in(Case::getCaseId,param.getCaseIds());
+            if(param.getSysUserIds() != null && !param.getSysUserIds().isEmpty()){
+                wrapper.notIn(Case::getSysUserId,param.getSysUserIds());
+            }
         }else {
             if(param.getSysUserIds() != null && !param.getSysUserIds().isEmpty()){
                 wrapper.in(Case::getSysUserId,param.getSysUserIds());

+ 7 - 5
src/main/java/com/fdkankan/manage/service/impl/DataService.java

@@ -276,11 +276,13 @@ public class DataService implements IDataService {
         List<DataGroupByCount> ssObjList = new ArrayList<>();
         List<DataGroupByCount> sgList = new ArrayList<>();
         List<DataGroupByCount> sgObjList = new ArrayList<>();
+        List<DataGroupByCount> yzlList = new ArrayList<>();
+
         List<DataGroupByCount> proList = new ArrayList<>();
         List<DataGroupByCount> plusList = new ArrayList<>();
         List<DataGroupByCount> proObjList = new ArrayList<>();
         List<DataGroupByCount> plusObjList = new ArrayList<>();
-        List<DataGroupByCount> yzlList = new ArrayList<>();
+        List<DataGroupByCount> yzlDataList = new ArrayList<>();
         int rule = Dateutils.DAY;
         switch (type){
             case 0 :
@@ -288,7 +290,7 @@ public class DataService implements IDataService {
                 plusList = dataMapper.sceneGroupBy("t_scene_plus",dayFormat,startTime,endTime,userIds);
                 proObjList = dataMapper.sceneObjGroupBy("t_scene_pro",dayFormat,startTime,endTime,userIds,null);
                 plusObjList = dataMapper.sceneObjGroupBy("t_scene_plus",dayFormat,startTime,endTime,userIds,null);
-                yzlList = dataMapper.sceneObjGroupBy("t_scene_plus",dayFormat,startTime,endTime,userIds,"yzl");
+                yzlDataList = dataMapper.sceneObjGroupBy("t_scene_plus",dayFormat,startTime,endTime,userIds,"yzl");
                 break;
             case 1 :
                 rule = Dateutils.WEEK;
@@ -296,14 +298,14 @@ public class DataService implements IDataService {
                 plusList = dataMapper.sceneGroupByWeek("t_scene_plus",startTime,endTime,userIds);
                 proObjList = dataMapper.sceneObjGroupByWeek("t_scene_pro",startTime,endTime,userIds,null);
                 plusObjList = dataMapper.sceneObjGroupByWeek("t_scene_plus",startTime,endTime,userIds,null);
-                yzlList = dataMapper.sceneObjGroupByWeek("t_scene_plus",startTime,endTime,userIds,"yzl");
+                yzlDataList = dataMapper.sceneObjGroupByWeek("t_scene_plus",startTime,endTime,userIds,"yzl");
                 break;
             case 2 :
                 rule = Dateutils.MONTH;
                 proList = dataMapper.sceneGroupBy("t_scene_pro",mouthFormat,startTime,endTime,userIds);
                 plusList = dataMapper.sceneGroupBy("t_scene_plus",mouthFormat,startTime,endTime,userIds);
                 proObjList = dataMapper.sceneObjGroupBy("t_scene_pro",mouthFormat,startTime,endTime,userIds,null);
-                yzlList = dataMapper.sceneObjGroupBy("t_scene_plus",mouthFormat,startTime,endTime,userIds,"yzl");
+                yzlDataList = dataMapper.sceneObjGroupBy("t_scene_plus",mouthFormat,startTime,endTime,userIds,"yzl");
                 break;
         }
         HashMap<String, Long> kkMap = new HashMap<>();
@@ -357,7 +359,7 @@ public class DataService implements IDataService {
                 sgObjMap.merge(dataGroupByCount.getGroupKey(),dataGroupByCount.getCount(), Long:: sum);
             }
         }
-        for (DataGroupByCount dataGroupByCount : yzlList) {
+        for (DataGroupByCount dataGroupByCount : yzlDataList) {
             yzlMap.merge(dataGroupByCount.getGroupKey(),dataGroupByCount.getCount(), Long:: sum);
         }
         Long kkCount = 0L;

+ 48 - 2
src/main/java/com/fdkankan/manage/service/impl/JySceneUserAuthServiceImpl.java

@@ -224,7 +224,22 @@ public class JySceneUserAuthServiceImpl extends ServiceImpl<IJySceneUserAuthMapp
                 throw new BusinessException(ResultCode.CASE_NOT_EXIST);
             }
             jySceneAuthService.updateAuthTypeByCaseId(param.getCaseId(),param.getAuthType());
+            delRedisCache(param.getCaseId());
+        }
+
+    }
 
+    private void delRedisCache(Integer caseId){
+        try {
+            String redisKey = "fusion:checkCase:caseId:%s*";
+            Set<String> keys = redisUtil.keys(String.format(redisKey,caseId));
+            if(keys == null || keys.isEmpty()){
+                return;
+            }
+            String [] keysS = keys.toArray(new String[0]);
+            redisUtil.del(keysS);
+        }catch (Exception e){
+            log.info("delRedisCache-error",e);
         }
 
     }
@@ -294,6 +309,7 @@ public class JySceneUserAuthServiceImpl extends ServiceImpl<IJySceneUserAuthMapp
         }
         if(param.getCaseId() != null){
             jySceneAuth = jySceneAuthService.getByCaseId(param.getCaseId());
+            delRedisCache(param.getCaseId());
         }
         if(jySceneAuth == null){
             jySceneAuth = new JySceneAuth(param.getAuthType());
@@ -319,7 +335,13 @@ public class JySceneUserAuthServiceImpl extends ServiceImpl<IJySceneUserAuthMapp
         if(param.getId() == null){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
-        this.removeById(param.getId());
+        JySceneUserAuth byId = this.getById(param.getId());
+        if(byId != null){
+            if(byId.getCaseId() != null){
+                delRedisCache(byId.getCaseId());
+            }
+            this.removeById(param.getId());
+        }
     }
 
     @Override
@@ -576,7 +598,7 @@ public class JySceneUserAuthServiceImpl extends ServiceImpl<IJySceneUserAuthMapp
             sceneAuthVo.setEditAuth(true);
             sceneAuthVo.setIsAuthor(true);
         }
-        if(!sceneAuthVo.getViewAuth()){
+        if(!sceneAuthVo.getViewAuth() && StringUtils.isNotBlank(num)){
             List<JyUserShare> jyUserShares = jyUserShareService.getByJyUserId(jyUser.getId());
             List<Integer> mainUserIds = jyUserShares.stream().map(JyUserShare::getMainJyUserId).collect(Collectors.toList());
             HashMap<Integer,Long> roleMap = new HashMap<>();
@@ -623,6 +645,30 @@ public class JySceneUserAuthServiceImpl extends ServiceImpl<IJySceneUserAuthMapp
     }
 
     @Override
+    public List<JySceneUserAuth> getByJyUserIdAndCaseId(Integer jyUserId, Integer authType, List<Integer> openCaseIds) {
+        LambdaQueryWrapper<JySceneUserAuth> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(JySceneUserAuth::getJyUserId,jyUserId);
+        wrapper.eq(JySceneUserAuth::getAuthType,authType);
+        wrapper.isNotNull(JySceneUserAuth::getCaseId);
+        if(!openCaseIds.isEmpty()){
+            wrapper.notIn(JySceneUserAuth::getCaseId,openCaseIds);
+        }
+        return this.list(wrapper);
+    }
+
+    @Override
+    public List<JySceneUserAuth> getByJyUserIdAndNum(Integer jyUserId, Integer authType, List<String> openCaseIds) {
+        LambdaQueryWrapper<JySceneUserAuth> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(JySceneUserAuth::getJyUserId,jyUserId);
+        wrapper.eq(JySceneUserAuth::getAuthType,authType);
+        wrapper.isNotNull(JySceneUserAuth::getNum);
+        if(!openCaseIds.isEmpty()){
+            wrapper.notIn(JySceneUserAuth::getNum,openCaseIds);
+        }
+        return this.list(wrapper);
+    }
+
+    @Override
     public void delByJyUserId(Integer jyUserId) {
         LambdaQueryWrapper<JySceneUserAuth> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(JySceneUserAuth::getJyUserId,jyUserId);

+ 54 - 11
src/main/java/com/fdkankan/manage/service/impl/JyUserServiceImpl.java

@@ -1,10 +1,13 @@
 package com.fdkankan.manage.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.fdkankan.manage.common.ResultCode;
 import com.fdkankan.manage.entity.*;
 import com.fdkankan.manage.exception.BusinessException;
+import com.fdkankan.manage.httpClient.param.LaserSceneParam;
+import com.fdkankan.manage.httpClient.service.LaserService;
 import com.fdkankan.manage.mapper.IJyUserMapper;
 import com.fdkankan.manage.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -195,11 +198,15 @@ public class JyUserServiceImpl extends ServiceImpl<IJyUserMapper, JyUser> implem
     IJySceneUserAuthService jySceneUserAuthService;
     @Autowired
     ICaseNumService caseNumService;
+    @Autowired
+    IJySceneAuthService jySceneAuthService;
+    @Autowired
+    LaserService laserService;
 
 
     @Override
     public Object getCaseNumByRyId(CaseParam param) {
-        if(StringUtils.isBlank(param.getRyId()) || param.getCaseId() == null){
+        if(StringUtils.isBlank(param.getRyId()) || param.getCaseId() == null ){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
         JyUser jyUser = jyUserService.getByRyId(param.getRyId());
@@ -208,7 +215,11 @@ public class JyUserServiceImpl extends ServiceImpl<IJyUserMapper, JyUser> implem
         }
         List<UserAuthSceneVo> voList = new ArrayList<>();
 
-        JySceneUserAuth jySceneUserAuths = jySceneUserAuthService.getByCaseIdAndJyUserId(jyUser.getId(),param.getCaseId(),0);
+        JySceneAuth byCaseId = jySceneAuthService.getByCaseId(param.getCaseId());
+        if(byCaseId == null){
+            return voList;
+        }
+        JySceneUserAuth jySceneUserAuths = jySceneUserAuthService.getByCaseIdAndJyUserId(jyUser.getId(),param.getCaseId(),byCaseId.getAuthType());
         if(jySceneUserAuths == null){
             return voList;
         }
@@ -217,25 +228,57 @@ public class JyUserServiceImpl extends ServiceImpl<IJyUserMapper, JyUser> implem
         if(caseNums.isEmpty()){
             return voList;
         }
-        List<String> numList = caseNums.stream().map(CaseNum::getNum).collect(Collectors.toList());
-
-        List<ScenePlus> scenePluses = scenePlusService.getByNumList(numList);
+        List<ScenePlus> scenePluses = new ArrayList<>();
+        List<JSONObject> laserSceneByDb = new ArrayList<>();
+        List<String> numList = caseNums.stream().filter(e -> e.getNumType() !=4 && e.getNumType()!=6).map(CaseNum::getNum).collect(Collectors.toList());
+        List<String> laserNumList = caseNums.stream().filter(e -> e.getNumType() ==4 || e.getNumType()==6).map(CaseNum::getNum).collect(Collectors.toList());
+        if(!numList.isEmpty()){
+            scenePluses = scenePlusService.getByNumList(numList);
+        }
+        if(!laserNumList.isEmpty()){
+           laserSceneByDb = laserService.getLaserSceneByDb(new LaserSceneParam(laserNumList));
+        }
 
-        if(scenePluses.isEmpty()){
+        if(scenePluses.isEmpty() && laserSceneByDb.isEmpty()){
             return voList;
         }
+        HashMap<String,ScenePlus> scenePlusMap = new HashMap<>();
+        scenePluses.forEach(e -> scenePlusMap.put(e.getNum(),e));
+
+        HashMap<String,JSONObject> laerMap = new HashMap<>();
+        laserSceneByDb.forEach(e -> laerMap.put(e.getString("scene_code"),e));
+
         List<Long> plusIds = scenePluses.stream().map(ScenePlus::getId).collect(Collectors.toList());
         HashMap<Long, ScenePlusExt> byPlusIds = scenePlusExtService.getByPlusIds(plusIds);
 
-        for (ScenePlus scenePlus : scenePluses) {
+        for (CaseNum caseNum : caseNums) {
+            if(caseNum.getNumType() == 3){
+                continue;
+            }
             UserAuthSceneVo vo = new UserAuthSceneVo();
-            BeanUtils.copyProperties(scenePlus,vo);
-            ScenePlusExt ext = byPlusIds.get(scenePlus.getId());
-            if(ext != null){
-                BeanUtils.copyProperties(ext,vo);
+            if(caseNum.getNumType() == 4 || caseNum.getNumType() == 6){
+                JSONObject jsonObject = laerMap.get(caseNum.getNum());
+                if(jsonObject == null){
+                    continue;
+                }
+                vo.setWebSite(jsonObject.getString("web_site"));
+                vo.setTitle(jsonObject.getString("title"));
+            }else {
+                ScenePlus scenePlus = scenePlusMap.get(caseNum.getNum());
+                if(scenePlus == null){
+                    continue;
+                }
+                ScenePlusExt ext = byPlusIds.get(scenePlus.getId());
+                if(ext == null){
+                    continue;
+                }
+                vo.setWebSite(ext.getWebSite());
+                vo.setTitle(scenePlus.getTitle());
             }
             BeanUtils.copyProperties(jySceneUserAuths, vo);
             voList.add(vo);
+
+
         }
 
 

+ 4 - 1
src/main/java/com/fdkankan/manage/service/impl/ScenePlusExtServiceImpl.java

@@ -33,10 +33,13 @@ public class ScenePlusExtServiceImpl extends ServiceImpl<IScenePlusExtMapper, Sc
 
     @Override
     public HashMap<Long, ScenePlusExt> getByPlusIds(List<Long> plusIds) {
+        HashMap<Long,ScenePlusExt> map = new HashMap<>();
+        if(plusIds == null || plusIds.isEmpty()){
+            return map;
+        }
         LambdaQueryWrapper<ScenePlusExt> wrapper = new LambdaQueryWrapper<>();
         wrapper.in(ScenePlusExt::getPlusId,plusIds);
         List<ScenePlusExt> list = this.list(wrapper);
-        HashMap<Long,ScenePlusExt> map = new HashMap<>();
         list.forEach(entity -> map.put(entity.getPlusId(),entity));
         return map;
     }

+ 61 - 45
src/main/java/com/fdkankan/manage/service/impl/SceneProServiceImpl.java

@@ -11,16 +11,15 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.constant.SceneConstant;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
-import com.fdkankan.manage.common.OssPath;
-import com.fdkankan.manage.common.ResultCode;
+import com.fdkankan.manage.common.*;
+import com.fdkankan.manage.config.LaserConfig;
 import com.fdkankan.manage.exception.BusinessException;
-import com.fdkankan.manage.common.PageInfo;
 import com.fdkankan.common.util.*;
 import com.fdkankan.manage.httpClient.client.FdKKClient;
 import com.fdkankan.manage.httpClient.param.LaserSceneParam;
 import com.fdkankan.manage.httpClient.service.LaserService;
-import com.fdkankan.manage.common.CameraConstant;
 import com.fdkankan.manage.entity.*;
+import com.fdkankan.manage.httpClient.vo.LaserUpdateUserVo;
 import com.fdkankan.manage.mapper.ISceneProMapper;
 import com.fdkankan.manage.service.*;
 import com.fdkankan.manage.util.SceneStatusUtil;
@@ -81,6 +80,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     @Autowired
     LaserService laserService;
     @Autowired
+    LaserConfig laserConfig;
+    @Autowired
     FdKKClient fdKKClient;
     @Autowired
     IFolderSceneService folderSceneService;
@@ -320,7 +321,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             }
             param.setPlatformId(loginPlatformId);
 
-            if(byId.getRoleId() == 47L || param.getIsObj() != null){
+            if(byId.getRoleId() == 47L ){
                 param.setUserId(jyUser.getUserId());
             }
         }
@@ -331,7 +332,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             if(!openNums.isEmpty()){
                 param.getAuthNumList().addAll(openNums);
             }
-            List<JySceneUserAuth> list = jySceneUserAuthService.getByJyUserId(jyUser.getId());
+            List<JySceneUserAuth> list = jySceneUserAuthService.getByJyUserIdAndNum(jyUser.getId(),0,openNums);
             if(list.size() >0){
                 List<String> numList = list.stream().filter(entity -> !(entity.getLookAuth()==0 && entity.getEditAuth() ==0)).map(JySceneUserAuth::getNum).collect(Collectors.toList());
                 param.getAuthNumList().addAll(numList);
@@ -359,49 +360,50 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             }
         }
 
-        Set<Long> userIds = null;
-        HashMap<Long,JyUser> userMap = new HashMap<>();
-        HashMap<String, JSONObject>  laserMap = new HashMap<>();
+        Page<SceneVo> page ;
+        SceneTypeEnum enumByType ;
+        if(param.getIsObj() != null){
+            if(param.getIsObj() == 0){
+                page = this.getBaseMapper().selectLaser(new Page<>(param.getPageNum(),param.getPageSize()),param);
+            }else {
+                page = this.getBaseMapper().selectMesh(new Page<>(param.getPageNum(),param.getPageSize()),param);
+            }
+        }else {
+            if(param.getType() == null){
+                page = this.getBaseMapper().pageList2(new Page<>(param.getPageNum(),param.getPageSize()),param);
+            }else {
+                enumByType = SceneTypeEnum.getEnumByType(param.getType());
+                if(enumByType == null){
+                    throw new BusinessException(ResultCode.CAMERA_TYPE_ERROR);
+                }
+                param.setSceneSource(enumByType.getSceneSource());
+                if(enumByType.getThreeCamera()){
+                    param.setThreeCamType(true);
+                }else {
+                    param.setNotThreeCamType(true);
+                }
+                if(enumByType.getLaser()){
+                    page = this.getBaseMapper().selectLaser(new Page<>(param.getPageNum(),param.getPageSize()),param);
+                }else {
+                    page = this.getBaseMapper().selectMesh(new Page<>(param.getPageNum(),param.getPageSize()),param);
+                }
+            }
+        }
+
 
-        Page<SceneVo> page  = this.getBaseMapper().pageList(new Page<>(param.getPageNum(),param.getPageSize()),param);
         List<SceneVo> records = page.getRecords();
         List<String> numList = records.parallelStream().map(SceneVo::getNum).collect(Collectors.toList());
-        List<String> lasesrNumList = records.parallelStream().filter(e -> e.getSceneSource() ==4 || e.getSceneSource() == 5).map(SceneVo::getNum).collect(Collectors.toList());
-
-        if(!lasesrNumList.isEmpty()){
-            laserMap = laserService.getMapLaserSceneByDb(new LaserSceneParam(numList));
-        }
-        userIds = page.getRecords().stream().map(SceneVo::getUserId).collect(Collectors.toSet());
-        userMap = jyUserService.getMapByUserIds(userIds);
 
         HashMap<String,SceneCopyLog> map =  copyLogService.getByNewNumList(numList);
 
         for (SceneVo record : page.getRecords()) {
-            if( param.getType() == null || param.getType() == 2 || param.getType() == 6 ){
-                if(param.getIsObj() == null || param.getIsObj() == 0){
-                    if(record.getSceneSource() == 4 || record.getSceneSource() == 5){
-                        JSONObject ssObj = laserMap.get(record.getNum());
-                        if(ssObj!=null){
-                            record.setId(ssObj.getInteger("id"));
-                            record.setSceneName(ssObj.getString("title"));
-                            record.setThumb(ssObj.getString("thumb"));
-                            record.setWebSite(ssObj.getString("web_site"));
-                            record.setViewCount(ssObj.getInteger("view_count"));
-                            record.setStatus(laserService.toFdStatus(ssObj.getInteger("status")));
-                            record.setAlgorithmTime(ssObj.getString("algorithm_time"));
-                        }else if(record.getStatus() != 0){
-                            record.setStatus(-1);
-                            record.setWebSite(null);
-                        }
-                    }
-                }
+            if( record.getSceneType().equals("laser") ){
+                record.setStatus(laserService.toFdStatus(record.getStatus()));
+                record.setWebSite(laserConfig.getLaserWebSite()+record.getNum());
+                record.setPayStatus(1);
             }
 
             record.setStatusString(SceneStatusUtil.getStatusString(record));
-            if(userMap.get(record.getUserId()) != null){
-                record.setUserName(userMap.get(record.getUserId()).getRyNo());
-                record.setNickName(userMap.get(record.getUserId()).getRyNickName());
-            }
             if(map !=null ){
                 SceneCopyLog sceneCopyLog = map.get(record.getNum());
                 if(sceneCopyLog != null){
@@ -434,21 +436,27 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             }else {
                 record.setIsShare(true);
             }
-            record.setType( param.getType() == null ?setSceneType(record.getSceneSource(),record.getThreeCamType()) : param.getType());
+            record.setType( param.getType() == null ?setSceneType(record.getSceneSource(),record.getThreeCamType(),record.getSceneType()) : param.getType());
         }
         return PageInfo.PageInfo(page);
     }
 
-    private Integer setSceneType(Integer sceneSource,String threeCamType) {
+    private Integer setSceneType(Integer sceneSource,String threeCamType,String sceneType) {
         if(sceneSource == 3 ){
             return 1;
         }
-        if(sceneSource == 4 ){
+        if(sceneSource == 4 && sceneType.equals("laser")){
             return 2;
         }
-        if(sceneSource == 5 ){
+        if(sceneSource == 4 && sceneType.equals("4dkankan")){
+            return 5;
+        }
+        if(sceneSource == 5 && sceneType.equals("laser")){
             return 6;
         }
+        if(sceneSource == 5 && sceneType.equals("4dkankan")){
+            return 7;
+        }
         return StringUtils.isBlank(threeCamType) ? 0 : 8;
     }
 
@@ -458,15 +466,22 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         SysUser byId = sysUserService.getById(Long.valueOf(StpUtil.getLoginId().toString()));
         JyUser jyUser = jyUserService.getBySysId(byId.getId());
         LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<>();
-        if(byId.getRoleId() != 1L && byId.getRoleId() !=45L && byId.getRoleId() != 48){
+        if(byId.getRoleId() != 1L ){
             if(jyUser == null){
                 throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
             }
-            wrapper.eq(ScenePlus::getUserId,jyUser.getUserId());
+            if(byId.getRoleId() !=45L && byId.getRoleId() != 48L){
+                wrapper.eq(ScenePlus::getUserId,jyUser.getUserId());
+            }
             List<JySceneUserAuth> list = jySceneUserAuthService.getByJyUserId(jyUser.getId());
             if(list.size() >0){
                 return 1;
             }
+            List<JyUserShare> jyUserShares = jyUserShareService.getByJyUserId(jyUser.getId());
+            if(jyUserShares.size() >0){
+                return 1;
+            }
+
         }
         List<Long> userIds = new ArrayList<>();
         if(byId.getRoleId() == 45L || byId.getRoleId() == 48L){
@@ -518,6 +533,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         scenePlusService.update(wrapper);
         jyMoveSceneLogService.saveLog(scenePlus.getNum(),scenePlus.getUserId(),jyUser.getUserId(),Long.valueOf(StpUtil.getLoginId().toString()));
 
+        laserService.updateSceneUser(new LaserUpdateUserVo(scenePlus.getUserId(),jyUser.getRyNo(),jyUser.getUserId(),scenePlus.getNum()));
     }
 
     @Override

+ 6 - 0
src/main/java/com/fdkankan/manage/vo/request/SceneParam.java

@@ -31,4 +31,10 @@ public class SceneParam extends RequestBase {
 
     private Integer sceneType = 0;  //0自己场景,1场景共享
     private Integer caseId;
+
+
+    private List<Integer> sceneSource;
+    private Boolean threeCamType;
+    private Boolean notThreeCamType;
+
 }

+ 3 - 2
src/main/java/com/fdkankan/manage/vo/response/SceneVo.java

@@ -10,6 +10,8 @@ import java.util.List;
 
 @Data
 public class SceneVo {
+    private  Integer id;
+    private String sceneType;
     private String sceneName;       //场景标题
     private String num;             //场景码
     private String createTime;      //拍摄时间
@@ -39,8 +41,6 @@ public class SceneVo {
 
     private String webSite;
 
-    private Integer id;
-
     private Integer platformId;
 
     private Boolean isShare = false;
@@ -50,5 +50,6 @@ public class SceneVo {
     private Integer type;
 
     private String threeCamType;
+    private Integer isObj;
 
 }

+ 159 - 2
src/main/resources/mapper/manage/SceneProMapper.xml

@@ -56,7 +56,6 @@
                 </foreach>
             </if>
 
-
             <if test="param.otherUserIds !=null and param.otherUserIds.size>0">
                 or u.id in
                 <foreach item="userId" collection="param.otherUserIds" open="(" separator="," close=")">
@@ -92,7 +91,7 @@
         </if>
 
         <if test="param.isObj != null and param.isObj == 1">
-            and ( e.is_obj = 1 or
+            and (  e.is_obj = 1 or
                 s.scene_source not in (4,5)
             )
         </if>
@@ -124,4 +123,162 @@
             and s.scene_source = 5
         </if>
     </sql>
+
+    <select id="selectMesh" resultType="com.fdkankan.manage.vo.response.SceneVo">
+        <include refid="selectMesh"></include>
+        order by create_time desc
+    </select>
+
+    <select id="selectLaser" resultType="com.fdkankan.manage.vo.response.SceneVo">
+        <include refid="selectLaser"></include>
+        order by create_time desc
+    </select>
+
+
+    <select id="pageList2" resultType="com.fdkankan.manage.vo.response.SceneVo">
+        <include refid="selectMesh"></include>
+        UNION  all
+        <include refid="selectLaser"></include>
+        ORDER BY create_time desc
+
+    </select>
+
+    <sql id="selectMesh">
+        select s.id,'4dkankan' as sceneType,s.title as sceneName ,s.num,s.create_time,c.sn_code,e.space as sceneSize
+             ,u.user_name,e.view_count,s.scene_status as status,s.pay_status,'v4' as scene_version,e.web_site , e.thumb
+             ,e.algorithm_time,s.user_id,jy.platform_id,s.scene_source,s.three_cam_type,e.is_obj,jy.ry_no as nickName
+        from t_scene_plus s
+                 left join t_scene_plus_ext e on s.id = e.plus_id
+                 left join t_user u on s.user_id = u.id
+                 left join t_camera c on s.camera_id = c.id
+                 left join jy_user jy on u.id = jy.user_id
+        WHERE s.rec_status = 'A' and
+            ( s.scene_source in (4,5) and e.is_obj = 1 or s.scene_source not in (4,5) )
+
+        <if test="param.sceneName != null and param.sceneName!='' ">
+            and s.title like concat ('%',#{param.sceneName},'%')
+        </if>
+        <if test="param.snCode != null and param.snCode !='' ">
+            and c.sn_code like concat ('%',#{param.snCode},'%')
+        </if>
+        <if test="param.num != null and param.num !='' ">
+            and s.num like concat ('%',#{param.num},'%')
+        </if>
+        <if test="param.userName != null and param.userName !='' ">
+            and u.user_name like concat ('%',#{param.userName},'%')
+        </if>
+
+        <if test="param.sceneSource != null and param.sceneSource.size >0">
+            and s.scene_source in
+            <foreach item="source" collection="param.sceneSource" open="(" separator="," close=")">
+                #{source}
+            </foreach>
+        </if>
+        <if test="param.threeCamType !=null  ">
+            and s.three_cam_type = 'yzl'
+        </if>
+        <if test="param.notThreeCamType !=null ">
+            and s.three_cam_type is null
+        </if>
+
+        <if test="param.sceneType == 0">
+            <if test="param.userId!=null">
+                and u.id  = #{param.userId}
+            </if>
+            <if test="param.platformId!=null">
+                and jy.platform_id  = #{param.platformId}
+            </if>
+        </if>
+        <if test="param.sceneType == 1">
+            and ( 1!=1
+            <if test="param.otherPlatformIds != null and param.otherPlatformIds.size >0">
+                or jy.platform_id in
+                <foreach item="platformId" collection="param.otherPlatformIds" open="(" separator="," close=")">
+                    #{platformId}
+                </foreach>
+            </if>
+
+            <if test="param.otherUserIds !=null and param.otherUserIds.size>0">
+                or u.id in
+                <foreach item="userId" collection="param.otherUserIds" open="(" separator="," close=")">
+                    #{userId}
+                </foreach>
+            </if>
+
+            <if test="param.authNumList !=null and param.authNumList.size>0  ">
+                or s.num in
+                <foreach item="num" collection="param.authNumList" open="(" separator="," close=")">
+                    #{num}
+                </foreach>
+            </if>
+            )
+        </if>
+
+
+
+    </sql>
+
+    <sql id="selectLaser">
+        SELECT s.id,'laser' as sceneType, s.title as sceneName,s.scene_code as num,s.create_time,s.sn_code,s.space as scennSize,s.user_name,s.view_count,s.status,
+               s.pay_status,'v4' as scene_version,s.web_site,s.init_pic as thumb,s.algorithm_time,s.user_id,jy.platform_id,s.scene_source,
+               null as asthree_cam_type ,null as is_obj,jy.ry_no as nickName
+        from fdkk_laser.t_scene s
+                 left join t_user u on s.user_id = u.id
+                 left join jy_user jy on u.id = jy.user_id
+        WHERE s.deleted = 0
+
+        <if test="param.sceneName != null and param.sceneName!='' ">
+            and s.title like concat ('%',#{param.sceneName},'%')
+        </if>
+        <if test="param.snCode != null and param.snCode !='' ">
+            and s.sn_code like concat ('%',#{param.snCode},'%')
+        </if>
+        <if test="param.num != null and param.num !='' ">
+            and s.scene_code like concat ('%',#{param.num},'%')
+        </if>
+        <if test="param.userName != null and param.userName !='' ">
+            and s.user_name like concat ('%',#{param.userName},'%')
+        </if>
+
+        <if test="param.sceneSource != null and param.sceneSource.size >0">
+            and s.scene_source in
+            <foreach item="source" collection="param.sceneSource" open="(" separator="," close=")">
+                #{source}
+            </foreach>
+        </if>
+
+        <if test="param.sceneType == 0">
+            <if test="param.userId!=null">
+                and u.id  = #{param.userId}
+            </if>
+            <if test="param.platformId!=null">
+                and jy.platform_id  = #{param.platformId}
+            </if>
+        </if>
+        <if test="param.sceneType == 1">
+            and ( 1!=1
+            <if test="param.otherPlatformIds != null and param.otherPlatformIds.size >0">
+                or jy.platform_id in
+                <foreach item="platformId" collection="param.otherPlatformIds" open="(" separator="," close=")">
+                    #{platformId}
+                </foreach>
+            </if>
+
+            <if test="param.otherUserIds !=null and param.otherUserIds.size>0">
+                or u.id in
+                <foreach item="userId" collection="param.otherUserIds" open="(" separator="," close=")">
+                    #{userId}
+                </foreach>
+            </if>
+
+            <if test="param.authNumList !=null and param.authNumList.size>0  ">
+                or s.scene_code in
+                <foreach item="num" collection="param.authNumList" open="(" separator="," close=")">
+                    #{num}
+                </foreach>
+            </if>
+            )
+        </if>
+
+    </sql>
 </mapper>