# CAP4表单应用接口

# 修订记录

时间 内容
2024年7月11日 增加获取参数rightId的方法
2024年7月22日 新增低版本获取参数rightId的方法

# 获取参数rightId步骤

rightId组成是viewId和authId

格式是:viewId.authId

1、先找到表单id

2、查询数据库获取到viewId

select * from cap_form_view_info where FORM_ID=:formId

一条表示pc端,一条表示移动端,选pc的view_id

1720601414827.png

获取到VIEW_ID为7382243805636937862

3、查询数据库获取到authId

1)高版本方式

select * from cap_form_auth_info where FORM_ID=:formId;

根据想要的权限选择,比如用填写权限

1720601614960.png

获取到RESOURCE_ID为739077934791477512

2)低版本方式:

如果低版本,没有cap_form_auth_info表,则查询cap_form_definition,获取view_info字段:

select view_info from cap_form_definition where id=:formId;

进行json格式转换

1721640217101.png

获取pc(type为seeyonform)的json对象,根据想要的权限选择id

4、将2,3步结果合并得到rightId

rightId:"7382243805636937862.739077934791477512";

# 更新表单数据缓存

  • 根据传入从参数,可以更新后端表单的数据缓存,在保存表单时会将缓存中的值存入数据库中持久化
  • 此接口需传入JSON数据格式

# 接口请求说明:

http请求方式:POST
<http://ip:port/seeyon/rest/cap4/form/api/updateCacheFormData>
例如:  
<http://127.0.0.1/seeyon/rest/cap4/form/api/updateCacheFormData>

注:请求需要携带token,否则无法使用,获取并传递token方法参考:https://open.seeyoncloud.com/seeyonapi/781/
参数 是否必须 参数说明
formMasterDataId 主表数据ID
formId 表单ID
fieldName 需要更新的字段名
fromRecordId 重复表数据ID
formSonTableName 重复表名
mergeData 主从表的值(类型为Map,key为主从表的表名,value为所有字段值的Map,第二层Map的key为字段名,value为字段值)

# 返回说明:

请求结果:

参数 是否必须 参数说明
code http请求code
data 请求返回数据JSON,参考下述data
message 提示信息

请求结果data:

参数 是否必须 参数说明
code 状态码
message 提示信息

# 发起表单(Html正文)流程

文档链接 (opens new window).

可发起指定模板的Html正文流程或表单流程。

# 推荐使用接口(Since:V80sp1)

接口请求说明:

http请求方式:POST
http://ip:port/seeyon/rest/bpm/process/start

注:请求需要携带token,否则无法使用,获取并传递token方法参考:https://open.seeyoncloud.com/seeyonapi/781/

示例:

Map<String, Object> map = new HashMap<String, Object>();
  map.put("appName", "collaboration");

  Map<String, Object> data1 = new HashMap<String, Object>();
  data1.put("templateCode", "asss_001");
  data1.put("draft", "0");
  data1.put("attachments", new ArrayList<Long>() {{add(3128081619541315193l); add(-1686961755437117824l);}});
  data1.put("relateDoc", "col|-2871660587841141706,-1609894079662438907");
  data1.put("subject", "aaa1");

  Map<String, Object> data2 = new HashMap<String, Object>();
  data2.put("formmain_0018", new HashMap<String, Object>(){{put("申请人", "saa"); put("车牌号", "ddd");}});

  data1.put("data", data2);

  map.put("data", data1);
        Map result = client.post("bpm/process/start" ,map);

传入参数说明:

参数 是否必须 说明
appName 应用类型
data data参数

data参数

参数 是否必须 说明
templateCode 模板编号,参见表单正文流程模板编号
draft 是否为待发:0:新建-发送;1:新建-保存待发
attachments 协同标题区附件,Long型List,值为附件的Id。Id是附件接口响应结果中fileUrl字段的值。
relateDoc 协同公文的id
subject 未设置取模板设置的标题
data 表单data参数
useNewDataStructure 是否使用新的表单数据格式
doTrigger 是否执行触发

