package com.fdkankan.contro.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fdkankan.common.constant.CommonStatus;
import com.fdkankan.common.constant.PayStatus;
import com.fdkankan.common.constant.SceneStatus;
import com.fdkankan.common.constant.SpaceType;
import com.fdkankan.contro.entity.ScenePro;
import com.fdkankan.contro.mapper.ISceneProMapper;
import com.fdkankan.contro.service.ISceneProService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
*
* pro场景表 服务实现类
*
*
* @author dengsixing
* @since 2021-12-23
*/
@Slf4j
@Service
public class SceneProServiceImpl extends ServiceImpl implements ISceneProService {
@Override
public ScenePro getByNum(String num) {
return this.getOne(new LambdaQueryWrapper().eq(ScenePro::getNum, num));
}
@Override
public Long sumUsedSpaceByCameraId(Long cameraId, String spaceTypeStr) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper()
.eq(ScenePro::getCameraId, cameraId)
.in(ScenePro::getStatus, SceneStatus.SUCCESS.code(), SceneStatus.NO_DISPLAY.code())
.eq(ScenePro::getIsUpgrade, CommonStatus.NO.code());
SpaceType spaceType = SpaceType.get(spaceTypeStr);
switch (spaceType){
case GB:
wrapper.select(ScenePro::getSpace);
List list = this.list(wrapper);
if(CollUtil.isEmpty(list)){
return 0L;
}
return list.stream().mapToLong(pro -> {
Long space = pro.getSpace();
return Objects.isNull(space) ? 0L : space;
}).sum();
case SP:
wrapper.eq(ScenePro::getPayStatus, PayStatus.PAY.code());
return this.count(wrapper);
}
return 0L;
}
}