From b3e273990fda27b68dfcf2c7f9d78311a5279885 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期一, 16 十二月 2024 17:32:01 +0800
Subject: [PATCH] 1. 新增卫星遥测相关接口逻辑

---
 src/main/kotlin/com/flightfeather/uav/domain/entity/GridGroup.java                                 |  200 ++++++++++
 src/main/kotlin/com/flightfeather/uav/domain/entity/GridCell.java                                  |  286 ++++++++++++++
 src/main/kotlin/com/flightfeather/uav/domain/repository/RealTimeDataRep.kt                         |   38 -
 src/main/resources/mapper/GridCellMapper.xml                                                       |   28 +
 src/main/kotlin/com/flightfeather/uav/domain/mapper/GridCellMapper.kt                              |    8 
 src/main/kotlin/com/flightfeather/uav/domain/mapper/GridDataMapper.kt                              |    8 
 src/main/resources/mapper/GridDataMapper.xml                                                       |   20 +
 src/test/kotlin/com/flightfeather/uav/lightshare/service/impl/SatelliteTelemetryServiceImplTest.kt |   37 +
 src/main/kotlin/com/flightfeather/uav/lightshare/web/MissionController.kt                          |    5 
 src/main/kotlin/com/flightfeather/uav/domain/entity/GridDataDetail.java                            |  128 ++++++
 src/main/resources/application-test.yml                                                            |   12 
 src/main/kotlin/com/flightfeather/uav/domain/entity/GridData.java                                  |  119 +++++
 src/main/kotlin/com/flightfeather/uav/domain/repository/SatelliteGridRep.kt                        |   62 +++
 src/main/resources/generator/generatorConfig.xml                                                   |    9 
 src/main/kotlin/com/flightfeather/uav/lightshare/service/MissionService.kt                         |    2 
 src/test/kotlin/com/flightfeather/uav/Test.kt                                                      |    5 
 src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/SatelliteTelemetryServiceImpl.kt     |   40 ++
 src/main/kotlin/com/flightfeather/uav/lightshare/service/SatelliteTelemetryService.kt              |   25 +
 src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/MissionServiceImpl.kt                |    6 
 src/main/kotlin/com/flightfeather/uav/lightshare/web/SatelliteTelemetryController.kt               |   52 ++
 src/main/resources/mapper/GridGroupMapper.xml                                                      |   27 +
 src/main/kotlin/com/flightfeather/uav/domain/mapper/GridDataDetailMapper.kt                        |    8 
 src/main/kotlin/com/flightfeather/uav/domain/mapper/GridGroupMapper.kt                             |    8 
 src/main/resources/mapper/GridDataDetailMapper.xml                                                 |   21 +
 24 files changed, 1,103 insertions(+), 51 deletions(-)