表单data参数

参数 是否必须 说明
formmainxxx 表单字段数据,json格式:key字段显示名称,value字段值(如果是cap4的附件控件,则value为附件的相关信息)
formsonxx1 数组结构,参考主表
thirdAttachments CAP4附件参数
changedFields 参与计算的字段

thirdAttachments参数说明

参数 是否必须 说明
subReference 对应的附件字段的value值
fileUrl 上传的附件ID
sort 附件排序

请求参数示例:

{
    "appName": "collaboration",
    "data": {
        "data": {
            "formmain_0177": {
                "文本1": "测试文本1-111",
                "上传附件1": "3091996204880318295",
                "图片下拉1": "-2767075386175501632"
            },
            "formson_0185": [
                {
                    "图片下拉2": "-2767075386175501632",
                    "上传附件2": "-6092561120937621142"
                }
            ],
            "thirdAttachments": [
                {
                    "subReference": "3091996204880318295",
                    "fileUrl": "432641077895385013",
                    "sort": 1
                },
                {
                    "subReference": "-6092561120937621142",
                    "fileUrl": "355134930180197101",
                    "sort": 1
                }
            ],
            "changedFields":{
                "formmain_0177":["选人1","文本1"],
                "formson_0185":["选人2"]
            }
        },
        "templateCode": "ABC1111",
        "draft": "0",
        "attachments": [
            123456,
            123457
        ],
        "relateDoc": "col|123,456;doc|321,654",
        "subject": "",
        "useNewDataStructure": false,
        "doTrigger": true
    }
}

# 请求表单参数说明(@Since v8.0sp2)

masterTable的结构

参数 类型 是否必填 说明
name String 数据库表名称
record Object 记录的数据
changedFields String[] 需要计算的字段

masterTable—record的结构

参数 类型 是否必填 说明
id long 数据id
fields Object[] 包含字段

masterTable—record—fields的结构

参数 类型 是否必填 说明
name String 数据域名称
value String 数据值(优先)
showValue String 显示值

subTables的结构

参数 类型 是否必填 说明
name String 数据库表名称
records Object[] 包含的所有数据
changedFields String[] 需要计算的字段

subTables—records的结构

参数 类型 是否必填 说明
id long 数据id
fields Object[] 包含字段

subTables—records—fields的结构

参数 类型 是否必填 说明
name String 数据域名称
value String 数据值(优先)
showValue String 显示值

请求参数示例(@Since v8.0sp2):

{
    "appName": "collaboration",
    "data": {
        "data": {
            "masterTable":{
                "name":"formmain_0019",
                "record":{
                    "id":123456789101,
                    "fields":[
                        {
                            "name":"field0001",
                            "value":"",
                            "showValue":"create"
                        },
                        {
                            "name":"field0002",
                            "value":"",
                            "showValue":"one"
                        }
                    ]
                },
                "changedFields": ["field0001","field0002"]
            },
            "subTables": [
                {
                    "name":"formson_0021",
                    "records": [
                        {
                            "id": 123456789101,
                            "fields": [
                                {
                                    "name":"field0005",
                                    "value":"",
                                    "showValue":"cap"
                                }
                            ]
                        }
                    ],
                    "changedFields": ["field0005"]
                }
            ]
        },
        "templateCode": "SOAP01",
        "draft": "0",
        "subject": "又试1下",
        "useNewDataStructure": true,
        "doTrigger": true
    }
}

返回数据:

{
  "code" : 0,
  "data" : {
    "workitems" : [ {
      "nodeName" : "节点姓名",
      "userLoginName" : "loginName",
      "id" : "6063271658185834554",
      "userName" : "用户姓名",
      "nodeId" : "15940211100644",
      "userId" : "5647565013925644425"
    } ],
    "app_bussiness_data" : "{\"affairId\":\"-7826004588359563757\",\"summaryId\":\"2076716881761815485\"}",
    "processId" : "5724125432261003059",
    "subject" : "aaa1",
    "errorMsg" : ""
  },
  "message" : ""
}

