query.md 8.8 KB

查询

请求体 json

web dev ::: details 查看代码

{
  "Cascade": [
    {
      "Cascade": [
        null
      ],
      "Distinct": true,
      "Filters": "string",
      "Group": {
        "AvgList": [
          "string"
        ],
        "Count": true,
        "MaxList": [
          "string"
        ],
        "MinList": [
          "string"
        ],
        "NameList": [
          "string"
        ],
        "SumList": [
          "string"
        ]
      },
      "Name": "string",
      "Orders": "name asc, createTime desc",
      "Projection": [
        "string"
      ]
    }
  ],
  "Distinct": true,
  "Filters": "string",
  "Group": {
    "AvgList": [
      "string"
    ],
    "Count": true,
    "MaxList": [
      "string"
    ],
    "MinList": [
      "string"
    ],
    "NameList": [
      "string"
    ],
    "SumList": [
      "string"
    ]
  },
  "Orders": "name asc, createTime desc",
  "PageNumber": 1,
  "PageSize": 50,
  "Projection": [
    "string"
  ]
}

:::

应答 json

::: details 查看代码 ```metadata json {

"Content":[
    {
        "EquipID":"Eq3702020002f9052971335b417b896c73bdcd832f2d",
        "EquipLocalId":"CCTV-15F-06-05",
        "BimId":"Pj37020200023d180a0a876a11eaad60abc9d54aea48F20:8240980",
        "BimLocation":"-106089.73,64853.35,92300.0"
    }
],
"Message":"接口失败会返回原因",
"PageNumber":1,
"PageSize":50,
"Result":"success",
"Total":1

}

:::
## 分页

PageNumber 请求页码 Int 值 默认 1

PageSize 请求条数 Int 值 默认 50 条

通用接口中 PageSize 请求条数最大为 1000,为了避免大量的数据请求占用过多的资源,减少带宽

## 过滤条件
Filters 中编写过滤条件 例如:
```metadata json ${2}
{
  "Filters": "ProjectId = 'Pj3702020002'; Category = 'FSSN' ",
  "PageNumber": 1,
  "PageSize": 50
}

分号(;代表 and )还可以使用 and 来查询,例如: ```metadata json ${2} { "Filters": "ProjectId = 'Pj3702020002' and Category = 'FSSN' ", "PageNumber": 1, "PageSize": 50 }

更多详细查询条件以及操作符使用参考 [ “过滤条件” 操作符介绍](./filters)

## 排序
Orders 排序,默认升序 asc 可以多字段排序,升序 asc  降序 desc,例如:

```metadata json ${5}
{
  "Filters": "ProjectId = 'Pj3702020002' and Category = 'FSSN' ",
  "PageNumber": 1,
  "PageSize": 50,
  "Orders": "EquipName, CreateTime desc"
}

多字段排序从前往后依次按照 Orders 中的条件排序返回结果。

指定应答属性

Projection 指定后返回的属性,有些时候并不想把某些对象所有信息点都查出来,只是用几个属性,提高数据交互质量可以指定需要的属性,例如: ```metadata json ${5-7} { "Filters": "ProjectId = 'Pj3702020002' and Category = 'FSSN' ", "PageNumber": 1, "PageSize": 50, "Projection": [

  "EquipID","EquipName","EquipLocalId","EquipLocalName","Category"
]

}

如上面的请求体就会返回 Projection 中指定的属性

## 去重
数据统计的时候会用到这个功能,比如统计某一个楼层下有多少种设备类型
``` json ${2}
{
  "Distinct": true,
  "Filters": "ProjectId = 'Pj4101020002';FloorId = 'Fl410102000212f498f8128147a7bfdb853e80bd5596'",
  "PageNumber": 1,
  "PageSize": 50,
  "Projection": [
    "Category"
  ]
}

返回结果 ```metadata json { "Content": [

{
  "Category": "AEOV"
},
{
  "Category": "ATFC"
}

], "Message": "", "PageNumber": 1, "PageSize": 2, "Result": "success", "Total": 20 }

去重是不根据 Projection 指定返回的属性去重的,如果返回的字段中包含id,是无法去重的,因为id通常是唯一的,去重是根据指定返回的字段为一个从整体去重的。

## 级联查询
级联查询:在查询某一个对象的时候想要知道和这个对象有关系的有哪些对象,可以通过级联查询来操作,例如查询设备,以及所在的业务空间:
请求体
```json ${2-6}
{
  "Cascade": [
    {
      "Name": "zoneSpaceInBase"
    }
  ],
  "Filters": "ProjectId = 'Pj1101020002' and EquipID = 'Eq11010200020321acc7e6f311e88ca4e5a21975b346' ",
  "PageNumber": 1,
  "PageSize": 50
}

