Commit 677f4b84 authored by chenzhao's avatar chenzhao

电量表计/故障信息接口

parent 1fe8adb3
package com.yeejoin.amos.boot.module.jxiop.api.Enum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum ElectricQuantity {
ZXYGZ("正向总有功","zxzyg"),
FXYGZ("反向总有功","fxzyg"),
ZXWGZ("正向总无功","zxzwg"),
FXWGZ("反向总无功","fxzwg");
private String name;
private String code;
public static String getCode(String name) {
for (ElectricQuantity electricQuantity : ElectricQuantity.values())
{
if (electricQuantity.getName().equals(name))
{
return electricQuantity.getCode();
}
}
return null;
}
}
......@@ -11,6 +11,7 @@ import com.yeejoin.amos.boot.module.jxiop.api.dto.TreeDto;
import com.yeejoin.amos.boot.module.jxiop.api.entity.MonitorFanIndicator;
import com.yeejoin.amos.boot.module.jxiop.api.entity.StationBasic;
import com.yeejoin.amos.boot.module.jxiop.api.mapper.StationBasicMapper;
import com.yeejoin.amos.boot.module.jxiop.biz.dto.DataGridMock;
import com.yeejoin.amos.boot.module.jxiop.biz.dto.ResultsData;
import com.yeejoin.amos.boot.module.jxiop.biz.service.impl.CommonServiceImpl;
import com.yeejoin.amos.boot.module.jxiop.biz.service.impl.MonitorFanIndicatorImpl;
......@@ -362,4 +363,36 @@ public class MonitorFanIdxController extends BaseController {
}
@TycloudOperation(needAuth = false, ApiLevel = UserType.AGENCY)
@ApiOperation(value = "故障记录API")
@GetMapping("/alarmEventtList")
public ResponseModel<ResultsData> getAlarmEventList(@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size,
@RequestParam(value = "stationId") String stationId,
@RequestParam(value = "type") String type) {
ResultsData resultsData = new ResultsData();
if (type.equals("0")){
resultsData = monitorFanIndicatorImpl.getAlarmEventList(current, size, stationId);
}else if (type.equals("1")){
resultsData = monitorFanIndicatorImpl.getLsNationWideInfo(current, size, stationId,null);
}
return ResponseHelper.buildResponse(resultsData);
}
@TycloudOperation(needAuth = false, ApiLevel = UserType.AGENCY)
@ApiOperation(value = "夏造电量表计API")
@GetMapping("/electricQuantity")
public ResponseModel<ResultsData> getElectricQuantityList(@RequestParam(value = "current") int current,
@RequestParam(value = "size") int size,
@RequestParam(value = "stationId") String stationId) {
StationBasic stationBasic = stationBasicMapper.selectById(stationId);
String gatewayId = stationBasic.getBoosterGatewayId();
ResultsData resultsData = monitorFanIndicatorImpl.getElectricQuantityList(current, size, gatewayId);
return ResponseHelper.buildResponse(resultsData);
}
}
package com.yeejoin.amos.boot.module.jxiop.biz.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.Date;
@Data
@Accessors(chain = true)
public class AlarmEventDto {
private Long sequenceNumber;
private Date createdTime;
private String stationName;
private String stationId;
private String gatewayId;
private String eventDesc;
private String alarmGroupName;
private String eventTime;
private String eventMovement;
private long sort;
}
......@@ -14,10 +14,12 @@ import java.util.List;
public class ResultsData {
private DataGridMock dataGridMock;
private DataGridMock dataGridMock;
private List<ColModel> colModel;
public ResultsData() {
}
public ResultsData(DataGridMock dataGridMock, List<ColModel> colModel) {
this.dataGridMock = dataGridMock;
......
package com.yeejoin.amos.boot.module.jxiop.biz.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.Date;
@Data
@Accessors(chain = true)
@TableName("fault_alarm_event")
public class AlarmEvent {
@TableField("sequence_nbr")
private Long sequenceNumber;
@TableField("created_time")
private Date createdTime;
@TableField("station_name")
private String stationName;
@TableField("station_id")
private String stationId;
@TableField("gateway_id")
private String gatewayId;
@TableField("event_desc")
private String eventDesc;
@TableField("alarm_group_name")
private String alarmGroupName;
@TableField("event_time")
private Date eventTime;
@TableField("event_movement")
private String eventMovement;
@TableField("sort")
private long sort;
}
package com.yeejoin.amos.boot.module.jxiop.biz.mapper2;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.jxiop.biz.dto.AlarmEventDto;
import com.yeejoin.amos.boot.module.jxiop.biz.entity.AlarmEvent;
import java.util.List;
public interface AlarmEventMapper extends BaseMapper<AlarmEvent> {
String getLastDataBySort(String gatewayId);
List <AlarmEventDto> getAlarmEventList(String gatewayId,String stationId,int current, int size);
List<String> getOldAlarmsBySort(String gatewayId, String sort);
}
package com.yeejoin.amos.boot.module.jxiop.biz.service.impl;
import com.yeejoin.amos.boot.module.jxiop.biz.dto.AlarmEventDto;
import com.yeejoin.amos.boot.module.jxiop.biz.entity.AlarmEvent;
import com.yeejoin.amos.boot.module.jxiop.biz.mapper2.AlarmEventMapper;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.rdbms.service.BaseService;
@Service
public class AlarmEventServiceImpl extends BaseService<AlarmEventDto, AlarmEvent, AlarmEventMapper> {
}
......@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.module.jxiop.api.Enum.ElectricQuantity;
import com.yeejoin.amos.boot.module.jxiop.api.dto.IndexDto;
import com.yeejoin.amos.boot.module.jxiop.api.dto.TreeDto;
import com.yeejoin.amos.boot.module.jxiop.api.entity.MonitorFanIndicator;
......@@ -18,9 +19,11 @@ import com.yeejoin.amos.boot.module.jxiop.api.mapper.MonitorFanIndicatorMapper;
import com.yeejoin.amos.boot.module.jxiop.api.mapper.RegionMapper;
import com.yeejoin.amos.boot.module.jxiop.api.mapper.StationBasicMapper;
import com.yeejoin.amos.boot.module.jxiop.biz.dto.*;
import com.yeejoin.amos.boot.module.jxiop.biz.entity.AlarmEvent;
import com.yeejoin.amos.boot.module.jxiop.biz.entity.SjglZsjZsbtz;
import com.yeejoin.amos.boot.module.jxiop.biz.entity.TemporaryData;
import com.yeejoin.amos.boot.module.jxiop.biz.entity.TpriDmpDatabook;
import com.yeejoin.amos.boot.module.jxiop.biz.mapper2.AlarmEventMapper;
import com.yeejoin.amos.boot.module.jxiop.biz.mapper2.SystemEnumMapper;
import com.yeejoin.amos.boot.module.jxiop.biz.mapper2.TemporaryDataMapper;
import com.yeejoin.amos.boot.module.jxiop.biz.utils.InfluxDButils;
......@@ -76,6 +79,12 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator {
TemporaryDataMapper temporaryDataMapper;
@Autowired
AlarmEventMapper alarmEventMapper;
@Autowired
AlarmEventServiceImpl alarmEventService;
@Autowired
TemporaryDataServiceImpl temporaryDataService;
@Autowired
......@@ -486,14 +495,86 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator {
}
}
@Scheduled(cron = "0 57 23 * * ?")
private void deleteTemporaryData(){
@Scheduled(cron = "0 59 23 * * ?")
private void deleteSchedData(){
QueryWrapper<TemporaryData> wrapper = new QueryWrapper<>();
temporaryDataMapper.delete(wrapper);
String sort = alarmEventMapper.getLastDataBySort(null);
LambdaQueryWrapper<AlarmEvent> params = new LambdaQueryWrapper<>();
params.notIn(AlarmEvent::getSort,sort);
alarmEventMapper.delete(params);
}
@Scheduled(cron = "0 */5 * * * ?")
private void schedAlarmEventData(){
LambdaQueryWrapper<StationBasic> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BaseEntity::getIsDelete,false);
List<StationBasic> stationBasics = stationBasicMapper.selectList(wrapper);
long currentsort = new Date().getTime();
for (StationBasic stationBasic : stationBasics) {
schedAddAlarmEventData(stationBasic.getBoosterGatewayId(),stationBasic.getSequenceNbr().toString(),stationBasic.getStationName(),currentsort);
}
}
public void schedAddAlarmEventData(String gatewayId,String stationId,String stationName,long currentsort){
String sql = "SELECT * FROM indicators_"+gatewayId+" WHERE systemType = '光字牌' and value = 'true'";
List<IndicatorsDto> indicatorsDtoList = influxDButils.getListDataAll(sql,IndicatorsDto.class);
List<AlarmEvent> newAlarmEvents = new ArrayList<>();
List<String> alarmsNames = new ArrayList<>();
for (IndicatorsDto indicatorsDto : indicatorsDtoList) {
AlarmEvent alarmEvent = new AlarmEvent();
alarmEvent.setEventDesc(indicatorsDto.getEquipmentIndexName());
try {
Date date = DateUtils.dateParse(indicatorsDto.getCreatedTime(), DateUtils.DATE_TIME_PATTERN);
alarmEvent.setEventTime(date);
} catch (ParseException e) {
e.printStackTrace();
}
alarmEvent.setStationId(stationId);
alarmEvent.setStationName(stationName);
alarmEvent.setGatewayId(gatewayId);
alarmEvent.setCreatedTime(new Date());
alarmEvent.setAlarmGroupName("运行告警");
alarmEvent.setEventMovement(indicatorsDto.getValue());
alarmEvent.setSort(currentsort);
newAlarmEvents.add(alarmEvent);
alarmsNames.add(indicatorsDto.getEquipmentIndexName());
}
alarmsNames.sort(Comparator.naturalOrder());
String newAlarms = String.join(",", alarmsNames);
String sort = alarmEventMapper.getLastDataBySort(gatewayId);
List<String> oldAlarmEvents = alarmEventMapper.getOldAlarmsBySort(gatewayId, sort);
oldAlarmEvents.sort(Comparator.naturalOrder());
String oldName = String.join(",", oldAlarmEvents);
if (!newAlarms.equals(oldName)) {
for (String oldAlarmEvent : oldAlarmEvents) {
if (newAlarms.contains(oldAlarmEvent)) {
} else {
AlarmEvent alarmEvent = new AlarmEvent();
alarmEvent.setStationId(stationId);
alarmEvent.setStationName(stationName);
alarmEvent.setEventDesc(oldAlarmEvent);
alarmEvent.setEventTime(new Date());
alarmEvent.setGatewayId(gatewayId);
alarmEvent.setAlarmGroupName("运行告警");
alarmEvent.setCreatedTime(new Date());
alarmEvent.setEventMovement("false");
alarmEvent.setSort(currentsort);
newAlarmEvents.add(alarmEvent);
}
}
}
alarmEventService.saveBatch(newAlarmEvents);
}
......@@ -711,5 +792,62 @@ public class MonitorFanIndicatorImpl implements IMonitorFanIndicator {
ResultsData resultsData = new ResultsData(DataGridMock, listColModel);
return resultsData;
}
public ResultsData getAlarmEventList(int current, int size,String stationId) {
List<AlarmEventDto> alarmEventList = alarmEventMapper.getAlarmEventList(null, stationId,current,size);
ArrayList<Map<String, String>> resultList = new ArrayList<>();
alarmEventList.forEach(item -> {
HashMap<String, String> stringStringHashMap = new HashMap<>();
stringStringHashMap.put("stationName", item.getStationName());
stringStringHashMap.put("eventDesc", item.getEventDesc());
stringStringHashMap.put("alarmGroupName", item.getAlarmGroupName());
stringStringHashMap.put("eventTime", item.getEventTime());
stringStringHashMap.put("eventMovement", item.getEventMovement());
resultList.add(stringStringHashMap);
});
//构建平台数据
DataGridMock DataGridMock = new DataGridMock(current, resultList.size(), false, current, resultList);
ColModel colModelStationName = new ColModel("stationName", "stationName", "名称", "名称", "dataGrid", "stationName");
ColModel colModelEventDesc = new ColModel("eventDesc", "eventDesc", "事件描述", "事件描述", "dataGrid", "eventDesc");
ColModel colModelAlarmGroupName= new ColModel("alarmGroupName", "alarmGroupName", "事件告警组", "事件告警组", "dataGrid", "alarmGroupName");
ColModel colModelEventTime = new ColModel("eventTime", "eventTime", "事件发生时间", "事件发生时间", "dataGrid", "eventTime");
ColModel colModelEventMovement = new ColModel("eventMovement", "eventMovement", "事件动作描述", "事件动作描述", "dataGrid", "eventMovement");
List<ColModel> listColModel = Arrays.asList(colModelStationName, colModelEventDesc, colModelAlarmGroupName, colModelEventTime, colModelEventMovement);
ResultsData resultsData = new ResultsData(DataGridMock, listColModel);
return resultsData;
}
public ResultsData getElectricQuantityList(int current, int size,String gatewayId) {
String sql = " SELECT * FROM indicators_"+gatewayId+" WHERE frontModule ='电量表计' and displayName != '' and displayName != '检修状态' ";
List<IndicatorsDto> windSqlList = influxDButils.getListDataAll(sql,IndicatorsDto.class);
Map<String, List<IndicatorsDto>> maps = windSqlList.stream().collect(Collectors.groupingBy(IndicatorsDto::getSystemType));
ArrayList<Map<String, String>> resultList = new ArrayList<>();
for (Map.Entry<String, List<IndicatorsDto>> stringListEntry : maps.entrySet()) {
HashMap<String, String> stringStringHashMap = new HashMap<>();
stringStringHashMap.put("name",stringListEntry.getKey());
for (IndicatorsDto indicatorsDto : stringListEntry.getValue()) {
stringStringHashMap.put(ElectricQuantity.getCode(indicatorsDto.getDisplayName()),indicatorsDto.getValue());
}
resultList.add(stringStringHashMap);
}
//构建平台数据
DataGridMock DataGridMock = new DataGridMock(current, resultList.size(), false, current, resultList);
ColModel colModelEventMovement = new ColModel("name", "name", "测量点", "测量点", "dataGrid", "name");
ColModel colModelStationName = new ColModel("zxzyg", "zxzyg", "正向总有功", "正向总有功", "dataGrid", "zxzyg");
ColModel colModelEventDesc = new ColModel("fxzyg", "fxzyg", "反向总有功", "反向总有功", "dataGrid", "fxzyg");
ColModel colModelAlarmGroupName= new ColModel("zxzwg", "zxzwg", "正向总无功", "正向总无功", "zxzwg", "alarmGroupName");
ColModel colModelEventTime = new ColModel("fxzwg", "fxzwg", "反向总无功", "反向总无功", "dataGrid", "fxzwg");
List<ColModel> listColModel = Arrays.asList(colModelEventMovement,colModelStationName, colModelEventDesc, colModelAlarmGroupName, colModelEventTime );
ResultsData resultsData = new ResultsData(DataGridMock, listColModel);
return resultsData;
}
}
<?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.yeejoin.amos.boot.module.jxiop.biz.mapper2.AlarmEventMapper">
<select id="getAlarmEventList" resultType="com.yeejoin.amos.boot.module.jxiop.biz.dto.AlarmEventDto">
select
station_name as stationName,
event_desc as eventDesc,
alarm_group_name as alarmGroupName,
event_time as eventTime,
(case event_movement
WHEN 'true' then '告警'
WHEN 'false' then '恢复'
ELSE event_movement end ) as eventMovement
from
fault_alarm_event
<where>
<if test="gatewayId != null and gatewayId != ''">
gateway_id = #{gatewayId}
</if>
<if test="stationId != null and stationId != ''">
station_id = #{stationId}
</if>
</where>
order by sort desc limit #{current},#{size}
</select>
<select id="getLastDataBySort" resultType="java.lang.String">
select
sort
from
fault_alarm_event
<where>
<if test="gatewayId != null and gatewayId != ''">
gateway_id = #{gatewayId}
</if>
</where>
order by sort desc limit 1
</select>
<select id="getOldAlarmsBySort" resultType="java.lang.String">
select
event_desc
from
fault_alarm_event
where
gateway_id = #{gatewayId} and sort = #{sort}
</select>
</mapper>
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