|
@@ -0,0 +1,231 @@
|
|
|
+package com.fdkankan.site.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.fdkankan.site.common.PageInfo;
|
|
|
+import com.fdkankan.site.common.ResultCode;
|
|
|
+import com.fdkankan.site.common.util.DateUtils;
|
|
|
+import com.fdkankan.site.exception.BusinessException;
|
|
|
+import com.fdkankan.site.httpClient.client.FdKKClient;
|
|
|
+import com.fdkankan.site.httpClient.client.LaserClient;
|
|
|
+import com.fdkankan.site.httpClient.request.LaserSceneParam;
|
|
|
+import com.fdkankan.site.httpClient.response.FdkkResponse;
|
|
|
+import com.fdkankan.site.request.SceneParam;
|
|
|
+import com.fdkankan.site.response.SceneProEntityVo;
|
|
|
+import com.fdkankan.site.response.SceneVo;
|
|
|
+import com.fdkankan.site.service.ISceneService;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class SceneServiceImpl implements ISceneService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ FdKKClient fdKKClient;
|
|
|
+ @Resource
|
|
|
+ LaserClient laserClient;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<SceneVo> getListByNumList(List<String> numList) {
|
|
|
+ SceneParam param = new SceneParam();
|
|
|
+ param.setNumList(numList);
|
|
|
+ param.setStatus(2);
|
|
|
+ param.setPageNum(1);
|
|
|
+ param.setType(0);
|
|
|
+ param.setPageSize(9999);
|
|
|
+ JSONArray list = fdkkList(param);
|
|
|
+ param.setType(1);
|
|
|
+ JSONArray list1 = fdkkList(param);
|
|
|
+ list.addAll(list1);
|
|
|
+ List<SceneVo> sceneVos = overSceneVo(list, 0);
|
|
|
+ JSONArray list2 = laserList(param);
|
|
|
+ sceneVos.addAll(overSceneVo(list2,2));
|
|
|
+ return sceneVos;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<SceneVo> getListByNumMap(HashMap<Integer, List<String>> typeMap) {
|
|
|
+ List<SceneVo> sceneVos = new ArrayList<>();
|
|
|
+ SceneParam param = new SceneParam();
|
|
|
+ param.setStatus(2);
|
|
|
+ param.setPageNum(1);
|
|
|
+ param.setPageSize(9999);
|
|
|
+ for (Integer type : typeMap.keySet()) {
|
|
|
+ param.setNumList(typeMap.get(type));
|
|
|
+ if(param.getNumList() == null || param.getNumList().size() <=0){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ switch (type){
|
|
|
+ case 0 : //看看
|
|
|
+ param.setType(0);
|
|
|
+ sceneVos.addAll(overSceneVo(fdkkList(param), type)) ;
|
|
|
+ break;
|
|
|
+ case 1 : //看见
|
|
|
+ param.setType(1);
|
|
|
+ sceneVos.addAll(overSceneVo(fdkkList(param), type)) ;
|
|
|
+ break;
|
|
|
+ case 2 : //深时
|
|
|
+ param.setType(2);
|
|
|
+ sceneVos.addAll(overSceneVo(laserList(param), type)) ;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return sceneVos;
|
|
|
+ }
|
|
|
+
|
|
|
+ private JSONArray fdkkList(SceneParam param ){
|
|
|
+ FdkkResponse fdkkResponse = fdKKClient.sceneList(param);
|
|
|
+ if (fdkkResponse.getCode() != 0) {
|
|
|
+ return new JSONArray();
|
|
|
+ }
|
|
|
+ PageInfo pageInfo = JSONObject.parseObject(JSONObject.toJSONString(fdkkResponse.getData()), PageInfo.class);
|
|
|
+ return JSONArray.parseArray(JSONObject.toJSONString(pageInfo.getList()));
|
|
|
+ }
|
|
|
+ private JSONArray laserList(SceneParam param ){
|
|
|
+ LaserSceneParam laserSceneParam = new LaserSceneParam();
|
|
|
+ laserSceneParam.setPageNum(param.getPageNum());
|
|
|
+ laserSceneParam.setPageSize(param.getPageSize());
|
|
|
+ laserSceneParam.setStatus(param.getStatus());
|
|
|
+ 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) {
|
|
|
+ return new JSONArray();
|
|
|
+ }
|
|
|
+ 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");
|
|
|
+ }else {
|
|
|
+ list = jsonObject.getJSONArray("list");
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PageInfo pageList(SceneParam param, String token) {
|
|
|
+ if (param.getType() == null) {
|
|
|
+ throw new BusinessException(ResultCode.PARAM_MISS);
|
|
|
+ }
|
|
|
+ List<SceneVo> sceneVoList = new ArrayList<>();
|
|
|
+ long total = 0;
|
|
|
+ if (param.getType() == 0 || param.getType() == 1) { //看看,看见
|
|
|
+ //获取四维(看看,看见)场景数据
|
|
|
+ FdkkResponse fdkkResponse = null;
|
|
|
+ if (param.getNumList() == null || param.getNumList().size() <= 0) {
|
|
|
+ fdkkResponse = fdKKClient.sceneList(param, token);
|
|
|
+ } else {
|
|
|
+ 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,0);
|
|
|
+ }
|
|
|
+ if(param.getType() == 2) { //深时
|
|
|
+ //获取激光(深时)场景数据
|
|
|
+ LaserSceneParam laserSceneParam = new LaserSceneParam();
|
|
|
+ laserSceneParam.setPageNum(param.getPageNum());
|
|
|
+ laserSceneParam.setPageSize(param.getPageSize());
|
|
|
+ laserSceneParam.setStatus(param.getStatus());
|
|
|
+ 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, token);
|
|
|
+ } else {
|
|
|
+ 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");
|
|
|
+ }
|
|
|
+ sceneVoList =overSceneVo(list,2);
|
|
|
+ }
|
|
|
+ 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<>();
|
|
|
+ if(type == 2){ //深时
|
|
|
+ for (Object o : list) {
|
|
|
+ String res = JSONObject.toJSONString(o);
|
|
|
+ SceneVo vo = JSONObject.parseObject(res,SceneVo.class);
|
|
|
+ if(vo.getStatus() == 4){ //4生成OBJ中 设置为计算中
|
|
|
+ vo.setStatus(0);
|
|
|
+ }
|
|
|
+ vo.setType(2);
|
|
|
+ sceneVoList.add(vo);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ 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(fdkkScenePlusVo.getSceneType());
|
|
|
+ if (fdkkScenePlusVo.getUserId() == null) {
|
|
|
+ sceneVo.setBind(false);
|
|
|
+ }
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+}
|