CaseFusionServiceImpl.java 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. package com.fdkankan.fusion.service.impl;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.fdkankan.fusion.common.PageInfo;
  7. import com.fdkankan.fusion.common.enums.BuildType;
  8. import com.fdkankan.fusion.common.util.CameraUtil;
  9. import com.fdkankan.fusion.entity.*;
  10. import com.fdkankan.fusion.entity.jsonEntity.Transform;
  11. import com.fdkankan.fusion.httpClient.client.LaserClient;
  12. import com.fdkankan.fusion.mapper.ICaseFusionMapper;
  13. import com.fdkankan.fusion.request.CaseOverviewParam;
  14. import com.fdkankan.fusion.response.FusionNumVo;
  15. import com.fdkankan.fusion.response.SceneVo;
  16. import com.fdkankan.fusion.service.*;
  17. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  18. import org.apache.commons.lang3.StringUtils;
  19. import org.apache.poi.util.StringUtil;
  20. import org.springframework.beans.BeanUtils;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23. import java.util.ArrayList;
  24. import java.util.Date;
  25. import java.util.HashMap;
  26. import java.util.List;
  27. import java.util.stream.Collectors;
  28. /**
  29. * <p>
  30. * 服务实现类
  31. * </p>
  32. *
  33. * @author
  34. * @since 2022-08-04
  35. */
  36. @Service
  37. public class CaseFusionServiceImpl extends ServiceImpl<ICaseFusionMapper, CaseFusion> implements ICaseFusionService {
  38. @Autowired
  39. IFusionNumService fusionNumService;
  40. @Autowired
  41. IModelService modelService;
  42. @Autowired
  43. IScenePlusService scenePlusService;
  44. @Autowired
  45. IScenePlusExtService scenePlusExtService;
  46. @Autowired
  47. ISceneService sceneService;
  48. @Autowired
  49. LaserClient laserClient;
  50. @Autowired
  51. ISceneFileBuildService sceneFileBuildService;
  52. @Autowired
  53. ICaseSettingsService settingsService;
  54. @Override
  55. public List<CaseFusion> getListByCaseId(Integer caseId) {
  56. LambdaQueryWrapper<CaseFusion> wrapper = new LambdaQueryWrapper<>();
  57. wrapper.eq(CaseFusion::getCaseId,caseId);
  58. return this.list(wrapper);
  59. }
  60. @Override
  61. public PageInfo pageList(CaseOverviewParam param) {
  62. LambdaQueryWrapper<CaseFusion> wrapper = new LambdaQueryWrapper<>();
  63. if(StringUtils.isNotBlank(param.getFusionTitle())){
  64. wrapper.like(CaseFusion::getFusionTitle,param.getFusionTitle());
  65. }
  66. wrapper.orderByDesc(CaseFusion::getFusionId);
  67. Page<CaseFusion> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
  68. List<Integer> fusionIds = page.getRecords().stream().map(CaseFusion::getFusionId).collect(Collectors.toList());
  69. HashMap<Integer,CaseSettings> map = settingsService.getByFusionIds(fusionIds);
  70. for (CaseFusion record : page.getRecords()) {
  71. CaseSettings caseSettings = map.get(record.getFusionId());
  72. if(caseSettings !=null){
  73. record.setCover(caseSettings.getCover());
  74. }
  75. }
  76. return PageInfo.PageInfo(page);
  77. }
  78. @Override
  79. public List<FusionNumVo> getSceneListVo(Integer fusionId) {
  80. List<FusionNumVo> sceneVos = new ArrayList<>();
  81. List<FusionNum> fusionNumList = fusionNumService.getByFusionId(fusionId);
  82. List<Integer> modelIds = fusionNumList.stream().map(FusionNum::getModelId).collect(Collectors.toList());
  83. List<Model> listByModelIds = modelService.getListByModelIds(modelIds);
  84. HashMap<Integer,Model> modelMap = new HashMap<>();
  85. listByModelIds.stream().forEach(e -> modelMap.put(e.getModelId(),e));
  86. List<String> numList = listByModelIds.stream().filter(e -> e.getNum() != null).map(Model::getNum).collect(Collectors.toList());
  87. List<ScenePlus> scenePlusList = scenePlusService.getByNumList(numList);
  88. HashMap<String,ScenePlus> map = new HashMap<>();
  89. scenePlusList.stream().forEach(e -> map.put(e.getNum(),e));
  90. List<Long> plusIds = scenePlusList.stream().map(ScenePlus::getId).collect(Collectors.toList());
  91. List<ScenePlusExt> extList = scenePlusExtService.getByPlusIds(plusIds);
  92. HashMap<Long,ScenePlusExt> mapext = new HashMap<>();
  93. extList.stream().forEach(e -> mapext.put(e.getPlusId(),e));
  94. HashMap<String,String> mappingMap = sceneService.getMappingMap(numList);
  95. for (FusionNum fusionNum : fusionNumList) {
  96. Transform transform = JSONObject.parseObject(fusionNum.getTransform(),Transform.class);
  97. FusionNumVo vo = new FusionNumVo();
  98. vo.setTransform(transform);
  99. BeanUtils.copyProperties(fusionNum,vo);
  100. SceneVo sceneVo = new SceneVo();
  101. Model model = modelMap.get(fusionNum.getModelId());
  102. if(model != null){
  103. BeanUtils.copyProperties(model,sceneVo);
  104. if(model.getNum() != null ){
  105. ScenePlus scenePlus = map.get(model.getNum());
  106. if(scenePlus != null){
  107. BeanUtils.copyProperties(scenePlus,sceneVo);
  108. sceneVo.setStatus(scenePlus.getSceneStatus() == 1 ? 2:scenePlus.getSceneStatus());
  109. sceneVo.setName(scenePlus.getTitle());
  110. sceneVo.setSceneName(scenePlus.getTitle());
  111. sceneVo.setCreateTime(scenePlus.getCreateTime());
  112. ScenePlusExt scenePlusExt = mapext.get(scenePlus.getId());
  113. if(scenePlusExt != null){
  114. sceneVo.setRtkLocation(scenePlusExt.getRtkLocation());
  115. sceneVo.setOrientation(scenePlusExt.getOrientation());
  116. }
  117. sceneVo.setMapping( mappingMap.get(scenePlus.getNum()));
  118. sceneVo.setSourceName(CameraUtil.getSourceName(model.getType()));
  119. vo.setSceneData(sceneVo);
  120. sceneVos.add(vo);
  121. }
  122. }
  123. }
  124. }
  125. return sceneVos;
  126. }
  127. @Override
  128. public void updateOfflineStatus(Integer fusionId, Integer status, String zipPath) {
  129. LambdaUpdateWrapper<CaseFusion> wrapper = new LambdaUpdateWrapper<>();
  130. wrapper.eq(CaseFusion::getFusionId,fusionId);
  131. wrapper.set(CaseFusion::getOfflineStatus,status);
  132. wrapper.set(CaseFusion::getOfflinePath,zipPath);
  133. if (status == 2) {
  134. wrapper.set(CaseFusion::getOfflineEndTime,new Date());
  135. }
  136. if (status == 1) {
  137. wrapper.set(CaseFusion::getOfflineStartTime,new Date());
  138. }
  139. this.update(wrapper);
  140. if(status == 1){ //开始
  141. sceneFileBuildService.updateTimeAndStatus(fusionId.toString(),2, new Date(), null, BuildType.BUILD_FUSION_OFFLINE,zipPath);
  142. }
  143. if(status == 2){ //成功
  144. laserClient.addNotifications(2);
  145. sceneFileBuildService.updateTimeAndStatus(fusionId.toString(),4,null, new Date(), BuildType.BUILD_FUSION_OFFLINE,zipPath);
  146. }else if(status != 1){ //失败
  147. laserClient.addNotifications(3);
  148. }
  149. }
  150. }