lyhzzz 1 周之前
父節點
當前提交
20e2a21d1a

+ 9 - 0
README.md

@@ -66,4 +66,13 @@ fd_fusion_xj-init.sql
 ~~~~
 1.同步江门媒体库
 2.同步动画模块
+~~~~
+
+
+###**v2.0.1-上海**
+~~~~
+1. 案件设置-添加定位模型名称  
+    /fuison/caseSettings/saveOrUpdate  添加参数locationModelName  模型名称
+
+
 ~~~~

+ 41 - 0
src/main/java/com/fdkankan/fusion/controller/CaseDeviceController.java

@@ -0,0 +1,41 @@
+package com.fdkankan.fusion.controller;
+
+
+import com.fdkankan.fusion.common.ResultCode;
+import com.fdkankan.fusion.common.ResultData;
+import com.fdkankan.fusion.entity.CaseDevice;
+import com.fdkankan.fusion.exception.BusinessException;
+import com.fdkankan.fusion.mapper.ICaseDeviceMapper;
+import com.fdkankan.fusion.service.ICaseDeviceService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2025-08-21
+ */
+@RestController
+@RequestMapping("/caseDevice")
+public class CaseDeviceController {
+
+    @Autowired
+    ICaseDeviceService deviceService;
+
+    @GetMapping("/list")
+    public ResultData list(@RequestParam(required = false) Integer caseId){
+        return ResultData.ok(deviceService.getByCaseId(caseId));
+    }
+
+    @PostMapping("/update")
+    public ResultData update(@RequestBody CaseDevice param){
+
+        deviceService.addOrUpdate(param);
+        return ResultData.ok();
+    }
+}
+

+ 59 - 0
src/main/java/com/fdkankan/fusion/entity/CaseDevice.java

@@ -0,0 +1,59 @@
+package com.fdkankan.fusion.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 java.util.List;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2025-08-21
+ */
+@Getter
+@Setter
+@TableName("t_case_device")
+public class CaseDevice implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("mac_id")
+    private String macId;
+
+    @TableField("device_name")
+    private String deviceName;
+
+    @TableField("character_model_id")
+    private Integer characterModelId;
+
+    @TableField("is_show_trace")
+    private Integer isShowTrace;
+
+    @TableField("case_id")
+    private Integer caseId;
+
+    @TableField("tb_status")
+    @TableLogic
+    private Integer tbStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 3 - 0
src/main/java/com/fdkankan/fusion/entity/CaseSettings.java

@@ -93,4 +93,7 @@ public class CaseSettings implements Serializable {
 
     @TableField(exist = false)
     private MapConfig mapConfig;
+
+    @TableField(value = "location_model_name",updateStrategy  = FieldStrategy.IGNORED)
+    private String locationModelName;
 }

+ 4 - 0
src/main/java/com/fdkankan/fusion/entity/DictFile.java

@@ -58,4 +58,8 @@ public class DictFile implements Serializable {
 
     @TableField("down_url")
     private String downUrl;
+
+    //0女,1男,2消防员
+    @TableField("use_device")
+    private Integer useDevice;
 }

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

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

+ 12 - 7
src/main/java/com/fdkankan/fusion/httpClient/client/FdKKClient.java

@@ -3,15 +3,11 @@ package com.fdkankan.fusion.httpClient.client;
 import com.alibaba.fastjson.JSONObject;
 import com.dtflys.forest.annotation.*;
 import com.fdkankan.fusion.common.PageInfo;
+import com.fdkankan.fusion.common.ResultData;
 import com.fdkankan.fusion.httpClient.SignInterceptor;
 import com.fdkankan.fusion.httpClient.address.FdkkAddressSource;
-import com.fdkankan.fusion.httpClient.request.FdRoomAddParam;
-import com.fdkankan.fusion.httpClient.request.FdkkCameraParam;
-import com.fdkankan.fusion.httpClient.request.FdkkDelNumParam;
-import com.fdkankan.fusion.httpClient.request.FdkkLoginRequest;
-import com.fdkankan.fusion.httpClient.response.FdRoomVo;
-import com.fdkankan.fusion.httpClient.response.FdkkLoginVo;
-import com.fdkankan.fusion.httpClient.response.FdkkResponse;
+import com.fdkankan.fusion.httpClient.request.*;
+import com.fdkankan.fusion.httpClient.response.*;
 import com.fdkankan.fusion.request.ScenePram;
 import com.fdkankan.fusion.response.CameraVo;
 
@@ -106,4 +102,13 @@ public interface FdKKClient {
 
     @Get("/service/manage/inner/copyScene")
     JSONObject copyScene( @Query HashMap<String, Object> param ,@Header("sign") Long sign);
+
+    @Post(value = "/openDevice/device/getByModelName",interceptor = SignInterceptor.class)
+    ResultData<List<FdModelDeviceVo>> getByModelName(@JSONBody FdModelParam param);
+
+    @Post(value = "/openDevice/realtimedata/getByModelNameAndTime",interceptor = SignInterceptor.class)
+    ResultData<List<FdModelDeviceVo>> getByModelNameAndTime(@JSONBody FdModelTimeParam param);
+
+    @Post(value = "/openDevice/realtimedata/getByMacAndModelName",interceptor = SignInterceptor.class)
+    ResultData<List<FdModelDeviceLocationVo>> getByMacAndModelName(@JSONBody FdModelParam param);
 }

