CaseFusionController.java 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. package com.fdkankan.fusion.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.fdkankan.fusion.common.ResultCode;
  4. import com.fdkankan.fusion.common.ResultData;
  5. import com.fdkankan.fusion.common.util.CameraUtil;
  6. import com.fdkankan.fusion.entity.*;
  7. import com.fdkankan.fusion.entity.jsonEntity.Transform;
  8. import com.fdkankan.fusion.exception.BusinessException;
  9. import com.fdkankan.fusion.request.CaseOverviewParam;
  10. import com.fdkankan.fusion.request.FusionParam;
  11. import com.fdkankan.fusion.response.FusionNumVo;
  12. import com.fdkankan.fusion.response.SceneVo;
  13. import com.fdkankan.fusion.service.*;
  14. import org.apache.commons.lang3.StringUtils;
  15. import org.springframework.beans.BeanUtils;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.web.bind.annotation.*;
  18. import java.util.ArrayList;
  19. import java.util.Arrays;
  20. import java.util.HashMap;
  21. import java.util.List;
  22. import java.util.stream.Collectors;
  23. /**
  24. * <p>
  25. * 前端控制器
  26. * </p>
  27. *
  28. * @author
  29. * @since 2022-08-04
  30. */
  31. @RestController
  32. @RequestMapping("/caseFusion")
  33. public class CaseFusionController extends BaseController{
  34. @Autowired
  35. ICaseFusionService caseFusionService;
  36. @Autowired
  37. IFusionNumService fusionNumService;
  38. @Autowired
  39. IFusionMeterService fusionMeterService;
  40. @Autowired
  41. ICaseTagPointService caseTagPointService;
  42. @Autowired
  43. IModelService modelService;
  44. @Autowired
  45. IScenePlusService scenePlusService;
  46. @Autowired
  47. IScenePlusExtService scenePlusExtService;
  48. @GetMapping("/list")
  49. public ResultData allList(@RequestParam(required = false) Integer fusionId){
  50. return ResultData.ok(getSceneListVo(fusionId));
  51. }
  52. @PostMapping("/pageList")
  53. public ResultData pageList(@RequestBody CaseOverviewParam param) {
  54. return ResultData.ok(caseFusionService.pageList(param));
  55. }
  56. @GetMapping("/info")
  57. public ResultData info(@RequestParam(required = false) Integer fusionId){
  58. CaseFusion caseFusion = caseFusionService.getById(fusionId);
  59. if(caseFusion == null){
  60. throw new BusinessException(ResultCode.RECORD_NOT_EXIST);
  61. }
  62. return ResultData.ok(caseFusion);
  63. }
  64. @PostMapping("/add")
  65. public ResultData add(@RequestBody FusionParam param){
  66. if( param.getFusionId() == null ){
  67. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  68. }
  69. if((param.getIsObj() == null || StringUtils.isBlank(param.getNum())) && param.getUploadId() == null){
  70. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  71. }
  72. ScenePlus scenePlus = scenePlusService.getByNum(param.getNum());
  73. ScenePlusExt scenePlusExt = scenePlusExtService.getByPlusId(scenePlus.getId());
  74. scenePlus.setScenePlusExt(scenePlusExt);
  75. return ResultData.ok(fusionNumService.add(param,scenePlus,param.getIsObj()));
  76. }
  77. @PostMapping("/updateInfo")
  78. public ResultData updateInfo(@RequestBody CaseFusion caseFusion){
  79. if(caseFusion.getFusionId() == null){
  80. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  81. }
  82. caseFusion.setUpdateTime(null);
  83. caseFusionService.updateById(caseFusion);
  84. return ResultData.ok();
  85. }
  86. @PostMapping("/delFusion")
  87. public ResultData delFusion(@RequestBody CaseFusion caseFusion){
  88. if(caseFusion.getFusionId() == null){
  89. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  90. }
  91. caseFusionService.removeById(caseFusion.getFusionId());
  92. return ResultData.ok();
  93. }
  94. /**
  95. * 修改模型相关信息
  96. */
  97. @PostMapping("/update")
  98. public ResultData update(@RequestBody FusionParam param){
  99. fusionNumService.updateModel(param);
  100. return ResultData.ok();
  101. }
  102. @PostMapping("/delete")
  103. public ResultData delete(@RequestBody FusionParam param){
  104. if(param.getFusionNumId() == null){
  105. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  106. }
  107. fusionNumService.deleteById(param.getFusionNumId());
  108. return ResultData.ok();
  109. }
  110. private List<FusionNumVo> getSceneListVo(Integer fusionId) {
  111. List<FusionNumVo> sceneVos = new ArrayList<>();
  112. List<FusionNum> fusionNumList = fusionNumService.getByFusionId(fusionId);
  113. List<Integer> modelIds = fusionNumList.stream().map(FusionNum::getModelId).collect(Collectors.toList());
  114. List<Model> listByModelIds = modelService.getListByModelIds(modelIds);
  115. HashMap<Integer,Model> modelMap = new HashMap<>();
  116. listByModelIds.stream().forEach(e -> modelMap.put(e.getModelId(),e));
  117. List<String> numList = listByModelIds.stream().filter(e -> e.getNum() != null).map(Model::getNum).collect(Collectors.toList());
  118. List<ScenePlus> scenePlusList = scenePlusService.getByNumList(numList);
  119. HashMap<String,ScenePlus> map = new HashMap<>();
  120. scenePlusList.stream().forEach(e -> map.put(e.getNum(),e));
  121. List<Long> plusIds = scenePlusList.stream().map(ScenePlus::getId).collect(Collectors.toList());
  122. List<ScenePlusExt> extList = scenePlusExtService.getByPlusIds(plusIds);
  123. HashMap<Long,ScenePlusExt> mapext = new HashMap<>();
  124. extList.stream().forEach(e -> mapext.put(e.getPlusId(),e));
  125. for (FusionNum fusionNum : fusionNumList) {
  126. Transform transform = JSONObject.parseObject(fusionNum.getTransform(),Transform.class);
  127. FusionNumVo vo = new FusionNumVo();
  128. vo.setTransform(transform);
  129. BeanUtils.copyProperties(fusionNum,vo);
  130. SceneVo sceneVo = new SceneVo();
  131. Model model = modelMap.get(fusionNum.getModelId());
  132. if(model != null){
  133. BeanUtils.copyProperties(model,sceneVo);
  134. if(model.getNum() != null ){
  135. ScenePlus scenePlus = map.get(model.getNum());
  136. if(scenePlus != null){
  137. BeanUtils.copyProperties(scenePlus,sceneVo);
  138. sceneVo.setStatus(scenePlus.getSceneStatus() == -2 ? 2:scenePlus.getSceneStatus());
  139. sceneVo.setName(scenePlus.getTitle());
  140. sceneVo.setSceneName(scenePlus.getTitle());
  141. sceneVo.setCreateTime(scenePlus.getCreateTime());
  142. ScenePlusExt scenePlusExt = mapext.get(scenePlus.getId());
  143. if(scenePlusExt != null){
  144. sceneVo.setRtkLocation(scenePlusExt.getRtkLocation());
  145. sceneVo.setOrientation(scenePlusExt.getOrientation());
  146. }
  147. }
  148. }else {
  149. sceneVo.setStatus(2);
  150. }
  151. sceneVo.setSourceName(CameraUtil.getSourceName(model.getType()));
  152. }
  153. vo.setSceneData(sceneVo);
  154. sceneVos.add(vo);
  155. }
  156. return sceneVos;
  157. }
  158. }