From d70370e0872a60ff8c7c051ddddb37e0397efa39 Mon Sep 17 00:00:00 2001 From: qinhu <731829037@qq.com> Date: Thu, 3 Sep 2020 17:52:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E8=AD=A6=E5=AE=9E=E6=97=B6=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AlertInfoController.java | 24 ++ .../controller/CharacterParamController.java | 20 +- .../controller/EventInfoController.java | 41 ++++ .../plant/business/domain/AlertInfo.java | 82 +++++++ .../plant/business/domain/BtreeInfo.java | 69 ++++++ .../business/domain/CharacterParamInfo.java | 4 +- .../plant/business/domain/EventInfo.java | 113 ++++++++++ .../business/domain/OscillogramRowMapper.java | 1 + .../domain/OscillogramTagsMapper.java | 1 + .../plant/business/domain/RowKeyMapper.java | 80 +++++++ .../plant/business/domain/vo/AlertInfoVo.java | 54 +++++ .../plant/business/domain/vo/BtreeInfoVo.java | 47 ++++ .../domain/vo/CharacterParamInfoVo.java | 1 + .../plant/business/domain/vo/EventInfoVo.java | 81 +++++++ .../repository/AlertInfoRepository.java | 17 ++ .../repository/CharacterParamRepository.java | 15 ++ .../repository/EventInfoRepository.java | 30 +++ .../business/service/IAlertInfoService.java | 11 + .../service/ICharacterParamService.java | 5 +- .../business/service/IEventInfoService.java | 30 +++ .../service/impl/AlertInfoServiceImpl.java | 16 ++ .../impl/CharacterParamServiceImpl.java | 209 +++++++++++++----- .../service/impl/EventInfoServiceImpl.java | 115 ++++++++++ .../plant/business/task/ScheduledModel.java | 118 +++++++++- 24 files changed, 1102 insertions(+), 82 deletions(-) create mode 100644 power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/controller/AlertInfoController.java create mode 100644 power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/controller/EventInfoController.java create mode 100644 power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/AlertInfo.java create mode 100644 power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/BtreeInfo.java create mode 100644 power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/EventInfo.java create mode 100644 power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/RowKeyMapper.java create mode 100644 power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/vo/AlertInfoVo.java create mode 100644 power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/vo/BtreeInfoVo.java create mode 100644 power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/vo/EventInfoVo.java create mode 100644 power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/repository/AlertInfoRepository.java create mode 100644 power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/repository/EventInfoRepository.java create mode 100644 power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/IAlertInfoService.java create mode 100644 power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/IEventInfoService.java create mode 100644 power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/impl/AlertInfoServiceImpl.java create mode 100644 power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/impl/EventInfoServiceImpl.java diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/controller/AlertInfoController.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/controller/AlertInfoController.java new file mode 100644 index 0000000..5e67a19 --- /dev/null +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/controller/AlertInfoController.java @@ -0,0 +1,24 @@ +package cn.wise.sc.energy.power.plant.business.controller; + +import cn.wise.sc.energy.power.plant.business.domain.vo.AlertInfoVo; +import cn.wise.sc.energy.power.plant.common.core.bean.BaseResponse; +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; +/** + * @description: 阈值更新记录 + * @author: qh + * @create: 2020-09-03 15:22 + **/ +@CrossOrigin +@RestController +@RequestMapping("alertinfo/") +public class AlertInfoController { + + @GetMapping + public BaseResponse<List<AlertInfoVo>> list(){ + return null; + } +} diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/controller/CharacterParamController.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/controller/CharacterParamController.java index b285a02..c0c7de7 100644 --- a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/controller/CharacterParamController.java +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/controller/CharacterParamController.java @@ -1,23 +1,11 @@ package cn.wise.sc.energy.power.plant.business.controller; -import cn.hutool.core.util.StrUtil; import cn.wise.sc.energy.power.plant.business.bean.DataPower; -import cn.wise.sc.energy.power.plant.business.domain.CharacterParamInfo; -import cn.wise.sc.energy.power.plant.business.domain.Oscillogram; -import cn.wise.sc.energy.power.plant.business.domain.OscillogramRowMapper; -import cn.wise.sc.energy.power.plant.business.domain.OscillogramTagsMapper; import cn.wise.sc.energy.power.plant.business.domain.TendencyQuery; import cn.wise.sc.energy.power.plant.business.domain.vo.EntityVo; import cn.wise.sc.energy.power.plant.business.service.ICharacterParamService; import cn.wise.sc.energy.power.plant.common.core.bean.BaseResponse; import com.spring4all.spring.boot.starter.hbase.api.HbaseTemplate; -import org.apache.hadoop.hbase.client.Scan; -import org.apache.hadoop.hbase.filter.CompareFilter; -import org.apache.hadoop.hbase.filter.Filter; -import org.apache.hadoop.hbase.filter.FilterList; -import org.apache.hadoop.hbase.filter.RowFilter; -import org.apache.hadoop.hbase.filter.SubstringComparator; -import org.apache.hadoop.hbase.util.Bytes; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; @@ -27,11 +15,11 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; - import javax.validation.constraints.NotEmpty; import java.io.BufferedReader; +import java.io.IOException; import java.io.InputStreamReader; -import java.util.ArrayList; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -77,7 +65,7 @@ public class CharacterParamController { } @PostMapping("/oscillogram") - public BaseResponse<Map<String,String>> oscillogram(@RequestBody List<String> kksCodes) { + public BaseResponse<Map<String,String>> oscillogram(@RequestBody List<String> kksCodes) throws IOException { return BaseResponse.okData(iCharacterParamService.getOscillogram(kksCodes)); } @@ -86,7 +74,7 @@ public class CharacterParamController { public BaseResponse<Boolean> uploadFile(MultipartFile file) { try { //将文件内容转æˆjson - InputStreamReader inputStreamReader = new InputStreamReader(file.getInputStream(), "utf-8"); + InputStreamReader inputStreamReader = new InputStreamReader(file.getInputStream(), StandardCharsets.UTF_8); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String s; StringBuilder builder = new StringBuilder(); diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/controller/EventInfoController.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/controller/EventInfoController.java new file mode 100644 index 0000000..eb9317c --- /dev/null +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/controller/EventInfoController.java @@ -0,0 +1,41 @@ +package cn.wise.sc.energy.power.plant.business.controller; + +import cn.wise.sc.energy.power.plant.business.domain.vo.EntityVo; +import cn.wise.sc.energy.power.plant.business.service.IEventInfoService; +import cn.wise.sc.energy.power.plant.common.core.bean.BaseResponse; +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; + +/** + * @description: 报è¦äº‹ä»¶ + * @author: qh + * @create: 2020-09-03 14:21 + **/ +@CrossOrigin +@RestController +@RequestMapping("event/info/") +public class EventInfoController { + + final + IEventInfoService iEventInfoService; + + public EventInfoController(IEventInfoService iEventInfoService) { + this.iEventInfoService = iEventInfoService; + } + + @GetMapping + public BaseResponse<List<EntityVo>> listByState(Integer state) { + List<EntityVo> entityVos = iEventInfoService.listByState(state); + if (entityVos.size() == 0){ + return BaseResponse.errorMsg("没找ç€!"); + }else { + return BaseResponse.okData(entityVos); + } + } + +} diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/AlertInfo.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/AlertInfo.java new file mode 100644 index 0000000..78aa5e0 --- /dev/null +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/AlertInfo.java @@ -0,0 +1,82 @@ +package cn.wise.sc.energy.power.plant.business.domain; + +import cn.wise.sc.energy.power.plant.business.domain.vo.AlertInfoVo; +import cn.wise.sc.energy.power.plant.business.domain.vo.EntityVo; +import cn.wise.sc.energy.power.plant.business.domain.vo.EventInfoVo; +import lombok.Data; +import org.springframework.beans.BeanUtils; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * @description: 预è¦å€¼æ›´æ–°è®°å½•è¡¨ + * @author: qh + * @create: 2020-09-03 09:52 + **/ +@Data +@Entity +@Table(name = "altinfo") +public class AlertInfo extends AbstractEntity<Long> { + + @Override + public EntityVo toVo() { + AlertInfoVo entityVo = new AlertInfoVo(); + BeanUtils.copyProperties(this, entityVo); + return entityVo; + } + + @Id + private Long id; + + /** + * 监测特å¾æ‰€å±žç”µç«™çš„æ ‡è¯† + */ + @Column(name = "plantid") + private String plantId; + + /** + * 监测特å¾æ‰€å±žè®¾å¤‡çš„æ ‡è¯† + */ + @Column(name = "deviceid") + private String deviceId; + + /** + * 监测特å¾æ‰€å±žç›‘测å•å…ƒæ ‡è¯† + */ + @Column(name = "unitcodeid") + private String unitCodeId; + + /** + * 监测特å¾å”¯ä¸€æ ‡è¯†ç¼–ç (KKSç¼–ç + */ + @Column(name = "kkscode") + private String kKSCode; + + /** + * 预è¦å€¼ + */ + @Column(name = "value") + private Float value; + + /** + * 预è¦å€¼ + */ + @Column(name = "newvalue") + private Float newValue; + + /** + * 记录更新时间 + */ + @Column(name = "valuetime") + private Long valuetime; + + /** + * 设置æ¥æº(角色或åŽå°) + */ + @Column(name = "usr") + private String usr; + +} diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/BtreeInfo.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/BtreeInfo.java new file mode 100644 index 0000000..f2e70ea --- /dev/null +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/BtreeInfo.java @@ -0,0 +1,69 @@ +package cn.wise.sc.energy.power.plant.business.domain; + +import cn.wise.sc.energy.power.plant.business.domain.vo.BtreeInfoVo; +import cn.wise.sc.energy.power.plant.business.domain.vo.EntityVo; +import lombok.Data; +import org.springframework.beans.BeanUtils; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Lob; +import javax.persistence.Table; + +/** + * @description: + * @author: qh + * @create: 2020-09-03 10:00 + **/ +@Data +@Entity +@Table(name = "btreeinfo") +public class BtreeInfo extends AbstractEntity<Long> { + + @Override + public EntityVo toVo() { + BtreeInfoVo entityVo = new BtreeInfoVo(); + BeanUtils.copyProperties(this, entityVo); + return entityVo; + } + + @Id + private Long id; + + /** + * 监测特å¾æ‰€å±žç”µç«™çš„æ ‡è¯† + */ + @Column(name = "plantid") + private String plantId; + + /** + * 监测特å¾æ‰€å±žè®¾å¤‡çš„æ ‡è¯† + */ + @Column(name = "deviceid") + private String deviceId; + + /** + * 监测特å¾æ‰€å±žç›‘测å•å…ƒæ ‡è¯† + */ + @Column(name = "unitcodeid") + private String unitCodeId; + + /** + * 二å‰æ ‘诊æ–å称 + */ + @Column(name = "btreename") + private String btreeName; + + /** + * 0:æ£å¸¸ï¼Œ1:异常 2:其他 + */ + @Column(name = "result") + private Integer result; + + /** + * 诊æ–结论,jsonæ ¼å¼ç»“论 + */ + @Lob + @Column(name = "diagnosis") + private String diagnosis; +} diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/CharacterParamInfo.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/CharacterParamInfo.java index 5d7179b..13690e0 100644 --- a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/CharacterParamInfo.java +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/CharacterParamInfo.java @@ -40,7 +40,8 @@ public class CharacterParamInfo extends AbstractEntity<String> { BeanUtils.copyProperties(this, characterParamInfoVo); return characterParamInfoVo; } - + @Column(name = "parentdir") + private String parentDir; /** * 监测特å¾æ‰€å±žç”µç«™çš„æ ‡è¯† */ @@ -165,6 +166,7 @@ public class CharacterParamInfo extends AbstractEntity<String> { * 一级报è¦ä¸‹é™å€¼ */ private Float protectRuleMinValue; + /** * 特å¾å‚æ•°ä¿æŠ¤(一级报è¦)规则阈值范围是å¦æ˜¯æŽ’除范围 * 1: 是排除范围 0:是é™å®šèŒƒå›´ diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/EventInfo.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/EventInfo.java new file mode 100644 index 0000000..2a7b32e --- /dev/null +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/EventInfo.java @@ -0,0 +1,113 @@ +package cn.wise.sc.energy.power.plant.business.domain; + +import cn.wise.sc.energy.power.plant.business.domain.vo.DeviceInfoVo; +import cn.wise.sc.energy.power.plant.business.domain.vo.EntityVo; +import cn.wise.sc.energy.power.plant.business.domain.vo.EventInfoVo; +import lombok.Data; +import org.springframework.beans.BeanUtils; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * @description: 事件记录 + * @author: qh + * @create: 2020-09-03 09:36 + **/ +@Data +@Entity +@Table(name = "eventinfo") +public class EventInfo extends AbstractEntity<Long> { + + @Override + public EntityVo toVo(){ + EventInfoVo entityVo = new EventInfoVo(); + BeanUtils.copyProperties(this,entityVo); + return entityVo; + } + + @Id + private Long id; + + /** + * 记录时间 + */ + @Column(name = "valuetime") + private long valueTime; + + /** + * 监测特å¾æ‰€å±žç”µç«™çš„æ ‡è¯† + */ + @Column(name = "plantid") + private String plantId; + + /** + * 监测特å¾æ‰€å±žè®¾å¤‡çš„æ ‡è¯† + */ + @Column(name = "deviceid") + private String deviceId; + + /**监测特å¾æ‰€å±žç›‘测å•å…ƒæ ‡è¯† + * + */ + @Column(name = "unitcodeid") + private String unitCodeId; + + /** + * 监测特å¾å”¯ä¸€æ ‡è¯†ç¼–ç (KKSç¼–ç + */ + @Column(name = "kkscode") + private String kKSCode; + + /** + * 实际测é‡å€¼ + */ + @Column(name = "value") + private Float value; + + /** + * ä¿¡å·çŠ¶æ€ï¼š0-æ£å¸¸ã€1-æ— æ•ˆã€2-预è¦æŠ¥è¦ã€ + * 3-高报è¦ã€4-高高报è¦ã€5-上趋势报è¦ã€6-ä¸‹è¶‹åŠ¿æŠ¥è¦ + */ + @Column(name = "alertstat") + private Integer alertStat; + + /** + * 特å¾å‚æ•°ä¿æŠ¤ä¸‹é™å€¼ + */ + @Column(name = "alertminvalue") + private Float alertMinvalue; + + /** + * 特å¾å‚æ•°ä¿æŠ¤ä¸Šé™å€¼ + */ + @Column(name = "alertmaxvalue") + private Float alertMaxvalue; + + /** + * 预è¦èŒƒå›´ï¼š0-范围内 1-范围外 + */ + @Column(name = "alertlimit") + private Integer alertLimit; + + /** + * 预è¦å€¼è®¾ç½®æ¥æº (角色或åŽå°) + */ + @Column(name = "altlimitusr") + private String altLimitUsr; + + /** + * 监测特å¾çš„物ç†å•ä½ï¼Œå¦‚ um/mm ç‰ + */ + @Column(name = "cpunit") + private String cpUnit; + + /** + * 事件状æ€ï¼š0-æœªå¤„ç† 1-å·²å¤„ç† + */ + @Column(name = "eventinfo") + private Integer eventInfo; + +} diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/OscillogramRowMapper.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/OscillogramRowMapper.java index ff4a932..ee2b225 100644 --- a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/OscillogramRowMapper.java +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/OscillogramRowMapper.java @@ -16,6 +16,7 @@ import java.util.NavigableMap; * @author: qh * @create: 2020-08-20 15:25 **/ +@Deprecated public class OscillogramRowMapper implements RowMapper<Oscillogram> { private static byte[] RECORDS = "records".getBytes(); diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/OscillogramTagsMapper.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/OscillogramTagsMapper.java index 85c0d56..f6ac929 100644 --- a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/OscillogramTagsMapper.java +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/OscillogramTagsMapper.java @@ -15,6 +15,7 @@ import java.util.Set; * @author: qh * @create: 2020-08-24 16:37 **/ +@Deprecated public class OscillogramTagsMapper implements RowMapper<Oscillogram> { private static byte[] COLUMNFAMILY = "tags".getBytes(); diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/RowKeyMapper.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/RowKeyMapper.java new file mode 100644 index 0000000..562fdaf --- /dev/null +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/RowKeyMapper.java @@ -0,0 +1,80 @@ +package cn.wise.sc.energy.power.plant.business.domain; + +import cn.hutool.core.codec.Base64Encoder; +import com.alibaba.fastjson.JSON; +import com.spring4all.spring.boot.starter.hbase.api.RowMapper; +import org.apache.hadoop.hbase.client.Result; +import org.apache.hadoop.hbase.util.Bytes; +import java.util.List; + +/** + * @description: rowKey + * @author: qh + * @create: 2020-09-02 11:38 + **/ +public class RowKeyMapper implements RowMapper<Oscillogram> { + + private static byte[] REORDSFAMILY = "records".getBytes(); + private static byte[] DATA = "Data".getBytes(); + private static byte[] TAGSFAMILY = "tags".getBytes(); + private static byte[] TIMESPAN = "TimeSpan".getBytes(); + private static byte[] DATATYPE = "DataType".getBytes(); + private static byte[] DIRECTION = "Direction".getBytes(); + private static byte[] GENERATIONFREQ = "GenerationFreq".getBytes(); + private static byte[] KKSCODE = "KKSCode".getBytes(); + private static byte[] PARTTYPE = "PartType".getBytes(); + private static byte[] POLENUM = "PoleNum".getBytes(); + private static byte[] RECORDFLAG = "RecordFlag".getBytes(); + private static byte[] SIGNALTYPE = "Signaltype".getBytes(); + private static byte[] STARTTIME = "StartTime".getBytes(); + private static byte[] OFFSET = "KeyPhaseOffset".getBytes(); + + @Override + public Oscillogram mapRow(Result result, int rowNum) { + + String timeSpan = Bytes.toString(result.getValue(TAGSFAMILY, TIMESPAN)); + String dataType = Bytes.toString(result.getValue(TAGSFAMILY, DATATYPE)); + String direction = Bytes.toString(result.getValue(TAGSFAMILY, DIRECTION)); + String generationFreq = Bytes.toString(result.getValue(TAGSFAMILY, GENERATIONFREQ)); + String kKSCode = Bytes.toString(result.getValue(TAGSFAMILY, KKSCODE)); + String partType = Bytes.toString(result.getValue(TAGSFAMILY, PARTTYPE)); + String poleNum = Bytes.toString(result.getValue(TAGSFAMILY, POLENUM)); + String recordFlag = Bytes.toString(result.getValue(TAGSFAMILY, RECORDFLAG)); + String signaltype = Bytes.toString(result.getValue(TAGSFAMILY, SIGNALTYPE)); + String startTime = Bytes.toString(result.getValue(TAGSFAMILY, STARTTIME)); + List<Float> data = JSON.parseArray(Bytes.toString(result.getValue(REORDSFAMILY, DATA)), Float.class); + Oscillogram oscillogram = new Oscillogram(); + oscillogram.setRowKey(Base64Encoder.encode(result.getRow())); + oscillogram.setPeriod(0); + oscillogram.setKKsCode(kKSCode); + oscillogram.setMapData(data); + //获å–åç§»é‡ + oscillogram.setNoVersionKeyPhaseOffset(JSON.parseArray(Bytes.toString(result.getValue(REORDSFAMILY, OFFSET)), Float.class)); + try { + oscillogram.setTimeSpan(Long.parseLong(timeSpan)); + } catch (NumberFormatException ex) { + oscillogram.setTimeSpan(0L); + } + try { + oscillogram.setRecordFlag(Integer.parseInt(recordFlag)); + } catch (NumberFormatException ex) { + oscillogram.setRecordFlag(1); + } + try { + oscillogram.setGenerationFreq(Integer.parseInt(generationFreq)); + } catch (NumberFormatException ex) { + oscillogram.setGenerationFreq(1); + } + try { + oscillogram.setPoleNum(Integer.parseInt(poleNum)); + } catch (NumberFormatException ex) { + oscillogram.setPoleNum(0); + } + try { + oscillogram.setStart(Long.parseLong(startTime)); + } catch (NumberFormatException ex) { + throw new RuntimeException("HBase这个波形图开始时间ä¸ä¸º0"); + } + return oscillogram; + } +} diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/vo/AlertInfoVo.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/vo/AlertInfoVo.java new file mode 100644 index 0000000..faa7824 --- /dev/null +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/vo/AlertInfoVo.java @@ -0,0 +1,54 @@ +package cn.wise.sc.energy.power.plant.business.domain.vo; + +import lombok.Data; + +/** + * @description: + * @author: qh + * @create: 2020-09-03 09:59 + **/ +@Data +public class AlertInfoVo extends EntityVo { + + private Long id; + + /** + * 监测特å¾æ‰€å±žç”µç«™çš„æ ‡è¯† + */ + private String plantId; + + /** + * 监测特å¾æ‰€å±žè®¾å¤‡çš„æ ‡è¯† + */ + private String deviceId; + + /**监测特å¾æ‰€å±žç›‘测å•å…ƒæ ‡è¯† + * + */ + private String unitCodeId; + + /** + * 监测特å¾å”¯ä¸€æ ‡è¯†ç¼–ç (KKSç¼–ç + */ + private String kKSCode; + + /** + * 预è¦å€¼ + */ + private Float value; + + /** + * 预è¦å€¼ + */ + private Float newValue; + + /** + * 记录更新时间 + */ + private Long valuetime; + + /** + * 设置æ¥æº(角色或åŽå°) + */ + private String usr; +} diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/vo/BtreeInfoVo.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/vo/BtreeInfoVo.java new file mode 100644 index 0000000..dbf9dc3 --- /dev/null +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/vo/BtreeInfoVo.java @@ -0,0 +1,47 @@ +package cn.wise.sc.energy.power.plant.business.domain.vo; + +import lombok.Data; + +import javax.persistence.Column; +import javax.persistence.Lob; + +/** + * @description: + * @author: qh + * @create: 2020-09-03 10:06 + **/ +@Data +public class BtreeInfoVo extends EntityVo { + + private Long id; + + /** + * 监测特å¾æ‰€å±žç”µç«™çš„æ ‡è¯† + */ + private String plantId; + + /** + * 监测特å¾æ‰€å±žè®¾å¤‡çš„æ ‡è¯† + */ + private String deviceId; + + /** + * 监测特å¾æ‰€å±žç›‘测å•å…ƒæ ‡è¯† + */ + private String unitCodeId; + + /** + * 二å‰æ ‘诊æ–å称 + */ + private String btreeName; + + /** + * 0:æ£å¸¸ï¼Œ1:异常 2:其他 + */ + private Integer result; + + /** + * 诊æ–结论,jsonæ ¼å¼ç»“论 + */ + private String diagnosis; +} diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/vo/CharacterParamInfoVo.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/vo/CharacterParamInfoVo.java index 580a3a5..cbf3e8a 100644 --- a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/vo/CharacterParamInfoVo.java +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/vo/CharacterParamInfoVo.java @@ -23,6 +23,7 @@ import java.util.List; @NoArgsConstructor public class CharacterParamInfoVo extends EntityVo{ + private String parentDir; /** * 监测特å¾æ‰€å±žç”µç«™çš„æ ‡è¯† */ diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/vo/EventInfoVo.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/vo/EventInfoVo.java new file mode 100644 index 0000000..880444f --- /dev/null +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/domain/vo/EventInfoVo.java @@ -0,0 +1,81 @@ +package cn.wise.sc.energy.power.plant.business.domain.vo; + +import lombok.Data; + +/** + * @description: 事件记录 + * @author: qh + * @create: 2020-09-03 09:36 + **/ +@Data +public class EventInfoVo extends EntityVo { + + private Long id; + + /** + * 记录时间 + */ + private long valueTime; + + /** + * 监测特å¾æ‰€å±žç”µç«™çš„æ ‡è¯† + */ + private String plantId; + + /** + * 监测特å¾æ‰€å±žè®¾å¤‡çš„æ ‡è¯† + */ + private String deviceId; + + /**监测特å¾æ‰€å±žç›‘测å•å…ƒæ ‡è¯† + * + */ + private String unitCodeId; + + /** + * 监测特å¾å”¯ä¸€æ ‡è¯†ç¼–ç (KKSç¼–ç + */ + private String kKSCode; + + /** + * 实际测é‡å€¼ + */ + private Float value; + + /** + * ä¿¡å·çŠ¶æ€ï¼š0-æ£å¸¸ã€1-æ— æ•ˆã€2-预è¦æŠ¥è¦ã€ + * 3-高报è¦ã€4-高高报è¦ã€5-上趋势报è¦ã€6-ä¸‹è¶‹åŠ¿æŠ¥è¦ + */ + private String alertStat; + + /** + * 特å¾å‚æ•°ä¿æŠ¤ä¸‹é™å€¼ + */ + private String alertMinvalue; + + /** + * 特å¾å‚æ•°ä¿æŠ¤ä¸Šé™å€¼ + */ + private String alertMaxvalue; + + /** + * 预è¦èŒƒå›´ï¼š0-范围内 1-范围外 + */ + private String alertLimit; + + /** + * 预è¦å€¼è®¾ç½®æ¥æº (角色或åŽå°) + */ + private String altLimitUsr; + + /** + * 监测特å¾çš„物ç†å•ä½ï¼Œå¦‚ um/mm ç‰ + */ + private String cpUnit; + + /** + * 事件状æ€ï¼š0-æœªå¤„ç† 1-å·²å¤„ç† + */ + private String eventInfo; + +} diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/repository/AlertInfoRepository.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/repository/AlertInfoRepository.java new file mode 100644 index 0000000..e6c819d --- /dev/null +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/repository/AlertInfoRepository.java @@ -0,0 +1,17 @@ +package cn.wise.sc.energy.power.plant.business.repository; + +import cn.wise.sc.energy.power.plant.business.domain.AlertInfo; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.stereotype.Repository; +/** + * @description: 阈值更新记录仓储 + * @author: qh + * @create: 2020-09-03 14:41 + **/ +@Repository +public interface AlertInfoRepository extends + JpaRepository<AlertInfo, Long>, + JpaSpecificationExecutor<AlertInfo> { + +} diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/repository/CharacterParamRepository.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/repository/CharacterParamRepository.java index 3f1f273..233c02b 100644 --- a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/repository/CharacterParamRepository.java +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/repository/CharacterParamRepository.java @@ -1,10 +1,18 @@ package cn.wise.sc.energy.power.plant.business.repository; import cn.wise.sc.energy.power.plant.business.domain.CharacterParamInfo; +import lombok.Data; +import lombok.NoArgsConstructor; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; +import javax.persistence.Entity; +import javax.persistence.Table; +import java.util.List; +import java.util.Map; + /** * @description: 测点特å¾ä»“储 * @author: qh @@ -14,5 +22,12 @@ import org.springframework.stereotype.Repository; public interface CharacterParamRepository extends JpaRepository<CharacterParamInfo, String>, JpaSpecificationExecutor<CharacterParamInfo> { + /** + * 查询报è¦ç‚¹æ•°ç»Ÿè®¡ + * + * @return map + */ + @Query(value = "SELECT COUNT(deviceId),deviceId FROM CharacterParamInfo GROUP BY deviceId") + List<Object[]> countAlert(); } diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/repository/EventInfoRepository.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/repository/EventInfoRepository.java new file mode 100644 index 0000000..915886f --- /dev/null +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/repository/EventInfoRepository.java @@ -0,0 +1,30 @@ +package cn.wise.sc.energy.power.plant.business.repository; + +import cn.wise.sc.energy.power.plant.business.domain.EventInfo; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +/** + * @description: 事件记录仓储 + * @author: qh + * @create: 2020-09-03 10:26 + **/ +@Repository +public interface EventInfoRepository extends + JpaRepository<EventInfo, Long>, + JpaSpecificationExecutor<EventInfo> { + + /** + * 查询报è¦ç‚¹æ•°ç»Ÿè®¡ + * + * @return list + */ + @Query(value = "SELECT COUNT(e.alertStat) as count, e.alertStat, e.deviceId FROM EventInfo as e" + + " where e.alertStat > 1 and e.alertStat < 5 GROUP BY e.alertStat,e.deviceId") + List<Object[]> countAlert(); +} diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/IAlertInfoService.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/IAlertInfoService.java new file mode 100644 index 0000000..0a90fa0 --- /dev/null +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/IAlertInfoService.java @@ -0,0 +1,11 @@ +package cn.wise.sc.energy.power.plant.business.service; + +import cn.wise.sc.energy.power.plant.business.domain.AlertInfo; +/** + * @description: 阈值更新记录 + * @author: qh + * @create: 2020-09-03 14:56 + **/ +public interface IAlertInfoService extends IBaseService<Long, AlertInfo> { + +} diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/ICharacterParamService.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/ICharacterParamService.java index ed17e42..d3e9fe3 100644 --- a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/ICharacterParamService.java +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/ICharacterParamService.java @@ -9,6 +9,7 @@ import cn.wise.sc.energy.power.plant.business.domain.vo.CharacterParamInfoVo; import cn.wise.sc.energy.power.plant.business.domain.vo.EntityVo; import cn.wise.sc.energy.power.plant.common.core.bean.BaseResponse; +import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -20,6 +21,8 @@ import java.util.Map; **/ public interface ICharacterParamService extends IBaseService<String, CharacterParamInfo> { + Object count(); + /** * æ ¹æ®éƒ¨ä»¶å· 获å–当å‰éƒ¨ä»¶æ‰€æœ‰æµ‹ç‚¹ç‰¹å¾ * @@ -114,5 +117,5 @@ public interface ICharacterParamService extends IBaseService<String, CharacterPa * * @param kksCodes kkscode */ - Map<String, String> getOscillogram(List<String> kksCodes); + Map<String, String> getOscillogram(List<String> kksCodes) throws IOException; } diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/IEventInfoService.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/IEventInfoService.java new file mode 100644 index 0000000..24f865c --- /dev/null +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/IEventInfoService.java @@ -0,0 +1,30 @@ +package cn.wise.sc.energy.power.plant.business.service; + +import cn.wise.sc.energy.power.plant.business.domain.EventInfo; +import cn.wise.sc.energy.power.plant.business.domain.vo.EntityVo; +import cn.wise.sc.energy.power.plant.business.domain.vo.EventInfoVo; +import cn.wise.sc.energy.power.plant.business.service.impl.EventInfoServiceImpl; + +import java.util.List; +import java.util.Map; + +/** + * @description: 事件记录æœåŠ¡å±‚æŽ¥å£ + * @author: qh + * @create: 2020-09-03 10:21 + **/ +public interface IEventInfoService extends IBaseService<Long, EventInfo> { + + /** + * 获å–报è¦è®°å½•ç»Ÿè®¡ + * @return list + */ + List<EventInfoServiceImpl.AlertCount> countAlert(); + + /** + * æ ¹æ®æŠ¥è¦ç‰çº§èŽ·å–报è¦è®°å½• + * @param state ç‰çº§ + * @return list + */ + List<EntityVo> listByState(Integer state); +} diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/impl/AlertInfoServiceImpl.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/impl/AlertInfoServiceImpl.java new file mode 100644 index 0000000..3b81b17 --- /dev/null +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/impl/AlertInfoServiceImpl.java @@ -0,0 +1,16 @@ +package cn.wise.sc.energy.power.plant.business.service.impl; + +import cn.wise.sc.energy.power.plant.business.domain.AlertInfo; +import cn.wise.sc.energy.power.plant.business.service.IAlertInfoService; +import org.springframework.stereotype.Service; +/** + * @description: 阈值更新 + * @author: qh + * @create: 2020-09-03 14:57 + **/ +@Service +public class AlertInfoServiceImpl extends + BaseServiceImpl<Long, AlertInfo> + implements IAlertInfoService { + +} diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/impl/CharacterParamServiceImpl.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/impl/CharacterParamServiceImpl.java index 72df66f..c88a979 100644 --- a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/impl/CharacterParamServiceImpl.java +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/impl/CharacterParamServiceImpl.java @@ -8,6 +8,7 @@ import cn.wise.sc.energy.power.plant.business.domain.FrequencyQuery; import cn.wise.sc.energy.power.plant.business.domain.Oscillogram; import cn.wise.sc.energy.power.plant.business.domain.OscillogramRowMapper; import cn.wise.sc.energy.power.plant.business.domain.OscillogramTagsMapper; +import cn.wise.sc.energy.power.plant.business.domain.RowKeyMapper; import cn.wise.sc.energy.power.plant.business.domain.UnitInfo; import cn.wise.sc.energy.power.plant.business.domain.eum.TendencyStatus; import cn.wise.sc.energy.power.plant.business.domain.vo.CharacterParamInfoVo; @@ -29,17 +30,20 @@ import lombok.extern.slf4j.Slf4j; import net.opentsdb.client.api.query.response.QueryResponse; import net.opentsdb.client.bean.Aggregator; import net.opentsdb.client.bean.QueryResult; +import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.filter.CompareFilter; import org.apache.hadoop.hbase.filter.Filter; import org.apache.hadoop.hbase.filter.FilterList; import org.apache.hadoop.hbase.filter.RowFilter; +import org.apache.hadoop.hbase.filter.SingleColumnValueFilter; import org.apache.hadoop.hbase.filter.SubstringComparator; import org.apache.hadoop.hbase.util.Bytes; import org.springframework.beans.BeanUtils; import org.springframework.data.domain.Example; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; + import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.Path; import javax.persistence.criteria.Predicate; @@ -81,6 +85,11 @@ public class CharacterParamServiceImpl extends BaseServiceImpl<String, Character this.hbaseTemplate = hbaseTemplate; } + @Override + public List<Object[]> count(){ + return characterParamRepository.countAlert(); + } + @Override public List<EntityVo> getUnitAllCharacterParams(String unitNo) { @@ -337,67 +346,25 @@ public class CharacterParamServiceImpl extends BaseServiceImpl<String, Character } @Override - public Map<String, String> getOscillogram(List<String> kksCodes) { - - //æ·»åŠ è¿‡æ»¤å™¨ 过滤åå—ä¸åŒ…å«kkscode - List<Filter> filters = new ArrayList<>(kksCodes.size()); - for (String kkscode : kksCodes) { - RowFilter filter = new RowFilter(CompareFilter.CompareOp.EQUAL - , new SubstringComparator(StrUtil.swapCase(kkscode))); - filters.add(filter); - } + public Map<String, String> getOscillogram(List<String> kksCodes) throws IOException { - FilterList filterList = new FilterList(filters); - Scan scanRow = new Scan(); - scanRow.setCaching(10000); - scanRow.setFilter(filterList); - scanRow.addFamily(Bytes.toBytes("records")); - scanRow.setReversed(true); - - Scan scanTags = new Scan(); - scanTags.setCaching(10000); - scanTags.setFilter(filterList); - scanTags.addFamily(Bytes.toBytes("tags")); - scanTags.setReversed(true); - OscillogramRowMapper oscillogramRowMapper = new OscillogramRowMapper(); - List<Oscillogram> oscillograms = hbaseTemplate.find("thermalpower-plant-wave-data", - scanRow, oscillogramRowMapper); - - OscillogramTagsMapper oscillogramRowMapper2 = new OscillogramTagsMapper(); - List<Oscillogram> oscillogramsTags = hbaseTemplate.find("thermalpower-plant-wave-data", - scanTags, oscillogramRowMapper2); - oscillogramsTags.forEach(opt -> oscillograms.forEach(arg -> { - if (opt.getRowKey().equals(arg.getRowKey())) { - arg.setTimeSpan(opt.getTimeSpan()); - arg.setRecordFlag(opt.getRecordFlag()); - arg.setGenerationFreq(opt.getGenerationFreq()); - arg.setPoleNum(opt.getPoleNum()); - arg.setPeriod(opt.getPeriod()); + final String tableName = "thermalpower-plant-wave-data"; + final String records = "records"; + final String data = "Data"; + final String tags = "tags"; + List<Oscillogram> oscillogramList = new ArrayList<>(kksCodes.size()); + ResponseEnum.COLLECTION_NOT_ILLEGAL.assertCollectionNotILLEGAL(kksCodes); + List<String> rowKeys = new ArrayList<>(kksCodes.size()); + //拼接rowKey获å–最新数æ®rowKey + System.out.println("============rowKey============="); + for (String kKSCode : kksCodes) { + System.out.println(getRowKey(kKSCode)); + Oscillogram oscillogram = hbaseTemplate.get(tableName, getRowKey(kKSCode), + new RowKeyMapper()); + if (oscillogram != null){ + oscillogramList.add(oscillogram); } - })); - //ç›é€‰æœ€æ–°çš„一æ¡æ•°æ® - List<CharacterParamInfo> characterParamInfos = this.getByKksCodes(kksCodes); - Map<String, Oscillogram> oscillogramLastMap = new HashMap<>(characterParamInfos.size()); - for (Oscillogram oscillogram : oscillograms) { - characterParamInfos.forEach(arg -> { - String kKSCode = oscillogram.getKKsCode(); - if (kKSCode.equals(arg.getKksCode())) { - if (oscillogramLastMap.containsKey(kKSCode)) { - //比较已å˜åœ¨çš„startTimeå¤§å° - if (oscillogramLastMap.get(kKSCode).getStart() < oscillogram.getStart()) { - oscillogramLastMap.put(kKSCode, oscillogram); - } - } else { - oscillogramLastMap.put(kKSCode, oscillogram); - } - } - }); - } - List<Oscillogram> oscillogramList = new ArrayList<>(oscillogramLastMap.size()); - for (String key : oscillogramLastMap.keySet()) { - oscillogramList.add(oscillogramLastMap.get(key)); } - FrequencyQuery frequencyQuery = new FrequencyQuery(); FrequencyQuery.Record record = new FrequencyQuery.Record(); FrequencyQuery.DataOut dataOut = new FrequencyQuery.DataOut(); @@ -408,7 +375,7 @@ public class CharacterParamServiceImpl extends BaseServiceImpl<String, Character frequencyQuery.setStartTime(oscillogram.getStart()); frequencyQuery.setTimeSpan(oscillogram.getTimeSpan()); FrequencyQuery.DataIn dataIn = new FrequencyQuery.DataIn(); - dataIn.setKKSCode(StrUtil.swapCase(oscillogram.getKKsCode())); + dataIn.setKKSCode(oscillogram.getKKsCode()); dataIn.setData(oscillogram.getMapData()); dataIn.setKeyPhaseOffset(oscillogram.getNoVersionKeyPhaseOffset()); dataIn.setPeriod(oscillogram.getPeriod()); @@ -421,11 +388,116 @@ public class CharacterParamServiceImpl extends BaseServiceImpl<String, Character String frequency = getFrequency(JSON.toJSONString(frequencyQuery)); Map<String, String> rts = new HashMap<>(2); - + System.out.println(); rts.put("oscillogram", JSON.toJSONString(oscillogramList)); rts.put("frequency", frequency); + System.out.println("============rowKey============="); + System.out.println(JSON.toJSONString(rowKeys)); return rts; +// +////================================================================================================== + //æ·»åŠ è¿‡æ»¤å™¨ 过滤åå—ä¸åŒ…å«kkscode +// List<Filter> filters = new ArrayList<>(kksCodes.size()); +// for (String kkscode : kksCodes) { +// RowFilter filter = new RowFilter(CompareFilter.CompareOp.EQUAL +// , new SubstringComparator(StrUtil.swapCase(kkscode))); +// filters.add(filter); +// } +// +// FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE, filters); +// Scan scanRow = new Scan(); +// scanRow.setFilter(filterList); +// scanRow.addFamily(Bytes.toBytes("records")); +// scanRow.setReversed(true); +// scanRow.setBatch(50); +// scanRow.setMaxResultSize(50); +// scanRow.setTimeRange(1596252170L, System.currentTimeMillis()); +// +// Scan scanTags = new Scan(); +// scanTags.setFilter(filterList); +// scanTags.addFamily(Bytes.toBytes("tags")); +// scanTags.setReversed(true); +// scanTags.setBatch(50); +// scanTags.setMaxResultSize(50); +// scanRow.setTimeRange(1596252170L, System.currentTimeMillis()); +// System.out.println("============get--start================="); +// long start = System.currentTimeMillis(); +// OscillogramRowMapper oscillogramRowMapper = new OscillogramRowMapper(); +// List<Oscillogram> oscillograms = hbaseTemplate.find(tableName, +// scanRow, oscillogramRowMapper); +// +// OscillogramTagsMapper oscillogramRowMapper2 = new OscillogramTagsMapper(); +// List<Oscillogram> oscillogramsTags = hbaseTemplate.find(tableName, +// scanTags, oscillogramRowMapper2); +// long end = System.currentTimeMillis() - start; +// System.out.println(end); +// +// oscillogramsTags.forEach(opt -> oscillograms.forEach(arg -> { +// if (opt.getRowKey().equals(arg.getRowKey())) { +// arg.setTimeSpan(opt.getTimeSpan()); +// arg.setRecordFlag(opt.getRecordFlag()); +// arg.setGenerationFreq(opt.getGenerationFreq()); +// arg.setPoleNum(opt.getPoleNum()); +// arg.setPeriod(opt.getPeriod()); +// } +// })); +// //ç›é€‰æœ€æ–°çš„一æ¡æ•°æ® +// List<CharacterParamInfo> characterParamInfos = this.getByKksCodes(kksCodes); +// Map<String, Oscillogram> oscillogramLastMap = new HashMap<>(characterParamInfos.size()); +// for (Oscillogram oscillogram : oscillograms) { +// characterParamInfos.forEach(arg -> { +// String kKSCode = oscillogram.getKKsCode(); +// if (kKSCode.equals(arg.getKksCode())) { +// if (oscillogramLastMap.containsKey(kKSCode)) { +// //比较已å˜åœ¨çš„startTimeå¤§å° +// if (oscillogramLastMap.get(kKSCode).getStart() < oscillogram.getStart()) { +// oscillogramLastMap.put(kKSCode, oscillogram); +// } +// } else { +// oscillogramLastMap.put(kKSCode, oscillogram); +// } +// } +// }); +// } +// List<Oscillogram> oscillogramList = new ArrayList<>(oscillogramLastMap.size()); +// for (String key : oscillogramLastMap.keySet()) { +// oscillogramList.add(oscillogramLastMap.get(key)); +// } +// +// System.out.println("oscillograms长度:" + oscillograms.size()); +// System.out.println("oscillograms长度:" + oscillogramsTags.size()); +// System.out.println("oscillogramList长度:" + oscillogramList.size()); +// FrequencyQuery frequencyQuery = new FrequencyQuery(); +// FrequencyQuery.Record record = new FrequencyQuery.Record(); +// FrequencyQuery.DataOut dataOut = new FrequencyQuery.DataOut(); +// frequencyQuery.setRecord(record); +// frequencyQuery.getRecord().setData(dataOut); +// frequencyQuery.getRecord().getData().setData(new ArrayList<>()); +// for (Oscillogram oscillogram : oscillogramList) { +// frequencyQuery.setStartTime(oscillogram.getStart()); +// frequencyQuery.setTimeSpan(oscillogram.getTimeSpan()); +// FrequencyQuery.DataIn dataIn = new FrequencyQuery.DataIn(); +// dataIn.setKKSCode(StrUtil.swapCase(oscillogram.getKKsCode())); +// dataIn.setData(oscillogram.getMapData()); +// dataIn.setKeyPhaseOffset(oscillogram.getNoVersionKeyPhaseOffset()); +// dataIn.setPeriod(oscillogram.getPeriod()); +// dataOut.setDirection(0); +// dataOut.setGenerationFreq(oscillogram.getGenerationFreq()); +// dataOut.setRecordFlag(oscillogram.getRecordFlag()); +// dataOut.setPoleNum(oscillogram.getPoleNum()); +// frequencyQuery.getRecord().getData().getData().add(dataIn); +// } +// +// System.out.println(JSON.toJSONString(frequencyQuery)); +// +// String frequency = getFrequency(JSON.toJSONString(frequencyQuery)); +// Map<String, String> rts = new HashMap<>(2); +// +// rts.put("oscillogram", JSON.toJSONString(oscillogramList)); +// rts.put("frequency", frequency); +// +// return rts; } private DataPower buildDataPower(List<QueryResult> results, @@ -461,6 +533,23 @@ public class CharacterParamServiceImpl extends BaseServiceImpl<String, Character return dataPower; } + /** + * 获å–å˜æœ€æ–°Dataçš„RowKeyæ•°æ®çš„RowKey + * 规则:kKSCode+kKSCode + * + * @param kKSCode kKSCode + * @return rowKey + */ + private String getRowKey(String kKSCode) { + ResponseEnum.LICENCE_NOT_FOUND.assertNotEmpty(kKSCode); + String substring = kKSCode.substring(kKSCode.length() - 1); + return StrUtil.swapCase(substring + kKSCode); + } + + public static void main(String[] args) { + String s = "abcd"; + System.out.println(s.substring(s.length() - 1)); + } /** * 拼装报è¦ç‚¹ diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/impl/EventInfoServiceImpl.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/impl/EventInfoServiceImpl.java new file mode 100644 index 0000000..e7a9c13 --- /dev/null +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/service/impl/EventInfoServiceImpl.java @@ -0,0 +1,115 @@ +package cn.wise.sc.energy.power.plant.business.service.impl; + +import cn.wise.sc.energy.power.plant.business.domain.DeviceInfo; +import cn.wise.sc.energy.power.plant.business.domain.EventInfo; +import cn.wise.sc.energy.power.plant.business.domain.vo.EntityVo; +import cn.wise.sc.energy.power.plant.business.repository.DeviceInfoRepository; +import cn.wise.sc.energy.power.plant.business.repository.EventInfoRepository; +import cn.wise.sc.energy.power.plant.business.service.IEventInfoService; +import lombok.Data; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.stereotype.Service; + +import javax.persistence.criteria.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +/** + * @description: 事件记录æœåŠ¡å±‚实现类 + * @author: qh + * @create: 2020-09-03 10:22 + **/ +@Service +public class EventInfoServiceImpl extends BaseServiceImpl<Long, EventInfo> implements IEventInfoService { + + final + DeviceInfoRepository deviceInfoRepository; + final + EventInfoRepository eventInfoRepository; + + public EventInfoServiceImpl(EventInfoRepository eventInfoRepository, + DeviceInfoRepository deviceInfoRepository) { + this.eventInfoRepository = eventInfoRepository; + this.deviceInfoRepository = deviceInfoRepository; + } + + @Override + public List<AlertCount> countAlert() { + + List<Object[]> objects = eventInfoRepository.countAlert(); + List<AlertCount> rts = new ArrayList<>(); + + for (Object[] objs : objects) { + //countAlert()查询2个å—段 count()ã€alertState + if (objs.length != 2) { + continue; + } + Long count = (long) objs[0]; + Integer state = (int) objs[1]; + String deviceId = (String) objs[2]; + Optional<DeviceInfo> byId = deviceInfoRepository.findById(deviceId); + if (byId.isPresent()) { + continue; + } + String deviceName = byId.get().getDeviceName(); + AlertCount alertCount; + if (state == 2) { + alertCount = new AlertCount("preAlert", deviceName, count); + } else if (state == 3) { + alertCount = new AlertCount("tallAlert", deviceName, count); + } else { + alertCount = new AlertCount("tooTallAlert", deviceName, count); + } + rts.add(alertCount); + } + + return rts; + } + + @Override + public List<EntityVo> listByState(Integer state) { + + if (state < 2 || state > 4) { + return null; + } + List<EventInfo> list = eventInfoRepository.findAll((Specification<EventInfo>) (root, query, criteriaBuilder) -> { + + Path<Integer> alertStat = root.get("alertStat"); + return criteriaBuilder.equal(alertStat, state); + }); + + List<EntityVo> rts = new ArrayList<>(list.size()); + for (EventInfo eventInfo : list) { + EntityVo entityVo = eventInfo.toVo(); + rts.add(entityVo); + } + return rts; + } + + + @Data + public static class AlertCount { + + public AlertCount(String alertLevel, String deviceName, Long count) { + this.alertLevel = alertLevel; + this.deviceName = deviceName; + this.count = count; + } + + /** + * 报è¦çº§åˆ« + */ + private String alertLevel; + + /** + * 对应设备åå— + */ + private String deviceName; + + /** + * 对应报è¦æ¬¡æ•° + */ + private Long count; + } +} diff --git a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/task/ScheduledModel.java b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/task/ScheduledModel.java index bc6909b..765973e 100644 --- a/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/task/ScheduledModel.java +++ b/power-bussiness/src/main/java/cn/wise/sc/energy/power/plant/business/task/ScheduledModel.java @@ -1,16 +1,22 @@ package cn.wise.sc.energy.power.plant.business.task; import cn.wise.sc.energy.power.plant.business.bean.DataPower; +import cn.wise.sc.energy.power.plant.business.domain.Frequency; import cn.wise.sc.energy.power.plant.business.domain.vo.CharacterParamInfoVo; import cn.wise.sc.energy.power.plant.business.service.ICharacterParamService; +import cn.wise.sc.energy.power.plant.business.service.IEventInfoService; +import cn.wise.sc.energy.power.plant.business.service.impl.EventInfoServiceImpl; import com.alibaba.fastjson.JSON; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.io.IOException; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; @@ -26,14 +32,17 @@ public class ScheduledModel { WebSocketServer webSocketServer; final ICharacterParamService iCharacterParamService; + final + IEventInfoService iEventInfoService; public ScheduledModel(WebSocketServer webSocketServer, - ICharacterParamService iCharacterParamService) { + ICharacterParamService iCharacterParamService, + IEventInfoService iEventInfoService) { this.webSocketServer = webSocketServer; this.iCharacterParamService = iCharacterParamService; + this.iEventInfoService = iEventInfoService; } - @Scheduled(cron = "0/1 * * * * ? ") public void indexRealTimeData() throws IOException { ConcurrentHashMap<String, WebSocketServer> webSocketMap = @@ -103,6 +112,44 @@ public class ScheduledModel { rts.add(dataPower1); rts.add(dataPower2); + //æ·»åŠ æŠ¥è¦ç‚¹ + DataPower dataPower4 = new DataPower(); + List<EventInfoServiceImpl.AlertCount> alertCounts = iEventInfoService.countAlert(); + DataPower.PowerPoints powerPoints = new DataPower.PowerPoints(); + powerPoints.setName("预报è¦"); + DataPower.PowerPoints powerPoints1 = new DataPower.PowerPoints(); + powerPoints1.setName("高报è¦"); + DataPower.PowerPoints powerPoints2 = new DataPower.PowerPoints(); + powerPoints2.setName("高高报è¦"); + dataPower4.getDataList().add(powerPoints); + dataPower4.getDataList().add(powerPoints1); + dataPower4.getDataList().add(powerPoints2); + //获å–设备长度 + Set<String> deviceNames = new HashSet<>(); + alertCounts.forEach(arg -> deviceNames.add(arg.getDeviceName())); + int idx = 0; + for (String deviceName : deviceNames) { + dataPower4.getXAxis().add(deviceName); + int finalIdx = idx; + alertCounts.forEach(arg -> { + //处ç†åå—æŠ¥è¦ + if ("preAlert".equals(arg.getAlertLevel())) { + //é¢„æŠ¥è¦ + dataPower4.getDataList().get(0).getValue().add(finalIdx, arg.getCount() + ""); + } else if ("tallAlert".equals(arg.getAlertLevel())) { + //高报 + dataPower4.getDataList().get(1).getValue().add(finalIdx, arg.getCount() + ""); + } else { + //高高报 + dataPower4.getDataList().get(2).getValue().add(finalIdx, arg.getCount() + ""); + } + }); + idx++; + } + + rts.add(dataPower4); + + webSocket.sendMessage(JSON.toJSONString(rts)); } } @@ -189,6 +236,9 @@ public class ScheduledModel { characterNames.add("å‘电机定åCA线电压"); characterNames.add("励端轴承排油温度"); characterNames.add("汽端轴承排油温度"); + characterNames.add("定å上下线棒层间温度"); + characterNames.add("定å上层线棒出水温度"); + characterNames.add("定å下层线棒出水温度"); List<CharacterParamInfoVo> characterParamInfoVos = iCharacterParamService.getCharacterByName(characterNames, "", deviceId); List<String> KKsCodes = characterParamInfoVos.stream() @@ -242,17 +292,78 @@ public class ScheduledModel { dataPower4.getDataList().add(powerPoints); } } + //处ç†é¦–页雷达图 超麻烦 + DataPower dataPower5 = new DataPower(); + DataPower.PowerPoints powerPoints = new DataPower.PowerPoints(); + powerPoints.setName("层间温度"); + powerPoints.setValue(initList()); + DataPower.PowerPoints powerPoints1 = new DataPower.PowerPoints(); + powerPoints1.setName("上层线棒出水"); + powerPoints1.setValue(initList()); + DataPower.PowerPoints powerPoints2 = new DataPower.PowerPoints(); + powerPoints2.setName("下层线棒出水"); + powerPoints2.setValue(initList()); + dataPower5.getDataList().add(powerPoints); + dataPower5.getDataList().add(powerPoints1); + dataPower5.getDataList().add(powerPoints2); + for (String key : realTimeDataAndCpName.keySet()) { + //åªå–Aç»“å°¾çš„æ•°æ® + if (key.contains("定å上下线棒层间温度") && !key.contains("B")) { + //解æžæœ«å°¾æ•°å— + String indexStr = key.split("定å上下线棒层间温度")[1] + .replace("A", ""); + + int index; + try { + index = Integer.parseInt(indexStr); + } catch (NumberFormatException ex) { + throw new RuntimeException("测定åå—ä¸ç¬¦åˆå‘½å规范!"); + } + powerPoints.getValue().set(index-1, realTimeDataAndCpName.get(key).toString()); + } + if (key.contains("定å上层线棒出水温度")) { + //解æžæœ«å°¾æ•°å— + String indexStr = key.split("上层线棒出水温度")[1]; + int index; + try { + index = Integer.parseInt(indexStr); + } catch (NumberFormatException ex) { + throw new RuntimeException("测定åå—ä¸ç¬¦åˆå‘½å规范!"); + } + powerPoints1.getValue().set(index-1, realTimeDataAndCpName.get(key).toString()); + } + if (key.contains("定å下层线棒出水温度")) { + //解æžæœ«å°¾æ•°å— + String indexStr = key.split("下层线棒出水温度")[1]; + int index; + try { + index = Integer.parseInt(indexStr); + } catch (NumberFormatException ex) { + throw new RuntimeException("测定åå—ä¸ç¬¦åˆå‘½å规范!"); + } + powerPoints2.getValue().set(index-1, realTimeDataAndCpName.get(key).toString()); + } + } - List<DataPower> rts = new ArrayList<>(4); + List<DataPower> rts = new ArrayList<>(6); rts.add(dataPower); rts.add(dataPower1); rts.add(dataPower2); rts.add(dataPower3); rts.add(dataPower4); + rts.add(dataPower5); webSocket.sendMessage(JSON.toJSONString(rts)); } } + private List<String> initList() { + List<String> rts = new ArrayList<>(54); + for (int i = 0; i < 54; i++) { + rts.add(""); + } + return rts; + } + /** * 首页实时数æ®ï¼šåŠŸçŽ‡è¶‹åŠ¿å›¾-->å•ä¸ªæœºç»„ å°æ—¶çº§ */ @@ -294,7 +405,6 @@ public class ScheduledModel { } } - /** * æ°¢ç³»ç»Ÿå®žæ—¶æ•°æ® */ -- 2.18.1