CaseServiceImpl.java 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. package com.fdkankan.fusion.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.fdkankan.fusion.common.ResultCode;
  5. import com.fdkankan.fusion.entity.Model;
  6. import com.fdkankan.fusion.exception.BusinessException;
  7. import com.fdkankan.fusion.common.PageInfo;
  8. import com.fdkankan.fusion.common.util.JwtUtil;
  9. import com.fdkankan.fusion.entity.CaseEntity;
  10. import com.fdkankan.fusion.mapper.ICaseMapper;
  11. import com.fdkankan.fusion.request.CaseParam;
  12. import com.fdkankan.fusion.request.ScenePram;
  13. import com.fdkankan.fusion.response.HotVo;
  14. import com.fdkankan.fusion.response.SceneVo;
  15. import com.fdkankan.fusion.service.*;
  16. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  17. import org.apache.commons.lang3.StringUtils;
  18. import org.springframework.beans.BeanUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.stereotype.Service;
  21. import java.util.ArrayList;
  22. import java.util.HashMap;
  23. import java.util.List;
  24. import java.util.stream.Collectors;
  25. /**
  26. * <p>
  27. * 服务实现类
  28. * </p>
  29. *
  30. * @author
  31. * @since 2022-07-27
  32. */
  33. @Service
  34. public class CaseServiceImpl extends ServiceImpl<ICaseMapper, CaseEntity> implements ICaseService {
  35. @Autowired
  36. ISceneService sceneService;
  37. @Autowired
  38. ICaseNumService caseNumService;
  39. @Autowired
  40. IModelService modelService;
  41. @Autowired
  42. IFusionNumService fusionNumService;
  43. @Override
  44. public PageInfo pageList(CaseParam param,String token) {
  45. String userName = JwtUtil.getUsername(token);
  46. LambdaQueryWrapper<CaseEntity> wrapper = new LambdaQueryWrapper<>();
  47. if(StringUtils.isNotBlank(param.getCaseTitle())){
  48. wrapper.like(CaseEntity::getCaseTitle,param.getCaseTitle());
  49. }
  50. wrapper.eq(CaseEntity::getUserName,userName);
  51. wrapper.orderByDesc(CaseEntity::getCreateTime);
  52. Page<CaseEntity> page = this.page( new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
  53. return PageInfo.PageInfo(page);
  54. }
  55. @Override
  56. public List<SceneVo> sceneList(CaseParam param, String token) {
  57. if(param.getCaseId() == null){
  58. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  59. }
  60. if(param.getTypeMap() == null){
  61. HashMap<Integer, List<String>> typeMap = caseNumService.getTypeMap(param.getCaseId());
  62. param.setTypeMap(typeMap);
  63. }
  64. List<SceneVo> listAll = new ArrayList<>();
  65. for (Integer type : param.getTypeMap().keySet()) {
  66. List<String> numList = param.getTypeMap().get(type);
  67. if(numList ==null || numList.size() <=0 || type ==3){
  68. continue;
  69. }
  70. ScenePram scenePram = new ScenePram();
  71. scenePram.setType(type);
  72. scenePram.setPageNum(1);
  73. scenePram.setPageSize(99999);
  74. scenePram.setNumList(param.getTypeMap().get(type));
  75. PageInfo pageInfo = sceneService.pageList(scenePram,token);
  76. List<SceneVo> list1 = (List<SceneVo>) pageInfo.getList();
  77. listAll.addAll(list1);
  78. }
  79. if(listAll.size() >0){
  80. List<String> numList = listAll.parallelStream().map(SceneVo::getNum).collect(Collectors.toList());
  81. //设置模型
  82. HashMap<String,Model> map = modelService.getMapByNum(numList);
  83. for (SceneVo sceneVo : listAll) {
  84. String createTime = sceneVo.getCreateTime();
  85. Model model = map.get(sceneVo.getNum() + sceneVo.getType());
  86. if(model == null){
  87. continue;
  88. }
  89. BeanUtils.copyProperties(model,sceneVo);
  90. sceneVo.setCreateTime(createTime);
  91. }
  92. }
  93. //官网删除的场景,删除对应资源
  94. List<String> kkNumList = param.getTypeMap().get(0);
  95. List<String> ssNumList = param.getTypeMap().get(1);
  96. if(kkNumList == null){
  97. kkNumList = new ArrayList<>();
  98. }
  99. if(ssNumList != null && ssNumList.size() >0){
  100. kkNumList.addAll(ssNumList);
  101. }
  102. if(kkNumList.size() >0){
  103. List<String> numList = listAll.parallelStream().map(SceneVo::getNum).collect(Collectors.toList());
  104. List<String> delNumList = new ArrayList<>();
  105. for (String num : kkNumList) {
  106. if(!numList.contains(num)){
  107. delNumList.add(num);
  108. }
  109. }
  110. List<String> delNumList2 = new ArrayList<>();
  111. for (SceneVo sceneVo : listAll) {
  112. if(sceneVo.getStatus() !=2 && sceneVo.getStatus() !=3){
  113. delNumList2.add(sceneVo.getNum());
  114. }
  115. }
  116. caseNumService.deleteByNum(param.getCaseId(),delNumList);
  117. fusionNumService.deleteByNumList(param.getCaseId(),delNumList2,false);
  118. }
  119. //相机解绑,标注,测量隐藏,视图
  120. for (SceneVo sceneVo : listAll) {
  121. if(!sceneVo.getBind() || (sceneVo.getStatus()!=null && sceneVo.getStatus() == 3)){
  122. fusionNumService.hideOrShow(sceneVo.getModelId(),sceneVo.getNum(),1);
  123. }else {
  124. fusionNumService.hideOrShow(sceneVo.getModelId(),sceneVo.getNum(),0);
  125. }
  126. }
  127. listAll.removeIf(sceneVo -> !sceneVo.getBind());
  128. //关联的三维模型
  129. List<String> numList = param.getTypeMap().get(3);
  130. if(numList!=null && numList.size() >0){
  131. List<Model> models = modelService.getListByModelIdStrs(numList);
  132. for (Model model : models) {
  133. SceneVo sceneVo = new SceneVo();
  134. sceneVo.setStatus(2);
  135. BeanUtils.copyProperties(model,sceneVo);
  136. listAll.add(sceneVo);
  137. }
  138. }
  139. return listAll;
  140. }
  141. @Override
  142. public void addOrUpdate(CaseParam param, String token) {
  143. String userName = JwtUtil.getUsername(token);
  144. if(StringUtils.isEmpty(param.getCaseTitle())){
  145. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  146. }
  147. CaseEntity caseEntity ;
  148. if(param.getCaseId() == null){
  149. caseEntity = new CaseEntity();
  150. caseEntity.setUserName(userName);
  151. }else {
  152. caseEntity = this.getById(param.getCaseId());
  153. }
  154. caseEntity.setCaseTitle(param.getCaseTitle());
  155. caseEntity.setUpdateTime(null);
  156. this.saveOrUpdate(caseEntity);
  157. }
  158. @Override
  159. public void addScene(CaseParam param) {
  160. if(param.getCaseId() == null){
  161. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  162. }
  163. CaseEntity caseEntity = this.getById(param.getCaseId());
  164. if(caseEntity == null){
  165. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  166. }
  167. caseNumService.addBatch(param.getCaseId(),param.getSceneNumParam());
  168. }
  169. @Override
  170. public void delete(Integer caseId) {
  171. if(caseId == null){
  172. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  173. }
  174. //删除关联的场景
  175. caseNumService.deleteByCaseId(caseId);
  176. this.removeById(caseId);
  177. }
  178. @Override
  179. public List<CaseEntity> getByIds(List<Integer> caseIdIds) {
  180. LambdaQueryWrapper<CaseEntity> wrapper = new LambdaQueryWrapper<>();
  181. wrapper.in(CaseEntity::getCaseId,caseIdIds);
  182. return this.list(wrapper);
  183. }
  184. }