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)) {