package com.fdkankan.fusion.service.impl; 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.Model; import com.fdkankan.fusion.entity.TmCamera; 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.IModelService; import com.fdkankan.fusion.service.ISceneService; import com.fdkankan.fusion.service.ITmCameraService; import com.fdkankan.fusion.service.ITmDepartmentService; 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.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; 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; @Override public List getSceneListAndModel(ScenePram param) { PageInfo pageInfo = this.pageList(param, null); List listAll = (List) pageInfo.getList(); if(listAll.size() >0){ List numList = listAll.parallelStream().map(SceneVo::getNum).collect(Collectors.toList()); //设置模型 HashMap 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, String token) { if(param.getType() == null){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } List tmCameraList = tmCameraService.getByDeptIds(); List snCodes = tmCameraList.stream().map(TmCamera::getCameraSn).collect(Collectors.toList()); if(CollectionUtil.isEmpty(snCodes)){ snCodes = Arrays.asList("no_snCode"); } param.setSnCodes(snCodes); List sceneVoList = new ArrayList<>(); long total = 0; if(param.getType() == 0 || param.getType() == 1 || param.getType() == 4){ //看看,看见 ,深时obj //获取四维(看看,看见)场景数据 FdkkResponse fdkkResponse = null; // if(param.getNumList() == null || param.getNumList().size()<=0){ // param.setStatus(2); // fdkkResponse = fdKKClient.sceneList(param,fdService.getFdToken(token)); // }else { // fdkkResponse = fdKKClient.sceneList(param); // } 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){ //深时 //获取激光(深时)场景数据 LaserSceneParam laserSceneParam = new LaserSceneParam(); laserSceneParam.setPageNum(param.getPageNum()); laserSceneParam.setPageSize(param.getPageSize()); laserSceneParam.setStatus(param.getStatus()); laserSceneParam.setSnCodes(snCodes); if(StringUtils.isNotBlank(param.getSceneName())){ laserSceneParam.setTitle(param.getSceneName()); } if(param.getNumList() != null && param.getNumList().size() >0){ laserSceneParam.setSceneCodes(param.getNumList()); } FdkkResponse fdkkResponse = null; // if(param.getNumList() == null || param.getNumList().size()<=0){ // fdkkResponse = laserClient.sceneList(laserSceneParam, fdService.getFdToken(token)); // }else { // fdkkResponse = laserClient.sceneList(laserSceneParam); // } 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 = null; // if(param.getNumList() == null || param.getNumList().size()<=0){ // list = jsonObject.getJSONObject("pageInfo").getJSONArray("list"); // total = jsonObject.getJSONObject("pageInfo").getLong("total"); // }else { // list = jsonObject.getJSONArray("list"); // total =jsonObject.getLong("total"); // } 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(2); sceneVoList.add(vo); } } Page voPage = new Page<>(param.getPageNum(),param.getPageSize()); voPage.setRecords(sceneVoList); voPage.setTotal(total); return PageInfo.PageInfo(voPage); } /** * 四维看看返回数据格式转换 */ private List overSceneVo(JSONArray list,Integer type) { List 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 overSceneVo(JSONArray list) { List 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(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); } }