电子档案二次开发详细文档

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

电子档案二次开发详细文档

一、 单据归档扩展

  1. 获取主单单据

  2. 获取主单对应的附属单据

  3. 获取主单对应的附属单据(附属单据扩展)

  4. 获取单据信息

  5. 判断主单是否存在

  6. 设置xml里的附件和影像信息

  7. 获取单据的套打文件流

  8. 获取单据附件文件流

  9. 判断是否可以归档

  10. 反归档后续操作

二、 报表归档扩展

  1. 获取报表信息

  2. 获取报表文件流

  3. 反归档后续操作

一、单据归档扩展

1.获取主单单据

默认实现:
  凭证或者固定资产卡片作为主单

适用二开场景:
  需要归档除了凭证、固定资产卡片以外的单据为主单的数据

1.1.接口定义:

    /**
     * @param ctx 上下文
     * @param bosType 单据BOSTYPE
     * @param com.kingdee.eas.basedata.assistant.PeriodInfo period 期间信息
     * @param com.kingdee.eas.basedata.org.CompanyOrgUnitInfo org 组织信息
     * @return  key:单据id,value:单据对象info
     * @throws Exception
     */
  public Map<String,IObjectValue> getMainBills(Context ctx, String bosType,PeriodInfo period,CompanyOrgUnitInfo org) throws Exception;

1.2.具体步骤:

  1. 继承类:com.kingdee.eas.el.rec.tool.DefaultBillHandler,重写getMainBills方法

  2. 将二开类插入表t_sys_checkers中
    例:insert into t_sys_checkers (FBosType, FInterface, FChecker)
    values (单据的bostype,'com.kingdee.eas.el.rec.tool.IBillHandler',二开类的全路径)

  3. 归档内容中把附属单据选项勾选去掉

1.3.代码示例:

参考 凭证主单类:com.kingdee.eas.el.rec.tool.VoucherBillHandler#getMainBills方法

1.4.注意事项:

主单的number编码字段必须要有数据,否则会导致归档失败


2.获取主单对应的附属单据

默认实现:
  根据BOTP关系获取主单所有上游的附属单据(包括间接附属单据)

适用二开场景:
  主单和附属单据的关系不在BOTP中维护的

2.1.接口定义:

    /**
     * @param ctx 上下文
     * @param destObjId 主单单据id
     * @param contents 归档内容集合--key:单据BOSTYPE,value:归档内容
     * @return 附属单据id List
     * @throws Exception
     */
    public ArrayList<String> getAllRelationBill(Context ctx, String destObjId, Map<String, RecordBaseInfo> contents) throws Exception;

2.2.具体步骤:

  1. 继承类:com.kingdee.eas.el.rec.tool.DefaultBillHandler,重写getAllRelationBill方法

  2. 将二开类插入表t_sys_checkers中
    例:insert into t_sys_checkers (FBosType, FInterface, FChecker)
    values (单据的bostype,'com.kingdee.eas.el.rec.tool.IBillHandler',二开类的全路径)

2.3.代码示例:

参考 凭证主单类:com.kingdee.eas.el.rec.tool.VoucherBillHandler#getAllRelationBill方法

2.4.注意事项:

如果没有附属单据,返回空List对象,不要返回null


3.获取主单对应的附属单据(附属单据扩展)

和接口2区别:
1.此接口是在接口2基础上的扩展接口,即既要归档有BOTP关系的单据,又要归档其他关系的单据
2.此接口是针对某个附属单据去关联主单;接口2是根据主单信息主动去获取对应的附属单据,针对多个附属单据

默认实现:
  无

适用二开场景:

  • 需要在BOTP关系的基础上,再归档某一种与主单没有关系的附属单据

  • B单据与主单没有直接BOTP关系,例:A -> 主单、A -> B,归档主单的时候需要归档B单据

3.1.接口定义:

    /**
     * @param ctx 上下文
     * @param destObjId 主单单据id
     * @return 附属单据id List
     */
     public ArrayList<String> getRefBillInfo(Context ctx, String destObjId);

3.2.具体步骤:

  1. 实现接口:com.kingdee.eas.el.rec.tool.IRefBillHandler,重写getRefBillInfo方法

  2. 将二开类全路径填写到对应单据的归档内容 -> 单据设置 -> 关联方式:自定义 -> 自定义关联实现类

3.3.代码示例:

public class RefBillHandlerXX implements IRefBillHandler {
@Override
public ArrayList<String> getRefBillInfo(Context ctx, String destObjId) {
    ArrayList<String> list = new ArrayList<String>();
    try {
        // 根据destObjId找到对应的附属单据id,放入list中
        return list;
    } catch (Exception e) {
        return new ArrayList<String>();
    }

}

3.4.注意事项:

  • 二开类中只能返回归档内容对应的附属单据id,不可以返回不同类型的单据id
    例:假设二开类配置在付款单的归档内容上,那二开类只能返回付款单的id,不能是其他单据的id


4.获取单据信息

默认实现:
  根据传过来的EntityViewInfo参数查询

适用二开场景:
 需要添加查询字段,或者添加过滤条件

4.1.接口定义:

    /**
     * @param ctx 上下文
     * @param bosType 单据BOSTYPE
     * @param viewInfo 默认的查询对象
     * @return 查询出来的对象
     * @throws Exception
     */
    public IObjectCollection getObjectCollection(Context ctx, BOSObjectType bosType, EntityViewInfo viewInfo) throws Exception;

4.2.具体步骤:

  1. 继承类:com.kingdee.eas.el.rec.tool.DefaultBillHandler,重写getObjectCollection方法

  2. 将二开类插入表t_sys_checkers中
    例:insert into t_sys_checkers (FBosType, FInterface, FChecker)
    values (单据的bostype,'com.kingdee.eas.el.rec.tool.IBillHandler',二开类的全路径)

4.3.代码示例:

参考 凭证主单类:com.kingdee.eas.el.rec.tool.VoucherBillHandler#getObjectCollection方法

4.4.注意事项:

  • 不要返回null

  • 增量增加查询条件和查询字段,默认Selector对象和Filter条件不要删除或替换(如果已经存在Selector和Filter属性)


5.判断主单是否存在

默认实现:
  根据传过来的单据id参数查询id是否在表里存在

适用二开场景:
 需要添加其他判断是否存在的条件

5.1.接口定义:

    /**
     * @param ctx 上下文
     * @param billId 单据id
     * @return 布尔值
     * @throws BOSException
     */
    public boolean existsBill(Context ctx, String billId) throws BOSException;

5.2.具体步骤:

  1. 继承类:com.kingdee.eas.el.rec.tool.DefaultBillHandler,重写existsBill方法

  2. 将二开类插入表t_sys_checkers中
    例:insert into t_sys_checkers (FBosType, FInterface, FChecker)
    values (单据的bostype,'com.kingdee.eas.el.rec.tool.IBillHandler',二开类的全路径)

5.3.代码示例:

参考 凭证主单类:com.kingdee.eas.el.rec.tool.VoucherBillHandler#existsBill方法

5.4.注意事项:


6.设置xml里的附件和影像信息

默认实现:
  获取单据对应的EAS附件信息、影像信息、发票信息,设置到xml元数据中,供档案系统解析

适用二开场景:
 需要添加其他信息到xml元数据

6.1.接口定义:

    /**
     * @param ctx 上下文
     * @param com.kingdee.eas.el.rec.model.XmlBase xmlBase 单据信息
     * @param com.kingdee.eas.el.rec.RecordBaseInfo content 归档内容
     * @param index 序号
     * @return
     * @throws Exception
     */
     public void setXmlBaseProperties(Context ctx, XmlBase xmlBase, RecordBaseInfo content, int index) throws Exception;

6.2.具体步骤:

  1. 继承类:com.kingdee.eas.el.rec.tool.DefaultBillHandler,重写setXmlBaseProperties方法

  2. 将二开类插入表t_sys_checkers中
    例:insert into t_sys_checkers (FBosType, FInterface, FChecker)
    values (单据的bostype,'com.kingdee.eas.el.rec.tool.IBillHandler',二开类的全路径)

6.3.代码示例:

参考类 com.kingdee.eas.el.rec.tool.DefaultBillHandler#setXmlBaseProperties方法

    ArchInfo info = (ArchInfo) xmlBase;
    String bosType = content.getBillType().getBosType();
    //设置附件(包括单据本身的套打PDF)
    ArchUtils.setAttatchInfo(ctx, info, bosType, index);
    //设置影像信息
    ArchUtils.setImageInfo(ctx, info, bosType);
    //设置发票信息
    ArchUtils.setInvoiceInfo(ctx,info,content.isInvoice());

6.4.注意事项:

  • 如果重写了接口7或者接口8,必须要重写这个接口,在xml上设置对应的信息。
    例:如果单据还有附件在其他系统(不是通过EAS上传),需要归档到档案系统。这时候需要重写此接口和接口8,接口8负责获取附件文件流,此接口负责设置xml元数据信息,以便档案系统解析。接口7作用类似


7.获取单据的套打文件流

默认实现:
  根据归档内容上的套打模板、套打数据源,调用套打接口生成的文件流

适用二开场景:
 需要自己实现单据本身文件流的生成

7.1.接口定义:

    /**
     * @param ctx 上下文
     * @param com.kingdee.eas.el.rec.RecordBaseInfo content 归档内容
     * @param com.kingdee.eas.el.rec.model.ArchInfo info 单据信息
     * @param com.kingdee.eas.el.rec.model.FileInfo fileInfo 单据附件信息
     * @return 文件流
     * @throws Exception
     */
     public InputStream getBillPdfIs(Context ctx, RecordBaseInfo content, ArchInfo info, FileInfo fileInfo) throws Exception;

7.2.具体步骤:

  1. 继承类:com.kingdee.eas.el.rec.tool.DefaultBillHandler,重写getBillPdfIs方法

  2. 将二开类插入表t_sys_checkers中
    例:insert into t_sys_checkers (FBosType, FInterface, FChecker)
    values (单据的bostype,'com.kingdee.eas.el.rec.tool.IBillHandler',二开类的全路径)

7.3.代码示例:

参考类 com.kingdee.eas.el.rec.tool.DefaultBillHandler#getBillPdfIs方法

     InputStream is = ArchCloudUtil.getFileStream(ctx, info, content, fileInfo.getName());

7.4.注意事项:

  • 与接口6配合二开使用

  • 可以返回null,表示没有套打文件


8.获取单据附件文件流

默认实现
  在当前EAS中获取单据的附件

适用二开场景:
 需要添加其他附件(非EAS标准附件功能上传的附件)

8.1.接口定义:

    /**
     * @param ctx 上下文
     * @param com.kingdee.eas.el.rec.model.ArchInfo archInfo 单据信息
     * @param com.kingdee.eas.el.rec.model.FileInfo fileInfo 附件信息
     * @return 文件流
     * @throws Exception
     */
    public InputStream getBillAttachmentIs(Context ctx, ArchInfo archInfo, FileInfo fileInfo) throws Exception;

8.2.具体步骤:

  1. 继承类:com.kingdee.eas.el.rec.tool.DefaultBillHandler,重写getBillAttachmentIs方法

  2. 将二开类插入表t_sys_checkers中
    例:insert into t_sys_checkers (FBosType, FInterface, FChecker)
    values (单据的bostype,'com.kingdee.eas.el.rec.tool.IBillHandler',二开类的全路径)

8.3.代码示例:

参考类 com.kingdee.eas.el.rec.tool.DefaultBillHandler#getBillAttachmentIs方法

    new com.kingdee.eas.el.rec.tool.AttachmentDownloadServer().downloadFile1(ctx, attachmentId);

8.4.注意事项:

  • 与接口6配合二开使用

  • 可以返回null,表示没有附件


9.判断是否可以归档

默认实现
  无

适用二开场景:
 需要添加判断某个期间+组织是否可以归档的条件

9.1.接口定义:

    /**
     * @param ctx 上下文
     * @param bosType 单据BOSTYPE
     * @param com.kingdee.eas.basedata.assistant.PeriodInfo period 期间信息
     * @param com.kingdee.eas.basedata.org.CompanyOrgUnitInfo org 组织信息
     * @return 布尔值
     * @throws BOSException
     */
    public Boolean canArch(Context ctx, String bosType,PeriodInfo period,CompanyOrgUnitInfo org)throws BOSException;

9.2.具体步骤:

  1. 继承类:com.kingdee.eas.el.rec.tool.DefaultBillHandler,重写canArch方法

  2. 将二开类插入表t_sys_checkers中
    例:insert into t_sys_checkers (FBosType, FInterface, FChecker)
    values (单据的bostype,'com.kingdee.eas.el.rec.tool.IBillHandler',二开类的全路径)

9.3.代码示例:

9.4.注意事项:


10.反归档后续操作

默认实现
  无

适用二开场景:
 需要添加触发标准反归档操作后的动作,例:通知归档人,发送邮件消息等

10.1.接口定义:

    /**
     * @param ctx 上下文
     * @param info 归档记录
     * @return
     * @throws Exception
     */
     public void revokeArch(Context ctx, ArcRecordInfo info) throws Exception;

10.2.具体步骤:

  1. 继承类:com.kingdee.eas.el.rec.tool.DefaultBillHandler,重写canArch方法

  2. 将二开类插入表t_sys_checkers中
    例:insert into t_sys_checkers (FBosType, FInterface, FChecker)
    values (单据的bostype,'com.kingdee.eas.el.rec.tool.IBillHandler',二开类的全路径)

10.3.代码示例:

10.4.注意事项:

二、报表归档扩展

默认实现
  总账类报表:com.kingdee.eas.el.rec.tool.engine.gl.GLReportParsingEngineUtil
  资金类报表:com.kingdee.eas.el.rec.tool.engine.cas.CASReportParsingEngineUtil
  固定资产类报表:com.kingdee.eas.el.rec.tool.engine.assets.AssetsReportParsingEngineUtil
  应收应付类报表:com.kingdee.eas.el.rec.tool.engine.arap.ArApReportParsingEngineUtil

适用二开场景:
 需要归档非标准报表

1.获取报表信息

1.1.接口定义:

    /**
     * @param ctx 上下文
     * @param info 报表对象(包括归档记录、组织、期间等信息)
     * @return IXmlSrcObj 报表数据源
     * @throws Exception
     */
     public IXmlSrcObj getReportDataSources(Context ctx, ReportFilter info) throws Exception;

1.2.具体步骤:

  1. 继承类:com.kingdee.eas.el.rec.tool.engine.ReportParsingEngineUtil,重写getReportDataSources方法

  2. 将二开类全路径填写到对应报表的归档内容 -> 基本信息 -> 数据采集引擎类名

1.3.代码示例:

  • 参考默认实现类,构造IXmlSrcObj数据源对象

  • 返回值:IXmlSrcObj数据参考 com.kingdee.eas.el.rec.tool.engine.WithoutEntityReportParsingEngineUtil.WithoutEntityXmlSrcobj,里面标注了需要返回内容的具体含义

1.4.注意事项:

  • 如果要修改报表文件名称,需要设置报表数据源内reportName和reportSrcName属性

    XmlSrcObj.put("reportName","新文件名");
    XmlSrcObj.put("reportSrcName","原始文件名");


2.获取报表文件流

2.1.接口定义:

    /**
     * @param ctx 上下文
     * @param com.kingdee.eas.el.rec.model.IXmlSrcObj iXmlSrcObj 报表数据源
     * @return 文件流数组(PDF、XLSX、XLS等)
     * @throws Exception
     */
     public InputStream[] getFileISArray(Context ctx, IXmlSrcObj iXmlSrcObj) throws Exception;

2.2.具体步骤:

  1. 继承类:com.kingdee.eas.el.rec.tool.engine.ReportParsingEngineUtil,重写getFileISArray方法

  2. 将二开类全路径填写到对应报表的归档内容 -> 基本信息 -> 数据采集引擎类名

2.3.代码示例:

参考默认实现类,从参数iXmlSrcObj中获取/转换为文件流

2.4.注意事项:


3.反归档后续操作

默认实现
  无

适用二开场景:
 需要添加触发标准反归档操作后的动作,例:通知归档人,发送邮件消息等

3.1.接口定义:

    /**
     * @param ctx 上下文
     * @param filterList 报表归档记录
     * @return
     * @throws Exception
     */
    public List<ReverseReportMsgInfo> revokeArch(Context ctx,List<ReportFilter> filterList) throws Exception;

3.2.具体步骤:

  1. 继承类:com.kingdee.eas.el.rec.tool.engine.ReportParsingEngineUtil,重写revokeArch方法

  2. 将二开类全路径填写到对应报表的归档内容 -> 基本信息 -> 数据采集引擎类名

3.3.代码示例:

3.4.注意事项:


电子档案二次开发详细文档.rar

电子档案二次开发详细文档

一、 单据归档扩展获取主单单据获取主单对应的附属单据获取主单对应的附属单据(附属单据扩展)获取单据信息判断主单是否存在设置xml里的附...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息