返回参数说明:

参数 说明
code 返回码
nodeName 节点名称
userLoginName 登录名
id wf_workitem_run.id
userName 用户名
nodeId 节点ID(ctp_affair.activity_id)
userId 人员ID
affairId 事项ID
summaryId 协同ID
processId 流程ID(ctp_affair.process_id)
subject 标题

# 过时接口(V61update)

注意V6.1此接口支持直接传入JSON数据格式。

接口请求说明:

http请求方式:POST
http://ip:port/seeyon/rest/flow/{templateCode}
例如:
http://127.0.0.1/seeyon/rest/flow/A0001

注:请求需要携带token,否则无法使用,获取并传递token方法参考:https://open.seeyoncloud.com/seeyonapi/781/

参数说明:

发起表单流程所需要参数,可以参考文档【BPM集成】中的【public ServiceResponse launchFormCollaboration(String token, String senderLoginName, String templateCode, String subject, String data, Long[] attachments, String param) throws ServiceException;】;

参数 是否必须 说明
templateCode 模板编号,参见表单正文流程模板编号
token 为登录验证后获取的身份令牌
senderLoginName 发起者的登录名(登录协同的登录名)
subject 协同的标题
data HTML正文流程为html内容;取得流程正文数据支持传入json格式数据
attachments 附件,Long型List,值为附件的Id。Id是附件接口响应结果中fileUrl字段的值。
param 为控制是否流程发送。0:缺省值,发送,进入下一节点的待办(如果需要选人则保存到待发)1:不发送,保存到待发。
transfertype (V6.1增加)data格式,xml:表示data为XML格式;json:表示data为json格式
formContentAtt (V6.1增加) 表单附件 组件传入ID参数
accountCode (V6.1增加)发起人单位编码(用于发起人兼职多单位情况,用不同单位角色发起流程)

参数获取说明:

发起表单是多参数,建议组装为MAP传参。 token身份令牌:token在CTPRestClient中已经封装好的,如果要单独获取可如下方式:

private CTPRestClient client = null;
CTPServiceClientManager clientManager = CTPServiceClientManager.getInstance("http://127.0.0.1");
client = clientManager.getRestClient();
...
String token = client.get("token/" + userName + "/" + password, String.class,"text/plain");

senderLoginName发起者的登录名:发起者登录OA的登录名,如下:

String senderLoginName ="lsm";

templateCode模板编号:对应创建模板时填写的模板编号(即ctp_template表TEMPLETE_NUMBER字段)

String templateCode ="100";

subject协同的标题:发出表单模板对应的标题,如下:

String subject ="申请流程标题";

data表单数据:表单数据信息,REST接口提供了获取已经发送的表单流程XML新方法,请参考取得流程正文数据

注意在获取表单数据XML 需要转换成String

提供已发表单转String示例:

private CTPRestClient client = null;
...
String data = client.get("flow/data/-6074085048046957774", String.class);//-6074085048046957774为已发流程ID

V6.1表单流程正文数据支持JSON格式,示例如下:

string data ="{"field1":"主表数据1","field2":"主表数据2",sub:[{"field3":"从表数据3","field4":"从表数据4","field5":"从表数据5"},{"field6":"从表数据6"},{"field10":"从表数据10","field11":"从表数据11"}]}";

注意:这里sub代表从表数据,而field1等字段信息是对应【流程表单制作】-【基础设置】中控件的【名称】字段

表单流水号场景:

现在发起流程接口只支持【计算流水号】

1.新建流水号:创建流水号:表单应用-流水号管理;

2.模板设置流水号:表单应用-流程表单设置-流程表单制作-选择控件-计算公式设置-系统数据域中选择流水号

表单附件组件场景:

1.获取附件ID:通过上传接口获得【注意:如果2个表单附件控件都是同一个附件,也需要上传2次,获取不同的ID,而不能2个表单附件控件共用一个附件ID】

2.发起接口XML/json数据中设置附件ID;

