CameraDetailServiceImpl.java 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. package com.fdkankan.ucenter.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  5. import com.fdkankan.common.constant.Constant;
  6. import com.fdkankan.ucenter.common.constants.NacosProperty;
  7. import com.fdkankan.ucenter.entity.*;
  8. import com.fdkankan.ucenter.httpClient.service.LaserService;
  9. import com.fdkankan.ucenter.mapper.ICameraDetailMapper;
  10. import com.fdkankan.ucenter.service.*;
  11. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  12. import com.fdkankan.ucenter.vo.response.CameraAppVo;
  13. import com.fdkankan.ucenter.vo.response.CameraSpaceVo;
  14. import org.joda.time.DateTime;
  15. import org.joda.time.Days;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import java.util.ArrayList;
  19. import java.util.HashMap;
  20. import java.util.List;
  21. import java.util.Set;
  22. /**
  23. * <p>
  24. * 相机子表 服务实现类
  25. * </p>
  26. *
  27. * @author
  28. * @since 2022-07-04
  29. */
  30. @Service
  31. public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, CameraDetail> implements ICameraDetailService {
  32. @Autowired
  33. IUserService userService;
  34. @Autowired
  35. ICameraSpaceService cameraSpaceService;
  36. @Autowired
  37. LaserService fdkkLaserService;
  38. @Autowired
  39. ICameraService cameraService;
  40. @Autowired
  41. ISceneCooperationService sceneCooperationService;
  42. @Autowired
  43. ISceneProService sceneProService;
  44. @Autowired
  45. IScenePlusService scenePlusService;
  46. @Override
  47. public CameraDetail getByCameraId(Long cameraId) {
  48. LambdaQueryWrapper<CameraDetail> wrapper = new LambdaQueryWrapper<>();
  49. wrapper.eq(CameraDetail::getCameraId,cameraId);
  50. List<CameraDetail> list = this.list(wrapper);
  51. if(list!=null && list.size() >0){
  52. return list.get(0);
  53. }
  54. return null;
  55. }
  56. @Override
  57. public HashMap<Long, CameraDetail> getByCameraIds(List<Long> cameraIds) {
  58. HashMap<Long, CameraDetail> map = new HashMap<>();
  59. if(cameraIds.size() >0){
  60. LambdaQueryWrapper<CameraDetail> wrapper = new LambdaQueryWrapper<>();
  61. wrapper.in(CameraDetail::getCameraId,cameraIds);
  62. List<CameraDetail> list = this.list(wrapper);
  63. list.forEach(entity -> map.put(entity.getCameraId(),entity));
  64. }
  65. return map;
  66. }
  67. @Override
  68. public Long getCountByCompanyId(Long companyId,Integer type) {
  69. LambdaQueryWrapper<CameraDetail> wrapper = new LambdaQueryWrapper<>();
  70. wrapper.eq(CameraDetail::getCompanyId,companyId);
  71. if(type != null){
  72. wrapper.eq(CameraDetail::getGoodsId,type);
  73. }
  74. return this.count(wrapper);
  75. }
  76. @Override
  77. public Integer deadlineNumber(String username) {
  78. User user = userService.getByUserName(username);
  79. QueryWrapper<CameraDetail> queryWrapper = new QueryWrapper<>();
  80. queryWrapper.lambda().eq(CameraDetail::getUserId,user.getId());
  81. List<CameraDetail> list = this.list(queryWrapper);
  82. Integer number = 0;
  83. List<CameraSpaceVo> cameraList = null;
  84. for (CameraDetail cameraDetailEntity : list) {
  85. cameraList = cameraSpaceService.getVoListByCameraId(cameraDetailEntity.getCameraId());
  86. if(cameraList != null && cameraList.size() > 0){
  87. if(Days.daysBetween(new DateTime(), new DateTime(cameraList.get(0).getSpaceEndTime())).getDays() < 30){
  88. number++;
  89. }
  90. }
  91. }
  92. return number;
  93. }
  94. @Override
  95. public void unbindCamera(List<Long> cameraIds) {
  96. HashMap<Long, CameraDetail> detailMap = this.getByCameraIds(cameraIds);
  97. HashMap<Long, Camera> cameraMap = cameraService.getByIds(cameraIds);
  98. for (CameraDetail cameraDetail : detailMap.values()) {
  99. LambdaUpdateWrapper<CameraDetail> wrapper = new LambdaUpdateWrapper<>();
  100. wrapper.eq(CameraDetail::getId,cameraDetail.getId());
  101. wrapper.set(CameraDetail::getUserId,null);
  102. wrapper.set(CameraDetail::getCooperationUser,null);
  103. wrapper.set(CameraDetail::getTotalSpace,Long.parseLong(Constant.EXPANSION_SPACE_VALUE_1G ) * 10L);
  104. this.update(wrapper);
  105. cameraDetail.setTotalSpace(Long.parseLong(Constant.EXPANSION_SPACE_VALUE_1G ) * 10L);
  106. if(!"local".equals(NacosProperty.uploadType)){
  107. //sceneProService.lockOrUnLockBySpace(cameraDetail,cameraDetail.getCameraId(),-2); //封存场景
  108. }
  109. }
  110. //恢复10G基本容量
  111. //删除场景协作信息
  112. List<ScenePro> sceneProList = sceneProService.getListByCameraIds(cameraIds);
  113. List<ScenePlus> scenePlusList = scenePlusService.getListByCameraIds(cameraIds);
  114. sceneCooperationService.deleteCooperationList(sceneProList,scenePlusList);
  115. fdkkLaserService.disableCooperation(detailMap, cameraMap);
  116. }
  117. @Override
  118. public void bindCamera(List<Long> cameraIds,Long userId) {
  119. if(cameraIds.size() >0){
  120. LambdaUpdateWrapper<CameraDetail> wrapper = new LambdaUpdateWrapper<>();
  121. wrapper.in(CameraDetail::getCameraId,cameraIds)
  122. .set(CameraDetail::getUserId,userId);
  123. this.update(wrapper);
  124. }
  125. }
  126. @Override
  127. public void updateCooperationByIds(List<Long> cameraIds, Long userId) {
  128. LambdaUpdateWrapper<CameraDetail> wrapper = new LambdaUpdateWrapper<>();
  129. wrapper.in(CameraDetail::getCameraId,cameraIds)
  130. .set(CameraDetail::getCooperationUser,userId);
  131. this.update(wrapper);
  132. }
  133. @Override
  134. public void addUsedSpace(HashMap<Long, Long> cameraMap) {
  135. Set<Long> cameraIds = cameraMap.keySet();
  136. LambdaQueryWrapper<CameraDetail> wrapper = new LambdaQueryWrapper<>();
  137. wrapper.in(CameraDetail::getCameraId,cameraIds);
  138. List<CameraDetail> list = this.list(wrapper);
  139. for (CameraDetail cameraDetail : list) {
  140. long subSpace = cameraMap.get(cameraDetail.getCameraId()) == null ? 0L : cameraMap.get(cameraDetail.getCameraId());
  141. long usedSpace = cameraDetail.getUsedSpace() - subSpace ;
  142. cameraDetail.setUsedSpace(usedSpace < 0 ? 0L :usedSpace);
  143. //解封封存场景
  144. //sceneProService.lockOrUnLockBySpace(cameraDetail,cameraDetail.getCameraId(),1);
  145. }
  146. this.updateBatchById(list);
  147. }
  148. @Override
  149. public List<CameraAppVo> getListByUserAndType(Long companyId, Integer cameraType) {
  150. return this.getBaseMapper().getListByUserAndType(companyId,cameraType);
  151. }
  152. @Override
  153. public List<CameraAppVo> getListByUserIdsAndType(List<Long> userId, Integer cameraType) {
  154. return this.getBaseMapper().getListByUserIdsAndType(userId,cameraType);
  155. }
  156. @Override
  157. public boolean updateCameraBalance(Long cameraId, int body, Integer points) {
  158. CameraDetail detailEntity = this.getByCameraId(cameraId);
  159. int sub = Integer.parseInt(detailEntity.getBalance());
  160. if (0 == body){
  161. sub += points;
  162. }else if (-2 == body){
  163. sub -= points;
  164. }
  165. detailEntity.setBalance(String.valueOf(sub));
  166. return this.updateById(detailEntity);
  167. }
  168. @Override
  169. public void uploadUserCameraInfo(Long id, String cameraVersion, String appVersion) {
  170. LambdaUpdateWrapper<CameraDetail> wrapper = new LambdaUpdateWrapper<>();
  171. wrapper.eq(CameraDetail::getCameraId,id)
  172. .set(CameraDetail::getUserCameraVersion,cameraVersion)
  173. .set(CameraDetail::getAppVersion,appVersion)
  174. .set(CameraDetail::getLastRequestTime,new DateTime());
  175. this.update(wrapper);
  176. }
  177. }