ScenePlusServiceImpl.java 6.5 KB

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