3.需要formContentAtt重设置附件ID;

List<Long> formcontentatt=new ArrayList();//表单正文组件ID,这里需要注意,就算三个正文组件上传的同一个文件,这个文件也需要通过上传接口上传三次,而给予表单控件三个不同的附件ID,不能一个ID给多个表单组件
res.put("formContentAtt",formcontentatt);//表单附件组件

CAP4表单附件组件场景更正(Since V8.0,仅支持CAP4表单)

更正说明:由于原有结构不支持控件多个附件或者附件无法添加到表单中的场景,因此接口请求增加_formContentAtt_参数,参数为数组格式,说明如下:

参数名 说明
subReference 表单内字段value值,如“上传附件1”的value值
fileUrl 调用附件上传接口获取的附件ID
sort 附件排序

CAP4表单附件组件更正调用示例

{
    "data": {
        "文本1": "示例",
        "上传附件1": "8451540374587001174"
    },
    "subject": "示例",
    "senderLoginName": "seeyon",
    "transfertype": "json",
    "formContentAtt":[
        {
            "subReference":8451540374587001174,
            "fileUrl":-7390855572027915259,
            "sort":1
        },
        {
            "subReference":8451540374587001174,
            "fileUrl":-7390855572027915268,
            "sort":2
        }
    ]
}
{  
   "data": {  
       "文本1": "示例",  
       "上传附件1": "8451540374587001174"  
    },  
   "subject": "示例",  
   "senderLoginName": "seeyon",  
   "transfertype": "json",  
   "formContentAtt":[  
        {  
           "subReference":8451540374587001174,  
           "fileUrl":-7390855572027915259,  
           "sort":1  
        },  
        {  
           "subReference":8451540374587001174,  
           "fileUrl":-7390855572027915268,  
           "sort":2  
        }  
    ]  
}

param为控制流程发送.

String param="0";

表单流程通过REST POST创建示例:

private CTPRestClient client = null;
MAP info =new HashMap();//存放上述参数
String checkUrl ="flow/"+模板ID...
client.post(url, info, String.class);

发起HTML正文流程示例1:

Map data = new HashMap() {
            {
                put("senderLoginName", "s1");
                put("subject", "这个是用Map方式发的");
                put("data", "正文内容");
                put("attachments",new Long[] {-1l,-5199818657160149985l});
                put("formContentAtt",formcontentatt);//表单附件控件
            }
        };
        Long flowId1 = client.post("flow/H0001" ,data, Long.class);

发起HTML正文流程示例2:

Long flowId2 = client .post("flow/H0001",
                        "{"senderLoginName":"s1","subject":"这是用JSON发的","data":"HTML正文","attachments":[-1,1]}",
                        Long.class);

返回说明

正常情况下,返回创建成功以后对应的流程Id。

返回异常说明:

异常编码 异常说明
12005 无效的token,请再次验证
21011 单位名称不能为空或不存在
25001 职务级别不存在
25002 职务级别名称为空
25003 职务级别已存在
23023 部门名称为空
23024 父部门名称为空
23025 部门已存在
24001 岗位不存在
24002 岗位名称为空
24003 岗位已存在
22129 设置人员的所属部门出错
22011 人员登录名为空
50126 按登录名查找发起人出错
50121 表单不存在
50122 无表单权限
50123 无流程表单导入出错
50124 XML解析失败
50125 模板不存在
50126 无模板访问权限
50127 非表单正文内容
50128 不是无流程表单,请检查模板编号是否正确
50129 模板为非流程模板,请检查模板编号是否正确
31013 指定流程不存在
50130 此表单已经停用
50131 无输入字段
50132 日期格式错误
50133 没有主表记录错误

# 表单截图

版本:Since V8.0

对外接口调用:

**类路径:**com.seeyon.cap4.form.api.FormApi4Cap4

**方法名:**String doFormCapture(FormCaptureParamBean bean) throws BusinessException

说明:非rest接口,为seeyon 后端 api接口

