lyhzzz 4 месяцев назад
Родитель
Сommit
c16c304aeb
33 измененных файлов с 877 добавлено и 68 удалено
  1. 18 1
      doc/update-1.7.1.sql
  2. 3 3
      pom.xml
  3. 13 0
      src/main/java/com/fdkankan/fusion/aop/PushJm.java
  4. 132 0
      src/main/java/com/fdkankan/fusion/aop/PushJmAspect.java
  5. 129 0
      src/main/java/com/fdkankan/fusion/common/ai/BBoxHierarchy.java
  6. 203 0
      src/main/java/com/fdkankan/fusion/common/ai/FloorUser.java
  7. 118 0
      src/main/java/com/fdkankan/fusion/common/ai/test.java
  8. 3 3
      src/main/java/com/fdkankan/fusion/common/util/Openai.java
  9. 4 1
      src/main/java/com/fdkankan/fusion/config/FusionConfig.java
  10. 5 22
      src/main/java/com/fdkankan/fusion/controller/AiController.java
  11. 3 0
      src/main/java/com/fdkankan/fusion/controller/CaseAnimationController.java
  12. 4 0
      src/main/java/com/fdkankan/fusion/controller/CaseController.java
  13. 2 0
      src/main/java/com/fdkankan/fusion/controller/CaseExtractDetailController.java
  14. 3 0
      src/main/java/com/fdkankan/fusion/controller/CaseFilesController.java
  15. 4 0
      src/main/java/com/fdkankan/fusion/controller/CaseFusionController.java
  16. 5 0
      src/main/java/com/fdkankan/fusion/controller/CaseImgController.java
  17. 2 0
      src/main/java/com/fdkankan/fusion/controller/CaseImgTagController.java
  18. 2 0
      src/main/java/com/fdkankan/fusion/controller/CaseInquestCriminalController.java
  19. 2 0
      src/main/java/com/fdkankan/fusion/controller/CaseInquestInfoController.java
  20. 3 0
      src/main/java/com/fdkankan/fusion/controller/CasePathController.java
  21. 2 0
      src/main/java/com/fdkankan/fusion/controller/CaseSettingsController.java
  22. 3 0
      src/main/java/com/fdkankan/fusion/controller/CaseSettingsResourceController.java
  23. 3 0
      src/main/java/com/fdkankan/fusion/controller/CaseTagController.java
  24. 4 0
      src/main/java/com/fdkankan/fusion/controller/CaseTagPointController.java
  25. 58 0
      src/main/java/com/fdkankan/fusion/controller/InnerController.java
  26. 7 0
      src/main/java/com/fdkankan/fusion/controller/TestController.java
  27. 30 5
      src/main/java/com/fdkankan/fusion/down/CaseDownService.java
  28. 22 0
      src/main/java/com/fdkankan/fusion/httpClient/client/OtherClient.java
  29. 56 0
      src/main/java/com/fdkankan/fusion/mq/consumer/PushJMConsumer.java
  30. 28 0
      src/main/java/com/fdkankan/fusion/mq/vo/JmGaEventVo.java
  31. 0 31
      src/main/java/com/fdkankan/fusion/service/impl/CaseServiceImpl.java
  32. 3 1
      src/main/resources/bootstrap-dev.yml
  33. 3 1
      src/main/resources/bootstrap-test.yml

+ 18 - 1
doc/update-1.7.1.sql

@@ -42,4 +42,21 @@ ALTER TABLE `4dkankan_v4`.`t_dict_file`
 
 
 ALTER TABLE `fd_fusion`.`t_case_tag_point`
