screen-api/src/main/java/com/moral/api/controller/AlarmController.java
New file @@ -0,0 +1,41 @@ package com.moral.api.controller; import com.moral.api.entity.Sensor; import com.moral.api.pojo.vo.alarm.AlarmLevelVO; import com.moral.api.service.OrganizationUnitAlarmService; import com.moral.constant.ResponseCodeEnum; import com.moral.constant.ResultMessage; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * @ClassName AlarmController * @Description TODO * @Author 陈凯裕 * @Date 2021/6/28 10:30 * @Version TODO **/ @Slf4j @Api(tags = {"报警数据"}) @RestController @CrossOrigin(origins = "*", maxAge = 3600) @RequestMapping("/deviceInfo") public class AlarmController { @Autowired OrganizationUnitAlarmService organizationUnitAlarmService; @GetMapping("queryAlarmByMac") public ResultMessage queryByMac(String mac){ List<Sensor> sensors = organizationUnitAlarmService.queryAlarmLevel(mac); AlarmLevelVO vo = AlarmLevelVO.convert(sensors); return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(), vo); } } screen-api/src/main/java/com/moral/api/entity/Device.java
New file @@ -0,0 +1,145 @@ package com.moral.api.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.annotation.TableId; import java.time.LocalDateTime; import java.io.Serializable; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import lombok.EqualsAndHashCode; /** * <p> * 设备表 * </p> * * @author moral * @since 2021-06-28 */ @Data @EqualsAndHashCode(callSuper = false) public class Device extends Model<Device> { private static final long serialVersionUID = 1L; /** * 主键id */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 设备名称 */ private String name; /** * mac号 */ private String mac; /** * 设备地址 */ private String address; /** * 经度 */ private Double longitude; /** * 纬度 */ private Double latitude; /** * 设备状态,与字典表关联 */ private String state; /** * 维护人id,多个逗号隔开,来源于manage_account */ private String operateIds; /** * 站点id */ private Integer monitorPointId; /** * 组织id */ private Integer organizationId; /** * 设备型号id */ private Integer deviceVersionId; /** * 行业,与字典表关联 */ private String profession; /** * 设备工艺,1:烟道;2:厂界;3:车间,基本数据在字典表 */ private String tech; /** * 设备检测器,与字典表关联 */ private String detector; /** * 采购商,与字典表关联 */ private String purchaser; /** * 创建(生产)时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; /** * 更新时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date updateTime; /** * 安装时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date installTime; /** * 逻辑删除,0:不删除;1:删除 */ private String isDelete; /** * 设备工艺扩展字段 */ private String extend; /* * 设备型号 * */ @TableField(exist = false) private Version version; @Override protected Serializable pkVal() { return this.id; } } screen-api/src/main/java/com/moral/api/entity/OrganizationUnitAlarm.java
New file @@ -0,0 +1,82 @@ package com.moral.api.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.annotation.TableId; import java.time.LocalDateTime; import java.io.Serializable; import lombok.Data; import lombok.EqualsAndHashCode; /** * <p> * 组织显示单位以及报警等级表 * </p> * * @author moral * @since 2021-06-28 */ @Data @EqualsAndHashCode(callSuper = false) public class OrganizationUnitAlarm extends Model<OrganizationUnitAlarm> { private static final long serialVersionUID = 1L; /** * 主键 */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 组织id */ private Integer organizationId; /** * 型号id */ private Integer versionId; /** * 因子code */ private String sensorCode; /** * 因子接收的单位 */ private String unitKey; /** * 显示单位的字典key */ private String showUnitKey; /** * 报警等级 */ private String alarmLevel; /** * 创建时间 */ private LocalDateTime createTime; /** * 更新时间 */ private LocalDateTime updateTime; /** * 是否删除 */ private String isDelete; @Override protected Serializable pkVal() { return this.id; } } screen-api/src/main/java/com/moral/api/entity/Sensor.java
New file @@ -0,0 +1,99 @@ package com.moral.api.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.annotation.TableId; import java.time.LocalDateTime; import java.io.Serializable; import java.util.Date; import lombok.Data; import lombok.EqualsAndHashCode; /** * <p> * * </p> * * @author moral * @since 2021-06-28 */ @Data @EqualsAndHashCode(callSuper = false) public class Sensor extends Model<Sensor> { private static final long serialVersionUID = 1L; /** * 序号 */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 因子名称 */ private String name; /** * 公司自定义因子编号 */ @TableField(value = "`desc`") private String desc; /** * 国标因子编码 */ @TableField(value = "`code`") private String code; /** * 上限 */ private Double upper; /** * 下限 */ private Double lower; /** * 默认单位 */ private String defaultUnitKey; /** * 创建时间 */ private Date createTime; /** * 更新时间 */ private Date updateTime; /** * 是否删除 */ private String isDelete; @TableField(exist = false) private String unit; @TableField(exist = false) private String unitKey; @TableField(exist = false) private String showUnit; @TableField(exist = false) private String showUnitKey; @TableField(exist = false) private String alarmLevel; @TableField(exist = false) private String formula; } screen-api/src/main/java/com/moral/api/entity/Version.java
New file @@ -0,0 +1,72 @@ package com.moral.api.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.annotation.TableId; import java.time.LocalDateTime; import java.io.Serializable; import java.util.Date; import java.util.List; import lombok.Data; import lombok.EqualsAndHashCode; /** * <p> * 型号表 * </p> * * @author moral * @since 2021-06-28 */ @Data @EqualsAndHashCode(callSuper = false) public class Version extends Model<Version> { private static final long serialVersionUID = 1L; /** * 主键 */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 名称 */ private String name; /** * 创建时间 */ private Date createTime; /** * 更新时间 */ private Date updateTime; /** * 是否删除 */ private String isDelete; /** * 描述 */ @TableField(value = "`desc`") private String desc; /* * 版本拥有的因子 * */ @TableField(exist = false) private List<Sensor> sensors; @Override protected Serializable pkVal() { return this.id; } } screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java
File was renamed from screen-api/src/main/java/com/moral/api/kafka/consumer/SecondsDataConsumer.java @@ -20,9 +20,9 @@ * @Version TODO **/ //@Component public class SecondsDataConsumer implements ConsumerSeekAware { public class SecondDataConsumer implements ConsumerSeekAware { @KafkaListener(topics = "test",groupId = "SecondsDataGroup3") @KafkaListener(topics = "second_data",groupId = "SecondsDataGroup3") public void listen(ConsumerRecord<String, String> record , Consumer consumer) throws Exception { String messageStr = record.value(); Map<String,String> message = (Map<String,String>)JSON.parse(messageStr); screen-api/src/main/java/com/moral/api/mapper/DeviceMapper.java
New file @@ -0,0 +1,16 @@ package com.moral.api.mapper; import com.moral.api.entity.Device; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * <p> * 设备表 Mapper 接口 * </p> * * @author moral * @since 2021-06-28 */ public interface DeviceMapper extends BaseMapper<Device> { } screen-api/src/main/java/com/moral/api/mapper/OrganizationUnitAlarmMapper.java
New file @@ -0,0 +1,16 @@ package com.moral.api.mapper; import com.moral.api.entity.OrganizationUnitAlarm; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * <p> * 组织显示单位以及报警等级表 Mapper 接口 * </p> * * @author moral * @since 2021-06-28 */ public interface OrganizationUnitAlarmMapper extends BaseMapper<OrganizationUnitAlarm> { } screen-api/src/main/java/com/moral/api/mapper/SensorMapper.java
New file @@ -0,0 +1,16 @@ package com.moral.api.mapper; import com.moral.api.entity.Sensor; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * <p> * Mapper 接口 * </p> * * @author moral * @since 2021-06-28 */ public interface SensorMapper extends BaseMapper<Sensor> { } screen-api/src/main/java/com/moral/api/mapper/VersionMapper.java
New file @@ -0,0 +1,16 @@ package com.moral.api.mapper; import com.moral.api.entity.Version; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * <p> * 型号表 Mapper 接口 * </p> * * @author moral * @since 2021-06-28 */ public interface VersionMapper extends BaseMapper<Version> { } screen-api/src/main/java/com/moral/api/pojo/vo/alarm/AlarmLevelVO.java
New file @@ -0,0 +1,30 @@ package com.moral.api.pojo.vo.alarm; import com.moral.api.entity.Sensor; import lombok.Data; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @ClassName AlarmLevelVO * @Description TODO * @Author 陈凯裕 * @Date 2021/6/28 11:07 * @Version TODO **/ @Data public class AlarmLevelVO { private Map<String,String> alarmLevel; public static AlarmLevelVO convert(List<Sensor> sensors){ AlarmLevelVO alarmLevelVO = new AlarmLevelVO(); Map<String,String> alarmLevel = new HashMap<>(); for (Sensor sensor : sensors) { alarmLevel.put(sensor.getCode(),sensor.getAlarmLevel()); } alarmLevelVO.setAlarmLevel(alarmLevel); return alarmLevelVO; } } screen-api/src/main/java/com/moral/api/service/DeviceService.java
New file @@ -0,0 +1,16 @@ package com.moral.api.service; import com.moral.api.entity.Device; import com.baomidou.mybatisplus.extension.service.IService; /** * <p> * 设备表 服务类 * </p> * * @author moral * @since 2021-06-28 */ public interface DeviceService extends IService<Device> { } screen-api/src/main/java/com/moral/api/service/OrganizationUnitAlarmService.java
New file @@ -0,0 +1,19 @@ package com.moral.api.service; import com.moral.api.entity.OrganizationUnitAlarm; import com.baomidou.mybatisplus.extension.service.IService; import com.moral.api.entity.Sensor; import java.util.List; /** * <p> * 组织显示单位以及报警等级表 服务类 * </p> * * @author moral * @since 2021-06-28 */ public interface OrganizationUnitAlarmService extends IService<OrganizationUnitAlarm> { List<Sensor> queryAlarmLevel(String mac); } screen-api/src/main/java/com/moral/api/service/SensorService.java
New file @@ -0,0 +1,16 @@ package com.moral.api.service; import com.moral.api.entity.Sensor; import com.baomidou.mybatisplus.extension.service.IService; /** * <p> * 服务类 * </p> * * @author moral * @since 2021-06-28 */ public interface SensorService extends IService<Sensor> { } screen-api/src/main/java/com/moral/api/service/VersionService.java
New file @@ -0,0 +1,16 @@ package com.moral.api.service; import com.moral.api.entity.Version; import com.baomidou.mybatisplus.extension.service.IService; /** * <p> * 型号表 服务类 * </p> * * @author moral * @since 2021-06-28 */ public interface VersionService extends IService<Version> { } screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.moral.api.service.impl; import com.moral.api.entity.Device; import com.moral.api.mapper.DeviceMapper; import com.moral.api.service.DeviceService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** * <p> * 设备表 服务实现类 * </p> * * @author moral * @since 2021-06-28 */ @Service public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> implements DeviceService { } screen-api/src/main/java/com/moral/api/service/impl/OrganizationUnitAlarmServiceImpl.java
New file @@ -0,0 +1,39 @@ package com.moral.api.service.impl; import com.moral.api.entity.Device; import com.moral.api.entity.OrganizationUnitAlarm; import com.moral.api.entity.Sensor; import com.moral.api.entity.Version; import com.moral.api.mapper.OrganizationUnitAlarmMapper; import com.moral.api.service.OrganizationUnitAlarmService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.constant.RedisConstants; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; /** * <p> * 组织显示单位以及报警等级表 服务实现类 * </p> * * @author moral * @since 2021-06-28 */ @Service public class OrganizationUnitAlarmServiceImpl extends ServiceImpl<OrganizationUnitAlarmMapper, OrganizationUnitAlarm> implements OrganizationUnitAlarmService { @Autowired RedisTemplate redisTemplate; @Override public List<Sensor> queryAlarmLevel(String mac) { Device device = (Device) redisTemplate.opsForHash().get(RedisConstants.DEVICE_INFO, mac); Version version = device.getVersion(); List<Sensor> sensors = version.getSensors(); return sensors; } } screen-api/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.moral.api.service.impl; import com.moral.api.entity.Sensor; import com.moral.api.mapper.SensorMapper; import com.moral.api.service.SensorService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** * <p> * 服务实现类 * </p> * * @author moral * @since 2021-06-28 */ @Service public class SensorServiceImpl extends ServiceImpl<SensorMapper, Sensor> implements SensorService { } screen-api/src/main/java/com/moral/api/service/impl/VersionServiceImpl.java
New file @@ -0,0 +1,20 @@ package com.moral.api.service.impl; import com.moral.api.entity.Version; import com.moral.api.mapper.VersionMapper; import com.moral.api.service.VersionService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; /** * <p> * 型号表 服务实现类 * </p> * * @author moral * @since 2021-06-28 */ @Service public class VersionServiceImpl extends ServiceImpl<VersionMapper, Version> implements VersionService { } screen-api/src/main/resources/mapper/DeviceMapper.xml
New file @@ -0,0 +1,29 @@ <?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.moral.api.mapper.DeviceMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.moral.api.entity.Device"> <id column="id" property="id" /> <result column="name" property="name" /> <result column="mac" property="mac" /> <result column="address" property="address" /> <result column="longitude" property="longitude" /> <result column="latitude" property="latitude" /> <result column="state" property="state" /> <result column="operate_ids" property="operateIds" /> <result column="monitor_point_id" property="monitorPointId" /> <result column="organization_id" property="organizationId" /> <result column="device_version_id" property="deviceVersionId" /> <result column="profession" property="profession" /> <result column="tech" property="tech" /> <result column="detector" property="detector" /> <result column="purchaser" property="purchaser" /> <result column="create_time" property="createTime" /> <result column="update_time" property="updateTime" /> <result column="install_time" property="installTime" /> <result column="is_delete" property="isDelete" /> <result column="extend" property="extend" /> </resultMap> </mapper> screen-api/src/main/resources/mapper/OrganizationUnitAlarmMapper.xml
New file @@ -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.moral.api.mapper.OrganizationUnitAlarmMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.moral.api.entity.OrganizationUnitAlarm"> <id column="id" property="id" /> <result column="organization_id" property="organizationId" /> <result column="version_id" property="versionId" /> <result column="sensor_code" property="sensorCode" /> <result column="unit_key" property="unitKey" /> <result column="show_unit_key" property="showUnitKey" /> <result column="alarm_level" property="alarmLevel" /> <result column="create_time" property="createTime" /> <result column="update_time" property="updateTime" /> <result column="is_delete" property="isDelete" /> </resultMap> </mapper> screen-api/src/main/resources/mapper/SensorMapper.xml
New file @@ -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.moral.api.mapper.SensorMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.moral.api.entity.Sensor"> <id column="id" property="id" /> <result column="name" property="name" /> <result column="desc" property="desc" /> <result column="code" property="code" /> <result column="upper" property="upper" /> <result column="lower" property="lower" /> <result column="default_unit_key" property="defaultUnitKey" /> <result column="create_time" property="createTime" /> <result column="update_time" property="updateTime" /> <result column="is_delete" property="isDelete" /> </resultMap> </mapper> screen-api/src/main/resources/mapper/VersionMapper.xml
New file @@ -0,0 +1,15 @@ <?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.moral.api.mapper.VersionMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.moral.api.entity.Version"> <id column="id" property="id" /> <result column="name" property="name" /> <result column="create_time" property="createTime" /> <result column="update_time" property="updateTime" /> <result column="is_delete" property="isDelete" /> <result column="desc" property="desc" /> </resultMap> </mapper> screen-manage/src/main/java/com/moral/api/service/impl/OrganizationUnitAlarmServiceImpl.java
@@ -10,6 +10,7 @@ import com.moral.api.pojo.form.organizationUnitAlarm.OrganizationUnitAlarmUpdateForm; import com.moral.api.service.OrganizationUnitAlarmService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.api.util.CacheUtils; import com.moral.constant.Constants; import com.moral.constant.ResponseCodeEnum; import org.springframework.beans.factory.annotation.Autowired; @@ -76,6 +77,8 @@ organizationUnitAlarmMapper.updateById(organizationUnitAlarm); //获取更新后的记录用于插入日志 OrganizationUnitAlarm newRecord = organizationUnitAlarmMapper.selectById(organizationUnitAlarm.getId()); //刷新deviceInfo缓存 CacheUtils.flushDeviceAlarmInfo(); //封装返回对象 dto.setCode(ResponseCodeEnum.SUCCESS.getCode()); dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg()); screen-manage/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java
@@ -10,6 +10,7 @@ import com.moral.api.mapper.VersionSensorUnitMapper; import com.moral.api.service.SensorService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.api.util.CacheUtils; import com.moral.api.util.LogUtils; import com.moral.constant.Constants; import com.moral.constant.RedisConstants; @@ -139,6 +140,8 @@ OrganizationUnitAlarm organizationUnitAlarm = new OrganizationUnitAlarm(); organizationUnitAlarm.setSensorCode(updateSensorMap.get("code").toString()); organizationUnitAlarmMapper.update(organizationUnitAlarm,wrapper_OUA); //刷新deviceInfo缓存 CacheUtils.flushDeviceAlarmInfo(); } HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String content = "修改因子:"+oldSensor.getName()+";";