+ 16 - 0
src/main/java/com/fdkankan/fusion/httpClient/request/FdModelParam.java

@@ -0,0 +1,16 @@
+package com.fdkankan.fusion.httpClient.request;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class FdModelParam {
+    private String modelName;
+    private String macId;
+    private Integer limit;
+}

+ 13 - 0
src/main/java/com/fdkankan/fusion/httpClient/request/FdModelTimeParam.java

@@ -0,0 +1,13 @@
+package com.fdkankan.fusion.httpClient.request;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class FdModelTimeParam {
+    private String modelName;
+    private List<String> macId;
+    private String startTime;
+    private String endTime;
+}

+ 11 - 0
src/main/java/com/fdkankan/fusion/httpClient/response/FdModelDeviceLocationVo.java

@@ -0,0 +1,11 @@
+package com.fdkankan.fusion.httpClient.response;
+
+import lombok.Data;
+
+@Data
+public class FdModelDeviceLocationVo {
+    private String lng;
+    private String lat;
+    private String height;
+    private String time;
+}

+ 22 - 0
src/main/java/com/fdkankan/fusion/httpClient/response/FdModelDeviceVo.java

@@ -0,0 +1,22 @@
+package com.fdkankan.fusion.httpClient.response;
+
+import com.fdkankan.fusion.response.DictFileVo;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class FdModelDeviceVo {
+
+    private Integer id;
+    private String macId;
+    private String deviceName;
+    private String modelName;
+    private String createTime;
+    private String updateTime;
+    private String recStatus;
+    private List<DictFileVo> characterModelList;
+    private List<FdModelDeviceLocationVo> locationList;
+
+
+}

+ 18 - 0
src/main/java/com/fdkankan/fusion/mapper/ICaseDeviceMapper.java

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

+ 22 - 0
src/main/java/com/fdkankan/fusion/service/ICaseDeviceService.java

@@ -0,0 +1,22 @@
+package com.fdkankan.fusion.service;
+
+import com.fdkankan.fusion.entity.CaseDevice;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.fusion.httpClient.response.FdModelDeviceVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2025-08-21
+ */
+public interface ICaseDeviceService extends IService<CaseDevice> {
+
+    List<FdModelDeviceVo> getByCaseId(Integer caseId);
+
+    void addOrUpdate(CaseDevice param);
+}

+ 5 - 0
src/main/java/com/fdkankan/fusion/service/IDictFileService.java

@@ -3,6 +3,9 @@ package com.fdkankan.fusion.service;
 import com.fdkankan.fusion.entity.DictFile;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.fusion.request.DictFileParam;
