FusionService.java 4.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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.common.response.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 org.apache.commons.lang3.StringUtils;
  12. import org.springframework.beans.BeanUtils;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Service;
  15. import java.util.*;
  16. import java.util.stream.Collectors;
  17. @Service
  18. public class FusionService implements IFusionService {
  19. @Autowired
  20. IScenePlusService scenePlusService;
  21. @Autowired
  22. IScenePlusExtService scenePlusExtService;
  23. @Autowired
  24. IUserService userService;
  25. @Autowired
  26. ICameraService cameraService;
  27. @Autowired
  28. IScenePlusVoidService scenePlusVoidService;
  29. @Override
  30. public PageInfo scenePageList(SceneParam param, String token) {
  31. User user = userService.getByToken(token);
  32. if(user == null){
  33. throw new BusinessException(LoginConstant.FAILURE_CODE_3015,LoginConstant.FAILURE_MSG_3015);
  34. }
  35. List<Integer> resourceList = new ArrayList<>();
  36. if(param.getType()!= null && param.getType() == 0){ //看看
  37. resourceList = Arrays.asList(1,2,12,13,14);
  38. }else if(param.getType()!= null && param.getType() == 1){ //看见
  39. resourceList = Collections.singletonList(3);
  40. }
  41. LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<>();
  42. wrapper.eq(ScenePlus::getUserId,user.getId());
  43. if(param.getStatus() !=null && param.getStatus() == 2){
  44. wrapper.eq(ScenePlus::getSceneStatus,-2); //计算成功
  45. }
  46. if(resourceList.size() >0){
  47. wrapper.in(ScenePlus::getSceneSource,resourceList);
  48. }
  49. if(StringUtils.isNotBlank(param.getSceneName())){
  50. wrapper.like(ScenePlus::getTitle,param.getSceneName());
  51. }
  52. if(param.getHaveVoid() !=null && param.getHaveVoid() == 0 && param.getNumList()!= null && param.getNumList().size() >0){
  53. wrapper.in(ScenePlus::getNum, param.getNumList());
  54. }
  55. if(param.getHaveVoid() !=null && param.getHaveVoid() == 1 && param.getNumList()!= null && param.getNumList().size() >0){
  56. wrapper.notIn(ScenePlus::getNum, param.getNumList());
  57. }
  58. wrapper.orderByDesc(ScenePlus::getCreateTime);
  59. Page<ScenePlus> page = scenePlusService.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
  60. if(page.getTotal() <=0){
  61. return PageInfo.PageInfo(page);
  62. }
  63. List<Long> plusIds = page.getRecords().parallelStream().map(ScenePlus::getId).collect(Collectors.toList());
  64. List<Long> cameraIds = page.getRecords().parallelStream().map(ScenePlus::getCameraId).collect(Collectors.toList());
  65. List<ScenePlusVo> list = new ArrayList<>();
  66. HashMap<Long, ScenePlusExt> extMap = scenePlusExtService.getByPlusIds(plusIds);
  67. HashMap<Long, ScenePlusVoid> voidMap = scenePlusVoidService.getByPlusIds(plusIds);
  68. HashMap<Long, Camera> cameraMap = cameraService.getByIds(cameraIds);
  69. for (ScenePlus record : page.getRecords()) {
  70. ScenePlusVo scenePlusVo = new ScenePlusVo();
  71. BeanUtils.copyProperties(record,scenePlusVo);
  72. String snCode = cameraMap.get(scenePlusVo.getCameraId()) == null ? "" :cameraMap.get(scenePlusVo.getCameraId()).getSnCode();
  73. scenePlusVo.setPlusExt(extMap.get(record.getId()));
  74. scenePlusVo.setSnCode(snCode);
  75. scenePlusVo.setSceneType(param.getType());
  76. scenePlusVo.setPlusVoid(voidMap.get(record.getId()));
  77. list.add(scenePlusVo);
  78. }
  79. Page<ScenePlusVo> pageVo = new Page<>(param.getPageNum(),param.getPageSize());
  80. pageVo.setRecords(list);
  81. pageVo.setTotal(page.getTotal());
  82. return PageInfo.PageInfo(pageVo);
  83. }
  84. }