FusionService.java 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. package com.fdkankan.ucenter.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.fdkankan.common.exception.BusinessException;
  5. import com.fdkankan.ucenter.common.PageInfo;
  6. import com.fdkankan.ucenter.constant.LoginConstant;
  7. import com.fdkankan.ucenter.entity.*;
  8. import com.fdkankan.ucenter.service.*;
  9. import com.fdkankan.ucenter.vo.request.SceneParam;
  10. import com.fdkankan.ucenter.vo.response.ScenePlusVo;
  11. import com.fdkankan.ucenter.vo.response.SceneProEntityVo;
  12. import org.apache.commons.lang3.StringUtils;
  13. import org.springframework.beans.BeanUtils;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Service;
  16. import java.util.*;
  17. import java.util.stream.Collectors;
  18. @Service
  19. public class FusionService implements IFusionService {
  20. @Autowired
  21. IScenePlusService scenePlusService;
  22. @Autowired
  23. IScenePlusExtService scenePlusExtService;
  24. @Autowired
  25. IUserService userService;
  26. @Autowired
  27. ICameraService cameraService;
  28. @Autowired
  29. IScenePlusVoidService scenePlusVoidService;
  30. @Override
  31. public PageInfo scenePageOnlyV4List(SceneParam param, String token) {
  32. PageInfo pageInfo = this.scenePageList(param, token);
  33. List<ScenePlusVo> list = (List<ScenePlusVo>) pageInfo.getList();
  34. List<SceneProEntityVo> proEntityVos = new ArrayList<>();
  35. for (ScenePlusVo scenePlusVo : list) {
  36. SceneProEntityVo vo = new SceneProEntityVo();
  37. vo.setSceneName(scenePlusVo.getTitle());
  38. vo.setStatus(scenePlusVo.getSceneStatus());
  39. BeanUtils.copyProperties(scenePlusVo.getPlusExt(),vo);
  40. BeanUtils.copyProperties(scenePlusVo,vo);
  41. proEntityVos.add(vo);
  42. }
  43. Page<SceneProEntityVo> pageVo = new Page<>(param.getPageNum(),param.getPageSize());
  44. pageVo.setRecords(proEntityVos);
  45. pageVo.setTotal(pageInfo.getTotal());
  46. return PageInfo.PageInfo(pageVo);
  47. }
  48. @Override
  49. public PageInfo scenePageList(SceneParam param, String token) {
  50. LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<>();
  51. if(param.getSnCodes() != null && param.getSnCodes().size() >0){
  52. List<Camera> cameras = cameraService.getBySnCodes(param.getSnCodes());
  53. if(cameras.size() >0){
  54. List<Long> cameraIds = cameras.stream().map(Camera::getId).collect(Collectors.toList());
  55. wrapper.in(ScenePlus::getCameraId,cameraIds);
  56. }else {
  57. return PageInfo.PageInfo(new Page<>(param.getPageNum(),param.getPageSize()));
  58. }
  59. }
  60. if(StringUtils.isNotBlank(param.getSnCode())){
  61. List<Camera> cameraLikeSnCode = cameraService.getCameraLikeSnCode(param.getSnCode());
  62. if(cameraLikeSnCode.isEmpty()){
  63. return PageInfo.PageInfo(new Page<>(param.getPageNum(),param.getPageSize()));
  64. }
  65. List<Long> cameraIds = cameraLikeSnCode.stream().map(Camera::getId).collect(Collectors.toList());
  66. wrapper.in(ScenePlus::getCameraId,cameraIds);
  67. }
  68. if(StringUtils.isNotBlank(token)){
  69. User user = userService.getByToken(token);
  70. if(user == null){
  71. throw new BusinessException(LoginConstant.FAILURE_CODE_3015,LoginConstant.FAILURE_MSG_3015);
  72. }
  73. wrapper.eq(ScenePlus::getUserId,user.getId());
  74. }
  75. List<Integer> resourceList = new ArrayList<>();
  76. if(param.getType()!= null && param.getType() == 0){ //看看
  77. resourceList = Arrays.asList(1,2,12,13,14);
  78. }else if(param.getType()!= null && param.getType() == 1){ //看见
  79. resourceList = Collections.singletonList(3);
  80. }else if(param.getType()!=null && param.getType() == 4){
  81. resourceList = Collections.singletonList(4);
  82. }else if(param.getType() !=null && param.getType() == 6){
  83. resourceList = Collections.singletonList(5);
  84. }
  85. if(param.getType() !=null && (param.getType() == 4 || param.getType() == 6 )){
  86. List<ScenePlusExt> plusExtList = scenePlusExtService.getSsObj();
  87. List<Long> plusIds = plusExtList.stream().map(ScenePlusExt::getPlusId).collect(Collectors.toList());
  88. if(plusIds.size() >0){
  89. wrapper.in(ScenePlus::getId,plusIds);
  90. }
  91. }
  92. if(param.getStatus() !=null && param.getStatus() == 2){
  93. wrapper.in(ScenePlus::getSceneStatus,1,-2); //计算成功
  94. wrapper.eq(ScenePlus::getPayStatus,1);
  95. }
  96. if(resourceList.size() >0){
  97. wrapper.in(ScenePlus::getSceneSource,resourceList);
  98. }
  99. if(StringUtils.isNotBlank(param.getSceneName())){
  100. wrapper.like(ScenePlus::getTitle,param.getSceneName());
  101. }
  102. if(param.getHaveVoid() !=null && param.getHaveVoid() == 0 && param.getNumList()!= null && param.getNumList().size() >0){
  103. wrapper.in(ScenePlus::getNum, param.getNumList());
  104. }
  105. if(param.getHaveVoid() !=null && param.getHaveVoid() == 1 && param.getNumList()!= null && param.getNumList().size() >0){
  106. wrapper.notIn(ScenePlus::getNum, param.getNumList());
  107. }
  108. wrapper.orderByDesc(ScenePlus::getCreateTime);
  109. Page<ScenePlus> page = scenePlusService.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
  110. if(page.getTotal() <=0){
  111. return PageInfo.PageInfo(page);
  112. }
  113. List<Long> plusIds = page.getRecords().parallelStream().map(ScenePlus::getId).collect(Collectors.toList());
  114. List<Long> cameraIds = page.getRecords().parallelStream().map(ScenePlus::getCameraId).collect(Collectors.toList());
  115. List<ScenePlusVo> list = new ArrayList<>();
  116. HashMap<Long, ScenePlusExt> extMap = scenePlusExtService.getByPlusIds(plusIds);
  117. HashMap<Long, ScenePlusVoid> voidMap = scenePlusVoidService.getByPlusIds(plusIds);
  118. HashMap<Long, Camera> cameraMap = cameraService.getByIds(cameraIds);
  119. HashMap<Long, User> userMap = userService.getByIds(page.getRecords().stream().map(ScenePlus::getUserId).collect(Collectors.toList()));
  120. for (ScenePlus record : page.getRecords()) {
  121. ScenePlusVo scenePlusVo = new ScenePlusVo();
  122. BeanUtils.copyProperties(record,scenePlusVo);
  123. String snCode = cameraMap.get(scenePlusVo.getCameraId()) == null ? "" :cameraMap.get(scenePlusVo.getCameraId()).getSnCode();
  124. scenePlusVo.setPlusExt(extMap.get(record.getId()));
  125. scenePlusVo.setSnCode(snCode);
  126. scenePlusVo.setSceneType(param.getType());
  127. scenePlusVo.setPlusVoid(voidMap.get(record.getId()));
  128. scenePlusVo.setPhone(userMap.get(record.getUserId()) == null ?null : userMap.get(record.getUserId()).getUserName());
  129. list.add(scenePlusVo);
  130. }
  131. Page<ScenePlusVo> pageVo = new Page<>(param.getPageNum(),param.getPageSize());
  132. pageVo.setRecords(list);
  133. pageVo.setTotal(page.getTotal());
  134. return PageInfo.PageInfo(pageVo);
  135. }
  136. }