dengsixing 1 nedēļu atpakaļ
vecāks
revīzija
4a0f3c4ead

+ 6 - 8
src/main/java/com/fdkankan/scene/controller/EvidenceController.java

@@ -4,10 +4,7 @@ package com.fdkankan.scene.controller;
 import com.fdkankan.scene.annotation.CheckPermit;
 import com.fdkankan.scene.annotation.SaveLog;
 import com.fdkankan.scene.service.ISceneEvidenceService;
-import com.fdkankan.scene.vo.DeleteHotIconParamVO;
-import com.fdkankan.scene.vo.DeleteHotParamVO;
-import com.fdkankan.scene.vo.SaveEvidenceParamVO;
-import com.fdkankan.scene.vo.SaveTagsParamVO;
+import com.fdkankan.scene.vo.*;
 import com.fdkankan.web.controller.BaseController;
 import com.fdkankan.web.response.ResultData;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -51,8 +48,9 @@ public class EvidenceController  extends BaseController {
     @SaveLog
     @CheckPermit
     @PostMapping(value = "/delete")
-    public ResultData deleteTag(@RequestBody @Validated DeleteHotParamVO param) throws Exception {
-        return sceneProService.deleteTag(param);
+    public ResultData deleteEvidence(@RequestBody @Validated DeleteSidListParamVO param) throws Exception {
+        sceneEvidenceService.deleteEvidence(param);
+        return ResultData.ok();
     }
 
     /**
@@ -66,8 +64,8 @@ public class EvidenceController  extends BaseController {
      **/
     @CheckPermit
     @PostMapping(value = "/list")
-    public ResultData listTags(@RequestParam(value = "num") String num) throws Exception {
-        return sceneProService.listTags(num);
+    public ResultData listEvidences(@RequestParam(value = "num") String num) throws Exception {
+        return sceneEvidenceService.listEvidences(num);
     }
 
     /**

+ 21 - 0
src/main/java/com/fdkankan/scene/controller/SceneIconController.java

@@ -0,0 +1,21 @@
+package com.fdkankan.scene.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 图标 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2025-08-12
+ */
+@RestController
+@RequestMapping("/scene/tSceneIcon")
+public class SceneIconController {
+
+}
+

+ 6 - 0
src/main/java/com/fdkankan/scene/entity/SceneEditInfo.java

@@ -216,5 +216,11 @@ public class SceneEditInfo implements Serializable {
     @TableField("title_logo_file")
     private String titleLogoFile;
 
+    /**
+     * 是否有痕迹物证数据(0-否,1-是)
+     */
+    @TableField("evidence")
+    private Byte evidence;
+
 
 }

+ 67 - 0
src/main/java/com/fdkankan/scene/entity/SceneEvidence.java

@@ -0,0 +1,67 @@
+package com.fdkankan.scene.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 痕迹物证表
+ * </p>
+ *
+ * @author 
+ * @since 2025-08-08
+ */
+@Getter
+@Setter
+@TableName("t_scene_evidence")
+public class SceneEvidence implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 场景码
+     */
+    @TableField("num")
+    private String num;
+
+    /**
+     * sid
+     */
+    @TableField("sid")
+    private String sid;
+
+    /**
+     * 痕迹物证信息
+     */
+    @TableField(value = "evidence_content", typeHandler = JacksonTypeHandler.class)
+    private JSONObject evidenceContent;
+
+    /**
+     * 创建时间
+     */
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    @TableField("update_time")
+    private Date updateTime;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A", delval = "I")
+    private String recStatus;
+
+
+}

+ 63 - 0
src/main/java/com/fdkankan/scene/entity/SceneIcon.java

@@ -0,0 +1,63 @@
+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.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 图标
+ * </p>
+ *
+ * @author 
+ * @since 2025-08-12
+ */
+@Getter
+@Setter
+@TableName("t_scene_icon")
+public class SceneIcon implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 场景码
+     */
+    @TableField("num")
+    private String num;
+
+    /**
+     * sid
+     */
+    @TableField("sid")
+    private String sid;
+
+    /**
+     * 文件名
+     */
+    @TableField("file_name")
+    private String fileName;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A", delval = "I")
+    private String recStatus;
+
+    @TableField("biz_type")
+    private String bizType;
+
+
+}

+ 1 - 1
src/main/java/com/fdkankan/scene/generate/AutoGenerate.java

@@ -18,7 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir");
 
         generate(path,"scene", getTables(new String[]{
-                "t_scene_evidence"
+                "t_scene_icon"
         }));
 
 //        generate(path,"goods", getTables(new String[]{

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

@@ -0,0 +1,18 @@
+package com.fdkankan.scene.mapper;
+
+import com.fdkankan.scene.entity.SceneEvidence;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 痕迹物证表 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2025-08-08
+ */
+@Mapper
+public interface ISceneEvidenceMapper extends BaseMapper<SceneEvidence> {
+
+}

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

@@ -0,0 +1,18 @@
+package com.fdkankan.scene.mapper;
+
+import com.fdkankan.scene.entity.SceneIcon;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 图标 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2025-08-12
+ */
+@Mapper
+public interface ISceneIconMapper extends BaseMapper<SceneIcon> {
+
+}

+ 34 - 0
src/main/java/com/fdkankan/scene/service/ISceneEvidenceService.java

@@ -0,0 +1,34 @@
+package com.fdkankan.scene.service;
+
+import com.fdkankan.scene.entity.SceneEditInfo;
+import com.fdkankan.scene.entity.SceneEvidence;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.scene.vo.DeleteSidListParamVO;
+import com.fdkankan.scene.vo.SaveEvidenceParamVO;
+import com.fdkankan.web.response.ResultData;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <p>
+ * 痕迹物证表 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2025-08-08
+ */
+public interface ISceneEvidenceService extends IService<SceneEvidence> {
+
+    void saveEvidence(SaveEvidenceParamVO param) throws Exception;
+
+    void saveEvidenceToSceneEditInfo(String num, SceneEditInfo sceneEditInfo);
+
+    List<SceneEvidence> listByNumAndSids(String num, Set<String> sids);
+
+    List<SceneEvidence> listByNum(String num);
+
+    void deleteEvidence(DeleteSidListParamVO param);
+
+    ResultData listEvidences(String num);
+}

+ 22 - 0
src/main/java/com/fdkankan/scene/service/ISceneIconService.java

@@ -0,0 +1,22 @@
+package com.fdkankan.scene.service;
+
+import com.fdkankan.scene.entity.SceneIcon;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <p>
+ * 图标 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2025-08-12
+ */
+public interface ISceneIconService extends IService<SceneIcon> {
+
+    List<SceneIcon> listByNumAndSids(String num, Set<String> sids);
+
+
+}

+ 148 - 0
src/main/java/com/fdkankan/scene/service/impl/SceneEvidenceServiceImpl.java

@@ -0,0 +1,148 @@
+package com.fdkankan.scene.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.common.constant.CommonStatus;
+import com.fdkankan.common.constant.ErrorCode;
+import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.redis.constant.RedisKey;
+import com.fdkankan.scene.entity.*;
+import com.fdkankan.scene.mapper.ISceneEvidenceMapper;
+import com.fdkankan.scene.service.ISceneEditInfoService;
+import com.fdkankan.scene.service.ISceneEvidenceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.scene.service.ISceneIconService;
+import com.fdkankan.scene.service.IScenePlusService;
+import com.fdkankan.scene.vo.DeleteSidListParamVO;
+import com.fdkankan.scene.vo.EvidenceParamVO;
+import com.fdkankan.scene.vo.HotParamVO;
+import com.fdkankan.scene.vo.SaveEvidenceParamVO;
+import com.fdkankan.web.response.ResultData;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 痕迹物证表 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2025-08-08
+ */
+@Service
+public class SceneEvidenceServiceImpl extends ServiceImpl<ISceneEvidenceMapper, SceneEvidence> implements ISceneEvidenceService {
+
+    @Autowired
+    private IScenePlusService scenePlusService;
+    @Autowired
+    private ISceneEditInfoService sceneEditInfoService;
+    @Autowired
+    private ISceneIconService sceneIconService;
+
+    @Override
+    public void saveEvidence(SaveEvidenceParamVO param) throws Exception {
+
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
+        if (scenePlus == null)
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+
+        this.addOrUpdateData(param.getNum(), param.getDataList());
+
+        this.addOrUpdateIcons(param.getNum(), param.getIcons());
+
+        //保存数据库
+        SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
+        this.saveEvidenceToSceneEditInfo(param.getNum(), sceneEditInfo);
+        sceneEditInfoService.updateById(sceneEditInfo);
+    }
+
+    private void addOrUpdateData(String num, List<EvidenceParamVO> dataList) throws Exception{
+        Set<String> sidList = dataList.stream().map(v->v.getSid()).collect(Collectors.toSet());
+        List<SceneEvidence> sceneEvidences = this.listByNumAndSids(num, sidList);
+        Map<String, SceneEvidence> dbMap = new HashMap<>();
+        if(CollUtil.isNotEmpty(sceneEvidences)){
+            dbMap = sceneEvidences.stream().collect(Collectors.toMap(v -> v.getSid(), v -> v));
+        }
+        Map<String, SceneEvidence> finalDbMap = dbMap;
+        List<SceneEvidence> collect = dataList.stream().map(v -> {
+            SceneEvidence sceneEvidence = finalDbMap.get(v.getSid());
+            if (Objects.isNull(sceneEvidence)) {
+                sceneEvidence = new SceneEvidence();
+                sceneEvidence.setNum(num);
+                sceneEvidence.setSid(v.getSid());
+            }
+            sceneEvidence.setUpdateTime(null);
+            sceneEvidence.setEvidenceContent(v.getData());
+            return sceneEvidence;
+        }).collect(Collectors.toList());
+        this.saveOrUpdateBatch(collect);
+    }
+
+    private void addOrUpdateIcons(String num, List<String> icons) throws Exception{
+        if(CollUtil.isEmpty(icons)){
+            return;
+        }
+        List<SceneIcon> sceneIconList = icons.stream().map(v -> {
+            String sid = v.split(".")[0];
+            SceneIcon sceneIcon = new SceneIcon();
+            sceneIcon.setNum(num);
+            sceneIcon.setSid(sid);
+            sceneIcon.setFileName(v);
+            sceneIcon.setBizType("evidence");
+            return sceneIcon;
+        }).collect(Collectors.toList());
+        sceneIconService.saveBatch(sceneIconList);
+    }
+
+    @Override
+    public void saveEvidenceToSceneEditInfo(String num, SceneEditInfo sceneEditInfo){
+        long count = this.count(new LambdaQueryWrapper<SceneEvidence>().eq(SceneEvidence::getNum, num));
+        sceneEditInfo.setEvidence(count > 0 ? CommonStatus.YES.code() : CommonStatus.NO.code());
+        sceneEditInfo.setVersion(sceneEditInfo.getVersion() + 1);
+    }
+
+    @Override
+    public List<SceneEvidence> listByNumAndSids(String num, Set<String> sids) {
+        return this.list(new LambdaQueryWrapper<SceneEvidence>().eq(SceneEvidence::getNum, num).in(SceneEvidence::getSid, sids));
+    }
+
+    @Override
+    public List<SceneEvidence> listByNum(String num) {
+        return this.list(new LambdaQueryWrapper<SceneEvidence>().eq(SceneEvidence::getNum, num).orderByDesc(SceneEvidence::getUpdateTime));
+    }
+
+    @Override
+    public void deleteEvidence(DeleteSidListParamVO param) {
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
+        if (scenePlus == null)
+            throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
+
+        //处理删除状态数据
+//        this.deleteHotData(param.getNum(), deleteSidList, bucket);
+        this.remove(new LambdaQueryWrapper<SceneEvidence>().eq(SceneEvidence::getNum, param.getNum()).in(SceneEvidence::getSid, param.getSidList()));
+
+//        //删除导览中的热点数据
+//        this.deleteHotDataFromTourJson(param.getNum(), param.getSidList(), bucket);
+
+        //保存数据库
+        SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
+        sceneEditInfoService.saveTagsToSceneEditInfo(param.getNum(), sceneEditInfo);
+        sceneEditInfoService.updateById(sceneEditInfo);
+    }
+
+    @Override
+    public ResultData listEvidences(String num) {
+        JSONObject result = new JSONObject();
+        List<SceneEvidence> sceneEvidences = this.listByNum(num);
+        List<JSONObject> evidenceContent = sceneEvidences.stream().map(v -> v.getEvidenceContent()).collect(Collectors.toList());
+
+
+        return null;
+    }
+}

+ 30 - 0
src/main/java/com/fdkankan/scene/service/impl/SceneIconServiceImpl.java

@@ -0,0 +1,30 @@
+package com.fdkankan.scene.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.scene.entity.SceneIcon;
+import com.fdkankan.scene.mapper.ISceneIconMapper;
+import com.fdkankan.scene.service.ISceneIconService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <p>
+ * 图标 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2025-08-12
+ */
+@Service
+public class SceneIconServiceImpl extends ServiceImpl<ISceneIconMapper, SceneIcon> implements ISceneIconService {
+
+
+    @Override
+    public List<SceneIcon> listByNumAndSids(String num, Set<String> sids) {
+        return this.list(new LambdaQueryWrapper<SceneIcon>().eq(SceneIcon::getNum, num).in(SceneIcon::getSid, sids));
+    }
+}

+ 5 - 0
src/main/resources/mapper/scene/ISceneEvidenceMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.scene.mapper.ISceneEvidenceMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper/scene/ISceneIconMapper.xml

@@ -0,0 +1,5 @@
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<?xml version="1.0" encoding="UTF-8"?>
+<mapper namespace="com.fdkankan.scene.mapper.ISceneIconMapper">
+
+</mapper>