123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306 |
- 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.ResultCode;
- 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 org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- import java.security.Security;
- import java.util.*;
- import java.util.stream.Collectors;
- @Service
- 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;
- @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;
- }
- @Override
- public PageInfo pageList(ScenePram param) {
- if(param.getType() == null){
- throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
- }
- List<TmCamera> tmCameraList = null;
- String tokenValue = StpUtil.getTokenValue();
- if(StringUtils.isNotBlank(tokenValue) && StringUtils.isBlank(param.getShare()) ){
- tmCameraList = tmCameraService.getByDeptIds();
- List<String> snCodes = tmCameraList.stream().map(TmCamera::getCameraSn).collect(Collectors.toList());
- if(CollectionUtil.isNotEmpty(snCodes)){
- param.setSnCodes(snCodes);
- }
- }
- if(StringUtils.isNotBlank(param.getDeptId())){
- List<String> deptIds = new ArrayList<>();
- if(param.getSearchType() == 0){
- List<TmDepartment> sonByDeptId = tmDepartmentService.getSonByDeptId(param.getDeptId());
- deptIds = sonByDeptId.stream().map(TmDepartment::getId).collect(Collectors.toList());
- }
- deptIds.add(param.getDeptId());
- List<TmCamera> tmCameras = tmCameraService.getByDeptIds(deptIds);
- Set<String> snCodeSet = tmCameras.parallelStream().map(TmCamera::getCameraSn).collect(Collectors.toSet());
- List<String> snCodes = param.getSnCodes();
- if(snCodes == null){
- snCodes = new ArrayList<>(snCodeSet);
- }else {
- snCodes = snCodes.stream().filter(snCodeSet::contains).collect(Collectors.toList());
- }
- param.setSnCodes(snCodes);
- }
- if(StringUtils.isNotBlank(param.getSnCode())){
- List<String> snCodes = param.getSnCodes();
- List<String> snCodes1 = new ArrayList<>();
- snCodes1.add(param.getSnCode());
- if(snCodes == null){
- snCodes = snCodes1;
- }else {
- snCodes = snCodes.stream().filter(snCodes1::contains).collect(Collectors.toList());
- }
- param.setSnCodes(snCodes);
- }
- if(param.getCaseId() !=null){
- String deptId = caseService.getDeptId(param.getCaseId());
- List<TmCamera> tmCameras = tmCameraService.getByDeptIds(Arrays.asList(deptId));
- List<String> snCodes = param.getSnCodes();
- List<String> snCodes1 = tmCameras.stream().map(TmCamera::getCameraSn).collect(Collectors.toList());
- snCodes1.add(param.getSnCode());
- if(snCodes == null){
- snCodes = snCodes1;
- }else {
- snCodes = snCodes.stream().filter(snCodes1::contains).collect(Collectors.toList());
- }
- param.setSnCodes(snCodes);
- }
- if(CollectionUtil.isEmpty(param.getSnCodes()) && CollectionUtil.isEmpty(param.getNumList())){
- return PageInfo.PageInfoEmpty();
- }
- List<SceneVo> sceneVoList = new ArrayList<>();
- long total = 0;
- if(param.getType() == 0 || param.getType() == 1 || param.getType() == 4 || param.getType() == 6){ //看看,看见 ,深时obj
- //获取四维(看看,看见)场景数据
- FdkkResponse fdkkResponse = fdKKClient.sceneList(param);
- if(fdkkResponse.getCode() !=0){
- throw new BusinessException(fdkkResponse.getCode(),fdkkResponse.getMsg());
- }
- PageInfo pageInfo = JSONObject.parseObject(JSONObject.toJSONString(fdkkResponse.getData()), PageInfo.class);
- total = pageInfo.getTotal();
- JSONArray list = JSONArray.parseArray(JSONObject.toJSONString( pageInfo.getList()));
- sceneVoList = overSceneVo(list,param.getType());
- }
- if(param.getType() == 2 || param.getType() == 5){ //深时
- //获取激光(深时)场景数据
- LaserSceneParam laserSceneParam = new LaserSceneParam();
- laserSceneParam.setPageNum(param.getPageNum());
- laserSceneParam.setPageSize(param.getPageSize());
- laserSceneParam.setStatus(param.getStatus());
- laserSceneParam.setSnCodes(param.getSnCodes());
- if(param.getType() == 5){
- laserSceneParam.setSceneSource(5);
- }
- if(StringUtils.isNotBlank(param.getSceneName())){
- laserSceneParam.setTitle(param.getSceneName());
- }
- if(param.getNumList() != null && param.getNumList().size() >0){
- laserSceneParam.setSceneCodes(param.getNumList());
- }
- FdkkResponse fdkkResponse = laserClient.sceneList(laserSceneParam);
- if(fdkkResponse.getCode() !=200){
- throw new BusinessException(fdkkResponse.getCode(),fdkkResponse.getMsg());
- }
- JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(fdkkResponse.getData()));
- JSONArray list = jsonObject.getJSONArray("list");
- total =jsonObject.getLong("total");
- for (Object o : list) {
- String res = JSONObject.toJSONString(o);
- SceneVo vo = JSONObject.parseObject(res,SceneVo.class);
- if( StringUtils.isEmpty(vo.getPhone())){
- vo.setBind(false);
- }
- if(vo.getStatus() == 4){ //4生成OBJ中设置为计算中
- vo.setStatus(0);
- }
- vo.setType(param.getType());
- sceneVoList.add(vo);
- }
- }
- Set<String> snCodes = sceneVoList.stream().map(SceneVo::getSnCode).collect(Collectors.toSet());
- HashMap<String, TmDepartment> map = tmCameraService.getMapBySnCodes(snCodes);
- for (SceneVo sceneVo : sceneVoList) {
- TmDepartment tmDepartment = map.get(sceneVo.getSnCode().toUpperCase());
- if(tmDepartment != null){
- sceneVo.setDeptId(tmDepartment.getId());
- sceneVo.setDeptName(tmDepartment.getName());
- }
- }
- Page<SceneVo> voPage = new Page<>(param.getPageNum(),param.getPageSize());
- voPage.setRecords(sceneVoList);
- voPage.setTotal(total);
- return PageInfo.PageInfo(voPage);
- }
- /**
- * 四维看看返回数据格式转换
- */
- 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);
- 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);
- }
- }
|