瀏覽代碼

删除场景接口

dsx 2 年之前
父節點
當前提交
fdc163ea02

+ 7 - 5
src/main/java/com/fdkankan/scene/controller/SceneController.java

@@ -5,16 +5,12 @@ import cn.hutool.core.thread.ThreadUtil;
 import com.fdkankan.common.constant.SceneInfoReqType;
 import com.fdkankan.scene.bean.LaserSceneBean;
 import com.fdkankan.scene.service.ILaserService;
-import com.fdkankan.scene.vo.InitSceneParamVO;
+import com.fdkankan.scene.vo.*;
 import com.fdkankan.scene.annotation.CheckPermit;
 import com.fdkankan.scene.service.ISceneService;
 import com.fdkankan.web.response.ResultData;
 import com.fdkankan.scene.service.ISceneEditInfoService;
 import com.fdkankan.scene.service.IScenePlusService;
-import com.fdkankan.scene.vo.BaseSceneParamVO;
-import com.fdkankan.scene.vo.SceneCheckKeyParamVO;
-import com.fdkankan.scene.vo.SceneInfoParamVO;
-import com.fdkankan.scene.vo.SceneInfoVO;
 import com.fdkankan.web.controller.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
@@ -129,5 +125,11 @@ public class SceneController extends BaseController {
         return sceneService.getBodySegmentStatus(uuid);
     }
 
+    @PostMapping("/delete")
+    public ResultData delete(@RequestBody SceneParamVO param) throws Exception {
+        sceneService.delete(param.getSceneNum(),getUserId());
+        return ResultData.ok();
+    }
+
 }
 

+ 65 - 0
src/main/java/com/fdkankan/scene/entity/SceneDelLog.java

@@ -0,0 +1,65 @@
+package com.fdkankan.scene.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-15
+ */
+@Getter
+@Setter
+@TableName("t_scene_del_log")
+public class SceneDelLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 场景删除日志
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 文件夹Id
+     */
+    @TableField("folder_id")
+    private Integer folderId;
+
+    /**
+     * 场景码
+     */
+    @TableField("num")
+    private String num;
+
+    /**
+     * 操作人Id
+     */
+    @TableField("user_id")
+    private Long userId;
+
+    /**
+     * 操作人Id
+     */
+    @TableField("sys_user_id")
+    private Long sysUserId;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 18 - 0
src/main/java/com/fdkankan/scene/mapper/ISceneDelLogMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.scene.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fdkankan.scene.entity.SceneDelLog;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-15
+ */
+@Mapper
+public interface ISceneDelLogMapper extends BaseMapper<SceneDelLog> {
+
+}

+ 17 - 0
src/main/java/com/fdkankan/scene/service/ISceneDelLogService.java

@@ -0,0 +1,17 @@
+package com.fdkankan.scene.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.scene.entity.SceneDelLog;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-15
+ */
+public interface ISceneDelLogService extends IService<SceneDelLog> {
+
+    void saveLog(String num, Long userId);
+}

+ 7 - 0
src/main/java/com/fdkankan/scene/service/IScenePlusExtService.java

@@ -3,6 +3,9 @@ package com.fdkankan.scene.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.scene.entity.ScenePlusExt;
 
