From b7dffda0bc50dad03ecb5cf265b1c6b970b86dd8 Mon Sep 17 00:00:00 2001
From: bestfeng1020 <31398465+bestfeng1020@users.noreply.github.com>
Date: Fri, 7 Apr 2023 17:34:26 +0800
Subject: [PATCH] =?UTF-8?q?feat(=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6):=20?=
=?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AE=BE=E5=A4=87=E6=9F=A5=E8=AF=A2=E6=9D=A1?=
=?UTF-8?q?=E4=BB=B6=E6=9E=84=E9=80=A0=E5=99=A8=20(#260)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../service/term/DeviceCategoryTerm.java | 65 ++++++++++++
.../service/term/DeviceInstanceTerm.java | 99 +++++++++++++++++++
.../term/DeviceProductInfoTermBuilder.java | 85 ++++++++++++++++
.../service/term/DeviceProtocolTerm.java | 34 +++++++
.../device/service/term/DeviceTypeTerm.java | 37 +++++++
5 files changed, 320 insertions(+)
create mode 100755 jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/term/DeviceCategoryTerm.java
create mode 100644 jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/term/DeviceInstanceTerm.java
create mode 100755 jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/term/DeviceProductInfoTermBuilder.java
create mode 100755 jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/term/DeviceProtocolTerm.java
create mode 100755 jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/term/DeviceTypeTerm.java
diff --git a/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/term/DeviceCategoryTerm.java b/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/term/DeviceCategoryTerm.java
new file mode 100755
index 00000000..b9f5e551
--- /dev/null
+++ b/jetlinks-manager/device-manager/src/main/java/org/jetlinks/community/device/service/term/DeviceCategoryTerm.java
@@ -0,0 +1,65 @@
+package org.jetlinks.community.device.service.term;
+
+import org.hswebframework.ezorm.core.param.Term;
+import org.hswebframework.ezorm.rdb.metadata.RDBColumnMetadata;
+import org.hswebframework.ezorm.rdb.operator.builder.fragments.PrepareSqlFragments;
+import org.hswebframework.ezorm.rdb.operator.builder.fragments.SqlFragments;
+import org.hswebframework.ezorm.rdb.operator.builder.fragments.term.AbstractTermFragmentBuilder;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 根据产品分类查询与产品关联的数据,如: 查询某个分类下的产品列表.
+ *
+ *
+ * 注意: 查询时指定列名是和产品ID关联的列或者实体类属性名.
+ * 如: 查询设备列表时则使用productId.
+ * 此条件仅支持关系型数据库中的查询.
+ *
+ *
+ * 在通用查询接口中可以使用动态查询参数中的term.termType来使用此功能.
+ * 查看动态查询参数说明
+ *
+ * 在内部通用条件中,可以使用DSL方式创建条件,例如:
+ *
+ * createQuery()
+ * .where()
+ * .and("productId","dev-prod-cat",cateId)
+ * .fetch()
+ *
+ *
+ * @author zhouhao
+ * @since 1.3
+ */
+@Component
+public class DeviceCategoryTerm extends AbstractTermFragmentBuilder {
+
+ public DeviceCategoryTerm() {
+ super("dev-prod-cat", "按产品品类查询");
+ }
+
+ @Override
+ public SqlFragments createFragments(String columnFullName, RDBColumnMetadata column, Term term) {
+
+ PrepareSqlFragments sqlFragments = PrepareSqlFragments.of();
+
+ List