FolderSceneServiceImpl.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. package com.fdkankan.ucenter.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.fdkankan.ucenter.entity.Folder;
  4. import com.fdkankan.ucenter.entity.FolderScene;
  5. import com.fdkankan.ucenter.entity.ScenePlus;
  6. import com.fdkankan.ucenter.entity.ScenePro;
  7. import com.fdkankan.ucenter.mapper.IFolderSceneMapper;
  8. import com.fdkankan.ucenter.service.*;
  9. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  10. import com.fdkankan.ucenter.vo.response.GroupByCount;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import java.util.ArrayList;
  14. import java.util.HashMap;
  15. import java.util.List;
  16. import java.util.stream.Collectors;
  17. /**
  18. * <p>
  19. * 文件夹和场景关联表 服务实现类
  20. * </p>
  21. *
  22. * @author
  23. * @since 2022-07-08
  24. */
  25. @Service
  26. public class FolderSceneServiceImpl extends ServiceImpl<IFolderSceneMapper, FolderScene> implements IFolderSceneService {
  27. @Autowired
  28. private ISceneProService sceneProService;
  29. @Autowired
  30. private IScenePlusService scenePlusService;
  31. @Autowired
  32. private IFolderService folderService;
  33. @Override
  34. public void deleteByFolderIds(List<Long> delIds,Long userId) {
  35. LambdaQueryWrapper<FolderScene> wrapper = new LambdaQueryWrapper<>();
  36. wrapper.in(FolderScene::getFolderId,delIds);
  37. List<FolderScene> list = this.list(wrapper);
  38. List<Long> sceneIds = list.parallelStream().map(FolderScene::getSceneId).collect(Collectors.toList());
  39. if(sceneIds.size() >0){
  40. sceneProService.deleteByIds(sceneIds,userId);
  41. }
  42. List<Long> ids = list.parallelStream().map(FolderScene::getId).collect(Collectors.toList());
  43. this.removeByIds(ids);
  44. }
  45. @Override
  46. public FolderScene getByTypeNum(String num, Integer type) {
  47. return getBaseMapper().getByTypeNum(num,type);
  48. }
  49. @Override
  50. public FolderScene getByType(String sceneId, Integer type) {
  51. return getBaseMapper().getByType(sceneId,type);
  52. }
  53. @Override
  54. public HashMap<Long, Long> getGroupByFolderIds(List<Folder> folderIds) {
  55. List<Long> ids = folderIds.parallelStream().map(Folder::getId).collect(Collectors.toList());
  56. List<GroupByCount> list = getBaseMapper().getGroupByFolderIds(ids);
  57. HashMap<Long ,Folder> folderMap = new HashMap<>();
  58. for (Folder folder : folderIds) {
  59. folderMap.put(folder.getId(),folder);
  60. }
  61. HashMap<Long, Long> map = new HashMap<>();
  62. for (GroupByCount groupByCount : list) {
  63. Folder folder = this.getParentFolder(folderMap,groupByCount.getId());
  64. map.merge(folder.getId(), groupByCount.getCount(), Long::sum);
  65. }
  66. return map;
  67. }
  68. private Folder getParentFolder(HashMap<Long, Folder> folderMap, Long id) {
  69. Folder folder = folderMap.get(id);
  70. if(folder != null && folder.getParentId()!=null && folderMap.containsKey(folder.getParentId())){
  71. return getParentFolder(folderMap,folder.getParentId());
  72. }
  73. return folder;
  74. }
  75. @Override
  76. public Long getCountByFolderAndSon(Long folderId) {
  77. List <Long > folderIdList = new ArrayList<>();
  78. folderIdList.add(folderId);
  79. this.getFolderSon(folderId,folderIdList);
  80. if(folderIdList.size() >0){
  81. LambdaQueryWrapper<FolderScene> wrapper = new LambdaQueryWrapper<>();
  82. wrapper.in(FolderScene::getFolderId,folderIdList);
  83. return this.count(wrapper);
  84. }
  85. return 0L;
  86. }
  87. private void getFolderSon(Long folderId, List<Long> folderIdList) {
  88. LambdaQueryWrapper<Folder> wrapper = new LambdaQueryWrapper<>();
  89. wrapper.eq(Folder::getParentId,folderId);
  90. List<Folder> list = folderService.list(wrapper);
  91. if(list.size() <=0){
  92. return;
  93. }
  94. List<Long> collect = list.stream().map(Folder::getId).collect(Collectors.toList());
  95. folderIdList.addAll(collect);
  96. for (Long aLong : collect) {
  97. this.getFolderSon(aLong,folderIdList);
  98. }
  99. }
  100. @Override
  101. public void delBySceneId(List<Long> proIds) {
  102. if(proIds.size() >0){
  103. LambdaQueryWrapper<FolderScene> wrapper = new LambdaQueryWrapper<>();
  104. wrapper.in(FolderScene::getSceneId,proIds);
  105. this.remove(wrapper);
  106. }
  107. }
  108. @Override
  109. public void delByCameraIds(List<Long> cameraIds) {
  110. if(cameraIds.size() >0){
  111. List<ScenePro> proList = sceneProService.getListByCameraIds(cameraIds);
  112. List<ScenePlus> plusList = scenePlusService.getListByCameraIds(cameraIds);
  113. List<Long > sceneIds = new ArrayList<>();
  114. if(proList.size() >0){
  115. List<Long> proIds = proList.stream().map(ScenePro::getId).collect(Collectors.toList());
  116. if(proIds.size() >0){
  117. sceneIds.addAll(proIds);
  118. }
  119. }
  120. if(plusList.size() >0){
  121. List<Long> plusIds = plusList.stream().map(ScenePlus::getId).collect(Collectors.toList());
  122. if(plusIds.size() >0){
  123. sceneIds.addAll(plusIds);
  124. }
  125. }
  126. if(sceneIds.size() >0){
  127. this.delBySceneId(sceneIds);
  128. }
  129. }
  130. }
  131. }