+import java.util.HashMap;
+import java.util.List;
+
 /**
  * <p>
  *  服务类
@@ -15,4 +18,8 @@ public interface IScenePlusExtService extends IService<ScenePlusExt> {
 
     ScenePlusExt getScenePlusExtByPlusId(long plusId);
 
+    HashMap<Long,ScenePlusExt> getByPlusIds(List<Long> plusIds);
+
+    void removeByPlusIds(List<Long> plusIds);
+
 }

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

@@ -45,4 +45,8 @@ public interface IScenePlusService extends IService<ScenePlus> {
 
     List<SceneBean> listCleanOrigScene(int cleanOrigMonth);
 
+    List<ScenePlus> getListByNums(List<String> numList);
+
+    void deleteByList(List<ScenePlus> plusList,Long userId);
+
 }

+ 2 - 0
src/main/java/com/fdkankan/scene/service/ISceneService.java

@@ -13,4 +13,6 @@ public interface ISceneService {
 
     ResultData getBodySegmentStatus(String uuid);
 
+    void delete(String sceneNum,Long userId);
+
 }

+ 31 - 0
src/main/java/com/fdkankan/scene/service/impl/SceneDelLogServiceImpl.java

@@ -0,0 +1,31 @@
+package com.fdkankan.scene.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.scene.entity.SceneDelLog;
+import com.fdkankan.scene.mapper.ISceneDelLogMapper;
+import com.fdkankan.scene.service.ISceneDelLogService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-03-15
+ */
+@Service
+public class SceneDelLogServiceImpl extends ServiceImpl<ISceneDelLogMapper, SceneDelLog> implements ISceneDelLogService {
+
+    @Override
+    public void saveLog(String num, Long userId) {
+        try {
+            SceneDelLog sceneDelLog = new SceneDelLog();
+            sceneDelLog.setNum(num);
+            sceneDelLog.setUserId(userId);
+            this.save(sceneDelLog);
+        }catch (Exception e){
+
+        }
+    }
+}

+ 26 - 0
src/main/java/com/fdkankan/scene/service/impl/ScenePlusExtServiceImpl.java

@@ -6,6 +6,10 @@ import com.fdkankan.scene.mapper.IScenePlusExtMapper;
 import com.fdkankan.scene.service.IScenePlusExtService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.HashMap;
