Skip to content

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

C++配置

附件路径配置

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

例如: 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 为控件名称 或 id
    • val 为将要给控件赋的值
    • 表格数据 中
      • 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); // 第一次查询设置数据总行数

下载

  • 平台开发包 co-service-sdk-6.2.3.zip 下载

  • DEMO 源代码下载 co-service-sdk-demo.zip 下载

Powerd by Vitepress.