| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- 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.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;
- @Override
- public PageInfo pageList(ScenePram param) {
- String deptId = tmDepartmentService.getDeptId();
- if(param.getSearchType() == 0){ //当前组织下场景
- List<TmCamera> tmCameraList = tmCameraService.getByDeptIds(Arrays.asList(deptId));
- List<String> collect = tmCameraList.stream().map(TmCamera::getCameraSn).collect(Collectors.toList());
- param.setSnCodes(collect);
- }
- if(param.getSearchType() == 1){ //下级共享给上级场景
- List<String> numList = sceneDeptShareService.getNumListByDeptId(deptId,param.getIsObj());
- param.setNumList(numList);
- }
- if(param.getSearchType() == 2){ //当前组织及下级组织的数据
- List<TmDepartment> sonByDeptId = tmDepartmentService.getSonByDeptId(deptId);
- List<String> deptIds = new ArrayList<>();
- deptIds.add(deptId);
- deptIds.addAll(sonByDeptId.stream().map(TmDepartment::getId).collect(Collectors.toList()));
- List<TmCamera> tmCameraList = tmCameraService.getByDeptIds(deptIds);
- List<String> collect = tmCameraList.stream().map(TmCamera::getCameraSn).collect(Collectors.toList());
- param.setSnCodes(collect);
- }
- if(param.getSnCodes().isEmpty() && param.getNumList().isEmpty()){
- return PageInfo.PageInfoEmpty();
- }
- Page<SceneVo> sceneVoPage = scenePlusService.sceneList(param);
- 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) {
- sceneVo.setIsObj(param.getIsObj());
- TmDepartment tmDepartment = map.get(sceneVo.getSnCode().toUpperCase());
- if(tmDepartment != null){
- sceneVo.setDeptId(tmDepartment.getId());
- sceneVo.setDeptName(tmDepartment.getName());
- }
- sceneVo.setStatus(setLaserStatus(sceneVo.getStatus(),sceneVo.getPayStatus()));
- sceneVo.setType(CameraUtil.getTypeByCameraType(sceneVo.getCameraType(),param.getIsObj()));
- if(modelingMap.get(sceneVo.getNum()) != null && !modelingMap.get(sceneVo.getNum())){
- sceneVo.setStatus(5);
- }
- }
- 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(payStatus != 1){ //封存
- return 3;
- }
- if(status == -1){
- return 1;
- }
- 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);
- 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) {
- 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());
- }
- }
|