|
@@ -216,54 +216,58 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
|
|
|
|
|
|
@Override
|
|
|
public void lockOrUnLockBySpace(CameraDetail cameraDetail, Long cameraId) {
|
|
|
+ ThreadUtil.execute(() -> {
|
|
|
+ log.info("异步任务执行,当前线程:" + Thread.currentThread().getName());
|
|
|
+ List<SimpleSceneVo> voList = this.getSimpleSceneVo(cameraDetail);
|
|
|
+ if(voList .size() <=0){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ CameraType cameraType = cameraTypeService.getByCameraType(cameraDetail.getType());
|
|
|
|
|
|
- List<SimpleSceneVo> voList = this.getSimpleSceneVo(cameraDetail);
|
|
|
- if(voList .size() <=0){
|
|
|
- return;
|
|
|
- }
|
|
|
- CameraType cameraType = cameraTypeService.getByCameraType(cameraDetail.getType());
|
|
|
+ Long totalSpace = cameraDetailService.getTotalSpaceByCameraId(cameraDetail);
|
|
|
+ Long usedSpace = 0L;
|
|
|
|
|
|
- Long totalSpace = cameraDetailService.getTotalSpaceByCameraId(cameraDetail);
|
|
|
- Long usedSpace = 0L;
|
|
|
+ //获取未被封存的场景容量
|
|
|
+ List<Long> spaceList = voList.stream().filter(entity -> entity.getPayStatus() == 1).map(SimpleSceneVo::getSpace).collect(Collectors.toList());
|
|
|
+ if("SP".equals(cameraDetail.getUnit())){
|
|
|
+ usedSpace = (long) spaceList.size();
|
|
|
+ }
|
|
|
+ if("GB".equals(cameraDetail.getUnit())){
|
|
|
+ for (Long aLong : spaceList) {
|
|
|
+ usedSpace += aLong;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //计算时间倒序
|
|
|
+ List<SimpleSceneVo> sceneVos = voList.stream().sorted(Comparator.comparing(SimpleSceneVo::getCreateTime).reversed()).collect(Collectors.toList());
|
|
|
|
|
|
- //获取未被封存的场景容量
|
|
|
- List<Long> spaceList = voList.stream().filter(entity -> entity.getPayStatus() == 1).map(SimpleSceneVo::getSpace).collect(Collectors.toList());
|
|
|
- if("SP".equals(cameraDetail.getUnit())){
|
|
|
- usedSpace = (long) spaceList.size();
|
|
|
- }
|
|
|
- if("GB".equals(cameraDetail.getUnit())){
|
|
|
- for (Long aLong : spaceList) {
|
|
|
- usedSpace += aLong;
|
|
|
+ if(totalSpace == -1){ // 无限容量 全部解封
|
|
|
+ sceneVos = sceneVos.stream().filter(e -> e.getPayStatus() !=1).collect(Collectors.toList());
|
|
|
+ lockOrUnLockScenes(sceneVos,1,cameraType);
|
|
|
+ return;
|
|
|
}
|
|
|
- }
|
|
|
- //计算时间倒序
|
|
|
- List<SimpleSceneVo> sceneVos = voList.stream().sorted(Comparator.comparing(SimpleSceneVo::getCreateTime).reversed()).collect(Collectors.toList());
|
|
|
|
|
|
- if(totalSpace == -1){ // 无限容量 全部解封
|
|
|
- sceneVos = sceneVos.stream().filter(e -> e.getPayStatus() !=1).collect(Collectors.toList());
|
|
|
- lockOrUnLockScenes(sceneVos,1,cameraType);
|
|
|
- return;
|
|
|
- }
|
|
|
+ //按计算完成时间由新到旧封存
|
|
|
+ //按计算完成时间由旧到新解封
|
|
|
+ //payStatus 1解封,-2封存
|
|
|
+ List<SimpleSceneVo> lockedIds = new ArrayList<>();
|
|
|
+ if(usedSpace > totalSpace){
|
|
|
+ sceneVos = sceneVos.stream().filter(entity -> entity.getPayStatus() ==1).collect(Collectors.toList());
|
|
|
+ Long space = getSceneLockedIds(lockedIds, sceneVos, usedSpace - totalSpace,cameraDetail.getUnit());
|
|
|
+ log.info("lockOrUnLockBySpace---cameraId:{},totalSpace:{},useSpace{},space:{},payStatus:{}", cameraId,totalSpace,usedSpace,space,-2);
|
|
|
+ lockOrUnLockScenes(lockedIds,-2,cameraType);
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
- //按计算完成时间由新到旧封存
|
|
|
- //按计算完成时间由旧到新解封
|
|
|
- //payStatus 1解封,-2封存
|
|
|
- List<SimpleSceneVo> lockedIds = new ArrayList<>();
|
|
|
- if(usedSpace > totalSpace){
|
|
|
- sceneVos = sceneVos.stream().filter(entity -> entity.getPayStatus() ==1).collect(Collectors.toList());
|
|
|
- Long space = getSceneLockedIds(lockedIds, sceneVos, usedSpace - totalSpace,cameraDetail.getUnit());
|
|
|
- log.info("lockOrUnLockBySpace---cameraId:{},totalSpace:{},useSpace{},space:{},payStatus:{}", cameraId,totalSpace,usedSpace,space,-2);
|
|
|
- lockOrUnLockScenes(lockedIds,-2,cameraType);
|
|
|
- return;
|
|
|
- }
|
|
|
+ if(usedSpace < totalSpace){ //使用容量小于总容量,解封
|
|
|
+ sceneVos = sceneVos.stream().filter(entity -> entity.getPayStatus() !=1).collect(Collectors.toList());
|
|
|
+ CollectionUtil.reverse(sceneVos);
|
|
|
+ Long space = getSceneUnLockedIds(lockedIds, sceneVos, totalSpace - usedSpace,cameraDetail.getUnit());
|
|
|
+ log.info("lockOrUnLockBySpace---cameraId:{},totalSpace:{},useSpace{},space:{},payStatus:{}", cameraId,totalSpace,usedSpace,space,1);
|
|
|
+ lockOrUnLockScenes(lockedIds,1,cameraType);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ log.info("异步任务执行,当前线程:" + Thread.currentThread().getName()+"执行完毕");
|
|
|
|
|
|
- if(usedSpace < totalSpace){ //使用容量小于总容量,解封
|
|
|
- sceneVos = sceneVos.stream().filter(entity -> entity.getPayStatus() !=1).collect(Collectors.toList());
|
|
|
- CollectionUtil.reverse(sceneVos);
|
|
|
- Long space = getSceneUnLockedIds(lockedIds, sceneVos, totalSpace - usedSpace,cameraDetail.getUnit());
|
|
|
- log.info("lockOrUnLockBySpace---cameraId:{},totalSpace:{},useSpace{},space:{},payStatus:{}", cameraId,totalSpace,usedSpace,space,1);
|
|
|
- lockOrUnLockScenes(lockedIds,1,cameraType);
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
private void lockOrUnLockScenes(List<SimpleSceneVo> sceneVos, Integer payStatus,CameraType cameraType){
|