参数说明

FormCaptureParamBean的结构:

参数 类型 是否必填 说明
rightId String 权限id 获取参数rightId步骤
moduleId Long 对应流程表中的summaryId
moduleType Ineteger cap无流程表单:42;协同表单:1
renderType String 渲染类型,两种选项:base64,pdf
requestParams Map<String, Object> map中需要4个参数,serverName(如:127.0.0.1),serverPort(如:8080),scheme(如:http、https),contextPath(如:seeyon)

返回参数说明

如果renderType=base64,返回的是一个字符串,图片的base64编码,可以通过![[xxx|xxx]] img src="xxx" 的方式在页面显示这张图片

如果renderType=pdf,返回的是一个url下载路径,该路径返回的是一个pdf文件,截图的内容包含在pdf文件中

备注说明

  • 只支持cap4;
  • 使用的截图工具是phantomjs
  • 支持的服务器:windows/linux x86/arm
  • (国产化)信创环境兼容问题,会出现截图程序崩溃,原因:Lib包版本不对。

# 无流程的批量添加

版本:Since V8.0

备注 若V8.0 buldId: B200613.2565.CTP203851版本存在调用BUG,如调用不可用,请上报BUG获取补丁。参考BUG号 BUG2024042904577

接口请求说明:

http请求方式:POST
http://ip:port/seeyon/rest/cap4/form/soap/batch-add

注:请求需要携带token,否则无法使用,获取并传递token方法参考:https://open.seeyoncloud.com/seeyonapi/781/

参数说明

参数 类型 是否必填 说明
uniqueFiled String[] 更新用的唯一标识
rightId String 使用的操作权限id 获取参数rightId步骤
dataList Object[] 导入的数据
formCode String 表名
loginName String 用于登陆的登录名(登录名对应的人员必须有底表操作权限才可以,并不是普通用户)
doTrigger boolean 是否执行触发(Since V8.0sp2)

dataList的结构

参数 类型 是否必填 说明
masterTable Object 主表数据
subTables Object[] 明细表数据
attachmentInfos Object[] 表单附件

masterTable的结构

参数 类型 是否必填 说明
name String 数据库表名称
record Object 记录的数据
changedFields String[] 需要计算的字段

masterTable—record的结构

参数 类型 是否必填 说明
id long 数据id
fields Object[] 包含字段

masterTable—record—fields的结构

参数 类型 是否必填 说明
name String 数据域名称
value String 数据值(优先)
showValue String 显示值

subTables的结构

参数 类型 是否必填 说明
name String 数据库表名称
records Object[] 包含的所有数据
changedFields String[] 需要计算的字段

subTables—records的结构

参数 类型 是否必填 说明
id long 数据id
fields Object[] 包含字段

subTables—records—fields的结构

参数 类型 是否必填 说明
name String 数据域名称
value String 数据值(优先)
showValue String 显示值

attachmentInfos的结构

参数 类型 是否必填 说明
subReference long 对应附件字段id值
fileUrl long 已上传文件的fileURL
sort int 排序

调用模版

{
    "formCode": "aaa1",
    "loginName": "zhai",
    "rightId":"56195256829429332.-470190193844795028",
    "doTrigger": true,
    "dataList": [
        {
            "masterTable":{
                "name":"formmain_0019",
                "record":{
                    "id":123456789101,
                    "fields":[
                        {
                            "name":"field0001",
                            "value":"",
                            "showValue":"create"
                        },
                        {
                            "name":"field0002",
                            "value":"",
                            "showValue":"one"
                        }, 
                        {
                            "name":"field0003",
                          "value":"198747588475848444",
                          "showValue":""
                        } 
                    ]
                },
                "changedFields": ["field0001","field0002"]
            },
            "subTables": [
                {
                    "name":"formson_0021",
                    "records": [
                        {
                            "id": 123456789101,
                            "fields": [
                                {
                                    "name":"field0005",
                                    "value":"",
                                    "showValue":"cap"
                                }
                            ]
                        }
                    ],
                    "changedFields": ["field0005"]
                }
            ],
            "attachmentInfos" : [
                {
                    "subReference" : "198747588475848444",
                    "fileUrl" : "7897958946781246",
                    "sort" : "0"
                 }
            ]
        }
    ]
}

