浏览代码

复制,删除,迁移容量兼容sp

lyhzzz 2 年之前
父节点
当前提交
ae2b77f76a

+ 2 - 0
src/main/java/com/fdkankan/manage/mapper/IScenePlusMapper.java

@@ -23,4 +23,6 @@ public interface IScenePlusMapper extends BaseMapper<ScenePlus> {
     List<GroupByCount> getCountGroupByUserId(@Param("userIdList") List<Long> userIdList, @Param("isObj") Integer isObj);
 
     List<GroupByCount> getCountGroupByCameraId(@Param("cameraIds") List<Long> cameraIds);
+
+    Long getSpaceSumByCameraId(@Param("cameraId") Long cameraId);
 }

+ 2 - 0
src/main/java/com/fdkankan/manage/mapper/ISceneProMapper.java

@@ -31,4 +31,6 @@ public interface ISceneProMapper extends BaseMapper<ScenePro> {
     List<GroupByCount> getPlusSpaceGroupByCameraId();
 
     List<GroupByCount> getProSpaceGroupByCameraId();
+
+    Long getSpaceSumByCameraId(@Param("cameraId") Long cameraId);
 }

+ 3 - 0
src/main/java/com/fdkankan/manage/service/ICameraDetailService.java

@@ -51,4 +51,7 @@ public interface ICameraDetailService extends IService<CameraDetail> {
     Boolean checkSpace(CameraDetail detailEntity, Long space);
 
     Boolean checkSpace(Long cameraId, Long space);
+
+    void initSpace(CameraDetail cameraDetail);
+    void initSpace(Long cameraId);
 }

+ 4 - 0
src/main/java/com/fdkankan/manage/service/IScenePlusService.java

@@ -27,4 +27,8 @@ public interface IScenePlusService extends IService<ScenePlus> {
     HashMap<Long, Long> getCountGroupByCameraId(ArrayList<Long> longs);
 
     String getDataSourceByNum(String num);
+
+    Long getSpaceSumByCameraId(Long cameraId);
+
+    Long getCountByCameraId(Long cameraId);
 }

+ 4 - 0
src/main/java/com/fdkankan/manage/service/ISceneProService.java

@@ -53,4 +53,8 @@ public interface ISceneProService extends IService<ScenePro> {
     HashMap<Long,Long > getSpaceGroupByCameraId();
 
     void rebuildScene(String num);
+
+    Long getSpaceSumByCameraId(Long cameraId);
+
+    Long getCountByCameraId(Long cameraId);
 }

+ 25 - 4
src/main/java/com/fdkankan/manage/service/impl/CameraDetailServiceImpl.java

@@ -17,10 +17,7 @@ import com.fdkankan.manage.vo.response.GroupByCount;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -309,4 +306,28 @@ public class CameraDetailServiceImpl extends ServiceImpl<ICameraDetailMapper, Ca
         return 0L;
     }
 
+    @Override
+    public void initSpace(Long cameraId) {
+        CameraDetail cameraDetail = this.getByCameraId(cameraId);
+        if(cameraDetail != null){
+            initSpace(cameraDetail);
+        }
+    }
+
+    @Override
+    public void initSpace(CameraDetail cameraDetail) {
+        LambdaUpdateWrapper<CameraDetail> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(CameraDetail::getId,cameraDetail.getId());
+        if("GB".equals(cameraDetail.getUnit())){
+            Long proSpace = sceneProService.getSpaceSumByCameraId(cameraDetail.getCameraId());
+            Long plusSpace = scenePlusService.getSpaceSumByCameraId(cameraDetail.getCameraId());
+            wrapper.set(CameraDetail::getUsedSpace,plusSpace + proSpace);
+        }
+        if("SP".equals(cameraDetail.getUnit())){
+            Long proSpace = sceneProService.getCountByCameraId(cameraDetail.getCameraId());
+            Long plusSpace = scenePlusService.getCountByCameraId(cameraDetail.getCameraId());
+            wrapper.set(CameraDetail::getUsedSpace,plusSpace + proSpace);
+        }
+        this.update(wrapper);
+    }
 }

+ 12 - 0
src/main/java/com/fdkankan/manage/service/impl/ScenePlusServiceImpl.java

@@ -85,4 +85,16 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
         }
         return null;
     }
+
+    @Override
+    public Long getSpaceSumByCameraId(Long cameraId) {
+        return this.getBaseMapper().getSpaceSumByCameraId(cameraId);
+    }
+
+    @Override
+    public Long getCountByCameraId(Long cameraId) {
+        LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ScenePlus::getCameraId,cameraId);
+        return this.count(wrapper);
+    }
 }

+ 23 - 20
src/main/java/com/fdkankan/manage/service/impl/SceneProServiceImpl.java

@@ -242,7 +242,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         if(status == 0){
             throw new BusinessException(SceneConstant.FAILURE_CODE_5037, SceneConstant.FAILURE_MSG_5037);
         }
-        //todo  sapce init
+
         Long sceneCameraId = scenePro == null ? scenePlus.getCameraId() : scenePro.getCameraId();
         Long space = null;
         space = scenePro == null ? 0 :scenePro.getSpace();
@@ -253,7 +253,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             dataSource = scenePlusExt.getDataSource();
         }
         space = space == null ? 0 :space;
