SceneService.java 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. package com.fdkankan.fusion.service.impl;
  2. import cn.dev33.satoken.stp.StpUtil;
  3. import cn.hutool.core.collection.CollectionUtil;
  4. import com.alibaba.fastjson.JSONArray;
  5. import com.alibaba.fastjson.JSONObject;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.fdkankan.fusion.common.FilePath;
  8. import com.fdkankan.fusion.common.ResultCode;
  9. import com.fdkankan.fusion.common.util.*;
  10. import com.fdkankan.fusion.entity.*;
  11. import com.fdkankan.fusion.exception.BusinessException;
  12. import com.fdkankan.fusion.common.PageInfo;
  13. import com.fdkankan.fusion.httpClient.FdService;
  14. import com.fdkankan.fusion.httpClient.LaserService;
  15. import com.fdkankan.fusion.httpClient.client.FdKKClient;
  16. import com.fdkankan.fusion.httpClient.client.LaserClient;
  17. import com.fdkankan.fusion.httpClient.request.LaserSceneParam;
  18. import com.fdkankan.fusion.httpClient.response.FdkkResponse;
  19. import com.fdkankan.fusion.httpClient.response.FdkkScenePlusVo;
  20. import com.fdkankan.fusion.request.ScenePram;
  21. import com.fdkankan.fusion.response.SceneProEntityVo;
  22. import com.fdkankan.fusion.response.SceneVo;
  23. import com.fdkankan.fusion.service.*;
  24. import lombok.extern.slf4j.Slf4j;
  25. import org.apache.commons.lang3.StringUtils;
  26. import org.springframework.beans.BeanUtils;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.stereotype.Service;
  29. import org.springframework.web.multipart.MultipartFile;
  30. import javax.annotation.Resource;
  31. import java.io.File;
  32. import java.security.Security;
  33. import java.util.*;
  34. import java.util.stream.Collectors;
  35. @Service
  36. @Slf4j
  37. public class SceneService implements ISceneService {
  38. @Autowired
  39. IModelService modelService;
  40. @Autowired
  41. FdService fdService;
  42. @Autowired
  43. ITmDepartmentService tmDepartmentService;
  44. @Autowired
  45. ITmCameraService tmCameraService;
  46. @Autowired
  47. ICaseService caseService;
  48. @Autowired
  49. ITmProjectService tmProjectService;
  50. @Autowired
  51. ICaseNumService caseNumService;
  52. @Autowired
  53. IMqSendLogService mqSendLogService;
  54. @Autowired
  55. ISceneDeptShareService sceneDeptShareService;
  56. @Autowired
  57. IScenePlusService scenePlusService;
  58. @Autowired
  59. ICameraService cameraService;
  60. @Autowired
  61. ITmRoleService tmRoleService;
  62. @Autowired
  63. LaserService laserService;
  64. @Override
  65. public PageInfo pageList(ScenePram param) {
  66. String deptId = tmDepartmentService.getDeptId();
  67. if(param.getSearchType() == 0){ //当前组织下场景
  68. List<TmCamera> tmCameraList = tmCameraService.getByDeptIds(Arrays.asList(deptId));
  69. List<String> collect = tmCameraList.stream().map(TmCamera::getCameraSn).collect(Collectors.toList());
  70. param.setSnCodes(collect);
  71. }
  72. if(param.getSearchType() == 1){ //下级共享给上级场景
  73. List<String> numList = sceneDeptShareService.getNumListByDeptId(deptId,param.getIsObj());
  74. param.setNumList(numList);
  75. }
  76. if(param.getSearchType() == 2){ //当前组织及下级组织的数据
  77. List<TmDepartment> sonByDeptId = tmDepartmentService.getSonByDeptId(deptId);
  78. List<String> deptIds = new ArrayList<>();
  79. deptIds.add(deptId);
  80. deptIds.addAll(sonByDeptId.stream().map(TmDepartment::getId).collect(Collectors.toList()));
  81. List<TmCamera> tmCameraList = tmCameraService.getByDeptIds(deptIds);
  82. List<String> collect = tmCameraList.stream().map(TmCamera::getCameraSn).collect(Collectors.toList());
  83. param.setSnCodes(collect);
  84. }
  85. if(param.getSnCodes().isEmpty() && param.getNumList().isEmpty()){
  86. return PageInfo.PageInfoEmpty();
  87. }
  88. Page<SceneVo> sceneVoPage = scenePlusService.sceneList(param);
  89. HashMap<String, JSONObject> laserMap = new HashMap<>();
  90. if(param.getIsObj() == 0){
  91. HashMap<Integer,List<String>> numMap = new HashMap<>();
  92. for (SceneVo record : sceneVoPage.getRecords()) {
  93. numMap.computeIfAbsent(record.getSceneSource(), k -> new ArrayList<>());
  94. numMap.get(record.getSceneSource()).add(record.getNum());
  95. }
  96. for (Integer sceneSource : numMap.keySet()) {
  97. HashMap<String, JSONObject> map = laserService.list(numMap.get(sceneSource),sceneSource);
  98. for (String key : map.keySet()) {
  99. laserMap.put(key,map.get(key));
  100. }
  101. }
  102. }
  103. List<SceneVo> sceneVoList = sceneVoPage.getRecords();
  104. Set<String> snCodes = sceneVoList.stream().map(SceneVo::getSnCode).collect(Collectors.toSet());
  105. List<SceneVo> modelingScene = sceneVoList.stream().filter(e -> e.getStatus() == 0).collect(Collectors.toList());
  106. List<String> numList = modelingScene.stream().map(SceneVo::getNum).collect(Collectors.toList());
  107. HashMap<String,Boolean> modelingMap = mqSendLogService.getMapByNumList(numList);
  108. HashMap<String, TmDepartment> map = tmCameraService.getMapBySnCodes(snCodes);
  109. for (SceneVo sceneVo : sceneVoList) {
  110. if(param.getIsObj() == 0){
  111. JSONObject ssObj = laserMap.get(sceneVo.getNum());
  112. if(ssObj!=null) {
  113. sceneVo.setSceneName(ssObj.getString("title"));
  114. sceneVo.setThumb(ssObj.getString("thumb"));
  115. sceneVo.setWebSite(ssObj.getString("webSite"));
  116. sceneVo.setViewCount(ssObj.getInteger("viewCount"));
  117. sceneVo.setStatus(ssObj.getInteger("status"));
  118. sceneVo.setName(sceneVo.getSceneName());
  119. sceneVo.setTitle(sceneVo.getSceneName());
  120. }
  121. }else {
  122. sceneVo.setStatus(setLaserStatus(sceneVo.getStatus(),sceneVo.getPayStatus()));
  123. }
  124. sceneVo.setIsObj(param.getIsObj());
  125. TmDepartment tmDepartment = map.get(sceneVo.getSnCode().toUpperCase());
  126. if(tmDepartment != null){
  127. sceneVo.setDeptId(tmDepartment.getId());
  128. sceneVo.setDeptName(tmDepartment.getName());
  129. }
  130. sceneVo.setType(CameraUtil.getTypeByCameraType(sceneVo.getCameraType(),param.getIsObj()));
  131. if(modelingMap.get(sceneVo.getNum()) != null && !modelingMap.get(sceneVo.getNum())){
  132. sceneVo.setStatus(5);
  133. }
  134. }
  135. return PageInfo.PageInfo(sceneVoPage);
  136. }
  137. private Integer setLaserStatus(Integer status,Integer payStatus){
  138. //深时状态,-1:场景被删 0:计算中 1计算失败 2计算成功 3封存 4生成OBJ中 ,5排队
  139. if(status == 0){
  140. return 0;
  141. }
  142. if(payStatus != 1){ //封存
  143. return 3;
  144. }
  145. if(status == -1){
  146. return 1;
  147. }
  148. if(status == -2){
  149. return 2;
  150. }
  151. return status;
  152. }
  153. @Override
  154. public Object getFdTokenByNum(String num,Integer isObj) {
  155. if(StringUtils.isBlank(num)){
  156. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  157. }
  158. sceneDeptShareService.checkNum(num,isObj);
  159. return fdService.getFdTokenByNum(num);
  160. }
  161. @Override
  162. public void deleteNum(String num) {
  163. if(StringUtils.isBlank(num)){
  164. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  165. }
  166. List<CaseNumEntity> caseNumEntities = caseNumService.getByNum(num);
  167. if(caseNumEntities.size() >0){
  168. CaseNumEntity caseNumEntity = caseNumEntities.get(0);
  169. CaseEntity caseEntity = caseService.getById(caseNumEntity.getCaseId());
  170. throw new BusinessException(ResultCode.CASE_USE.code, String.format(ResultCode.CASE_USE.msg,caseEntity.getCaseTitle()));
  171. }
  172. fdService.deleteNum(num);
  173. }
  174. @Override
  175. public void buildSceneObj(LaserSceneParam param) {
  176. ScenePlus scenePlus = scenePlusService.getById(param.getId());
  177. if(scenePlus == null){
  178. throw new BusinessException(ResultCode.SCENE_NOT_EXIST);
  179. }
  180. if(scenePlus.getSceneStatus() !=-2){
  181. throw new BusinessException(ResultCode.SCENE_BUILDING);
  182. }
  183. if(!NumTypeUtils.isLaserBySceneSource(scenePlus.getSceneSource())){
  184. throw new BusinessException(ResultCode.SCENE_TYPE_ERROR);
  185. }
  186. JSONObject object = fdService.sceneInfo(scenePlus.getNum());
  187. Integer id = object.getInteger("id");
  188. param.setId(id);
  189. fdService.buildSceneObj(param);
  190. }
  191. @Override
  192. public Object sceneDetail(LaserSceneParam param) {
  193. ScenePlus scenePlus = scenePlusService.getById(param.getId());
  194. if(scenePlus == null){
  195. throw new BusinessException(ResultCode.SCENE_NOT_EXIST);
  196. }
  197. if(scenePlus.getSceneStatus() !=-2){
  198. throw new BusinessException(ResultCode.SCENE_BUILDING);
  199. }
  200. if(!NumTypeUtils.isLaserBySceneSource(scenePlus.getSceneSource())){
  201. throw new BusinessException(ResultCode.SCENE_TYPE_ERROR);
  202. }
  203. JSONObject object = fdService.sceneInfo(scenePlus.getNum());
  204. Integer id = object.getInteger("id");
  205. param.setId(id);
  206. return fdService.sceneDetail(param);
  207. }
  208. @Override
  209. public void copyScene(ScenePram param) {
  210. if(StringUtils.isEmpty(param.getNum())){
  211. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  212. }
  213. fdService.copyScene(param.getNum());
  214. }
  215. }