Browse Source

优化测报灯图片存储表结构,避免过多关联导致mongodb查询过慢的问题

zhaiyifei 1 năm trước cách đây
mục cha
commit
49c2c984fa

+ 132 - 0
src/main/java/com/yunfeiyun/agmp/iot/common/domain/IotCbdPestrecog.java

@@ -0,0 +1,132 @@
+package com.yunfeiyun.agmp.iot.common.domain;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 虫情识别信息对象 IotCbdPestrecog
+ *
+ * @author 杨晓辉
+ * @date 2024-01-04
+ */
+@Data
+public class IotCbdPestrecog extends IotBaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    private String id;
+
+    /**
+     * 虫情识别信息业务标识
+     */
+    @Excel(name = "虫情识别信息业务标识")
+    private String pestrecogBid;
+
+    /**
+     * 客户id
+     */
+    @Excel(name = "客户id")
+    private String cId;
+
+    /** 租户id */
+    private String tid;
+
+    /**
+     * 设备业务标识
+     */
+    @Excel(name = "设备业务标识")
+    private String devBid;
+
+    /**
+     * 设备类型标识
+     */
+    @Excel(name = "设备类型标识")
+    private String devtypeBid;
+
+    /** 图片识别业务标识 */
+    @Excel(name = "图片识别业务标识")
+    private String recogBid;
+
+    /** 图片基础业务标识 */
+    @Excel(name = "图片基础业务标识")
+    private String imgBid;
+
+    /**
+     * 标记类型 0 手动标记 1  机器自动标记
+     */
+    @Excel(name = "标记类型")
+    private String pestrecogMarktype;
+
+    /**
+     * 识别类型
+     */
+    @Excel(name = "识别类型")
+    private String cbdrecogType;
+
+    /**
+     * 温度
+     */
+    @Excel(name = "温度")
+    private BigDecimal pestrecogAt;
+
+    /**
+     * 湿度
+     */
+    @Excel(name = "湿度")
+    private BigDecimal pestrecogAh;
+
+    /**
+     * 经度
+     */
+    @Excel(name = "经度")
+    private BigDecimal pestrecogLng;
+
+    /**
+     * 纬度
+     */
+    @Excel(name = "纬度")
+    private BigDecimal pestrecogLat;
+
+    /**
+     * 省
+     */
+    @Excel(name = "省")
+    private String pestrecogProvince;
+
+    /**
+     * 市
+     */
+    @Excel(name = "市")
+    private String pestrecogCity;
+
+    /**
+     * 县
+     */
+    @Excel(name = "县")
+    private String pestrecogDistrict;
+
+    /**
+     * 害虫业务标识
+     */
+    @Excel(name = "害虫业务标识")
+    private String pestBusid;
+
+    @Excel(name = "害虫名字")
+    private String pestName;
+
+    /**
+     * 害虫数量
+     */
+    @Excel(name = "害虫数量")
+    private Long pestrecogNum;
+
+    /**
+     * 创建时间
+     */
+    @Excel(name = "创建时间")
+    private String pestrecogCreatedDate;
+}

+ 36 - 8
src/main/java/com/yunfeiyun/agmp/iot/common/domain/IotCbdimg.java

@@ -4,11 +4,42 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.yunfeiyun.agmp.common.annotation.Excel;
 import lombok.Data;
 
+import java.util.Map;
+
 /**
  * 测报灯图片基础对象 IotCbdimg
  *
  * @author 杨晓辉
  * @date 2024-01-04
+ *
+ * 测报灯图片数据结构
+ * {
+ *     "cbdimgBid": "xxxx",  // 图片基础业务标识
+ *     "cbdrecog": {
+ *         "1": {   // A识别模型数据
+ *             "cbdrecogBid": "xxxxx",  // 识别害虫业务标识
+ *             ”pestrecog“:{
+ *                 ”0“: {   // 手动标记识别虫情识别信息表
+ *                     ”pestrecogBid“: "xxxx"  // 识别害虫业务标识
+ *                 },
+ *                 ”1“: {   // 机器识别虫情识别信息表
+ *                     ”pestrecogBid“: "xxxx"  // 识别害虫业务标识
+ *                 }
+ *             }
+ *         },
+ *         "2": {   // B识别模型数据
+ *             "cbdrecogBid": "xxxxx",  // 识别害虫业务标识
+ *             "pestrecog": {
+ *                 "0": {   // 手动标记识别虫情识别信息表
+ *                     "pestrecogBid": "xxxx"  // 识别害虫业务标识
+ *                 },
+ *                 "1": {   // 机器识别虫情识别信息表
+ *                     "pestrecogBid": "xxxx"  // 识别害虫业务标识
+ *                 }
+ *             }
+ *        }
+ *     }
+ * }
  */
 @Data
 @TableName("IotCbdimg")
