Appearance
JAVA 开发
平台扩展开发前提
- 了解构建平台基本知识
- 掌握指令配置方法以及参数配置
- 熟练 JAVA 开发语言
- 熟练 SPRING BOOT 开发
构建指令
指令:
ExtDemo(['arg1'], 'arg2', arg3)
指令说明:
ExtDemo
为指令名称(接口名称)['arg1']
由中括号[]
及单引号''
包围的参数 代表控件名称
'arg2'
只由单引号包围在参数 代表 赋值的字符串(string)
类型值arg3
无任何标点包围的参数 代表数字(number)
类型值在构建平台表单中配置指令
例:
- ExtDemo('
123
')[/co/demo] 接口收到参数是:
json{ "user": 1, "busi": 0, "func": "EXTDEMO", "args": ["123"] }
{ "user": 1, "busi": 0, "func": "EXTDEMO", "args": ["123"] }
说明
平台在该指令入参中自动注入属性
user
用户 ID,busi
业务 ID,func
指令名称构建配置的参数
args
- ExtDemo(['ctrl']) 传入控件
ctrl
绑定的值, 假设此时ctrl
对应的是名为ctrl
单行编辑框控件, 且它的值为 "abc",则json{ "user": 1, "busi": 0, "func": "EXTDEMO", "args": ["abc"] }
{ "user": 1, "busi": 0, "func": "EXTDEMO", "args": ["abc"] }
- ExtDemo(['ctrl'], 123)
json{ "user": 1, "busi": 0, "func": "EXTDEMO", "args": ["abc", 123] }
{ "user": 1, "busi": 0, "func": "EXTDEMO", "args": ["abc", 123] }
开发
- 使用
spring boot
框架 - 使用 restful 规范
- 使用
com.fasterxml.jackson
解析json
- 使用开发包
co-service-sdk-xx.xx.xx.jar
下载中的com.kqgeo.co.ext.sdk.KqcoApi
接口类提供的接口 - 入参参数使用
@RequestBody ObjectNode parameter
类型 - 出参参数使用
KqcoParm
类型 - 启动类放置在
com.kqgeo.co.ext
包下 - 扩展代码放置在
com.kqgeo.co.ext.controller
包下
手动将 jar 导入本地 maven 仓库
- 执行以下命令将 jar 导入本地 maven 仓库,以 6.2.41 版本为例:
xml
mvn install:install-file -Dfile=C:\jar\co-service-sdk-core-6.2.41.jar -DgroupId=com.kanq.co -DartifactId=co-service-sdk-core -Dversion=6.2.36 -Dpackaging=jar -DpomFile=C:\jar\core-pom.xml
mvn install:install-file -Dfile=C:\jar\co-service-sdk-file-6.2.41.jar -DgroupId=com.kanq.co -DartifactId=co-service-sdk-file -Dversion=6.2.36 -Dpackaging=jar -DpomFile=C:\jar\file-pom.xml
mvn install:install-file -Dfile=C:\jar\co-service-sdk-flow-6.2.41.jar -DgroupId=com.kanq.co -DartifactId=co-service-sdk-flow -Dversion=6.2.36 -Dpackaging=jar -DpomFile=C:\jar\flow-pom.xml
mvn install:install-file -Dfile=C:\jar\co-service-sdk-form-6.2.41.jar -DgroupId=com.kanq.co -DartifactId=co-service-sdk-form -Dversion=6.2.36 -Dpackaging=jar -DpomFile=C:\jar\form-pom.xml
mvn install:install-file -Dfile=C:\jar\co-service-sdk-print-6.2.41.jar -DgroupId=com.kanq.co -DartifactId=co-service-sdk-print -Dversion=6.2.36 -Dpackaging=jar -DpomFile=C:\jar\print-pom.xml
mvn install:install-file -Dfile=C:\jar\co-service-sdk-user-6.2.41.jar -DgroupId=com.kanq.co -DartifactId=co-service-sdk-user -Dversion=6.2.36 -Dpackaging=jar -DpomFile=C:\jar\user-pom.xml
mvn install:install-file -Dfile=C:\jar\co-service-sdk-api-6.2.41.jar -DgroupId=com.kanq.co -DartifactId=co-service-sdk-api -Dversion=6.2.36 -Dpackaging=jar-DpomFile=C:\jar\api-pom.xml
mvn install:install-file -Dfile=C:\jar\co-service-sdk-core-6.2.41.jar -DgroupId=com.kanq.co -DartifactId=co-service-sdk-core -Dversion=6.2.36 -Dpackaging=jar -DpomFile=C:\jar\core-pom.xml
mvn install:install-file -Dfile=C:\jar\co-service-sdk-file-6.2.41.jar -DgroupId=com.kanq.co -DartifactId=co-service-sdk-file -Dversion=6.2.36 -Dpackaging=jar -DpomFile=C:\jar\file-pom.xml
mvn install:install-file -Dfile=C:\jar\co-service-sdk-flow-6.2.41.jar -DgroupId=com.kanq.co -DartifactId=co-service-sdk-flow -Dversion=6.2.36 -Dpackaging=jar -DpomFile=C:\jar\flow-pom.xml
mvn install:install-file -Dfile=C:\jar\co-service-sdk-form-6.2.41.jar -DgroupId=com.kanq.co -DartifactId=co-service-sdk-form -Dversion=6.2.36 -Dpackaging=jar -DpomFile=C:\jar\form-pom.xml
mvn install:install-file -Dfile=C:\jar\co-service-sdk-print-6.2.41.jar -DgroupId=com.kanq.co -DartifactId=co-service-sdk-print -Dversion=6.2.36 -Dpackaging=jar -DpomFile=C:\jar\print-pom.xml
mvn install:install-file -Dfile=C:\jar\co-service-sdk-user-6.2.41.jar -DgroupId=com.kanq.co -DartifactId=co-service-sdk-user -Dversion=6.2.36 -Dpackaging=jar -DpomFile=C:\jar\user-pom.xml
mvn install:install-file -Dfile=C:\jar\co-service-sdk-api-6.2.41.jar -DgroupId=com.kanq.co -DartifactId=co-service-sdk-api -Dversion=6.2.36 -Dpackaging=jar-DpomFile=C:\jar\api-pom.xml
- 复制文件 pom.xml 重命名为 co-service-sdk-6.2.XX.pom 放到 maven 仓库路径 com\kanq\co\co-service-sdk\6.2.XX 下
新建 springboot 项目
pom.xml 中引入 co-service-sdk-6.x.x.jar
包:
xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
</parent>
<groupId>com.kanq.co</groupId>
<artifactId>co-service-ext</artifactId>
<version>1.0.1</version>
<packaging>jar</packaging>
<name>co_service_web_ext_demo</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.kq</groupId>
<artifactId>co-service-sdk-api</artifactId>
<version>6.x.x</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
</parent>
<groupId>com.kanq.co</groupId>
<artifactId>co-service-ext</artifactId>
<version>1.0.1</version>
<packaging>jar</packaging>
<name>co_service_web_ext_demo</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.kq</groupId>
<artifactId>co-service-sdk-api</artifactId>
<version>6.x.x</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
启动类 SpringBootApplication
中增加注解:
- App.java
java
package com.kanq.co;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
//启动类扫描SDK配置项设置--此处扫描必须按照此路径
@ComponentScan({"com.kqgeo.co.ext.*"})
//忽略数据源配置的话可配置此注解
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
package com.kanq.co;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
//启动类扫描SDK配置项设置--此处扫描必须按照此路径
@ComponentScan({"com.kqgeo.co.ext.*"})
//忽略数据源配置的话可配置此注解
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
注意
springboot2.* @ComponentScan({"com.kqgeo.co.ext.*"})
springboot3.* @ComponentScan({"com.kqgeo.co.ext.*","com.kanq.co.core"})
yml 配置必配项:
yaml
server:
port: 8888 #端口自定义
#jackSon序列化
spring:
jackson:
default-property-inclusion: non_null
server:
port: 8888 #端口自定义
#jackSon序列化
spring:
jackson:
default-property-inclusion: non_null
yml 配置(扩展使用项):
yaml
# 扩展服务地址
props:
# 二开服务地址---如配置就读取当前配置,不配置就默认获取
pathUrl: http://192.168.1.151:8888 #当前服务地址---必须写当前二开服务ip+端口
#不使用ftp可忽略该配置
ftp: #file获取文件时从ftp读取文件配置
switch: 1 #0关闭,1开启 如不配置ftp相关配置,则默认为0关闭
ip: 192.168.1.122 #ftp IP
port: 21 #ftp 端口
user: wxh #ftp 用户名
password: wxh #ftp 密码
# 扩展服务地址
props:
# 二开服务地址---如配置就读取当前配置,不配置就默认获取
pathUrl: http://192.168.1.151:8888 #当前服务地址---必须写当前二开服务ip+端口
#不使用ftp可忽略该配置
ftp: #file获取文件时从ftp读取文件配置
switch: 1 #0关闭,1开启 如不配置ftp相关配置,则默认为0关闭
ip: 192.168.1.122 #ftp IP
port: 21 #ftp 端口
user: wxh #ftp 用户名
password: wxh #ftp 密码
注意
spring:jacksondefault-property-inclusion: non_null
增加接口
- 创建 java 类
com.kqgeo.co.ext.controller.Demo
- 增加
public KqcoParm ExtDemo(@RequestBody ObjectNode parameter);
方法 - 增加指令注册注解
@Description(describe = "接口描述", instructions = "指令名称",requestType = "请求方式", requestUrl = "请求地址")
注意
com.kqgeo.co.ext
包名需要与配置文件中的packageName
保持一致注解说明:
describe
接口描述requestType
请求方式post
,get
,...requestUrl
请求地址,请求路径要求前面/
不可忽略instructions
指令名称
- Demo.java
java
package com.kqgeo.co.ext.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.kqgeo.co.ext.config.Exclude;
import com.kqgeo.co.ext.sdk.*;
import com.kqgeo.co.ext.utils.KqcoApiUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("co/ext")
public class Demo {
@RequestMapping(value = "/ExtDemo" , method = RequestMethod.POST)
public KqcoParm demo(@RequestBody ObjectNode parameter) {
String m_sTicket ="tiket-5c396f8c702840fd9ae6523f9a70dac4";
KqcoApi kqcoApi = KqcoApiUtils.getKocoApi(m_sTicket);
ParmImpl kqcoParm = (ParmImpl) kqcoApi.getKqcoParm();
// 参数检查
if(kqcoParm.setRequest(parameter) !=0 ) {
return kqcoParm;
}
// 一般控件赋值
kqcoParm.setCtrlVal("st-6", "xx");
kqcoParm.setCtrlVal("cb-9", "10");
// 表格控件赋值
KqcoGridData gridData = kqcoParm.getGridData("grid");
// 增加列
String[] cols= {"列1","列2"};
gridData.setColumns(cols);
for(int i = 0;i < 1000;i++){
// 增加一行
KqcoGridRowData gridRow = gridData.addRow();
// 增加一行中的列值
gridRow.add(i);
gridRow.add("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
}
// 获取数据接口
KqcoDB kqcoDB = KqcoApi.getKqcoDB();
//调用查询模板获取数据
String name = "新系统任务查询";
String ctrl ="任务列表";
String parm ="1";
int rows=20;
int start=0;
String respData = kqcoDB.queryData(name, ctrl, parm, rows, start);
JSONObject jsonObject = JSON.parseObject(respData);
// 打开表单
kqcoParm.openForm(101001,"收件单","","","",800,600);
// 打开url
kqcoParm.openUrl("https://www.baidu.com", "百度",800,600);
// 警告框
kqcoParm.alert("测试警告");
// 确认框
kqcoParm.confirm("测试确认");
// 提示框
kqcoParm.prompt("测试提示");
// 错误信息框
kqcoParm.error(1,"错误信息");
return kqcoParm;
}
}
package com.kqgeo.co.ext.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.kqgeo.co.ext.config.Exclude;
import com.kqgeo.co.ext.sdk.*;
import com.kqgeo.co.ext.utils.KqcoApiUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("co/ext")
public class Demo {
@RequestMapping(value = "/ExtDemo" , method = RequestMethod.POST)
public KqcoParm demo(@RequestBody ObjectNode parameter) {
String m_sTicket ="tiket-5c396f8c702840fd9ae6523f9a70dac4";
KqcoApi kqcoApi = KqcoApiUtils.getKocoApi(m_sTicket);
ParmImpl kqcoParm = (ParmImpl) kqcoApi.getKqcoParm();
// 参数检查
if(kqcoParm.setRequest(parameter) !=0 ) {
return kqcoParm;
}
// 一般控件赋值
kqcoParm.setCtrlVal("st-6", "xx");
kqcoParm.setCtrlVal("cb-9", "10");
// 表格控件赋值
KqcoGridData gridData = kqcoParm.getGridData("grid");
// 增加列
String[] cols= {"列1","列2"};
gridData.setColumns(cols);
for(int i = 0;i < 1000;i++){
// 增加一行
KqcoGridRowData gridRow = gridData.addRow();
// 增加一行中的列值
gridRow.add(i);
gridRow.add("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
}
// 获取数据接口
KqcoDB kqcoDB = KqcoApi.getKqcoDB();
//调用查询模板获取数据
String name = "新系统任务查询";
String ctrl ="任务列表";
String parm ="1";
int rows=20;
int start=0;
String respData = kqcoDB.queryData(name, ctrl, parm, rows, start);
JSONObject jsonObject = JSON.parseObject(respData);
// 打开表单
kqcoParm.openForm(101001,"收件单","","","",800,600);
// 打开url
kqcoParm.openUrl("https://www.baidu.com", "百度",800,600);
// 警告框
kqcoParm.alert("测试警告");
// 确认框
kqcoParm.confirm("测试确认");
// 提示框
kqcoParm.prompt("测试提示");
// 错误信息框
kqcoParm.error(1,"错误信息");
return kqcoParm;
}
}
以下方法不能同时调用
- 打开表单
kqcoData.openForm
- 打开 url
kqcoData.openUrl
- 警告框
kqcoData.alert
- 确认框
kqcoData.confirm
- 提示框
kqcoData.prompt
- 错误信息框
kqcoData.error
接口注册
说明
一般使用动态注册即可,无需手动配置,本章节意在说明注册文件格式
静态注册
配置 web-service.xml
xml
<!-- - web-service.xml -->
<config>
<web-service>
<!-- 扩展服务地址 -->
<url>http://192.168.1.11:6102</url>
<api>
<!-- 扩展指令名称 -->
<name>ExtDemo</name>
<!-- 接口请求类型 -->
<type>POST</type>
<!-- 接口地址 -->
<addr>/co/demo</addr>
</api>
<api>
<name>login</name>
<type>POST</type>
<addr>/system/login</addr>
</api>
</web-service>
<web-service>
</web-service>
</config>
<!-- - web-service.xml -->
<config>
<web-service>
<!-- 扩展服务地址 -->
<url>http://192.168.1.11:6102</url>
<api>
<!-- 扩展指令名称 -->
<name>ExtDemo</name>
<!-- 接口请求类型 -->
<type>POST</type>
<!-- 接口地址 -->
<addr>/co/demo</addr>
</api>
<api>
<name>login</name>
<type>POST</type>
<addr>/system/login</addr>
</api>
</web-service>
<web-service>
</web-service>
</config>
说明:
- 此配置需放置在
KQCO
服务的根目录下的配置文件web-service.xml
中 - 一个扩展服务对应一个
web-service
节点 (一对一) - 每个服务下可配置一个或多个
指令
(api
)
提示
修改配置后,需要重启服务
动态注册
使用 JAVA 注解
注意
co-service-sdk-api-6.X.X.jar 以后版本支持动态注册
在启动类中增加注解
java
//启动类扫描SDK配置项设置
@ComponentScan({"com.kqgeo.co.ext.*"})
//启动类扫描SDK配置项设置
@ComponentScan({"com.kqgeo.co.ext.*"})
在接口方法中增加注解
java
@Description(describe = "接口描述",requestType = "请求方式",instructions = "指令",requestUrl = "接口地址")
@Description(describe = "接口描述",requestType = "请求方式",instructions = "指令",requestUrl = "接口地址")
注意
- 注解说明:
describe
接口描述requestType
请求方式post
,get
,...instructions
指令名称requestUrl
接口地址,请求路径要求前面/
不可忽略
以下 ticket 是 C++请求 java 服务时用来校验使用
java
获取ticket:
Map cacheMap = MyCommandLineRunner.getCacheMap();
cacheMap.get("ticket");
获取ticket:
Map cacheMap = MyCommandLineRunner.getCacheMap();
cacheMap.get("ticket");
提示
- 只会扫描配置包路径下的配置了注解的方法,通过指令注册到 c++
- 如项目存在中文路径,可能会导致注解扫描失败。
- 注册到 C++的 ticket 仅用作校验是否为当前 java 服务注册,使用者无感知
- 注册到 C++时会返回请求时用的 ticket,每次请求需要在请求头里携带 ticket,jar 包内部配置有拦截器会过滤含有注解的方法,然后校验 ticket 是否正确,没有配置注解的方法则不会拦截
- 如注册失败,可查看日志("C++程序返回接口注册结果:[{}]")查看此处程序里打印出了 c++返回的注册结果
测试
工具:postman
例如:
数据说明
指令返回数据格式
例 调用接口 /co/demo
时, 返回的数据格式如下:
json
{
"er": 0,
"obj": [
{
"id": "编辑框",
"val": "计算机"
},
{
"id": "下拉框", // 保存文本
"val": "党员"
},
{
"id": "下拉框", // 保存编号
"val": "1"
},
{
"id": "下拉框字典",
"val": "1"
},
{
"id": "时间控件",
"val": "1988-09-08 08:08:08"
},
{
"id": "单选控件",
"val": "1"
},
{
"id": "多选控件",
"val": "10110"
},
{
"id": "电子签章控件",
"val": {
"uuid": "CC047E4E5956B8422484F34A0FB84D9B95",
"valid": 1,
"sign": ""
}
},
{
"id": "表格控件",
"val": {
"col": ["学校", "证书", "专业", "入校时间", "毕业时间"],
"dt": [["", "", "", "2020-12-24 00:00:00", ""]],
"count": 1
}
},
{
"id": "ctrl-110",
"val": "3333"
}
]
}
{
"er": 0,
"obj": [
{
"id": "编辑框",
"val": "计算机"
},
{
"id": "下拉框", // 保存文本
"val": "党员"
},
{
"id": "下拉框", // 保存编号
"val": "1"
},
{
"id": "下拉框字典",
"val": "1"
},
{
"id": "时间控件",
"val": "1988-09-08 08:08:08"
},
{
"id": "单选控件",
"val": "1"
},
{
"id": "多选控件",
"val": "10110"
},
{
"id": "电子签章控件",
"val": {
"uuid": "CC047E4E5956B8422484F34A0FB84D9B95",
"valid": 1,
"sign": ""
}
},
{
"id": "表格控件",
"val": {
"col": ["学校", "证书", "专业", "入校时间", "毕业时间"],
"dt": [["", "", "", "2020-12-24 00:00:00", ""]],
"count": 1
}
},
{
"id": "ctrl-110",
"val": "3333"
}
]
}
说明:
er
为错误编号,0
表示未出错,不可缺少obj
为控件数组,给表单控件赋值id
为控件名称 或 idval
为将要给控件赋的值- 表格数据 中
col
为 字段名数组count
为 表格行数- 二维数组
dt
为表格的行数据集合,并且每行数据按照 字段col
进行排序
- 所有控件时间格式统一使用 年月日时分秒 格式 如:
1988-09-08 08:08:08
表格数据分页示例
构建:
ExtDemo(['arg1'],'abc',123,['grid'.'ROWCOUNT'],['grid'.'POSITION'])
开发:
java
// 分页示例
ObjectNode parmJson = kqcoParm.getRequest();
JsonNode argsJson = parmJson.get("args");
JsonNode parm0 = argsJson.get(0);
JsonNode parm1 = argsJson.get(1);
JsonNode parm2 = argsJson.get(2);
JsonNode parm3 = argsJson.get(3);// ROWCOUNT
JsonNode parm4 = argsJson.get(4);// POSITION
int rowcount = parm3.asInt(); // 每页行数
int position = parm4.asInt(); // 每页起始位置
// 表格控件赋值
KqcoGridData gridData = kqcoParm.getGridData("grid");
// 增加列
String[] cols= {"列1","列2"};
gridData.setColumns(cols);
for(int i = 0;i < rowcount;i++){
// 增加一行
KqcoGridRowData gridRow = gridData.addRow();
// 增加一行中的列值
gridRow.add(i+1+position); // 列1 的值
gridRow.add("abc"); // 列2 的值
}
if(position == 0)
gridData.setTotalRows(100); // 第一次查询设置数据总行数
// 分页示例
ObjectNode parmJson = kqcoParm.getRequest();
JsonNode argsJson = parmJson.get("args");
JsonNode parm0 = argsJson.get(0);
JsonNode parm1 = argsJson.get(1);
JsonNode parm2 = argsJson.get(2);
JsonNode parm3 = argsJson.get(3);// ROWCOUNT
JsonNode parm4 = argsJson.get(4);// POSITION
int rowcount = parm3.asInt(); // 每页行数
int position = parm4.asInt(); // 每页起始位置
// 表格控件赋值
KqcoGridData gridData = kqcoParm.getGridData("grid");
// 增加列
String[] cols= {"列1","列2"};
gridData.setColumns(cols);
for(int i = 0;i < rowcount;i++){
// 增加一行
KqcoGridRowData gridRow = gridData.addRow();
// 增加一行中的列值
gridRow.add(i+1+position); // 列1 的值
gridRow.add("abc"); // 列2 的值
}
if(position == 0)
gridData.setTotalRows(100); // 第一次查询设置数据总行数