123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- package com.fdkankan.contro.service.impl;
- import cn.hutool.core.collection.CollUtil;
- import cn.hutool.core.util.StrUtil;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.fdkankan.common.constant.ErrorCode;
- import com.fdkankan.common.constant.PayStatus;
- import com.fdkankan.common.constant.SceneStatus;
- import com.fdkankan.common.constant.SpaceType;
- import com.fdkankan.contro.entity.CameraDetail;
- import com.fdkankan.contro.entity.ScenePlus;
- import com.fdkankan.contro.entity.ScenePlusExt;
- import com.fdkankan.contro.mapper.IScenePlusMapper;
- import com.fdkankan.contro.service.ICameraDetailService;
- import com.fdkankan.contro.service.IScenePlusExtService;
- import com.fdkankan.contro.service.IScenePlusService;
- import com.fdkankan.web.response.ResultData;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.util.ObjectUtils;
- import java.util.Objects;
- import java.util.List;
- import java.util.Objects;
- import java.util.stream.Collectors;
- /**
- * <p>
- * 场景主表 服务实现类
- * </p>
- *
- * @author
- * @since 2022-03-16
- */
- @Slf4j
- @Service
- public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlus> implements IScenePlusService {
- @Autowired
- private IScenePlusExtService scenePlusExtService;
- @Autowired
- private ICameraDetailService cameraDetailService;
- @Override
- public ScenePlus getScenePlusByNum(String num) {
- return this.getOne(new LambdaQueryWrapper<ScenePlus>().eq(ScenePlus::getNum, num));
- }
- @Override
- public ResultData resetSpace(String num){
- ScenePlus scenePlus = this.getScenePlusByNum(num);
- ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
- if(Objects.isNull(scenePlus)){
- log.info("该场景不存在无法重置容量,场景码为:" + num);
- return ResultData.error(ErrorCode.FAILURE_CODE_5058);
- }
- if(scenePlus.getSceneStatus() == SceneStatus.EXCEED_SPACE.code()){//超出容量的场景不需要更新容量
- return ResultData.ok();
- }
- if(!ObjectUtils.isEmpty(scenePlusExt) && !ObjectUtils.isEmpty(scenePlusExt.getSpace())){
- Long space = -scenePlusExt.getSpace();
- CameraDetail cameraDetail = cameraDetailService.getByCameraId(scenePlus.getCameraId());
- String spaceType = cameraDetail.getUnit();
- if(spaceType.equals(SpaceType.SP.code())){
- space = -1L;
- }
- cameraDetailService.updateCameraDetailByCameraIdAndSpace(scenePlus.getCameraId(), space);
- }
- scenePlusExt.setSpace(Long.parseLong("0"));
- scenePlusExtService.updateById(scenePlusExt);
- return ResultData.ok();
- }
- @Override
- public String getDataSourceLikeUnicode(String unicode) {
- // 防止plus表删除,ext表未删除
- ScenePlusExt scenePlusExt = scenePlusExtService.getOne(
- new LambdaQueryWrapper<ScenePlusExt>().select(ScenePlusExt::getPlusId, ScenePlusExt::getDataSource).like(ScenePlusExt::getDataSource, unicode));
- if (Objects.isNull(scenePlusExt)) {
- return null;
- }
- ScenePlus plus = getById(scenePlusExt.getPlusId());
- if (Objects.nonNull(plus)) {
- return scenePlusExt.getDataSource();
- }
- scenePlusExtService.removeById(scenePlusExt);
- return null;
- }
- @Override
- public ScenePlus getByFileId(String fileId) {
- // 防止plus表删除,ext表未删除
- List<ScenePlusExt> scenePlusExts = scenePlusExtService.list(
- new LambdaQueryWrapper<ScenePlusExt>().like(ScenePlusExt::getDataSource, fileId)
- .eq(ScenePlusExt::getRecStatus, "A"));
- if (ObjectUtils.isEmpty(scenePlusExts)) {
- return null;
- }
- for (ScenePlusExt scenePlusExt : scenePlusExts) {
- ScenePlus plus = getById(scenePlusExt.getPlusId());
- if (!ObjectUtils.isEmpty(plus) && plus.getRecStatus().equals("A")) {
- return plus;
- }
- }
- return null;
- }
- @Override
- public Long sumUsedSpaceByCameraId(Long cameraId, String spaceTypeStr) {
- LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<ScenePlus>()
- .eq(ScenePlus::getCameraId, cameraId)
- .in(ScenePlus::getSceneStatus, SceneStatus.SUCCESS.code(), SceneStatus.NO_DISPLAY.code());
- SpaceType spaceType = SpaceType.get(spaceTypeStr);
- switch (spaceType){
- case GB:
- List<ScenePlus> list = this.list(wrapper);
- if(CollUtil.isEmpty(list)){
- return 0L;
- }
- List<Long> plusIdList = list.stream().map(scenePlus -> scenePlus.getId()).collect(Collectors.toList());
- List<ScenePlusExt> scenePlusExtList = scenePlusExtService.list(new LambdaQueryWrapper<ScenePlusExt>().in(ScenePlusExt::getPlusId, plusIdList));
- return scenePlusExtList.stream().mapToLong(pro -> {
- Long space = pro.getSpace();
- return Objects.isNull(space) ? 0L : space;
- }).sum();
- case SP:
- wrapper.eq(ScenePlus::getPayStatus, PayStatus.PAY.code());
- return this.count(wrapper);
- }
- return null;
- }
- }
|