|
@@ -6,7 +6,10 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.fdkankan.common.constant.SceneConstant;
|
|
import com.fdkankan.common.constant.SceneConstant;
|
|
|
|
+import com.fdkankan.common.constant.SceneKind;
|
|
import com.fdkankan.common.exception.BusinessException;
|
|
import com.fdkankan.common.exception.BusinessException;
|
|
|
|
+import com.fdkankan.rabbitmq.bean.BuildSceneCallMessage;
|
|
|
|
+import com.fdkankan.rabbitmq.util.RabbitMqProducer;
|
|
import com.fdkankan.ucenter.common.PageInfo;
|
|
import com.fdkankan.ucenter.common.PageInfo;
|
|
import com.fdkankan.common.util.FileUtils;
|
|
import com.fdkankan.common.util.FileUtils;
|
|
import com.fdkankan.common.util.JwtUtil;
|
|
import com.fdkankan.common.util.JwtUtil;
|
|
@@ -20,30 +23,11 @@ import com.fdkankan.redis.util.RedisUtil;
|
|
import com.fdkankan.ucenter.common.RedisKeyUtil;
|
|
import com.fdkankan.ucenter.common.RedisKeyUtil;
|
|
import com.fdkankan.ucenter.constant.CameraConstant;
|
|
import com.fdkankan.ucenter.constant.CameraConstant;
|
|
import com.fdkankan.ucenter.constant.LoginConstant;
|
|
import com.fdkankan.ucenter.constant.LoginConstant;
|
|
-import com.fdkankan.ucenter.entity.CameraDetail;
|
|
|
|
-import com.fdkankan.ucenter.entity.Folder;
|
|
|
|
-import com.fdkankan.ucenter.entity.SceneEditInfo;
|
|
|
|
-import com.fdkankan.ucenter.entity.ScenePlus;
|
|
|
|
-import com.fdkankan.ucenter.entity.ScenePlusExt;
|
|
|
|
-import com.fdkankan.ucenter.entity.ScenePro;
|
|
|
|
-import com.fdkankan.ucenter.entity.SceneProEdit;
|
|
|
|
-import com.fdkankan.ucenter.entity.User;
|
|
|
|
|
|
+import com.fdkankan.ucenter.entity.*;
|
|
import com.fdkankan.ucenter.httpClient.service.LaserService;
|
|
import com.fdkankan.ucenter.httpClient.service.LaserService;
|
|
import com.fdkankan.ucenter.mapper.ISceneProMapper;
|
|
import com.fdkankan.ucenter.mapper.ISceneProMapper;
|
|
-import com.fdkankan.ucenter.service.ICameraDetailService;
|
|
|
|
-import com.fdkankan.ucenter.service.IFolderSceneService;
|
|
|
|
-import com.fdkankan.ucenter.service.IFolderService;
|
|
|
|
-import com.fdkankan.ucenter.service.IScene3dNumService;
|
|
|
|
-import com.fdkankan.ucenter.service.ISceneCooperationService;
|
|
|
|
-import com.fdkankan.ucenter.service.ISceneCopyLogService;
|
|
|
|
-import com.fdkankan.ucenter.service.ISceneEditInfoService;
|
|
|
|
-import com.fdkankan.ucenter.service.IScenePlusExtService;
|
|
|
|
-import com.fdkankan.ucenter.service.IScenePlusService;
|
|
|
|
-import com.fdkankan.ucenter.service.ISceneProEditService;
|
|
|
|
-import com.fdkankan.ucenter.service.ISceneProService;
|
|
|
|
-import com.fdkankan.ucenter.service.ISceneService;
|
|
|
|
-import com.fdkankan.ucenter.service.IUserIncrementService;
|
|
|
|
-import com.fdkankan.ucenter.service.IUserService;
|
|
|
|
|
|
+import com.fdkankan.ucenter.mapper.ISceneUpgradeMapper;
|
|
|
|
+import com.fdkankan.ucenter.service.*;
|
|
import com.fdkankan.ucenter.util.DateUserUtil;
|
|
import com.fdkankan.ucenter.util.DateUserUtil;
|
|
import com.fdkankan.ucenter.vo.request.SceneParam;
|
|
import com.fdkankan.ucenter.vo.request.SceneParam;
|
|
import com.fdkankan.ucenter.vo.response.GroupByCount;
|
|
import com.fdkankan.ucenter.vo.response.GroupByCount;
|
|
@@ -82,37 +66,43 @@ import org.springframework.util.ObjectUtils;
|
|
public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro> implements ISceneProService {
|
|
public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro> implements ISceneProService {
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
- IUserService userService;
|
|
|
|
|
|
+ private IUserService userService;
|
|
@Autowired
|
|
@Autowired
|
|
- ISceneCooperationService sceneCooperationService;
|
|
|
|
|
|
+ private ISceneCooperationService sceneCooperationService;
|
|
@Autowired
|
|
@Autowired
|
|
- IScenePlusService scenePlusService;
|
|
|
|
|
|
+ private IScenePlusService scenePlusService;
|
|
@Autowired
|
|
@Autowired
|
|
- ISceneService sceneService;
|
|
|
|
|
|
+ private ISceneService sceneService;
|
|
@Autowired
|
|
@Autowired
|
|
- LaserService fdkkLaserService;
|
|
|
|
|
|
+ private LaserService fdkkLaserService;
|
|
@Resource
|
|
@Resource
|
|
private FYunFileServiceInterface fYunFileService;
|
|
private FYunFileServiceInterface fYunFileService;
|
|
@Autowired
|
|
@Autowired
|
|
- IUserIncrementService userIncrementService;
|
|
|
|
|
|
+ private IUserIncrementService userIncrementService;
|
|
@Autowired
|
|
@Autowired
|
|
- IScenePlusExtService scenePlusExtService;
|
|
|
|
|
|
+ private IScenePlusExtService scenePlusExtService;
|
|
@Autowired
|
|
@Autowired
|
|
- ICameraDetailService cameraDetailService;
|
|
|
|
|
|
+ private ICameraDetailService cameraDetailService;
|
|
@Autowired
|
|
@Autowired
|
|
- IFolderService folderService;
|
|
|
|
|
|
+ private IFolderService folderService;
|
|
@Autowired
|
|
@Autowired
|
|
- IFolderSceneService folderSceneService;
|
|
|
|
|
|
+ private IFolderSceneService folderSceneService;
|
|
@Autowired
|
|
@Autowired
|
|
- ISceneCopyLogService sceneCopyLogService;
|
|
|
|
|
|
+ private ISceneCopyLogService sceneCopyLogService;
|
|
@Autowired
|
|
@Autowired
|
|
- IScene3dNumService scene3dNumService;
|
|
|
|
|
|
+ private IScene3dNumService scene3dNumService;
|
|
@Autowired
|
|
@Autowired
|
|
- ISceneProEditService sceneProEditService;
|
|
|
|
|
|
+ private ISceneProEditService sceneProEditService;
|
|
@Autowired
|
|
@Autowired
|
|
- ISceneEditInfoService sceneEditInfoService;
|
|
|
|
|
|
+ private ISceneEditInfoService sceneEditInfoService;
|
|
@Autowired
|
|
@Autowired
|
|
- RedisUtil redisUtil;
|
|
|
|
|
|
+ private RedisUtil redisUtil;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ISceneUpgradeMapper sceneUpgradeMapper;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ICameraService cameraService;
|
|
|
|
|
|
@Value("${main.url}")
|
|
@Value("${main.url}")
|
|
private String mainUrl;
|
|
private String mainUrl;
|
|
@@ -123,6 +113,12 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
@Value("${scene.pro.new.url}")
|
|
@Value("${scene.pro.new.url}")
|
|
private String sceneProNewUrl;
|
|
private String sceneProNewUrl;
|
|
|
|
|
|
|
|
+ @Value("${queue.modeling.obj.modeling-pre}")
|
|
|
|
+ private String queueObjModelingPre;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private RabbitMqProducer mqProducer;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public HashMap<String, SceneNumVo> findSceneNumber(String token) {
|
|
public HashMap<String, SceneNumVo> findSceneNumber(String token) {
|
|
User user = userService.getByUserName(JwtUtil.getUsername(token));
|
|
User user = userService.getByUserName(JwtUtil.getUsername(token));
|
|
@@ -783,4 +779,62 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
MatrixToImageWriterUtil.createQRCode(basePath + num + "&lang=en", ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+num+"_en.png", false,null);
|
|
MatrixToImageWriterUtil.createQRCode(basePath + num + "&lang=en", ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+num+"_en.png", false,null);
|
|
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void generateObjFile(String num) {
|
|
|
|
+ LambdaQueryWrapper<ScenePro> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ wrapper.eq(ScenePro::getNum,num).eq(ScenePro::getRecStatus,"A");
|
|
|
|
+ ScenePro sceneProEntity = this.getOne(wrapper);
|
|
|
|
+
|
|
|
|
+ if(ObjectUtils.isEmpty(sceneProEntity)){
|
|
|
|
+ throw new BusinessException(SceneConstant.FAILURE_CODE_5005, SceneConstant.FAILURE_MSG_5005);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(sceneProEntity.getSceneSource().intValue() != 4){
|
|
|
|
+ throw new BusinessException(LoginConstant.FAILURE_CODE_3003, "只能操作激光场景");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 拷贝文件
|
|
|
|
+ String path = sceneProEntity.getDataSource();
|
|
|
|
+ if (!new File(path + "/caches/reconstruction/final.bin").exists()
|
|
|
|
+ || !new File(path + "/caches/reconstruction/chunk.json").exists()
|
|
|
|
+ || !new File(path + "/caches/images").exists()
|
|
|
|
+ || !new File(path + "/caches/depthmap").exists()
|
|
|
|
+ || !new File(path + "/caches/depthmap_csc").exists()
|
|
|
|
+ || !new File(path + "/caches/panorama.json").exists()
|
|
|
|
+ || !new File(path + "/results/laserData/laser.ply").exists()) {
|
|
|
|
+ log.error("生成obj缺少必要文件,生成失败!");
|
|
|
|
+ throw new BusinessException(SceneConstant.FAILURE_CODE_5038, SceneConstant.FAILURE_MSG_5038);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 获取最新的场景名称
|
|
|
|
+ JSONObject sceneInfo = fdkkLaserService.getSceneByNum(sceneProEntity.getNum());
|
|
|
|
+ LambdaUpdateWrapper<ScenePro> updateWrapper = new LambdaUpdateWrapper<>();
|
|
|
|
+ updateWrapper
|
|
|
|
+ .set(ScenePro::getStatus, 0)
|
|
|
|
+ .set(ScenePro::getIsObj, 1)
|
|
|
|
+ .set(ScenePro::getSceneName, sceneInfo.getString("title"))
|
|
|
|
+ .eq(ScenePro::getNum, sceneProEntity.getNum());
|
|
|
|
+ this.update(updateWrapper);
|
|
|
|
+
|
|
|
|
+ //同步到scenePlus、scenePlus
|
|
|
|
+ sceneUpgradeMapper.deleteScenePlus(sceneProEntity.getId());
|
|
|
|
+ sceneUpgradeMapper.transferScenePlus(sceneProEntity.getId());
|
|
|
|
+ sceneUpgradeMapper.deleteScenePlusExt(sceneProEntity.getId());
|
|
|
|
+ String sceneKind = sceneProEntity.getSceneScheme() == 3 ? SceneKind.FACE.code(): SceneKind.TILES.code();
|
|
|
|
+ sceneUpgradeMapper.transferScenePlusExt(sceneProEntity.getId(), sceneKind);
|
|
|
|
+
|
|
|
|
+ log.info("开始发送激光场景生成obj mq消息");
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ Camera camera = cameraService.getById(sceneProEntity.getCameraId());
|
|
|
|
+ // 发送MQ
|
|
|
|
+ BuildSceneCallMessage mqMsg = new BuildSceneCallMessage();
|
|
|
|
+ mqMsg.setSceneNum(sceneProEntity.getNum());
|
|
|
|
+ mqMsg.setUserId(sceneProEntity.getUserId());
|
|
|
|
+ mqMsg.setAlgorithm(sceneProEntity.getAlgorithm());
|
|
|
|
+ mqMsg.setBuildType(sceneProEntity.getBuildType());
|
|
|
|
+ mqMsg.setDataSource(sceneProEntity.getDataSource());
|
|
|
|
+ mqProducer.sendByWorkQueue(queueObjModelingPre,mqMsg);
|
|
|
|
+ }
|
|
}
|
|
}
|