| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279 |
- 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.*;
- 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.LaserService;
- 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 {
- @Autowired
- IModelService modelService;
- @Autowired
- FdService fdService;
- @Autowired
- ITmDepartmentService tmDepartmentService;
- @Autowired
- ITmCameraService tmCameraService;
- @Autowired
- ICaseService caseService;
- @Autowired
- ITmProjectService tmProjectService;
- @Autowired
- ICaseNumService caseNumService;
- @Autowired
- IMqSendLogService mqSendLogService;
- @Autowired
- ISceneDeptShareService sceneDeptShareService;
- @Autowired
- IScenePlusService scenePlusService;
- @Autowired
- ICameraService cameraService;
- @Autowired
- ITmRoleService tmRoleService;
- @Autowired
- LaserService laserService;
- @Override
- public PageInfo pageList(ScenePram param) {
- String deptId = tmDepartmentService.getDeptId();
- HashMap<String,SceneDeptShare> shareHashMap = new HashMap<>();
- List<String> deptIds = new ArrayList<>();
- if(param.getSearchType() == 0){ //当前组织下场景
- deptIds.add(deptId);
- }
- if(param.getSearchType() == 1){ //下级共享给上级场景
- List<SceneDeptShare> numList = sceneDeptShareService.getNumListByDeptId(deptId,param.getIsObj());
- if(numList == null || numList.isEmpty()){
- return PageInfo.PageInfoEmpty();
- }
- numList.forEach(e -> shareHashMap.put(e.getNum()+e.getIsObj(),e));
- param.setNumList(numList.stream().map(SceneDeptShare::getNum).collect(Collectors.toList()));
- List<TmDepartment> sonByDeptId = tmDepartmentService.getSonByDeptId(deptId);
- deptIds = sonByDeptId.stream().map(TmDepartment::getId).collect(Collectors.toList());
- if(deptIds.isEmpty()){
- return PageInfo.PageInfoEmpty();
- }
- }
- if(param.getSearchType() == 2){ //当前组织及下级组织的数据
- List<TmDepartment> sonByDeptId = tmDepartmentService.getSonByDeptId(deptId);
- deptIds.add(deptId);
- deptIds.addAll(sonByDeptId.stream().map(TmDepartment::getId).collect(Collectors.toList()));
- }
- if(StringUtils.isNotBlank(param.getDeptId())){
- if(!deptIds.contains(param.getDeptId())){
- return PageInfo.PageInfoEmpty();
- }else {
- deptIds = Arrays.asList(param.getDeptId());
- }
- }
- if(deptIds.isEmpty()){
- return PageInfo.PageInfoEmpty();
- }
- List<TmCamera> tmCameraList = tmCameraService.getByDeptIds(deptIds);
- List<String> collect = tmCameraList.stream().map(TmCamera::getCameraSn).collect(Collectors.toList());
- param.setSnCodes(collect);
- if(param.getSnCodes().isEmpty() ){
- return PageInfo.PageInfoEmpty();
- }
- Page<SceneVo> sceneVoPage = scenePlusService.sceneList(param);
- HashMap<String, JSONObject> laserMap = new HashMap<>();
- if(param.getIsObj() == 0){
- HashMap<Integer,List<String>> numMap = new HashMap<>();
- for (SceneVo record : sceneVoPage.getRecords()) {
- numMap.computeIfAbsent(record.getSceneSource(), k -> new ArrayList<>());
- numMap.get(record.getSceneSource()).add(record.getNum());
- }
- for (Integer sceneSource : numMap.keySet()) {
- HashMap<String, JSONObject> map = laserService.list(numMap.get(sceneSource),sceneSource);
- for (String key : map.keySet()) {
- laserMap.put(key,map.get(key));
- }
- }
- }
- List<SceneVo> sceneVoList = sceneVoPage.getRecords();
- Set<String> snCodes = sceneVoList.stream().map(SceneVo::getSnCode).collect(Collectors.toSet());
- List<SceneVo> modelingScene = sceneVoList.stream().filter(e -> e.getStatus() == 0).collect(Collectors.toList());
- List<String> numList = modelingScene.stream().map(SceneVo::getNum).collect(Collectors.toList());
- HashMap<String,Boolean> modelingMap = mqSendLogService.getMapByNumList(numList);
- HashMap<String, TmDepartment> map = tmCameraService.getMapBySnCodes(snCodes);
- for (SceneVo sceneVo : sceneVoList) {
- if(param.getIsObj() == 0){
- JSONObject ssObj = laserMap.get(sceneVo.getNum());
- if(ssObj!=null) {
- sceneVo.setSceneName(sceneVo.getLaserTitle());
- sceneVo.setThumb(ssObj.getString("thumb"));
- sceneVo.setWebSite(ssObj.getString("webSite"));
- sceneVo.setViewCount(ssObj.getInteger("viewCount"));
- sceneVo.setStatus(ssObj.getInteger("status"));
- sceneVo.setName(sceneVo.getSceneName());
- sceneVo.setTitle(sceneVo.getSceneName());
- sceneVo.setId(ssObj.getLong("id"));
- }else if(sceneVo.getStatus() != 0){
- sceneVo.setStatus(-1);
- sceneVo.setWebSite(null);
- }
- }else {
- sceneVo.setStatus(setLaserStatus(sceneVo.getStatus(),sceneVo.getPayStatus()));
- }
- sceneVo.setIsObj(param.getIsObj());
- TmDepartment tmDepartment = map.get(sceneVo.getSnCode().toUpperCase());
- if(tmDepartment != null){
- sceneVo.setDeptId(tmDepartment.getId());
- sceneVo.setDeptName(tmDepartment.getName());
- }
- sceneVo.setType(CameraUtil.getTypeByCameraType(sceneVo.getCameraType(),param.getIsObj()));
- if(sceneVo.getStatus() == 0 && modelingMap.get(sceneVo.getNum()) != null && !modelingMap.get(sceneVo.getNum())){
- sceneVo.setStatus(5);
- }
- if(param.getSearchType() == 1){
- SceneDeptShare sceneDeptShare = shareHashMap.get(sceneVo.getNum() + sceneVo.getIsObj());
- if(sceneDeptShare != null){
- sceneVo.setIsAuth(sceneDeptShare.getIsAuth());
- }
- }else {
- sceneVo.setIsAuth(2);
- }
- }
- return PageInfo.PageInfo(sceneVoPage);
- }
- private Integer setLaserStatus(Integer status,Integer payStatus){
- //深时状态,-1:场景被删 0:计算中 1计算失败 2计算成功 3封存 4生成OBJ中 ,5排队
- if(status == 0){
- return 0;
- }
- if(status == -1){
- return 1;
- }
- if(payStatus != 1){ //封存
- return 3;
- }
- if(status == -2){
- return 2;
- }
- return status;
- }
- @Override
- public Object getFdTokenByNum(String num,Integer isObj) {
- if(StringUtils.isBlank(num)){
- throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
- }
- sceneDeptShareService.checkNum(num,isObj);
- 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);
- for (CaseNumEntity caseNumEntity : caseNumEntities) {
- CaseEntity caseEntity = caseService.getById(caseNumEntity.getCaseId());
- if(caseEntity == null){
- continue;
- }
- if( caseEntity.getTmProjectId() != null){
- TmProject tmProject = tmProjectService.getById(caseEntity.getTmProjectId());
- if(tmProject!=null){
- throw new BusinessException(ResultCode.CASE_USE.code, String.format(ResultCode.CASE_USE.msg,tmProject.getProjectName()));
- }
- }else {
- throw new BusinessException(ResultCode.CASE_USE.code, String.format(ResultCode.CASE_USE.msg,caseEntity.getCaseTitle()));
- }
- }
- fdService.deleteNum(num);
- }
- @Override
- public void buildSceneObj(LaserSceneParam param) {
- // ScenePlus scenePlus = scenePlusService.getById(param.getId());
- // if(scenePlus == null){
- // throw new BusinessException(ResultCode.SCENE_NOT_EXIST);
- // }
- // if(scenePlus.getSceneStatus() !=-2){
- // throw new BusinessException(ResultCode.SCENE_BUILDING);
- // }
- // if(!NumTypeUtils.isLaserBySceneSource(scenePlus.getSceneSource())){
- // throw new BusinessException(ResultCode.SCENE_TYPE_ERROR);
- // }
- // JSONObject object = fdService.sceneInfo(scenePlus.getNum());
- // Integer id = object.getInteger("id");
- // param.setId(id);
- fdService.buildSceneObj(param);
- }
- @Override
- public Object sceneDetail(LaserSceneParam param) {
- // ScenePlus scenePlus = scenePlusService.getById(param.getId());
- // if(scenePlus == null){
- // throw new BusinessException(ResultCode.SCENE_NOT_EXIST);
- // }
- // if(scenePlus.getSceneStatus() !=-2){
- // throw new BusinessException(ResultCode.SCENE_BUILDING);
- // }
- // if(!NumTypeUtils.isLaserBySceneSource(scenePlus.getSceneSource())){
- // throw new BusinessException(ResultCode.SCENE_TYPE_ERROR);
- // }
- // JSONObject object = fdService.sceneInfo(scenePlus.getNum());
- // Integer id = object.getInteger("id");
- // param.setId(id);
- 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());
- }
- }
|