响应模版

{
    "code": 0,
    "data": {
        "successIdList": [
            4035394180072293997
        ],
        "failedData": {
        },
        "successCount": 1,
        "failedCount": 0
    },
    "message": ""
}

响应参数说明

参数 类型 说明
code String http请求code
data Object 表单数据
message String 提示内容

data的结构

参数 类型 说明
successIdList Long[] 成功的数据id (目前只返回id是主表行id)
failedData Map<Long,String> 失败的数据id(目前只返回id是主表行id)及失败原因
successCount int 成功数量
failedCount int 失败数量

# 无流程的批量删除

版本:Since V8.0

接口请求说明:

http请求方式:DELETE
http://ip:port/seeyon/rest/cap4/form/soap/batch-delete

注:请求需要携带token,否则无法使用,获取并传递token方法参考:https://open.seeyoncloud.com/seeyonapi/781/

参数说明

参数 类型 是否必填 说明
formCode String 表单编号
loginName String 用于登陆的登录名 (登录名对应的人员必须有底表操作权限才可以,并不是普通用户)
idList Long[] 要删除的数据id

调用模版

{
  "formCode": "aaa1",
 "loginName": "zhai",
    "idList":[
        4035394180072293997
    ]
}

响应模版

{
    "code": 0,
    "data": {
        "successIdList": [
            4035394180072293997
        ],
        "failedData": {
        },
        "successCount": 1,
        "failedCount": 0
    },
    "message": ""
}

响应参数说明

参数 类型 说明
code String http请求code
data Object 表单数据
message String 提示内容

data的结构

参数 类型 说明
successIdList Long[] 成功的数据id
failedData Map<Long,String> 失败的数据id及失败原因
successCount int 成功数量
failedCount int 失败数量

# 无流程的批量更新

版本:Since V8.0

接口请求说明:

http请求方式:POST
http://ip:port/seeyon/rest/cap4/form/soap/batch-update

注:请求需要携带token,否则无法使用,获取并传递token方法参考:https://open.seeyoncloud.com/seeyonapi/781/

参数说明

参数 类型 是否必填 说明
uniqueFiled String[] 更新用的唯一标识
rightId String 使用的操作权限id 获取参数rightId步骤
dataList Object[] 导入的数据
formCode String 表名
loginName String 用于登陆的登录名 (登录名对应的人员必须有底表操作权限才可以,并不是普通用户)
doTrigger boolean 是否执行触发(Since V8.0sp2)

dataList的结构

参数 类型 是否必填 说明
masterTable Object 主表数据
subTables Object[] 明细表数据

masterTable的结构

参数 类型 是否必填 说明
name String 数据库表名称
record Object 记录的数据
changedFields String[] 需要计算的字段

masterTable—record的结构

参数 类型 是否必填 说明
id long 数据id
fields Object[] 包含字段

masterTable—record—fields的结构

参数 类型 是否必填 说明
name String 数据域名称
value String 数据值(优先)
showValue String 显示值

subTables的结构

参数 类型 是否必填 说明
name String 数据库表名称
records Object[] 包含的所有数据
changedFields String[] 需要计算的字段

subTables—records的结构

参数 类型 是否必填 说明
id long 数据id
fields Object[] 包含字段

subTables—records—fields的结构

参数 类型 是否必填 说明
name String 数据域名称
value String 数据值(优先)
showValue String 显示值

attachmentInfos的结构

参数 类型 是否必填 说明
subReference long 对应附件字段id值
fileUrl long 已上传文件的fileURL
sort int 排序

调用模版