-    ADD COLUMN `pose` varchar(255) NULL AFTER `normal`;
+    ADD COLUMN `pose` varchar(255) NULL AFTER `normal`;
+
+ALTER TABLE `fd_fusion`.`t_case_tag_point`
+    MODIFY COLUMN `pose` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL AFTER `normal`;
+
+
+CREATE TABLE `jy_user_file` (
+                                `id` int NOT NULL AUTO_INCREMENT,
+                                `sys_user_id` int DEFAULT NULL,
+                                `file_url` varchar(255) DEFAULT NULL,
+                                `files_title` varchar(255) DEFAULT NULL,
+                                `img_type` int DEFAULT NULL,
+                                `content` text,
+                                `rec_status` varchar(255) DEFAULT 'A',
+                                `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+                                `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+                                PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

+ 3 - 3
pom.xml

@@ -98,9 +98,9 @@
         </dependency>
 
         <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-amqp</artifactId>
-            <version>2.3.12.RELEASE</version>
+            <groupId>com.fdkankan</groupId>
+            <artifactId>4dkankan-utils-rabbitmq</artifactId>
+            <version>3.0.0-SNAPSHOT</version>
         </dependency>
 
         <dependency>

+ 13 - 0
src/main/java/com/fdkankan/fusion/aop/PushJm.java

@@ -0,0 +1,13 @@
+package com.fdkankan.fusion.aop;
+
+import java.lang.annotation.*;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Target({ElementType.TYPE, ElementType.METHOD})
+public @interface PushJm {
+    String method() default "event";
+    String event_type() default "";
+    String event_content() default "";
+
+}

+ 132 - 0
src/main/java/com/fdkankan/fusion/aop/PushJmAspect.java

@@ -0,0 +1,132 @@
+package com.fdkankan.fusion.aop;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.http.ContentType;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.fusion.common.ResultData;
+import com.fdkankan.fusion.config.FusionConfig;
+import com.fdkankan.fusion.down.CaseDownService;
+import com.fdkankan.fusion.httpClient.client.OtherClient;
+import com.fdkankan.fusion.mq.vo.JmGaEventVo;
+import com.fdkankan.rabbitmq.util.RabbitMqProducer;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.After;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+@Aspect
+@Component
+public class PushJmAspect {
+
+	@Autowired
+	RabbitMqProducer rabbitMqProducer;
+	@Autowired
+	FusionConfig fusionConfig;
+	@Autowired
+	OtherClient otherClient;
+	@Autowired
+	CaseDownService caseDownService;
+
+
+	@Pointcut("@annotation(com.fdkankan.fusion.aop.PushJm)")
+	public void servicePush() {
+	}
+	@Around("servicePush()")
+	public Object servicePush(ProceedingJoinPoint joinPoint)  {
+		try {
+			HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+			//获取参数
+			JSONObject params = this.getParams(joinPoint, request);
+			log.info("请求参数:{}",params);
+			//放行
+			Object result = joinPoint.proceed();
+			ResultData resultData = (ResultData) result;
+			if(resultData.getCode() != 0){
+				return result;
+			}
+
+			MethodSignature signature = (MethodSignature)joinPoint.getSignature();
+			Method method = signature.getMethod();
+			PushJm methodAnnotation = method.getAnnotation(PushJm.class);
+
+			String method1 = methodAnnotation.method();
+			String event_type = methodAnnotation.event_type();
+			String event_content = methodAnnotation.event_content();
+
+			JmGaEventVo vo = new JmGaEventVo();
+			vo.setMethod(method1);
+			vo.setEvent_type(event_type);
+			if(org.apache.commons.lang3.StringUtils.isBlank(event_content)){
+				event_content = event_type;
+			}
+			vo.setEvent_content(event_content);
+
+
+			String ryid = "";
+			String platform_id = "";
+			String ajbh = params != null ? params.getString("caseId") : null;
+			vo.setRyid(ryid);
+			vo.setPlatform_id(platform_id);
+			vo.setAjbh(ajbh);
+
+			rabbitMqProducer.sendByWorkQueue("jmga-event-notice",BeanUtil.beanToMap(vo));
+
+			if(params != null && params.getInteger("caseId")!=null){
+				caseDownService.cleckDownUrl(params.getInteger("caseId"));
+			}
+
+			return result;
+		}catch (Exception e){
+			log.info("servicePush--error:{}",e);
+		}catch (Throwable throwable){
+			log.info("servicePush--error:{}",throwable);
+		}
+		return null;
+	}
+
+
+	private JSONObject getParams(JoinPoint pjp, HttpServletRequest request){
+		try {
+			MethodSignature signature = (MethodSignature) pjp.getSignature();
+			Method method = signature.getMethod();
+			Annotation[][] parameterAnnotations = method.getParameterAnnotations();
+			Object[] args = pjp.getArgs();
+
+			for (int i = 0; i < parameterAnnotations.length; i++) {
+				for (Annotation annotation : parameterAnnotations[i]) {
+					if (annotation instanceof RequestBody) {
+						log.info("请求体内容: " + args[i]);
+						Object arg = args[i];
+						String jsonString = JSONObject.toJSONString(arg);
+						return JSON.parseObject(jsonString);
+					}
+				}
+			}
+
+
+		}catch (Exception e){
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+}

+ 129 - 0
src/main/java/com/fdkankan/fusion/common/ai/BBoxHierarchy.java

@@ -0,0 +1,129 @@
+package com.fdkankan.fusion.common.ai;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+import java.util.ArrayList;
+import java.util.List;
+/**
+ * @author Xiewj
+ * @date 2025/4/15
+ */
+
+
+public class BBoxHierarchy {
+
+    // 定义一个类表示 bbox 和其他属性
+    static class Item {
+        int[] bbox; // [x, y, w, h]
+        String name;
+        String category;
+
+        public Item(int[] bbox, String name, String category) {
+            this.bbox = bbox;
+            this.name = name;
+            this.category = category;
+        }
+    }
+
+    // 判断 bbox1 是否包含 bbox2
+    public static boolean contains(int[] bbox1, int[] bbox2) {
+        int x1 = bbox1[0], y1 = bbox1[1], w1 = bbox1[2], h1 = bbox1[3];
+        int x2 = bbox2[0], y2 = bbox2[1], w2 = bbox2[2], h2 = bbox2[3];
+
+        // 计算 bbox1 的右下角坐标
+        int x1Max = x1 + w1;
+        int y1Max = y1 + h1;
+
+        // 计算 bbox2 的右下角坐标
+        int x2Max = x2 + w2;
+        int y2Max = y2 + h2;
+
+        // 判断 bbox2 是否完全在 bbox1 内部
+        return x1 <= x2 && y1 <= y2 && x1Max >= x2Max && y1Max >= y2Max;
+    }
+
+    // 构建父子层级关系
+    public static ObjectNode buildHierarchy(List<Item> items) {
+        ObjectMapper mapper = new ObjectMapper();
+        ObjectNode root = mapper.createObjectNode();
+        ArrayNode children = mapper.createArrayNode();
+
+        // 遍历每个 item,寻找其父节点
+        for (Item item : items) {
+            ObjectNode node = mapper.createObjectNode();
+            node.put("name", item.name);
+            node.put("category", item.category);
+            node.putArray("bbox").add(item.bbox[0]).add(item.bbox[1]).add(item.bbox[2]).add(item.bbox[3]);
+            node.set("children", mapper.createArrayNode());
+
+            boolean hasParent = false;
+
+            for (Item parent : items) {
+                if (!item.equals(parent) && contains(parent.bbox, item.bbox)) {
+                    // 如果找到父节点,将当前节点加入父节点的 children
+                    ((ArrayNode) findNode(children, parent).get("children")).add(node);
+                    hasParent = true;
+                    break;
+                }
+            }
+
+            if (!hasParent) {
+                // 如果没有父节点,直接加入根节点的 children
+                children.add(node);
+            }
+        }
+
+        root.set("children", children);
+        return root;
+    }
+
+    // 查找指定节点
+    private static ObjectNode findNode(ArrayNode nodes, Item target) {
+        for (int i = 0; i < nodes.size(); i++) {
+            ObjectNode node = (ObjectNode) nodes.get(i);
+            int[] bbox = new int[]{
+                    node.get("bbox").get(0).asInt(),
+                    node.get("bbox").get(1).asInt(),
+                    node.get("bbox").get(2).asInt(),
+                    node.get("bbox").get(3).asInt()
+            };
+
+            if (bbox[0] == target.bbox[0] && bbox[1] == target.bbox[1] &&
+                    bbox[2] == target.bbox[2] && bbox[3] == target.bbox[3]) {
+                return node;
+            }
+
+            ObjectNode found = findNode((ArrayNode) node.get("children"), target);
+            if (found != null) {
+                return found;
+            }
+        }
+        return null;
+    }
+
+    public static void main(String[] args) throws Exception {
+        // 输入数据
+        List<Item> items = new ArrayList<>();
+        items.add(new Item(new int[]{399, 370, 549, 503}, "卧室", "Tag_bedroom"));
+        items.add(new Item(new int[]{184, 221, 307, 275}, "组合沙发", "CombinationSofa"));
+        items.add(new Item(new int[]{132, 169, 190, 218}, "组合沙发", "CombinationSofa"));
+        items.add(new Item(new int[]{156, 423, 364, 588}, "卧室", "Tag_bedroom"));
+        items.add(new Item(new int[]{452, 390, 528, 503}, "双人床", "DoubleBed"));
+        items.add(new Item(new int[]{408, 204, 464, 242}, "书桌", "Desk"));
+        items.add(new Item(new int[]{296, 171, 320, 195}, "椅子", "Chair"));
+        items.add(new Item(new int[]{70, 104, 619, 279}, "客厅", "Tag_livingroom"));
+        items.add(new Item(new int[]{499, 197, 633, 309}, "厨房", "Tag_kitchenroom"));
+        items.add(new Item(new int[]{411, 181, 447, 203}, "椅子", "Chair"));
+        items.add(new Item(new int[]{206, 467, 300, 537}, "双人床", "DoubleBed"));
+        items.add(new Item(new int[]{534, 517, 543, 553}, "窗户", "Window"));
+        items.add(new Item(new int[]{76, 107, 84, 302}, "窗户", "Window"));
+
+        // 构建层级关系
+        ObjectNode hierarchy = buildHierarchy(items);
+
+        // 输出结果
+        ObjectMapper mapper = new ObjectMapper();
+        System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(hierarchy));
+    }
+}

+ 203 - 0
src/main/java/com/fdkankan/fusion/common/ai/FloorUser.java

@@ -0,0 +1,203 @@
+package com.fdkankan.fusion.common.ai;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Xiewj
+ * @date 2025/4/15
+ */
+class FloorUser {
+    private List<Floor> floors;
+    private Integer compass;
+
+    // Getters and setters
+    public List<Floor> getFloors() {
+        return floors;
+    }
+
+    public void setFloors(List<Floor> floors) {
+        this.floors = floors;
+    }
+
+    public Integer getCompass() {
+        return compass;
+    }
+
+    public void setCompass(Integer compass) {
+        this.compass = compass;
+    }
+}
+
+class Floor {
+    private String name;
+    private Map<String, Tag> tags;
+    private Map<String, Furniture> furnitures;
+
+    // Getters and setters
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Map<String, Tag> getTags() {
+        return tags;
+    }
+
+    public void setTags(Map<String, Tag> tags) {
+        this.tags = tags;
+    }
+
+    public Map<String, Furniture> getFurnitures() {
+        return furnitures;
+    }
+
+    public void setFurnitures(Map<String, Furniture> furnitures) {
+        this.furnitures = furnitures;
+    }
+}
+
+class Tag {
+    private String bbox;
+    private String title;
+    private String geoType;
+
+    // Getters and setters
+    public String getBbox() {
+        return bbox;
+    }
+
+    public void setBbox(String bbox) {
+        this.bbox = bbox;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getGeoType() {
+        return geoType;
+    }
+
+    public void setGeoType(String geoType) {
+        this.geoType = geoType;
+    }
+}
+
+class Furniture {
+    private String bbox;
+    private String title;
+    private String geoType;
+
+    // Getters and setters
+    public String getBbox() {
+        return bbox;
+    }
+
+    public void setBbox(String bbox) {
+        this.bbox = bbox;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getGeoType() {
+        return geoType;
+    }
+
+    public void setGeoType(String geoType) {
+        this.geoType = geoType;
+    }
+}
+
+class Compass {
+    // Define the properties and methods of Compass
+}
+
+class Child {
+    private String bbox;
+    private String name;
+    private String category;
+
+    // Getters and setters
+    public String getBbox() {
+        return bbox;
+    }
+
+    public void setBbox(String bbox) {
+        this.bbox = bbox;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getCategory() {
+        return category;
+    }
+
+    public void setCategory(String category) {
+        this.category = category;
+    }
+
+    public Child( ) {
+    }
+
+    public Child(String bbox, String name, String category) {
+        this.bbox = bbox;
+        this.name = name;
+        this.category = category;
+    }
+    public Child(String bbox, String name) {
+        this.bbox = bbox;
+        this.name = name;
+        this.category = category;
+    }
+}
+
+class Result {
+    private List<Child> childrens;
+    private Integer compass;
+    private String floorname;
+
+    // Getters and setters
+    public List<Child> getChildrens() {
+        return childrens;
+    }
+
+    public void setChildrens(List<Child> childrens) {
+        this.childrens = childrens;
+    }
+
+    public Integer getCompass() {
+        return compass;
+    }
+
+    public void setCompass(Integer compass) {
+        this.compass = compass;
+    }
+
+    public String getFloorname() {
+        return floorname;
+    }
+
+    public void setFloorname(String floorname) {
+        this.floorname = floorname;
+    }
+}

+ 118 - 0
src/main/java/com/fdkankan/fusion/common/ai/test.java

@@ -0,0 +1,118 @@
+package com.fdkankan.fusion.common.ai;
+
+import cn.hutool.core.io.FileUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @author Xiewj
+ * @date 2025/4/15
+ */
+public class test {
+    public static void main(String[] args) throws IOException {
+        // 假设从某个地方获取 FloorUser 对象
+        FloorUser cad = getFloorUserFromJson("C:\\Users\\Admin\\Downloads\\floorplan1.json");
+
+        // 处理 cad.floors 数组,生成新的数组 res
+        List<Result> res = cad.getFloors().stream().map(floor -> {
+            // 初始化 childrens 数组,用于存储楼层中的子元素
+            List<Child> childrens = new ArrayList<>();
+
+            // 获取楼层的标签对象,如果不存在则使用空对象
+            Map<String, Tag> tag = floor.getTags() != null ? floor.getTags() : new HashMap<>();
+
+            // 获取楼层的家具对象,如果不存在则使用空对象
+            Map<String, Furniture> fur = floor.getFurnitures() != null ? floor.getFurnitures() : new HashMap<>();
+
+            // 遍历标签对象,将每个标签转换为 childrens 数组中的对象
+            for (Map.Entry<String, Tag> entry : tag.entrySet()) {
+                Tag item = entry.getValue();
+                childrens.add(new Child(item.getBbox(), item.getTitle(),item.getGeoType()));
+            }
+
+            // 遍历家具对象,将每个家具转换为 childrens 数组中的对象
+            for (Map.Entry<String, Furniture> entry : fur.entrySet()) {
+                Furniture item = entry.getValue();
+                childrens.add(new Child(item.getBbox(), item.getTitle(), item.getGeoType()));
+            }
+
+            // 返回处理后的楼层对象,包含 childrens 数组、指南针信息和楼层名称
+            Result result = new Result();
+            result.setChildrens(childrens);
+            result.setCompass(cad.getCompass());
+            result.setFloorname(floor.getName());
+            return result;
+        }).collect(Collectors.toList());
+
+        // 打印结果
+        System.out.println(JSONObject.toJSONString(res));
+    }
+
+    // 从 JSON 文件中读取 FloorUser 对象
+    private static FloorUser getFloorUserFromJson(String filePath) throws IOException {
+        String s = FileUtil.readUtf8String(filePath);
+        JSONObject jsonObject = JSON.parseObject(s);
+        FloorUser floorUser =  new FloorUser();
+        if (jsonObject.containsKey("floors")) {
+            JSONArray array = jsonObject.getJSONArray("floors");
+            List<Floor> floors=new ArrayList<>();
+            for (Object o : array) {
+                JSONObject a = JSON.parseObject(JSONObject.toJSON(o).toString());
+                Floor floor = JSONObject.toJavaObject(a, Floor.class);
+                System.out.println(floor);
+                floors.add(floor);
+            }
+            floorUser.setFloors(floors);
+        }
+        if (jsonObject.containsKey("compass")) {
+            System.out.println(jsonObject.getString("compass"));
+            floorUser.setCompass(jsonObject.getInteger("compass"));
+        }
+
+        return  floorUser;
+    }
+
+    // 模拟从 SDK 获取 FloorUser 对象,
+    //
+//    private static FloorUser getFloorUserFromSdk() {
+//        FloorUser cad = new FloorUser();
+//        cad.setCompass(new Compass());
+//
+//        List<Floor> floors = new ArrayList<>();
+//        Floor floor = new Floor();
+//        floor.setName("Floor 1");
+//
+//        Map<String, Tag> tags = new HashMap<>();
+//        Tag tag = new Tag();
+//        tag.setBbox("bbox1");
+//        tag.setTitle("Title1");
+//        tag.setGeoType("GeoType1");
+//        tags.put("tag1", tag);
+//
+//        Map<String, Furniture> furnitures = new HashMap<>();
+//        Furniture fur = new Furniture();
+//        fur.setBbox("bbox2");
+//        fur.setTitle("Title2");
+//        fur.setGeoType("GeoType2");
+//        furnitures.put("fur1", fur);
+//
+//        floor.setTags(tags);
+//        floor.setFurnitures(furnitures);
+//        floors.add(floor);
+//
+//        cad.setFloors(floors);
+//        return cad;
+//    }
+}

+ 3 - 3
src/main/java/com/fdkankan/fusion/common/util/Openai.java

@@ -19,7 +19,7 @@ import java.util.List;
 public class Openai {
     public static void main(String[] args) throws IOException {
 //        gptVision("https://4dkankan.oss-cn-shenzhen.aliyuncs.com/images/imagesg5LNCydH6k/pan/high/7c84b1610aec4ee6095f1fa76ad6236c.png","http://192.168.9.61:30000/v1/");
-        String s = gptVision("https://4dkankan.oss-cn-shenzhen.aliyuncs.com/images/imagesg5LNCydH6k/pan/high/7c84b1610aec4ee6095f1fa76ad6236c.png", "http://192.168.9.61:30000/v1/", null);
+        String s = gptVision("http://192.168.0.25/oss/scene_view_data/SG-jm-2SQcWqY4W0X/user/cad-style-3-0.jpg", "http://192.168.9.61:30000/v1/", null);
         System.out.println(s);
 
     }
@@ -30,8 +30,8 @@ public class Openai {
         if(StringUtils.isBlank(text)){
             text = "任务指令:根据提供的户型图,识别并描述其结构及房间详情。请按照上北、下南、左西、右东的方向进行定位。\n" +
                     "\n" +
-                    "输出格式要求:\n" +
-                    "不能使用Markdown(MD)格式。\n" +
+//                    "输出格式要求:\n" +
+//                    "不能使用Markdown(MD)格式。\n" +
                     "结构清晰,易于理解。\n" +
                     "请遵循以下具体步骤:\n" +
                     "\n" +

+ 4 - 1
src/main/java/com/fdkankan/fusion/config/FusionConfig.java

@@ -10,6 +10,9 @@ import org.springframework.context.annotation.Configuration;
 @Data
 public class FusionConfig {
 
-    @Value("${fusion.ai-url}")
+    @Value("${fusion.ai-url:http://192.168.9.61:30000/v1/}")
     private String aiUrl;
+
+    @Value("${fusion.push-jm.url:http://123.com}")
+    private String pushJmUrl;
 }

+ 5 - 22
src/main/java/com/fdkankan/fusion/controller/AiController.java

@@ -72,6 +72,11 @@ public class AiController {
             if(caseNumEntity.getNumType() == 3){
                 continue;
             }
+
+            if(pathVos.stream().anyMatch(e -> e.getNum().equals(caseNumEntity.getNum()))){
+                continue;
+            };
+
             FloorPathVo pathVo = new FloorPathVo();
             pathVo.setNum(caseNumEntity.getNum());
             String path = String.format(foorPath, caseNumEntity.getNum());
@@ -91,27 +96,5 @@ public class AiController {
         return ResultData.ok(pathVos);
     }
 
-//    @Autowired
-//    ICaseFilesService caseFilesService;
-//    @Autowired
-//    ICaseFilesTypeService caseFilesTypeService;
-//
-//    @GetMapping("/getFloor/{caseId}")
-//    public ResultData getFloor(@PathVariable Integer caseId){
-//        List<FloorPathVo> pathVos = new ArrayList<>();
-//        CaseFilesType caseFilesType = caseFilesTypeService.getByName("平面图");
-//        if(caseFilesType == null){
-//            return ResultData.ok(pathVos);
-//        }
-//        List<CaseFiles> list = caseFilesService.getByCaseIdAndTypeId(caseId,caseFilesType.getFilesTypeId());
-//        for (CaseFiles caseFiles : list) {
-//            FloorPathVo pathVo = new FloorPathVo();
-//            pathVo.setNum(caseFiles.getFilesTitle());
-//            pathVo.getUrls().add(caseFiles.getFilesUrl());
-//            pathVos.add(pathVo);
-//        }
-//
-//        return ResultData.ok(pathVos);
-//    }
 }
 

+ 3 - 0
src/main/java/com/fdkankan/fusion/controller/CaseAnimationController.java

@@ -1,6 +1,7 @@
 package com.fdkankan.fusion.controller;
 
 
+import com.fdkankan.fusion.aop.PushJm;
 import com.fdkankan.fusion.common.ResultCode;
 import com.fdkankan.fusion.common.ResultData;
 import com.fdkankan.fusion.entity.CaseAnimation;
@@ -35,12 +36,14 @@ public class CaseAnimationController {
     }
 
     @PostMapping("/addOrUpdate")
+    @PushJm(event_type = "添加动画模型")
     public ResultData addOrUpdate(@RequestBody CaseAnimation caseAnimation){
         caseAnimationService.saveOrUpdate(caseAnimation);
         return ResultData.ok(caseAnimation);
     }
 
     @PostMapping("/delete")
+    @PushJm(event_type = "删除动画模型")
     public ResultData delete(@RequestBody CaseAnimation caseAnimation){
         if(caseAnimation.getId() == null){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);

+ 4 - 0
src/main/java/com/fdkankan/fusion/controller/CaseController.java

@@ -3,6 +3,7 @@ package com.fdkankan.fusion.controller;
 
 import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.fusion.aop.PushJm;
 import com.fdkankan.fusion.common.ResultCode;
 import com.fdkankan.fusion.entity.TmProject;
 import com.fdkankan.fusion.exception.BusinessException;
@@ -48,12 +49,14 @@ public class CaseController extends BaseController{
     }
 
     @PostMapping("/addOrUpdate")
+    @PushJm(event_type = "添加案件")
     public ResultData addOrUpdate(@RequestBody CaseEntity param){
         caseService.addOrUpdate(param);
         return ResultData.ok();
     }
 
     @PostMapping("/delete")
+    @PushJm(event_type = "删除案件")
     public ResultData delete(@RequestBody CaseParam param){
         caseService.delete(param.getCaseId());
         return ResultData.ok();
@@ -61,6 +64,7 @@ public class CaseController extends BaseController{
 
 
     @PostMapping("/addScene")
+    @PushJm(event_type = "添加场景")
     public ResultData addScene(@RequestBody CaseParam param){
         caseService.addScene(param);
         return ResultData.ok();

+ 2 - 0
src/main/java/com/fdkankan/fusion/controller/CaseExtractDetailController.java

@@ -9,6 +9,7 @@ import com.deepoove.poi.data.TextRenderData;
 import com.deepoove.poi.data.style.Style;
 import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
 import com.deepoove.poi.util.PoitlIOUtils;
+import com.fdkankan.fusion.aop.PushJm;
 import com.fdkankan.fusion.common.ResultCode;
 import com.fdkankan.fusion.common.ResultData;
 import com.fdkankan.fusion.entity.CaseExtractDetail;
@@ -50,6 +51,7 @@ public class CaseExtractDetailController {
     }
 
     @PostMapping("/saveOrUpdate")
+    @PushJm(event_type = "添加案件勘验笔录")
     public ResultData saveOrUpdate(@RequestBody CaseExtractDetail caseExtractDetail){
         caseExtractDetailService.saveByParam(caseExtractDetail);
         return ResultData.ok();

+ 3 - 0
src/main/java/com/fdkankan/fusion/controller/CaseFilesController.java

@@ -3,6 +3,7 @@ package com.fdkankan.fusion.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.fdkankan.fusion.aop.PushJm;
 import com.fdkankan.fusion.common.FilePath;
 import com.fdkankan.fusion.common.ResultCode;
 import com.fdkankan.fusion.entity.CommonUpload;
@@ -61,6 +62,7 @@ public class CaseFilesController extends BaseController{
     }
 
     @PostMapping("/addByMediaLibrary")
+    @PushJm(event_type = "添加案件文件")
     public ResultData addByMediaLibrary(@RequestBody AddByMediaLibraryParam param)  {
         if(param.getCaseId() == null || param.getUploadId() == null || param.getFilesTypeId() == null){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
@@ -86,6 +88,7 @@ public class CaseFilesController extends BaseController{
         return ResultData.ok(caseFiles);
     }
     @PostMapping("/addByMediaLibrarys")
+    @PushJm(event_type = "添加案件文件")
     public ResultData addByMediaLibrarys(@RequestBody AddByMediaLibraryParam param)  {
         if(param.getCaseId() == null  || param.getFilesTypeId() == null || param.getUploadIds().isEmpty()){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);

+ 4 - 0
src/main/java/com/fdkankan/fusion/controller/CaseFusionController.java

@@ -1,6 +1,7 @@
 package com.fdkankan.fusion.controller;
 
 
+import com.fdkankan.fusion.aop.PushJm;
 import com.fdkankan.fusion.common.ResultCode;
 import com.fdkankan.fusion.common.ResultData;
 import com.fdkankan.fusion.entity.CaseFusion;
@@ -46,6 +47,7 @@ public class CaseFusionController extends BaseController{
     }
 
     @PostMapping("/add")
+    @PushJm(event_type = "添加模型")
     public ResultData add(@RequestBody FusionParam param){
         return ResultData.ok(fusionNumService.add(param));
     }
@@ -54,12 +56,14 @@ public class CaseFusionController extends BaseController{
      * 修改模型相关信息
      */
     @PostMapping("/update")
+    @PushJm(event_type = "修改模型")
     public ResultData update(@RequestBody FusionParam param){
         fusionNumService.updateModel(param);
         return ResultData.ok();
     }
 
     @PostMapping("/delete")
+    @PushJm(event_type = "删除模型")
     public ResultData delete(@RequestBody FusionParam param){
         if(param.getFusionNumId() == null){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);

+ 5 - 0
src/main/java/com/fdkankan/fusion/controller/CaseImgController.java

@@ -1,6 +1,7 @@
 package com.fdkankan.fusion.controller;
 
 
+import com.fdkankan.fusion.aop.PushJm;
 import com.fdkankan.fusion.common.FilePath;
 import com.fdkankan.fusion.common.RequestBase;
 import com.fdkankan.fusion.common.ResultCode;
@@ -41,6 +42,7 @@ public class CaseImgController {
     }
 
     @PostMapping("/saveOrUpdate")
+    @PushJm(event_type = "添加或修改案件图片")
     public ResultData saveOrUpdate(@RequestBody CaseImg caseImg){
         if(caseImg.getCaseId() == null){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
@@ -49,6 +51,7 @@ public class CaseImgController {
     }
 
     @PostMapping("/addBatch")
+    @PushJm(event_type = "添加或修改案件图片")
     public ResultData saveBatch(@RequestBody CaseImgParam param){
 
         if(param.getImgUrls() == null || param.getImgUrls().isEmpty()){
@@ -64,6 +67,7 @@ public class CaseImgController {
     }
 
     @PostMapping("/delete")
+    @PushJm(event_type = "删除案件图片")
     public ResultData delete(@RequestBody CaseImg caseImg){
         if(caseImg.getId() == null){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
@@ -83,6 +87,7 @@ public class CaseImgController {
     private String environment;
 
     @PostMapping("/uploadImagesAndSave")
+    @PushJm(event_type = "添加或修改案件图片")
     public ResultData uploadImagesAndSave(@RequestParam(required = false)MultipartFile[] files,
                                           @RequestParam(required = false)Integer caseId) {
         if(caseId == null || files.length==0){

+ 2 - 0
src/main/java/com/fdkankan/fusion/controller/CaseImgTagController.java

@@ -1,6 +1,7 @@
 package com.fdkankan.fusion.controller;
 
 
+import com.fdkankan.fusion.aop.PushJm;
 import com.fdkankan.fusion.common.ResultData;
 import com.fdkankan.fusion.entity.CaseExtractDetail;
 import com.fdkankan.fusion.entity.CaseImgTag;
@@ -31,6 +32,7 @@ public class CaseImgTagController {
     }
 
     @PostMapping("/saveOrUpdate")
+    @PushJm(event_type = "删除案件图片")
     public ResultData saveOrUpdate(@RequestBody CaseImgTag caseImgTag){
         caseImgTagService.saveByParam(caseImgTag);
         return ResultData.ok();

+ 2 - 0
src/main/java/com/fdkankan/fusion/controller/CaseInquestCriminalController.java

@@ -3,6 +3,7 @@ package com.fdkankan.fusion.controller;
 
 import com.deepoove.poi.XWPFTemplate;
 import com.deepoove.poi.util.PoitlIOUtils;
+import com.fdkankan.fusion.aop.PushJm;
 import com.fdkankan.fusion.common.ResultCode;
 import com.fdkankan.fusion.common.ResultData;
 import com.fdkankan.fusion.entity.CaseInquest;
@@ -40,6 +41,7 @@ public class CaseInquestCriminalController {
     }
 
     @PostMapping("/saveOrUpdate")
+    @PushJm(event_type = "添加案件勘验笔录")
     public ResultData saveOrUpdate(@RequestBody CaseInquestCriminal caseInquestCriminal){
         return ResultData.ok(caseInquestCriminalService.saveByParam(caseInquestCriminal));
     }

+ 2 - 0
src/main/java/com/fdkankan/fusion/controller/CaseInquestInfoController.java

@@ -1,6 +1,7 @@
 package com.fdkankan.fusion.controller;
 
 
+import com.fdkankan.fusion.aop.PushJm;
 import com.fdkankan.fusion.common.ResultData;
 import com.fdkankan.fusion.config.FusionConfig;
 import com.fdkankan.fusion.entity.CaseInquestCriminal;
@@ -31,6 +32,7 @@ public class CaseInquestInfoController {
     }
 
     @PostMapping("/saveOrUpdate")
+    @PushJm(event_type = "添加案件详情")
     public ResultData saveOrUpdate(@RequestBody CaseInquestInfo caseInquestInfo){
         caseInquestInfoService.saveByParam(caseInquestInfo);
         return ResultData.ok();

+ 3 - 0
src/main/java/com/fdkankan/fusion/controller/CasePathController.java

@@ -1,6 +1,7 @@
 package com.fdkankan.fusion.controller;
 
 
+import com.fdkankan.fusion.aop.PushJm;
 import com.fdkankan.fusion.common.ResultCode;
 import com.fdkankan.fusion.common.ResultData;
 import com.fdkankan.fusion.entity.CasePath;
@@ -35,12 +36,14 @@ public class CasePathController {
     }
 
     @PostMapping("/saveOrUpdate")
+    @PushJm(event_type = "新增修改案件导览")
     public ResultData saveOrUpdate(@RequestBody CasePath casePath){
         casePathService.saveOrUpdate(casePath);
         return ResultData.ok(casePath);
     }
 
     @PostMapping("/del")
+    @PushJm(event_type = "删除案件导览")
     public ResultData del(@RequestBody CasePath casePath){
         casePathService.removeById(casePath.getId());
         return ResultData.ok();

+ 2 - 0
src/main/java/com/fdkankan/fusion/controller/CaseSettingsController.java

@@ -2,6 +2,7 @@ package com.fdkankan.fusion.controller;
 
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.fusion.aop.PushJm;
 import com.fdkankan.fusion.common.ResultCode;
 import com.fdkankan.fusion.common.ResultData;
 import com.fdkankan.fusion.entity.CaseSettings;
@@ -38,6 +39,7 @@ public class CaseSettingsController {
 
 
     @PostMapping("/saveOrUpdate")
+    @PushJm(event_type = "新增修改案件设置")
     public ResultData saveOrUpdate(@RequestBody CaseSettings caseSettings){
         if(caseSettings.getCaseId() == null){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);

+ 3 - 0
src/main/java/com/fdkankan/fusion/controller/CaseSettingsResourceController.java

@@ -1,6 +1,7 @@
 package com.fdkankan.fusion.controller;
 
 
+import com.fdkankan.fusion.aop.PushJm;
 import com.fdkankan.fusion.common.ResultCode;
 import com.fdkankan.fusion.common.ResultData;
 import com.fdkankan.fusion.entity.CaseSettings;
@@ -38,6 +39,7 @@ public class CaseSettingsResourceController {
 
 
     @PostMapping("/saveOrUpdate")
+    @PushJm(event_type = "新增修改案件设置")
     public ResultData saveOrUpdate(@RequestBody CaseSettingsResource settingsResource){
         if(settingsResource.getCaseId() == null){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
@@ -47,6 +49,7 @@ public class CaseSettingsResourceController {
     }
 
     @PostMapping("/delete")
+    @PushJm(event_type = "删除案件设置")
     public ResultData delete(@RequestBody CaseSettingsResource settingsResource){
         if(settingsResource.getId() == null){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);

+ 3 - 0
src/main/java/com/fdkankan/fusion/controller/CaseTagController.java

@@ -2,6 +2,7 @@ package com.fdkankan.fusion.controller;
 
 
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.fdkankan.fusion.aop.PushJm;
 import com.fdkankan.fusion.common.ResultCode;
 import com.fdkankan.fusion.common.ResultData;
 import com.fdkankan.fusion.entity.CaseTag;
@@ -33,6 +34,7 @@ public class CaseTagController {
 
 
     @PostMapping("/add")
+    @PushJm(event_type = "新增案件标注")
     public ResultData add(@RequestBody CaseTag caseTag){
         if(caseTag.getHotIconId()==null ||  StringUtils.isEmpty(caseTag.getHotIconUrl())
               ||caseTag.getCaseId() == null  || StringUtils.isEmpty(caseTag.getTagTitle())){
@@ -53,6 +55,7 @@ public class CaseTagController {
     }
 
     @PostMapping("/delete")
+    @PushJm(event_type = "删除案件标注")
     public ResultData delete(@RequestBody CaseTag caseTag){
         if(caseTag.getTagId() == null){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);

+ 4 - 0
src/main/java/com/fdkankan/fusion/controller/CaseTagPointController.java

@@ -2,6 +2,7 @@ package com.fdkankan.fusion.controller;
 
 
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.fdkankan.fusion.aop.PushJm;
 import com.fdkankan.fusion.common.ResultCode;
 import com.fdkankan.fusion.common.ResultData;
 import com.fdkankan.fusion.entity.CaseTag;
@@ -30,6 +31,7 @@ public class CaseTagPointController {
 
 
     @PostMapping("/place")
+    @PushJm(event_type = "放置案件标注")
     public ResultData place(@RequestBody CaseTagPoint caseTagPoint){
         return ResultData.ok(caseTagPointService.place(caseTagPoint));
     }
@@ -51,6 +53,7 @@ public class CaseTagPointController {
     }
 
     @PostMapping("/delete")
+    @PushJm(event_type = "删除案件标注")
     public ResultData delete(@RequestBody CaseTagPoint caseTagPoint){
         if(caseTagPoint.getTagPointId() == null ){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
@@ -60,6 +63,7 @@ public class CaseTagPointController {
     }
 
     @PostMapping("/update")
+    @PushJm(event_type = "修改案件标注")
     public ResultData update(@RequestBody CaseTagPoint caseTagPoint){
         if(caseTagPoint.getTagPointId() == null ){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);

+ 58 - 0
src/main/java/com/fdkankan/fusion/controller/InnerController.java

@@ -0,0 +1,58 @@
+package com.fdkankan.fusion.controller;
+
+
+import com.fdkankan.fusion.common.ResultData;
+import com.fdkankan.fusion.down.CaseDownService;
+import com.fdkankan.fusion.request.CaseParam;
+import com.fdkankan.fusion.response.DownVo;
+import com.fdkankan.fusion.service.ICaseService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * <p>
+ * 相机版本表 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2024-07-23
+ */
+@RestController
+@RequestMapping("/inner")
+public class InnerController {
+
+    @Autowired
+    CaseDownService caseDownService;
+
+    @GetMapping("/checkDown")
+    public ResultData checkDown(@RequestParam(required = false) Integer caseId){
+        return ResultData.ok(caseDownService.checkDown(caseId));
+    }
+    @GetMapping("/down")
+    public ResultData down(@RequestParam(required = false) Integer caseId){
+        caseDownService.downOffline(caseId);
+        DownVo downVo = new DownVo();
+        downVo.setDownloadStatus(1);
+        return ResultData.ok(downVo);
+    }
+    @GetMapping("/process")
+    public ResultData process(@RequestParam(required = false) Integer caseId){
+        return ResultData.ok(caseDownService.process(caseId));
+    }
+
+    @Autowired
+    ICaseService caseService;
+    @PostMapping("/caseList")
+    public ResultData caseList(@RequestBody CaseParam param ){
+        return ResultData.ok(caseService.pageList(param));
+    }
+
+    @GetMapping("/sceneList")
+    public ResultData sceneList(@RequestParam(required = false) Integer caseId ){
+        CaseParam param = new CaseParam();
+        param.setCaseId(caseId);
+        return ResultData.ok(caseService.sceneList(param));
+    }
+}
+

+ 7 - 0
src/main/java/com/fdkankan/fusion/controller/TestController.java

@@ -8,6 +8,7 @@ import com.deepoove.poi.data.*;
 import com.deepoove.poi.data.style.Style;
 import com.deepoove.poi.util.PoitlIOUtils;
 import com.dtflys.forest.annotation.Post;
+import com.fdkankan.fusion.aop.PushJm;
 import com.fdkankan.fusion.common.ResultCode;
 import com.fdkankan.fusion.common.ResultData;
 import com.fdkankan.fusion.common.util.ShellUtil;
@@ -112,4 +113,10 @@ public class TestController {
         return ResultData.ok();
     }
 
+
+    @PostMapping("/testPost")
+    @PushJm(event_type = "11111111")
+    public ResultData testPost(@RequestBody JSONObject jsonObject){
+        return ResultData.ok();
+    }
 }

+ 30 - 5
src/main/java/com/fdkankan/fusion/down/CaseDownService.java

@@ -64,6 +64,7 @@ public class CaseDownService {
 
     public static String inquestInfoUrl =      "/caseInquestInfo/info?caseId=";
     public static String casePathInfoUrl =      "/casePath/info?caseId=";
+    public static String caseAnimationUrl =      "/caseAnimation/list?caseId=";
 
     public static String laserData = "/laser/dataset/%s/getDataSet";
     public static String laserDataQuery = "/laser/filter/%s/query?datasetId=%s";
@@ -113,6 +114,8 @@ public class CaseDownService {
     ICaseInquestInfoService caseInquestInfoService;
     @Autowired
     ICasePathService casePathService;
+    @Autowired
+    ICaseAnimationService animationService;
 
     @Autowired
     RedisUtil redisUtil;
@@ -123,13 +126,32 @@ public class CaseDownService {
 
     public DownVo checkDown(Integer caseId) {
         DownVo downVo = new DownVo();
-//        CaseOffline byCaseId = caseOfflineService.getByCaseId(caseId);
-//        if(byCaseId != null){
-//            downVo.setDownloadStatus(3);
-//            downVo.setDownloadUrl(byCaseId.getOfflineUrl());
-//        }
+        String redisKey = String.format(downProcessKey, caseId);
+        if( redisUtil.hasKey(redisKey)){
+            String res = redisUtil.get(redisKey);
+            DownloadProcessVo downloadProcessVo = JSONObject.parseObject(res, DownloadProcessVo.class);
+            if(downloadProcessVo.getStatus() == 1000 &&  downloadProcessVo.getPercent() == 100 && StringUtils.isNotBlank(downloadProcessVo.getUrl())){
+                downVo.setDownloadStatus(3);
+                downVo.setDownloadUrl(downloadProcessVo.getUrl());
+            }
+        }
         return downVo;
     }
+
+
+
+    public void cleckDownUrl(Integer caseId) {
+        String redisKey = String.format(downProcessKey, caseId);
+        if( redisUtil.hasKey(redisKey)){
+            String res = redisUtil.get(redisKey);
+            DownloadProcessVo downloadProcessVo = JSONObject.parseObject(res, DownloadProcessVo.class);
+            if(downloadProcessVo.getStatus() == 1000 &&  downloadProcessVo.getPercent() == 100 && StringUtils.isNotBlank(downloadProcessVo.getUrl())){
+                redisUtil.del(redisKey);
+            }
+        }
+    }
+
+
     @Async
     public void downOffline(Integer caseId){
         try {
@@ -348,6 +370,9 @@ public class CaseDownService {
         jsonObject.put(basePath+caseImg+caseId, ResultData.ok(caseImgList));
 
 
+        jsonObject.put(basePath+caseAnimationUrl+caseId, ResultData.ok(animationService.getListByCaseId(caseId)));
+
+
         FileUtil.writeString(JSON.toJSONString(jsonObject), FilePath.OFFLINE_PACKAGE_PATH+caseId+"/www/package/"+jsonDataName,"UTF-8");
 
     }

+ 22 - 0
src/main/java/com/fdkankan/fusion/httpClient/client/OtherClient.java

@@ -0,0 +1,22 @@
+package com.fdkankan.fusion.httpClient.client;
+
+import com.alibaba.fastjson.JSONObject;
+import com.dtflys.forest.annotation.*;
+import com.fdkankan.fusion.common.ResultData;
+import com.fdkankan.fusion.httpClient.address.FdkkTakeLookAddressSource;
+import com.fdkankan.fusion.httpClient.request.FdRoomAddParam;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public interface OtherClient {
+
+    @Post("{url}")
+    String postJson(@Var("url") String url,@JSONBody Map<String,Object> param);
+
+    @Get("{url}")
+    String get(@Var("url") String url);
+
+
+}

+ 56 - 0
src/main/java/com/fdkankan/fusion/mq/consumer/PushJMConsumer.java

@@ -0,0 +1,56 @@
+package com.fdkankan.fusion.mq.consumer;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.MapToBeanCopier;
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.fusion.common.util.StringUtils;
+import com.fdkankan.fusion.config.FusionConfig;
+import com.fdkankan.fusion.httpClient.client.OtherClient;
+import com.fdkankan.fusion.mq.vo.JmGaEventVo;
+import com.rabbitmq.client.Channel;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.Queue;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.nio.charset.StandardCharsets;
+import java.util.Map;
+
+/**
+ * 场景封存解封 mq
+ */
+@Slf4j
+@Component
+public class PushJMConsumer {
+
+    @Autowired
+    FusionConfig fusionConfig;
+    @Autowired
+    OtherClient otherClient;
+
+    @RabbitListener(
+            queuesToDeclare = @Queue("${queue.manage.push-jm:jmga-event-notice}")
+    )
+    public void consumerQueue(Channel channel, Message message)  {
+        try {
+            String messageId = message.getMessageProperties().getMessageId();
+            String msg = new String(message.getBody(), StandardCharsets.UTF_8);
+            log.info("push-jm-mq--messageId:{},msg:{}",messageId,msg);
+            channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+
+            JmGaEventVo jmGaEventVo = JSONObject.parseObject(msg, JmGaEventVo.class);
+            Map<String, Object> stringObjectMap = BeanUtil.beanToMap(jmGaEventVo);
+            String s = otherClient.postJson(fusionConfig.getPushJmUrl(), stringObjectMap);
+
+        }catch (Exception e){
+            log.info("push-jm-mq------消费失败",e);
+        }finally {
+
+        }
+
+    }
+
+}

+ 28 - 0
src/main/java/com/fdkankan/fusion/mq/vo/JmGaEventVo.java

@@ -0,0 +1,28 @@
+package com.fdkankan.fusion.mq.vo;
+
+import cn.hutool.core.date.DateUtil;
+import lombok.Data;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.Date;
+
+@Data
+public class JmGaEventVo {
+
+    private String method ="event";
+    private String event_type ;
+    private String event_time ;
+    private String event_content;
+    private String scene_num;
+    private String scene_url;
+    private String ryid;
+    private String platform_id;
+    private String ajbh;
+
+    public String getEvent_time() {
+        if(StringUtils.isBlank(event_time)){
+            return DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss");
+        }
+        return event_time;
+    }
+}

+ 0 - 31
src/main/java/com/fdkankan/fusion/service/impl/CaseServiceImpl.java

@@ -64,42 +64,11 @@ public class CaseServiceImpl extends ServiceImpl<ICaseMapper, CaseEntity> implem
         if(StringUtils.isNotBlank(param.getCaseTitle())){
             wrapper.like(CaseEntity::getCaseTitle,param.getCaseTitle());
         }
-        List<String> deptIds = tmDepartmentService.getDeptIds();
-        if(deptIds.size() <=0){
-            return PageInfo.PageInfo(new Page<>(param.getPageNum(),param.getPageSize()));
-        }
-        List<String> deptIds2 = tmDepartmentService.getSonByDeptIdAndDeptIds(deptIds, param.getDeptId());
-        wrapper.in(CaseEntity::getDeptId,deptIds2);
         //wrapper.eq(CaseEntity::getUserName,userName);
         wrapper.eq(CaseEntity::getType,0);
         wrapper.orderByDesc(CaseEntity::getCreateTime);
         Page<CaseEntity> page = this.page( new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
 
-
-        Set<String> tmProIds = page.getRecords().stream().filter(entity -> StringUtils.isNotBlank(entity.getTmProjectId()))
-                .map(CaseEntity::getTmProjectId).collect(Collectors.toSet());
-        HashMap<String, TmProject> proMap =  tmProjectService.getMapByIds(tmProIds);
-
-        for (CaseEntity record : page.getRecords()) {
-            if(StringUtils.isNotBlank(record.getTmProjectId())){
-                TmProject project = proMap.get(record.getTmProjectId());
-                if(project != null){
-                    record.setDeptId(project.getDeptId());
-                }
-            }
-        }
-
-        Set<String> deptIds1 = page.getRecords().stream().filter(entity -> StringUtils.isNotBlank(entity.getDeptId()))
-                .map(CaseEntity::getDeptId).collect(Collectors.toSet());
-        HashMap<String, TmDepartment> mapByDeptIds = tmDepartmentService.getMapByDeptIds(deptIds1);
-
-        for (CaseEntity record : page.getRecords()) {
-            TmDepartment department = mapByDeptIds.get(record.getDeptId());
-            if(department != null){
-                record.setDeptName(department.getName());
-            }
-        }
-
         List<Integer> mapIds = page.getRecords().stream().map(CaseEntity::getMapId).collect(Collectors.toList());
         if(!mapIds.isEmpty()){
             HashMap<Integer,MapConfig> map = mapConfigService.getMapByIds(mapIds);

+ 3 - 1
src/main/resources/bootstrap-dev.yml

@@ -11,7 +11,9 @@ spring:
           - data-id: 4dkankan-fusion.yaml
             group: DEFAULT_GROUP
             refresh: true
-
+          - data-id: common-rabbitmq-config.yaml
+            group: DEFAULT_GROUP
+            refresh: true
       discovery:
         server-addr: ${spring.cloud.nacos.config.server-addr}
         namespace: ${spring.cloud.nacos.config.namespace}

+ 3 - 1
src/main/resources/bootstrap-test.yml

@@ -11,7 +11,9 @@ spring:
           - data-id: 4dkankan-fusion.yaml
             group: DEFAULT_GROUP
             refresh: true
-
+          - data-id: common-rabbitmq-config.yaml
+            group: DEFAULT_GROUP
+            refresh: true
       discovery:
         server-addr: ${spring.cloud.nacos.config.server-addr}
         namespace: ${spring.cloud.nacos.config.namespace}