From a0587b1f268b8535ed660fbc521d341d9268340a Mon Sep 17 00:00:00 2001
From: chenjiantian <214228265@qq.com>
Date: 星期五, 17 十二月 2021 18:15:17 +0800
Subject: [PATCH] 灯模块
---
dao/src/main/java/com/sandu/ximon/dao/domain/Light.java | 12
dao/src/main/java/com/sandu/ximon/dao/domain/PoleBinding.java | 4
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/LightDataProcessor.java | 16
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/InitAmqpListener.java | 14
dao/src/main/resources/mapper/LightMapper.xml | 47 +++
dao/src/main/java/com/sandu/ximon/dao/mapper/LightMapper.java | 30 ++
dao/src/main/resources/mapper/LightReportErrorMapper.xml | 35 ++
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightService.java | 96 ++++++
dao/src/main/java/com/sandu/ximon/dao/domain/LightReportData.java | 9
dao/src/main/java/com/sandu/ximon/dao/bo/LightReportDataBo.java | 14 +
dao/src/main/java/com/sandu/ximon/dao/mapper/LightReportDataMapper.java | 18 +
dao/src/main/resources/mapper/LightReportDataMapper.xml | 50 +++
dao/src/main/java/com/sandu/ximon/dao/bo/LightBo.java | 22 +
dao/src/main/resources/mapper/PoleBindingMapper.xml | 4
ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleBindingParam.java | 4
ximon-admin/src/main/java/com/sandu/ximon/admin/dto/DeviceStatus.java | 21 +
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleBindingService.java | 18
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportDataService.java | 25 +
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportErrorService.java | 44 +++
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java | 25 +
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LightController.java | 48 ++
dao/src/main/java/com/sandu/ximon/dao/mapper/LightReportErrorMapper.java | 26 +
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java | 13
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LightTaskController.java | 2
/dev/null | 15 -
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5LightErrorCodeReportInnerFrame.java | 8
ximon-admin/src/main/java/com/sandu/ximon/admin/param/LightRemarkParam.java | 21 +
dao/src/main/java/com/sandu/ximon/dao/bo/LightReportErrorBo.java | 15 +
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/DeviceStateEnum.java | 44 +++
dao/src/main/java/com/sandu/ximon/dao/domain/LightReportError.java | 18
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5LightHeartbeatReportInnerFrame.java | 11
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/LightErrorEnum.java | 61 ++++
ximon-admin/src/main/java/com/sandu/ximon/admin/redis/LightKey.java | 5
33 files changed, 698 insertions(+), 97 deletions(-)
diff --git a/dao/src/main/java/com/sandu/ximon/dao/bo/LightBo.java b/dao/src/main/java/com/sandu/ximon/dao/bo/LightBo.java
new file mode 100644
index 0000000..479594f
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/bo/LightBo.java
@@ -0,0 +1,22 @@
+package com.sandu.ximon.dao.bo;
+
+import com.sandu.ximon.dao.domain.Light;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/17 14:51
+ * 璺伅鍒楄〃瀹炰綋绫�
+ */
+@Data
+public class LightBo extends Light {
+
+ private Long poleId;
+ private String poleCode;
+ private String poleName;
+ private String taskName;
+ private LocalDateTime reportTime;
+
+}
diff --git a/dao/src/main/java/com/sandu/ximon/dao/bo/LightReportDataBo.java b/dao/src/main/java/com/sandu/ximon/dao/bo/LightReportDataBo.java
new file mode 100644
index 0000000..b086376
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/bo/LightReportDataBo.java
@@ -0,0 +1,14 @@
+package com.sandu.ximon.dao.bo;
+
+import com.sandu.ximon.dao.domain.LightReportData;
+import lombok.Data;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/17 16:51
+ */
+@Data
+public class LightReportDataBo extends LightReportData {
+
+ private String poleName;
+}
diff --git a/dao/src/main/java/com/sandu/ximon/dao/bo/LightReportErrorBo.java b/dao/src/main/java/com/sandu/ximon/dao/bo/LightReportErrorBo.java
new file mode 100644
index 0000000..fb52838
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/bo/LightReportErrorBo.java
@@ -0,0 +1,15 @@
+package com.sandu.ximon.dao.bo;
+
+import com.sandu.ximon.dao.domain.LightReportError;
+import lombok.Data;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/17 16:51
+ */
+@Data
+public class LightReportErrorBo extends LightReportError {
+
+ private String poleName;
+ private String errorMsg;
+}
diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/LightRemark.java b/dao/src/main/java/com/sandu/ximon/dao/domain/Light.java
similarity index 79%
rename from dao/src/main/java/com/sandu/ximon/dao/domain/LightRemark.java
rename to dao/src/main/java/com/sandu/ximon/dao/domain/Light.java
index beba73c..622aa09 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/domain/LightRemark.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/Light.java
@@ -9,22 +9,22 @@
import lombok.Data;
/**
- * 璺伅澶囨敞琛�
- * @TableName light_remark
+ * 璺伅琛�
+ * @TableName light
*/
-@TableName(value ="light_remark")
+@TableName(value ="light")
@Data
-public class LightRemark implements Serializable {
+public class Light implements Serializable {
/**
*
*/
@TableId(type = IdType.AUTO)
- private Long id;
+ private Long lightId;
/**
* 璁惧璇嗗埆鐮�
*/
- private String deviceMac;
+ private String deviceCode;
/**
* 澶囨敞淇℃伅
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
index f2fa8f6..101b032 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/domain/LightReportData.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/LightReportData.java
@@ -24,7 +24,7 @@
/**
* 璁惧mac
*/
- private String deviceMac;
+ private String deviceCode;
/**
* 甯傜數鐢靛帇
@@ -57,11 +57,16 @@
private Double reactivePower;
/**
- * 浜害鐧惧垎姣旓紝0-100
+ * 鐏�1浜害鐧惧垎姣旓紝0-100
*/
private Integer lightPercent;
/**
+ * 鐏�2浜害鐧惧垎姣�
+ */
+ private Integer light2Percent;
+
+ /**
* 鏈�杩戜竴娆′寒鐏椂闂�
*/
private Long recentlyLightSec;
diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/LightRemark.java b/dao/src/main/java/com/sandu/ximon/dao/domain/LightReportError.java
similarity index 69%
copy from dao/src/main/java/com/sandu/ximon/dao/domain/LightRemark.java
copy to dao/src/main/java/com/sandu/ximon/dao/domain/LightReportError.java
index beba73c..817358b 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/domain/LightRemark.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/LightReportError.java
@@ -9,27 +9,27 @@
import lombok.Data;
/**
- * 璺伅澶囨敞琛�
- * @TableName light_remark
+ * 鐏笂鎶ユ晠闅滅爜琛�
+ * @TableName light_report_error
*/
-@TableName(value ="light_remark")
+@TableName(value ="light_report_error")
@Data
-public class LightRemark implements Serializable {
+public class LightReportError implements Serializable {
/**
*
*/
@TableId(type = IdType.AUTO)
- private Long id;
+ private Long lightReportErrorId;
/**
- * 璁惧璇嗗埆鐮�
+ * 璁惧mac
*/
- private String deviceMac;
+ private String deviceCode;
/**
- * 澶囨敞淇℃伅
+ * 鏁呴殰鐮�
*/
- private String remark;
+ private Integer errorCode;
/**
* 鍒涘缓鏃堕棿
diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/PoleBinding.java b/dao/src/main/java/com/sandu/ximon/dao/domain/PoleBinding.java
index 32bb63c..bf15c04 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/domain/PoleBinding.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/PoleBinding.java
@@ -32,9 +32,9 @@
private String deviceName;
/**
- * 缁戝畾璁惧mac
+ * 缁戝畾璁惧鐮�
*/
- private String deviceMac;
+ private String deviceCode;
/**
* 璁惧绫诲瀷锛�0璺伅锛�1led灞忓箷锛�2鍏呯數妗╋紝3澶ф皵鐩戞祴锛�4姘磋川鐩戞祴锛�5ip闊虫煴锛�6lcd骞垮憡鏈猴紝7鎽勫儚澶达紝8鏉嗕綋鍊炬祴锛�9涓�閿晳鍔�
diff --git a/dao/src/main/java/com/sandu/ximon/dao/mapper/LightMapper.java b/dao/src/main/java/com/sandu/ximon/dao/mapper/LightMapper.java
new file mode 100644
index 0000000..36e61f7
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/mapper/LightMapper.java
@@ -0,0 +1,30 @@
+package com.sandu.ximon.dao.mapper;
+
+import com.sandu.ximon.dao.bo.LightBo;
+import com.sandu.ximon.dao.domain.Light;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sandu.ximon.dao.domain.LightReportData;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @Entity com.sandu.ximon.dao.domain.Light
+ */
+@Mapper
+public interface LightMapper extends BaseMapper<Light> {
+
+ /**
+ * 鏈嶅姟鍣ㄨ幏鍙栬矾鐏垪琛�
+ *
+ * @param clientId 瀹㈡埛id
+ * @param keyword 鍏抽敭瀛�
+ * @return 璺伅鍒楄〃
+ */
+ List<LightBo> listLight(Long clientId, String keyword);
+
+}
+
+
+
+
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
deleted file mode 100644
index 325fb2e..0000000
--- a/dao/src/main/java/com/sandu/ximon/dao/mapper/LightRemarkMapper.java
+++ /dev/null
@@ -1,17 +0,0 @@
-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
index fada183..40ea701 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/mapper/LightReportDataMapper.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/mapper/LightReportDataMapper.java
@@ -1,8 +1,11 @@
package com.sandu.ximon.dao.mapper;
+import com.sandu.ximon.dao.bo.LightReportDataBo;
import com.sandu.ximon.dao.domain.LightReportData;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
/**
* @Entity com.sandu.ximon.dao.domain.LightReportData
@@ -10,6 +13,21 @@
@Mapper
public interface LightReportDataMapper extends BaseMapper<LightReportData> {
+ /**
+ * 鑾峰彇鎸囧畾璁惧鍚楁渶鏂颁笂鎶ョ殑涓�鏉℃暟鎹�
+ * @param deviceCodeList 鎸囧畾璁惧鐮�
+ * @return 涓婃姤鏁版嵁
+ */
+ List<LightReportData> getNewestReportByDeviceCode(List<String> deviceCodeList);
+
+
+ /**
+ * 鑾峰彇涓婃姤鏁版嵁鍒楄〃
+ * @param keyword 鍏抽敭璇�
+ * @param deviceCode 璁惧鐮�
+ * @return 涓婃姤鏁版嵁
+ */
+ List<LightReportDataBo> listReportData(String keyword, String deviceCode);
}
diff --git a/dao/src/main/java/com/sandu/ximon/dao/mapper/LightReportErrorMapper.java b/dao/src/main/java/com/sandu/ximon/dao/mapper/LightReportErrorMapper.java
new file mode 100644
index 0000000..e451d0c
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/mapper/LightReportErrorMapper.java
@@ -0,0 +1,26 @@
+package com.sandu.ximon.dao.mapper;
+
+import com.sandu.ximon.dao.bo.LightReportErrorBo;
+import com.sandu.ximon.dao.domain.LightReportError;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @Entity com.sandu.ximon.dao.domain.LightReportError
+ */
+@Mapper
+public interface LightReportErrorMapper extends BaseMapper<LightReportError> {
+
+ /**
+ * 鑾峰彇鏁呴殰鐮佸垪琛�
+ * @param keyword 鍏抽敭璇�
+ * @return 鏁呴殰鐮佸垪琛�
+ */
+ List<LightReportErrorBo> listReportError(String keyword);
+}
+
+
+
+
diff --git a/dao/src/main/resources/mapper/LightMapper.xml b/dao/src/main/resources/mapper/LightMapper.xml
new file mode 100644
index 0000000..13a5468
--- /dev/null
+++ b/dao/src/main/resources/mapper/LightMapper.xml
@@ -0,0 +1,47 @@
+<?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.LightMapper">
+
+ <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.Light">
+ <id property="lightId" column="light_id" jdbcType="BIGINT"/>
+ <result property="deviceCode" column="device_code" 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>
+
+ <resultMap id="listLight" type="com.sandu.ximon.dao.bo.LightBo" extends="BaseResultMap">
+ <result property="poleId" column="pole_id" jdbcType="BIGINT"/>
+ <result property="poleCode" column="pole_code" jdbcType="VARCHAR"/>
+ <result property="poleName" column="pole_name" jdbcType="VARCHAR"/>
+ <result property="taskName" column="task_name" jdbcType="VARCHAR"/>
+ </resultMap>
+
+
+ <select id="listLight" resultMap="listLight">
+ SELECT
+ t1.*,
+ t2.id AS pole_id,
+ t2.pole_code,
+ t2.pole_name,
+ t4.task_name
+ FROM
+ light t1
+ LEFT JOIN pole t2 USING ( device_code )
+ LEFT JOIN light_task_pole_relation t3 ON t3.pole_id = t2.id
+ LEFT JOIN light_task t4 ON t3.task_id = t4.task_id
+ <where>
+ <if test="clientId != null">
+ AND t2.client_id = #{clientId}
+ </if>
+ <if test="keyword != null and keyword != ''">
+ AND (
+ t1.device_code LIKE CONCAT('%', #{keyword},'%')
+ OR t2.pole_name LIKE CONCAT('%', #{keyword},'%')
+ )
+ </if>
+ </where>
+ </select>
+</mapper>
diff --git a/dao/src/main/resources/mapper/LightRemarkMapper.xml b/dao/src/main/resources/mapper/LightRemarkMapper.xml
deleted file mode 100644
index 830b576..0000000
--- a/dao/src/main/resources/mapper/LightRemarkMapper.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?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
index 360d7cc..649f93f 100644
--- a/dao/src/main/resources/mapper/LightReportDataMapper.xml
+++ b/dao/src/main/resources/mapper/LightReportDataMapper.xml
@@ -6,7 +6,7 @@
<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="deviceCode" column="device_code" 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"/>
@@ -14,6 +14,7 @@
<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="light2Percent" column="light2_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"/>
@@ -22,11 +23,44 @@
<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>
+ <resultMap id="listReportData" type="com.sandu.ximon.dao.bo.LightReportDataBo" extends="BaseResultMap">
+ <result property="poleName" column="pole_name" jdbcType="VARCHAR"/>
+ </resultMap>
+
+ <select id="getNewestReportByDeviceCode" resultMap="BaseResultMap">
+ SELECT
+ t1.*
+ FROM
+ light_report_data t1
+ JOIN (
+ SELECT
+ MAX( light_report_data_id ) AS light_report_data_id
+ FROM
+ light_report_data
+ WHERE device_code IN
+ <foreach collection="deviceCodeList" open="(" close=")" separator="," item="deviceCode">
+ #{deviceCode}
+ </foreach>
+ GROUP BY device_code
+ ) AS t2 USING ( light_report_data_id )
+ </select>
+ <select id="listReportData" resultMap="listReportData">
+ SELECT
+ t1.* ,t2.pole_name
+ FROM
+ light_report_data t1
+ LEFT JOIN pole t2 USING ( device_code )
+ <where>
+ <if test="keyword != null and keyword != ''">
+ AND (
+ t1.device_code LIKE CONCAT('%', #{keyword},'%')
+ OR t2.pole_name LIKE CONCAT('%', #{keyword},'%')
+ )
+ </if>
+ <if test="deviceCode != null and keyword != ''">
+ AND t1.device_code = #{deviceCode}
+ </if>
+ </where>
+ ORDER BY t1.light_report_data_id DESC
+ </select>
</mapper>
diff --git a/dao/src/main/resources/mapper/LightReportErrorMapper.xml b/dao/src/main/resources/mapper/LightReportErrorMapper.xml
new file mode 100644
index 0000000..c578b23
--- /dev/null
+++ b/dao/src/main/resources/mapper/LightReportErrorMapper.xml
@@ -0,0 +1,35 @@
+<?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.LightReportErrorMapper">
+
+ <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.LightReportError">
+ <id property="lightReportErrorId" column="light_report_error_id" jdbcType="BIGINT"/>
+ <result property="deviceCode" column="device_code" jdbcType="VARCHAR"/>
+ <result property="errorCode" column="error_code" jdbcType="INTEGER"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ </resultMap>
+ <resultMap id="listReportError" type="com.sandu.ximon.dao.bo.LightReportErrorBo" extends="BaseResultMap">
+ <result property="poleName" column="pole_name" jdbcType="INTEGER"/>
+ </resultMap>
+
+ <select id="listReportError" resultMap="listReportError">
+ SELECT
+ t1.*,
+ t2.pole_name
+ FROM
+ light_report_error t1
+ LEFT JOIN pole t2 USING ( device_code )
+ <where>
+ <if test="keyword != null and keyword != ''">
+ AND (
+ t1.device_code LIKE CONCAT('%', #{keyword},'%')
+ OR t2.pole_name LIKE CONCAT('%', #{keyword},'%')
+ )
+ </if>
+ </where>
+ ORDER BY t1.light_report_error_id DESC
+ </select>
+</mapper>
diff --git a/dao/src/main/resources/mapper/PoleBindingMapper.xml b/dao/src/main/resources/mapper/PoleBindingMapper.xml
index 20a429d..23aaa92 100644
--- a/dao/src/main/resources/mapper/PoleBindingMapper.xml
+++ b/dao/src/main/resources/mapper/PoleBindingMapper.xml
@@ -8,7 +8,7 @@
<id property="id" column="id" jdbcType="BIGINT"/>
<result property="poleId" column="pole_id" jdbcType="BIGINT"/>
<result property="deviceName" column="device_name" jdbcType="VARCHAR"/>
- <result property="deviceMac" column="device_mac" jdbcType="VARCHAR"/>
+ <result property="deviceCode" column="device_code" jdbcType="VARCHAR"/>
<result property="deviceType" column="device_type" jdbcType="INTEGER"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
@@ -16,7 +16,7 @@
<sql id="Base_Column_List">
id,pole_id,device_name,
- device_mac,device_type,create_time,
+ device_code,device_type,create_time,
update_time
</sql>
</mapper>
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LightController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LightController.java
index 05cc0d0..61607c9 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LightController.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LightController.java
@@ -1,19 +1,18 @@
package com.sandu.ximon.admin.controller;
-import cn.hutool.core.util.StrUtil;
-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.object.BaseConditionVO;
import com.sandu.common.util.ResponseUtil;
-import com.sandu.ximon.admin.dto.LightDataDto;
+import com.sandu.ximon.admin.param.LightRemarkParam;
import com.sandu.ximon.admin.service.LightReportDataService;
-import com.sandu.ximon.dao.domain.Pole;
+import com.sandu.ximon.admin.service.LightReportErrorService;
+import com.sandu.ximon.admin.service.LightService;
+import com.sandu.ximon.dao.bo.LightBo;
+import com.sandu.ximon.dao.bo.LightReportDataBo;
+import com.sandu.ximon.dao.bo.LightReportErrorBo;
import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -27,13 +26,42 @@
@RequestMapping("/v1/light")
public class LightController {
+ private final LightService lightService;
private final LightReportDataService lightReportDataService;
+ private final LightReportErrorService lightReportErrorService;
@GetMapping("/list")
public ResponseVO<Object> listLight(BaseConditionVO conditionVO, @RequestParam(required = false) String keyword) {
- List<LightDataDto> list = lightReportDataService.listLight(conditionVO.getPageNo(),conditionVO.getPageSize(),keyword);
+ List<LightBo> list = lightService.listLight(conditionVO.getPageNo(), conditionVO.getPageSize(), keyword);
return ResponseUtil.success(list);
}
+ @PostMapping("/remark")
+ public ResponseVO<Object> addRemark(@RequestBody @Validated LightRemarkParam param) {
+ boolean result = lightService.addRemark(param);
+ if (result) {
+ return ResponseUtil.success("娣诲姞鎴愬姛");
+ } else {
+ return ResponseUtil.fail("娣诲姞澶辫触");
+ }
+ }
+
+ /**
+ * 鑾峰彇涓婃姤鏁版嵁
+ *
+ * @param conditionVO
+ * @return
+ */
+ @GetMapping("/report/list")
+ public ResponseVO<Object> listReportData(BaseConditionVO conditionVO, @RequestParam(required = false) String keyword, @RequestParam(required = false) String deviceCode) {
+ List<LightReportDataBo> list = lightReportDataService.listReportData(conditionVO.getPageNo(), conditionVO.getPageSize(), keyword, deviceCode);
+ return ResponseUtil.success(list);
+ }
+
+ @GetMapping("/error/list")
+ public ResponseVO<Object> listReportError(BaseConditionVO conditionVO, @RequestParam(required = false) String keyword) {
+ List<LightReportErrorBo> list = lightReportErrorService.listReportError(conditionVO.getPageNo(), conditionVO.getPageSize(), keyword);
+ return ResponseUtil.success(list);
+ }
}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LightTaskController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LightTaskController.java
index 508c787..fbcd48e 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LightTaskController.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LightTaskController.java
@@ -54,7 +54,7 @@
@PostMapping("/update/{taskId}")
public ResponseVO<Object> updateLightTask(@PathVariable Long taskId, @RequestBody @Validated LightTaskParam param) {
- boolean result = lightTaskService.updateLightTask(taskId,param);
+ boolean result = lightTaskService.updateLightTask(taskId, param);
if (result) {
return ResponseUtil.success("缂栬緫鎴愬姛");
} else {
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
index 9d41d53..bf7a5df 100644
--- 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
@@ -1,10 +1,13 @@
package com.sandu.ximon.admin.controller;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
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.dto.DeviceStatus;
import com.sandu.ximon.admin.param.PoleBindingParam;
import com.sandu.ximon.admin.param.PoleParam;
import com.sandu.ximon.admin.service.PoleService;
@@ -13,6 +16,7 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import java.util.Arrays;
import java.util.List;
/**
@@ -92,5 +96,14 @@
}
}
+ @PostMapping("/listStatusByDeviceCode")
+ public ResponseVO<Object> getStatusById(@RequestBody String[] deviceCodeList){
+ if(ArrayUtil.isEmpty(deviceCodeList)) {
+ return ResponseUtil.fail("鍙傛暟涓嶈兘涓虹┖");
+ }
+ List<DeviceStatus> statusList = poleService.listStatusByDeviceCode(CollectionUtil.toList(deviceCodeList));
+ return ResponseUtil.success(statusList);
+ }
+
}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/DeviceStatus.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/DeviceStatus.java
new file mode 100644
index 0000000..3886764
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/DeviceStatus.java
@@ -0,0 +1,21 @@
+package com.sandu.ximon.admin.dto;
+
+import lombok.Data;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/17 15:55
+ * 闃块噷浜戣澶囩姸鎬�
+ */
+@Data
+public class DeviceStatus {
+
+ private String deviceCode;
+ /**
+ * 0 涓嬬嚎
+ * 1 涓婄嚎
+ * 2 鏈縺娲�
+ * 3 涓嶅彲鐢�
+ */
+ private Integer status;
+}
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 ae06b5f..ce8a8ad 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();
- }*/
+// @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/LightDataProcessor.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/LightDataProcessor.java
index dfeaae7..79add96 100644
--- 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
@@ -7,9 +7,9 @@
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 com.sandu.ximon.admin.service.LightReportErrorService;
+import com.sandu.ximon.admin.service.LightService;
import lombok.extern.slf4j.Slf4j;
-
-import java.util.ArrayList;
/**
* @author chenjiantian
@@ -37,20 +37,20 @@
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());
+ SpringContextHolder.getBean(LightReportDataService.class).saveReportData(deviceName, heartbeatReportInnerFrame.getHeartBeatDataPackage());
+ SpringContextHolder.getBean(LightService.class).saveLight(deviceName);
} 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("鏁呴殰鐮佷笂鎶�");
+ log.info("鏁呴殰鐮佷笂鎶�");
A5LightErrorCodeReportInnerFrame codeRespInnerFrame = new A5LightErrorCodeReportInnerFrame().transformFrame(frame.getPayload());
-// log.info(codeRespInnerFrame.toString());
+ if (codeRespInnerFrame.getErrorCode() != 0) {
+ SpringContextHolder.getBean(LightReportErrorService.class).saveReportError(deviceName, codeRespInnerFrame);
+ }
}
}
}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5LightErrorCodeReportInnerFrame.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5LightErrorCodeReportInnerFrame.java
index 5a44b37..c48128f 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5LightErrorCodeReportInnerFrame.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5LightErrorCodeReportInnerFrame.java
@@ -1,5 +1,6 @@
package com.sandu.ximon.admin.manager.iot.frame.inner.report;
+import cn.hutool.core.util.HexUtil;
import cn.hutool.core.util.StrUtil;
import com.sandu.ximon.admin.manager.iot.frame.inner.BaseResponseInnerFrame;
import com.sandu.ximon.admin.manager.iot.rrpc.util.CRC32Utils;
@@ -23,7 +24,7 @@
/**
* 鏁呴殰鐮�
*/
- private String errorCode;
+ private int errorCode;
@Override
public A5LightErrorCodeReportInnerFrame transformFrame(String hex) {
@@ -39,7 +40,10 @@
setDestinationAddress(hex.substring(8, 12));
- setErrorCode(hex.substring(12, 16));
+ String errorCodeHex = hex.substring(12, 16);
+ errorCode = HexUtil.hexToInt(errorCodeHex);
+ System.out.println("鏁呴殰鐮侊細"+ errorCodeHex +" - " + errorCode);
+
setCrc32(hex.substring(hex.length() - 8));
// 鏍¢獙CRC32
String frame = getFunctionCode() + getPayloadLength() + getDestinationAddress() + getErrorCode();
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 566ce55..e25240e 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
@@ -69,7 +69,7 @@
private Integer sec;
// 璁惧娓╁害 2 1瀛楄妭鏁存暟1瀛楄妭灏忔暟
private Double deviceTemperature;
- // 浜害鐧惧垎姣� 1
+ // 鐏�1浜害鐧惧垎姣� 1
private Integer lightPercent;
// 鐢电綉鐢靛帇 2 1瀛楄妭鏁存暟1瀛楄妭灏忔暟
private Double voltage;
@@ -91,6 +91,8 @@
private Double recentlyUsingPower;
// 绱鐢ㄧ數鐢甸噺 4
private Double totalUsingPower;
+ // 鐏�2浜害鐧惧垎姣� 1
+ private Integer light2Percent;
// 淇濈暀 11
private String retain;
// 鍘熷抚
@@ -118,13 +120,10 @@
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);
+ this.light2Percent = HexUtil.hexToInt(hex.substring(74, 76));
+ this.retain = hex.substring(76, 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/manager/iot/rrpc/enums/DeviceStateEnum.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/DeviceStateEnum.java
new file mode 100644
index 0000000..aff9b80
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/DeviceStateEnum.java
@@ -0,0 +1,44 @@
+package com.sandu.ximon.admin.manager.iot.rrpc.enums;
+
+import com.sandu.common.enums.ResponseStatusEnums;
+
+/**
+ * @author chenjiantian
+ * 闃块噷浜戣澶囩姸鎬佹灇涓�
+ */
+public enum DeviceStateEnum {
+
+ /*
+ ON_LINE 璁惧鍦ㄧ嚎銆�
+ OFFLINE 璁惧绂荤嚎
+ UNACTIVE 璁惧鏈縺娲�
+ DISABLE 璁惧宸茬鐢�
+ */
+
+ OFFLINE(0),
+ ONLINE(1),
+ UNACTIVE(2),
+ DISABLE(3);
+
+
+ DeviceStateEnum(Integer code) {
+ this.code = code;
+ }
+
+ private final Integer code;
+
+ public Integer getCode() {
+ return code;
+ }
+
+
+ public static Integer getCode(String name) {
+ for (DeviceStateEnum ut : DeviceStateEnum.values()) {
+ if (ut.name().equals(name)) {
+ return ut.getCode();
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/LampPostOnLineState.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/LampPostOnLineState.java
deleted file mode 100644
index fa998ee..0000000
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/LampPostOnLineState.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.sandu.ximon.admin.manager.iot.rrpc.enums;
-
-public enum LampPostOnLineState {
-
- /*
- ON_LINE 璁惧鍦ㄧ嚎銆�
- OFFLINE 璁惧绂荤嚎
- UNACTIVE 璁惧鏈縺娲�
- DISABLE 璁惧宸茬鐢�
- */
-
- ONLINE(1),
- OFFLINE(2),
- UNACTIVE(3),
- DISABLE(0)
- ;
-
-
-
- LampPostOnLineState(Integer code) {
- this.code = code;
- }
-
- private final Integer code;
-
- public Integer getCode() {
- return code;
- }
-}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/LightErrorEnum.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/LightErrorEnum.java
new file mode 100644
index 0000000..1149242
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/LightErrorEnum.java
@@ -0,0 +1,61 @@
+package com.sandu.ximon.admin.manager.iot.rrpc.enums;
+
+/**
+ * @author chenjiantian
+ * 鍗曠伅閿欒涓婃姤鐮�
+ * "鏁呴殰鐮侊細锛堢敤浜岃繘鍒惰〃绀猴級
+ * 0x0000,浜岃繘鍒跺嵆涓篬bit15:bit0]銆�
+ * 瀵瑰簲鏁呴殰bit浣嶇疆1锛屾甯哥疆0" bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
+ * 0 0 0 0 0 0 0 0 鏃ュ巻鏃堕棿閿欒 甯傜數鐢靛帇杩囦綆(110V) 甯傜數鐢靛帇杩囬珮(250V) 杈撳嚭婕忕數 鍔熺巼杩囪浇 璁惧娓╁害杩囬珮 鏃犵數娴� 鏃犵數鍘�
+ */
+public enum LightErrorEnum {
+
+ /**
+ * 鏃犵數鍘�
+ */
+ NO_VOL(1,"鏃犵數鍘�"),
+ /**
+ * 鏃犵數娴�
+ */
+ NO_CUR(2,"鏃犵數娴�"),
+ /**
+ * 璁惧娓╁害杩囬珮
+ */
+ DEVICE_TEMPERATURE_HIGHER(4,"璁惧娓╁害杩囬珮"),
+ /**
+ * 鍔熺巼杩囪浇
+ */
+ OVER_POWER(8,"鍔熺巼杩囪浇"),
+ /**
+ * 杈撳嚭婕忕數
+ */
+ OUTPUT_ELE_LEAKAGE(16,"杈撳嚭婕忕數"),
+ /**
+ * 甯傜數鐢靛帇杩囬珮(250V)
+ */
+ OVER_VOL(32,"甯傜數鐢靛帇杩囬珮(250V)"),
+ /**
+ * 甯傜數鐢靛帇杩囦綆(110V)
+ */
+ LOWER_VOL(64,"甯傜數鐢靛帇杩囦綆(110V)"),
+ /**
+ * 鏃ュ巻鏃堕棿閿欒
+ */
+ CALENDAR_ERROR(128,"鏃ュ巻鏃堕棿閿欒");
+
+ private final Integer code;
+ private final String message;
+
+ LightErrorEnum(Integer code, String message) {
+ this.code = code;
+ this.message = message;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/param/LightRemarkParam.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/param/LightRemarkParam.java
new file mode 100644
index 0000000..1f06110
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/param/LightRemarkParam.java
@@ -0,0 +1,21 @@
+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 LightRemarkParam {
+
+ @NotNull(message = "璺伅id涓嶈兘涓虹┖")
+ private Long lightId;
+ @NotEmpty(message = "澶囨敞涓嶈兘涓虹┖")
+ private String remark;
+
+
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleBindingParam.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleBindingParam.java
index 6a1684a..8598150 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleBindingParam.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleBindingParam.java
@@ -13,8 +13,8 @@
@Data
public class PoleBindingParam {
- @NotBlank(message = "璁惧Mac涓嶈兘涓虹┖")
- private String deviceMac;
+ @NotBlank(message = "璁惧鐮佷笉鑳戒负绌�")
+ private String deviceCode;
@NotNull(message = "璁惧绫诲瀷涓嶈兘涓虹┖")
private Integer deviceType;
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
index c5f7bea..f7fe403 100644
--- 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
@@ -21,8 +21,11 @@
/**
* 鍗曠伅涓婃姤鐨刴ac锛屽鏋滄湁璇存槑璇ヤ笂鎶ョ殑鍗曠伅浠ュ墠宸茬粡涓婃姤杩�
*/
- public static LightKey REPORT_MAC = new LightKey(0, "ReportMac");
+ public static LightKey REPORT_MAC = new LightKey(3600, "ReportMac");
+ /**
+ * 鐏潌缂栧彿鍚庣紑姣忓ぉ浠�1寮�濮嬮�掑锛屽畾鏃朵换鍔�0鐐归噸缃�
+ */
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
deleted file mode 100644
index 7d92ed2..0000000
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightRemarkService.java
+++ /dev/null
@@ -1,15 +0,0 @@
-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
index 5a79a77..3ce83ab 100644
--- 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
@@ -4,6 +4,8 @@
import com.sandu.common.service.impl.BaseServiceImpl;
import com.sandu.ximon.admin.dto.LightDataDto;
import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5LightHeartbeatReportInnerFrame;
+import com.sandu.ximon.dao.bo.LightBo;
+import com.sandu.ximon.dao.bo.LightReportDataBo;
import com.sandu.ximon.dao.domain.LightReportData;
import com.sandu.ximon.dao.mapper.LightReportDataMapper;
import org.springframework.beans.BeanUtils;
@@ -19,27 +21,36 @@
@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);
+ lightReportData.setDeviceCode(deviceName);
return save(lightReportData);
}
/**
- * 鑾峰彇璺伅鍒楄〃
- * @return 杩斿洖缁勫悎鏁版嵁dto
+ * 鑾峰彇鎸囧畾璁惧鐮佹渶鏂扮殑涓�澶╀笂鎶ユ暟鎹�
+ * @param deviceCodeList 璁惧鐮佸垪琛�
+ * @return 涓婃姤鏁版嵁
*/
- public List<LightDataDto> listLight(int pageNo, int pageSize, String keyword) {
- PageHelper.startPage(pageNo,pageSize);
+ public List<LightReportData> getNewestReportByDeviceCode(List<String> deviceCodeList) {
+ return baseMapper.getNewestReportByDeviceCode(deviceCodeList);
+ }
- return null;
+ /**
+ * 鑾峰彇涓婃姤鏁版嵁
+ * @param keyword 鍏抽敭璇�
+ * @param deviceCode 璁惧鐮�
+ */
+ public List<LightReportDataBo> listReportData(int pageNo, int pageSize, String keyword, String deviceCode) {
+ PageHelper.startPage(pageNo,pageSize);
+ return baseMapper.listReportData(keyword,deviceCode);
}
}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportErrorService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportErrorService.java
new file mode 100644
index 0000000..73c5b22
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportErrorService.java
@@ -0,0 +1,44 @@
+package com.sandu.ximon.admin.service;
+
+import com.github.pagehelper.PageHelper;
+import com.sandu.common.service.impl.BaseServiceImpl;
+import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5LightErrorCodeReportInnerFrame;
+import com.sandu.ximon.admin.manager.iot.rrpc.enums.LightErrorEnum;
+import com.sandu.ximon.dao.bo.LightReportErrorBo;
+import com.sandu.ximon.dao.domain.LightReportError;
+import com.sandu.ximon.dao.mapper.LightReportErrorMapper;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/17 17:47
+ */
+@Service
+public class LightReportErrorService extends BaseServiceImpl<LightReportErrorMapper, LightReportError> {
+
+ public void saveReportError(String deviceName, A5LightErrorCodeReportInnerFrame codeRespInnerFrame) {
+ LightReportError lightReportError = new LightReportError();
+ lightReportError.setDeviceCode(deviceName);
+ lightReportError.setErrorCode(codeRespInnerFrame.getErrorCode());
+ save(lightReportError);
+ }
+
+ public List<LightReportErrorBo> listReportError(int pageNo, int pageSize, String keyword) {
+ PageHelper.startPage(pageNo,pageSize);
+ List<LightReportErrorBo> lightReportErrorBos = baseMapper.listReportError(keyword);
+ for (LightReportErrorBo lightReportErrorBo : lightReportErrorBos) {
+ Integer errorCode = lightReportErrorBo.getErrorCode();
+ StringBuilder sb = new StringBuilder();
+ LightErrorEnum[] values = LightErrorEnum.values();
+ for (LightErrorEnum value : values) {
+ if((value.getCode() & errorCode) > 0){
+ sb.append(value.getMessage());
+ }
+ }
+ lightReportErrorBo.setErrorMsg(sb.toString());
+ }
+ return lightReportErrorBos;
+ }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightService.java
new file mode 100644
index 0000000..dfa16dd
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightService.java
@@ -0,0 +1,96 @@
+package com.sandu.ximon.admin.service;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.pagehelper.PageHelper;
+import com.sandu.common.execption.BusinessException;
+import com.sandu.common.redis.RedisService;
+import com.sandu.common.service.impl.BaseServiceImpl;
+import com.sandu.ximon.admin.dto.LightDataDto;
+import com.sandu.ximon.admin.param.LightRemarkParam;
+import com.sandu.ximon.admin.redis.LightKey;
+import com.sandu.ximon.admin.security.SecurityUtils;
+import com.sandu.ximon.dao.bo.LightBo;
+import com.sandu.ximon.dao.domain.Light;
+import com.sandu.ximon.dao.domain.LightReportData;
+import com.sandu.ximon.dao.mapper.LightMapper;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author chenjiantian
+ * @date 2021/12/13 16:00
+ * 鐏澶噑ervice
+ */
+@Service
+@Slf4j
+@AllArgsConstructor
+public class LightService extends BaseServiceImpl<LightMapper, Light> {
+
+ private final RedisService redisService;
+ private final LightReportDataService lightReportDataService;
+
+ /**
+ * 褰曞叆褰撳墠璁惧鐮佺殑璺伅鏁版嵁
+ * @param deviceName mac
+ */
+ public void saveLight(String deviceName) {
+ Boolean hasKey = redisService.hasKey(LightKey.REPORT_MAC.key(deviceName));
+ if(!hasKey){
+ int count = count(Wrappers.lambdaQuery(Light.class).eq(Light::getDeviceCode, deviceName));
+ log.info("redis鏌ヤ笉鍒拌矾鐏暟鎹畕}={}",count,deviceName);
+ // 褰撳墠璺伅琛ㄦ病鏈夊綍鍏ヨ澶囧悧
+ if(count == 0){
+ Light light = new Light();
+ light.setDeviceCode(deviceName);
+ save(light);
+ }
+ redisService.set(LightKey.REPORT_MAC.key(deviceName),1,LightKey.REPORT_MAC.expireSeconds());
+ }
+ }
+
+ /**
+ * 鑾峰彇璺伅鍒楄〃
+ *
+ * @return 杩斿洖缁勫悎鏁版嵁dto
+ */
+ public List<LightBo> listLight(int pageNo, int pageSize, String keyword) {
+ Long clientId = SecurityUtils.getClientId();
+
+ PageHelper.startPage(pageNo, pageSize);
+
+ List<LightBo> listLight = baseMapper.listLight(clientId,keyword);
+
+ // 鑾峰彇鏈�杩戠殑涓婃姤鏃堕棿
+ List<String> deviceCodeList = listLight.stream().map(Light::getDeviceCode).collect(Collectors.toList());
+ if(CollectionUtil.isNotEmpty(deviceCodeList)){
+ List<LightReportData> reportDataList = lightReportDataService.getNewestReportByDeviceCode(deviceCodeList);
+ for (LightBo lightBo : listLight) {
+ for (LightReportData lightReportData : reportDataList) {
+ if(StrUtil.equals(lightBo.getDeviceCode(),lightReportData.getDeviceCode())){
+ lightBo.setReportTime(lightReportData.getCreateTime());
+ break;
+ }
+ }
+ }
+ }
+
+ return listLight;
+ }
+
+ public boolean addRemark(LightRemarkParam param) {
+ Light light = getById(param.getLightId());
+ if(light == null){
+ throw new BusinessException("鎵句笉鍒拌矾鐏�");
+ }
+ Light update = new Light();
+ update.setLightId(param.getLightId());
+ update.setRemark(param.getRemark());
+ return updateById(update);
+ }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleBindingService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleBindingService.java
index 8f810d5..749fd9c 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleBindingService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleBindingService.java
@@ -20,15 +20,15 @@
public boolean bindPole(Long poleId, PoleBindingParam param) {
Integer deviceType = param.getDeviceType();
- if (PoleBindingEnums.LIGHT.getCode().equals(deviceType)) {
- PoleBinding poleBinding = new PoleBinding();
- poleBinding.setPoleId(poleId);
- poleBinding.setDeviceType(deviceType);
- poleBinding.setDeviceName(param.getDeviceName());
- poleBinding.setDeviceMac(param.getDeviceMac());
- return save(poleBinding);
- }
+// if (PoleBindingEnums.LIGHT.getCode().equals(deviceType)) {
+// }
+ PoleBinding poleBinding = new PoleBinding();
+ poleBinding.setPoleId(poleId);
+ poleBinding.setDeviceType(deviceType);
+ poleBinding.setDeviceName(param.getDeviceName());
+ poleBinding.setDeviceCode(param.getDeviceCode());
+ return save(poleBinding);
- return false;
+// return false;
}
}
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
index 744345a..510f104 100644
--- 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
@@ -8,6 +8,7 @@
import com.sandu.common.execption.BusinessException;
import com.sandu.common.redis.RedisService;
import com.sandu.common.service.impl.BaseServiceImpl;
+import com.sandu.ximon.admin.dto.DeviceStatus;
import com.sandu.ximon.admin.manager.iot.frame.A1Frame;
import com.sandu.ximon.admin.manager.iot.frame.FrameBuilder;
import com.sandu.ximon.admin.manager.iot.frame.IRequestFrame;
@@ -21,6 +22,7 @@
import com.sandu.ximon.admin.manager.iot.rrpc.enums.A1OrderEnum;
import com.sandu.ximon.admin.manager.iot.rrpc.enums.A2OrderEnum;
import com.sandu.ximon.admin.manager.iot.rrpc.enums.A5OrderEnum;
+import com.sandu.ximon.admin.manager.iot.rrpc.enums.DeviceStateEnum;
import com.sandu.ximon.admin.manager.iot.rrpc.mainboard.MainBoardInvokeSyncService;
import com.sandu.ximon.admin.param.PoleBindingParam;
import com.sandu.ximon.admin.param.PoleParam;
@@ -288,4 +290,27 @@
return list(Wrappers.lambdaQuery(Pole.class).in(Pole::getId, poleIdList).select(Pole::getDeviceCode))
.stream().map(Pole::getDeviceCode).filter(StrUtil::isNotEmpty).collect(Collectors.toList());
}
+
+ /**
+ * 鎵归噺鑾峰彇闃块噷浜戣澶囩殑鐘舵��
+ * @param deviceCodeList 闃块噷浜戣澶囩爜
+ * @return 璁惧鐘舵�佸垪琛�
+ */
+ public List<DeviceStatus> listStatusByDeviceCode(ArrayList<String> deviceCodeList) {
+ // 鏈�澶у彧鑳芥煡50涓�
+ List<List<String>> split = CollectionUtil.split(deviceCodeList, 50);
+ List<DeviceStatus> statusList = new ArrayList<>();
+ for (List<String> list : split) {
+ List<BatchGetDeviceStateResponse.DeviceStatus> deviceStatuses = MainBoardInvokeSyncService.getInstance().batchGetDeviceState(list);
+ if(CollectionUtil.isNotEmpty(deviceStatuses)){
+ for (BatchGetDeviceStateResponse.DeviceStatus d : deviceStatuses) {
+ DeviceStatus deviceStatus = new DeviceStatus();
+ deviceStatus.setDeviceCode(d.getDeviceName());
+ deviceStatus.setStatus(DeviceStateEnum.getCode(d.getStatus()));
+ statusList.add(deviceStatus);
+ }
+ }
+ }
+ return statusList;
+ }
}
--
Gitblit v1.9.3