|
@@ -16,8 +16,11 @@ import com.fdkankan.manage.common.*;
|
|
|
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.ISceneProMapper;
|
|
|
import com.fdkankan.manage.mq.common.MqQueueUtil;
|
|
|
import com.fdkankan.manage.mq.param.ScenePayStatusVo;
|
|
@@ -98,6 +101,10 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
ICommonService commonService;
|
|
|
@Autowired
|
|
|
IUserService userService;
|
|
|
+ @Autowired
|
|
|
+ IMqSendLogService mqSendLogService;
|
|
|
+ @Autowired
|
|
|
+ OverallService overallService;
|
|
|
|
|
|
|
|
|
@Override
|
|
@@ -197,9 +204,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
|
|
|
@Override
|
|
|
public PageInfo pageList(SceneParam param) {
|
|
|
- if(param.getType() == 2 || param.getType() == 6){ //深时
|
|
|
- return laserService.pageList(param);
|
|
|
- }
|
|
|
if(param.getType() == 3){ //双目lite
|
|
|
return sceneService.pageList(param);
|
|
|
}
|
|
@@ -236,20 +240,45 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
HashMap<String,SceneColdStorage> coldStorageMap = null;
|
|
|
HashMap<Long, User> userMap = null;
|
|
|
HashMap<Long, Camera> cameraMap = null;
|
|
|
+ HashMap<String,JSONObject> ssSceneMap = null;
|
|
|
+ HashMap<String,MqSendLog> mqSendLogMap = null;
|
|
|
|
|
|
+ List<String> sceneNumList = page.getRecords().stream().map(SceneVo::getNum).collect(Collectors.toList());
|
|
|
if(!records.isEmpty()){
|
|
|
- List<String> numList = records.parallelStream().map(SceneVo::getNum).collect(Collectors.toList());
|
|
|
- map = copyLogService.getByNewNumList(numList);
|
|
|
- coldStorageMap = sceneColdStorageService.getByNumList(numList);
|
|
|
-
|
|
|
+ map = copyLogService.getByNewNumList(sceneNumList);
|
|
|
+ coldStorageMap = sceneColdStorageService.getByNumList(sceneNumList);
|
|
|
List<Long> userIds = records.parallelStream().map(SceneVo::getUserId).collect(Collectors.toList());
|
|
|
userMap = userService.getByIds(userIds);
|
|
|
-
|
|
|
List<Long> cameraIds = records.parallelStream().map(SceneVo::getCameraId).collect(Collectors.toList());
|
|
|
cameraMap = cameraService.getByIds(cameraIds);
|
|
|
|
|
|
+ if(param.getType() == 2 ){
|
|
|
+ ssSceneMap = laserService.list(sceneNumList,4);
|
|
|
+ }
|
|
|
+ if(param.getType() == 6){
|
|
|
+ ssSceneMap = laserService.list(sceneNumList,5);
|
|
|
+ }
|
|
|
+ List<String> modelingNumList = page.getRecords().stream().filter(e -> e.getStatus() == 0).map(SceneVo::getNum).collect(Collectors.toList());
|
|
|
+ if(!modelingNumList.isEmpty()){
|
|
|
+ mqSendLogMap = mqSendLogService.getByNumList(modelingNumList);
|
|
|
+ }
|
|
|
}
|
|
|
for (SceneVo record : page.getRecords()) {
|
|
|
+ if(param.getType() == 2 || param.getType() == 6){
|
|
|
+ JSONObject ssObj = ssSceneMap.get(record.getNum());
|
|
|
+ if(ssObj!=null){
|
|
|
+ record.setSceneName(ssObj.getString("title"));
|
|
|
+ record.setThumb(ssObj.getString("thumb"));
|
|
|
+ record.setWebSite(ssObj.getString("webSite"));
|
|
|
+ record.setIsObj(ssObj.getInteger("buildObjStatus"));
|
|
|
+ record.setViewCount(ssObj.getInteger("viewCount"));
|
|
|
+ record.setStatus(toFdStatus(ssObj.getInteger("status")));
|
|
|
+ }else{
|
|
|
+ record.setStatus(-1);
|
|
|
+ record.setWebSite(null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
record.setStatusString(SceneStatusUtil.getStatusString(record));
|
|
|
if(userMap != null){
|
|
|
User user = userMap.get(record.getUserId());
|
|
@@ -286,12 +315,34 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
}
|
|
|
//{"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){
|
|
|
+ MqSendLog mqSendLog = mqSendLogMap.get(record.getNum());
|
|
|
+ if(mqSendLog != null){
|
|
|
+ record.setStatusString("排队中");
|
|
|
+ record.setStatus(-4);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
return PageInfo.PageInfo(page);
|
|
|
}
|
|
|
|
|
|
+ private Integer toFdStatus(Integer status) {
|
|
|
+ //深时状态,-1:场景被删 0:计算中 1计算失败 2计算成功 3封存 4生成OBJ中
|
|
|
+ switch (status) {
|
|
|
+ case 0:
|
|
|
+ case 4:
|
|
|
+ return 0;
|
|
|
+ case 2:
|
|
|
+ return -2;
|
|
|
+ case 3:
|
|
|
+ return -3;
|
|
|
+ default:
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
@Override
|
|
|
- public synchronized void move(SceneParam param) {
|
|
|
+ public synchronized Integer move(SceneParam param) {
|
|
|
Camera camera = cameraService.getBySnCode(param.getSnCode());
|
|
|
if(camera == null){
|
|
|
throw new BusinessException(ResultCode.CAMERA_SN_NOT_EXIST);
|
|
@@ -300,13 +351,30 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
if(cameraDetail == null){
|
|
|
throw new BusinessException(ResultCode.CAMERA_SN_NOT_EXIST);
|
|
|
}
|
|
|
- ScenePro scenePro = this.getByNum(param.getNum());
|
|
|
- ScenePlus scenePlus = scenePlusService.getByNum(param.getNum());
|
|
|
+ if(StringUtils.isNotBlank(param.getNum())){
|
|
|
+ moveScene(param.getNum(),camera,cameraDetail);
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ Integer successNum = param.getNumList().size();
|
|
|
+ for (String num : param.getNumList()) {
|
|
|
+ try {
|
|
|
+ moveScene(num,camera,cameraDetail);
|
|
|
+ }catch (Exception e){
|
|
|
+ successNum --;
|
|
|
+ log.info("move-scene-error:num:{},errorNum:{},error:{}",num,successNum,e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return successNum;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void moveScene(String num,Camera camera,CameraDetail cameraDetail){
|
|
|
+ ScenePro scenePro = this.getByNum(num);
|
|
|
+ ScenePlus scenePlus = scenePlusService.getByNum(num);
|
|
|
if((scenePro == null || scenePro.getCameraId() == null ) && (scenePlus== null || scenePlus.getCameraId() == null)){
|
|
|
throw new BusinessException(SceneConstant.FAILURE_CODE_5005, SceneConstant.FAILURE_MSG_5005);
|
|
|
}
|
|
|
Integer status = scenePro == null ? scenePlus.getSceneStatus() : scenePro.getStatus();
|
|
|
- if(status == 0){
|
|
|
+ if(status != -2){
|
|
|
throw new BusinessException(SceneConstant.FAILURE_CODE_5037, SceneConstant.FAILURE_MSG_5037);
|
|
|
}
|
|
|
|
|
@@ -340,15 +408,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
if(!oldCameraDetail.getType().equals(cameraDetail.getType())){
|
|
|
throw new BusinessException(ResultCode.CAMERA_TYPE_NOT_ERROR);
|
|
|
}
|
|
|
-// String home = dataSource.replace("/mnt/data", "home")+"/data.fdage";
|
|
|
-// if(!fYunFileServiceInterface.fileExist(home)){
|
|
|
-// throw new BusinessException(ResultCode.MOVE_ERROR);
|
|
|
-// }
|
|
|
-
|
|
|
-// HashMap<String, SceneCopyLog> byNewNumList = copyLogService.getByNewNumList(Arrays.asList(param.getNum()));
|
|
|
-// if(byNewNumList.size() >0){
|
|
|
-// throw new BusinessException(ResultCode.MOVE_ERROR_COPY);
|
|
|
-// }
|
|
|
|
|
|
Long oldUseSpace = oldCameraDetail.getUsedSpace() - space < 0 ? 0 : oldCameraDetail.getUsedSpace() - space;
|
|
|
if("GB".equals(oldCameraDetail.getUnit())){
|
|
@@ -361,8 +420,8 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
wrapper.eq(ScenePro::getId,scenePro.getId());
|
|
|
wrapper.set(ScenePro::getCameraId,camera.getId());
|
|
|
wrapper.set(ScenePro::getUserId,cameraDetail.getUserId());
|
|
|
- // wrapper.set(ScenePro::getStatus,0);
|
|
|
- // this.updateOssStatus(String.format(OssPath.v3_statusPath,scenePro.getNum()),0,"status");
|
|
|
+ // wrapper.set(ScenePro::getStatus,0);
|
|
|
+ // this.updateOssStatus(String.format(OssPath.v3_statusPath,scenePro.getNum()),0,"status");
|
|
|
this.update(wrapper);
|
|
|
//场景迁移到另外的相机清除本身在的文件夹
|
|
|
folderSceneService.delBySceneId(scenePro.getId());
|
|
@@ -378,14 +437,14 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
folderSceneService.delBySceneId(scenePlus.getId());
|
|
|
}
|
|
|
//协作相机
|
|
|
- sceneResourceCameraService.setCooperationUser(cameraDetail,param.getNum());
|
|
|
+ sceneResourceCameraService.setCooperationUser(cameraDetail,num);
|
|
|
|
|
|
//String newDataSource = updateFdageNewDataSource(scenePro, scenePlus, oldCamera.getSnCode(), param.getSnCode(), dataSource);
|
|
|
|
|
|
if(cameraDetail.getType() == 10 || cameraDetail.getType() == 11){ //深时场景
|
|
|
//迁移深时 dataSource
|
|
|
//FileUtil.move(new File(dataSource +"_laserData"),new File(newDataSource+"_laserData"),true);
|
|
|
- laserService.move(param.getNum(),oldCamera.getSnCode(),camera.getSnCode(),cameraDetail.getUserId(),dataSource);
|
|
|
+ laserService.move(num,oldCamera.getSnCode(),camera.getSnCode(),cameraDetail.getUserId(),dataSource);
|
|
|
}
|
|
|
cameraDetailService.initSpace(oldCameraDetail);
|
|
|
cameraDetailService.initSpace(cameraDetail);
|
|
@@ -404,8 +463,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
this.lockOrUnLockBySpace(cameraDetail.getCameraId());
|
|
|
}
|
|
|
sceneMoveLogService.saveLog(scenePro,scenePlus,camera.getSnCode(),oldCamera.getSnCode(),dataSource,dataSource, null);
|
|
|
- laserService.moveWenBao(param.getNum(),oldCamera.getSnCode(),camera.getSnCode(),cameraDetail.getUserId(),dataSource);
|
|
|
-
|
|
|
+ laserService.moveWenBao(num,oldCamera.getSnCode(),camera.getSnCode(),cameraDetail.getUserId(),dataSource);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -557,19 +615,45 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
Integer sceneSource = null;
|
|
|
Long cameraId = null;
|
|
|
ScenePro scenePro = this.getByNum(num);
|
|
|
+ Scene scene = sceneService.getByNum(num);
|
|
|
+ ScenePlus scenePlus = scenePlusService.getByNum(num);
|
|
|
+ Integer status = null;
|
|
|
+
|
|
|
if(scenePro!=null){
|
|
|
cameraId = scenePro.getCameraId();
|
|
|
sceneSource = scenePro.getSceneSource();
|
|
|
- this.removeById(scenePro.getId());
|
|
|
+ status = scenePro.getStatus();
|
|
|
}
|
|
|
- Scene scene = sceneService.getByNum(num);
|
|
|
if(scene!=null){
|
|
|
- sceneService.removeById(scene.getId());
|
|
|
+ cameraId = scene.getCameraId();
|
|
|
+ status = scene.getStatus();
|
|
|
}
|
|
|
- ScenePlus scenePlus = scenePlusService.getByNum(num);
|
|
|
if(scenePlus!=null){
|
|
|
cameraId = scenePlus.getCameraId();
|
|
|
sceneSource = scenePlus.getSceneSource();
|
|
|
+ status = scenePlus.getSceneStatus();
|
|
|
+ }
|
|
|
+ HashMap<String, MqSendLog> mqSendLogHashMap = mqSendLogService.getByNumList(Arrays.asList(num));
|
|
|
+ String redisKey = "mq-wait:queue:num:"+num;
|
|
|
+ if(!mqSendLogHashMap.isEmpty()){
|
|
|
+ for (String key : mqSendLogHashMap.keySet()) {
|
|
|
+ if(!redisUtil.hasKey(redisKey)){
|
|
|
+ mqSendLogService.removeById(mqSendLogHashMap.get(key).getId());
|
|
|
+ status = -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(status != null && status == 0){
|
|
|
+ throw new BusinessException(ResultCode.CAN_NOT_DEL_MODELING_SCENE);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(scenePro!=null){
|
|
|
+ this.removeById(scenePro.getId());
|
|
|
+ }
|
|
|
+ if(scene!=null){
|
|
|
+ sceneService.removeById(scene.getId());
|
|
|
+ }
|
|
|
+ if(scenePlus!=null){
|
|
|
ScenePlusExt plusExt = scenePlusExtService.getByPlusId(scenePlus.getId());
|
|
|
if(plusExt != null){
|
|
|
scenePlusExtService.delByPlus(scenePlus.getId());
|
|
@@ -579,6 +663,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
if(sceneSource != null && (sceneSource == 4 || sceneSource == 5)){
|
|
|
laserService.delete(num);
|
|
|
}
|
|
|
+ overallService.delete(num);
|
|
|
if(cameraId != null){
|
|
|
cameraDetailService.initSpace(cameraId);
|
|
|
this.lockOrUnLockBySpace(cameraId);
|
|
@@ -738,6 +823,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
}
|
|
|
HashMap<String,Object> paramMap = new HashMap<>();
|
|
|
paramMap.put("num",num);
|
|
|
+ paramMap.put("from","manage");
|
|
|
try {
|
|
|
JSONObject jsonObject = fdKKClient.rebuildScene(paramMap);
|
|
|
Integer code = jsonObject.getInteger("code");
|