Skip to content

事件中指令扩展开发

注意

本示例,使用 KQCO 服务 的地址是:192.168.1.13 端口是:8003 后面会使用此参数

构建表单配置扩展指令

521521 表单打开事件配置函数 processingData ,并传递相应参数。

示例:籍贯、血型、列表控件赋值 5215211

说明

表单中打开事件的配置为 processingData

新建 springboot 项目

pom.xml 中引入 jar 包: co-service-sdk-api-6.x.x.jar下载

xml
<dependency>
    <groupId>com.kanq.co</groupId>
    <artifactId>co-service-sdk-api</artifactId>
    <version>6.x.x</version>
</dependency>
<dependency>
    <groupId>com.kanq.co</groupId>
    <artifactId>co-service-sdk-api</artifactId>
    <version>6.x.x</version>
</dependency>

启动类 SpringBootApplication 类配置:

java
//启动类扫描SDK配置项设置--此处必须固定此路径
@ComponentScan({"com.kqgeo.co.ext.*"})
 //忽略数据源配置的话可配置此注解
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class SpringBootApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootApplication.class, args);
    }
}
//启动类扫描SDK配置项设置--此处必须固定此路径
@ComponentScan({"com.kqgeo.co.ext.*"})
 //忽略数据源配置的话可配置此注解
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class SpringBootApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootApplication.class, args);
    }
}

注意

springboot2.* @ComponentScan({"com.kqgeo.co.ext.*"})
springboot3.* @ComponentScan({"com.kqgeo.co.ext.*","com.kanq.co.core"})

yml 配置(完整配置详见):

yaml
server:
  port: 8888 #端口
coservice: #C++服务相关配置
  '0':
    model: hotStandby
    server:
      - addr: 192.168.1.13 #二开程序的C++配置要与java运行服务使用的C++地址端口保持一致
        port: 8003
cofile:
  affix: C:\\affix\\ #文件存储路径
server:
  port: 8888 #端口
coservice: #C++服务相关配置
  '0':
    model: hotStandby
    server:
      - addr: 192.168.1.13 #二开程序的C++配置要与java运行服务使用的C++地址端口保持一致
        port: 8003
cofile:
  affix: C:\\affix\\ #文件存储路径

coservice

coservice 配置要与平台配置保持一致

扩展接口实现

  • 创建 java 类 com.kqgeo.co.ext.form
  • 增加 public KqcoParm processingData(@RequestBody ObjectNode parameter); 方法
  • 增加指令注册注解 @Description(describe = "指令触发处理表格数据方法", requestType = "post", requestUrl = "co/ext/processing-data",instructions="processingData")

注意

  • com.kqgeo.co.ext 包名需要与配置文件中的 packageName 保持一致

  • 注解说明:

    • describe 接口描述
    • requestType 请求方式
    • requestUrl 请求路径,请求路径要求前面 / 不可忽略
    • instructions 指令名称
java
package com.kqgeo.co.ext.controller;

import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.kqgeo.co.ext.config.Description;
import com.kqgeo.co.ext.sdk.KqcoApi;
import com.kqgeo.co.ext.sdk.KqcoGridData;
import com.kqgeo.co.ext.sdk.KqcoGridRowData;
import com.kqgeo.co.ext.sdk.KqcoParm;
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;

/**
 * @author Administrator
 */
@Slf4j
@RestController
public class FormDemo {

  @RequestMapping(value = "/processing-data", method = RequestMethod.POST)
  @Description(describe = "指令触发处理表格数据方法", requestType = "post", requestUrl = "co/ext/processing-data", instructions = "processingData")
  public KqcoParm processingData(@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;
    }
    //从参数中取出控件名称
    ObjectNode parmJson = kqcoParm.getRequest();
    JsonNode argsJson = parmJson.get("args");
    //籍贯控件名称
    String QLRYZBM = argsJson.get(1).asText();
    //血型控件名称
    String FDDBR = argsJson.get(2).asText();
    //列表控件名称
    String grid = argsJson.get(3).asText();
    // 一般控件赋值
    kqcoParm.setCtrlVal(FDDBR, "O型");
    kqcoParm.setCtrlVal(QLRYZBM, "皖");
    // 表格控件赋值
    KqcoGridData gridData = kqcoParm.getGridData(grid);
    for (int i = 0; i < 4; i++) {
      // 增加一行
      KqcoGridRowData gridRow = gridData.addRow();
      // 增加一行中的列值
      gridRow.add("清华大学" + i + "学院");
      gridRow.add("清华大学本科证书");
      gridRow.add("计算机专业");
    }
    return kqcoParm;
  }
}
package com.kqgeo.co.ext.controller;

import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.kqgeo.co.ext.config.Description;
import com.kqgeo.co.ext.sdk.KqcoApi;
import com.kqgeo.co.ext.sdk.KqcoGridData;
import com.kqgeo.co.ext.sdk.KqcoGridRowData;
import com.kqgeo.co.ext.sdk.KqcoParm;
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;

/**
 * @author Administrator
 */
@Slf4j
@RestController
public class FormDemo {

  @RequestMapping(value = "/processing-data", method = RequestMethod.POST)
  @Description(describe = "指令触发处理表格数据方法", requestType = "post", requestUrl = "co/ext/processing-data", instructions = "processingData")
  public KqcoParm processingData(@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;
    }
    //从参数中取出控件名称
    ObjectNode parmJson = kqcoParm.getRequest();
    JsonNode argsJson = parmJson.get("args");
    //籍贯控件名称
    String QLRYZBM = argsJson.get(1).asText();
    //血型控件名称
    String FDDBR = argsJson.get(2).asText();
    //列表控件名称
    String grid = argsJson.get(3).asText();
    // 一般控件赋值
    kqcoParm.setCtrlVal(FDDBR, "O型");
    kqcoParm.setCtrlVal(QLRYZBM, "皖");
    // 表格控件赋值
    KqcoGridData gridData = kqcoParm.getGridData(grid);
    for (int i = 0; i < 4; i++) {
      // 增加一行
      KqcoGridRowData gridRow = gridData.addRow();
      // 增加一行中的列值
      gridRow.add("清华大学" + i + "学院");
      gridRow.add("清华大学本科证书");
      gridRow.add("计算机专业");
    }
    return kqcoParm;
  }
}

启动服务

扩展开发注册成功如下:

1641458885925

  • 测试表单打开函数

点击打开表单: 5212521

设置指令触发处理表格数据方法之前打印结果:

5215213

设置指令触发处理表格数据方法之后打印结果:

5215212

DEMO 代码下载

本示例代码在 com.kqgeo.co.ext.FormDemo 类中的 processingData 方法

Powerd by Vitepress.