lyhzzz 1 month ago
parent
commit
4e89756763

+ 45 - 41
src/main/java/com/fdkankan/ucenter/service/impl/SceneProServiceImpl.java

@@ -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){