Commit 6b621fd7 authored by suhuiguang's avatar suhuiguang

Merge branch 'dev_upgrade' of http://172.16.10.76/station/YeeAmosFireAutoSysRoot into dev_upgrade

parents 1ff71201 0018fa6d
......@@ -7,6 +7,7 @@ public class SafetyExecuteBo {
private String label;
private String pointId;
private String type;
private String status;//指标状态
private String changeDate;
public Long getId() {
return id;
......@@ -44,4 +45,10 @@ public class SafetyExecuteBo {
public void setChangeDate(String changeDate) {
this.changeDate = changeDate;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
......@@ -12,6 +12,8 @@ import com.yeejoin.amos.fas.core.util.CommonResponseUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.Authorization;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.*;
......
......@@ -73,6 +73,14 @@ public interface View3dMapper extends BaseMapper{
* @return list
*/
List<CheckErrorBo> getAllErrorPatrolPoint(Map<String, Object> params);
/**
* 今日安全指数故障告警详情
* @param params orgCode,date
* @return list
*/
List<CheckErrorBo> getAllFaultAlarm(Map<String, Object> params);
/**
* 今日巡检统计接口
......@@ -94,6 +102,20 @@ public interface View3dMapper extends BaseMapper{
* @return
*/
List<SafetyExecuteBo> getCheckErrorTop5(String orgCode);
/**
* 火灾告警最新5条
* @param orgCode
* @return
*/
List<SafetyExecuteBo> getFireAlarmTop5(String orgCode);
/**
* 设备状态最新5条
* @param orgCode
* @return
*/
List<SafetyExecuteBo> getEquipStatusTop5(String orgCode);
/**
* 按照类型查询点
......
......@@ -22,6 +22,7 @@ import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
......@@ -768,71 +769,72 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
Equipment equipment = null;
if (fireEquipment != null) {
deviceData.setCode(fireEquipment.getCode());
equipment = impAndFireEquipMapper.queryImpEqumtByFireEquipmt(fireEquipmentPoint.getFireEquipmentId());
//报警数据存库
//保存实时数据
saveFireEquipmentData(fireEquipmentPoint, fireEquipment, deviceData, fireEquipmentPointType);
List<AlarmParam> list = new ArrayList<>();
list.add(deviceData);
//保存到mongo
saveData(list, "soe");
equipment = impAndFireEquipMapper.queryImpEqumtByFireEquipmt(fireEquipmentPoint.getFireEquipmentId());
if (equipment != null) {
String batchNo = null;
Object batch = null;
Dict dict = null;
if (fireEquipmentPointType != null) {
if ("alarm_type_fire".equals(fireEquipmentPointType)) {
redisTemplate.opsForHash().put("currentContingency", "batchNo", null);
} else {
batch = redisTemplate.opsForHash().get("currentContingency", "batchNo");
}
if (batch != null) {
batchNo = batch.toString();
} else {
batchNo = UUID.randomUUID().toString();
}
} else {
batchNo = UUID.randomUUID().toString();
}
if (ObjectUtils.isEmpty(batchNo)) {
return;
}
deviceData.setBatchNo(batchNo);
deviceData.setMonitor(equipment.getName());
deviceData.setEquimentId(String.valueOf(equipment.getId()));
if ("alarm_type_fire".equals(fireEquipmentPointType)) {
if (deviceData.getIsMock()) {
redisTemplate.delete(RiskSourceServiceImpl.cacheKeyForCanBeRunning());
}
Object canBeRunning = redisTemplate.opsForValue().get(cacheKeyForCanBeRunning());
if (canBeRunning == null) {
//动态预案执行
dynamicPlan(deviceData, equipment, fireEquipment, fireEquipmentPointType);
}
}
}
/**
* 预案执行
* @param deviceData
* @param equipment
* @param fireEquipment
* @param fireEquipmentPointType
*/
@Async
private void dynamicPlan(AlarmParam deviceData, Equipment equipment, FireEquipment fireEquipment, String fireEquipmentPointType){
String batchNo = null;
Object batch = null;
Dict dict = null;
if (fireEquipmentPointType != null) {
if ("alarm_type_fire".equals(fireEquipmentPointType)) {
redisTemplate.opsForHash().put("currentContingency", "batchNo", null);
} else {
batch = redisTemplate.opsForHash().get("currentContingency", "batchNo");
}
if (batch != null) {
try {
alermContingency(batchNo, fireEquipment, equipment);
} catch (Exception e) {
log.error("调用规则失败", e);
}
} else {
redisTemplate.expire(cacheKeyForCanBeRunning(), 24 * 60 * 60, TimeUnit.SECONDS);
}
redisTemplate.opsForHash().put("currentContingency", "batchNo", batchNo);
redisTemplate.opsForHash().put("currentContingency", "contingencyPlan", null);
redisTemplate.opsForHash().put("currentContingency", "alarmType", null);
//通知刷新3d页面告警数据
iDataRefreshService.refreshViewData(DataRefreshTypeEum.alarm.getCode());
} else {
if ("alarm_type_trouble".equals(fireEquipmentPointType)) {
notifyAlarm(fireEquipmentPoint, deviceData);
//通知刷新3d页面相关故障数据
iDataRefreshService.refreshViewData(DataRefreshTypeEum.trouble.getCode());
}
String alarmType = (String) redisTemplate.opsForHash().get("currentContingency", "alarmType");
if (!ObjectUtils.isEmpty(alarmType) && dict.getDictValue().equals(alarmType)) {
ContingencyDeviceStatus contingencyDeviceStatus = (ContingencyDeviceStatus) redisTemplate.opsForHash().get("currentContingency", "contingencyPlan");
contingencyDeviceStatus.setNeedStatus("true");
autoProcessContingency(contingencyDeviceStatus, alarmType);
}
batchNo = batch.toString();
} else {
batchNo = UUID.randomUUID().toString();
}
} else {
batchNo = UUID.randomUUID().toString();
}
if (ObjectUtils.isEmpty(batchNo)) {
return;
}
deviceData.setBatchNo(batchNo);
deviceData.setMonitor(equipment.getName());
deviceData.setEquimentId(String.valueOf(equipment.getId()));
if ("alarm_type_fire".equals(fireEquipmentPointType)) {
if (deviceData.getIsMock()) {
redisTemplate.delete(RiskSourceServiceImpl.cacheKeyForCanBeRunning());
}
Object canBeRunning = redisTemplate.opsForValue().get(cacheKeyForCanBeRunning());
if (canBeRunning == null) {
try {
alermContingency(batchNo, fireEquipment, equipment);
} catch (Exception e) {
log.error("调用规则失败", e);
}
} else {
redisTemplate.expire(cacheKeyForCanBeRunning(), 24 * 60 * 60, TimeUnit.SECONDS);
}
redisTemplate.opsForHash().put("currentContingency", "batchNo", batchNo);
redisTemplate.opsForHash().put("currentContingency", "contingencyPlan", null);
redisTemplate.opsForHash().put("currentContingency", "alarmType", null);
} else {
String alarmType = (String) redisTemplate.opsForHash().get("currentContingency", "alarmType");
if (!ObjectUtils.isEmpty(alarmType) && dict.getDictValue().equals(alarmType)) {
ContingencyDeviceStatus contingencyDeviceStatus = (ContingencyDeviceStatus) redisTemplate.opsForHash().get("currentContingency", "contingencyPlan");
contingencyDeviceStatus.setNeedStatus("true");
autoProcessContingency(contingencyDeviceStatus, alarmType);
}
}
}
......@@ -846,7 +848,6 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
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.findByStatusTrueAndFireEquipmentPointCode(deviceData.getPointCode());
if(alarm != null){
......@@ -858,41 +859,65 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
alarm.setFrequency((alarm.getFrequency()+1));
alarm.setUpdateDate(new Date());
}
iAlarmDao.save(alarm);
}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);
if("true".equals(deviceData.getState())){
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);
}
}
iAlarmDao.save(alarm);
if(alarm != null){
if ("alarm_type_trouble".equals(fireEquipmentPointType)) {
//通知刷新3d页面相关故障数据
if(alarm.getFrequency()==1 || alarm.getStatus() == false){
notifyAlarm(fireEquipmentPoint, deviceData);
iDataRefreshService.refreshViewData(DataRefreshTypeEum.trouble.getCode());
}
}else{
//通知刷新3d页面告警数据
iDataRefreshService.refreshViewData(DataRefreshTypeEum.alarm.getCode());
}
}
}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");
iFireEquipmentDataDao.save(fireEquipmentData);
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);
if("SWITCH".equals(fireEquipmentPoint.getType())){ //保存遥信信号数据到mysql中
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");
iFireEquipmentDataDao.save(fireEquipmentData);
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());
content.put("status", deviceData.getSoe());
iDataRefreshService.sendRefreshDataWithArea(DataRefreshTypeEum.monitor.getCode(), content);
}
}
List<AlarmParam> list = new ArrayList<>();
list.add(deviceData);
//保存所有数据(遥测,遥信)到mongo
saveData(list, "soe");
}
@Override
public void saveData(List<AlarmParam> deviceDatas, String type) {
List<EquipCommunicationData> list = deviceDatas.stream().map(param -> {
......@@ -1072,7 +1097,7 @@ public class RiskSourceServiceImpl implements IRiskSourceService {
continue;
}
EquipCommunicationData data = (EquipCommunicationData) hashOperations.get("Analogue", map.get("CODE"));
map.put("level", String.format("%.2f", Double.valueOf(data.getState())));
map.put("level", String.format("%.2f", StringUtils.isNumeric(data.getState())?Double.valueOf(data.getState()):0));
if (!ObjectUtils.isEmpty(map.get("level"))) {
double area = 0;
if (!ObjectUtils.isEmpty(map.get("area"))) {
......
......@@ -307,8 +307,7 @@ public class View3dServiceImpl implements IView3dService {
Long checkExceptionNum = this.getCheckExceptionNum(orgCode,date);
vo.setCheckExceptionNum(checkExceptionNum);
//4.统计故障数量-日期+机构
//TODO:待毛颖确认调整完成后继续
vo.setFireExceptionNum(0L);
vo.setFireExceptionNum(getFireExceptionNum(orgCode,date));
} else {
throw new YeeException("机构:"+orgCode+" 不存在");
}
......@@ -350,6 +349,15 @@ public class View3dServiceImpl implements IView3dService {
});
} else if(StatisticsErrorTypeEum.equip.getCode().equals(type)){
//TODO:待毛颖确认调整完成后继续
List<CheckErrorBo> checkErrorBoList = view3dMapper.getAllFaultAlarm(params);
Map<String,List<CheckErrorBo>> map = checkErrorBoList.stream().collect(Collectors.groupingBy(CheckErrorBo::getStatus));
map.forEach((k,v)->{
SafetyIndexDetailVo safetyIndexDetailVo = new SafetyIndexDetailVo();
safetyIndexDetailVo.setTypeCode(k);
safetyIndexDetailVo.setTypeName(k);
safetyIndexDetailVo.setContent(getErrorContentVos(v));
resultList.add(safetyIndexDetailVo);
});
}
return resultList;
}
......@@ -478,23 +486,24 @@ public class View3dServiceImpl implements IView3dService {
case "check"://巡检异常
return view3dMapper.getCheckErrorTop5(orgCode);
case "fire":
return JSON.parseArray(" [\r\n" +
" {\r\n" +
" \"id\": 35781,\r\n" +
" \"code\": \"s001\",\r\n" +
" \"label\": \"设备test\",\r\n" +
" \"pointId\": \"1\",\r\n" +
" \"type\": \"check\",\r\n" +
" \"changeDate\": \"2020-04-23 14:31:31\"\r\n" +
" },\r\n" +
" {\r\n" +
" \"id\": 35780,\r\n" +
" \"code\": \"s002\",\r\n" +
" \"label\": \"设备002\",\r\n" +
" \"pointId\": \"23123\",\r\n" +
" \"type\": \"check\",\r\n" +
" \"changeDate\": \"2020-04-23 14:31:27\"\r\n" +
" }]", SafetyExecuteBo.class);
return view3dMapper.getFireAlarmTop5(orgCode);
// return JSON.parseArray(" [\r\n" +
// " {\r\n" +
// " \"id\": 35781,\r\n" +
// " \"code\": \"s001\",\r\n" +
// " \"label\": \"设备test\",\r\n" +
// " \"pointId\": \"1\",\r\n" +
// " \"type\": \"check\",\r\n" +
// " \"changeDate\": \"2020-04-23 14:31:31\"\r\n" +
// " },\r\n" +
// " {\r\n" +
// " \"id\": 35780,\r\n" +
// " \"code\": \"s002\",\r\n" +
// " \"label\": \"设备002\",\r\n" +
// " \"pointId\": \"23123\",\r\n" +
// " \"type\": \"check\",\r\n" +
// " \"changeDate\": \"2020-04-23 14:31:27\"\r\n" +
// " }]", SafetyExecuteBo.class);
default:
throw new YeeException("不支持的类型 -->"+ type);
}
......@@ -510,9 +519,10 @@ public class View3dServiceImpl implements IView3dService {
}
@Override
public Object getEquipStatusList(String orgCode) {
return JSON.parseArray("[{\"id\":1,\"label\":\"设备1 label\",\"changeDate\":\"2020-04-26 10:00:00\"}"
+ ",{\"id\":2,\"label\":\"设备2 label\",\"changeDate\":\"2020-04-25 10:00:00\"}]");
public List<SafetyExecuteBo> getEquipStatusList(String orgCode) {
return view3dMapper.getEquipStatusTop5(orgCode);
// return JSON.parseArray("[{\"id\":1,\"label\":\"设备1 label\",\"changeDate\":\"2020-04-26 10:00:00\"}"
// + ",{\"id\":2,\"label\":\"设备2 label\",\"changeDate\":\"2020-04-25 10:00:00\"}]");
}
@Override
......
......@@ -112,7 +112,7 @@ public interface IView3dService {
* @param orgCode
* @return
*/
Object getEquipStatusList(String orgCode);
List<SafetyExecuteBo> getEquipStatusList(String orgCode);
/**
* 左侧菜单(异常点)
......
......@@ -438,7 +438,15 @@
</select>
<select id="countFireException" resultType="long">
SELECT
count(1)
FROM
f_alarm a
WHERE
`status` = TRUE
AND org_code = #{orgCode}
AND type = 'alarm_type_trouble'
AND date_format(a.update_date, '%Y-%m-%d') = #{date}
</select>
<select id="getAllErrorRiskPoint" resultType="com.yeejoin.amos.fas.business.bo.RiskPointRpnChangeBo" >
......@@ -473,6 +481,23 @@
and a.org_code = #{orgCode}
</select>
<select id="getAllFaultAlarm" resultType="com.yeejoin.amos.fas.business.bo.CheckErrorBo">
SELECT
a.id,
a.fire_equipment_point_name as `name`,
fe.equip_type as status,
a.update_date as changeDate
FROM
f_alarm a
LEFT JOIN f_fire_equipment fe ON fe.id = a.fire_equipment_id
WHERE
`status` = TRUE
AND type = 'alarm_type_trouble'
AND a.org_code = #{orgCode}
AND date_format(a.update_date, '%Y-%m-%d') =#{date}
</select>
<select id="getStatisticsCheck" resultType="java.util.HashMap">
<![CDATA[
SELECT d.status as type, count(1) as value
......@@ -503,11 +528,42 @@
left join p_point I ON I.id = p.point_id
where p.is_ok IN ('2', '3')
AND I.is_delete = 0
AND p.org_code = #{org_code} or p.org_code like CONCAT(#{orgCode},'-','%')
AND p.org_code = #{orgCode} or p.org_code like CONCAT(#{orgCode},'-','%')
ORDER BY p.check_time desc
limit 0,5
</select>
<select id="getFireAlarmTop5" resultType="com.yeejoin.amos.fas.business.bo.SafetyExecuteBo">
SELECT
a.fire_equipment_id id,
a.fire_equipment_code code,
a.fire_equipment_point_name as `label`,
a.update_date as changeDate,
"monitorEquipment" type
FROM
f_alarm a
WHERE
a.org_code = #{orgCode}
AND a.`status` = TRUE
AND a.type = 'alarm_type_fire'
ORDER BY a.update_date DESC
limit 0,5
</select>
<select id="getEquipStatusTop5" resultType="com.yeejoin.amos.fas.business.bo.SafetyExecuteBo">
SELECT
fed.id,
fed.eq_point_name label,
fed.e_value status,
fed.create_date changeDate
FROM
f_fire_equipment_data fed
WHERE
fed.org_code = #{orgCode}
ORDER BY fed.create_date DESC
limit 0,5
</select>
<select id="getPintsByType" resultType="hashmap">
select CONCAT(type,'-',id) as `key`,sp.* from
(select id,name,code,ue4_location as ue4Location,ue4_rotation as ue4Rotation ,'riskSource' as type,org_code as orgCode,
......
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