+import java.util.List;
 
 /**
  * <p>
@@ -22,4 +26,26 @@ public class ScenePlusExtServiceImpl extends ServiceImpl<IScenePlusExtMapper, Sc
     public ScenePlusExt getScenePlusExtByPlusId(long plusId) {
         return this.getOne(new LambdaQueryWrapper<ScenePlusExt>().eq(ScenePlusExt::getPlusId, plusId));
     }
+
+    @Override
+    public HashMap<Long, ScenePlusExt> getByPlusIds(List<Long> plusIds) {
+        HashMap<Long,ScenePlusExt> map = new HashMap<>();
+        if(plusIds.size() >0){
+            LambdaQueryWrapper<ScenePlusExt> wrapper = new LambdaQueryWrapper<>();
+            wrapper.in(ScenePlusExt::getPlusId,plusIds);
+            List<ScenePlusExt> list = this.list(wrapper);
+            list.forEach(entity -> map.put(entity.getPlusId(),entity));
+        }
+        return map;
+    }
+
+    @Override
+    public void removeByPlusIds(List<Long> plusIds) {
+        if(CollectionUtils.isEmpty(plusIds)){
+            return;
+        }
+        LambdaQueryWrapper<ScenePlusExt> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(ScenePlusExt::getPlusId,plusIds);
+        this.remove(wrapper);
+    }
 }

+ 49 - 1
src/main/java/com/fdkankan/scene/service/impl/ScenePlusServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fdkankan.scene.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.FileUtil;
@@ -51,6 +52,7 @@ import java.nio.charset.StandardCharsets;
 import java.util.List;
 import java.util.Objects;
 import java.util.UUID;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -89,9 +91,10 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
     private OssUtil ossUtil;
     @Autowired
     FdkkLaserConfig fdkkLaserConfig;
-
     @Autowired
     private ISceneProService sceneProService;
+    @Autowired
+    private ISceneDelLogService sceneDelLogService;
 
     @Override
     public ScenePlus getScenePlusByNum(String num) {
@@ -379,4 +382,49 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
         time = DateUtil.beginOfDay(DateUtil.offset(time, DateField.MONTH, -cleanOrigMonth));
         return this.baseMapper.selectCleanOrigScene(time);
     }
+
+    @Override
+    public List<ScenePlus> getListByNums(List<String> numList) {
+        LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(ScenePlus::getNum,numList);
+        return this.list(wrapper);
+    }
+
+    @Override
+    public void deleteByList(List<ScenePlus> plusList,Long userId) {
+        HashMap<Long ,Long >cameraMap = new HashMap<>();
+        if(CollUtil.isEmpty(plusList)){
+            return;
+        }
+        List<Long> plusIds = plusList.parallelStream().map(ScenePlus::getId).collect(Collectors.toList());
+        HashMap<Long, ScenePlusExt> plusMap = scenePlusExtService.getByPlusIds(plusIds);
+
+        for (ScenePlus scenePlus : plusList) {
+            if(scenePlus.getCameraId()!= null && plusMap.get(scenePlus.getId())!=null){
+                cameraMap.merge(scenePlus.getCameraId(), plusMap.get(scenePlus.getId()).getSpace(), Long::sum);
+            }
+            sceneDelLogService.saveLog(scenePlus.getNum(),userId);
+        }
+        scenePlusService.removeByIds(plusIds);
+        scenePlusExtService.removeByPlusIds(plusIds);
+//        folderSceneService.delBySceneId(plusIds);
+//
+//        //恢复相机使用容量
+//        if(cameraMap.size() >0){
+//            cameraDetailService.addUsedSpace(cameraMap);
+//        }
+
+        //删除编辑和展示文件
+        plusList.stream().forEach(plus->{
+            ossUtil.deleteObject(String.format(UploadFilePath.VIEW_PATH, plus.getNum()));
+            ossUtil.deleteObject(String.format(UploadFilePath.EDIT_PATH, plus.getNum()));
+        });
+
+        //删除原始资源文件
+        plusMap.keySet().stream().forEach(key -> {
+            ScenePlusExt ext = plusMap.get(key);
+            ossUtil.deleteObject(ext.getDataSource());
+        });
+
+    }
 }

+ 20 - 4
src/main/java/com/fdkankan/scene/service/impl/SceneServiceImpl.java

@@ -14,11 +14,14 @@ import com.fdkankan.model.constants.ConstantFilePath;
 import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.scene.bean.BodySegmentStatusBean;
+import com.fdkankan.scene.entity.ScenePlus;
 import com.fdkankan.scene.oss.OssUtil;
+import com.fdkankan.scene.service.IScenePlusService;
 import com.fdkankan.scene.service.ISceneService;
 import com.fdkankan.scene.util.OssBodySegmentUtil;
 import com.fdkankan.web.response.ResultData;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -30,10 +33,8 @@ import java.awt.image.BufferedImage;
 import java.io.File;
 import java.io.IOException;
 import java.math.BigDecimal;
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
+import java.util.List;
 
 @Slf4j
 @Service("sceneService")
@@ -52,6 +53,8 @@ public class SceneServiceImpl implements ISceneService {
     private RedisUtil redisUtil;
     @Autowired
     private OssUtil ossUtil;
+    @Autowired
+    private IScenePlusService scenePlusService;
 
     @Override
     public ResultData uploadBodySegment(MultipartFile file, Integer rotate) throws Exception {
@@ -159,4 +162,17 @@ public class SceneServiceImpl implements ISceneService {
         BodySegmentStatusBean bodySegmentStatusBean = JSON.parseObject(progress, BodySegmentStatusBean.class);
         return ResultData.ok(bodySegmentStatusBean);
     }
+
+    @Override
+    public void delete(String sceneNum,Long userId) {
+        if(StringUtils.isEmpty(sceneNum)){
+            throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
+        }
+        String[] nums = sceneNum.split(",");
+        List<String> numList = Arrays.asList(nums);
+        List<ScenePlus> plusList = scenePlusService.getListByNums(numList);
+        scenePlusService.deleteByList(plusList,userId);
+    }
+
+
 }

+ 2 - 0
src/main/java/com/fdkankan/scene/vo/SceneParamVO.java

@@ -175,4 +175,6 @@ public class SceneParamVO extends RequestBase implements Serializable {
 
     private List<Long> sceneIdList;
 
+    private String sceneNum;
+
 }