From 11fedf1d94650cbda4751ea89371ed43432c325a Mon Sep 17 00:00:00 2001
From: chenjiantian <214228265@qq.com>
Date: 星期一, 13 十二月 2021 18:43:51 +0800
Subject: [PATCH] 基础通信

---
 dao/src/main/java/com/sandu/ximon/dao/mapper/PoleGroupRelationMapper.java                                            |   17 
 ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleGroupController.java                                  |   42 +
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleGroupService.java                                        |   72 +++
 ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/LightDataProcessor.java                   |   56 ++
 ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/InitAmqpListener.java                               |    4 
 dao/src/main/java/com/sandu/ximon/dao/mapper/PoleGroupMapper.java                                                    |   17 
 dao/src/main/java/com/sandu/ximon/dao/mapper/PoleMapper.java                                                         |   17 
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleGroupRelationService.java                                |   42 +
 dao/src/main/java/com/sandu/ximon/dao/domain/LightRemark.java                                                        |   46 ++
 dao/src/main/resources/mapper/PoleMapper.xml                                                                         |   31 +
 ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleGroupParam.java                                            |   16 
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightRemarkService.java                                      |   15 
 dao/src/main/java/com/sandu/ximon/dao/domain/LightReportData.java                                                    |   96 ++++
 ximon-admin/src/main/java/com/sandu/ximon/admin/config/RedisConfig.java                                              |   13 
 dao/src/main/java/com/sandu/ximon/dao/mapper/LightReportDataMapper.java                                              |   17 
 dao/src/main/resources/mapper/LightReportDataMapper.xml                                                              |   32 +
 dao/src/main/resources/mapper/PoleGroupMapper.xml                                                                    |   20 
 ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleParam.java                                                 |   62 ++
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportDataService.java                                  |   31 +
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java                                             |   87 +++
 dao/src/main/java/com/sandu/ximon/dao/domain/PoleGroup.java                                                          |   51 ++
 ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java                                       |   93 ++++
 ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleGroupRelationParam.java                                    |   17 
 dao/src/main/java/com/sandu/ximon/dao/domain/PoleGroupRelation.java                                                  |   46 ++
 /dev/null                                                                                                            |   43 -
 dao/src/main/resources/mapper/LightRemarkMapper.xml                                                                  |   19 
 dao/src/main/java/com/sandu/ximon/dao/domain/Pole.java                                                               |   92 ++++
 dao/src/main/java/com/sandu/ximon/dao/mapper/LightRemarkMapper.java                                                  |   17 
 ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LampPostController.java                                   |   20 
 ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/IMessageProcessor.java                    |   12 
 ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/AmqpMessageListener.java                            |   20 
 ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5LightHeartbeatReportInnerFrame.java |   79 +-
 ximon-admin/src/main/java/com/sandu/ximon/admin/redis/LightKey.java                                                  |   28 +
 dao/src/main/resources/mapper/PoleGroupRelationMapper.xml                                                            |   19 
 34 files changed, 1,178 insertions(+), 111 deletions(-)

diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/Light.java b/dao/src/main/java/com/sandu/ximon/dao/domain/Light.java
deleted file mode 100644
index c2ee665..0000000
--- a/dao/src/main/java/com/sandu/ximon/dao/domain/Light.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.sandu.ximon.dao.domain;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import lombok.Data;
-import org.apache.ibatis.annotations.Lang;
-
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
-/**
- * 璺伅
- */
-@Data
-public class Light implements Serializable {
-
-    @TableId(type = IdType.AUTO)
-    private Long id;
-
-    private Long userId;
-
-    /*绉嶇被*/
-    private String kind;
-
-    /*鍨嬪彿*/
-    private String size;
-
-    /*鍚嶇О*/
-    private String name;
-
-    /*鏈哄櫒鐮�*/
-    private String macId;
-
-    /*鐘舵��*/
-    private String state;
-
-    /*鐏潌ID*/
-    private Long lampId;
-
-    private LocalDateTime createTime;
-
-
-}
diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/LightRemark.java b/dao/src/main/java/com/sandu/ximon/dao/domain/LightRemark.java
new file mode 100644
index 0000000..beba73c
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/LightRemark.java
@@ -0,0 +1,46 @@
+package com.sandu.ximon.dao.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Data;
+
+/**
+ * 璺伅澶囨敞琛�
+ * @TableName light_remark
+ */
+@TableName(value ="light_remark")
+@Data
+public class LightRemark implements Serializable {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 璁惧璇嗗埆鐮�
+     */
+    private String deviceMac;
+
+    /**
+     * 澶囨敞淇℃伅
+     */
+    private String remark;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 
+     */
+    private LocalDateTime updateTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/LightReportData.java b/dao/src/main/java/com/sandu/ximon/dao/domain/LightReportData.java
new file mode 100644
index 0000000..f2fa8f6
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/LightReportData.java
@@ -0,0 +1,96 @@
+package com.sandu.ximon.dao.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Data;
+
+/**
+ * 鐏笂鎶ユ暟鎹〃
+ * @TableName light_report_data
+ */
+@TableName(value ="light_report_data")
+@Data
+public class LightReportData implements Serializable {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Long lightReportDataId;
+
+    /**
+     * 璁惧mac
+     */
+    private String deviceMac;
+
+    /**
+     * 甯傜數鐢靛帇
+     */
+    private Double voltage;
+
+    /**
+     * 甯傜數鐢垫祦
+     */
+    private Double electricCurrent;
+
+    /**
+     * 璁惧娓╁害
+     */
+    private Double deviceTemperature;
+
+    /**
+     * 鍔熺巼鍥犵礌
+     */
+    private Double powerFactor;
+
+    /**
+     * 鏈夊姛鍔熺巼
+     */
+    private Double activePower;
+
+    /**
+     * 鏃犲姛鍔熺巼
+     */
+    private Double reactivePower;
+
+    /**
+     * 浜害鐧惧垎姣旓紝0-100
+     */
+    private Integer lightPercent;
+
+    /**
+     * 鏈�杩戜竴娆′寒鐏椂闂�
+     */
+    private Long recentlyLightSec;
+
+    /**
+     * 鎬讳寒鐏椂闂�
+     */
+    private Long totalLightSec;
+
+    /**
+     * 鏈�杩戜竴娆$敤鐢甸噺
+     */
+    private Double recentlyUsingPower;
+
+    /**
+     * 鎬荤敤鐢甸噺
+     */
+    private Double totalUsingPower;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 
+     */
+    private LocalDateTime updateTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/Pole.java b/dao/src/main/java/com/sandu/ximon/dao/domain/Pole.java
new file mode 100644
index 0000000..d6723b7
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/Pole.java
@@ -0,0 +1,92 @@
+package com.sandu.ximon.dao.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import lombok.Data;
+
+/**
+ * 鐏潌琛�
+ * @TableName pole
+ */
+@TableName(value ="pole")
+@Data
+public class Pole implements Serializable {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 鐏潌缂栧彿
+     */
+    private Long poleCode;
+
+    /**
+     * 鐏潌鍚嶇О
+     */
+    private String poleName;
+
+    /**
+     * 瀹㈡埛id
+     */
+    private Long clientId;
+
+    /**
+     * 鐪�
+     */
+    private String province;
+
+    /**
+     * 甯�
+     */
+    private String city;
+
+    /**
+     * 鍖�
+     */
+    private String region;
+
+    /**
+     * 璇︾粏鍦板潃
+     */
+    private String address;
+
+    /**
+     * 缁忓害
+     */
+    private BigDecimal lon;
+
+    /**
+     * 绾害
+     */
+    private BigDecimal lat;
+
+    /**
+     * 鏈哄櫒鐮�
+     */
+    private String deviceCode;
+
+    /**
+     * 缁戝畾璁惧鏁伴噺
+     */
+    private Integer bindingCount;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 
+     */
+    private LocalDateTime updateTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/PoleGroup.java b/dao/src/main/java/com/sandu/ximon/dao/domain/PoleGroup.java
new file mode 100644
index 0000000..e7c9253
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/PoleGroup.java
@@ -0,0 +1,51 @@
+package com.sandu.ximon.dao.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Data;
+
+/**
+ * 鍒嗙粍琛�
+ * @TableName pole_group
+ */
+@TableName(value ="pole_group")
+@Data
+public class PoleGroup implements Serializable {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Long groupId;
+
+    /**
+     * 瀹㈡埛id
+     */
+    private Long clientId;
+
+    /**
+     * 鍒嗙粍鍚嶇О
+     */
+    private String groupName;
+
+    /**
+     * 鐏潌鏁伴噺
+     */
+    private Integer poleCount;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 
+     */
+    private LocalDateTime updateTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/PoleGroupRelation.java b/dao/src/main/java/com/sandu/ximon/dao/domain/PoleGroupRelation.java
new file mode 100644
index 0000000..d68f0fb
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/PoleGroupRelation.java
@@ -0,0 +1,46 @@
+package com.sandu.ximon.dao.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Data;
+
+/**
+ * 鐏潌鍒嗙粍鍏崇郴琛�
+ * @TableName pole_group_relation
+ */
+@TableName(value ="pole_group_relation")
+@Data
+public class PoleGroupRelation implements Serializable {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 鐏潌id
+     */
+    private Long poleId;
+
+    /**
+     * 鍒嗙粍id
+     */
+    private Long poleGroupId;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 
+     */
+    private LocalDateTime updateTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/dao/src/main/java/com/sandu/ximon/dao/mapper/LightRemarkMapper.java b/dao/src/main/java/com/sandu/ximon/dao/mapper/LightRemarkMapper.java
new file mode 100644
index 0000000..325fb2e
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/mapper/LightRemarkMapper.java
@@ -0,0 +1,17 @@
+package com.sandu.ximon.dao.mapper;
+
+import com.sandu.ximon.dao.domain.LightRemark;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Entity com.sandu.ximon.dao.domain.LightRemark
+ */
+@Mapper
+public interface LightRemarkMapper extends BaseMapper<LightRemark> {
+
+}
+
+
+
+
diff --git a/dao/src/main/java/com/sandu/ximon/dao/mapper/LightReportDataMapper.java b/dao/src/main/java/com/sandu/ximon/dao/mapper/LightReportDataMapper.java
new file mode 100644
index 0000000..fada183
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/mapper/LightReportDataMapper.java
@@ -0,0 +1,17 @@
+package com.sandu.ximon.dao.mapper;
+
+import com.sandu.ximon.dao.domain.LightReportData;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Entity com.sandu.ximon.dao.domain.LightReportData
+ */
+@Mapper
+public interface LightReportDataMapper extends BaseMapper<LightReportData> {
+
+}
+
+
+
+
diff --git a/dao/src/main/java/com/sandu/ximon/dao/mapper/PoleGroupMapper.java b/dao/src/main/java/com/sandu/ximon/dao/mapper/PoleGroupMapper.java
new file mode 100644
index 0000000..ca0d89a
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/mapper/PoleGroupMapper.java
@@ -0,0 +1,17 @@
+package com.sandu.ximon.dao.mapper;
+
+import com.sandu.ximon.dao.domain.PoleGroup;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Entity com.sandu.ximon.dao.domain.PoleGroup
+ */
+@Mapper
+public interface PoleGroupMapper extends BaseMapper<PoleGroup> {
+
+}
+
+
+
+
diff --git a/dao/src/main/java/com/sandu/ximon/dao/mapper/PoleGroupRelationMapper.java b/dao/src/main/java/com/sandu/ximon/dao/mapper/PoleGroupRelationMapper.java
new file mode 100644
index 0000000..38e55c4
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/mapper/PoleGroupRelationMapper.java
@@ -0,0 +1,17 @@
+package com.sandu.ximon.dao.mapper;
+
+import com.sandu.ximon.dao.domain.PoleGroupRelation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Entity com.sandu.ximon.dao.domain.PoleGroupRelation
+ */
+@Mapper
+public interface PoleGroupRelationMapper extends BaseMapper<PoleGroupRelation> {
+
+}
+
+
+
+
diff --git a/dao/src/main/java/com/sandu/ximon/dao/mapper/PoleMapper.java b/dao/src/main/java/com/sandu/ximon/dao/mapper/PoleMapper.java
new file mode 100644
index 0000000..c709aeb
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/mapper/PoleMapper.java
@@ -0,0 +1,17 @@
+package com.sandu.ximon.dao.mapper;
+
+import com.sandu.ximon.dao.domain.Pole;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Entity com.sandu.ximon.dao.domain.Pole
+ */
+@Mapper
+public interface PoleMapper extends BaseMapper<Pole> {
+
+}
+
+
+
+
diff --git a/dao/src/main/resources/mapper/LightRemarkMapper.xml b/dao/src/main/resources/mapper/LightRemarkMapper.xml
new file mode 100644
index 0000000..830b576
--- /dev/null
+++ b/dao/src/main/resources/mapper/LightRemarkMapper.xml
@@ -0,0 +1,19 @@
+<?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.sandu.ximon.dao.mapper.LightRemarkMapper">
+
+    <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.LightRemark">
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="deviceMac" column="device_mac" jdbcType="VARCHAR"/>
+            <result property="remark" column="remark" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,device_mac,remark,
+        create_time,update_time
+    </sql>
+</mapper>
diff --git a/dao/src/main/resources/mapper/LightReportDataMapper.xml b/dao/src/main/resources/mapper/LightReportDataMapper.xml
new file mode 100644
index 0000000..360d7cc
--- /dev/null
+++ b/dao/src/main/resources/mapper/LightReportDataMapper.xml
@@ -0,0 +1,32 @@
+<?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.sandu.ximon.dao.mapper.LightReportDataMapper">
+
+    <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.LightReportData">
+            <id property="lightReportDataId" column="light_report_data_id" jdbcType="BIGINT"/>
+            <result property="deviceMac" column="device_mac" jdbcType="VARCHAR"/>
+            <result property="voltage" column="voltage" jdbcType="FLOAT"/>
+            <result property="electricCurrent" column="electric_current" jdbcType="FLOAT"/>
+            <result property="deviceTemperature" column="device_temperature" jdbcType="FLOAT"/>
+            <result property="powerFactor" column="power_factor" jdbcType="FLOAT"/>
+            <result property="activePower" column="active_power" jdbcType="FLOAT"/>
+            <result property="reactivePower" column="reactive_power" jdbcType="FLOAT"/>
+            <result property="lightPercent" column="light_percent" jdbcType="INTEGER"/>
+            <result property="recentlyLightSec" column="recently_light_sec" jdbcType="BIGINT"/>
+            <result property="totalLightSec" column="total_light_sec" jdbcType="BIGINT"/>
+            <result property="recentlyUsingPower" column="recently_using_power" jdbcType="DOUBLE"/>
+            <result property="totalUsingPower" column="total_using_power" jdbcType="DOUBLE"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        light_report_data_id,device_mac,voltage,
+        electric_current,device_temperature,power_factor,
+        active_power,reactive_power,light_percent,
+        recently_light_sec,total_light_sec,recently_using_power,
+        total_using_power,create_time,update_time
+    </sql>
+</mapper>
diff --git a/dao/src/main/resources/mapper/PoleGroupMapper.xml b/dao/src/main/resources/mapper/PoleGroupMapper.xml
new file mode 100644
index 0000000..687bdf7
--- /dev/null
+++ b/dao/src/main/resources/mapper/PoleGroupMapper.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.sandu.ximon.dao.mapper.PoleGroupMapper">
+
+    <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.PoleGroup">
+            <id property="groupId" column="group_id" jdbcType="BIGINT"/>
+            <result property="clientId" column="client_id" jdbcType="BIGINT"/>
+            <result property="groupName" column="group_name" jdbcType="VARCHAR"/>
+            <result property="poleCount" column="pole_count" jdbcType="INTEGER"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        group_id,client_id,group_name,
+        pole_count,create_time,update_time
+    </sql>
+</mapper>
diff --git a/dao/src/main/resources/mapper/PoleGroupRelationMapper.xml b/dao/src/main/resources/mapper/PoleGroupRelationMapper.xml
new file mode 100644
index 0000000..5b6fa8c
--- /dev/null
+++ b/dao/src/main/resources/mapper/PoleGroupRelationMapper.xml
@@ -0,0 +1,19 @@
+<?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.sandu.ximon.dao.mapper.PoleGroupRelationMapper">
+
+    <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.PoleGroupRelation">
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="poleId" column="pole_id" jdbcType="BIGINT"/>
+            <result property="poleGroupId" column="pole_group_id" jdbcType="BIGINT"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,pole_id,pole_group_id,
+        create_time,update_time
+    </sql>
+</mapper>
diff --git a/dao/src/main/resources/mapper/PoleMapper.xml b/dao/src/main/resources/mapper/PoleMapper.xml
new file mode 100644
index 0000000..fd96807
--- /dev/null
+++ b/dao/src/main/resources/mapper/PoleMapper.xml
@@ -0,0 +1,31 @@
+<?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.sandu.ximon.dao.mapper.PoleMapper">
+
+    <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.Pole">
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="poleCode" column="pole_code" jdbcType="BIGINT"/>
+            <result property="poleName" column="pole_name" jdbcType="VARCHAR"/>
+            <result property="clientId" column="client_id" jdbcType="BIGINT"/>
+            <result property="province" column="province" jdbcType="VARCHAR"/>
+            <result property="city" column="city" jdbcType="VARCHAR"/>
+            <result property="region" column="region" jdbcType="VARCHAR"/>
+            <result property="address" column="address" jdbcType="VARCHAR"/>
+            <result property="lon" column="lon" jdbcType="DECIMAL"/>
+            <result property="lat" column="lat" jdbcType="DECIMAL"/>
+            <result property="deviceCode" column="device_code" jdbcType="VARCHAR"/>
+            <result property="bindingCount" column="binding_count" jdbcType="INTEGER"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,pole_code,pole_name,
+        client_id,province,city,
+        region,address,lon,
+        lat,device_code,binding_count,
+        create_time,update_time
+    </sql>
+</mapper>
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/config/RedisConfig.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/config/RedisConfig.java
new file mode 100644
index 0000000..1791b47
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/config/RedisConfig.java
@@ -0,0 +1,13 @@
+package com.sandu.ximon.admin.config;
+
+import com.sandu.common.config.BaseRedisConfig;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/13 11:54
+ * 鍚姩redis
+ */
+@Configuration
+public class RedisConfig extends BaseRedisConfig {
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LampPostController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LampPostController.java
index d0051da..c69a6a9 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LampPostController.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LampPostController.java
@@ -1,12 +1,8 @@
 package com.sandu.ximon.admin.controller;
 
-import cn.hutool.core.util.RadixUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.github.pagehelper.PageHelper;
 import com.sandu.common.domain.ResponseVO;
-import com.sandu.common.object.BaseConditionVO;
-import com.sandu.common.security.annotation.AnonymousAccess;
 import com.sandu.common.util.ResponseUtil;
 import com.sandu.ximon.admin.param.GroupParam;
 import com.sandu.ximon.admin.param.LampPostParam;
@@ -26,28 +22,28 @@
 @RequestMapping("/v1/LampPost")
 public class LampPostController {
 
-    private final LampPostService lampPostService;
+    private final LampPostService poleService;
 
     @GetMapping("/add")
     public ResponseVO<Object> addLampPost(@RequestBody LampPostParam lampPostParam){
-        return ResponseUtil.success( lampPostService.addLamp(lampPostParam));
+        return ResponseUtil.success( poleService.addLamp(lampPostParam));
     }
 
     @GetMapping("/update/{id}")
     public ResponseVO<Object> updateLampPost(@PathVariable Long id, @RequestBody LampPostParam lampPostParam){
-        return ResponseUtil.success( lampPostService.updateLamp(id,lampPostParam));
+        return ResponseUtil.success( poleService.updateLamp(id,lampPostParam));
     }
 
     @GetMapping("/delete/{id}")
     public ResponseVO<Object> deleteLampPost(@PathVariable Long id){
-        return ResponseUtil.success(lampPostService.deleteLampPost(id));
+        return ResponseUtil.success(poleService.deleteLampPost(id));
     }
 
 
 
     @PostMapping("/setGroup")
     public ResponseVO<Object> setGroup(@RequestBody GroupParam groupParam){
-        lampPostService.setGroup(groupParam.getGroup(), groupParam.getId());
+        poleService.setGroup(groupParam.getGroup(), groupParam.getId());
         return ResponseUtil.success("鍒嗙粍璁剧疆鎴愬姛");
     }
 
@@ -65,7 +61,7 @@
      */
     @PostMapping("/list")
     public ResponseVO<Object> listLamp(){
-        return ResponseUtil.success(lampPostService.queryStates());
+        return ResponseUtil.success(poleService.queryStates());
     }
 
     /**
@@ -75,7 +71,7 @@
      */
     @GetMapping("/lightReset/{id}")
     public ResponseVO<Object> LightReset(@PathVariable Long id){
-        return ResponseUtil.success(lampPostService.LightReset(id));
+        return ResponseUtil.success(poleService.LightReset(id));
     }
 
 
@@ -89,7 +85,7 @@
                         lampPostLambdaQueryWrapper.like(LampPost::getName,receiveParam.getKeyWord());
                     });
         }
-        List<LampPost> lsit=lampPostService.list(wrapper);
+        List<LampPost> lsit= poleService.list(wrapper);
         return ResponseUtil.success(lsit);
     }
 
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java
new file mode 100644
index 0000000..fc0776e
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java
@@ -0,0 +1,93 @@
+package com.sandu.ximon.admin.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.sandu.common.domain.ResponseVO;
+import com.sandu.common.util.ResponseUtil;
+import com.sandu.ximon.admin.param.GroupParam;
+import com.sandu.ximon.admin.param.LampPostParam;
+import com.sandu.ximon.admin.param.ReceiveParam;
+import com.sandu.ximon.admin.service.LampPostService;
+import com.sandu.ximon.dao.domain.LampPost;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 鐏潌妯″潡浠ュ強璁剧疆鍒嗙粍鍒板搴旂伅鏉�
+ * @author chenjiantian
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/v1/pole")
+public class PoleController {
+
+    private final LampPostService poleService;
+
+    @GetMapping("/add")
+    public ResponseVO<Object> addLampPost(@RequestBody LampPostParam lampPostParam){
+        return ResponseUtil.success( poleService.addLamp(lampPostParam));
+    }
+
+    @GetMapping("/update/{id}")
+    public ResponseVO<Object> updateLampPost(@PathVariable Long id, @RequestBody LampPostParam lampPostParam){
+        return ResponseUtil.success( poleService.updateLamp(id,lampPostParam));
+    }
+
+    @GetMapping("/delete/{id}")
+    public ResponseVO<Object> deleteLampPost(@PathVariable Long id){
+        return ResponseUtil.success(poleService.deleteLampPost(id));
+    }
+
+
+
+    @PostMapping("/setGroup")
+    public ResponseVO<Object> setGroup(@RequestBody GroupParam groupParam){
+        poleService.setGroup(groupParam.getGroup(), groupParam.getId());
+        return ResponseUtil.success("鍒嗙粍璁剧疆鎴愬姛");
+    }
+
+  //  @AnonymousAccess
+    //@PostMapping("/list")
+   /* public ResponseVO<Object> listLamp(){
+        //List<LampPost> list = lampPostService.list();
+        return ResponseUtil.success(lampPostService.list());
+        //return ResponseUtil.success(lampPostService.listLamp());
+    }*/
+
+    /**
+     * 鏌ヨ鐏潌鍒楄〃骞舵惡甯﹀湪绾跨姸鎬�
+     * @return
+     */
+    @PostMapping("/list")
+    public ResponseVO<Object> listLamp(){
+        return ResponseUtil.success(poleService.queryStates());
+    }
+
+    /**
+     * 鎭㈠鍑哄巶璁剧疆
+     * @param id
+     * @return
+     */
+    @GetMapping("/lightReset/{id}")
+    public ResponseVO<Object> LightReset(@PathVariable Long id){
+        return ResponseUtil.success(poleService.LightReset(id));
+    }
+
+
+
+    @GetMapping("/lsitLike")
+    public ResponseVO<Object> list( @RequestBody ReceiveParam receiveParam){
+        LambdaQueryWrapper<LampPost> wrapper = Wrappers.lambdaQuery(LampPost.class);
+        if(receiveParam.getKeyWord()!=null){
+            wrapper.like(LampPost::getLampId,receiveParam.getKeyWord())
+                    .or(lampPostLambdaQueryWrapper -> {
+                        lampPostLambdaQueryWrapper.like(LampPost::getName,receiveParam.getKeyWord());
+                    });
+        }
+        List<LampPost> lsit= poleService.list(wrapper);
+        return ResponseUtil.success(lsit);
+    }
+
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleGroupController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleGroupController.java
new file mode 100644
index 0000000..7b976bb
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleGroupController.java
@@ -0,0 +1,42 @@
+package com.sandu.ximon.admin.controller;
+
+import com.sandu.common.domain.ResponseVO;
+import com.sandu.common.util.ResponseUtil;
+import com.sandu.ximon.admin.param.PoleGroupParam;
+import com.sandu.ximon.admin.service.PoleGroupService;
+import lombok.AllArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 鍒嗙粍鍒楄〃鍔熻兘
+ *
+ * @author chenjiantian
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/v1/pole/group")
+public class PoleGroupController {
+
+    private final PoleGroupService poleGroupService;
+
+    @GetMapping("/add")
+    public ResponseVO<Object> addGroup(@RequestBody @Validated PoleGroupParam param) {
+        return ResponseUtil.success(poleGroupService.addGroup(param));
+    }
+
+    @PostMapping("/update/{groupId}")
+    public ResponseVO<Object> updateGroup(@PathVariable Long groupId, @RequestBody @Validated PoleGroupParam param) {
+        return ResponseUtil.success(poleGroupService.updateGroup(groupId, param));
+    }
+
+    @GetMapping("/delete/{groupId}")
+    public ResponseVO<Object> delGroup(@PathVariable Long groupId) {
+        return ResponseUtil.success(poleGroupService.deleteGroup(groupId));
+    }
+
+    @PostMapping("/list")
+    public ResponseVO<Object> listGroup() {
+        return ResponseUtil.success(poleGroupService.groupList());
+    }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/AmqpMessageListener.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/AmqpMessageListener.java
index 4d77102..4b26106 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/AmqpMessageListener.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/AmqpMessageListener.java
@@ -1,6 +1,7 @@
 package com.sandu.ximon.admin.manager.iot.amqp;
 
 import com.alibaba.fastjson.JSON;
+import com.sandu.ximon.admin.manager.iot.amqp.processor.LightDataProcessor;
 import com.sandu.ximon.admin.manager.iot.frame.inner.report.*;
 import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame;
 import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonReportMessage;
@@ -92,7 +93,7 @@
         log.info(frame.toString());
         if (frame.getOrderType().equals(A5OrderEnum.RESPONSE_LIGHT_DATA.getCode())) {
             // 鍗曠伅鏁版嵁涓婃姤澶勭悊
-            lightDataReportAnalysis(productKey, deviceName, frame);
+            LightDataProcessor.getInstance().process(productKey,deviceName,frame);
         } else if (frame.getOrderType().equals(A5OrderEnum.RESPONSE_C3_DATA.getCode())) {
             // C3鍏呯數妗╀笂鎶ュ鐞�
             c3ChargingReportAnalysis(productKey, deviceName, frame);
@@ -126,22 +127,5 @@
         A5AtmosphereHeartbeatReportInnerFrame transformFrame = new A5AtmosphereHeartbeatReportInnerFrame().transformFrame(frame.getPayload());
         log.info("澶ф皵蹇冭烦涓婃姤");
         log.info(transformFrame.toString());
-    }
-
-    private void lightDataReportAnalysis(String productKey, String deviceName, CommonFrame frame) {
-        String functionCode = frame.getPayload().substring(2, 4);
-        if (A5LightReportEnum.HeartBeat_Data.getCode().equals(functionCode)) {
-//            log.info("蹇冭烦鐩稿簲");
-            A5LightHeartbeatReportInnerFrame heartbeatReportInnerFrame = new A5LightHeartbeatReportInnerFrame().transformFrame(frame.getPayload());
-//            log.info(heartbeatReportInnerFrame.toString());
-        } else if (A5LightReportEnum.Time_Synchronized.getCode().equals(functionCode)) {
-//            log.info("璇锋眰鏃堕棿鍚屾");
-            A5LightTimeSyncReportInnerFrame syncRespInnerFrame = new A5LightTimeSyncReportInnerFrame().transformFrame(frame.getPayload());
-//            log.info(syncRespInnerFrame.toString());
-        } else if (A5LightReportEnum.Error_Code.getCode().equals(functionCode)) {
-//            log.info("鏁呴殰鐮佷笂鎶�");
-            A5LightErrorCodeReportInnerFrame codeRespInnerFrame = new A5LightErrorCodeReportInnerFrame().transformFrame(frame.getPayload());
-//            log.info(codeRespInnerFrame.toString());
-        }
     }
 }
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/InitAmqpListener.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/InitAmqpListener.java
index 9899d8f..8060b8a 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/InitAmqpListener.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/InitAmqpListener.java
@@ -13,12 +13,12 @@
 @AllArgsConstructor
 public class InitAmqpListener {
 
-   /* private final MqttMainBoardConfig mqttMainBoardConfig;
+   private final MqttMainBoardConfig mqttMainBoardConfig;
 
     @PostConstruct
     public void initListener() throws Exception {
         new AmqpClient(
                 mqttMainBoardConfig
         ).execute();
-    }*/
+    }
 }
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/IMessageProcessor.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/IMessageProcessor.java
new file mode 100644
index 0000000..849f94e
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/IMessageProcessor.java
@@ -0,0 +1,12 @@
+package com.sandu.ximon.admin.manager.iot.amqp.processor;
+
+import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/13 11:57
+ */
+public interface IMessageProcessor {
+
+    void process(String productKey, String deviceName, CommonFrame frame);
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/LightDataProcessor.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/LightDataProcessor.java
new file mode 100644
index 0000000..dfeaae7
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/LightDataProcessor.java
@@ -0,0 +1,56 @@
+package com.sandu.ximon.admin.manager.iot.amqp.processor;
+
+import com.sandu.common.util.SpringContextHolder;
+import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5LightErrorCodeReportInnerFrame;
+import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5LightHeartbeatReportInnerFrame;
+import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5LightTimeSyncReportInnerFrame;
+import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame;
+import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5LightReportEnum;
+import com.sandu.ximon.admin.service.LightReportDataService;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.ArrayList;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/13 11:58
+ * 鍗曠伅鏁版嵁涓婃姤澶勭悊
+ */
+@Slf4j
+public class LightDataProcessor implements IMessageProcessor {
+
+    private LightDataProcessor() {
+    }
+
+    public static LightDataProcessor getInstance() {
+        return LightDataProcessorHolder.INSTANCE;
+    }
+
+    private static class LightDataProcessorHolder {
+
+        private static final LightDataProcessor INSTANCE = new LightDataProcessor();
+    }
+
+    @Override
+    public void process(String productKey, String deviceName, CommonFrame frame) {
+        String functionCode = frame.getPayload().substring(2, 4);
+        if (A5LightReportEnum.HeartBeat_Data.getCode().equals(functionCode)) {
+            log.info("蹇冭烦鐩稿簲");
+            A5LightHeartbeatReportInnerFrame heartbeatReportInnerFrame = new A5LightHeartbeatReportInnerFrame().transformFrame(frame.getPayload());
+            log.info(heartbeatReportInnerFrame.toString());
+
+            SpringContextHolder.getBean(LightReportDataService.class).saveReportData(deviceName,heartbeatReportInnerFrame.getHeartBeatDataPackage());
+
+//            SpringContextHolder.getBean(LightService.class).saveLight(deviceName,heartbeatReportInnerFrame.getHeartBeatDataPackage());
+
+        } else if (A5LightReportEnum.Time_Synchronized.getCode().equals(functionCode)) {
+//            log.info("璇锋眰鏃堕棿鍚屾");
+            A5LightTimeSyncReportInnerFrame syncRespInnerFrame = new A5LightTimeSyncReportInnerFrame().transformFrame(frame.getPayload());
+//            log.info(syncRespInnerFrame.toString());
+        } else if (A5LightReportEnum.Error_Code.getCode().equals(functionCode)) {
+//            log.info("鏁呴殰鐮佷笂鎶�");
+            A5LightErrorCodeReportInnerFrame codeRespInnerFrame = new A5LightErrorCodeReportInnerFrame().transformFrame(frame.getPayload());
+//            log.info(codeRespInnerFrame.toString());
+        }
+    }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5LightHeartbeatReportInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5LightHeartbeatReportInnerFrame.java
index 9b28ccd..566ce55 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5LightHeartbeatReportInnerFrame.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5LightHeartbeatReportInnerFrame.java
@@ -1,5 +1,7 @@
 package com.sandu.ximon.admin.manager.iot.frame.inner.report;
 
+import cn.hutool.core.util.HexUtil;
+import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.StrUtil;
 import com.sandu.ximon.admin.manager.iot.frame.inner.BaseResponseInnerFrame;
 import com.sandu.ximon.admin.manager.iot.frame.inner.IResponseInnerFrame;
@@ -54,41 +56,41 @@
     @Data
     public static class HeartBeatDataPackage implements IResponseInnerFrame<HeartBeatDataPackage> {
         //  骞碦TC 1
-        private String year;
+        private Integer year;
         //  鏈圧TC 1
-        private String month;
+        private Integer month;
         //  鏃TC 1
-        private String day;
+        private Integer day;
         //  鏃禦TC 1
-        private String hour;
+        private Integer hour;
         //  鍒哛TC 1
-        private String min;
+        private Integer min;
         //  绉扲TC 1
-        private String sec;
+        private Integer sec;
         //  璁惧娓╁害 2  1瀛楄妭鏁存暟1瀛楄妭灏忔暟
-        private String deviceTemperature;
+        private Double deviceTemperature;
         //  浜害鐧惧垎姣� 1
-        private String lightPercent;
+        private Integer lightPercent;
         //  鐢电綉鐢靛帇 2 1瀛楄妭鏁存暟1瀛楄妭灏忔暟
-        private String gridVol;
+        private Double voltage;
         //  鐢电綉鐢垫祦 2 1瀛楄妭鏁存暟1瀛楄妭灏忔暟
-        private String gridCur;
+        private Double electricCurrent;
         //  璧吂 2 1瀛楄妭鏁存暟1瀛楄妭灏忔暟
-        private String hertz;
+        private Double hertz;
         //  鍔熺巼鍥犵礌 2 1瀛楄妭鏁存暟1瀛楄妭灏忔暟
-        private String powerFactor;
+        private Double powerFactor;
         //  鏈夊姛鍔熺巼 2 1瀛楄妭鏁存暟1瀛楄妭灏忔暟
-        private String activePower;
+        private Double activePower;
         //  鏃犲姛鍔熺巼 2 1瀛楄妭鏁存暟1瀛楄妭灏忔暟
-        private String reactivePower;
+        private Double reactivePower;
         //  鏈�杩戜竴娆′寒鐏椂闂� 4 绉�
-        private String recentlyLightSec;
+        private Long recentlyLightSec;
         //  绱浜伅鏃堕棿 4
-        private String totalLightTime;
+        private Long totalLightSec;
         //  鏈�杩戜竴娆$敤鐢电數閲� 4
-        private String recentlyUsingPower;
+        private Double recentlyUsingPower;
         //  绱鐢ㄧ數鐢甸噺 4
-        private String totalUsingPower;
+        private Double totalUsingPower;
         //  淇濈暀 11
         private String retain;
         //  鍘熷抚
@@ -97,27 +99,32 @@
         @Override
         public HeartBeatDataPackage transformFrame(String hex) {
             this.originFrame = hex;
-            this.year = hex.substring(0, 2);
-            this.month = hex.substring(2, 4);
-            this.day = hex.substring(4, 6);
-            this.hour = hex.substring(6, 8);
-            this.min = hex.substring(8, 10);
-            this.sec = hex.substring(10, 12);
+            this.year = HexUtil.hexToInt(hex.substring(0, 2));
+            this.month = HexUtil.hexToInt(hex.substring(2, 4));
+            this.day = HexUtil.hexToInt(hex.substring(4, 6));
+            this.hour = HexUtil.hexToInt(hex.substring(6, 8));
+            this.min = HexUtil.hexToInt(hex.substring(8, 10));
+            this.sec = HexUtil.hexToInt(hex.substring(10, 12));
 
-            this.deviceTemperature = hex.substring(12, 16);
-            this.lightPercent = hex.substring(16, 18);
-            this.gridVol = hex.substring(18, 22);
-            this.gridCur = hex.substring(22, 26);
-            this.hertz = hex.substring(26, 30);
-            this.powerFactor = hex.substring(30, 34);
-            this.activePower = hex.substring(34, 38);
-            this.reactivePower = hex.substring(38, 42);
-            this.recentlyLightSec = hex.substring(42, 50);
-            this.totalLightTime = hex.substring(50, 58);
-            this.recentlyUsingPower = hex.substring(58, 66);
-            this.totalUsingPower = hex.substring(66, 74);
+            this.deviceTemperature = NumberUtil.round(HexUtil.hexToInt(hex.substring(12, 16)) * 0.01, 2).doubleValue();
+            this.lightPercent = HexUtil.hexToInt(hex.substring(16, 18));
+            this.voltage = NumberUtil.round(HexUtil.hexToInt(hex.substring(18, 22)) * 0.1, 1).doubleValue();
+            this.electricCurrent = NumberUtil.round(HexUtil.hexToInt(hex.substring(22, 26)) * 0.001, 3).doubleValue();
+            this.hertz = NumberUtil.round(HexUtil.hexToInt(hex.substring(26, 30)) * 0.01, 2).doubleValue();
+            this.powerFactor = NumberUtil.round(HexUtil.hexToInt(hex.substring(30, 34)) * 0.001, 3).doubleValue();
+            this.activePower = NumberUtil.round(HexUtil.hexToInt(hex.substring(34, 38)) * 0.01, 2).doubleValue();
+            this.reactivePower = NumberUtil.round(HexUtil.hexToInt(hex.substring(38, 42)) * 0.01, 2).doubleValue();
+            this.recentlyLightSec = HexUtil.hexToLong(hex.substring(42, 50));
+            this.totalLightSec = HexUtil.hexToLong(hex.substring(50, 58));
+            this.recentlyUsingPower = NumberUtil.round(HexUtil.hexToInt(hex.substring(58, 66)) * (double) 0.001, 3).doubleValue();
+            this.totalUsingPower = NumberUtil.round(HexUtil.hexToInt(hex.substring(66, 74)) * (double) 0.001, 3).doubleValue();
             this.retain = hex.substring(74, 96);
             return this;
         }
     }
+
+    public static void main(String[] args) {
+        System.out.println(HexUtil.hexToLong("F64D020F"));
+        System.out.println(5 * (float) 0.001);
+    }
 }
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleGroupParam.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleGroupParam.java
new file mode 100644
index 0000000..e3e7a5d
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleGroupParam.java
@@ -0,0 +1,16 @@
+package com.sandu.ximon.admin.param;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/13 18:22
+ */
+@Data
+public class PoleGroupParam {
+
+    @NotEmpty(message = "鍒嗙粍鍚嶇О涓嶈兘涓虹┖")
+    private String groupName;
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleGroupRelationParam.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleGroupRelationParam.java
new file mode 100644
index 0000000..6174849
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleGroupRelationParam.java
@@ -0,0 +1,17 @@
+package com.sandu.ximon.admin.param;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/13 18:22
+ */
+@Data
+public class PoleGroupRelationParam {
+
+    @NotEmpty(message = "鐏潌id涓嶈兘涓虹┖")
+    private List<Long> poleId;
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleParam.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleParam.java
new file mode 100644
index 0000000..cddc442
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleParam.java
@@ -0,0 +1,62 @@
+package com.sandu.ximon.admin.param;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * @author chenjiantian
+ */
+@Data
+public class PoleParam {
+
+    @NotEmpty(message = "鐏潌鍚嶇О涓嶈兘涓虹┖")
+    private String poleName;
+
+    /**
+     * 瀹㈡埛id
+     */
+    @NotNull(message = "瀹㈡埛id涓嶈兘涓虹┖")
+    private Long clientId;
+
+    /**
+     * 鐪�
+     */
+    @NotEmpty(message = "鐪佷笉鑳戒负绌�")
+    private String province;
+
+    /**
+     * 甯�
+     */
+    @NotEmpty(message = "甯備笉鑳戒负绌�")
+    private String city;
+
+    /**
+     * 鍖�
+     */
+    private String region;
+
+    /**
+     * 璇︾粏鍦板潃
+     */
+    @NotEmpty(message = "璇︾粏鍦板潃涓嶈兘涓虹┖")
+    private String address;
+
+    /**
+     * 缁忓害
+     */
+    @NotNull(message = "缁忓害涓嶈兘涓虹┖")
+    private BigDecimal lon;
+
+    /**
+     * 绾害
+     */
+    @NotNull(message = "绾害涓嶈兘涓虹┖")
+    private BigDecimal lat;
+
+
+
+
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/redis/LightKey.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/redis/LightKey.java
new file mode 100644
index 0000000..c5f7bea
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/redis/LightKey.java
@@ -0,0 +1,28 @@
+package com.sandu.ximon.admin.redis;
+
+import com.sandu.common.redis.BasePrefix;
+
+/**
+ * @author chenjiantian
+ * @date 2021/9/3 16:40
+ * 鐏浉鍏崇殑key
+ */
+public class LightKey extends BasePrefix {
+    public LightKey(int expireSeconds, String prefix) {
+        super(expireSeconds, prefix);
+    }
+
+    @Override
+    public String getModelName() {
+        return "Light";
+    }
+
+
+    /**
+     * 鍗曠伅涓婃姤鐨刴ac锛屽鏋滄湁璇存槑璇ヤ笂鎶ョ殑鍗曠伅浠ュ墠宸茬粡涓婃姤杩�
+     */
+    public static LightKey REPORT_MAC = new LightKey(0, "ReportMac");
+
+    public static LightKey POLE_SN = new LightKey(300, "PoleSn");
+
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightRemarkService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightRemarkService.java
new file mode 100644
index 0000000..7d92ed2
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightRemarkService.java
@@ -0,0 +1,15 @@
+package com.sandu.ximon.admin.service;
+
+import com.sandu.common.service.impl.BaseServiceImpl;
+import com.sandu.ximon.dao.domain.LightRemark;
+import com.sandu.ximon.dao.mapper.LightRemarkMapper;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/13 16:00
+ * 鐏澶噑ervice
+ */
+@Service
+public class LightRemarkService extends BaseServiceImpl<LightRemarkMapper, LightRemark> {
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportDataService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportDataService.java
new file mode 100644
index 0000000..213eaeb
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportDataService.java
@@ -0,0 +1,31 @@
+package com.sandu.ximon.admin.service;
+
+import com.sandu.common.service.impl.BaseServiceImpl;
+import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5LightHeartbeatReportInnerFrame;
+import com.sandu.ximon.dao.domain.LightReportData;
+import com.sandu.ximon.dao.mapper.LightReportDataMapper;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/13 16:00
+ * 鐏笂鎶ユ暟鎹� service
+ */
+@Service
+public class LightReportDataService extends BaseServiceImpl<LightReportDataMapper, LightReportData> {
+
+    /**
+     * 淇濆瓨涓婃姤鐨勭伅蹇冭烦鏁版嵁
+     *
+     * @return 鏄惁鎴愬姛
+     */
+    public boolean saveReportData(String deviceName, A5LightHeartbeatReportInnerFrame.HeartBeatDataPackage heartBeatDataPackage) {
+
+        LightReportData lightReportData = new LightReportData();
+        BeanUtils.copyProperties(heartBeatDataPackage, lightReportData);
+        lightReportData.setDeviceMac(deviceName);
+
+        return save(lightReportData);
+    }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleGroupRelationService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleGroupRelationService.java
new file mode 100644
index 0000000..be15d0b
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleGroupRelationService.java
@@ -0,0 +1,42 @@
+package com.sandu.ximon.admin.service;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.sandu.common.execption.BusinessException;
+import com.sandu.common.service.impl.BaseServiceImpl;
+import com.sandu.ximon.admin.param.PoleGroupParam;
+import com.sandu.ximon.admin.security.SecurityUtils;
+import com.sandu.ximon.dao.domain.PoleGroup;
+import com.sandu.ximon.dao.domain.PoleGroupRelation;
+import com.sandu.ximon.dao.mapper.GroupMapper;
+import com.sandu.ximon.dao.mapper.PoleGroupMapper;
+import com.sandu.ximon.dao.mapper.PoleGroupRelationMapper;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 鍒嗙粍鎿嶄綔
+ *
+ * @author chenjiantian
+ */
+@Service
+@AllArgsConstructor
+public class PoleGroupRelationService extends BaseServiceImpl<PoleGroupRelationMapper, PoleGroupRelation> {
+
+    /**
+     * 缁戝畾鐏潌
+     */
+    public boolean saveBinding(Long groupId,List<Long> poleIdList) {
+        remove(Wrappers.lambdaQuery(PoleGroupRelation.class).eq(PoleGroupRelation::getPoleGroupId,groupId));
+        List<PoleGroupRelation> batchList = new ArrayList<>();
+        for (Long poleId : poleIdList) {
+            PoleGroupRelation poleGroupRelation = new PoleGroupRelation();
+            poleGroupRelation.setPoleGroupId(groupId);
+            poleGroupRelation.setPoleId(poleId);
+            batchList.add(poleGroupRelation);
+        }
+        return saveBatch(batchList);
+    }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleGroupService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleGroupService.java
new file mode 100644
index 0000000..c788391
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleGroupService.java
@@ -0,0 +1,72 @@
+package com.sandu.ximon.admin.service;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.sandu.common.execption.BusinessException;
+import com.sandu.common.service.impl.BaseServiceImpl;
+import com.sandu.ximon.admin.param.PoleGroupParam;
+import com.sandu.ximon.admin.security.SecurityUtils;
+import com.sandu.ximon.dao.domain.PoleGroup;
+import com.sandu.ximon.dao.mapper.GroupMapper;
+import com.sandu.ximon.dao.mapper.PoleGroupMapper;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 鍒嗙粍鎿嶄綔
+ *
+ * @author chenjiantian
+ */
+@Service
+@AllArgsConstructor
+public class PoleGroupService extends BaseServiceImpl<PoleGroupMapper, PoleGroup> {
+
+    private final PoleGroupRelationService poleGroupRelationService;
+
+    public boolean addGroup(PoleGroupParam param) {
+        PoleGroup group = new PoleGroup();
+        group.setClientId(SecurityUtils.getClientId());
+        group.setGroupName(param.getGroupName());
+        return save(group);
+    }
+
+    public boolean updateGroup(Long groupId, PoleGroupParam param) {
+        PoleGroup poleGroup = getById(groupId);
+        if (poleGroup == null) {
+            throw new BusinessException("鏈壘鍒拌鍒嗙粍");
+        }
+        PoleGroup update = new PoleGroup();
+        update.setGroupId(groupId);
+        update.setGroupName(param.getGroupName());
+        return updateById(update);
+    }
+
+    public boolean deleteGroup(Long groupId) {
+        PoleGroup poleGroup = getById(groupId);
+        if (poleGroup == null) {
+            throw new BusinessException("鏈壘鍒拌鍒嗙粍");
+        }
+        return removeById(groupId);
+    }
+
+    public List<PoleGroup> groupList() {
+        Long clientId = SecurityUtils.getClientId();
+        if (clientId == null) {
+            return list();
+        } else {
+            return list(Wrappers.lambdaQuery(PoleGroup.class).eq(PoleGroup::getClientId, clientId));
+        }
+    }
+
+    /**
+     * 缁戝畾鐏潌
+     */
+    public boolean bindPole(Long groupId,List<Long> poleList) {
+        PoleGroup poleGroup = getById(groupId);
+        if (poleGroup == null) {
+            throw new BusinessException("鏈壘鍒拌鍒嗙粍");
+        }
+        return poleGroupRelationService.saveBinding(groupId,poleList);
+    }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
new file mode 100644
index 0000000..5129b9c
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
@@ -0,0 +1,87 @@
+package com.sandu.ximon.admin.service;
+
+import com.sandu.common.execption.BusinessException;
+import com.sandu.common.redis.RedisService;
+import com.sandu.common.service.impl.BaseServiceImpl;
+import com.sandu.ximon.admin.param.LampPostParam;
+import com.sandu.ximon.admin.param.PoleParam;
+import com.sandu.ximon.admin.redis.LightKey;
+import com.sandu.ximon.admin.security.CountSet;
+import com.sandu.ximon.dao.domain.LampPost;
+import com.sandu.ximon.dao.domain.Pole;
+import com.sandu.ximon.dao.mapper.ClientMapper;
+import com.sandu.ximon.dao.mapper.LampPostMapper;
+import com.sandu.ximon.dao.mapper.PoleMapper;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * 鐏潌鐩稿叧
+ *
+ * @author chenjiantian
+ */
+@Service
+@Slf4j
+@AllArgsConstructor
+public class PoleService extends BaseServiceImpl<PoleMapper, Pole> {
+    private final CountSet countSet;
+    private final LampCountService lampCountService;
+    private final ClientMapper clientMapper;
+    private final LampPostMapper lampPostMapper;
+    private final RedisService redisService;
+
+    public boolean addPole(PoleParam param) {
+        Pole pole = new Pole();
+        BeanUtils.copyProperties(param, pole);
+        pole.setPoleCode(generatePoleCode());
+        return save(pole);
+    }
+
+    public boolean updatePole(Long poleId, PoleParam param) {
+        Pole pole = getById(poleId);
+        if (pole == null) {
+            throw new BusinessException("鏈壘鍒拌鐏潌");
+        }
+        Pole update = new Pole();
+        BeanUtils.copyProperties(param, update);
+        update.setId(poleId);
+        return updateById(update);
+    }
+
+    /**
+     * 鍒犻櫎鐏潌
+     */
+    public boolean deletePole(Long poleId){
+        Pole pole = getById(poleId);
+        if (pole == null) {
+            throw new BusinessException("鏈壘鍒拌鐏潌");
+        }
+        return removeById(poleId);
+    }
+
+
+
+    /**
+     * 鐢熸垚鐏潌缂栧彿
+     */
+    private Long generatePoleCode() {
+        StringBuilder sb = new StringBuilder();
+        String date = new SimpleDateFormat("yyMMdd").format(new Date());
+        sb.append(date);
+        String key = LightKey.POLE_SN.key(null);
+        Long increment = redisService.incr(key, 1);
+        String incrementStr = increment.toString();
+        if (incrementStr.length() <= 4) {
+            sb.append(String.format("%04d", increment));
+        } else {
+            sb.append(incrementStr);
+        }
+        return Long.parseLong(sb.toString());
+    }
+
+}

--
Gitblit v1.9.3