diff --git a/src/main/kotlin/com/flightfeather/uav/domain/entity/GridCell.java b/src/main/kotlin/com/flightfeather/uav/domain/entity/GridCell.java
new file mode 100644
index 0000000..8375cd2
--- /dev/null
+++ b/src/main/kotlin/com/flightfeather/uav/domain/entity/GridCell.java
@@ -0,0 +1,286 @@
+package com.flightfeather.uav.domain.entity;
+
+import java.math.BigDecimal;
+import javax.persistence.*;
+
+@Table(name = "grid_cell")
+public class GridCell {
+    @Id
+    private Integer id;
+
+    /**
+     * 鎵�灞炵綉鏍煎垎缁刬d
+     */
+    @Column(name = "group_id")
+    private Integer groupId;
+
+    /**
+     * 绾害
+     */
+    private BigDecimal latitude;
+
+    /**
+     * 缁忓害
+     */
+    private BigDecimal longitude;
+
+    /**
+     * 鐭╁舰缃戞牸椤剁偣缁忓害
+     */
+    @Column(name = "point1_lon")
+    private String point1Lon;
+
+    /**
+     * 鐭╁舰缃戞牸椤剁偣绾害
+     */
+    @Column(name = "point1_lat")
+    private String point1Lat;
+
+    /**
+     * 鐭╁舰缃戞牸椤剁偣缁忓害
+     */
+    @Column(name = "point2_lon")
+    private String point2Lon;
+
+    /**
+     * 鐭╁舰缃戞牸椤剁偣绾害
+     */
+    @Column(name = "point2_lat")
+    private String point2Lat;
+
+    /**
+     * 鐭╁舰缃戞牸椤剁偣缁忓害
+     */
+    @Column(name = "point3_lon")
+    private String point3Lon;
+
+    /**
+     * 鐭╁舰缃戞牸椤剁偣绾害
+     */
+    @Column(name = "point3_lat")
+    private String point3Lat;
+
+    /**
+     * 鐭╁舰缃戞牸椤剁偣缁忓害
+     */
+    @Column(name = "point4_lon")
+    private String point4Lon;
+
+    /**
+     * 鐭╁舰缃戞牸椤剁偣绾害
+     */
+    @Column(name = "point4_lat")
+    private String point4Lat;
+
+    /**
+     * @return id
+     */
+    public Integer getId() {
+        return id;
+    }
+
+    /**
+     * @param id
+     */
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    /**
+     * 鑾峰彇鎵�灞炵綉鏍煎垎缁刬d
+     *
+     * @return group_id - 鎵�灞炵綉鏍煎垎缁刬d
+     */
+    public Integer getGroupId() {
+        return groupId;
+    }
+
+    /**
+     * 璁剧疆鎵�灞炵綉鏍煎垎缁刬d
+     *
+     * @param groupId 鎵�灞炵綉鏍煎垎缁刬d
+     */
+    public void setGroupId(Integer groupId) {
+        this.groupId = groupId;
+    }
+
+    /**
+     * 鑾峰彇绾害
+     *
+     * @return latitude - 绾害
+     */
+    public BigDecimal getLatitude() {
+        return latitude;
+    }
+
+    /**
+     * 璁剧疆绾害
+     *
+     * @param latitude 绾害
+     */
+    public void setLatitude(BigDecimal latitude) {
+        this.latitude = latitude;
+    }
+
+    /**
+     * 鑾峰彇缁忓害
+     *
+     * @return longitude - 缁忓害
+     */
+    public BigDecimal getLongitude() {
+        return longitude;
+    }
+
+    /**
+     * 璁剧疆缁忓害
+     *
+     * @param longitude 缁忓害
+     */
+    public void setLongitude(BigDecimal longitude) {
+        this.longitude = longitude;
+    }
+
+    /**
+     * 鑾峰彇鐭╁舰缃戞牸椤剁偣缁忓害
+     *
+     * @return point1_lon - 鐭╁舰缃戞牸椤剁偣缁忓害
+     */
+    public String getPoint1Lon() {
+        return point1Lon;
+    }
+
+    /**
+     * 璁剧疆鐭╁舰缃戞牸椤剁偣缁忓害
+     *
+     * @param point1Lon 鐭╁舰缃戞牸椤剁偣缁忓害
+     */
+    public void setPoint1Lon(String point1Lon) {
+        this.point1Lon = point1Lon == null ? null : point1Lon.trim();
+    }
+
+    /**
+     * 鑾峰彇鐭╁舰缃戞牸椤剁偣绾害
+     *
+     * @return point1_lat - 鐭╁舰缃戞牸椤剁偣绾害
+     */
+    public String getPoint1Lat() {
+        return point1Lat;
+    }
+
+    /**
+     * 璁剧疆鐭╁舰缃戞牸椤剁偣绾害
+     *
+     * @param point1Lat 鐭╁舰缃戞牸椤剁偣绾害
+     */
+    public void setPoint1Lat(String point1Lat) {
+        this.point1Lat = point1Lat == null ? null : point1Lat.trim();
+    }
+
+    /**
+     * 鑾峰彇鐭╁舰缃戞牸椤剁偣缁忓害
+     *
+     * @return point2_lon - 鐭╁舰缃戞牸椤剁偣缁忓害
+     */
+    public String getPoint2Lon() {
+        return point2Lon;
+    }
+
+    /**
+     * 璁剧疆鐭╁舰缃戞牸椤剁偣缁忓害
+     *
+     * @param point2Lon 鐭╁舰缃戞牸椤剁偣缁忓害
+     */
+    public void setPoint2Lon(String point2Lon) {
+        this.point2Lon = point2Lon == null ? null : point2Lon.trim();
+    }
+
+    /**
+     * 鑾峰彇鐭╁舰缃戞牸椤剁偣绾害
+     *
+     * @return point2_lat - 鐭╁舰缃戞牸椤剁偣绾害
+     */
+    public String getPoint2Lat() {
+        return point2Lat;
+    }
+
+    /**
+     * 璁剧疆鐭╁舰缃戞牸椤剁偣绾害
+     *
+     * @param point2Lat 鐭╁舰缃戞牸椤剁偣绾害
+     */
+    public void setPoint2Lat(String point2Lat) {
+        this.point2Lat = point2Lat == null ? null : point2Lat.trim();
+    }
+
+    /**
+     * 鑾峰彇鐭╁舰缃戞牸椤剁偣缁忓害
+     *
+     * @return point3_lon - 鐭╁舰缃戞牸椤剁偣缁忓害
+     */
+    public String getPoint3Lon() {
+        return point3Lon;
+    }
+
+    /**
+     * 璁剧疆鐭╁舰缃戞牸椤剁偣缁忓害
+     *
+     * @param point3Lon 鐭╁舰缃戞牸椤剁偣缁忓害
+     */
+    public void setPoint3Lon(String point3Lon) {
+        this.point3Lon = point3Lon == null ? null : point3Lon.trim();
+    }
+
+    /**
+     * 鑾峰彇鐭╁舰缃戞牸椤剁偣绾害
+     *
+     * @return point3_lat - 鐭╁舰缃戞牸椤剁偣绾害
+     */
+    public String getPoint3Lat() {
+        return point3Lat;
+    }
+
+    /**
+     * 璁剧疆鐭╁舰缃戞牸椤剁偣绾害
+     *
+     * @param point3Lat 鐭╁舰缃戞牸椤剁偣绾害
+     */
+    public void setPoint3Lat(String point3Lat) {
+        this.point3Lat = point3Lat == null ? null : point3Lat.trim();
+    }
+
+    /**
+     * 鑾峰彇鐭╁舰缃戞牸椤剁偣缁忓害
+     *
+     * @return point4_lon - 鐭╁舰缃戞牸椤剁偣缁忓害
+     */
+    public String getPoint4Lon() {
+        return point4Lon;
+    }
+
+    /**
+     * 璁剧疆鐭╁舰缃戞牸椤剁偣缁忓害
+     *
+     * @param point4Lon 鐭╁舰缃戞牸椤剁偣缁忓害
+     */
+    public void setPoint4Lon(String point4Lon) {
+        this.point4Lon = point4Lon == null ? null : point4Lon.trim();
+    }
+
+    /**
+     * 鑾峰彇鐭╁舰缃戞牸椤剁偣绾害
+     *
+     * @return point4_lat - 鐭╁舰缃戞牸椤剁偣绾害
+     */
+    public String getPoint4Lat() {
+        return point4Lat;
+    }
+
+    /**
+     * 璁剧疆鐭╁舰缃戞牸椤剁偣绾害
+     *
+     * @param point4Lat 鐭╁舰缃戞牸椤剁偣绾害
+     */
+    public void setPoint4Lat(String point4Lat) {
+        this.point4Lat = point4Lat == null ? null : point4Lat.trim();
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/domain/entity/GridData.java b/src/main/kotlin/com/flightfeather/uav/domain/entity/GridData.java
new file mode 100644
index 0000000..e008649
--- /dev/null
+++ b/src/main/kotlin/com/flightfeather/uav/domain/entity/GridData.java
@@ -0,0 +1,119 @@
+package com.flightfeather.uav.domain.entity;
+
+import java.util.Date;
+import javax.persistence.*;
+
+@Table(name = "grid_data")
+public class GridData {
+    @Id
+    private Integer id;
+
+    /**
+     * 缃戞牸鍒嗙粍id
+     */
+    @Column(name = "group_id")
+    private Integer groupId;
+
+    /**
+     * 鏁版嵁鏃堕棿
+     */
+    @Column(name = "data_time")
+    private Date dataTime;
+
+    /**
+     * 鏁版嵁绫诲瀷锛�0锛氬師濮嬪崼鏄熼仴娴嬫暟鎹紱1锛氳瀺鍚堟暟鎹�
+     */
+    private Byte type;
+
+    /**
+     * 铻嶅悎鐨勬暟鎹富閿甶d锛宨d涔嬮棿鐢�,鍒嗛殧
+     */
+    @Column(name = "mix_data_id")
+    private String mixDataId;
+
+    /**
+     * @return id
+     */
+    public Integer getId() {
+        return id;
+    }
+
+    /**
+     * @param id
+     */
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    /**
+     * 鑾峰彇缃戞牸鍒嗙粍id
+     *
+     * @return group_id - 缃戞牸鍒嗙粍id
+     */
+    public Integer getGroupId() {
+        return groupId;
+    }
+
+    /**
+     * 璁剧疆缃戞牸鍒嗙粍id
+     *
+     * @param groupId 缃戞牸鍒嗙粍id
+     */
+    public void setGroupId(Integer groupId) {
+        this.groupId = groupId;
+    }
+
+    /**
+     * 鑾峰彇鏁版嵁鏃堕棿
+     *
+     * @return data_time - 鏁版嵁鏃堕棿
+     */
+    public Date getDataTime() {
+        return dataTime;
+    }
+
+    /**
+     * 璁剧疆鏁版嵁鏃堕棿
+     *
+     * @param dataTime 鏁版嵁鏃堕棿
+     */
+    public void setDataTime(Date dataTime) {
+        this.dataTime = dataTime;
+    }
+
+    /**
+     * 鑾峰彇鏁版嵁绫诲瀷锛�0锛氬師濮嬪崼鏄熼仴娴嬫暟鎹紱1锛氳瀺鍚堟暟鎹�
+     *
+     * @return type - 鏁版嵁绫诲瀷锛�0锛氬師濮嬪崼鏄熼仴娴嬫暟鎹紱1锛氳瀺鍚堟暟鎹�
+     */
+    public Byte getType() {
+        return type;
+    }
+
+    /**
+     * 璁剧疆鏁版嵁绫诲瀷锛�0锛氬師濮嬪崼鏄熼仴娴嬫暟鎹紱1锛氳瀺鍚堟暟鎹�
+     *
+     * @param type 鏁版嵁绫诲瀷锛�0锛氬師濮嬪崼鏄熼仴娴嬫暟鎹紱1锛氳瀺鍚堟暟鎹�
+     */
+    public void setType(Byte type) {
+        this.type = type;
+    }
+
+    /**
+     * 鑾峰彇铻嶅悎鐨勬暟鎹富閿甶d锛宨d涔嬮棿鐢�,鍒嗛殧
+     *
+     * @return mix_data_id - 铻嶅悎鐨勬暟鎹富閿甶d锛宨d涔嬮棿鐢�,鍒嗛殧
+     */
+    public String getMixDataId() {
+        return mixDataId;
+    }
+
+    /**
+     * 璁剧疆铻嶅悎鐨勬暟鎹富閿甶d锛宨d涔嬮棿鐢�,鍒嗛殧
+     *
+     * @param mixDataId 铻嶅悎鐨勬暟鎹富閿甶d锛宨d涔嬮棿鐢�,鍒嗛殧
+     */
+    public void setMixDataId(String mixDataId) {
+        this.mixDataId = mixDataId == null ? null : mixDataId.trim();
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/domain/entity/GridDataDetail.java b/src/main/kotlin/com/flightfeather/uav/domain/entity/GridDataDetail.java
new file mode 100644
index 0000000..4545740
--- /dev/null
+++ b/src/main/kotlin/com/flightfeather/uav/domain/entity/GridDataDetail.java
@@ -0,0 +1,128 @@
+package com.flightfeather.uav.domain.entity;
+
+import javax.persistence.*;
+
+@Table(name = "grid_data_detail")
+public class GridDataDetail {
+    @Id
+    private Integer id;
+
+    /**
+     * 鎵�灞炴暟鎹粍id
+     */
+    @Column(name = "data_id")
+    private Integer dataId;
+
+    /**
+     * 鎵�灞炵綉鏍煎垎缁刬d
+     */
+    @Column(name = "group_id")
+    private Integer groupId;
+
+    /**
+     * 鎵�灞炵綉鏍糹d
+     */
+    @Column(name = "cell_id")
+    private Integer cellId;
+
+    @Column(name = "PM25")
+    private Float pm25;
+
+    private Integer rank;
+
+    /**
+     * @return id
+     */
+    public Integer getId() {
+        return id;
+    }
+
+    /**
+     * @param id
+     */
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    /**
+     * 鑾峰彇鎵�灞炴暟鎹粍id
+     *
+     * @return data_id - 鎵�灞炴暟鎹粍id
+     */
+    public Integer getDataId() {
+        return dataId;
+    }
+
+    /**
+     * 璁剧疆鎵�灞炴暟鎹粍id
+     *
+     * @param dataId 鎵�灞炴暟鎹粍id
+     */
+    public void setDataId(Integer dataId) {
+        this.dataId = dataId;
+    }
+
+    /**
+     * 鑾峰彇鎵�灞炵綉鏍煎垎缁刬d
+     *
+     * @return group_id - 鎵�灞炵綉鏍煎垎缁刬d
+     */
+    public Integer getGroupId() {
+        return groupId;
+    }
+
+    /**
+     * 璁剧疆鎵�灞炵綉鏍煎垎缁刬d
+     *
+     * @param groupId 鎵�灞炵綉鏍煎垎缁刬d
+     */
+    public void setGroupId(Integer groupId) {
+        this.groupId = groupId;
+    }
+
+    /**
+     * 鑾峰彇鎵�灞炵綉鏍糹d
+     *
+     * @return cell_id - 鎵�灞炵綉鏍糹d
+     */
+    public Integer getCellId() {
+        return cellId;
+    }
+
+    /**
+     * 璁剧疆鎵�灞炵綉鏍糹d
+     *
+     * @param cellId 鎵�灞炵綉鏍糹d
+     */
+    public void setCellId(Integer cellId) {
+        this.cellId = cellId;
+    }
+
+    /**
+     * @return PM25
+     */
+    public Float getPm25() {
+        return pm25;
+    }
+
+    /**
+     * @param pm25
+     */
+    public void setPm25(Float pm25) {
+        this.pm25 = pm25;
+    }
+
+    /**
+     * @return rank
+     */
+    public Integer getRank() {
+        return rank;
+    }
+
+    /**
+     * @param rank
+     */
+    public void setRank(Integer rank) {
+        this.rank = rank;
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/domain/entity/GridGroup.java b/src/main/kotlin/com/flightfeather/uav/domain/entity/GridGroup.java
new file mode 100644
index 0000000..8d3bd89
--- /dev/null
+++ b/src/main/kotlin/com/flightfeather/uav/domain/entity/GridGroup.java
@@ -0,0 +1,200 @@
+package com.flightfeather.uav.domain.entity;
+
+import java.util.Date;
+import javax.persistence.*;
+
+@Table(name = "grid_group")
+public class GridGroup {
+    @Id
+    private Integer id;
+
+    /**
+     * 缃戞牸鍚嶇О
+     */
+    private String name;
+
+    @Column(name = "province_code")
+    private String provinceCode;
+
+    @Column(name = "province_name")
+    private String provinceName;
+
+    @Column(name = "city_code")
+    private String cityCode;
+
+    @Column(name = "city_name")
+    private String cityName;
+
+    @Column(name = "district_code")
+    private String districtCode;
+
+    @Column(name = "district_name")
+    private String districtName;
+
+    @Column(name = "town_code")
+    private String townCode;
+
+    @Column(name = "town_name")
+    private String townName;
+
+    @Column(name = "create_time")
+    private Date createTime;
+
+    /**
+     * @return id
+     */
+    public Integer getId() {
+        return id;
+    }
+
+    /**
+     * @param id
+     */
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    /**
+     * 鑾峰彇缃戞牸鍚嶇О
+     *
+     * @return name - 缃戞牸鍚嶇О
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * 璁剧疆缃戞牸鍚嶇О
+     *
+     * @param name 缃戞牸鍚嶇О
+     */
+    public void setName(String name) {
+        this.name = name == null ? null : name.trim();
+    }
+
+    /**
+     * @return province_code
+     */
+    public String getProvinceCode() {
+        return provinceCode;
+    }
+
+    /**
+     * @param provinceCode
+     */
+    public void setProvinceCode(String provinceCode) {
+        this.provinceCode = provinceCode == null ? null : provinceCode.trim();
+    }
+
+    /**
+     * @return province_name
+     */
+    public String getProvinceName() {
+        return provinceName;
+    }
+
+    /**
+     * @param provinceName
+     */
+    public void setProvinceName(String provinceName) {
+        this.provinceName = provinceName == null ? null : provinceName.trim();
+    }
+
+    /**
+     * @return city_code
+     */
+    public String getCityCode() {
+        return cityCode;
+    }
+
+    /**
+     * @param cityCode
+     */
+    public void setCityCode(String cityCode) {
+        this.cityCode = cityCode == null ? null : cityCode.trim();
+    }
+
+    /**
+     * @return city_name
+     */
+    public String getCityName() {
+        return cityName;
+    }
+
+    /**
+     * @param cityName
+     */
+    public void setCityName(String cityName) {
+        this.cityName = cityName == null ? null : cityName.trim();
+    }
+
+    /**
+     * @return district_code
+     */
+    public String getDistrictCode() {
+        return districtCode;
+    }
+
+    /**
+     * @param districtCode
+     */
+    public void setDistrictCode(String districtCode) {
+        this.districtCode = districtCode == null ? null : districtCode.trim();
+    }
+
+    /**
+     * @return district_name
+     */
+    public String getDistrictName() {
+        return districtName;
+    }
+
+    /**
+     * @param districtName
+     */
+    public void setDistrictName(String districtName) {
+        this.districtName = districtName == null ? null : districtName.trim();
+    }
+
+    /**
+     * @return town_code
+     */
+    public String getTownCode() {
+        return townCode;
+    }
+
+    /**
+     * @param townCode
+     */
+    public void setTownCode(String townCode) {
+        this.townCode = townCode == null ? null : townCode.trim();
+    }
+
+    /**
+     * @return towm_name
+     */
+    public String getTownName() {
+        return townName;
+    }
+
+    /**
+     * @param townName
+     */
+    public void setTownName(String townName) {
+        this.townName = townName == null ? null : townName.trim();
+    }
+
+    /**
+     * @return create_time
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    /**
+     * @param createTime
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/domain/mapper/GridCellMapper.kt b/src/main/kotlin/com/flightfeather/uav/domain/mapper/GridCellMapper.kt
new file mode 100644
index 0000000..489ecf6
--- /dev/null
+++ b/src/main/kotlin/com/flightfeather/uav/domain/mapper/GridCellMapper.kt
@@ -0,0 +1,8 @@
+package com.flightfeather.uav.domain.mapper
+
+import com.flightfeather.uav.domain.MyMapper
+import com.flightfeather.uav.domain.entity.GridCell
+import org.apache.ibatis.annotations.Mapper
+
+@Mapper
+interface GridCellMapper : MyMapper<GridCell?>
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/domain/mapper/GridDataDetailMapper.kt b/src/main/kotlin/com/flightfeather/uav/domain/mapper/GridDataDetailMapper.kt
new file mode 100644
index 0000000..1a6f152
--- /dev/null
+++ b/src/main/kotlin/com/flightfeather/uav/domain/mapper/GridDataDetailMapper.kt
@@ -0,0 +1,8 @@
+package com.flightfeather.uav.domain.mapper
+
+import com.flightfeather.uav.domain.MyMapper
+import com.flightfeather.uav.domain.entity.GridDataDetail
+import org.apache.ibatis.annotations.Mapper
+
+@Mapper
+interface GridDataDetailMapper : MyMapper<GridDataDetail?>
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/domain/mapper/GridDataMapper.kt b/src/main/kotlin/com/flightfeather/uav/domain/mapper/GridDataMapper.kt
new file mode 100644
index 0000000..e44eb7d
--- /dev/null
+++ b/src/main/kotlin/com/flightfeather/uav/domain/mapper/GridDataMapper.kt
@@ -0,0 +1,8 @@
+package com.flightfeather.uav.domain.mapper
+
+import com.flightfeather.uav.domain.MyMapper
+import com.flightfeather.uav.domain.entity.GridData
+import org.apache.ibatis.annotations.Mapper
+
+@Mapper
+interface GridDataMapper : MyMapper<GridData?>
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/domain/mapper/GridGroupMapper.kt b/src/main/kotlin/com/flightfeather/uav/domain/mapper/GridGroupMapper.kt
new file mode 100644
index 0000000..f4e429f
--- /dev/null
+++ b/src/main/kotlin/com/flightfeather/uav/domain/mapper/GridGroupMapper.kt
@@ -0,0 +1,8 @@
+package com.flightfeather.uav.domain.mapper
+
+import com.flightfeather.uav.domain.MyMapper
+import com.flightfeather.uav.domain.entity.GridGroup
+import org.apache.ibatis.annotations.Mapper
+
+@Mapper
+interface GridGroupMapper : MyMapper<GridGroup?>
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/domain/repository/RealTimeDataRep.kt b/src/main/kotlin/com/flightfeather/uav/domain/repository/RealTimeDataRep.kt
index 718bdd4..b7163b7 100644
--- a/src/main/kotlin/com/flightfeather/uav/domain/repository/RealTimeDataRep.kt
+++ b/src/main/kotlin/com/flightfeather/uav/domain/repository/RealTimeDataRep.kt
@@ -48,37 +48,6 @@
                 }
             }
         }
-
-
-//        var result = listOf<BaseRealTimeData>()
-//        when (deviceType) {
-//            UWDeviceType.VEHICLE -> {
-//                result = realTimeDataVehicleMapper.selectByExample(Example(RealTimeDataVehicle::class.java).apply {
-//                    getSecondDataExample(this, deviceCode, sTime, eTime)
-//                })
-//            }
-//            UWDeviceType.UAV -> {
-//                result = realTimeDataUavMapper.selectByExample(Example(RealTimeDataUav::class.java).apply {
-//                    getSecondDataExample(this, deviceCode, sTime, eTime)
-//                })
-//            }
-//            UWDeviceType.GRID -> {
-//                // 缃戞牸鍖栫洃娴嬬绾у��
-//                result = if (type == null || type == 0) {
-//                    realTimeDataGridMapper.selectByExample(Example(RealTimeDataGrid::class.java).apply {
-//                        getSecondDataExample(this, deviceCode, sTime, eTime)
-//                    })
-//                }
-//                // 缃戞牸鍖栫洃娴嬪垎閽熷��
-//                else {
-//                    realTimeDataGridMinMapper.selectByExample(Example(RealTimeDataGridMin::class.java).apply {
-//                        getSecondDataExample(this, deviceCode, sTime, eTime)
-//                    })
-//                }
-//            }
-//            else -> Unit
-//        }
-//        return result
     }
 
     fun fetchData(mission: Mission) =
@@ -87,13 +56,6 @@
 
     fun saveData(deviceType: UWDeviceType?, data: List<BaseRealTimeData>, type: Int? = 0): Int {
         return delegate.insertByDeviceType(deviceType, type, data)
-//        return when (deviceType) {
-//            UWDeviceType.UAV -> realTimeDataUavMapper.insertList(data as List<RealTimeDataUav>)
-//            UWDeviceType.VEHICLE -> realTimeDataVehicleMapper.insertList(data as List<RealTimeDataVehicle>)
-//            UWDeviceType.GRID -> realTimeDataGridMapper.insertList(data as List<RealTimeDataGrid>)
-//            UWDeviceType.BOAT -> 0
-//            else -> 0
-//        }
     }
 
     fun deleteData(mission: Mission, type: Int? = 0): Int {
diff --git a/src/main/kotlin/com/flightfeather/uav/domain/repository/SatelliteGridRep.kt b/src/main/kotlin/com/flightfeather/uav/domain/repository/SatelliteGridRep.kt
new file mode 100644
index 0000000..2c0db63
--- /dev/null
+++ b/src/main/kotlin/com/flightfeather/uav/domain/repository/SatelliteGridRep.kt
@@ -0,0 +1,62 @@
+package com.flightfeather.uav.domain.repository
+
+import com.flightfeather.uav.domain.entity.GridCell
+import com.flightfeather.uav.domain.entity.GridData
+import com.flightfeather.uav.domain.entity.GridDataDetail
+import com.flightfeather.uav.domain.entity.GridGroup
+import com.flightfeather.uav.domain.mapper.GridCellMapper
+import com.flightfeather.uav.domain.mapper.GridDataDetailMapper
+import com.flightfeather.uav.domain.mapper.GridDataMapper
+import com.flightfeather.uav.domain.mapper.GridGroupMapper
+import com.flightfeather.uav.lightshare.bean.AreaVo
+import org.springframework.stereotype.Repository
+import tk.mybatis.mapper.entity.Example
+import java.time.LocalDateTime
+
+/**
+ * 鍗槦缃戞牸閬ユ祴鏁版嵁搴撶浉鍏虫搷浣�
+ * @date 2024/12/11
+ * @author feiyu02
+ */
+@Repository
+class SatelliteGridRep(
+    private val gridGroupMapper: GridGroupMapper,
+    private val gridCellMapper: GridCellMapper,
+    private val gridDataMapper: GridDataMapper,
+    private val gridDataDetailMapper: GridDataDetailMapper,
+) {
+
+    fun fetchGridGroup(areaVo: AreaVo): List<GridGroup?> {
+        return gridGroupMapper.selectByExample(Example(GridGroup::class.java).apply {
+            createCriteria()
+                .andEqualTo("provinceCode", areaVo.provinceCode).andEqualTo("provinceName", areaVo.provinceName)
+                .andEqualTo("cityCode", areaVo.cityCode).andEqualTo("cityName", areaVo.cityName)
+                .andEqualTo("districtCode", areaVo.districtCode).andEqualTo("districtName", areaVo.districtName)
+                .andEqualTo("townCode", areaVo.townCode).andEqualTo("townName", areaVo.townName)
+        })
+    }
+
+    fun fetchGridCell(groupId: Int): List<GridCell?> {
+        return gridCellMapper.selectByExample(Example(GridCell::class.java).apply {
+            createCriteria().andEqualTo("groupId", groupId)
+            orderBy("id")
+        })
+    }
+
+    fun fetchGridData(groupId: Int, dataTime: LocalDateTime?, type: Int?): List<GridData?> {
+        return gridDataMapper.selectByExample(Example(GridData::class.java).apply {
+            createCriteria().andEqualTo("groupId", groupId)
+                .andEqualTo("dataTime", dataTime)
+                .andEqualTo("type", type)
+        })
+    }
+
+    fun fetchGridDataDetail(dataId: Int, groupId: Int?, cellId: Int?): List<GridDataDetail?> {
+        return gridDataDetailMapper.selectByExample(Example(GridDataDetail::class.java).apply {
+            createCriteria().andEqualTo("dataId", dataId)
+                .andEqualTo("groupId", groupId)
+                .andEqualTo("cellId", cellId)
+            orderBy("cellId")
+        })
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/lightshare/service/MissionService.kt b/src/main/kotlin/com/flightfeather/uav/lightshare/service/MissionService.kt
index 1a83248..bd49475 100644
--- a/src/main/kotlin/com/flightfeather/uav/lightshare/service/MissionService.kt
+++ b/src/main/kotlin/com/flightfeather/uav/lightshare/service/MissionService.kt
@@ -10,6 +10,8 @@
 
     fun createMission(mission: Mission): BaseResponse<Boolean>
 
+    fun updateMission(mission: Mission): BaseResponse<Boolean>
+
     fun deleteMission(missionCode: String): BaseResponse<Boolean>
 
     fun deleteMissionAndData(missionCode: String): Boolean
diff --git a/src/main/kotlin/com/flightfeather/uav/lightshare/service/SatelliteTelemetryService.kt b/src/main/kotlin/com/flightfeather/uav/lightshare/service/SatelliteTelemetryService.kt
new file mode 100644
index 0000000..8263119
--- /dev/null
+++ b/src/main/kotlin/com/flightfeather/uav/lightshare/service/SatelliteTelemetryService.kt
@@ -0,0 +1,25 @@
+package com.flightfeather.uav.lightshare.service
+
+import com.flightfeather.uav.domain.entity.GridCell
+import com.flightfeather.uav.domain.entity.GridData
+import com.flightfeather.uav.domain.entity.GridDataDetail
+import com.flightfeather.uav.domain.entity.GridGroup
+import com.flightfeather.uav.lightshare.bean.AreaVo
+import com.flightfeather.uav.lightshare.bean.DataHead
+import java.time.LocalDateTime
+
+/**
+ *
+ * @date 2024/12/5
+ * @author feiyu02
+ */
+interface SatelliteTelemetryService {
+
+    fun fetchGridGroup(areaVo: AreaVo, page: Int?, perPage: Int?): Pair<DataHead, List<GridGroup?>>
+
+    fun fetchGridCell(groupId: Int): List<GridCell?>
+
+    fun fetchGridData(groupId: Int, dataTime: LocalDateTime?, type: Int?): List<GridData?>
+
+    fun fetchGridDataDetail(dataId: Int, groupId: Int?, cellId: Int?): List<GridDataDetail?>
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/MissionServiceImpl.kt b/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/MissionServiceImpl.kt
index a1b05e1..e0f0d8a 100644
--- a/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/MissionServiceImpl.kt
+++ b/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/MissionServiceImpl.kt
@@ -47,6 +47,12 @@
         }
     }
 
+    override fun updateMission(mission: Mission): BaseResponse<Boolean> {
+        missionMapper.updateByPrimaryKey(mission).let {
+            return BaseResponse(it == 1)
+        }
+    }
+
     override fun deleteMission(missionCode: String): BaseResponse<Boolean> {
         missionMapper.deleteByPrimaryKey(missionCode).let {
             return BaseResponse(it == 1)
diff --git a/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/SatelliteTelemetryServiceImpl.kt b/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/SatelliteTelemetryServiceImpl.kt
new file mode 100644
index 0000000..60ef723
--- /dev/null
+++ b/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/SatelliteTelemetryServiceImpl.kt
@@ -0,0 +1,40 @@
+package com.flightfeather.uav.lightshare.service.impl
+
+import com.flightfeather.uav.domain.entity.GridCell
+import com.flightfeather.uav.domain.entity.GridData
+import com.flightfeather.uav.domain.entity.GridDataDetail
+import com.flightfeather.uav.domain.entity.GridGroup
+import com.flightfeather.uav.domain.repository.SatelliteGridRep
+import com.flightfeather.uav.lightshare.bean.AreaVo
+import com.flightfeather.uav.lightshare.bean.DataHead
+import com.flightfeather.uav.lightshare.service.SatelliteTelemetryService
+import com.github.pagehelper.PageHelper
+import org.springframework.stereotype.Service
+import java.time.LocalDateTime
+
+/**
+ *
+ * @date 2024/12/5
+ * @author feiyu02
+ */
+@Service
+class SatelliteTelemetryServiceImpl(private val satelliteGridRep: SatelliteGridRep) : SatelliteTelemetryService {
+
+    override fun fetchGridGroup(areaVo: AreaVo, page: Int?, perPage: Int?): Pair<DataHead, List<GridGroup?>> {
+        val pageInfo = PageHelper.startPage<GridGroup>(page ?: 1, perPage ?: 100)
+        val res = satelliteGridRep.fetchGridGroup(areaVo)
+        return DataHead(pageInfo.pageNum, pageInfo.pages) to res
+    }
+
+    override fun fetchGridCell(groupId: Int): List<GridCell?> {
+        return satelliteGridRep.fetchGridCell(groupId)
+    }
+
+    override fun fetchGridData(groupId: Int, dataTime: LocalDateTime?, type: Int?): List<GridData?> {
+        return satelliteGridRep.fetchGridData(groupId, dataTime, type)
+    }
+
+    override fun fetchGridDataDetail(dataId: Int, groupId: Int?, cellId: Int?): List<GridDataDetail?> {
+        return satelliteGridRep.fetchGridDataDetail(dataId, groupId, cellId)
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/flightfeather/uav/lightshare/web/MissionController.kt b/src/main/kotlin/com/flightfeather/uav/lightshare/web/MissionController.kt
index 4af2908..d220000 100644
--- a/src/main/kotlin/com/flightfeather/uav/lightshare/web/MissionController.kt
+++ b/src/main/kotlin/com/flightfeather/uav/lightshare/web/MissionController.kt
@@ -23,6 +23,11 @@
         @RequestBody mission: Mission
     ) = missionService.createMission(mission)
 
+    @PostMapping("/update")
+    fun updateMission(
+        @RequestBody mission: Mission
+    ) = missionService.updateMission(mission)
+
     @PostMapping("/delete")
     fun deleteMission(
         @RequestParam("missionCode") missionCode: String
diff --git a/src/main/kotlin/com/flightfeather/uav/lightshare/web/SatelliteTelemetryController.kt b/src/main/kotlin/com/flightfeather/uav/lightshare/web/SatelliteTelemetryController.kt
new file mode 100644
index 0000000..2ac67d6
--- /dev/null
+++ b/src/main/kotlin/com/flightfeather/uav/lightshare/web/SatelliteTelemetryController.kt
@@ -0,0 +1,52 @@
+package com.flightfeather.uav.lightshare.web
+
+import com.fasterxml.jackson.annotation.JsonFormat
+import com.flightfeather.uav.lightshare.bean.AreaVo
+import com.flightfeather.uav.lightshare.service.SatelliteTelemetryService
+import io.swagger.annotations.Api
+import io.swagger.annotations.ApiOperation
+import io.swagger.annotations.ApiParam
+import org.springframework.web.bind.annotation.*
+import java.time.LocalDateTime
+
+/**
+ * 鍗槦閬ユ祴
+ * @date 2024/12/5
+ * @author feiyu02
+ */
+@Api(tags = ["鍗槦閬ユ祴API鎺ュ彛"])
+@RestController
+@RequestMapping("air/satellite")
+class SatelliteTelemetryController(private val satelliteTelemetryService: SatelliteTelemetryService) {
+
+    @ApiOperation(value = "鑾峰彇缃戞牸缁勪俊鎭�")
+    @PostMapping("/grid/group")
+    fun fetchGridGroup(
+        @RequestBody areaVo: AreaVo,
+        @RequestParam("page", required = false) page: Int?,
+        @RequestParam("per_page", required = false) perPage: Int?
+    ) = resPack { satelliteTelemetryService.fetchGridGroup(areaVo, page, perPage) }
+
+    @ApiOperation(value = "鑾峰彇缃戞牸缁勫唴鍏蜂綋缃戞牸淇℃伅")
+    @GetMapping("/grid/cell")
+    fun fetchGridCell(
+        @ApiParam("缃戞牸缁刬d") @RequestParam groupId: Int,
+    ) = resPack { satelliteTelemetryService.fetchGridCell(groupId) }
+
+    @ApiOperation(value = "鑾峰彇缃戞牸缁勪笅鐨勫崼鏄熼仴娴嬫暟鎹�")
+    @GetMapping("/grid/data")
+    fun fetchGridData(
+        @ApiParam("缃戞牸缁刬d") @RequestParam groupId: Int,
+        @ApiParam("閬ユ祴鏁版嵁鏃堕棿")
+        @RequestParam(required = false) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") dataTime: LocalDateTime?,
+        @ApiParam("閬ユ祴鏁版嵁绫诲瀷", allowableValues = "0锛氬師濮嬪崼鏄熼仴娴嬫暟鎹紱1锛氳瀺鍚堟暟鎹�") @RequestParam(required = false) type: Int?,
+    ) = resPack { satelliteTelemetryService.fetchGridData(groupId, dataTime, type) }
+
+    @ApiOperation(value = "鑾峰彇缃戞牸缁勪笅鐨勫崼鏄熼仴娴嬪叿浣撴暟鎹�")
+    @GetMapping("/grid/data/detail")
+    fun fetchGridDataDetail(
+        @ApiParam("閬ユ祴鏁版嵁id") @RequestParam dataId: Int,
+        @ApiParam("缃戞牸缁刬d") @RequestParam(required = false) groupId: Int?,
+        @ApiParam("缃戞牸鍗曞厓鏍糹d") @RequestParam(required = false) cellId: Int?,
+    ) = resPack { satelliteTelemetryService.fetchGridDataDetail(dataId, groupId, cellId) }
+}
\ No newline at end of file
diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml
index 75ca738..02d8369 100644
--- a/src/main/resources/application-test.yml
+++ b/src/main/resources/application-test.yml
@@ -7,13 +7,13 @@
     #    password: cn.FLIGHTFEATHER
 
     #   杩滅▼鏈嶅姟鍣�
-#    url: jdbc:mysql://47.100.191.150:3306/dronemonitor?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
-#    username: remoteU1
-#    password: eSoF8DnzfGTlhAjE
-
-    url: jdbc:mysql://114.215.109.124:3306/dronemonitor?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
+    url: jdbc:mysql://47.100.191.150:3306/dronemonitor?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
     username: remoteU1
-    password: feiyu2024
+    password: eSoF8DnzfGTlhAjE
+
+#    url: jdbc:mysql://114.215.109.124:3306/dronemonitor?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
+#    username: remoteU1
+#    password: feiyu2024
 
 springfox:
   documentation:
diff --git a/src/main/resources/generator/generatorConfig.xml b/src/main/resources/generator/generatorConfig.xml
index d2ff3fc..050233a 100644
--- a/src/main/resources/generator/generatorConfig.xml
+++ b/src/main/resources/generator/generatorConfig.xml
@@ -55,12 +55,15 @@
 <!--        <table tableName="real_time_data_grid" domainObjectName="RealTimeDataGrid" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>-->
 <!--        <table tableName="real_time_data_uav" domainObjectName="RealTimeDataUav" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>-->
 <!--        <table tableName="real_time_data_vehicle" domainObjectName="RealTimeDataVehicle" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>-->
-        <table tableName="device_info" domainObjectName="DeviceInfo" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>
+<!--        <table tableName="device_info" domainObjectName="DeviceInfo" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>-->
 <!--        <table tableName="factor_calibration" domainObjectName="FactorCalibration" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>-->
 <!--        <table tableName="real_time_data_grid_min" domainObjectName="RealTimeDataGridMin" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>-->
 <!--        <table tableName="real_time_data_grid_opt" domainObjectName="RealTimeDataGridOpt" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>-->
 <!--        <table tableName="scene_info" domainObjectName="SceneInfo" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>-->
-<!--        <table tableName="segment_info" domainObjectName="SegmentInfo" enableCountByExample="false"-->
-<!--               enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>-->
+<!--        <table tableName="segment_info" domainObjectName="SegmentInfo" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>-->
+        <table tableName="grid_group" domainObjectName="GridGroup" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>
+        <table tableName="grid_cell" domainObjectName="GridCell" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>
+        <table tableName="grid_data" domainObjectName="GridData" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>
+        <table tableName="grid_data_detail" domainObjectName="GridDataDetail" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>
     </context>
 </generatorConfiguration>
\ No newline at end of file
diff --git a/src/main/resources/mapper/GridCellMapper.xml b/src/main/resources/mapper/GridCellMapper.xml
new file mode 100644
index 0000000..980c616
--- /dev/null
+++ b/src/main/resources/mapper/GridCellMapper.xml
@@ -0,0 +1,28 @@
+<?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.flightfeather.uav.domain.mapper.GridCellMapper">
+  <resultMap id="BaseResultMap" type="com.flightfeather.uav.domain.entity.GridCell">
+    <!--
+      WARNING - @mbg.generated
+    -->
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="group_id" jdbcType="INTEGER" property="groupId" />
+    <result column="latitude" jdbcType="DECIMAL" property="latitude" />
+    <result column="longitude" jdbcType="DECIMAL" property="longitude" />
+    <result column="point1_lon" jdbcType="VARCHAR" property="point1Lon" />
+    <result column="point1_lat" jdbcType="VARCHAR" property="point1Lat" />
+    <result column="point2_lon" jdbcType="VARCHAR" property="point2Lon" />
+    <result column="point2_lat" jdbcType="VARCHAR" property="point2Lat" />
+    <result column="point3_lon" jdbcType="VARCHAR" property="point3Lon" />
+    <result column="point3_lat" jdbcType="VARCHAR" property="point3Lat" />
+    <result column="point4_lon" jdbcType="VARCHAR" property="point4Lon" />
+    <result column="point4_lat" jdbcType="VARCHAR" property="point4Lat" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--
+      WARNING - @mbg.generated
+    -->
+    id, group_id, latitude, longitude, point1_lon, point1_lat, point2_lon, point2_lat, 
+    point3_lon, point3_lat, point4_lon, point4_lat
+  </sql>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/GridDataDetailMapper.xml b/src/main/resources/mapper/GridDataDetailMapper.xml
new file mode 100644
index 0000000..6312fe3
--- /dev/null
+++ b/src/main/resources/mapper/GridDataDetailMapper.xml
@@ -0,0 +1,21 @@
+<?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.flightfeather.uav.domain.mapper.GridDataDetailMapper">
+  <resultMap id="BaseResultMap" type="com.flightfeather.uav.domain.entity.GridDataDetail">
+    <!--
+      WARNING - @mbg.generated
+    -->
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="data_id" jdbcType="INTEGER" property="dataId" />
+    <result column="group_id" jdbcType="INTEGER" property="groupId" />
+    <result column="cell_id" jdbcType="INTEGER" property="cellId" />
+    <result column="PM25" jdbcType="REAL" property="pm25" />
+    <result column="rank" jdbcType="INTEGER" property="rank" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--
+      WARNING - @mbg.generated
+    -->
+    id, data_id, group_id, cell_id, PM25, rank
+  </sql>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/GridDataMapper.xml b/src/main/resources/mapper/GridDataMapper.xml
new file mode 100644
index 0000000..188f9d0
--- /dev/null
+++ b/src/main/resources/mapper/GridDataMapper.xml
@@ -0,0 +1,20 @@
+<?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.flightfeather.uav.domain.mapper.GridDataMapper">
+  <resultMap id="BaseResultMap" type="com.flightfeather.uav.domain.entity.GridData">
+    <!--
+      WARNING - @mbg.generated
+    -->
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="group_id" jdbcType="INTEGER" property="groupId" />
+    <result column="data_time" jdbcType="TIMESTAMP" property="dataTime" />
+    <result column="type" jdbcType="TINYINT" property="type" />
+    <result column="mix_data_id" jdbcType="VARCHAR" property="mixDataId" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--
+      WARNING - @mbg.generated
+    -->
+    id, group_id, data_time, type, mix_data_id
+  </sql>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/GridGroupMapper.xml b/src/main/resources/mapper/GridGroupMapper.xml
new file mode 100644
index 0000000..b0e9e5a
--- /dev/null
+++ b/src/main/resources/mapper/GridGroupMapper.xml
@@ -0,0 +1,27 @@
+<?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.flightfeather.uav.domain.mapper.GridGroupMapper">
+  <resultMap id="BaseResultMap" type="com.flightfeather.uav.domain.entity.GridGroup">
+    <!--
+      WARNING - @mbg.generated
+    -->
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="name" jdbcType="VARCHAR" property="name" />
+    <result column="province_code" jdbcType="VARCHAR" property="provinceCode" />
+    <result column="province_name" jdbcType="VARCHAR" property="provinceName" />
+    <result column="city_code" jdbcType="VARCHAR" property="cityCode" />
+    <result column="city_name" jdbcType="VARCHAR" property="cityName" />
+    <result column="district_code" jdbcType="VARCHAR" property="districtCode" />
+    <result column="district_name" jdbcType="VARCHAR" property="districtName" />
+    <result column="town_code" jdbcType="VARCHAR" property="townCode" />
+    <result column="town_name" jdbcType="VARCHAR" property="townName" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--
+      WARNING - @mbg.generated
+    -->
+    id, name, province_code, province_name, city_code, city_name, district_code, district_name, 
+    town_code, town_name, create_time
+  </sql>
+</mapper>
\ No newline at end of file
diff --git a/src/test/kotlin/com/flightfeather/uav/Test.kt b/src/test/kotlin/com/flightfeather/uav/Test.kt
index 64a939e..99f1d8b 100644
--- a/src/test/kotlin/com/flightfeather/uav/Test.kt
+++ b/src/test/kotlin/com/flightfeather/uav/Test.kt
@@ -127,9 +127,6 @@
 
     @Test
     fun foo17() {
-        repeat(8) {
-            if (it == 5) return@repeat
-            println(it)
-        }
+        val a = listOf(1, 2, 3)
     }
 }
\ No newline at end of file
diff --git a/src/test/kotlin/com/flightfeather/uav/lightshare/service/impl/SatelliteTelemetryServiceImplTest.kt b/src/test/kotlin/com/flightfeather/uav/lightshare/service/impl/SatelliteTelemetryServiceImplTest.kt
new file mode 100644
index 0000000..c272769
--- /dev/null
+++ b/src/test/kotlin/com/flightfeather/uav/lightshare/service/impl/SatelliteTelemetryServiceImplTest.kt
@@ -0,0 +1,37 @@
+package com.flightfeather.uav.lightshare.service.impl
+
+import com.flightfeather.uav.domain.entity.GridDataDetail
+import com.flightfeather.uav.domain.mapper.GridDataDetailMapper
+import org.junit.Assert.*
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.test.context.SpringBootTest
+import org.springframework.test.context.junit4.SpringRunner
+import tk.mybatis.mapper.entity.Example
+
+@RunWith(SpringRunner::class)
+@SpringBootTest
+class SatelliteTelemetryServiceImplTest {
+
+    @Autowired
+    lateinit var gridDataDetailMapper: GridDataDetailMapper
+
+    /**
+     * 鍒锋柊姣忕粍鏁版嵁鐨勬暟鎹帓鍚�
+     */
+    @Test
+    fun refreshDataRank() {
+        for (i in 1..25) {
+            val dataDetailList = gridDataDetailMapper.selectByExample(Example(GridDataDetail::class.java).apply {
+                createCriteria().andEqualTo("dataId", i)
+                orderBy("pm25").desc()
+            })
+            dataDetailList.forEachIndexed { i, d ->
+                d?.rank = i + 1
+                gridDataDetailMapper.updateByPrimaryKey(d)
+            }
+            println("finish --${i}")
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3