Commit a505c4dd authored by maoying's avatar maoying

修改数据存储,将报警故障和实时监测数据分开存库

parent fc083344
......@@ -18,53 +18,66 @@ import java.util.Date;
@NamedQuery(name = "Alarm.findAll", query = "SELECT a FROM Alarm a")
public class Alarm extends BasicEntity {
private static final long serialVersionUID = 1L;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "alarm_time")
private Date alarmTime;
/**
* 指标或者报警信息
* 消防设备id
*/
@Lob
private String metric;
private String code;
private Long fireEquipmentId;
/**
* 消防设备名称
*/
private String fireEquipmentName;
/**
* 消防设备编码
*/
private String fireEquipmentCode;
/**
* 消防点位id
*/
private Long fireEquipmentPointId;
/**
* 消防点位名称
*/
private String fireEquipmentPointName;
/**
* 消防点位编码
*/
private String fireEquipmentPointCode;
/**
* 报警类别
* 消防点位上传值
*/
@Column(name = "alarm_type")
private String alarmType;
private String fireEquipmentPointValue;
/**
* 发生频率
*/
private int frequency = 1;
/**
* 告警状态
*/
private Boolean status = true;
/**
* 报警类型:alarm_type_fire(火灾报警)/alarm_type_trouble(故障告警)
*/
private String type;
/**
* 创建时间
*/
private Date createDate = new Date();
/**
* 更新时间
*/
private Date updateDate = new Date();
/**
* 告警恢复时间
*/
private Date recoveryDate;
@Column(name = "fire_equipment_id")
private Long fireEquipmentId;
@Column(name = "org_code")
private String orgCode;
private String remark;
public Alarm() {
}
public Date getAlarmTime() {
return this.alarmTime;
}
public void setAlarmTime(Date alarmTime) {
this.alarmTime = alarmTime;
}
public String getCode() {
return this.code;
}
public void setCode(String code) {
this.code = code;
}
public Long getFireEquipmentId() {
return this.fireEquipmentId;
}
......@@ -81,28 +94,99 @@ public class Alarm extends BasicEntity {
this.orgCode = orgCode;
}
public String getRemark() {
return this.remark;
}
public String getFireEquipmentName() {
return fireEquipmentName;
}
public void setRemark(String remark) {
this.remark = remark;
}
public void setFireEquipmentName(String fireEquipmentName) {
this.fireEquipmentName = fireEquipmentName;
}
public String getMetric() {
return metric;
}
public String getFireEquipmentCode() {
return fireEquipmentCode;
}
public void setMetric(String metric) {
this.metric = metric;
}
public void setFireEquipmentCode(String fireEquipmentCode) {
this.fireEquipmentCode = fireEquipmentCode;
}
public String getAlarmType() {
return alarmType;
}
public Long getFireEquipmentPointId() {
return fireEquipmentPointId;
}
public void setAlarmType(String alarmType) {
this.alarmType = alarmType;
}
public void setFireEquipmentPointId(Long fireEquipmentPointId) {
this.fireEquipmentPointId = fireEquipmentPointId;
}
public String getFireEquipmentPointName() {
return fireEquipmentPointName;
}
public void setFireEquipmentPointName(String fireEquipmentPointName) {
this.fireEquipmentPointName = fireEquipmentPointName;
}
public String getFireEquipmentPointCode() {
return fireEquipmentPointCode;
}
public void setFireEquipmentPointCode(String fireEquipmentPointCode) {
this.fireEquipmentPointCode = fireEquipmentPointCode;
}
public String getFireEquipmentPointValue() {
return fireEquipmentPointValue;
}
public void setFireEquipmentPointValue(String fireEquipmentPointValue) {
this.fireEquipmentPointValue = fireEquipmentPointValue;
}
public int getFrequency() {
return frequency;
}
public void setFrequency(int frequency) {
this.frequency = frequency;
}
public Boolean getStatus() {
return status;
}
public void setStatus(Boolean status) {
this.status = status;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public Date getUpdateDate() {
return updateDate;
}
public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
}
public Date getRecoveryDate() {
return recoveryDate;
}
public void setRecoveryDate(Date recoveryDate) {
this.recoveryDate = recoveryDate;
}
}
\ No newline at end of file
......@@ -513,12 +513,7 @@ public class RiskSourceController extends BaseController {
return CommonResponseUtil.success(riskSourceService.bindFireEquiment(fmeaBindParam));
}
// @ApiOperation(httpMethod = "DELETE", value = "移除消防设备绑定关系", notes = "移除消防设备绑定关系")
// @RequestMapping(value = "/fireequiment/relation/{ids}", produces = "application/json;charset=UTF-8", method = RequestMethod.DELETE)
// public CommonResponse removeFireEquiment(@PathVariable("ids") String ids) throws Exception {
// String[] idArray = ids.split(",");
// return CommonResponseUtil.success(this.riskSourceService.removeBoundRelation(idArray));
// }
@ApiOperation(httpMethod = "GET", value = "查询绑定关系设备", notes = "查询绑定关系包含已绑定和未绑定")
@RequestMapping(value = "/fireequiment/relation/all", produces = "application/json;charset=UTF-8", method = RequestMethod.GET)
......
......@@ -7,4 +7,5 @@ import com.yeejoin.amos.fas.dao.entity.Alarm;
@Repository("iAlarmDao")
public interface IAlarmDao extends BaseDao<Alarm, Long> {
Alarm findByFireEquipmentCodeAndStatusTrue(String code);
}
......@@ -57,6 +57,7 @@ import com.yeejoin.amos.fas.business.dao.mapper.FmeaPointInputitemMapper;
import com.yeejoin.amos.fas.business.dao.mapper.ImpAndFireEquipMapper;
import com.yeejoin.amos.fas.business.dao.mapper.RiskSourceMapper;
import com.yeejoin.amos.fas.business.dao.mongo.EquipCommunicationDao;
import com.yeejoin.amos.fas.business.dao.repository.IAlarmDao;
import com.yeejoin.amos.fas.business.dao.repository.IContingencyOriginalDataDao;
import com.yeejoin.amos.fas.business.dao.repository.IDictDao;
import com.yeejoin.amos.fas.business.dao.repository.IEvaluationModelDao;
......@@ -97,6 +98,7 @@ import com.yeejoin.amos.fas.common.enums.DataRefreshTypeEum;
import com.yeejoin.amos.fas.core.common.request.CommonPageable;
import com.yeejoin.amos.fas.core.common.response.RegionTreeResponse;
import com.yeejoin.amos.fas.core.common.response.RiskSourceTreeResponse;
import com.yeejoin.amos.fas.dao.entity.Alarm;
import com.yeejoin.amos.fas.dao.entity.ContingencyOriginalData;
import com.yeejoin.amos.fas.dao.entity.Dict;
import com.yeejoin.amos.fas.dao.entity.Equipment;
......@@ -215,6 +217,9 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
@Autowired
private FmeaPointInputitemMapper fmeaPointInputitemMapper;
@Autowired
private IAlarmDao iAlarmDao;
public static String cacheKeyForCanBeRunning() {
return Redis.genKey(CacheType.ERASABLE.name(), "CONTINGENCYRUNING");
......@@ -789,7 +794,7 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
deviceData.setCode(fireEquipment.getCode());
equipment = impAndFireEquipMapper.queryImpEqumtByFireEquipmt(fireEquipmentPoint.getFireEquipmentId());
//报警数据存库
saveFireEquipmentData(fireEquipmentPoint, deviceData, fireEquipmentPointType);
saveFireEquipmentData(fireEquipmentPoint, fireEquipment, deviceData, fireEquipmentPointType);
List<AlarmParam> list = new ArrayList<>();
list.add(deviceData);
//保存到mongo
......@@ -865,35 +870,50 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
}
private void saveFireEquipmentData(FireEquipmentPoint fireEquipmentPoint, AlarmParam deviceData, String fireEquipmentPointType) {
FireEquipmentData fireEquipmentData = new FireEquipmentData();
fireEquipmentData.setEqPointCode(deviceData.getPointCode());
fireEquipmentData.seteValue(deviceData.getState());
fireEquipmentData.setInformationAddress(deviceData.getInformationAddress());
fireEquipmentData.setSoe(deviceData.getSoe());
fireEquipmentData.setIsInvalid(deviceData.getIsInvalid());
fireEquipmentData.setEqPointName(fireEquipmentPoint.getName());
fireEquipmentData.setEqPointUnit(fireEquipmentPoint.getUnit());
fireEquipmentData.setFireEquipmentPointId(fireEquipmentPoint.getId());
fireEquipmentData.setFireEquipmentId(fireEquipmentPoint.getFireEquipmentId());
if (!"alarm_type_fire".equals(fireEquipmentPointType)) {
fireEquipmentData.setType("monitor");
}
iFireEquipmentDataDao.save(fireEquipmentData);
if (!"alarm_type_fire".equals(fireEquipmentPointType)) {
Map<String, Object> content = new HashMap<>();
content.put("id", fireEquipmentData.getId());
content.put("label", fireEquipmentData.getEqPointName());
content.put("changeDate", fireEquipmentData.getCreateDate());
Optional<FireEquipment> fireEquipment = iFireEquipmentDao.findById(fireEquipmentPoint.getFireEquipmentId());
if (fireEquipment.isPresent()) {
content.put("orgCode", fireEquipment.get().getOrgCode());
} else {
log.info(fireEquipmentPoint.getFireEquipmentId() + "设备不存在!!!");
}
iDataRefreshService.sendRefreshDataWithArea(DataRefreshTypeEum.monitor.getCode(), content);
}
private void saveFireEquipmentData(FireEquipmentPoint fireEquipmentPoint, FireEquipment fireEquipment, AlarmParam deviceData, String fireEquipmentPointType) {
if("alarm_type_fire".equals(fireEquipmentPointType) || "alarm_type_trouble".equals(fireEquipmentPointType)){
Alarm alarm = iAlarmDao.findByFireEquipmentCodeAndStatusTrue(deviceData.getPointCode());
if(alarm != null){
if("false".equals(deviceData.getState())){
alarm.setRecoveryDate(new Date());
alarm.setStatus(false);
}else{
alarm.setFrequency((alarm.getFrequency()+1));
alarm.setUpdateDate(new Date());
}
}else{
alarm = new Alarm();
alarm.setFireEquipmentCode(fireEquipment.getCode());
alarm.setFireEquipmentId(fireEquipment.getId());
alarm.setFireEquipmentName(fireEquipment.getName());
alarm.setFireEquipmentPointCode(fireEquipmentPoint.getCode());
alarm.setFireEquipmentPointId(fireEquipmentPoint.getId());
alarm.setFireEquipmentPointName(fireEquipmentPoint.getName());
alarm.setFireEquipmentPointValue(deviceData.getState());
alarm.setOrgCode(fireEquipment.getOrgCode());
alarm.setType(fireEquipmentPointType);
}
iAlarmDao.save(alarm);
}else{
FireEquipmentData fireEquipmentData = new FireEquipmentData();
fireEquipmentData.setEqPointCode(deviceData.getPointCode());
fireEquipmentData.seteValue(deviceData.getState());
fireEquipmentData.setInformationAddress(deviceData.getInformationAddress());
fireEquipmentData.setSoe(deviceData.getSoe());
fireEquipmentData.setIsInvalid(deviceData.getIsInvalid());
fireEquipmentData.setEqPointName(fireEquipmentPoint.getName());
fireEquipmentData.setEqPointUnit(fireEquipmentPoint.getUnit());
fireEquipmentData.setFireEquipmentPointId(fireEquipmentPoint.getId());
fireEquipmentData.setFireEquipmentId(fireEquipmentPoint.getFireEquipmentId());
fireEquipmentData.setType("monitor");
Map<String, Object> content = new HashMap<>();
content.put("id", fireEquipmentData.getId());
content.put("label", fireEquipmentData.getEqPointName());
content.put("changeDate", fireEquipmentData.getCreateDate());
content.put("orgCode", fireEquipment.getOrgCode());
iDataRefreshService.sendRefreshDataWithArea(DataRefreshTypeEum.monitor.getCode(), content);
}
}
@Override
......
......@@ -240,4 +240,31 @@
add COLUMN `flicker_frequency` int(11) DEFAULT 0 COMMENT '闪烁频率' after `status`;
</sql>
</changeSet>
<changeSet author="maoying" id="1589444792911-1">
<preConditions onFail="MARK_RAN">
<tableExists tableName="f_alarm"/>
</preConditions>
<comment>create table f_alarm</comment>
<sql>
DROP TABLE IF EXISTS f_alarm;
CREATE TABLE `f_alarm` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`org_code` varchar(100) NOT NULL COMMENT '机构编号',
`fire_equipment_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '消防设备id',
`fire_equipment_name` varchar(255) NOT NULL COMMENT '设备名称',
`fire_equpment_point_id` bigint(20) NOT NULL COMMENT '消防点位id',
`fire_equpment_point_code` varchar(255) NOT NULL COMMENT '消防点位名称',
`fire_equipment_point_name` varchar(255) NOT NULL,
`fire_equipment_point_value` varchar(500) DEFAULT NULL COMMENT '报警值',
`frequency` int(10) NOT NULL DEFAULT '1' COMMENT '发生频次',
`status` bit(1) DEFAULT b'1' COMMENT '报警状态:1报警0恢复',
`type` varchar(50) NOT NULL COMMENT '报警类型:alarm_type_fire(火灾报警)/alarm_type_trouble(故障告警)',
`create_date` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_date` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`recovery_date` datetime DEFAULT NULL COMMENT '告警恢复时间',
PRIMARY KEY (`id`),
UNIQUE KEY `type_index` (`type`) USING HASH
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='报警信息表';
</sql>
</changeSet>
</databaseChangeLog>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment