二开案例.WEBAPI.使用WEBAPI赋值单据二开字段

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

二开案例.WEBAPI.使用WEBAPI赋值单据二开字段

智慧车间接口自定义参数及更新单据

1.   背景

智慧车间有很多接口是用来生成或更新CLOUD业务单据的,标准产品的做法是通过WEBSERVICE传入的参数,在后台经过一系列的校验和逻辑控制后,再生成某个单据对象,最后保存到数据库中。

由于受限于WEBSERVICE传入参数,所以生成单据时,属性值是有限的,某些项目由于业务扩展,需要传入一些额外的参数值,并希望将其更新到目标单据上。

本文档旨在指导二次开发人员利用标准产品的智慧车间API接口平台(详见《智慧车间API接口平台介绍》),将自定义参数值更新到后台单据上。

2.   适用对象

二次开发人员。

3.   扩展参数及更新单据

智慧车间接口平台对于单据生成类接口,通用的做法是在处理器端做校验,校验成功后,再生成一条或一组消息,传入到消息队列中,由执行计划拉取消息,处理后续的单据生成逻辑。

这种实现方式的主要目的是为了异步和解耦,并提升前端的响应速度,因此本方案只针对通过消息队列处理的场景,对查询数据类、报警、取消报警以及其他不走消息队列的自定义接口,不在本扩展方案支持范围内。

传入参数扩展分为两种场景,一种是在前端界面录入后,直接反映到后台单据上;一种是根据界面传入的参数,经过计算后,产生新的参数并反映到后台单据上。

本文将以已有接口“组装扫描”为例,描述两种场景下,如何通过智慧车间API接口平台扩展接口的参数,并穿透消息队列,最终反映到目标单据上。

3.1     通过前端传入参数直接更新

标准产品在部分单据生成类的WEBSERVICE接口中增加了扩展参数字段,在参数中以JSON格式输入目标单据待更新的字段及值,平台会自动将值更新到目标单据的对应字段上。

图3-1

上图中,ExtendParam就是扩展参数,其内容必须为JSON格式,需要注意以下几点:

l  JSON中的字段必须属于目标单据,且在关键实体上。目前主要的接口中,“组装工序扫描”、“包装工序扫描”、“生成不良汇报”对应的目标单据为【工序汇报单】。“完工送检”、“生成首检单”对应的目标单据为【检验单】。“生成退料单接口”对应的目标单据为【生产退料单】。“生成领料单接口”对应的目标单据为【生产领料单】。“工位确认上料”对应的目标单据为【工位在制清单】。,一般带单据体的单据,其关键实体为分录,否则为单据头,如【工序汇报单】的关键实体为“汇总”分录,【工位在制清单】的关键实体为单据头。

l  JSON中的字段名必须为目标单据元数据中字段的绑定实体属性。

图3-2

l  对于基础资料类型的字段,其字段格式必须为“绑定实体属性_Id”的形式,如3-1中工序汇报单汇总分录中的资源,字段名应该为ResourceId_Id,其值为对应基础资料的Id。

3.2     通过插件修改参数

其原理与3.1章中是一致的,只是我们可以针对前端传入的参数再做一些计算或查询,得到新的参数,将其传入到处理器中。

开发的准备步骤详见《智慧车间接口自定义返回值.docx》中的第3章,本文档不再对此赘述,只介绍插件开发的核心方法。

3.2.1     维护插件类

在4.1中新建的工程中或已有的工程中添加新的项目文件。

图3-3

此插件覆盖BeforeExecute方法,先获取到参数,再新建一个JSONObject对象,根据3.1章中的描述,放入对应的字段名及字段值。目前每个参数类中有10个可扩展的参数,分别为ExtendParam1~ExtendParam10,他们是一个平级的结构,如果都赋值的话,最终会合并之后更新到单据上。

3.3     更新效果

图3-4

4.   代码示例

public class AssemblyScanningParamPlugIn : AbstractSFSApiReqPlugIn<SFSASScanningParam, SFSASScanningResult>
    {
        public override void BeforeExecute(Kingdee.K3.MFG.SFS.App.Core.Executor.PlugIn.Args.BeforeExecuteEventArgs<SFSASScanningParam> e)
        {
            base.BeforeExecute(e);
            JSONObject js = new JSONObject();
            js.Put("OptRemark","好好学习");
            js.Put("ResourceId_Id",336439);
            e.ParamValue.ExtendParam1 = js.ToJSONString() ;
        }
    }


二开案例.WEBAPI.使用WEBAPI赋值单据二开字段

智慧车间接口自定义参数及更新单据1. 背景智慧车间有很多接口是用来生成或更新CLOUD业务单据的,标准产品的做法是通过WEBSERVICE传入的...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息