diff --git a/device-manager-ui/admin/src/components/Map.vue b/device-manager-ui/admin/src/components/Map.vue
index b64db5e33e835ab51f2ba57f660b31440bc7959f..87c553935aa0db61a71dee10faf5dcb6befed4e1 100644
--- a/device-manager-ui/admin/src/components/Map.vue
+++ b/device-manager-ui/admin/src/components/Map.vue
@@ -18,33 +18,95 @@
       <el-amap-marker
         v-for="(marker, index) in markers"
         :key="'marker' + index"
-        :events="events"
+        :events="marker.events"
         :position="marker.position"
         :label="marker.label"
         :icon="marker.icon"
-        :extData="marker.extData"
+        :extData="marker"
       >
       </el-amap-marker>
 
-      <!-- 鏍囪 -->
-      <!-- <el-amap-marker v-for="(marker, index) in markers" :position="marker" :key="index"></el-amap-marker> -->
-      <!-- <el-amap-marker v-for="(marker, index) in markers" :key="index" :position="marker.position">
-          <div class='map-marker'>
-            <img src="../assets/images/ego_box_img_normal.png" alt="">
-            <p>
-              <el-tag type='danger'>1231</el-tag>
-            </p>
-          </div>
-        </el-amap-marker> -->
+      <!--淇℃伅绐椾綋-->
+      <el-amap-info-window
+        :position="window.position"
+        :visible="window.visible"
+        :content="window.content"
+        ><el-row :body-style="{ padding: '0px' }">
+          <el-row type="flex" justify="space-between">
+            <span style="font-size: 18px"
+              ><b>{{ info.siteName }}</b></span
+            >
+
+            <el-button
+              type="text"
+              size="mini"
+              @click="getDeviceDetial"
+              class="button"
+              >鏌ョ湅璇︽儏</el-button
+            >
+          </el-row>
+          <el-divider></el-divider>
+          <el-row type="flex" justify="space-around">
+            <el-col :span="4">
+              <span style="font-size: 13px"
+                ><b>{{ info.deviceTotal }}</b></span
+              ><br />
+              <span style="font-size: 12px">璁惧鎬绘暟</span>
+            </el-col>
+            <el-col :span="4">
+              <span style="font-size: 13px"
+                ><b style="color: green">{{ info.onlineCount }}</b></span
+              ><br />
+              <span style="font-size: 12px">鍦ㄧ嚎</span>
+            </el-col>
+            <el-col :span="4">
+              <span style="font-size: 13px"
+                ><b style="color: red">{{ info.offlineCount }}</b></span
+              ><br />
+              <span style="font-size: 12px">绂荤嚎</span>
+            </el-col>
+            <el-col :span="4">
+              <span style="font-size: 13px"
+                ><b style="color: orange">{{ info.stopCount }}</b></span
+              ><br />
+              <span style="font-size: 12px">鍋滅敤</span>
+            </el-col>
+            <el-col :span="4">
+              <span style="font-size: 13px"
+                ><b style="color: grey">{{ info.unActiveCount }}</b></span
+              ><br />
+              <span style="font-size: 12px">寰呮縺娲�</span>
+            </el-col>
+          </el-row>
+          <el-divider></el-divider>
+          <el-descriptions :column="1" size="small">
+            <el-descriptions-item label="绔欑偣缂栫爜">{{
+              info.siteCode
+            }}</el-descriptions-item>
+            <el-descriptions-item label="绔欑偣鍦板潃">{{
+              info.address
+            }}</el-descriptions-item>
+            <el-descriptions-item
+              label="鑱旂郴浜�"
+              :labelStyle="{ 'text-align': 'right', width: '50px' }"
+              >{{ info.leadingOfficial }}</el-descriptions-item
+            >
+            <el-descriptions-item label="鑱旂郴鐢佃瘽">
+              {{ info.leadingOfficialTelephone }}
+            </el-descriptions-item>
+            <el-descriptions-item label="鍒涘缓鏃堕棿">{{
+              formatterDate(info.createTime)
+            }}</el-descriptions-item>
+          </el-descriptions>
+        </el-row></el-amap-info-window
+      >
     </el-amap>