{
    "formCode": "aaa1",
    "loginName": "zhai",
    "rightId":"56195256829429332.-470190193844795028",
    "doTrigger": true,
    "dataList": [
        {
            "masterTable":{
                "name":"formmain_0019",
                "record":{
                    "id":4035394180072293997,
                    "fields":[
                        {
                            "name":"field0001",
                            "value":"",
                            "showValue":"create"
                        },
                        {
                            "name":"field0002",
                            "value":"",
                            "showValue":"one"
                        }, 
                        {
                            "name":"field0003",
                            "value":"198747588475848444",
                            "showValue":""
                        }
                    ]
                },
                "changedFields": ["field0001","field0002"]
            },
            "subTables": [
                {
                    "name":"formson_0021",
                    "records": [
                        {
                            "id": 123456789102,
                            "fields": [
                                {
                                    "name":"field0005",
                                    "value":"",
                                    "showValue":"cap"
                                }
                            ]
                        }
                    ],
                    "changedFields": ["field0005"]
                }
            ],
            "attachmentInfos" : [
                {
                    "subReference" : "198747588475848444",
                    "fileUrl" : "7897958946781246",
                    "sort" : "0"
                }
            ]
        }
    ]
}

响应模版

{
    "code": 0,
    "data": {
        "successIdList": [
            4035394180072293997
        ],
        "failedData": {
        },
        "successCount": 1,
        "failedCount": 0
    },
    "message": ""
}

响应参数说明

参数 类型 说明
code String http请求code
data Object 表单数据
message String 提示内容

data的结构

参数 类型 说明
successIdList Long[] 成功的数据id
failedData Map<Long,String> 失败的数据id及失败原因
successCount int 成功数量
failedCount int 失败数量

# 无流程批量导出数据

附件没法直接下载问题解决方案

版本:Since V8.0 SP1

接口请求说明:

http请求方式:POST
http://ip:port/seeyon/rest/cap4/form/soap/export

注:请求需要携带token,否则无法使用,获取并传递token方法参考:https://open.seeyoncloud.com/seeyonapi/781/

参数说明

参数 类型 是否必填 说明
templateCode String 表单模版code(与应用绑定中保持一致)
beginDateTime String 导出数据的起始时间
endDateTime String 导出数据的截止创建时间
rightId String 权限id 获取参数rightId步骤
dataId Long 数据id
page Integer 分页信息,第几页,不传默认第1页
pageSize Integer 分页大小,不传默认500条

调用模版

{
    "templateCode":"ABC123",
    "beginDateTime":"2020-06-30",
    "endDateTime":"2020-07-02",
    "rightId":"6009669017095982620.-8527979346162529315"
}

响应模版

{
    "code": 0,
    "data": {
        "success": 1,
        "code": "200",
        "message": "操作成功!",
        "data": {
            "definition": {
                "form": {
                    "formId": "1856567583696046383",
                    "formName": "表单名称"
                },
                "fields": [
                    {
                        "name": "field0001",
                        "display": "数字1",
                        "fieldType": "DECIMAL",
                        "inputType": "text",
                        "formatType": "",
                        "fieldLength": "20",
                        "digitNum": "0",
                        "enumId": "0",
                        "isNotNull": "0",
                        "auth": "browse"
                    },
                    {
                        "name": "field0002",
                        "display": "数字2",
                        "fieldType": "DECIMAL",
                        "inputType": "text",
                        "formatType": "",
                        "fieldLength": "20",
                        "digitNum": "0",
                        "enumId": "0",
                        "isNotNull": "0",
                        "auth": "browse"
                    }
                ]
            },
            "data": [
                {
                    "masterData": {
                        "field0001": {
                            "value": "11",
                            "showValue": "11"
                        },
                        "field0002": {
                            "value": "22",
                            "showValue": "22"
                        }
                    },
                    "subData": {
                    }
                }
            ]
        }
    },
    "message": ""
}

返回参数说明

参数 类型 说明
code String http请求code
data Object 表单数据
message String 提示内容

data的结构

参数 类型 说明
success int 是否成功
code String 请求code
message String 提示内容
data Object 表单数据

data的结构