返回结果 ```metadata json { "Content": [

{
  "BuildingId": "Bd110102000223fbec0accfb11e8a471b5d1be3b6dfe",
  "Category": "ATFU",
  "CreateTime": "2019-06-19 12:57:11",
  "EquipID": "Eq11010200020321acc7e6f311e88ca4e5a21975b346",
  "EquipLocalID": "ATFU-TOP-N",
  "EquipLocalName": "楼顶北新风机组",
  "EquipName": "新风机组-E5L73",
  "EquipQRCode": "9ca5b7b0daab49999d602ac4ccdcf105",
  "LastUpdate": "2020-08-18 15:20:57",
  "ProjectId": "Pj1101020002",
  "ZoneSpaceBaseIn": [
    {
      "BuildingId": "Bd110102000223fbec0accfb11e8a471b5d1be3b6dfe",
      "FloorId": "Fl1101020002fbdcd07ed5cb11e88bee4dbb551fd992",
      "LastUpdate": "2020-07-17 17:17:19",
      "ObjectType": "GeneralZone",
      "ProjectId": "Pj1101020002",
      "RoomFuncType": "311",
      "RoomID": "Sp11010200024fdbd800e0aa11e88bee13864ca4ba47",
      "RoomLocalID": "7F-A801-1",
      "RoomLocalName": "A-801总裁室",
      "RoomName": "空间-ISRWU",
      "RoomQRCode": "2012bb68-2c9a-4bcc-a9a4-e0128634bf65"
    }
  ]
}

], "Message": "", "PageNumber": 1, "PageSize": 50, "Result": "success", "Total": 1 }

ZoneSpaceBaseIn 中的数据就是当前设备所在的业务空间

级联的关系数据也支持 Filters 条件查询 Orders 排序 Projection 指定返回的字段,去重 Distinct ,级联出来的空间对象内部还可以继续级联

{ "Cascade": [

{
    "Cascade": [
         "Name": "generalSystem"
     ],
  "Name": "zoneSpaceInBase"
}

], "Filters": "ProjectId = 'Pj1101020002' and EquipID = 'Eq11010200020321acc7e6f311e88ca4e5a21975b346' ", "PageNumber": 1, "PageSize": 50 }

上面的例子是查询设备 ,设备坐在的业务空间,业务空间和系统的关系,返回结构和上面的类似,在空间的数据中会出现系统的实例数据

## 综合示例
查询某一楼层下的低压开关柜设备,使用创建时间加设备 ID 排序升序,指定返回字段为 EquipID EquipName Category EquipLocalID EquipLocalName
返回数量为100条 ,顺便查出来设备所在的默认业务空间,设备下的部件,设备关联的资产,设备和竖井的关系实例,竖井指定返回id和名称,示例如下:

```metadata json
{
  "Cascade": [
    {
      "Filters": "ObjectType = 'GeneralZone'",
      "Name": "zoneSpaceInBase"
    },
    {
      "Name": "component"
    },
    {
      "Name": "property"
    },
     {
      "Name": "shaft",
        "Projection": [
         "ShaftID", "ShaftName"
         ]
     }
  ],
  "Filters": "ProjectId = 'Pj4101020002';FloorId = 'Fl410102000212f498f8128147a7bfdb853e80bd5596'; Category = 'TDLS'",
  "Orders": "CreateTime asc,EquipID asc",
  "PageNumber": 1,
  "PageSize": 50,
  "Projection": [
    "EquipID", "EquipName", "Category", "EquipLocalID", "EquipLocalName"
  ]
}

返回结果

```metadata json {

"Content":[
    {
        "Category":"TDLS",
        "EquipID":"Eq11010200020321acc7e6f311e88ca4e5a21975b346",
        "EquipLocalID":"ATFU-TOP-N",
        "EquipLocalName":"楼顶北低压开关柜",
        "EquipName":"低压开关柜-E5L73",
        "ZoneSpaceBaseIn":[
            {
                "BuildingId":"Bd110102000223fbec0accfb11e8a471b5d1be3b6dfe",
                "FloorId":"Fl1101020002fbdcd07ed5cb11e88bee4dbb551fd992",
                "ObjectType":"GeneralZone",
                "ProjectId":"Pj1101020002",
                "RoomFuncType":"311",
                "RoomID":"Sp11010200024fdbd800e0aa11e88bee13864ca4ba47",
                "RoomLocalID":"7F-A801-1",
                "RoomLocalName":"A-801室",
                "RoomName":"空间-ISRWU",
            }
        ],
        "component":[
            {
                "Category":"TDLSDW",
                "EquipID":"Ec11010200020321acc7e6f311e88ca4e5a21975b303",
                "EquipLocalID":"ATFU-TOP-N-0",
                "EquipLocalName":"楼顶北低压开关柜抽屉"
            }
        ],
        "property":{
            "Category":"LSA",
            "EquipID":"Pe11010200020321acc7e6f311e88ca4e5a21975b340",
            "EquipLocalID":"ATFU-TOP-N",
            "EquipLocalName":"楼顶北低压开关柜"
        },
        "shaftList":[
            {
                "ShaftID":"Sh11010200020321acc7e6f311e88ca4e5a21975b349",
                "ShaftName":"楼梯间"
            }
        ]
    }
],
"Message":"",
"PageNumber":1,
"PageSize":50,
"Result":"success",
"Total":1

} ```