ScenePlusServiceImpl.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package com.fdkankan.contro.service.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import cn.hutool.core.util.StrUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  6. import com.fdkankan.common.constant.ErrorCode;
  7. import com.fdkankan.common.constant.PayStatus;
  8. import com.fdkankan.common.constant.SceneStatus;
  9. import com.fdkankan.common.constant.SpaceType;
  10. import com.fdkankan.contro.entity.CameraDetail;
  11. import com.fdkankan.contro.entity.ScenePlus;
  12. import com.fdkankan.contro.entity.ScenePlusExt;
  13. import com.fdkankan.contro.mapper.IScenePlusMapper;
  14. import com.fdkankan.contro.service.ICameraDetailService;
  15. import com.fdkankan.contro.service.IScenePlusExtService;
  16. import com.fdkankan.contro.service.IScenePlusService;
  17. import com.fdkankan.web.response.ResultData;
  18. import lombok.extern.slf4j.Slf4j;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.util.ObjectUtils;
  22. import java.util.Objects;
  23. import java.util.List;
  24. import java.util.Objects;
  25. import java.util.stream.Collectors;
  26. /**
  27. * <p>
  28. * 场景主表 服务实现类
  29. * </p>
  30. *
  31. * @author
  32. * @since 2022-03-16
  33. */
  34. @Slf4j
  35. @Service
  36. public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlus> implements IScenePlusService {
  37. @Autowired
  38. private IScenePlusExtService scenePlusExtService;
  39. @Autowired
  40. private ICameraDetailService cameraDetailService;
  41. @Override
  42. public ScenePlus getScenePlusByNum(String num) {
  43. return this.getOne(new LambdaQueryWrapper<ScenePlus>().eq(ScenePlus::getNum, num));
  44. }
  45. @Override
  46. public ResultData resetSpace(String num){
  47. ScenePlus scenePlus = this.getScenePlusByNum(num);
  48. ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
  49. if(Objects.isNull(scenePlus)){
  50. log.info("该场景不存在无法重置容量,场景码为:" + num);
  51. return ResultData.error(ErrorCode.FAILURE_CODE_5058);
  52. }
  53. if(scenePlus.getSceneStatus() == SceneStatus.EXCEED_SPACE.code()){//超出容量的场景不需要更新容量
  54. return ResultData.ok();
  55. }
  56. if(!ObjectUtils.isEmpty(scenePlusExt) && !ObjectUtils.isEmpty(scenePlusExt.getSpace())){
  57. Long space = -scenePlusExt.getSpace();
  58. CameraDetail cameraDetail = cameraDetailService.getByCameraId(scenePlus.getCameraId());
  59. String spaceType = cameraDetail.getUnit();
  60. if(spaceType.equals(SpaceType.SP.code())){
  61. space = -1L;
  62. }
  63. cameraDetailService.updateCameraDetailByCameraIdAndSpace(scenePlus.getCameraId(), space);
  64. }
  65. scenePlusExt.setSpace(Long.parseLong("0"));
  66. scenePlusExtService.updateById(scenePlusExt);
  67. return ResultData.ok();
  68. }
  69. @Override
  70. public String getDataSourceLikeUnicode(String unicode) {
  71. // 防止plus表删除,ext表未删除
  72. ScenePlusExt scenePlusExt = scenePlusExtService.getOne(
  73. new LambdaQueryWrapper<ScenePlusExt>().select(ScenePlusExt::getPlusId, ScenePlusExt::getDataSource).like(ScenePlusExt::getDataSource, unicode));
  74. if (Objects.isNull(scenePlusExt)) {
  75. return null;
  76. }
  77. ScenePlus plus = getById(scenePlusExt.getPlusId());
  78. if (Objects.nonNull(plus)) {
  79. return scenePlusExt.getDataSource();
  80. }
  81. scenePlusExtService.removeById(scenePlusExt);
  82. return null;
  83. }
  84. @Override
  85. public ScenePlus getByFileId(String fileId) {
  86. // 防止plus表删除,ext表未删除
  87. List<ScenePlusExt> scenePlusExts = scenePlusExtService.list(
  88. new LambdaQueryWrapper<ScenePlusExt>().like(ScenePlusExt::getDataSource, fileId)
  89. .eq(ScenePlusExt::getRecStatus, "A"));
  90. if (ObjectUtils.isEmpty(scenePlusExts)) {
  91. return null;
  92. }
  93. for (ScenePlusExt scenePlusExt : scenePlusExts) {
  94. ScenePlus plus = getById(scenePlusExt.getPlusId());
  95. if (!ObjectUtils.isEmpty(plus) && plus.getRecStatus().equals("A")) {
  96. return plus;
  97. }
  98. }
  99. return null;
  100. }
  101. @Override
  102. public Long sumUsedSpaceByCameraId(Long cameraId, String spaceTypeStr) {
  103. LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<ScenePlus>()
  104. .eq(ScenePlus::getCameraId, cameraId)
  105. .in(ScenePlus::getSceneStatus, SceneStatus.SUCCESS.code(), SceneStatus.NO_DISPLAY.code());
  106. SpaceType spaceType = SpaceType.get(spaceTypeStr);
  107. switch (spaceType){
  108. case GB:
  109. List<ScenePlus> list = this.list(wrapper);
  110. if(CollUtil.isEmpty(list)){
  111. return 0L;
  112. }
  113. List<Long> plusIdList = list.stream().map(scenePlus -> scenePlus.getId()).collect(Collectors.toList());
  114. List<ScenePlusExt> scenePlusExtList = scenePlusExtService.list(new LambdaQueryWrapper<ScenePlusExt>().in(ScenePlusExt::getPlusId, plusIdList));
  115. return scenePlusExtList.stream().mapToLong(pro -> {
  116. Long space = pro.getSpace();
  117. return Objects.isNull(space) ? 0L : space;
  118. }).sum();
  119. case SP:
  120. wrapper.eq(ScenePlus::getPayStatus, PayStatus.PAY.code());
  121. return this.count(wrapper);
  122. }
  123. return null;
  124. }
  125. }