参数 类型 说明
definition Object 定义信息
data Object[] 数据列表

definition的结构

参数 类型 说明
form Object 表单定义
fields Object[] 字段定义

form的结构

参数 类型 说明
formId String 表单id
formName String 表单名称

fields的结构

参数 类型 说明
Name String 字段名称
display String 字段显示名称
fieldType String 字段类型
inputType String 输入框类型
formatType String 格式化信息
fieldLength String 字段长度
digitNum String 小数位长度
enumId String 枚举id(仅当该字段为枚举类型)
isNotNull String 是否必填,1为必填0为否
auth String 权限

data—data—data的结构

参数 类型 说明
masterData Map<String, Object> 主表数据
subData Map<String, List<Map<String, Object>>> 明细表数据

masterData中Object的结构

参数 类型 说明
value String 数据库值
showValue String 显示值

subData中Object的结构

参数 类型 说明
value String 数据库值
showValue String 显示值

# 附件没法直接下载问题解决方案

  • 存在问题: 底表导出数据接口,附件控件导出的是attachmentid,用户没法直接下载附件,需要直接返回fileid,如果有需要,需自行修改代码支持
  • 修改点: 1、修改代码com.seeyon.cap4.soap.service.SOAPExportDataService 1722415623446.png 差异代码如下
...
import com.seeyon.ctp.common.filemanager.manager.AttachmentManager;
...
	@Inject
    protected AttachmentManager attachmentManager;
...
		for (FormFieldBean formFieldBean : formBean.getMasterTableBean().getFields()) {
            FormAuthViewFieldBean formAuthViewFieldBean = authFieldMap.get(formFieldBean.getName());
            Object value = formDataMasterBean.getFieldValue(formFieldBean.getName());
            FormFieldValueVO valueVO = CAPCommonUtil.getFormFieldValueVO(value, formFieldBean, formAuthViewFieldBean.getAccess());
            if (formFieldBean.isAttachment() && valueVO.getValue() != null) {
                // String url = SystemEnvironment.getContextPath() + "/rest/commonImage/showImage?id=" + ctpEnumItem.getImageId() + "&size=source&type=image&createDate=" + createDate + Functions.csrfSuffix();
                masterData.put(formFieldBean.getName(),new SOAPExportFieldValueVO(valueVO.getValue(),valueVO.getShowValue(),attachmentManager.getBySubReference(Long.parseLong(valueVO.getValue()))));
            }else {
                masterData.put(formFieldBean.getName(), new SOAPExportFieldValueVO(valueVO));
            }

        }
...
for (FormDataSubBean formDataSubBean : subBeans) {
                Map<String, SOAPExportFieldValueVO> subVO = new HashMap<>();
                for (FormFieldBean formFieldBean : formTableBean.getFields()) {
                    FormAuthViewFieldBean formAuthViewFieldBean = authFieldMap.get(formFieldBean.getName());
                    Object value = formDataSubBean.getFieldValue(formFieldBean.getName());
                    FormFieldValueVO valueVO = CAPCommonUtil.getFormFieldValueVO(value, formFieldBean, formAuthViewFieldBean.getAccess());
                    if (formFieldBean.isAttachment() && valueVO.getValue() != null) {
                        // String url = SystemEnvironment.getContextPath() + "/rest/commonImage/showImage?id=" + ctpEnumItem.getImageId() + "&size=source&type=image&createDate=" + createDate + Functions.csrfSuffix();
                        subVO.put(formFieldBean.getName(),new SOAPExportFieldValueVO(valueVO.getValue(),valueVO.getShowValue(),attachmentManager.getBySubReference(Long.parseLong(valueVO.getValue()))));
                    }else {
                        subVO.put(formFieldBean.getName(), new SOAPExportFieldValueVO(valueVO));
                    }
                }
                subVOS.add(subVO);
            }
...

2、修改代码com.seeyon.cap4.soap.vo.SOAPExportFieldValueVO 1722415906555.png

创建人:qingsg
修改人:het、zhangzuh、hedan