2021与蓝度共同重构项目,服务端
chenjiantian
2021-12-13 11fedf1d94650cbda4751ea89371ed43432c325a
基础通信
已添加29个文件
已修改4个文件
已删除1个文件
1289 ■■■■■ 文件已修改
dao/src/main/java/com/sandu/ximon/dao/domain/Light.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/domain/LightRemark.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/domain/LightReportData.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/domain/Pole.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/domain/PoleGroup.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/domain/PoleGroupRelation.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/mapper/LightRemarkMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/mapper/LightReportDataMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/mapper/PoleGroupMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/mapper/PoleGroupRelationMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/mapper/PoleMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/LightRemarkMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/LightReportDataMapper.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/PoleGroupMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/PoleGroupRelationMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/PoleMapper.xml 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/config/RedisConfig.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/LampPostController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleController.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PoleGroupController.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/AmqpMessageListener.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/InitAmqpListener.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/IMessageProcessor.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/amqp/processor/LightDataProcessor.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/frame/inner/report/A5LightHeartbeatReportInnerFrame.java 79 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleGroupParam.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleGroupRelationParam.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/param/PoleParam.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/redis/LightKey.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightRemarkService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportDataService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleGroupRelationService.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleGroupService.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/domain/Light.java
ÎļþÒÑɾ³ý
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;
}
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;
}
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;
}
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;
}
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;
}
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> {
}
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> {
}
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> {
}
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> {
}
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> {
}
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>
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>
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>
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>
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>
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 {
}
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);
    }
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);
    }
}
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());
    }
}
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());
        }
    }
}
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();
    }*/
    }
}
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);
}
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());
        }
    }
}
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> {
        //  å¹´RTC 1
        private String year;
        private Integer year;
        //  æœˆRTC 1
        private String month;
        private Integer month;
        //  æ—¥RTC 1
        private String day;
        private Integer day;
        //  æ—¶RTC 1
        private String hour;
        private Integer hour;
        //  åˆ†RTC 1
        private String min;
        private Integer min;
        //  ç§’RTC 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);
    }
}
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;
}
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;
}
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;
}
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";
    }
    /**
     * å•灯上报的mac,如果有说明该上报的单灯以前已经上报过
     */
    public static LightKey REPORT_MAC = new LightKey(0, "ReportMac");
    public static LightKey POLE_SN = new LightKey(300, "PoleSn");
}
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
 * ç¯è®¾å¤‡service
 */
@Service
public class LightRemarkService extends BaseServiceImpl<LightRemarkMapper, LightRemark> {
}
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);
    }
}
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);
    }
}
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);
    }
}
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());
    }
}