CN103577610B - 一种实现自定义报表中查询条件联动的方法 - Google Patents
一种实现自定义报表中查询条件联动的方法 Download PDFInfo
- Publication number
- CN103577610B CN103577610B CN201310598182.2A CN201310598182A CN103577610B CN 103577610 B CN103577610 B CN 103577610B CN 201310598182 A CN201310598182 A CN 201310598182A CN 103577610 B CN103577610 B CN 103577610B
- Authority
- CN
- China
- Prior art keywords
- component
- script
- function
- querying condition
- self
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开一种实现自定义报表中查询条件联动的方法,自定义报表查询条件,由于输入条件的界面组件由用户自己布局与定义,同时组件之间的联动逻辑也由用户自己定义,这就存在两个可变逻辑:一个是组件布局与定义逻辑;二是组件联动逻辑。本发明进行脚本设计与解析,通过脚本函数的灵活组合实现所述两个可变逻辑的表述,通过脚本解析引擎对脚本的解析,实现表述两个动态逻辑的逻辑功能,这样用户可以在自定义报表中通过脚本编写实现报表查询条件中需要的业务逻辑功能。
Description
技术领域
本发明涉及一种脚本设计与解析方法,具体是一种实现自定义报表中查询条件联动的方法,属于计算机领域。
背景技术
在自定义报表开发设计中,查询条件之间会存在相互关联,存在联动关系,联动关系包含:
1.当一个条件组件输入条件值,刚失去焦点时,其它条件组件根据这个输入的值进行数据更新;
2.当一个条件组件输入条件值,刚失去焦点时,其它条件组件能够自动隐藏与显示,实现界面自动布局;
3.当一个条件组件输入条件值,刚失去焦点时,其它条件组件能够自动变成允许输入状态与不允许输入状态;
4.当一个条件组件输入条件值,刚失去焦点时,其它条件组件能够自动改变颜色。
自定义报表查询条件,由于输入条件的界面组件由用户自己布局与定义,同时组件之间的联动逻辑也由用户自己定义,这就存在两个可变逻辑:一个是组件布局与定义逻辑;二是组件联动逻辑。按照传统报表设计逻辑,这两个可变逻辑通过编写程序代码,根据不同报表,实现对应报表的这两个可变逻辑功能,这就导致传统报表设计逻辑不能应用于自定义报表条件联动逻辑设计。
发明内容
发明目的:针对现有技术中存在的问题,本发明提供一种实现自定义报表中查询条件联动的方法。通过脚本函数的灵活组合实现上述提及的两个动态逻辑的表述,通过脚本解析引擎对脚本的解析,实现表述两个动态逻辑的逻辑功能,这样用户可以在自定义报表中通过脚本编写实现报表查询条件中需要的业务逻辑功能。
技术方案:一种实现自定义报表中查询条件联动的方法,在自定义报表中设计的查询条件联动,主要包含如下功能:
一个查询条件组件值改变,另外查询条件组件值数据更新;
一个查询条件组件值改变,另外查询条件组件可编辑状态改变;
一个查询条件组件值改变,另外查询条件组件显示与隐藏,实现动态布局;
在自定义报表设计中,由于查询条件组件设计是报表设计人员根据报表需求而进行逻辑设计与布局,因此报表查询条件组件对象动态可变,不同报表有不同组件对象,通过联动功能以及查询条件组件对象动态可变的关系,在实际自定义报表设计中就存在两个可变逻辑:一个是组件布局与定义逻辑;二是组件联动逻辑。
在自定义报表查询条件设计中,每个查询条件组件设置一个唯一的ID属性,用于标识当前的查询条件组件。查询联动总体思路为:通过脚本语言,结合查询条件唯一的ID属性,获取每一个查询条件组件实例,通过实例携带的脚本函数,实现函数提供的3种联动功能的组合,实现自定义报表的查询联动功能。
自定义报表查询条件联动包含5个功能部分:
1.联动脚本设计
在自定义报表条件组件设计中,每个组件提供两个事件,一个编辑后事件,另一个值改变事件,每个事件中可以设置事件对应的脚本,通过脚本组合表示查询条件之间的联动关系与联动功能,为了脚本的可扩充性与易用性,脚本使用javascript语言进行编写,脚本编写规则与javascript语言编写规则保持一致,但增加两个限制,一是一条语句占用一行,二是每条语句用分号分隔。脚本需要提供获取组件对象函数、数据更新函数、组件可编辑状态函数、组件隐藏以及组件设值函数。本发明方法提供了针对如上需求的各种函数如下:
1.1 获取组件对象函数
getElementById(组件id):通过组件ID获取查询条件组件实例
1.2 数据更新函数
组件实例.DataUpdate();
1.3 组件可编辑状态函数
组件实例.Enable():使组件可编辑;
组件实例.Disable():使组件不可编辑;
1.4 组件隐藏函数
组件实例.Visible():使组件可见;
组件实例.Invisible():使组件不可见;
1.5 组件设值函数
组件实例.setValue(“值”);
1.6 组件设置颜色函数
组件实例.setColorValue(“值”);
2.组件对象创建;
在自定义报表中设置查询条件组件时,每个组件设置一个唯一属性ID,在创建自定义报表时,解析设置的自定义报表查询条件组件,并为每个组件创建一个实例,每个实例设置对应的组件属性ID。根据解析结果,每个组件设置对应的事件,在事件中调用脚本解析引擎,对组件设置的脚本进行解析。
3.对应脚本函数功能实现
3.1 获取组件对象函数
getComponentObj(String objId):通过ID,获取第2功能部分创建的组件实例,并刷新界面显示。
3.2 数据更新函数
DataUpdate(String objId):通过id,获取设置的SQL脚本或数组值对,从数据库中获取数据或根据过滤值,过滤数组值对中的数据,并刷新界面显示。
3.3 组件可编辑状态函数
enable(String objId):通过id,设置对应组件为可编辑状态,并刷新界面显示;
Disable(String objId):通过id,设置对应组件为不可编辑状态,并刷新界面显示。
3.4 组件隐藏函数
Visible(String objId):通过id,设置对应组件为可见状态,并刷新界面显示;
Invisible(String objId):通过id,设置对应组件为不可见状态,并刷新界面显示。
3.5 组件设值函数
setValue(String objId, String sValue) :通过id,设置对应组件值为sValue,并刷新界面显示。
3.6 组件设置颜色函数
setColorValue(String objId, String sColorValue) :通过id,设置对应组件颜色值为sColorValue,并刷新界面显示。
4.脚本解析;
根据第2个功能部分,组件每个事件对应于一段组件联动逻辑脚本,报表中对应事件被解析时,通过把该事件对应的联动逻辑脚本传递给脚本解析引擎,通过脚本解析引擎对脚本进行一一解析,获取每个脚本的功能函数,脚本解析引擎流程为:
4.1 把脚本按照换行符进行分割,解析为脚本语句数组;
4.2 循环读取每一行数组,执行每一行脚本;
4.3 如果当前行的脚本时if表达式,进行if表达式有效段的截取;
4.4 判断当前行是否是有效段,如果是有效段,解析当前行脚本,如果是if表达式,执行4.3,如果不是,则进行正则表达式匹配提起对应的脚本功能;
4.5 调用对应脚本功能函数;
4.6 实现该脚本功能
4.7 循环4.2至4.6。
5.解析结果执行;
根据第3功能部分获取的功能函数,执行对应的功能函数,对界面组件进行逻辑控制,实现自定义报表查询条件联动功能。
有益效果:与现有技术相比,本发明提供的实现自定义报表中查询条件联动的方法,通过脚本函数的灵活组合实现上述提及的两个动态逻辑的表述,通过脚本解析引擎对脚本的解析,实现表述两个动态逻辑的逻辑功能,这样用户可以在自定义报表中通过脚本编写实现报表查询条件中需要的业务逻辑功能。
附图说明
图1为本发明实施例的自定义报表查询条件按联功能图;
图2为本发明实施例的脚本解析流程图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
如图1所示,实现自定义报表中查询条件联动的方法为:
在自定义报表查询条件设计中,每个查询条件组件设置一个唯一的ID属性,用于标识当前的查询条件组件。
自定义报表查询条件联动包含5个功能部分,每个功能部分实现逻辑如下:
1.联动脚本设计
在自定义报表条件组件设计中,每个组件提供两个事件,一个编辑后事件,另一个值改变事件,每个事件中可以设置事件对应的脚本,通过脚本组合表示查询条件之间的联动关系与联动功能,为了脚本的可扩充性与易用性,脚本使用javascript语言进行编写,脚本编写规则与javascript语言编写规则保持一致,一条语句占用一行,每条语句用分号分隔,脚本需要提供获取组件对象函数、数据更新函数、组件可编辑状态函数、组件隐藏以及组件设值函数。各种函数如下:
1.1 获取组件对象函数
getElementById(组件id):通过组件ID获取查询条件组件实例。
1.2 数据更新函数
组件实例.DataUpdate();
1.3 组件可编辑状态函数
组件实例.Enable():使组件可编辑;
组件实例.Disable():使组件不可编辑;
1.4 组件隐藏函数
组件实例.Visible():使组件可见;
组件实例.Invisible():使组件不可见;
1.5 组件设值函数
组件实例.setValue(“值”);
1.6 组件设置颜色函数
组件实例.setColorValue(“值”);
2.组件对象创建;
在自定义报表中设置查询条件组件时,每个组件设置一个唯一属性ID,在创建自定义报表时,解析设置的自定义报表查询条件组件,并为每个组件创建一个实例,每个实例设置对应的组件属性ID。根据解析结果,每个组件设置对应的事件,在事件中调用脚本解析引擎,对组件设置的脚本进行解析。
3.对应脚本函数功能实现
3.1获取组件对象函数
getComponentObj(String objId):通过id,获取第2功能部分创建的组件实例,并刷新界面显示。
3.2 数据更新函数
DataUpdate(String objId):通过id,获取设置的SQL脚本或数组值对,从数据库中获取数据或根据过滤值过滤数组值对中的数据,并刷新界面显示。
3.3 组件可编辑状态函数
enable(String objId):通过id,设置对应组件为可编辑状态,并刷新界面显示;
Disable(String objId):通过id,设置对应组件为不可编辑状态,并刷新界面显示。
3.4 组件隐藏函数
Visible(String objId):通过id,设置对应组件为可见状态,并刷新界面显示;
Invisible(String objId):通过id,设置对应组件为不可见状态,并刷新界面显示。
3.5 组件设值函数
setValue(String objId, String sValue) :通过id,设置对应组件值为sValue,并刷新界面显示。
3.6 组件设置颜色函数
setColorValue(String objId, String sColorValue) :通过id,设置对应组件颜色值为sColorValue,并刷新界面显示。
4.脚本解析;
根据第2个功能部分,组件每个事件对应于一段组件联动逻辑脚本,报表中对应事件被解析时,通过把该事件对应的联动逻辑脚本传递给脚本解析引擎,通过脚本解析引擎对脚本进行一一解析,获取每个脚本的功能函数,如图2所示,脚本解析引擎流程为:
4.1 把脚本按照换行符进行分割,解析为脚本语句数组;
4.2 循环读取每一行数组,执行每一行脚本;
4.3 如果当前行的脚本时if表达式,进行if表达式有效段的截取;
4.4 判断当前行是否是有效段,如果是有效段,解析当前行脚本,如果是if表达式,执行4.3,如果不是,则进行正则表达式匹配提起对应的脚本功能;
4.5 调用对应脚本功能函数;
4.6 实现该脚本功能
4.7 循环4.2至4.6。
5.解析结果执行;
根据第3功能部分获取的功能函数,执行对应的功能函数,对界面组件进行逻辑控制,实现自定义报表查询条件联动功能。
Claims (4)
1.一种实现自定义报表中查询条件联动的方法,其特征在于:通过脚本函数的灵活组合实现组件布局与定义逻辑和组件联动逻辑两个动态逻辑的表述,通过脚本解析引擎对脚本的解析,实现表述两个动态逻辑的逻辑功能,这样用户可以在自定义报表中通过脚本编写实现报表查询条件中需要的业务逻辑功能;在自定义报表查询条件设计中,每个查询条件组件设置一个唯一的ID属性,用于标识当前的查询条件组件;通过脚本语言,结合查询条件唯一的ID属性,获取每一个查询条件组件实例,通过实例携带的脚本函数,实现函数提供的3种联动功能的组合,实现自定义报表的查询联动功能;
3种联动功能的组合,分别为:
一个查询条件组件值改变,另外查询条件组件值数据更新;
一个查询条件组件值改变,另外查询条件组件可编辑状态改变;
一个查询条件组件值改变,另外查询条件组件显示与隐藏,实现动态布局;
自定义报表查询条件联动包含5个功能部分:
(1)联动脚本设计
在自定义报表条件组件设计中,每个组件提供两个事件,一个编辑后事件,另一个值改变事件,每个事件中设置事件对应的脚本,通过脚本组合表示查询条件之间的联动关系与联动功能,脚本使用javascript语言进行编写,脚本编写规则与javascript语言编写规则保持一致,但增加两个限制,一是一条语句占用一行,二是每条语句用分号分隔;脚本需要提供获取组件对象函数、数据更新函数、组件可编辑状态函数、组件隐藏以及组件设值函数;
(2)组件对象创建;
在自定义报表中设置查询条件组件时,每个组件设置一个唯一属性ID,在创建自定义报表时,解析设置的自定义报表查询条件组件,并为每个组件创建一个实例,每个实例设置对应的组件属性ID;根据解析结果,每个组件设置对应的事件,在事件中调用脚本解析引擎,对组件设置的脚本进行解析;
(3)对应脚本函数功能实现;
(4)脚本解析;
根据第(2)个功能部分,组件每个事件对应于一段组件联动逻辑脚本,报表中对应事件被解析时,通过把该事件对应的联动逻辑脚本传递给脚本解析引 擎,通过脚本解析引擎对脚本进行一一解析,获取每个脚本的功能函数;
(5)解析结果执行;
根据第(3)功能部分获取的功能函数,执行对应的功能函数,对界面组件进行逻辑控制,实现自定义报表查询条件联动功能。
2.如权利要求1所述的实现自定义报表中查询条件联动的方法,其特征在于,脚本提供的获取组件对象函数、数据更新函数、组件可编辑状态函数、组件隐藏以及组件设值函数分别为:
1.1获取组件对象函数
getElementById(组件id):通过组件ID获取查询条件组件实例;
1.2数据更新函数
组件实例.DataUpdate();
1.3组件可编辑状态函数
组件实例.Enable():使组件可编辑;
组件实例.Disable():使组件不可编辑;
1.4组件隐藏函数
组件实例.Visible():使组件可见;
组件实例.Invisible():使组件不可见;
1.5组件设值函数
组件实例.setValue(“值”);
1.6组件设置颜色函数
组件实例.setColorValue(“值”)。
3.如权利要求2所述的实现自定义报表中查询条件联动的方法,其特征在于,对应脚本函数功能实现如下:
3.1获取组件对象函数
getComponentObj(String objId):通过id,获取第(2)功能部分创建的组件实例,并刷新界面显示;
3.2数据更新函数
DataUpdate(String objId):通过id,获取设置的SQL脚本或数组值对,从数据库中获取数据或根据过滤值,过滤数组值对中的数据,并刷新界面显示;
3.3组件可编辑状态函数
enable(String objId):通过id,设置对应组件为可编辑状态,并刷新界面显示;
Disable(String objId):通过id,设置对应组件为不可编辑状态,并刷新界面显示;
3.4组件隐藏函数
Visible(String objId):通过id,设置对应组件为可见状态,并刷新界面显示;
Invisible(String objId):通过id,设置对应组件为不可见状态,并刷新界面显示;
3.5组件设值函数
setValue(String objId,String sValue):通过id,设置对应组件值为sValue,并刷新界面显示;
3.6组件设置颜色函数
setColorValue(String objId,String sColorValue):通过id,设置对应组件颜色值为sColorValue,并刷新界面显示。
4.如权利要求1-3任意一项所述的实现自定义报表中查询条件联动的方法,其特征在于,脚本解析引擎流程为:
4.1把脚本按照换行符进行分割,解析为脚本语句数组;
4.2循环读取每一行数组,执行每一行脚本;
4.3如果当前行的脚本时if表达式,进行if表达式有效段的截取;
4.4判断当前行是否是有效段,如果是有效段,解析当前行脚本,如果是if表达式,执行4.3,如果不是,则进行正则表达式匹配提起对应的脚本功能;
4.5调用对应脚本功能函数;
4.6实现该脚本功能;
4.7循环4.2至4.6。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310598182.2A CN103577610B (zh) | 2013-11-22 | 2013-11-22 | 一种实现自定义报表中查询条件联动的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310598182.2A CN103577610B (zh) | 2013-11-22 | 2013-11-22 | 一种实现自定义报表中查询条件联动的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103577610A CN103577610A (zh) | 2014-02-12 |
CN103577610B true CN103577610B (zh) | 2017-11-03 |
Family
ID=50049386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310598182.2A Expired - Fee Related CN103577610B (zh) | 2013-11-22 | 2013-11-22 | 一种实现自定义报表中查询条件联动的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103577610B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105117297A (zh) * | 2015-08-07 | 2015-12-02 | 北京思特奇信息技术股份有限公司 | 一种跨平台跨***的可配置数据交互方法和*** |
JP6810341B2 (ja) * | 2016-09-29 | 2021-01-06 | 富士通株式会社 | 管理装置、情報処理システムおよび管理プログラム |
CN107291462A (zh) * | 2017-06-13 | 2017-10-24 | 成都四方伟业软件股份有限公司 | 交互式数据***自定义编排方法、***及编译、运行方法 |
CN108153885B (zh) * | 2017-12-27 | 2020-09-04 | 东软集团股份有限公司 | 图表联动方法、装置、存储介质及电子设备 |
CN110008449B (zh) * | 2018-01-04 | 2023-07-07 | 北大医疗信息技术有限公司 | 表单控件联动方法、装置、计算机设备和可读存储介质 |
CN110096259A (zh) * | 2019-03-15 | 2019-08-06 | 佛山青藤信息科技有限公司 | 一种Web页面元素定位方法及*** |
CN112068839A (zh) * | 2020-07-03 | 2020-12-11 | 合肥森亿智能科技有限公司 | 基于JavaScript的自动计算变量方法、***以及终端 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101241448A (zh) * | 2008-03-07 | 2008-08-13 | 浪潮集团山东通用软件有限公司 | 一种灵活多变、多条件驱动查询显示内容的方法 |
CN101814064A (zh) * | 2009-02-23 | 2010-08-25 | 华为技术有限公司 | 报表模板的创建方法、报表生成方法及报表*** |
CN101876984A (zh) * | 2009-12-07 | 2010-11-03 | 金蝶软件(中国)有限公司 | 一种数据管理***及其数据关联查询方法和装置 |
CN102521416A (zh) * | 2011-12-28 | 2012-06-27 | 用友软件股份有限公司 | 数据关联查询方法和数据关联查询装置 |
-
2013
- 2013-11-22 CN CN201310598182.2A patent/CN103577610B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101241448A (zh) * | 2008-03-07 | 2008-08-13 | 浪潮集团山东通用软件有限公司 | 一种灵活多变、多条件驱动查询显示内容的方法 |
CN101814064A (zh) * | 2009-02-23 | 2010-08-25 | 华为技术有限公司 | 报表模板的创建方法、报表生成方法及报表*** |
CN101876984A (zh) * | 2009-12-07 | 2010-11-03 | 金蝶软件(中国)有限公司 | 一种数据管理***及其数据关联查询方法和装置 |
CN102521416A (zh) * | 2011-12-28 | 2012-06-27 | 用友软件股份有限公司 | 数据关联查询方法和数据关联查询装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103577610A (zh) | 2014-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103577610B (zh) | 一种实现自定义报表中查询条件联动的方法 | |
CN106528129B (zh) | 一种Web应用界面生成***及方法 | |
CN103106188B (zh) | 数据模型的图形化分析***和图形化分析方法 | |
Danaparamita et al. | QueryViz: helping users understand SQL queries and their patterns | |
Pastor et al. | Conceptual modelling of web applications: the OOWS approach | |
CN105912595A (zh) | 一种关系数据库的数据起源收集方法 | |
Peck | Making space for labour | |
CN106201459A (zh) | 一种快速构建专题落地页的方法及*** | |
CN107895018A (zh) | 数据库修改sql生成方法、***、存储介质及计算机设备 | |
CN103164393B (zh) | 报表公式处理方法和*** | |
CN106503102A (zh) | 一种搜索引擎式审计分析方法 | |
CN108509807A (zh) | 一种基于角色的列表数据权限控制***和方法 | |
CN105069096A (zh) | 一种自定义表单的架构方法及架构*** | |
CN107239539A (zh) | 一种基于关系型数据库的自定义建模方法 | |
CN106503040A (zh) | 适用sql查询方法的kv数据库及其创建方法 | |
Beyer | Co-change visualization applied to PostgreSQL and ArgoUML: (MSR challenge report) | |
DE202015009280U1 (de) | Integrierte domänenspezifische Sprachen als erstklassige Codeartefakte | |
CN105718376A (zh) | 一种bug、commit、相关人员关系建立方法 | |
CN104331392A (zh) | 一种可批量编辑图文app中展示内容的方法 | |
Mohammadnejad Shourkaei et al. | Providing a framework for Green HRM | |
CN104899045B (zh) | 一种通用的软件编码辅助***及方法 | |
CN105260317B (zh) | 一种测试用例的选取方法 | |
Kusel et al. | Common pitfalls of using QVT relations-graphical debugging as remedy | |
Guana et al. | Chaintracker: Towards a comprehensive tool for building code-generation environments | |
CN103150431A (zh) | 一种基于b/s模式的男装款式部件拼接设计*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171103 Termination date: 20201122 |