+import com.fdkankan.fusion.response.DictFileVo;
+
+import java.util.List;
 
 /**
  * <p>
@@ -23,4 +26,6 @@ public interface IDictFileService extends IService<DictFile> {
     void updateDictId(Integer dictId, Integer UpDictId);
 
     void setDownUrl(Integer dictFileId, String downUrl, Integer type);
+
+    List<DictFileVo> getUseDevice();
 }

+ 115 - 0
src/main/java/com/fdkankan/fusion/service/impl/CaseDeviceServiceImpl.java

@@ -0,0 +1,115 @@
+package com.fdkankan.fusion.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.fusion.common.ResultCode;
+import com.fdkankan.fusion.common.ResultData;
+import com.fdkankan.fusion.entity.CaseDevice;
+import com.fdkankan.fusion.entity.CaseSettings;
+import com.fdkankan.fusion.entity.DictFile;
+import com.fdkankan.fusion.exception.BusinessException;
+import com.fdkankan.fusion.httpClient.client.FdKKClient;
+import com.fdkankan.fusion.httpClient.request.FdModelParam;
+import com.fdkankan.fusion.httpClient.response.FdModelDeviceLocationVo;
+import com.fdkankan.fusion.httpClient.response.FdModelDeviceVo;
+import com.fdkankan.fusion.mapper.ICaseDeviceMapper;
+import com.fdkankan.fusion.response.DictFileVo;
+import com.fdkankan.fusion.service.ICaseDeviceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.fusion.service.ICaseService;
+import com.fdkankan.fusion.service.ICaseSettingsService;
+import com.fdkankan.fusion.service.IDictFileService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2025-08-21
+ */
+@Service
+public class CaseDeviceServiceImpl extends ServiceImpl<ICaseDeviceMapper, CaseDevice> implements ICaseDeviceService {
+
+    @Autowired
+    FdKKClient fdKKClient;
+
+    @Autowired
+    ICaseSettingsService caseSettingsService;
+    @Autowired
+    IDictFileService dictFileService;
+
+
+    @Override
+    public  List<FdModelDeviceVo> getByCaseId(Integer caseId) {
+        if(caseId == null){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        List<CaseSettings> caseSettings = caseSettingsService.getByCaseId(caseId);
+        if(caseSettings.isEmpty()){
+            return new ArrayList<>();
+        }
+        CaseSettings caseSettings1 = caseSettings.get(0);
+        if(StringUtils.isBlank(caseSettings1.getLocationModelName())){
+            return new ArrayList<>();
+        }
+        ResultData<List<FdModelDeviceVo>> resultData = fdKKClient.getByModelName(new FdModelParam(caseSettings1.getLocationModelName(), null, null));
+        List<FdModelDeviceVo> datas = resultData.getData();
+        List<String> macIds = datas.stream().map(FdModelDeviceVo::getMacId).collect(Collectors.toList());
+        HashMap<String, String> map = getNameByCaseAndMacId(caseId, macIds);
+        List<DictFileVo> list = dictFileService.getUseDevice();
+        Integer i = 1;
+        for (FdModelDeviceVo data : datas) {
+            data.setDeviceName(map.get(data.getMacId()) == null ? "设备"+i : map.get(data.getMacId()));
+            i ++;
+            data.setCharacterModelList(list);
+            ResultData<List<FdModelDeviceLocationVo>> resultData2 = fdKKClient.getByMacAndModelName(new FdModelParam(caseSettings1.getLocationModelName(), data.getMacId(), 10));
+            data.setLocationList(resultData2.getData());
+        }
+
+        return datas;
+    }
+
+    private  HashMap<String,String> getNameByCaseAndMacId(Integer caseId,List<String> macIds){
+        HashMap<String,String> map = new HashMap<>();
+        if(caseId == null || macIds == null || macIds.isEmpty()){
+            return map;
+        }
+
+        LambdaQueryWrapper<CaseDevice> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CaseDevice::getCaseId,caseId);
+        wrapper.in(CaseDevice::getMacId,macIds);
+        List<CaseDevice> list = this.list(wrapper);
+        list.forEach(e -> map.put(e.getMacId(),e.getDeviceName()));
+        return map;
+    }
+
+    @Override
+    public void addOrUpdate(CaseDevice param) {
+        if(param.getCaseId() == null || StringUtils.isBlank(param.getMacId())){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        LambdaQueryWrapper<CaseDevice> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CaseDevice::getCaseId,param.getCaseId());
+        wrapper.eq(CaseDevice::getMacId,param.getMacId());
+        List<CaseDevice> list = this.list(wrapper);
+        if(list == null || list.isEmpty()){
+            param.setId(null);
+            this.save(param);
+            return;
+        }
+        CaseDevice caseDevice = list.get(0);
+        param.setId(caseDevice.getId());
+        this.updateById(param);
+
+    }
+}

+ 35 - 0
src/main/java/com/fdkankan/fusion/service/impl/DictFileServiceImpl.java

@@ -2,10 +2,12 @@ package com.fdkankan.fusion.service.impl;
 
 
 import cn.dev33.satoken.stp.StpUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.fusion.common.PageInfo;
 import com.fdkankan.fusion.common.ResultCode;
+import com.fdkankan.fusion.entity.CommonUpload;
 import com.fdkankan.fusion.entity.DictFile;
 import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.mapper.IDictFileMapper;
@@ -16,9 +18,15 @@ import com.fdkankan.fusion.service.IDictFileService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.fusion.service.IDictService;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 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.stream.Collectors;
+
 /**
  * <p>
  *  服务实现类
@@ -90,4 +98,31 @@ public class DictFileServiceImpl extends ServiceImpl<IDictFileMapper, DictFile>
         }
         this.update(wrapper);
     }
+
+    @Override
+    public List<DictFileVo> getUseDevice() {
+        LambdaQueryWrapper<DictFile> wrapper = new LambdaQueryWrapper<>();
+        wrapper.isNotNull(DictFile::getUseDevice);
+        List<DictFile> list = this.list(wrapper);
+        if(list.isEmpty()){
+            return new ArrayList<>();
+        }
+        HashMap<Integer,CommonUpload> map = new HashMap<>();
+        List<Integer> uploadIds = list.stream().map(DictFile::getUploadId).collect(Collectors.toList());
+        List<CommonUpload> commonUploads = commonUploadService.listByIds(uploadIds);
+        commonUploads.forEach(e->map.put(e.getId(),e));
+
+        List<DictFileVo> dictFileVos = new ArrayList<>();
+        for (DictFile dictFile : list) {
+            CommonUpload commonUpload = map.get(dictFile.getUploadId());
+            if(commonUpload!=null){
+                DictFileVo dictFileVo = new DictFileVo();
+                BeanUtils.copyProperties(dictFileVo,commonUpload);
+                BeanUtils.copyProperties(dictFile,dictFileVo);
+                dictFileVos.add(dictFileVo);
+            }
+        }
+
+        return dictFileVos;
+    }
 }

+ 5 - 0
src/main/resources/mapper/fusion/CaseDeviceMapper.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.fusion.mapper.ICaseDeviceMapper">
+
+</mapper>