数据字典接口文档.md 30 KB

术语说明:

平台级字典

通用的类型定于与信息点定义

集团级数据(集团级变更请求审核通过后形成的数据)

集团层面新增或编辑的类型与信息点数据

集团级字典

平台级字典与集团级数据的并集

集团方案

从集团级字典订阅类型与信息点后形成方案,是集团级字典的子集 集团可以配置任意个集团方案

项目级数据(项目级变更请求审核通过后形成的数据)

项目层面新增或编辑的信息点数据

项目级字典

项目所继承的集团方案包含的数据与项目级数据的并集 (继承:当集团方案变化时项目级字典也会同步发生变化)

应用订阅

应用在项目级字典中订阅类型与信息点

站在用户或数据字典使用方的角度来看数据字典有三层:平台级字典,集团级字典,项目级字典
类型相同或信息点相同时项目级字典优先级最高,集团级次之,平台级字典最低,优先级高的会覆盖优先级低的

使用数据字典时明确"使用的字典位于哪个层级"对需求的分析和理解会有很大帮助

集团级数据、集团方案、项目级数据是数据字典内部逻辑概念
应用和服务应该关注的是项目级字典和应用订阅内容

字段约定

字段 说明 备注
class 类型
funcid 信息点
classCode 类型定义的code: class.code
className 类型定义的name: class.name
infoCode 信息点定义的code: funcid.code
infoName 信息点定义的name: funcid.name
groupId 集团ID
projectId 项目ID
schemeId 集团方案ID

数据结构

类型 class

字段 数据类型 说明
code String 全局唯一
name String 类型名称
aliasCode String 类型别名编码, 集团下唯一
aliasName String 类型别名名称
type String 类别:平台级common,集团级group,项目级project
groupId String 集团id, type=group或type=project时该字段为集团id,否则为"0"
projectId String 集团id, type=project时该字段为项目id,否则为"0"
majorCode String 专业编码, 上级类型是系统or设备时该字段有值
systemCode String 系统编码,上级类型是设备时该字段有值,值为系统类型的code
parentCode String 上级类型code

信息点 funcid

字段 数据类型 说明
code String 信息点编码,同类型下唯一
name String 信息点名称
classCode String 类型编码
type String 字典级别:平台级common,集团级group,项目级project
category String 信息点分类:静态,脉冲,阶段,时序
groupId String 集团id, type=group或type=project时该字段为集团id,否则为"0"
projectId String 集团id, type=project时该字段为项目id,否则为"0"
firstTag String 一级标签
secondTag String 二级标签
priority String 优先级
inputMode String 输入方式
unit String 单位
dataType String 数据类型
isMultiple Boolean 是否复数
isRegion Boolean 是否区间
formater String 数据格式
dataSource String / Object[] 数据源取值范围/枚举值清单等,根据dataType有不同的内容
note String 备注
subFlag String 子分类标记:是否可以按此信息点进行子分类替换,同一类型下目前只支持一个子分类信息点

信息点数据类型

数据类型 类型名称 信息点分类 是否复数 是否区间 数据源 格式
INTEGER 整数 静态/脉冲/时序/阶段 true/false true/false {$gt:10, $lt:50}
DOUBLE 浮点型 静态/脉冲/时序/阶段 true/false true/false {$gte:10.1, $lt:50.9}
BOOLEAN 布尔值 静态/脉冲/时序/阶段 true/false false
STRING 字符串 静态/脉冲/时序/阶段 true/false false (字符串长度区间){$gt:10, $lt:50}
DATETIME 日期时间 静态/脉冲/时序/阶段 true/false true/false {$gt:'0915', $lt:'1031'} 'MMdd'
ENUM 单选枚举 静态/脉冲/时序/阶段 true/false false [{code: 'GC', name: '国产'},{code: 'JK', name: '进口'}]
MENUM 多选枚举 静态/脉冲/时序/阶段 true/false false [{code: 'GC', name: '国产'},{code: 'JK', name: '进口'}]
ATTACHMENT 附件 静态 true/false false pdf
OBJECT 对象 静态 true/false false 对象id

说明

把原来的data_type拆解成多个属性,减少了data_type种类数量
使用新的数据类型时,使用新的数据类型时,创建或编辑信息点需要明确指出数据类型、动静分类、是否复数、是否区间、长度(可选)、取值区间(可选)、格式(可选)
Tree、Topology、Route、Function四种类型不再支持(有需求再加回来)

