SceneService.java 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  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.client.FdKKClient;
  15. import com.fdkankan.fusion.httpClient.client.LaserClient;
  16. import com.fdkankan.fusion.httpClient.request.LaserSceneParam;
  17. import com.fdkankan.fusion.httpClient.response.FdkkResponse;
  18. import com.fdkankan.fusion.httpClient.response.FdkkScenePlusVo;
  19. import com.fdkankan.fusion.request.ScenePram;
  20. import com.fdkankan.fusion.response.SceneProEntityVo;
  21. import com.fdkankan.fusion.response.SceneVo;
  22. import com.fdkankan.fusion.service.*;
  23. import lombok.extern.slf4j.Slf4j;
  24. import org.apache.commons.lang3.StringUtils;
  25. import org.springframework.beans.BeanUtils;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.stereotype.Service;
  28. import org.springframework.web.multipart.MultipartFile;
  29. import javax.annotation.Resource;
  30. import java.io.File;
  31. import java.security.Security;
  32. import java.util.*;
  33. import java.util.stream.Collectors;
  34. @Service
  35. @Slf4j
  36. public class SceneService implements ISceneService {
  37. @Autowired
  38. IModelService modelService;
  39. @Autowired
  40. FdService fdService;
  41. @Autowired
  42. ITmDepartmentService tmDepartmentService;
  43. @Autowired
  44. ITmCameraService tmCameraService;
  45. @Autowired
  46. ICaseService caseService;
  47. @Autowired
  48. ITmProjectService tmProjectService;
  49. @Autowired
  50. ICaseNumService caseNumService;
  51. @Autowired
  52. IMqSendLogService mqSendLogService;
  53. @Autowired
  54. ISceneDeptShareService sceneDeptShareService;
  55. @Autowired
  56. IScenePlusService scenePlusService;
  57. @Autowired
  58. ICameraService cameraService;
  59. @Autowired
  60. ITmRoleService tmRoleService;
  61. @Override
  62. public PageInfo pageList(ScenePram param) {
  63. String deptId = tmDepartmentService.getDeptId();
  64. if(param.getSearchType() == 0){ //当前组织下场景
  65. List<TmCamera> tmCameraList = tmCameraService.getByDeptIds(Arrays.asList(deptId));
  66. List<String> collect = tmCameraList.stream().map(TmCamera::getCameraSn).collect(Collectors.toList());
  67. param.setSnCodes(collect);
  68. }
  69. if(param.getSearchType() == 1){ //下级共享给上级场景
  70. List<String> numList = sceneDeptShareService.getNumListByDeptId(deptId,param.getIsObj());
  71. param.setNumList(numList);
  72. }
  73. if(param.getSearchType() == 2){ //当前组织及下级组织的数据
  74. List<TmDepartment> sonByDeptId = tmDepartmentService.getSonByDeptId(deptId);
  75. List<String> deptIds = new ArrayList<>();
  76. deptIds.add(deptId);
  77. deptIds.addAll(sonByDeptId.stream().map(TmDepartment::getId).collect(Collectors.toList()));
  78. List<TmCamera> tmCameraList = tmCameraService.getByDeptIds(deptIds);
  79. List<String> collect = tmCameraList.stream().map(TmCamera::getCameraSn).collect(Collectors.toList());
  80. param.setSnCodes(collect);
  81. }
  82. if(param.getSnCodes().isEmpty() && param.getNumList().isEmpty()){
  83. return PageInfo.PageInfoEmpty();
  84. }
  85. Page<SceneVo> sceneVoPage = scenePlusService.sceneList(param);
  86. List<SceneVo> sceneVoList = sceneVoPage.getRecords();
  87. Set<String> snCodes = sceneVoList.stream().map(SceneVo::getSnCode).collect(Collectors.toSet());
  88. List<SceneVo> modelingScene = sceneVoList.stream().filter(e -> e.getStatus() == 0).collect(Collectors.toList());
  89. List<String> numList = modelingScene.stream().map(SceneVo::getNum).collect(Collectors.toList());
  90. HashMap<String,Boolean> modelingMap = mqSendLogService.getMapByNumList(numList);
  91. HashMap<String, TmDepartment> map = tmCameraService.getMapBySnCodes(snCodes);
  92. for (SceneVo sceneVo : sceneVoList) {
  93. sceneVo.setIsObj(param.getIsObj());
  94. TmDepartment tmDepartment = map.get(sceneVo.getSnCode().toUpperCase());
  95. if(tmDepartment != null){
  96. sceneVo.setDeptId(tmDepartment.getId());
  97. sceneVo.setDeptName(tmDepartment.getName());
  98. }
  99. sceneVo.setStatus(setLaserStatus(sceneVo.getStatus(),sceneVo.getPayStatus()));
  100. sceneVo.setType(CameraUtil.getTypeByCameraType(sceneVo.getCameraType(),param.getIsObj()));
  101. if(modelingMap.get(sceneVo.getNum()) != null && !modelingMap.get(sceneVo.getNum())){
  102. sceneVo.setStatus(5);
  103. }
  104. }
  105. return PageInfo.PageInfo(sceneVoPage);
  106. }
  107. private Integer setLaserStatus(Integer status,Integer payStatus){
  108. //深时状态,-1:场景被删 0:计算中 1计算失败 2计算成功 3封存 4生成OBJ中 ,5排队
  109. if(status == 0){
  110. return 0;
  111. }
  112. if(payStatus != 1){ //封存
  113. return 3;
  114. }
  115. if(status == -1){
  116. return 1;
  117. }
  118. if(status == -2){
  119. return 2;
  120. }
  121. return status;
  122. }
  123. @Override
  124. public Object getFdTokenByNum(String num,Integer isObj) {
  125. if(StringUtils.isBlank(num)){
  126. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  127. }
  128. sceneDeptShareService.checkNum(num,isObj);
  129. return fdService.getFdTokenByNum(num);
  130. }
  131. @Override
  132. public void deleteNum(String num) {
  133. if(StringUtils.isBlank(num)){
  134. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  135. }
  136. List<CaseNumEntity> caseNumEntities = caseNumService.getByNum(num);
  137. if(caseNumEntities.size() >0){
  138. CaseNumEntity caseNumEntity = caseNumEntities.get(0);
  139. CaseEntity caseEntity = caseService.getById(caseNumEntity.getCaseId());
  140. throw new BusinessException(ResultCode.CASE_USE.code, String.format(ResultCode.CASE_USE.msg,caseEntity.getCaseTitle()));
  141. }
  142. fdService.deleteNum(num);
  143. }
  144. @Override
  145. public void buildSceneObj(LaserSceneParam param) {
  146. fdService.buildSceneObj(param);
  147. }
  148. @Override
  149. public Object sceneDetail(LaserSceneParam param) {
  150. ScenePlus scenePlus = scenePlusService.getById(param.getId());
  151. if(scenePlus == null){
  152. throw new BusinessException(ResultCode.SCENE_NOT_EXIST);
  153. }
  154. if(scenePlus.getSceneStatus() !=-2){
  155. throw new BusinessException(ResultCode.SCENE_BUILDING);
  156. }
  157. if(!NumTypeUtils.isLaserBySceneSource(scenePlus.getSceneSource())){
  158. throw new BusinessException(ResultCode.SCENE_TYPE_ERROR);
  159. }
  160. JSONObject object = fdService.sceneInfo(scenePlus.getNum());
  161. Integer id = object.getInteger("id");
  162. param.setId(id);
  163. return fdService.sceneDetail(param);
  164. }
  165. @Override
  166. public void copyScene(ScenePram param) {
  167. if(StringUtils.isEmpty(param.getNum())){
  168. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  169. }
  170. fdService.copyScene(param.getNum());
  171. }
  172. }