@@ -31,18 +62,14 @@ public class IotCbdimg extends IotBaseEntity
     @Excel(name = "设备业务标识")
     private String devBid;
 
+    /** 害虫总数 */
+    @Excel(name = "害虫总数")
+    private long cbdimgTotalnum;
+
     /** 原图地址 */
     @Excel(name = "原图地址")
     private String cbdimgAddr;
 
-    /** 总数 */
-    @Excel(name = "总数")
-    private Long cbdimgPestnum;
-
-    /** 识别数 */
-    @Excel(name = "识别数")
-    private Long cbdimgRecognum;
-
     /** 修改时间 */
     @Excel(name = "修改时间")
     private String cbdimgModifieddate;
@@ -55,6 +82,7 @@ public class IotCbdimg extends IotBaseEntity
     @Excel(name = "删除状态")
     private String cbdimgDelstatus;
 
+    private Map<String, IotCbdrecog> cbdrecog;
 
 
 }

+ 41 - 20
src/main/java/com/yunfeiyun/agmp/iot/common/domain/IotCbdrecog.java

@@ -1,9 +1,11 @@
 package com.yunfeiyun.agmp.iot.common.domain;
 
-import com.baomidou.mybatisplus.annotation.TableName;
 import com.yunfeiyun.agmp.common.annotation.Excel;
 import lombok.Data;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * 测报灯图片识别对象 IotCbdrecog
  *
@@ -11,7 +13,6 @@ import lombok.Data;
  * @date 2024-01-04
  */
 @Data
-@TableName("IotCbdrecog")
 public class IotCbdrecog extends IotBaseEntity
 {
     private static final long serialVersionUID = 1L;
@@ -31,35 +32,34 @@ public class IotCbdrecog extends IotBaseEntity
     @Excel(name = "图片基础业务标识")
     private String cbdimgBid;
 
+    /** 设备标识 */
+    @Excel(name = "设备id")
+    private String devBid;
+
     /** 识别类型 */
     @Excel(name = "识别类型")
     private String cbdrecogType;
 
-    /** 识别数 */
-    @Excel(name = "识别数")
-    private Long cbdimgRecognum;
+    /** 标记类型 */
+    @Excel(name = "标记类型")
+    private String cbdrecogMarktype;
 
     /** 识别图片地址 */
-    @Excel(name = "识别图片地址")
+    @Excel(name = "机器识别图片地址")
     private String cbdrecogAddr;
 
     /** 手动标记图片地址 */
     @Excel(name = "手动标记图片地址")
     private String cbdrecogManualaddr;
 
-
-    /** 害虫识别结果 */
-    @Excel(name = "害虫识别结果")
+    /** 害虫机器识别结果 */
+    @Excel(name = "害虫机器识别结果")
     private String cbdrecogResult;
 
-    /** 害虫人工识别结果 */
-    @Excel(name = "害虫人工识别结果")
+    /** 害虫手动识别结果 */
+    @Excel(name = "害虫手动识别结果")
     private String cbdrecogResultManual;
 
-    /** 标记类型 */
-    @Excel(name = "标记类型")
-    private String cbdrecogMarktype;
-
     /** 手动标记结果 */
     @Excel(name = "手动标记结果")
     private String cbdrecogManualmark;
@@ -68,6 +68,30 @@ public class IotCbdrecog extends IotBaseEntity
     @Excel(name = "机器标注结果")
     private String cbdrecogMachinemark;
 
+    /** 机器识别总数 */
+    @Excel(name = "机器识别总数")
+    private Long cbdrecogTotalnum;
+
+    /** 机器识别害虫数量 */
+    @Excel(name = "机器识别害虫数量")
+    private Long cbdrecogPestnum;
+
+    /** 识别类型 */
+    @Excel(name = "机器识别害虫类型数量")
+    private Long cbdrecogTypenum;
+
+    /** 手动识别总数 */
+    @Excel(name = "手动识别总数")
+    private Long cbdrecogTotalnumManual;
+
+    /** 手动识别害虫数量 */
+    @Excel(name = "手动识别害虫数量")
+    private Long cbdrecogPestnumManual;
+
+    /** 手动识别害虫类型数量 */
+    @Excel(name = "手动识别害虫类型数量")
+    private Long cbdrecogTypenumManual;
+
     /** 创建人 */
     @Excel(name = "创建人")
     private String cbdrecogCreator;
@@ -88,10 +112,7 @@ public class IotCbdrecog extends IotBaseEntity
     @Excel(name = "删除状态")
     private String cbdrecogDelstatus;
 
-
-
-    /** 手动标记图片base64 */
-    @Excel(name = "手动标记图片base64")
-    private String cbdrecogManualBase64;
+    /** 害虫识别信息 */
+    private Map<String, List<IotCbdPestrecog>> pestrecog;
 
 }