动静分类(静态 STATIC、脉冲 PULSE、时序 SEQUENTIAL、阶段 GRADATION)应该是信息点的一个分类,不是数据类型的属性,放在这里是为了更直观更容易理解
根据动静分类区分动态量或静态量,静态量的值存储的是具体的数据,动态量的值存储的是表号-功能号,动态量包括脉冲量、时序量和阶段量
根据是否区间来判断存储的值是具体值还是区间, 比如INTEGER非区间的值12, 区间值[8, 15],为了区分开闭区间,这里实际存储为{$gt: 12, $lte: 15}, 其中$gt大于,$lt小于,$gte大于等于,$lte小于等于
根据是否复数区分存储的值是单个值还是多个值,单个值存储形式为xxx,多个值存储形式为[xxx, yyy],如果同时是复数和区间,存储的是多个区间
取值区间可以约束值的取值范围,可以通过取值区间做一次校验,如果是区间值,区间也应该是在取值区间的内部
统一用DATETIME表示日期和时间,通过格式设定具体存储的内容,格式由数据字典进行维护,物理世界存储的数据严格符合格式
格式是数据存储的数据格式或文件格式,对于日期时间附件对象等可进行校验
单选枚举Enum单数存储为GC, 复数存储为[GC, JK]
多选枚举MEnum单数存储为[GC, JK], 复数存储为[[GC], [GC,JK]], 多选枚举单数和单选枚举复数的存储形式一样应该不会出现问题,因为实际使用时是和类型(Enum,Menum)一起使用,

接口

基础接口: 专业

请求地址

POST: /major/query

请求参数

{
	"criteria": {
		"code": "AC"
	}
}

返回内容

{
    "result": "success",
    "count": 1,
    "data": [
        {
            "code": "AC",
            "name": "空调专业"
        }    
    ]
}

基础接口:类型查询

请求地址

POST: /class/query

请求参数

{
	"criteria": {
		"majorCode": "AC"
	}
}

请求参数说明

字段 说明
criteria
code 类型编码
type 分类:平台级common,集团级group,项目级project
groupId 集团id, type=group时必须传入该参数
projectId 项目id, type=project时必须传入该参数
parentCode 上级类型编码
majorCode 专业编码,查询系统or设备时可以传入该字段
systemCode 系统类型编码, 查询设备时可以传入该字段

返回内容

{
    "result": "success",
    "count": 2,
    "data": class[]  // 类型列表
}

基础接口:信息点查询

请求地址

POST: /funcid/query

请求参数

{
	"criteria": {
		"type": ["group"],
		"classCode": "ACCC"
	}
}

参数说明

字段 非空 描述
criteria Y
classCode Y 根据类型编码查询
type N 分类:平台级common,集团级group,项目级project
groupId N 集团id, type=group时必须传入该参数
projectId N 项目id, type=project时必须传入该参数
code N 信息点编码
name N
firstTag N 一级标签
secondTag N 二级标签
inputMode N

返回内容

{
    "result": "success",
    "count": 159,
    "data": funcid[] // 信息点列表
}

封装接口:类型树

请求地址

GET: /class

请求参数

参数名 说明
groupId 集团id 可选
schemeId 集团方案id 可选
projectId 项目id 可选
appId 应用id,传入appId时必须同时传入projectId 可选
subFlag true/false, 是否按分类信息点展示子分类 可选,默认false

返回参数

