diff --git a/framework/src/main/java/com/iteaj/framework/spi/iot/view/DataItemOption.java b/framework/src/main/java/com/iteaj/framework/spi/iot/view/DataItemOption.java index dde36770..d27a908f 100644 --- a/framework/src/main/java/com/iteaj/framework/spi/iot/view/DataItemOption.java +++ b/framework/src/main/java/com/iteaj/framework/spi/iot/view/DataItemOption.java @@ -16,13 +16,14 @@ public class DataItemOption implements Cloneable{ private Object value; - private boolean load; - private boolean isLeaf; private boolean disabled; - private boolean unique; + /** + * 选中为名称 + */ + private boolean name; private List children; public static final String SPLIT = ":"; @@ -40,24 +41,22 @@ public class DataItemOption implements Cloneable{ this.isLeaf = isLeaf; } - public DataItemOption(String label, Object value, boolean isLeaf, boolean unique) { - this.label = label; - this.value = value; - this.isLeaf = isLeaf; - this.unique = unique; - } - public DataItemOption addChild(DataItemOption option) { if(children == null) { children = new ArrayList<>(); } children.add(option); + option.setValue(this.getValue() + SPLIT + option.getValue()); return this; } - public DataItemOption load() { - this.load = true; return this; + public Builder builder() { + return new Builder(this); + } + + public DataItemOption asName() { + this.name = true; return this; } public boolean getIsLeaf() { @@ -68,4 +67,61 @@ public class DataItemOption implements Cloneable{ public DataItemOption clone() throws CloneNotSupportedException { return (DataItemOption) super.clone(); } + + public class Builder { + public Builder parent; + public DataItemOption current; + + protected Builder(DataItemOption current) { + this.current = current; + } + + public Builder(DataItemOption current, Builder parent) { + this.parent = parent; + this.current = current; + } + + public Builder addChild(String label, Object value) { + final DataItemOption option = new DataItemOption(label, value); + current.addChild(option); + return new Builder(option, this); + } + + public Builder addNameChild(String label, Object value) { + final DataItemOption option = new DataItemOption(label, value).asName(); + current.addChild(option); + return new Builder(option, this); + } + + public Builder addChild(String label, Object value, boolean isLeaf) { + final DataItemOption option = new DataItemOption(label, value, isLeaf); + current.addChild(option); + return new Builder(option, this); + } + + public Builder addNameChild(String label, Object value, boolean isLeaf) { + final DataItemOption option = new DataItemOption(label, value, isLeaf).asName(); + current.addChild(option); + return new Builder(option, this); + } + + public DataItemOption build() { + return current; + } + + public Builder toTop() { + Builder temp = parent; + do { + if(temp.parent == null) { + return temp; + } + } while ((temp = temp.parent) != null); + + return null; + } + + public Builder toParent() { + return parent; + } + } } diff --git a/framework/src/main/java/com/iteaj/framework/spi/iot/view/ListFetchResult.java b/framework/src/main/java/com/iteaj/framework/spi/iot/view/ListFetchResult.java new file mode 100644 index 00000000..85bea5bd --- /dev/null +++ b/framework/src/main/java/com/iteaj/framework/spi/iot/view/ListFetchResult.java @@ -0,0 +1,21 @@ +package com.iteaj.framework.spi.iot.view; + +import com.iteaj.framework.spi.iot.data.BaseEchartsCount; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class ListFetchResult extends ViewFetchResult { + + public ListFetchResult(String item, List values) { + super(item, values); + } + + @Override + public List getValue() { + return (List) super.getValue(); + } +} diff --git a/framework/src/main/java/com/iteaj/framework/spi/iot/view/NumberFetchResult.java b/framework/src/main/java/com/iteaj/framework/spi/iot/view/NumberFetchResult.java new file mode 100644 index 00000000..5774c0a4 --- /dev/null +++ b/framework/src/main/java/com/iteaj/framework/spi/iot/view/NumberFetchResult.java @@ -0,0 +1,13 @@ +package com.iteaj.framework.spi.iot.view; + +public class NumberFetchResult extends ViewFetchResult{ + + public NumberFetchResult(String item, Number value) { + super(item, value); + } + + @Override + public Number getValue() { + return (Number) super.getValue(); + } +} diff --git a/framework/src/main/java/com/iteaj/framework/spi/iot/view/ViewApiItem.java b/framework/src/main/java/com/iteaj/framework/spi/iot/view/ViewApiItem.java index b480ddcc..ec9c899c 100644 --- a/framework/src/main/java/com/iteaj/framework/spi/iot/view/ViewApiItem.java +++ b/framework/src/main/java/com/iteaj/framework/spi/iot/view/ViewApiItem.java @@ -32,7 +32,7 @@ public interface ViewApiItem extends Ordered { return ORDER; } - Object fetch(ViewApiParams params); + List fetch(List values, ViewApiParams params); /** * 数据列表 diff --git a/framework/src/main/java/com/iteaj/framework/spi/iot/view/ViewApiManager.java b/framework/src/main/java/com/iteaj/framework/spi/iot/view/ViewApiManager.java index fab89f6a..1b6b3599 100644 --- a/framework/src/main/java/com/iteaj/framework/spi/iot/view/ViewApiManager.java +++ b/framework/src/main/java/com/iteaj/framework/spi/iot/view/ViewApiManager.java @@ -1,8 +1,10 @@ package com.iteaj.framework.spi.iot.view; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.iteaj.framework.exception.ServiceException; +import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -47,7 +49,27 @@ public final class ViewApiManager { return viewApiItem.loadOptions(split); } - public static Object fetch(ViewApiParams params) { - return null; + public static List fetch(ViewApiParams params) { + List result = new ArrayList<>(); + final List values = params.getValues(); + if(CollectionUtil.isNotEmpty(values)) { + final Map> listMap = values.stream() + .collect(Collectors.groupingBy(item -> item.getValueItem(0))); + listMap.forEach((key, valueList) -> { + if(!itemMap.containsKey(key)) { + throw new ServiceException("未找到处理接口"); + } + }); + + listMap.forEach((key, valueList) -> { + final ViewApiItem viewApiItem = itemMap.get(key); + final List results = viewApiItem.fetch(valueList, params); + result.addAll(results); + }); + } else { + throw new ServiceException("没有提供统计项"); + } + + return result; } } diff --git a/framework/src/main/java/com/iteaj/framework/spi/iot/view/ViewApiParams.java b/framework/src/main/java/com/iteaj/framework/spi/iot/view/ViewApiParams.java index e43fcd9b..bfc45687 100644 --- a/framework/src/main/java/com/iteaj/framework/spi/iot/view/ViewApiParams.java +++ b/framework/src/main/java/com/iteaj/framework/spi/iot/view/ViewApiParams.java @@ -1,9 +1,12 @@ package com.iteaj.framework.spi.iot.view; +import cn.hutool.core.util.StrUtil; +import com.iteaj.framework.exception.ServiceException; import com.iteaj.framework.spi.iot.consts.TimeCountType; import lombok.Getter; import lombok.Setter; +import java.util.Arrays; import java.util.List; @Getter @@ -44,9 +47,14 @@ public class ViewApiParams { private String item; /** - * 字段 + * 名 */ - private String field; + private String name; + + /** + * 值 + */ + private String value; /** * 计算类型(count, min, max, avg, sum, ...) @@ -54,11 +62,6 @@ public class ViewApiParams { private String calcType; /** - * 统计范围 - * all 所有 - * product 产品 - * group 设备组 - * device 指定设备 */ private String range; @@ -67,5 +70,24 @@ public class ViewApiParams { */ private String rangeValue; + private List values; + + public Value build() { + if(StrUtil.isNotBlank(this.getValue())) { + this.values = Arrays.asList(this.getValue().split(DataItemOption.SPLIT)); + } else { + throw new ServiceException("项格式错误"); + } + + return this; + } + + public String getValueItem(int index) { + if(values == null) { + build(); + } + + return this.values.get(index); + } } } diff --git a/framework/src/main/java/com/iteaj/framework/spi/iot/view/ViewFetchResult.java b/framework/src/main/java/com/iteaj/framework/spi/iot/view/ViewFetchResult.java new file mode 100644 index 00000000..1881bf8b --- /dev/null +++ b/framework/src/main/java/com/iteaj/framework/spi/iot/view/ViewFetchResult.java @@ -0,0 +1,25 @@ +package com.iteaj.framework.spi.iot.view; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public abstract class ViewFetchResult { + + /** + * 项 + * @see ViewApiParams.Value#getItem() + */ + private String item; + + /** + * 值 + */ + private Object value; + + public ViewFetchResult(String item, Object value) { + this.item = item; + this.value = value; + } +} diff --git a/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/FetchResult.java b/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/FetchResult.java new file mode 100644 index 00000000..d5c32f7a --- /dev/null +++ b/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/FetchResult.java @@ -0,0 +1,21 @@ +package com.iteaj.iboot.plugin.iotview; + +import com.iteaj.framework.result.Result; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class FetchResult extends IotViewResult{ + + private String chart; + + protected FetchResult(String chart, Result result) { + super(result); + this.chart = chart; + } + + public static FetchResult builder(String chart, Result result) { + return new FetchResult(chart, result); + } +} diff --git a/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/IotViewResult.java b/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/IotViewResult.java index e0c5794f..cf633783 100644 --- a/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/IotViewResult.java +++ b/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/IotViewResult.java @@ -38,7 +38,16 @@ public class IotViewResult extends AbstractResult { } public static IotViewResult Fail(String msg) { - return Fail(msg, HttpResult.DEFAULT_ERROR_CODE); + return Fail(msg, -HttpResult.DEFAULT_ERROR_CODE); + } + + /** + * 失败但前端不进行跳转失败页 + * @param msg + * @return + */ + public static IotViewResult FailNotJump(String msg) { + return Fail(msg, -HttpResult.DEFAULT_ERROR_CODE); } public static IotViewResult Fail(String msg, int code) { diff --git a/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/api/DeviceStatusApiItem.java b/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/api/DeviceStatusApiItem.java index b862d0bd..ca73fb08 100644 --- a/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/api/DeviceStatusApiItem.java +++ b/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/api/DeviceStatusApiItem.java @@ -1,11 +1,14 @@ package com.iteaj.iboot.plugin.iotview.api; -import com.iteaj.framework.spi.iot.view.DataItemOption; -import com.iteaj.framework.spi.iot.view.ViewApiItem; -import com.iteaj.framework.spi.iot.view.ViewApiParams; +import cn.hutool.core.util.StrUtil; +import com.iteaj.framework.exception.ServiceException; +import com.iteaj.framework.spi.iot.view.*; +import com.iteaj.iboot.plugin.iotview.dto.DeviceStatusCountDto; import com.iteaj.iboot.plugin.iotview.service.ISVDataService; import org.springframework.stereotype.Component; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -16,13 +19,20 @@ public class DeviceStatusApiItem implements ViewApiItem { private static final String NAME = "设备状态"; private final ISVDataService isvDataService; - private List options = Arrays.asList(new DataItemOption("设备状态", "STATUS") - .addChild(new DataItemOption("在线", "online") - .addChild(new DataItemOption("统计", "count", true, true)) - .addChild(new DataItemOption("占比", "ratio", true, true))) - .addChild(new DataItemOption("离线", "offline") - .addChild(new DataItemOption("统计", "count", true, true)) - .addChild(new DataItemOption("占比", "ratio", true, true)))); + private List options = Arrays.asList(new DataItemOption("设备状态", KEY) + .asName().builder() + .addNameChild("在线", "online") + .addNameChild("统计", "count", true) + .toParent() + .addNameChild("占比", "ratio", true) + .toTop() + .addNameChild("离线", "offline") + .addNameChild("统计", "count", true) + .toParent() + .addNameChild("占比", "ratio", true) + .toTop() + .build() + ); public DeviceStatusApiItem(ISVDataService isvDataService) { this.isvDataService = isvDataService; @@ -44,8 +54,35 @@ public class DeviceStatusApiItem implements ViewApiItem { } @Override - public Object fetch(ViewApiParams params) { - return null; + public List fetch(List values, ViewApiParams params) { + List results = new ArrayList<>(values.size()); + values.stream().forEach(item -> { + + final String rangeConfig = item.getRangeValue(); + if(StrUtil.isBlank(rangeConfig)) { + throw new ServiceException("未指定统计范围"); + } + final String[] split = rangeConfig.split(DataItemOption.SPLIT); + String range = split[0]; String rangeValue = null; + if(split.length > 1) { + rangeValue = split[1]; + } + final String status = item.getValueItem(1); + final String countType = item.getValueItem(2); + + DeviceStatusCountDto num = isvDataService.countDeviceStatus(status, range, rangeValue); + if("count".equals(countType)) { + results.add(new NumberFetchResult(item.getItem(), num.getTotal())); + } else if("ratio".equals(countType)) { + results.add(new NumberFetchResult(item.getItem() + , new BigDecimal(num.getValue() / (num.getTotal() * 1.0)) + .setScale(2, BigDecimal.ROUND_DOWN))); + } else { + + } + + }); + return results; } @Override @@ -55,6 +92,7 @@ public class DeviceStatusApiItem implements ViewApiItem { @Override public List loadOptions(String[] args) { + return null; } } diff --git a/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/api/ModelAttrApiItem.java b/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/api/ModelAttrApiItem.java index 7f2d76c0..5f00d9e8 100644 --- a/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/api/ModelAttrApiItem.java +++ b/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/api/ModelAttrApiItem.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil; import com.iteaj.framework.spi.iot.view.DataItemOption; import com.iteaj.framework.spi.iot.view.ViewApiItem; import com.iteaj.framework.spi.iot.view.ViewApiParams; +import com.iteaj.framework.spi.iot.view.ViewFetchResult; import com.iteaj.iboot.plugin.iotview.service.ISVDataService; import org.springframework.stereotype.Component; @@ -19,10 +20,10 @@ public class ModelAttrApiItem implements ViewApiItem { private final ISVDataService isvDataService; private List calcOptions = Arrays.asList( - new DataItemOption("数量统计", "count", true), - new DataItemOption("求平均值", "avg", true), - new DataItemOption("求最大值", "max", true), - new DataItemOption("求最小值", "min", true) + new DataItemOption("数量统计", "count", true).asName(), + new DataItemOption("求平均值", "avg", true).asName(), + new DataItemOption("求最大值", "max", true).asName(), + new DataItemOption("求最小值", "min", true).asName() ); private List options = Arrays.asList(new DataItemOption(NAME, KEY)); @@ -40,24 +41,14 @@ public class ModelAttrApiItem implements ViewApiItem { return NAME; } - @Override - public Object fetch(ViewApiParams params) { - return null; - } - @Override public int getOrder() { return ViewApiItem.super.getOrder() + 200; } @Override - public ViewApiItem init() { - final DataItemOption parent = options.get(0); - final List dataItemOptions = isvDataService.listProductOption(); - if(CollectionUtil.isNotEmpty(dataItemOptions)) { - dataItemOptions.forEach(parent::addChild); - } - return this; + public List fetch(List values, ViewApiParams params) { + return null; } @Override @@ -67,15 +58,33 @@ public class ModelAttrApiItem implements ViewApiItem { @Override public List loadOptions(String[] args) { - final List dataItemOptions = isvDataService.listModelAttrOption(args[1]); - if(CollectionUtil.isNotEmpty(dataItemOptions)) { - dataItemOptions.forEach(item -> { - calcOptions.forEach(calc -> item.addChild(calc)); - }); + List results = Collections.emptyList(); + if(args.length == 1) { + final List dataItemOptions = isvDataService.listProductOption(false); + if(CollectionUtil.isNotEmpty(dataItemOptions)) { + results = dataItemOptions; + dataItemOptions.forEach(child -> child.setValue(KEY + DataItemOption.SPLIT + child.getValue()).asName()); + } + } else if(args.length == 2) { + final List dataItemOptions = isvDataService.listModelAttrOption(args[1]); + if(CollectionUtil.isNotEmpty(dataItemOptions)) { + results = dataItemOptions; + final String keyPrefix = String.join(DataItemOption.SPLIT, args); + dataItemOptions.forEach(item -> { + item.setValue(keyPrefix + DataItemOption.SPLIT + item.getValue()); + calcOptions.forEach(calc -> { + try { + item.asName().addChild(calc.clone()); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + }); + }); + } } else { - return Collections.emptyList(); + } - return dataItemOptions; + return results; } } diff --git a/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/controller/ISVDataController.java b/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/controller/ISVDataController.java index 488c1ad3..fae1901f 100644 --- a/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/controller/ISVDataController.java +++ b/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/controller/ISVDataController.java @@ -1,16 +1,20 @@ package com.iteaj.iboot.plugin.iotview.controller; +import cn.hutool.core.collection.CollectionUtil; import com.iteaj.framework.result.Result; import com.iteaj.framework.spi.iot.view.ViewApiManager; +import com.iteaj.framework.spi.iot.view.ViewApiParams; +import com.iteaj.framework.spi.iot.view.ViewFetchResult; +import com.iteaj.iboot.plugin.iotview.FetchResult; import com.iteaj.iboot.plugin.iotview.IotViewResult; import com.iteaj.framework.spi.iot.view.DataItemOption; import com.iteaj.iboot.plugin.iotview.service.ISVDataService; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.ArrayList; +import java.util.Collections; import java.util.List; +import java.util.Objects; /** * 大屏数据管理 @@ -19,10 +23,10 @@ import java.util.List; @RequestMapping("/isv/data") public class ISVDataController { - private final ISVDataService ISVDataService; + private final ISVDataService isvDataService; - public ISVDataController(ISVDataService ISVDataService) { - this.ISVDataService = ISVDataService; + public ISVDataController(ISVDataService isvDataService) { + this.isvDataService = isvDataService; } /** @@ -42,4 +46,76 @@ public class ISVDataController { public Result> load(String key) { return IotViewResult.Success(ViewApiManager.loadOptions(key)); } + + /** + * 基础范围项 + * @return + */ + @GetMapping("/range/basic") + public Result> basic() { + List result = new ArrayList<>(); + final DataItemOption product = new DataItemOption("按产品", "product").asName(); + final DataItemOption group = new DataItemOption("按分组", "group").asName(); + final DataItemOption device = new DataItemOption("按设备", "device").asName(); + result.add(product); + result.add(group); + result.add(device); + result.add(0, new DataItemOption("所有设备", "all", true).asName()); + final List groupOptions = isvDataService.listGroupOption(); + final List productOptions = isvDataService.listProductOption(true); + if(CollectionUtil.isNotEmpty(groupOptions)) { + groupOptions.forEach(item -> group.addChild(item.setLeaf(true).asName())); + } + + if(CollectionUtil.isNotEmpty(productOptions)) { + productOptions.forEach(item -> { + try { + product.addChild(item.clone().asName().setLeaf(true)); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + }); + + productOptions.forEach(item -> { + try { + device.addChild(item.clone().asName()); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + }); + } + + return IotViewResult.Success(result); + } + + /** + * 加载范围配置项 + * @return + */ + @GetMapping("range/load") + public Result> rangeLoad(String key) { + final String[] args = key.split(DataItemOption.SPLIT); + if(Objects.equals(args[0], "device")) { + List devices = isvDataService.listDeviceOptions(args[1]); + if(CollectionUtil.isNotEmpty(devices)) { + + } + } + return IotViewResult.Success(Collections.EMPTY_LIST); + } + + /** + * 获取数据 + * @param params + * @return + */ + @PostMapping("fetch") + public Result> fetch(@RequestBody ViewApiParams params) { + try { + final List results = ViewApiManager.fetch(params); + return FetchResult.builder(params.getChart(), IotViewResult.Success(results)); + } catch (Exception e) { + return FetchResult.FailNotJump("获取数据异常"); + } + } } diff --git a/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/dto/DeviceStatusCountDto.java b/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/dto/DeviceStatusCountDto.java new file mode 100644 index 00000000..d817db6e --- /dev/null +++ b/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/dto/DeviceStatusCountDto.java @@ -0,0 +1,19 @@ +package com.iteaj.iboot.plugin.iotview.dto; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class DeviceStatusCountDto { + + /** + * 项值 + */ + private int value; + + /** + * 总值 + */ + private int total; +} diff --git a/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/mapper/ISVDataMapper.java b/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/mapper/ISVDataMapper.java index 334e82d6..aad56076 100644 --- a/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/mapper/ISVDataMapper.java +++ b/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/mapper/ISVDataMapper.java @@ -2,13 +2,17 @@ package com.iteaj.iboot.plugin.iotview.mapper; import com.baomidou.mybatisplus.core.mapper.Mapper; import com.iteaj.framework.spi.iot.view.DataItemOption; +import com.iteaj.iboot.plugin.iotview.dto.DeviceStatusCountDto; import java.util.List; public interface ISVDataMapper extends Mapper { - List listProductOption(); + List listProductOption(boolean hasGateway); - List listModelAttrOption(String productId); + List listModelAttrOption(String productCode); + List listGroupOption(); + + DeviceStatusCountDto countDeviceStatus(String status, String range, String rangeValue); } diff --git a/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/service/ISVDataService.java b/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/service/ISVDataService.java index 2639f299..0564946b 100644 --- a/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/service/ISVDataService.java +++ b/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/service/ISVDataService.java @@ -1,12 +1,19 @@ package com.iteaj.iboot.plugin.iotview.service; import com.iteaj.framework.spi.iot.view.DataItemOption; +import com.iteaj.iboot.plugin.iotview.dto.DeviceStatusCountDto; import java.util.List; public interface ISVDataService { - List listProductOption(); + List listProductOption(boolean isGateway); List listModelAttrOption(String productId); + + List listGroupOption(); + + List listDeviceOptions(String productCode); + + DeviceStatusCountDto countDeviceStatus(String status, String range, String rangeValue); } diff --git a/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/service/impl/ISVDataServiceImpl.java b/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/service/impl/ISVDataServiceImpl.java index 929d9b4c..3c488318 100644 --- a/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/service/impl/ISVDataServiceImpl.java +++ b/iboot-plugin/iboot-iotview/src/main/java/com/iteaj/iboot/plugin/iotview/service/impl/ISVDataServiceImpl.java @@ -1,6 +1,7 @@ package com.iteaj.iboot.plugin.iotview.service.impl; import com.iteaj.framework.spi.iot.view.DataItemOption; +import com.iteaj.iboot.plugin.iotview.dto.DeviceStatusCountDto; import com.iteaj.iboot.plugin.iotview.mapper.ISVDataMapper; import com.iteaj.iboot.plugin.iotview.service.ISVDataService; import org.springframework.stereotype.Service; @@ -17,12 +18,27 @@ public class ISVDataServiceImpl implements ISVDataService { } @Override - public List listProductOption() { - return isvDataMapper.listProductOption(); + public List listProductOption(boolean isGateway) { + return isvDataMapper.listProductOption(isGateway); } @Override - public List listModelAttrOption(String productId) { - return isvDataMapper.listModelAttrOption(productId); + public List listModelAttrOption(String productCode) { + return isvDataMapper.listModelAttrOption(productCode); + } + + @Override + public List listGroupOption() { + return isvDataMapper.listGroupOption(); + } + + @Override + public List listDeviceOptions(String productCode) { + return null; + } + + @Override + public DeviceStatusCountDto countDeviceStatus(String status, String range, String rangeValue) { + return isvDataMapper.countDeviceStatus(status, range, rangeValue); } } diff --git a/iboot-plugin/iboot-iotview/src/main/resources/mapper/iotview/ISVDataMapper.xml b/iboot-plugin/iboot-iotview/src/main/resources/mapper/iotview/ISVDataMapper.xml index 3f215c66..3255a630 100644 --- a/iboot-plugin/iboot-iotview/src/main/resources/mapper/iotview/ISVDataMapper.xml +++ b/iboot-plugin/iboot-iotview/src/main/resources/mapper/iotview/ISVDataMapper.xml @@ -5,20 +5,35 @@ - - + + + +