-    <!-- <div slot="footer" class="dialog-footer">
-        <el-button size='mini' @click="$emit('input', false)">鍙� 娑�</el-button>
-        <el-button size='mini' type="primary" @click="choose">纭� 瀹�</el-button>
-      </div> -->
   </div>
 </template>
 
 <script>
+import { formatterDate } from "@/assets/utils/index";
+
 import { AMapManager, lazyAMapApiLoaderInstance } from "vue-amap";
 let amapManager = new AMapManager();
 
@@ -73,31 +135,55 @@ export default {
       },
     },
   },
+  created() {
+    this.refresh( this.markersData)
+  },
   methods: {
+    formatterDate,
+    getDeviceDetial(){
+
+       //鑾峰彇璁惧鍒楄〃
+       console.log("device siteId",this.info.siteId)
+
+    },
     refresh(data) {
       console.log("鍒锋柊鏁版嵁", data);
       this.markersData = data;
 
       this.markersData.map((item) => {
-        this.setMarker(item.lng, item.lat, item.address, item.siteId);
+       // console.log("marker", item);
+        this.setMarker(item);
       });
     },
 
-    relocate(center){
-     this.center = [center.lng, center.lat];
-     this.zoom=12
-       //閲嶆柊瀹氫綅涓績鐐�
+    relocate(center) {
+      this.center = [center.lng, center.lat];
+      this.zoom = 10;
+      //閲嶆柊瀹氫綅涓績鐐�
     },
 
-    setMarker(lng, lat, address, siteId) {
-      if (!lng && !lat) return;
-      const size = (address || "").length * 5;
+    setMarker(item) {
+      if (!item.lng && !item.lat) return;
+
+      //console.log("data",formatterDate(item.createTime))
 
       let markerLabel = {
-        label: { content: address, offset: [30, 70] },
-        position: [lng, lat],
+        label: { content: item.siteName, offset: [30, 70] },
+        position: [item.lng, item.lat],
         icon: require("@/assets/images/ego_box_img_normal.png"),
-        extData: { siteId: siteId },
+        extData: item,
+        events: {
+          click: (e) => {
+            console.log("getExtData", e.target.getExtData());
+            let exData = e.target.getExtData();
+            this.info = exData.extData;
+            this.window.position = exData.position;
+
+            this.$nextTick(() => {
+              this.window.visible = true; //鐐瑰嚮鐐瑰潗鏍囷紝鍑虹幇淇℃伅绐椾綋
+            });
+          },
+        },
       };
 
       this.markers.push(markerLabel);
@@ -121,43 +207,87 @@ export default {
     },
     choose() {
       this.$emit("input", false);
-      this.$emit("choose", JSON.parse(JSON.stringify(this.mapData)));
+      this.$emit("choose", JSON.parse(JSON.stringify(this.mapData)), (val) => {
+        //data = val;
+
+        console.log("callback:" + val);
+      });
     },
   },
   data() {
     let self = this;
     return {
+      visiblepop: false,
       searchEvents: {
         init: (e) => {},
       },
+      window: {
+        position: [104.405994, 30.915378],
+        visible: false,
+        content: '<div class="red">Hi! I am here!</div>',
+      },
       mapData: {},
+      info: {},
       markers: [],
       geocoder: null,
       amapManager,
       zoom: 8,
       center: [104.007767, 30.568308],
       marker: {},
-      events: {
-        init: (e) => {
-          this.geocoder = new AMap.Geocoder();
-          console.log("markersData", this.markersData);
-          // this.markersData.map((item) => {
-          //   this.setMarker(item.lng, item.lat, item.address);
-          // });
-        },
-        click: (e) => {
-          //alert(e.target.getExtData().siteId);
-          this.$emit("choose", e.target.getExtData().siteId);
-          // const { lat, lng } = e.lnglat;
-          // this.geocoder.getAddress([lng, lat], (status, result) => {
-          //   if (status === "complete" && result.info === "OK") {
-          //     const address = result.regeocode.formattedAddress;
-          //     this.setMarker(lng, lat, address);
-          //     this.center = [lng, lat];
-          //   }
-          // });
-        },
-      },
+      //   events: {
+      //     init: (e) => {
+      //       this.geocoder = new AMap.Geocoder();
+      //       console.log("markersData", this.markersData);
+      //       // this.markersData.map((item) => {
+      //       //   this.setMarker(item.lng, item.lat, item.address);
+      //       // });
+      //     },
+      //     click: (e) => {
+      //       console.log(e);
+      //       self.window.position = [e.lnglat.lng, e.lnglat.lat];
+
+      //       self.window.content=` <el-card :body-style="{ padding: '0px' }">
+      //   <img src="https://shadow.elemecdn.com/app/element/hamburger.9cf7b091-55e9-11e9-a976-7f4d0b07eef6.png" class="image">
+      //   <div style="padding: 14px;">
+      //     <span>濂藉悆鐨勬眽鍫�</span>
+      //     <div class="bottom clearfix">
+      //       <time class="time">{{ currentDate }}</time>
+      //       <el-button type="text" class="button">鎿嶄綔鎸夐挳</el-button>
+      //     </div>
+      //   </div>
+      // </el-card>`
+
+      //       console.log(self.window)
+
+      //       self.$nextTick(() => {
+      //         self.window.visible = true; //鐐瑰嚮鐐瑰潗鏍囷紝鍑虹幇淇℃伅绐椾綋
+      //       });
+
+      //       //鏇存柊绐椾綋鏁版嵁锛�
+
+      //       // that.windows.forEach((window) => {
+      //       //   window.visible = false; //鍏抽棴绐椾綋
+      //       // });
+      //       // that.window = that.windows[index];
+      //       // that.$nextTick(() => {
+      //       //   that.window.visible = true; //鐐瑰嚮鐐瑰潗鏍囷紝鍑虹幇淇℃伅绐椾綋
+      //       // });
+
+      //       alert(e.target.getExtData());
+      //       // this.visiblepop = true;
+      //       // let resp=this.$emit("choose", e.target.getExtData().siteId);
+
+      //       //console.log("resp",resp)
+      //       // const { lat, lng } = e.lnglat;
+      //       // this.geocoder.getAddress([lng, lat], (status, result) => {
+      //       //   if (status === "complete" && result.info === "OK") {
+      //       //     const address = result.regeocode.formattedAddress;
+      //       //     this.setMarker(lng, lat, address);
+      //       //     this.center = [lng, lat];
+      //       //   }
+      //       // });
+      //     },
+      //  },
       // 涓€浜涘伐鍏锋彃浠�
       plugin: [
         {
@@ -236,6 +366,12 @@ export default {
 </script>
 
 <style lang="less">
+.amap-info-content {
+  position: relative;
+  background: #fff;
+  line-height: 1.4;
+  overflow: auto;
+}
 .my-map {
   .amap-demo {
     position: relative;
diff --git a/device-manager-ui/admin/src/components/SearchForm.vue b/device-manager-ui/admin/src/components/SearchForm.vue
index 033b5cb0a9cea1d722c96e3abcf2010a5e819ad1..ac19577383fb339c3188c7478a5dfba06b4a2e60 100644
--- a/device-manager-ui/admin/src/components/SearchForm.vue
+++ b/device-manager-ui/admin/src/components/SearchForm.vue
@@ -229,10 +229,7 @@ export default {
       //鍒濆鍖栨煡璇㈣〃鍗�
       let newFormData = {};
       // this.form = this.encode(data, this.form);
-      console.log("data", data);
-      console.log("form", this.form);
       this.search.forEach((item) => {
-        console.log("search-item", item);
         //澶嶉€夋
         if (item.type === "checkbox") {
           if (this.form[item.name] == undefined) {
@@ -257,8 +254,6 @@ export default {
       });
       this.form = Object.assign({}, this.form, newFormData);
       this.form = Object.assign({}, this.form, data);
-
-      console.log("form2", this.form);
     },
     cleanForm() {
       this.clean();
diff --git a/device-manager-ui/admin/src/views/device/dialogshow.vue b/device-manager-ui/admin/src/views/device/dialogshow.vue
index 8c90981604f1fc099c26450adfcb5389b7c71473..66b8c8f83116086ade4587406127d7ffe164338b 100644
--- a/device-manager-ui/admin/src/views/device/dialogshow.vue
+++ b/device-manager-ui/admin/src/views/device/dialogshow.vue
@@ -51,6 +51,7 @@
                 title: "璁惧",
                 // 鏄惁鏄剧ず寮瑰嚭灞�
                 open: false,
+                direction:"rtl",
                 toString:[
                     "deviceType",
                     "deviceOnlineStatus",
diff --git a/device-manager-ui/admin/src/views/login/login.vue b/device-manager-ui/admin/src/views/login/login.vue
index eb297c963264b4f8303002aa0c2e1217e0747562..1c425a5c36e011b568405d561110084e64bc498d 100644
--- a/device-manager-ui/admin/src/views/login/login.vue
+++ b/device-manager-ui/admin/src/views/login/login.vue
@@ -19,36 +19,104 @@
 
     <div class="footer">
       鐧婚檰 &copy; <a href="">淇″畯缈旂綉缁滅鎶€鏈夐檺鍏徃</a> 鍑哄搧
-    </div>
+    </div> 
+
+    <!-- <Map ref="map1" :markersData="originData" @choose="getDetailData" /> -->
+
+    <!-- <el-card :body-style="{ padding: '5px' }" style="width: 300px">
+      <el-row type="flex" class="row-bg" justify="space-around">
+        <span style="font-size: 18px"><b>楂樻柊鍖烘斂鍔℃湇鍔′腑蹇�</b></span>
+
+        <el-button type="text" size="mini" class="button">鏌ョ湅璇︽儏</el-button>
+      </el-row>
+      <el-divider></el-divider>
+      <el-row type="flex" justify="space-around">
+        <el-col :span="4">
+          <span style="font-size: 13px"><b>100</b></span
+          ><br />
+          <span style="font-size: 12px">璁惧鎬绘暟</span>
+        </el-col>
+        <el-col :span="4">
+          <span style="font-size: 13px"><b>100</b></span
+          ><br />
+          <span style="font-size: 12px">鍦ㄧ嚎</span>
+        </el-col>
+        <el-col :span="4">
+          <span style="font-size: 13px"><b>100</b></span
+          ><br />
+          <span style="font-size: 12px">绂荤嚎</span>
+        </el-col>
+        <el-col :span="4">
+          <span style="font-size: 13px"><b>100</b></span
+          ><br />
+          <span style="font-size: 12px">鍋滅敤</span>
+        </el-col>
+        <el-col :span="4">
+          <span style="font-size: 13px"><b>100</b></span
+          ><br />
+          <span style="font-size: 12px">寰呮縺娲�</span>
+        </el-col>
+      </el-row>
+      <el-divider></el-divider>
+      <el-descriptions :column="1" size="small">
+        <el-descriptions-item label="绔欑偣缂栫爜"
+          >kooriookami</el-descriptions-item
+        >
+        <el-descriptions-item label="绔欑偣鍦板潃"
+          >18100000000</el-descriptions-item
+        >
+        <el-descriptions-item
+          label="鑱旂郴浜�"
+          :labelStyle="{ 'text-align': 'right', width: '50px' }"
+          >鑻忓窞甯�</el-descriptions-item
+        >
+        <el-descriptions-item label="鑱旂郴鐢佃瘽">
+          <el-tag size="small">瀛︽牎</el-tag>
+        </el-descriptions-item>
+        <el-descriptions-item label="鍒涘缓鏃堕棿"
+          >姹熻嫃鐪佽嫃宸炲競鍚翠腑鍖哄惔涓ぇ閬� 1188 鍙�</el-descriptions-item
+        >
+      </el-descriptions>
+    </el-card> -->
   </div>
 </template>
 
 <script>
-
-import { createSocket } from '@/assets/utils/websocket'
-
+import { createSocket } from "@/assets/utils/websocket";
 
 export default {
-  name: 'login',
+  name: "login",
   created() {
-// window.location.href=process.env.VUE_APP_PORTAL_URL=='undefined'?'http://192.168.0.98:11072':process.env.VUE_APP_PORTAL_URL
+    // let obj = {};
+    // obj.lng = 104.21;
+    // obj.lat = 30.56;
+    // obj.address = "娴嬭瘯绔欑偣";
+    // obj.siteId = 2;
+
+    // this.originData.push(obj);
+    // this.$nextTick(() => {
+    //   this.$refs.map1.refresh(this.originData);
+    // });
+
+    // window.location.href=process.env.VUE_APP_PORTAL_URL=='undefined'?'http://192.168.0.98:11072':process.env.VUE_APP_PORTAL_URL
   },
   methods: {
     login() {
       this.loading = true;
-      this.$post('/login/login', this.form).then(this.loginSuccess).catch(this.loginFail)
+      this.$post("/login/login", this.form)
+        .then(this.loginSuccess)
+        .catch(this.loginFail);
     },
-    loginSuccess({data}) {
-      console.log("userData",data)
-      this.$store.commit('setUserData', data);
+    loginSuccess({ data }) {
+      console.log("userData", data);
+      this.$store.commit("setUserData", data);
       this.$router.replace({
         path: this.redirect,
       });
 
       //鎴愬姛 鍒涘缓websocket杩炴帴 process.env.VUE_WEBSOCKET_BASE_API +
-      console.log("process",process.env)
-     // createSocket("ws://"+process.env.VUE_APP_BASE_API +"/ws?accessToken="+data.id)
-
+      console.log("process", process.env);
+      // createSocket("ws://"+process.env.VUE_APP_BASE_API +"/ws?accessToken="+data.id)
     },
     loginFail(error) {
       this.loading = false;
@@ -62,11 +130,11 @@ export default {
     onSubmit(e) {
       e.preventDefault();
 
-      if(!this.form.loginName.length){
-        return this.$message.warning('璇疯緭鍏ョ敤鎴峰悕')
+      if (!this.form.loginName.length) {
+        return this.$message.warning("璇疯緭鍏ョ敤鎴峰悕");
       }
-      if(!this.form.password.length){
-        return this.$message.warning('璇疯緭鍏ュ瘑鐮�')
+      if (!this.form.password.length) {
+        return this.$message.warning("璇疯緭鍏ュ瘑鐮�");
       }
 
       this.login();
@@ -74,50 +142,56 @@ export default {
   },
   data() {
     return {
+      originData: [],
       loading: false,
-      redirect: this.$route.query.redirect || '/',
+      redirect: this.$route.query.redirect || "/",
       form: {
-        loginName: '',
-        password: ''
-      }
-    }
-  }
-}
+        loginName: "",
+        password: "",
+      },
+    };
+  },
+};
 </script>
 
 <style lang="less">
+.el-divider--horizontal {
+  margin: 5px 0;
+  background: 0 0;
+  border-top: 2px solid #e8eaec;
+}
 .page-login {
   background-image: linear-gradient(45deg, #333, #111);
   background-size: 40px 40px;
   margin: 0;
   height: 100%;
-  .el-form{
+  .el-form {
     margin: auto;
     width: 400px;
     padding: 25px 25px 0 0;
     background: #fff;
-    h1{
+    h1 {
       text-align: center;
       font-size: 20px;
       font-weight: 500;
       margin-bottom: 20px;
     }
-    button{
+    button {
       margin-top: 10px;
       width: 240px;
     }
-    .el-input-group__append{
+    .el-input-group__append {
       padding: 0;
       font-size: 0;
     }
   }
-  .footer{
+  .footer {
     height: 80px;
     font-size: 12px;
     color: #999;
     text-align: center;
     line-height: 80px;
-    a{
+    a {
       color: #999;
     }
   }
diff --git a/device-manager-ui/admin/src/views/sitestat/maplist.vue b/device-manager-ui/admin/src/views/sitestat/maplist.vue
index fc692eb74a988eed71eeb7b78fe94929dd25dcdd..7ecf8127346b66c36e0524703518b0f5b63ded6a 100644
--- a/device-manager-ui/admin/src/views/sitestat/maplist.vue
+++ b/device-manager-ui/admin/src/views/sitestat/maplist.vue
@@ -40,7 +40,6 @@
     </el-row>
 
     <dialog-show ref="dialogform" @ok="getData" />
-
   </div>
 </template>
 
@@ -64,14 +63,15 @@ export default {
   created() {
     this.pageInfo.list = "/sitestat/list";
     this.$get("/sitestat/maplist", {}).then(({ data }) => {
-      this.originData = data.data.map((i) => {
-        let obj = {};
-        obj.lng = i.longitude;
-        obj.lat = i.latitude;
-        obj.address = i.siteName;
-        obj.siteId = i.id;
-        return obj;
-      });
+      this.originData=data
+      // this.originData = data.data.map((i) => {
+      //   let obj = {};
+      //   obj.lng = i.longitude;
+      //   obj.lat = i.latitude;
+      //   obj.address = i.siteName;
+      //   obj.siteId = i.id;
+      //   return obj;
+      // });
       this.$refs.map.refresh(this.originData);
     });
 
@@ -107,14 +107,24 @@ export default {
           this.isExport = false;
           this.$message.error(error.message);
         });
-    },
+    }, 
+
 
-    getDetailData(siteId) {
-     // console.log("111");
+    getDetailData(siteId, callback) {
+      console.log("siteId:", siteId);
+
+      this.$get("/sitestat/siteInfo", { siteId, siteId }).then((res) => {
+
+          console.log("res",res)
+
+        // if (res.code == 1 && res.data.data.length > 0) {
+        //   callback(res.data.data[0]);
+        // }
+      });
 
       //鍏抽棴寮圭獥
-   // this.$refs.popoverRef.doClose()
-    //this.$refs.popoverRef.doShow()  //寮€鍚脊绐�
+      // this.$refs.popoverRef.doClose()
+      //this.$refs.popoverRef.doShow()  //寮€鍚脊绐�
     },
 
     /** 閲嶅啓鏂板鏂规硶 */
diff --git a/device-manager/src/main/java/com/mortals/xhx/module/device/model/vo/DeviceStatVo.java b/device-manager/src/main/java/com/mortals/xhx/module/device/model/vo/DeviceStatVo.java
index 2c7ad8becca0818727f19687a369e7f2f8c87354..7c45d3a6e0ab699a13513d6523c2d074928bd0ad 100644
--- a/device-manager/src/main/java/com/mortals/xhx/module/device/model/vo/DeviceStatVo.java
+++ b/device-manager/src/main/java/com/mortals/xhx/module/device/model/vo/DeviceStatVo.java
@@ -1,14 +1,21 @@
 package com.mortals.xhx.module.device.model.vo;
+
 import com.mortals.framework.model.BaseEntityLong;
 import com.mortals.xhx.module.device.model.DeviceStatEntity;
+import lombok.Data;
+
 import java.util.ArrayList;
 import java.util.List;
+
 /**
-* 璁惧缁熻瑙嗗浘瀵硅薄
-*
-* @author zxfei
-* @date 2022-07-05
-*/
+ * 璁惧缁熻瑙嗗浘瀵硅薄
+ *
+ * @author zxfei
+ * @date 2022-07-05
+ */
+@Data
 public class DeviceStatVo extends BaseEntityLong {
 
+
+
 }
\ No newline at end of file
diff --git a/device-manager/src/main/java/com/mortals/xhx/module/device/service/DeviceStatService.java b/device-manager/src/main/java/com/mortals/xhx/module/device/service/DeviceStatService.java
index 1650cb895bf87556eef15beae78e99855d8c11a2..d1de78ead72192ebf758dd69e4e1f38559935d67 100644
--- a/device-manager/src/main/java/com/mortals/xhx/module/device/service/DeviceStatService.java
+++ b/device-manager/src/main/java/com/mortals/xhx/module/device/service/DeviceStatService.java
@@ -1,6 +1,9 @@
 package com.mortals.xhx.module.device.service;
 import com.mortals.framework.service.ICRUDService;
+import com.mortals.xhx.feign.site.ISiteFeign;
 import com.mortals.xhx.module.device.model.DeviceStatEntity;
+import org.springframework.beans.factory.annotation.Autowired;
+
 /**
 * DeviceStatService
 *
@@ -11,4 +14,6 @@ import com.mortals.xhx.module.device.model.DeviceStatEntity;
 */
 public interface DeviceStatService extends ICRUDService<DeviceStatEntity,Long>{
 
+
+
 }
\ No newline at end of file
diff --git a/device-manager/src/main/java/com/mortals/xhx/module/device/service/impl/DeviceStatServiceImpl.java b/device-manager/src/main/java/com/mortals/xhx/module/device/service/impl/DeviceStatServiceImpl.java
index 4a98083331e3d0b61ff1b0ec3eb812182613cf34..5e60849fbbc42164e5593711003b12f889b73442 100644
--- a/device-manager/src/main/java/com/mortals/xhx/module/device/service/impl/DeviceStatServiceImpl.java
+++ b/device-manager/src/main/java/com/mortals/xhx/module/device/service/impl/DeviceStatServiceImpl.java
@@ -1,9 +1,21 @@
 package com.mortals.xhx.module.device.service.impl;
+import com.mortals.framework.exception.AppException;
+import com.mortals.framework.model.Context;
+import com.mortals.framework.model.PageInfo;
+import com.mortals.xhx.common.pdu.site.SitePdu;
+import com.mortals.xhx.feign.site.ISiteFeign;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
 import com.mortals.xhx.module.device.dao.DeviceStatDao;
 import com.mortals.xhx.module.device.model.DeviceStatEntity;
 import com.mortals.xhx.module.device.service.DeviceStatService;
+import org.springframework.util.ObjectUtils;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
 /**
 * DeviceStatService
 * 璁惧缁熻 service瀹炵幇
@@ -13,5 +25,23 @@ import com.mortals.xhx.module.device.service.DeviceStatService;
 */
 @Service("deviceStatService")
 public class DeviceStatServiceImpl extends AbstractCRUDServiceImpl<DeviceStatDao, DeviceStatEntity, Long> implements DeviceStatService {
-    
+
+//    @Autowired
+//    private ISiteFeign siteFeign;
+//
+//
+//    @Override
+//    protected void findAfter(DeviceStatEntity params, PageInfo pageInfo, Context context, List<DeviceStatEntity> list) throws AppException {
+//        SitePdu sitePdu = new SitePdu();
+//        sitePdu.setSize(-1);
+//        Map<Long, SitePdu> collect = siteFeign.list(sitePdu).getData().getData().stream().collect(Collectors.toMap(x -> x.getId(), y -> y));
+//
+//        list.stream().forEach(item->{
+//            if(ObjectUtils.isEmpty())
+//        });
+//
+//
+//
+//        super.findAfter(params, pageInfo, context, list);
+//    }
 }
\ No newline at end of file
diff --git a/device-manager/src/main/java/com/mortals/xhx/module/sitestat/model/SitestatEntity.java b/device-manager/src/main/java/com/mortals/xhx/module/sitestat/model/SitestatEntity.java
index 6d384a5434e1165cade873e76f179b0be0579aab..aeaea2deae55512d85187f3629f872a7b7c347c0 100644
--- a/device-manager/src/main/java/com/mortals/xhx/module/sitestat/model/SitestatEntity.java
+++ b/device-manager/src/main/java/com/mortals/xhx/module/sitestat/model/SitestatEntity.java
@@ -1,10 +1,5 @@
 package com.mortals.xhx.module.sitestat.model;
 
-import java.util.List;
-import java.util.ArrayList;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.mortals.framework.annotation.Excel;
-import com.mortals.framework.model.BaseEntityLong;
 import com.mortals.xhx.module.sitestat.model.vo.SitestatVo;
 /**
 * 绔欑偣缁熻瀹炰綋瀵硅薄
diff --git a/device-manager/src/main/java/com/mortals/xhx/module/sitestat/model/vo/SitestatVo.java b/device-manager/src/main/java/com/mortals/xhx/module/sitestat/model/vo/SitestatVo.java
index 58da3308c1f1426661a164e73b9336ca3344a206..784a5c5ef38d9afbae8ca1c28cf92ad58499a8e9 100644
--- a/device-manager/src/main/java/com/mortals/xhx/module/sitestat/model/vo/SitestatVo.java
+++ b/device-manager/src/main/java/com/mortals/xhx/module/sitestat/model/vo/SitestatVo.java
@@ -19,4 +19,15 @@ public class SitestatVo extends BaseEntityLong {
      * 绔欑偣Id锛屾潵婧愬熀纭€鏈嶅姟骞冲彴鍒楄〃
      */
     private List<Long> siteIdList;
+
+
+    private String lng;
+
+    private String lat;
+
+    private String address;
+
+    private String leadingOfficial;
+
+    private String leadingOfficialTelephone;
 }
\ No newline at end of file
diff --git a/device-manager/src/main/java/com/mortals/xhx/module/sitestat/web/SitestatController.java b/device-manager/src/main/java/com/mortals/xhx/module/sitestat/web/SitestatController.java
index 1cc0ff03cdcd2b7b8bbcab75a4ed2806ca2dc410..3ac226a97596352f4597061c7a7621fda65a243e 100644
--- a/device-manager/src/main/java/com/mortals/xhx/module/sitestat/web/SitestatController.java
+++ b/device-manager/src/main/java/com/mortals/xhx/module/sitestat/web/SitestatController.java
@@ -20,6 +20,7 @@ import com.mortals.xhx.module.sitestat.model.SitestatQuery;
 import com.mortals.xhx.module.sitestat.service.SitestatService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -28,6 +29,7 @@ import org.springframework.web.bind.annotation.RestController;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 绔欑偣缁熻
@@ -108,9 +110,8 @@ public class SitestatController extends BaseCRUDJsonBodyMappingController<Sitest
      * 绔欑偣鍒楄〃
      */
     @GetMapping(value = "maplist")
-    public String maplist() {
+    public Rest<List<SitestatEntity>> maplist() {
         JSONObject jsonObject = new JSONObject();
-        String busiDesc = this.getModuleDesc() + "鏋勫缓绔欑偣鍒楄〃";
         try {
             SitePdu sitePdu = new SitePdu();
             sitePdu.setPage(1);
@@ -120,13 +121,29 @@ public class SitestatController extends BaseCRUDJsonBodyMappingController<Sitest
                 sitePdu.setIdList(siteIdList);
             }
             Rest<RespData<List<SitePdu>>> resp = siteFeign.list(sitePdu);
-            return JSON.toJSONString(resp);
+
+            //鏍规嵁绔欑偣id 鑾峰彇缁熻淇℃伅
+            List<SitestatEntity> collect = resp.getData().getData().stream().map(item -> {
+                SitestatEntity sitestatEntity = this.service.selectOne(new SitestatQuery().siteId(item.getId()));
+                if (!ObjectUtils.isEmpty(sitestatEntity)) {
+                    sitestatEntity.setSiteId(item.getId());
+                    sitestatEntity.setSiteCode(item.getSiteCode());
+                    sitestatEntity.setSiteName(item.getSiteName());
+                    sitestatEntity.setLng(item.getLongitude());
+                    sitestatEntity.setLat(item.getLatitude());
+                    sitestatEntity.setAddress(item.getDetailAddress());
+                    sitestatEntity.setLeadingOfficial(item.getLeadingOfficial());
+                    sitestatEntity.setLeadingOfficialTelephone(item.getLeadingOfficialTelephone());
+                    return sitestatEntity;
+                }
+                return null;
+            }).filter(f -> f != null).collect(Collectors.toList());
+            return Rest.ok("鑾峰彇鎴愬姛", collect);
         } catch (Exception e) {
-            log.error("绔欑偣寮傚父", e);
-            jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
-            jsonObject.put(KEY_RESULT_MSG, super.convertException(e));
+            log.error("鑾峰彇寮傚父", e);
+            return Rest.fail("鑾峰彇寮傚父锛�");
         }
-        return jsonObject.toJSONString();
+
     }
 
 
@@ -154,6 +171,4 @@ public class SitestatController extends BaseCRUDJsonBodyMappingController<Sitest
     }
 
 
-
-
 }
\ No newline at end of file