{
    "result": "success",
    "data": [
        {
            "code": "project",
            "name": "项目",
            "aliasCode": "project",
            "aliasName": "项目"
        },
        {
            "code": "system",
            "name": "系统",
            "aliasCode": "system",
            "aliasName": "系统",
            "children": [
                {
                    "code": "system-AC",
                    "name": "空调专业",
                    "aliasCode": "system-AC",
                    "aliasName": "空调专业",
                    "children": [
                        {
                            "code": "ACCH",
                            "name": "中央供热系统",
                            "aliasCode": "ACCH",
                            "aliasName": "中央供热系统",
                            "majorCode": "AC",
                            "parentCode": "system"
                        },
                        {
                            "code": "ACCC",
                            "name": "中央供冷系统",
                            "aliasCode": "ACCC",
                            "aliasName": "中央供冷系统",
                            "majorCode": "AC",
                            "parentCode": "system"
                        }
                    ]
                }
            ]
        },
        {
            "code": "equipment",
            "name": "设备",
            "aliasCode": "equipment",
            "aliasName": "设备",
            "children": [
                {
                    "code": "equipment-AC",
                    "name": "空调专业",
                    "aliasCode": "equipment-AC",
                    "aliasName": "空调专业",
                    "children": [
                        {
                            "code": "equipment-ACCH",
                            "name": "中央供热系统",
                            "aliasCode": "equipment-ACCH",
                            "aliasName": "中央供热系统",
                            "children": [
                                {
                                    "code": "ACCHCL",
                                    "name": "供热集水器",
                                    "aliasCode": "ACCHCL",
                                    "aliasName": "供热集水器",
                                    "majorCode": "AC",
                                    "systemCode": "ACCH",
                                    "parentCode": "equipment"
                                }
                            ]
                        },
                        {
                            "code": "equipment-ACCC",
                            "name": "中央供冷系统",
                            "aliasCode": "equipment-ACCC",
                            "aliasName": "中央供冷系统",
                            "children": [
                                {
                                    "code": "ACCCWT",
                                    "name": "供冷水箱",
                                    "aliasCode": "ACCCWT",
                                    "aliasName": "供冷水箱",
                                    "majorCode": "AC",
                                    "systemCode": "ACCC",
                                    "parentCode": "equipment"
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

封装接口:信息点

请求地址

GET: /funcid

请求参数

参数名 说明
classCode 类型编码 必选
groupId 集团id 可选
schemeId 集团方案id 可选
projectId 项目id 可选
appId 应用id,传入appId时必须同时传入projectId 可选

请求参数说明

1.传入projectId是必须同时传入groupId
2.传入projectId时对应项目必须已配置集团方案,schemeId可以不传,否则报错"当前项目未配置集团方案"
3.传入appId时必须同时传入projectId

返回参数

{
    "result": "success",
    "count": 159,
    "data": funcid[] // 信息点列表
}

基础接口: 提交变更请求

请求地址

POST: /req/create

请求参数

{
    "type": "group",
    "groupId": "WD",
    "projectId": "pj01",
    "note": "变更原因",
    "createUser": "f0bcc7a79f7043f9a16812b5f80580d2",
    "classes": [{
        "code": "类型编码",
        "name": "类型名称",
        "aliasCode": "",
        "aliasName": "",
        "parentCode": "",
        "majorCode": "",
        "systemCode": "",
        "note": "",
        "funcids": [{
            "code": "",
            "name": "",
            "firstTag": "",
            "secondTag": "",
            "unit": "",
            "dataType": "",
            "priority": "",
            "inputMode": "",
            "dataSource": "",
            "subFlag": false,
            "note": ""
        }]
    }]
}

请求参数说明

字段 类型 说明
type String group/project
groupId String 集团id, 不可为空
projectId String 项目id, type=project时不可为空
note String 变更原因说明
createUser String 提交人id,不可为空
classes Object[] 不可为空且长度>0
code String 不可为空
name String
aliasCode String
aliasName String
parentCode String
majorCode String
systemCode String
note String
funcids Object[]
code String 不可为空
name String
firstTag String
secondTag String
unit String
dataType String
priority String
inputMode String
dataSource String
subFlag Boolean
note String

接口逻辑说明:

1.type=group为集团级变更, type=project为项目级变更

2.classes不可为空且长度必须>0
若classes.code存在(从集团级字典判断)则为修改:
	name不可修改(传入也无效), 其他字段根据传入值进行修改, 不传则不修改
若classes.code不存在则为新增:
	code、name、parentCode不可为空
	parentCode=system时majorCode不可为空
	parentCode=equipment时majorCode、systemCode不可为空

3.funcids存在且长度>0时,根据classes.code进行判断
若funcids.code存在则为修改:
	所有字段都可以修改,根据传入值进行修改,不传则不修改
若funcids.code不存在则为新增:
	code、name、unit、dataType、inputMode、dataSource、subFlag不可为空

返回参数

{
    "result": "success",
    "data": {
    		"id": 123
    }
}

返回参数说明

字段 类型 说明
id Int 变更ID

基础接口: 审核变更请求

请求地址

POST: /req/audit

请求参数

{
    "id": 123,
    "status": 2,
    "applyUser": "f0bcc7a79f7043f9a16812b5f80580d2"
}

请求参数说明

字段 类型 说明
id Int 变更ID,不可为空
status Int 状态: 1待审核,2审核通过, 3审核不通过
applyUser String 审核人id

返回内容

{
    "result": "success",
}

基础接口: 查询变更请求

请求地址

POST: /req/query

请求参数

{
    "criteria": {
        "id": 123,
        "type": "project",
        "groupId": "WD",
        "projectId": "pj01",
        "status": 2,
        "createTime": {
                "$gt": "20200330120000"
        },
        "applyTime": {
                "$gt": "20200330120000"
        },
    },
    "withColumns": [ "classes", "funcids" ]
}

请求参数说明

字段 说明
criteria
id 变更ID
type 分类:集团级group,项目级project
groupId 集团id, type=group时必须传入该参数
projectId 项目id, type=project时必须传入该参数
status 状态: 1待审核,2审核通过, 3审核不通过
createTime 提交时间
creatUser 申请提交人
applyTime 审核时间
applyUser 申请审核人
withColumns
classes 返回申请的类型数据
funcids 返回申请的类型的信息点数据,必须同时指定返回classes

返回内容

{
	"result": "success",
	"data": [{
        "id": 123,
        "type": "group",
        "groupId": "WD",
        "projectId": "pj01",
        "note": "变更原因",
        "userId": "提交用户",
        "status": 2,
        "createTime": 1585014171013,
        "createUser": "f0bcc7a79f7043f9a16812b5f80580d2",
        "applyTime": 1585014190419,
        "applyUser": "f0bcc7a79f7043f9a16812b5f80580d2",
        "classes": [{
            "code": "类型编码",
            "name": "类型名称",
            "optType": "create/update",
            "aliasCode": "",
            "aliasName": "",
            "parentCode": "",
            "majorCode": "",
            "systemCode": "",
            "note": "",
            "funcids": [{
                "optType": "create/update",
                "code": "",
                "name": "",
                "firstTag": "",
                "secondTag": "",
                "unit": "",
                "dataType": "",
                "priority": "",
                "inputMode": "",
                "dataSource": "",
                "subFlag": false,
                "note": ""
            }]
        }]
    }
]}

返回内容说明

字段 类型 说明
status int 状态: 1待审核,2审核通过, 3审核不通过
createUser string 申请人id
createTime long 申请提交时间
applyUser string 审核人id, status=1时为空
applyTime long 审核时间
classes.optType string 操作类型: create新增,update更新
classes.funcids.optType string 操作类型: create新增,update更新
... 其他字段与申请提交的入参相同

基础接口:批量添加应用订阅信息

请求地址

POST: /app/funcid/add?groupId=SN&projectId=Pj01&app=test&classCode=project

请求参数

["ProjUnderArea","Group"]
参数名 说明 备注
classCode 类型编码 必填
groupId 集团id 必填
projectId 项目id 必填
app 应用id 必填
json参数 信息点列表 列表size大于0

返回参数

{
    "result": "success"
}

基础接口:批量删除应用订阅信息

请求地址

POST: /app/funcid/remove?groupId=SN&projectId=Pj01&app=test&classCode=project

请求参数

["ProjUnderArea","Group"]
参数名 说明 备注
classCode 类型编码 必填
groupId 集团id 必填
projectId 项目id 必填
app 应用id 必填
json参数 信息点列表 列表size大于0

返回参数

{
    "result": "success"
}

基础接口:批量添加应用订阅类型

请求地址

POST: /app/class/add?groupId=SN&projectId=Pj01&app=test

请求参数

["ProjUnderArea","Group"]
参数名 说明 备注
groupId 集团id 必填
projectId 项目id 必填
app 应用id 必填
json参数 类型列表 列表size大于0

返回参数

{
    "result": "success"
}

基础接口:批量删除应用订阅类型

请求地址

POST: /app/class/remove?groupId=SN&projectId=Pj01&app=test

请求参数

["ProjUnderArea","Group"]
参数名 说明 备注
groupId 集团id 必填
projectId 项目id 必填
app 应用id 必填
json参数 类型列表 列表size大于0

返回参数

{
    "result": "success"
}

基础接口:批量添加方案订阅信息

请求地址

POST: /scheme/funcid/add?schemeId=test&classCode=project

请求参数

["ProjUnderArea","Group"]
参数名 说明 备注
classCode 类型编码 必填
schemeId 方案id 必填
json参数 信息点列表 列表size大于0

返回参数

{
    "result": "success"
}

基础接口:批量删除方案订阅信息

请求地址

POST: /scheme/funcid/remove?projectId=Pj01&schemeId=test&classCode=project

请求参数

["ProjUnderArea","Group"]
参数名 说明 备注
classCode 类型编码 必填
projectId 项目id 必填
schemeId 方案id 必填
json参数 信息点列表 列表size大于0

返回参数

{
    "result": "success"
}

基础接口:批量添加方案订阅类型

请求地址

POST: /scheme/class/add?schemeId=test

请求参数

["ProjUnderArea","Group"]
参数名 说明 备注
schemeId 方案id 必填
json参数 类型列表 列表size大于0

返回参数

{
    "result": "success"
}

基础接口:批量删除方案订阅类型

请求地址

POST: /scheme/class/romove?schemeId=test

请求参数

["ProjUnderArea","Group"]
参数名 说明 备注
schemeId 方案id 必填
json参数 类型列表 列表size大于0

返回参数

{
    "result": "success"
}