-        Long newUseSpace = space + cameraDetail.getUsedSpace();
 
         Boolean checkSpace = cameraDetailService.checkSpace(cameraDetail, space);
         //深时场景无限容量
@@ -294,7 +293,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         }
 
         Long oldUseSpace = oldCameraDetail.getUsedSpace() - space < 0 ? 0 : oldCameraDetail.getUsedSpace() - space;
-        oldCameraDetail.setUsedSpace(oldUseSpace);
+        if("GB".equals(oldCameraDetail.getUnit())){
+            oldUseSpace = 1L;
+        }
         Long subSpace =  oldCameraDetail.getTotalSpace() - oldUseSpace;
 
         if(oldCameraDetail.getType() != 11 && oldCameraDetail.getType() != 10 && subSpace >0){           //有剩余容量解封容量内场景
@@ -306,9 +307,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         if(cameraDetail.getType() != 11 && cameraDetail.getType() != 10 && payStatus!=1){           //有剩余容量解封容量内场景
             this.lockOrUnLockBySpace(scenePro,scenePlus,1);
         }
-        cameraDetailService.updateById(oldCameraDetail);
-        cameraDetail.setUsedSpace(newUseSpace);
-        cameraDetailService.updateById(cameraDetail);
+
+        cameraDetailService.initSpace(oldCameraDetail);
+        cameraDetailService.initSpace(cameraDetail);
 
         if(scenePro!=null){
             LambdaUpdateWrapper<ScenePro> wrapper = new LambdaUpdateWrapper<>();
@@ -459,15 +460,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         if(sceneStatus != -2){
             throw new BusinessException(ResultCode.SCENE_IS_BUILDING);
         }
-        Long totalSpace = detailEntity.getTotalSpace();
-        UserIncrement userIncrement = userIncrementService.getByCameraId(cameraId);
-        if(userIncrement != null && userIncrement.getIsExpired() ==0){
-            IncrementType incrementType = incrementTypeService.getById(userIncrement.getIncrementTypeId());
-            totalSpace = incrementType.getCameraCapacity() * 1024 * 1024 * 1024L;
-        }
-        if(detailEntity.getType() == 10  || detailEntity.getType() == 11){
-            totalSpace = -1L;
-        }
 
         Long needSpace = 0L;
         if(scenePro != null){
@@ -479,8 +471,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                 needSpace = scenePlusExt.getSpace();
             }
         }
+        Boolean checkSpace = cameraDetailService.checkSpace(detailEntity, needSpace);
 
-        if( totalSpace > 0 && detailEntity.getUsedSpace() + needSpace > totalSpace){
+        if(checkSpace){
             throw new BusinessException(ResultCode.CAMERA_SPACE_ERROR);
         }
 
@@ -494,12 +487,10 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
     public void deleteByNum(String num) {
         Integer sceneSource = null;
         Long cameraId = null;
-        Long space = null;
         ScenePro scenePro = this.getByNum(num);
         if(scenePro!=null){
             cameraId = scenePro.getCameraId();
             sceneSource = scenePro.getSceneSource();
-            space = scenePro.getSpace();
             this.removeById(scenePro.getId());
         }
         Scene scene = sceneService.getByNum(num);
@@ -512,7 +503,6 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             sceneSource = scenePlus.getSceneSource();
             ScenePlusExt plusExt = scenePlusExtService.getByPlusId(scenePlus.getId());
             if(plusExt != null){
-                space = plusExt.getSpace();
                 scenePlusExtService.delByPlus(scenePlus.getId());
             }
             scenePlusService.removeById(scenePlus.getId());
@@ -521,7 +511,7 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
             laserService.delete(num);
         }
         if(cameraId != null){
-            cameraDetailService.addUsedSpace(cameraId,space);
+            cameraDetailService.initSpace(cameraId);
         }
         sceneDelLogService.saveLog(num, StpUtil.getLoginId());
     }
@@ -680,4 +670,17 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         }
 
     }
+
+    @Override
+    public Long getSpaceSumByCameraId(Long cameraId) {
+        return this.getBaseMapper().getSpaceSumByCameraId(cameraId);
+    }
+
+    @Override
+    public Long getCountByCameraId(Long cameraId) {
+        LambdaQueryWrapper<ScenePro> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ScenePro::getIsUpgrade,0);
+        wrapper.eq(ScenePro::getCameraId,cameraId);
+        return this.count(wrapper);
+    }
 }

+ 3 - 0
src/main/resources/mapper/manage/ScenePlusMapper.xml

@@ -31,4 +31,7 @@
         </foreach>
         GROUP BY camera_id
     </select>
+    <select id="getSpaceSumByCameraId" resultType="java.lang.Long">
+        select  sum(space) from  t_scene_plus p left join t_scene_plus_ext e on p.id = e.plus_id and p.rec_status = 'A' and p.camera_id = #{cameraId}
+    </select>
 </mapper>

+ 5 - 0
src/main/resources/mapper/manage/SceneProMapper.xml

@@ -103,4 +103,9 @@
 
     </select>
 
+    <select id="getSpaceSumByCameraId" resultType="java.lang.Long">
+        select sum(space) from t_scene_pro where rec_status= 'A' and is_upgrade = 0 and camera_id = #{cameraId}
+    </select>
+
+
 </mapper>