123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- package com.fdkankan.fusion.service.impl;
- import cn.dev33.satoken.stp.StpUtil;
- import cn.hutool.core.collection.CollectionUtil;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.fdkankan.fusion.common.FilePath;
- import com.fdkankan.fusion.common.ResultCode;
- import com.fdkankan.fusion.common.util.FileWriterUtil;
- import com.fdkankan.fusion.common.util.RedisKeyUtil;
- import com.fdkankan.fusion.common.util.ShellUtil;
- import com.fdkankan.fusion.entity.*;
- import com.fdkankan.fusion.exception.BusinessException;
- import com.fdkankan.fusion.common.PageInfo;
- import com.fdkankan.fusion.httpClient.FdService;
- import com.fdkankan.fusion.httpClient.client.FdKKClient;
- import com.fdkankan.fusion.httpClient.client.LaserClient;
- import com.fdkankan.fusion.httpClient.request.LaserSceneParam;
- import com.fdkankan.fusion.httpClient.response.FdkkResponse;
- import com.fdkankan.fusion.httpClient.response.FdkkScenePlusVo;
- import com.fdkankan.fusion.request.ScenePram;
- import com.fdkankan.fusion.response.SceneProEntityVo;
- import com.fdkankan.fusion.response.SceneVo;
- import com.fdkankan.fusion.service.*;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.web.multipart.MultipartFile;
- import javax.annotation.Resource;
- import java.io.File;
- import java.security.Security;
- import java.util.*;
- import java.util.stream.Collectors;
- @Service
- @Slf4j
- public class SceneService implements ISceneService {
- @Resource
- FdKKClient fdKKClient;
- @Resource
- LaserClient laserClient;
- @Autowired
- IModelService modelService;
- @Autowired
- FdService fdService;
- @Autowired
- ITmDepartmentService tmDepartmentService;
- @Autowired
- ITmCameraService tmCameraService;
- @Autowired
- ICaseService caseService;
- @Autowired
- ITmProjectService tmProjectService;
- @Autowired
- ICaseNumService caseNumService;
- @Autowired
- IMqSendLogService mqSendLogService;
- @Override
- public List<SceneVo> getSceneListAndModel(ScenePram param) {
- PageInfo pageInfo = this.pageList(param);
- List<SceneVo> listAll = (List<SceneVo>) pageInfo.getList();
- if(listAll.size() >0){
- List<String> numList = listAll.parallelStream().map(SceneVo::getNum).collect(Collectors.toList());
- //设置模型
- HashMap<String,Model> map = modelService.getMapByNum(numList);
- for (SceneVo sceneVo : listAll) {
- String createTime = sceneVo.getCreateTime();
- Model model = map.get(sceneVo.getNum() + sceneVo.getType());
- if(model == null){
- continue;
- }
- BeanUtils.copyProperties(model,sceneVo);
- sceneVo.setCreateTime(createTime);
- }
- }
- return listAll;
- }
- @Autowired
- IScenePlusService scenePlusService;
- @Override
- public PageInfo pageList(ScenePram param) {
- if(param.getIsObj() == null){
- throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
- }
- Page<SceneVo> page ;
- if(param.getIsObj() == 0){
- page = scenePlusService.selectLaser(new Page<>(param.getPageNum(),param.getPageSize()),param);
- }else {
- page = scenePlusService.selectMesh(new Page<>(param.getPageNum(),param.getPageSize()),param);
- }
- List<CaseNumEntity> list = caseNumService.list();
- List<String> collect = list.stream().map(CaseNumEntity::getNum).collect(Collectors.toList());
- for (SceneVo record : page.getRecords()) {
- if(record.getSceneType().equals("4dkankan")){
- record.setStatus(setLaserStatus(record.getStatus(),record.getPayStatus()));
- }
- Integer i = setSceneType(record.getSceneSource(), record.getSceneType());
- record.setType(toFusionType(i));
- if(collect.contains(record.getName())){
- record.setInFusion(true);
- }
- if(record.getSceneType().equals("laser")){
- record.setIsLaser(true);
- }else {
- record.setIsLaser(false);
- }
- }
- return PageInfo.PageInfo(page);
- }
- private Integer setSceneType(Integer sceneSource,String sceneType) {
- if(sceneSource == 3 ){
- return 1;
- }
- if(sceneSource == 4 && sceneType.equals("laser")){
- return 2;
- }
- if(sceneSource == 4 && sceneType.equals("4dkankan")){
- return 5;
- }
- if(sceneSource == 5 && sceneType.equals("laser")){
- return 6;
- }
- if(sceneSource == 5 && sceneType.equals("4dkankan")){
- return 7;
- }
- if(sceneSource == 57 && sceneType.equals("laser")){
- return 2;
- }
- if(sceneSource == 57 && sceneType.equals("4dkankan")){
- return 5;
- }
- return 0;
- }
- private Integer toFusionType(Integer type) {
- switch (type){
- case 5 :return 4;
- case 6 :return 5;
- case 7 :return 6;
- case 8 :return 7;
- default: return type;
- }
- }
- /**
- * 四维看看返回数据格式转换
- */
- private List<SceneVo> overSceneVo(JSONArray list,Integer type) {
- List<SceneVo> sceneVoList = new ArrayList<>();
- for (Object obj : list) {
- String res = JSONObject.toJSONString(obj);
- SceneProEntityVo fdkkScenePlusVo = JSONObject.parseObject(res, SceneProEntityVo.class);
- SceneVo sceneVo = new SceneVo();
- sceneVo.setId(fdkkScenePlusVo.getId());
- sceneVo.setBuildObjStatus(0);
- sceneVo.setCreateTime(fdkkScenePlusVo.getCreateTime());
- sceneVo.setName(fdkkScenePlusVo.getSceneName());
- sceneVo.setNum(fdkkScenePlusVo.getNum());
- sceneVo.setPayStatus(1);
- sceneVo.setSceneName(fdkkScenePlusVo.getSceneName());
- sceneVo.setSnCode(fdkkScenePlusVo.getSnCode());
- sceneVo.setStatus(setLaserStatus(fdkkScenePlusVo.getStatus(),fdkkScenePlusVo.getPayStatus()));
- sceneVo.setThumb(fdkkScenePlusVo.getThumb());
- sceneVo.setTitle(fdkkScenePlusVo.getSceneName());
- sceneVo.setViewCount(fdkkScenePlusVo.getViewCount());
- sceneVo.setIsLaser(false);
- sceneVo.setType(type);
- sceneVo.setOrientation(fdkkScenePlusVo.getOrientation());
- sceneVo.setRtkLocation(fdkkScenePlusVo.getRtkLocation());
- if(fdkkScenePlusVo.getUserId()== null){
- sceneVo.setBind(false);
- }
- sceneVoList.add(sceneVo);
- }
- return sceneVoList;
- }
- /**
- * 四维看看返回数据格式转换
- private List<SceneVo> overSceneVo(JSONArray list) {
- List<SceneVo> sceneVoList = new ArrayList<>();
- for (Object obj : list) {
- String res = JSONObject.toJSONString(obj);
- FdkkScenePlusVo fdkkScenePlusVo = JSONObject.parseObject(res,FdkkScenePlusVo.class);
- SceneVo sceneVo = new SceneVo();
- sceneVo.setId(fdkkScenePlusVo.getId());
- sceneVo.setBuildObjStatus(0);
- sceneVo.setCreateTime(fdkkScenePlusVo.getCreateTime());
- sceneVo.setName(fdkkScenePlusVo.getTitle());
- sceneVo.setNum(fdkkScenePlusVo.getNum());
- sceneVo.setPayStatus(1);
- sceneVo.setSceneName(fdkkScenePlusVo.getTitle());
- sceneVo.setSnCode(fdkkScenePlusVo.getSnCode());
- sceneVo.setStatus(setLaserStatus(fdkkScenePlusVo.getSceneStatus(),fdkkScenePlusVo.getPayStatus()));
- sceneVo.setThumb(fdkkScenePlusVo.getPlusExt().getThumb());
- sceneVo.setTitle(fdkkScenePlusVo.getTitle());
- sceneVo.setViewCount(fdkkScenePlusVo.getPlusExt().getViewCount());
- sceneVo.setIsLaser(false);
- sceneVo.setType(fdkkScenePlusVo.getSceneType());
- sceneVoList.add(sceneVo);
- }
- return sceneVoList;
- }
- */
- private Integer setLaserStatus(Integer status,Integer payStatus){
- //深时状态,-1:场景被删 0:计算中 1计算失败 2计算成功 3封存 4生成OBJ中
- if(status == 0){
- return 0;
- }
- if(payStatus != 1){ //封存
- return 3;
- }
- if(status == -1){
- return 1;
- }
- if(status == -2){
- return 2;
- }
- return status;
- }
- @Override
- public Object getFdTokenByNum(String num) {
- if(StringUtils.isBlank(num)){
- throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
- }
- return fdService.getFdTokenByNum(num);
- }
- @Override
- public void deleteNum(String num) {
- if(StringUtils.isBlank(num)){
- throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
- }
- List<CaseNumEntity> caseNumEntities = caseNumService.getByNum(num);
- if(caseNumEntities.size() >0){
- CaseNumEntity caseNumEntity = caseNumEntities.get(0);
- CaseEntity caseEntity = caseService.getById(caseNumEntity.getCaseId());
- throw new BusinessException(ResultCode.CASE_USE.code, String.format(ResultCode.CASE_USE.msg,caseEntity.getCaseTitle()));
- }
- fdService.deleteNum(num);
- }
- @Override
- public void buildSceneObj(LaserSceneParam param) {
- fdService.buildSceneObj(param);
- }
- @Override
- public Object sceneDetail(LaserSceneParam param) {
- return fdService.sceneDetail(param);
- }
- @Override
- public void copyScene(ScenePram param) {
- if(StringUtils.isEmpty(param.getNum())){
- throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
- }
- fdService.copyScene(param.getNum());
- }
- }
|