diff --git a/shuili-system/src/main/java/com/kms/yg/cz/controller/MonitorController.java b/shuili-system/src/main/java/com/kms/yg/cz/controller/MonitorController.java index b5ee2361..68e8e88b 100644 --- a/shuili-system/src/main/java/com/kms/yg/cz/controller/MonitorController.java +++ b/shuili-system/src/main/java/com/kms/yg/cz/controller/MonitorController.java @@ -5,6 +5,8 @@ import com.kms.yg.cz.dto.CharInfoDto; import com.kms.yg.cz.dto.CurrentWaterMonitorDto; import com.kms.yg.cz.dto.MonitorConfigDto; import com.kms.yg.cz.dto.MonitorQueDto; +import com.kms.yg.cz.enmu.MonitorGroupEnum; +import com.kms.yg.cz.enmu.MonitorIndexEnum; import com.kms.yg.cz.service.MonitorService; import com.kms.yxgh.base.Response; import io.swagger.annotations.Api; @@ -61,4 +63,10 @@ public class MonitorController { public Response> configList(@PathVariable("stcd") String stcd) { return Response.ok(monitorService.configList(stcd)); } + + @PostMapping("/index") + @ApiOperation("查询监测指标信息") + public Response> handleRbe(@RequestBody MonitorQueDto sp) { + return Response.ok(MonitorGroupEnum.SK.info()); + } } \ No newline at end of file diff --git a/shuili-system/src/main/java/com/kms/yg/cz/dto/MonitorQueDto.java b/shuili-system/src/main/java/com/kms/yg/cz/dto/MonitorQueDto.java index c7fa6c5b..1ba767ac 100644 --- a/shuili-system/src/main/java/com/kms/yg/cz/dto/MonitorQueDto.java +++ b/shuili-system/src/main/java/com/kms/yg/cz/dto/MonitorQueDto.java @@ -2,6 +2,7 @@ package com.kms.yg.cz.dto; import com.alibaba.fastjson.annotation.JSONField; import com.fasterxml.jackson.annotation.JsonFormat; +import com.kms.yg.cz.enmu.MonitorGroupEnum; import com.kms.yg.cz.enmu.MonitorSourceEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -14,6 +15,9 @@ import java.util.Date; @ApiModel("监测信息请求参数") public class MonitorQueDto { + @ApiModelProperty(value = "查询类型") + private MonitorGroupEnum group; + @ApiModelProperty(value = "监测要素") private String elementType; diff --git a/shuili-system/src/main/java/com/kms/yg/cz/enmu/MarkTypeEnum.java b/shuili-system/src/main/java/com/kms/yg/cz/enmu/MarkTypeEnum.java index ce426a48..27733d16 100644 --- a/shuili-system/src/main/java/com/kms/yg/cz/enmu/MarkTypeEnum.java +++ b/shuili-system/src/main/java/com/kms/yg/cz/enmu/MarkTypeEnum.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.Map; @Getter -public enum MarkTypeEnum { +public enum MarkTypeEnum implements MonitorIndexInfo { FSLTDZ_LIMIT("汛限水位", "m", Constants.DEFAULT_KEY_FIELD, "rsltdz", AttResRfkwlvMapper.class), CHFLLV("校准洪核水位", "m", Constants.DEFAULT_KEY_FIELD, "chfllv", AttResRsppMapper.class), diff --git a/shuili-system/src/main/java/com/kms/yg/cz/enmu/MonitorGroupEnum.java b/shuili-system/src/main/java/com/kms/yg/cz/enmu/MonitorGroupEnum.java new file mode 100644 index 00000000..ab8db39e --- /dev/null +++ b/shuili-system/src/main/java/com/kms/yg/cz/enmu/MonitorGroupEnum.java @@ -0,0 +1,28 @@ +package com.kms.yg.cz.enmu; + +import lombok.Getter; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +@Getter +public enum MonitorGroupEnum { + + SK("水库", Arrays.asList(MonitorIndexEnum.WATER, MonitorIndexEnum.RAINFALL, MonitorIndexEnum.WATER_STORE)), + ; + private final String group; + private final List indexElements; + + + MonitorGroupEnum(String group, List indexElements) { + this.group = group; + this.indexElements = indexElements; + } + + public List info() { + return this.indexElements.stream() + .map(MonitorIndexEnum::getIndexInfos) + .collect(Collectors.toList()); + } +} diff --git a/shuili-system/src/main/java/com/kms/yg/cz/enmu/MonitorIndexEnum.java b/shuili-system/src/main/java/com/kms/yg/cz/enmu/MonitorIndexEnum.java new file mode 100644 index 00000000..34ade094 --- /dev/null +++ b/shuili-system/src/main/java/com/kms/yg/cz/enmu/MonitorIndexEnum.java @@ -0,0 +1,56 @@ +package com.kms.yg.cz.enmu; + +import lombok.Data; +import lombok.Getter; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static com.kms.yg.cz.enmu.MarkTypeEnum.CHFLLV; +import static com.kms.yg.cz.enmu.MarkTypeEnum.FSLTDZ_LIMIT; +import static com.kms.yg.cz.enmu.MonitorTypeEnum.*; + +@Getter +public enum MonitorIndexEnum { + WATER("水位信息", Arrays.asList(WATER_LEVEL, MAX_WATER_LEVEL, MIN_WATER_LEVEL, AVG_WATER_LEVEL), + Arrays.asList(FSLTDZ_LIMIT, CHFLLV)), + RAINFALL("降雨量", Arrays.asList(MonitorTypeEnum.RAINFALL, MAX_RAINFALL, MIN_RAINFALL, AVG_RAINFALL)), + WATER_STORE("蓄水量", Collections.singletonList(STORE_WATER)), + ; + + private final String group; + private final List indexElements; + private final List markTypes; + + MonitorIndexEnum(String group, List indexElements) { + this(group, indexElements, Collections.emptyList()); + } + + MonitorIndexEnum(String group, List indexElements, List markTypes) { + this.group = group; + this.indexElements = indexElements; + this.markTypes = markTypes; + } + + public IndexInfo getIndexInfos() { + IndexInfo indexInfo = new IndexInfo(); + indexInfo.setGroup(group); + indexInfo.setItems( + Stream.concat(indexElements.stream(), + markTypes.stream()) + .filter(item -> item instanceof MonitorIndexInfo) + .map(item -> (MonitorIndexInfo) item) + .map(MonitorIndexInfo::toInfo) + .collect(Collectors.toList())); + return indexInfo; + } + + @Data + public static class IndexInfo { + private String group; + private List items; + } +} diff --git a/shuili-system/src/main/java/com/kms/yg/cz/enmu/MonitorIndexInfo.java b/shuili-system/src/main/java/com/kms/yg/cz/enmu/MonitorIndexInfo.java new file mode 100644 index 00000000..6442ab76 --- /dev/null +++ b/shuili-system/src/main/java/com/kms/yg/cz/enmu/MonitorIndexInfo.java @@ -0,0 +1,33 @@ +package com.kms.yg.cz.enmu; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +public interface MonitorIndexInfo { + + String getZhName(); + + String getUnit(); + + String name(); + + default Info toInfo() { + Info info = new Info(); + info.setZhName(getZhName()); + info.setUnit(getUnit()); + info.setKey(name()); + return info; + } + + @AllArgsConstructor + @NoArgsConstructor + @Data + class Info { + private String zhName; + private String unit; + private String key; + private String value; + } + +} diff --git a/shuili-system/src/main/java/com/kms/yg/cz/enmu/MonitorTypeEnum.java b/shuili-system/src/main/java/com/kms/yg/cz/enmu/MonitorTypeEnum.java index 85903d6e..1fc30329 100644 --- a/shuili-system/src/main/java/com/kms/yg/cz/enmu/MonitorTypeEnum.java +++ b/shuili-system/src/main/java/com/kms/yg/cz/enmu/MonitorTypeEnum.java @@ -3,9 +3,17 @@ package com.kms.yg.cz.enmu; import lombok.Getter; @Getter -public enum MonitorTypeEnum { +public enum MonitorTypeEnum implements MonitorIndexInfo { + WATER_LEVEL("水位", MonitorSourceEnum.MS_HDM_RSVR, "rz", "collTime", "m", MarkTypeEnum.FSLTDZ_LIMIT), + MAX_WATER_LEVEL("最大水位", MonitorSourceEnum.MS_HDM_RSVREVS, "htrz", "collTime", "m"), + MIN_WATER_LEVEL("最小水位", MonitorSourceEnum.MS_HDM_RSVREVS, "ltrz", "collTime", "m"), + AVG_WATER_LEVEL("平均水位", MonitorSourceEnum.MS_HDM_RSVRAV, "avrz", "collTime", "m"), + STORE_WATER("蓄水量", MonitorSourceEnum.MS_HDM_RSVR, "w", "collTime", "m³"), RAINFALL("降雨量", MonitorSourceEnum.MS_HDM_OBP, "drp", "collTime", "mm", MarkTypeEnum.CHFLLV), + MAX_RAINFALL("最大降雨量", MonitorSourceEnum.MS_HDM_OBP, "drp", "collTime", "mm", OperatorEnum.MAX), + MIN_RAINFALL("最小降雨量", MonitorSourceEnum.MS_HDM_OBP, "drp", "collTime", "mm", OperatorEnum.MIN), + AVG_RAINFALL("平均降雨量", MonitorSourceEnum.MS_HDM_OBP, "drp", "collTime", "mm", OperatorEnum.AVG), AIR_TEMPE("气温", MonitorSourceEnum.MS_DSM_ENV, "aitp", "tm", "℃"), WATER_TEMPE("水温", MonitorSourceEnum.MS_DSM_ENV, "ctp", "tm", "℃"), UPLIFTED_PRESSURE("扬压力", MonitorSourceEnum.MS_DSM_PTMP, "upliftedPressure", "mstm", "MPa"), @@ -19,19 +27,39 @@ public enum MonitorTypeEnum { private final String timeField; private final String unit; private final MarkTypeEnum markType; + private final OperatorEnum operator; + MonitorTypeEnum(String zhName, MonitorSourceEnum source, String valueField, String timeField, String unit) { - this(zhName, source, valueField, timeField, unit, null); + this(zhName, source, valueField, timeField, unit, null, OperatorEnum.TOP); } MonitorTypeEnum(String zhName, MonitorSourceEnum source, String valueField, String timeField, String unit, MarkTypeEnum markType) { + this(zhName, source, valueField, timeField, unit, markType, OperatorEnum.TOP); + } + + MonitorTypeEnum(String zhName, MonitorSourceEnum source, String valueField, String timeField, String unit, OperatorEnum operator) { + this(zhName, source, valueField, timeField, unit, null, operator); + } + + + MonitorTypeEnum(String zhName, MonitorSourceEnum source, String valueField, String timeField, String unit, MarkTypeEnum markType, OperatorEnum operator) { this.zhName = zhName; this.source = source; this.valueField = valueField; this.unit = unit; this.markType = markType; this.timeField = timeField; + this.operator = operator; } - + @Getter + public enum OperatorEnum { + TOP, + MAX, + MIN, + AVG, + TOTAL, + ; + } }