FusionService.java 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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. if(scenePlusVo.getPlusExt() !=null){
  40. BeanUtils.copyProperties(scenePlusVo.getPlusExt(),vo);
  41. }
  42. BeanUtils.copyProperties(scenePlusVo, vo);
  43. proEntityVos.add(vo);
  44. }
  45. Page<SceneProEntityVo> pageVo = new Page<>(param.getPageNum(),param.getPageSize());
  46. pageVo.setRecords(proEntityVos);
  47. pageVo.setTotal(pageInfo.getTotal());
  48. return PageInfo.PageInfo(pageVo);
  49. }
  50. @Override
  51. public PageInfo scenePageList(SceneParam param, String token) {
  52. LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<>();
  53. if(param.getSnCodes() != null && param.getSnCodes().size() >0){
  54. List<Camera> cameras = cameraService.getBySnCodes(param.getSnCodes());
  55. if(cameras.size() >0){
  56. List<Long> cameraIds = cameras.stream().map(Camera::getId).collect(Collectors.toList());
  57. wrapper.in(ScenePlus::getCameraId,cameraIds);
  58. }else {
  59. return PageInfo.PageInfo(new Page<>(param.getPageNum(),param.getPageSize()));
  60. }
  61. }
  62. if(StringUtils.isNotBlank(token)){
  63. User user = userService.getByToken(token);
  64. if(user == null){
  65. throw new BusinessException(LoginConstant.FAILURE_CODE_3015,LoginConstant.FAILURE_MSG_3015);
  66. }
  67. wrapper.eq(ScenePlus::getUserId,user.getId());
  68. }
  69. List<Integer> resourceList = new ArrayList<>();
  70. if(param.getType()!= null && param.getType() == 0){ //看看
  71. resourceList = Arrays.asList(1,2,12,13,14);
  72. }else if(param.getType()!= null && param.getType() == 1){ //看见
  73. resourceList = Collections.singletonList(3);
  74. }else if(param.getType()!=null && param.getType() == 4){
  75. resourceList = Collections.singletonList(4);
  76. }else if(param.getType() !=null && param.getType() == 6){
  77. resourceList = Collections.singletonList(5);
  78. }
  79. if(param.getType() !=null && (param.getType() == 4 || param.getType() == 6 )){
  80. List<ScenePlusExt> plusExtList = scenePlusExtService.getSsObj();
  81. List<Long> plusIds = plusExtList.stream().map(ScenePlusExt::getPlusId).collect(Collectors.toList());
  82. if(plusIds.size() >0){
  83. wrapper.in(ScenePlus::getId,plusIds);
  84. }
  85. }
  86. if(param.getStatus() !=null && param.getStatus() == 2){
  87. wrapper.in(ScenePlus::getSceneStatus,1,-2); //计算成功
  88. wrapper.eq(ScenePlus::getPayStatus,1);
  89. }
  90. if(resourceList.size() >0){
  91. wrapper.in(ScenePlus::getSceneSource,resourceList);
  92. }
  93. if(StringUtils.isNotBlank(param.getSceneName())){
  94. wrapper.like(ScenePlus::getTitle,param.getSceneName());
  95. }
  96. if(param.getHaveVoid() !=null && param.getHaveVoid() == 0 && param.getNumList()!= null && param.getNumList().size() >0){
  97. wrapper.in(ScenePlus::getNum, param.getNumList());
  98. }
  99. if(param.getHaveVoid() !=null && param.getHaveVoid() == 1 && param.getNumList()!= null && param.getNumList().size() >0){
  100. wrapper.notIn(ScenePlus::getNum, param.getNumList());
  101. }
  102. wrapper.orderByDesc(ScenePlus::getCreateTime);
  103. Page<ScenePlus> page = scenePlusService.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
  104. if(page.getTotal() <=0){
  105. return PageInfo.PageInfo(page);
  106. }
  107. List<Long> plusIds = page.getRecords().parallelStream().map(ScenePlus::getId).collect(Collectors.toList());
  108. List<Long> cameraIds = page.getRecords().parallelStream().map(ScenePlus::getCameraId).collect(Collectors.toList());
  109. List<ScenePlusVo> list = new ArrayList<>();
  110. HashMap<Long, ScenePlusExt> extMap = scenePlusExtService.getByPlusIds(plusIds);
  111. HashMap<Long, ScenePlusVoid> voidMap = scenePlusVoidService.getByPlusIds(plusIds);
  112. HashMap<Long, Camera> cameraMap = cameraService.getByIds(cameraIds);
  113. HashMap<Long, User> userMap = userService.getByIds(page.getRecords().stream().map(ScenePlus::getUserId).collect(Collectors.toList()));
  114. for (ScenePlus record : page.getRecords()) {
  115. ScenePlusVo scenePlusVo = new ScenePlusVo();
  116. BeanUtils.copyProperties(record,scenePlusVo);
  117. String snCode = cameraMap.get(scenePlusVo.getCameraId()) == null ? "" :cameraMap.get(scenePlusVo.getCameraId()).getSnCode();
  118. scenePlusVo.setPlusExt(extMap.get(record.getId()));
  119. scenePlusVo.setSnCode(snCode);
  120. scenePlusVo.setSceneType(param.getType());
  121. scenePlusVo.setPlusVoid(voidMap.get(record.getId()));
  122. scenePlusVo.setPhone(userMap.get(record.getUserId()) == null ?null : userMap.get(record.getUserId()).getUserName());
  123. list.add(scenePlusVo);
  124. }
  125. Page<ScenePlusVo> pageVo = new Page<>(param.getPageNum(),param.getPageSize());
  126. pageVo.setRecords(list);
  127. pageVo.setTotal(page.getTotal());
  128. return PageInfo.PageInfo(pageVo);
  129. }
  130. }