CaseServiceImpl.java 9.0 KB

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