+ 26 - 9
src/main/java/com/yunfeiyun/agmp/iot/common/domain/IotPestrecog.java

@@ -34,6 +34,9 @@ public class IotPestrecog extends IotBaseEntity {
     @Excel(name = "客户id")
     private String cId;
 
+    /** 租户id */
+    private String tid;
+
     /**
      * 设备业务标识
      */
@@ -46,6 +49,26 @@ public class IotPestrecog extends IotBaseEntity {
     @Excel(name = "设备类型标识")
     private String devtypeBid;
 
+    /** 图片识别业务标识 */
+    @Excel(name = "图片识别业务标识")
+    private String recogBid;
+
+    /** 图片基础业务标识 */
+    @Excel(name = "图片基础业务标识")
+    private String imgBid;
+
+    /**
+     * 标记类型 0 手动标记 1  机器自动标记
+     */
+    @Excel(name = "标记类型")
+    private String pestrecogMarktype;
+
+    /**
+     * 识别类型
+     */
+    @Excel(name = "识别类型")
+    private String cbdrecogType;
+
     /**
      * 温度
      */
@@ -94,6 +117,9 @@ public class IotPestrecog extends IotBaseEntity {
     @Excel(name = "害虫业务标识")
     private String pestBusid;
 
+    @Excel(name = "害虫名字")
+    private String pestName;
+
     /**
      * 害虫数量
      */
@@ -101,18 +127,9 @@ public class IotPestrecog extends IotBaseEntity {
     private Long pestrecogNum;
 
     /**
-     * 标记类型 0 手动标记 1  机器自动标记
-     */
-    @Excel(name = "标记类型")
-    private String pestrecogMarktype;
-
-    /**
      * 创建时间
      */
     @Excel(name = "创建时间")
     private String pestrecogCreatedDate;
 
-    @Excel(name = "害虫名字")
-    private String pestName;
-
 }

+ 49 - 0
src/main/java/com/yunfeiyun/agmp/iot/common/enums/EnumCbdMarkType.java

@@ -0,0 +1,49 @@
+package com.yunfeiyun.agmp.iot.common.enums;
+
+/**
+ * 测报灯标记类型
+ */
+public enum EnumCbdMarkType {
+    /**
+     * 标记类型
+     */
+    HAND("0", "手动识别标记"),
+    AUTO("1", "机器识别标记");
+
+    private final String code;
+    private final String name;
+
+    EnumCbdMarkType(String code, String name)
+    {
+        this.code = code;
+        this.name = name;
+    }
+
+    public String getCode()
+    {
+        return code;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public boolean equal(String code){
+        return this.code.equals(code);
+    }
+
+    /**
+     * 根据code查找
+     * @param code 枚举code
+     * @return 枚举对象
+     */
+    public static EnumCbdMarkType findEnumByCode(String code) {
+        for (EnumCbdMarkType item : EnumCbdMarkType.values()) {
+            if (item.getCode().equals(code)) {
+                return item;
+            }
+        }
+        return null;
+    }
+}