diff --git a/bootstrap/src/main/java/com/iteaj/iboot/module/iot/collect/model/DataPersistenceListener.java b/bootstrap/src/main/java/com/iteaj/iboot/module/iot/collect/model/DataPersistenceListener.java index b295f1d9..31c7c55b 100644 --- a/bootstrap/src/main/java/com/iteaj/iboot/module/iot/collect/model/DataPersistenceListener.java +++ b/bootstrap/src/main/java/com/iteaj/iboot/module/iot/collect/model/DataPersistenceListener.java @@ -31,6 +31,9 @@ public interface DataPersistenceListener extends EventGroupCollectListener, Mode .setCollectTime(value.getCollectTime()) .setCollectStatus(value.getStatus()) .setUid(device.getUid()) + .setProductCode(device.getProductCode()) + .setProtocolCode(device.getProtocolCode()) + .setDeviceGroupId(device.getDeviceGroupId()) .setField(value.getSignalOrField()) .setFieldName(value.getSignalOrField()) ); @@ -51,6 +54,7 @@ public interface DataPersistenceListener extends EventGroupCollectListener, Mode if(CollectionUtil.isNotEmpty(info.getInfos())) { long cid = UniqueIdGen.nextLong(); // 声明同一组 info.getInfos().forEach(item -> { + final RealtimeStatus device = item.getDevice(); DataSupplier supplier = item.getSupplier(); if(CollectionUtil.isNotEmpty(supplier.getValues())) { supplier.getValues().forEach(value -> { @@ -59,10 +63,13 @@ public interface DataPersistenceListener extends EventGroupCollectListener, Mode .setCid(cid + "").setStatus(true).setReason("") .setCreateTime(new Date()).setValue(strValue) .setAddress(value.getAddress()) - .setUid(item.getDevice().getUid()) + .setUid(device.getUid()) .setSignalId(value.getId()) .setCollectStatus(value.getStatus()) .setField(value.getSignalOrField()) + .setProductCode(device.getProductCode()) + .setProtocolCode(device.getProtocolCode()) + .setDeviceGroupId(device.getDeviceGroupId()) .setFieldName(value.getSignalOrField()) .setCollectTime(supplier.getCollectTime()) .setCollectTaskId(info.getSource().getId()); diff --git a/bootstrap/src/main/java/com/iteaj/iboot/module/iot/entity/CollectData.java b/bootstrap/src/main/java/com/iteaj/iboot/module/iot/entity/CollectData.java index 7590428d..9a39da3c 100644 --- a/bootstrap/src/main/java/com/iteaj/iboot/module/iot/entity/CollectData.java +++ b/bootstrap/src/main/java/com/iteaj/iboot/module/iot/entity/CollectData.java @@ -94,6 +94,24 @@ public class CollectData extends BaseEntity implements RealtimeCollectData { @IotField(value = "create_time", type = 93) private Date createTime; + /** + * 产品码 + */ + @IotField(value = "product_code") + private String productCode; + + /** + * 协议码 + */ + @IotField(value = "protocol_code") + private String protocolCode; + + /** + * 所属组 + */ + @IotField(value = "device_group_id") + private Long deviceGroupId; + /** * 采集状态 */ @@ -126,19 +144,4 @@ public class CollectData extends BaseEntity implements RealtimeCollectData { public Long getTaskId() { return getCollectTaskId(); } - - @Override - public String getProtocolCode() { - return null; - } - - @Override - public String getProductCode() { - return null; - } - - @Override - public Long getDeviceGroupId() { - return null; - } } diff --git a/bootstrap/src/main/resources/mapper/iot/CollectDataMapper.xml b/bootstrap/src/main/resources/mapper/iot/CollectDataMapper.xml index 7268484a..18d0208e 100644 --- a/bootstrap/src/main/resources/mapper/iot/CollectDataMapper.xml +++ b/bootstrap/src/main/resources/mapper/iot/CollectDataMapper.xml @@ -220,7 +220,7 @@ ) - where field = #{field} and (UNIX_TIMESTAMP(collect_time) * 1000 between #{startTime} and #{endTime}) and uid in ( + where product_code=#{productCode} and field = #{field} and (UNIX_TIMESTAMP(collect_time) * 1000 between #{startTime} and #{endTime}) and uid in ( #{uid} @@ -282,7 +282,7 @@ select min(value) value, field, uid from iot_collect_data - where field = #{field} and (UNIX_TIMESTAMP(collect_time) * 1000 between #{startTime} and #{endTime}) and uid in ( + where product_code=#{productCode} and field = #{field} and (UNIX_TIMESTAMP(collect_time) * 1000 between #{startTime} and #{endTime}) and uid in ( #{uid} diff --git a/docs/sql/patch.sql b/docs/sql/patch.sql index 4f9f39d7..c012d516 100644 --- a/docs/sql/patch.sql +++ b/docs/sql/patch.sql @@ -12,4 +12,22 @@ create table isv_project ( content json null comment '项目内容', create_time datetime default now() not null comment '创建时间', constraint isv_project_pk primary key (id) -) comment '大屏项目'; \ No newline at end of file +) comment '大屏项目'; + +alter table iot_collect_data + add product_code varchar(64) null comment '产品编码'; + +alter table iot_collect_data + add protocol_code varchar(64) null comment '协议编码'; + +alter table iot_collect_data + add device_group_id bigint null comment '所属组'; + +create index iot_collect_data_device_group_id_index + on iot_collect_data (device_group_id); + +create index iot_collect_data_protocol_code_index + on iot_collect_data (protocol_code); + +create index iot_collect_data_product_code_index + on iot_collect_data (product_code); \ No newline at end of file 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 675d99c4..2c67b25a 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 @@ -35,7 +35,7 @@ public class ViewApiParams { private List timeRange; /** - * 值条件 + * 数据项 */ private List values; @@ -69,7 +69,7 @@ public class ViewApiParams { this.range = split[0]; } else if(split.length > 1) { this.range = split[0]; - this.ranges = Arrays.asList(split[1].split(",")); + this.ranges = Arrays.asList(split[split.length - 1].split(",")); } else { } diff --git a/framework/src/main/java/com/iteaj/framework/spi/iot/view/ViewSqlCondition.java b/framework/src/main/java/com/iteaj/framework/spi/iot/view/ViewSqlCondition.java index 5b219758..3bde4040 100644 --- a/framework/src/main/java/com/iteaj/framework/spi/iot/view/ViewSqlCondition.java +++ b/framework/src/main/java/com/iteaj/framework/spi/iot/view/ViewSqlCondition.java @@ -51,9 +51,11 @@ public class ViewSqlCondition { public static ViewSqlCondition build(String productCode, String field, String calcType, ViewApiParams params) { List ranges = params.getRanges(); - if(Objects.equals("all", params.getRange())) { - if(Objects.equals("range", params.getCategory())){ + if(Objects.equals("range", params.getCategory())){ + if(Objects.equals("all", params.getRange())) { throw new ServiceException("按范围的产品轴不能选用所有范围"); + } else if(CollectionUtil.isEmpty(ranges)) { + throw new ServiceException("按范围必须选择范围配置"); } } 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 45efd2db..607ea996 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 @@ -62,7 +62,7 @@ public class ISVDataController extends BaseController { result.add(product); result.add(group); result.add(device); - result.add(0, new DataItemOption("所有设备", "all", true).asName()); + result.add(0, new DataItemOption("按所有", "all", true).asName()); final List groupOptions = isvDataService.listGroupOption(); final List productOptions = isvDataService.listProductOption(true); if(CollectionUtil.isNotEmpty(groupOptions)) {