使用001信息集扩展开发自定义员工页签数据导入

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

使用001信息集扩展开发自定义员工页签数据导入

使用001信息集扩展开发自定义员工页签数据导入.pptx

【适用版本】 

s-HR V8.5及以上

【应用场景】 

使用001信息集扩展开发自定义员工页签数据导入

概述

内容

• 单行页签和多行页签实体的建立

• 数据源导入模板的配置

• 代码逻辑的编写

预期目标

• 掌握数据源导入的基本原理

• 能够实现自定义的数据源导入

单行页签和多行页签实体的建立

一、单行页签实体的建立

对于单行页签的建立,新建实体的时候父实体选择:com.kingdee.eas.hr.base.app.EmpInfoSinglePage

二、多行页签实体的建立

对于多行页签的建立,新建实体的时候父实体选择:com.kingdee.eas.hr.base.app. EmpInfoMultiPage

原因

• 多行页签父类里面有多行页签共有校验逻辑,继承多行页签无需重写这些逻辑,能够与标准产品逻辑保持一致。

• 单行页签父类虽然没有加校验逻辑,但是以后是可能填加的,继承它,可以保证与标准产品逻辑保持一致。

说明

• 本节我们以多行页签实体导入为例,多行页签实体的导入逻辑包含单行页签,掌握了多行页签导入的话,单行页签的逻辑就很简单了,单行页签这里不在详细讲解。

三、字段添加

一、为了方便讲解,在PersonMultiDemo实体上添加了几个字段,如下图所示:

二、com.kingdee.shr.custom.app.R_PersonMultiDemo_Occupation实体关系如下:

数据源导入模板的配置

说明

• 字段添加完成以后,实体导出表,以及实体校验发布和导出sql语句前面老师已经讲过,这里不再详细讲解,实体发布,相关表建好以后,下面说明一下数据源导入模板的配置。

• 数据源导入与实体导入的原理是不一样的,数据源导入是基本结构配置和查询配置实现的,因此在配置数据源模板之前,我们首先需要配置结构配置和查询配置。

一、结构配置

注意:实体继承com.kingdee.shr.base.syssetting.app.SHRBaseItem的,结构配置中的基础数据必须勾选为是

二、查询配置

首先需要在查询配置列表界面增加一个新的信息集

点击图中创建按钮出现查询配置信息集界面

注意新增字段的时候要注意一下字段对应的实体是否正确,点击保存按钮,查询配置完成。

三、模板配置

四、新建实现类

模板配置完成以后,就可以在对应的uipk页面下载模板,如下图所示:

点击其他信息导入,会弹出导入任务窗口,如下图所示:

点击图中的模板下载按钮,会列出与该页面uipk绑定的已经启用的模板,如下图所示:

点击图中的配置的多行页签演示模板下载,会报错,如下图所示:

图中的报错很容易理解,我们没有对应的实现类,因此需要新建一个实现类。

打开eclipse,按照模板配置的实现类新建,如下图所示:

注意:实现继承平台com.kingdee.shr.base.syssetting.app.io.fileImport.BaseImportService点击图中按钮,如图所示:

在父类选择框选择对应的实现类,点击OK,然后点击Finish,新建类完成。

补充说明:实现类新建以后,重启服务,下载模板已经没有问题。关于数据源导入,模板下载逻辑无需编写,平台逻辑已经满足需求。我们只要讲解导入的编写逻辑。

代码逻辑的编写

一、复写基类的数据源导入方法。

数据源导入我们首先需要复写平台的数据源导入方法。

说明

• 基类的importDataSource(BaseRowInfo row)方法不满足要求,这里我们需要复写。

• DynamicModelHelper大家需要注意其全路径,import类的时候会看到两个名称一样的类,需要        import com.kingdee.shr.base.syssetting.app.io.fileImport.DynamicModelHelper,不要搞混。

• DynamicModelHelper是数据源导入的主要逻辑处理类,其作用有:

(1) 根据导入模板表格信息拿到全部涉及实体信息。

(2) 根据实体信息判断当前导入类型【多行导入、单行导入】。

(3) 若涉及多行导入时,若主实体是员工,则根据员工配的置主键查询是否存在,若不存在则导入结束。

(4) 根据模板配置主键字段去数据库中查找已存在对象实体;若是选择更新导入,但有实体未查找到,则此行导入结束;若新增导入时,若实体查找到不为空,则提示错误,导入结束;新增导入时,创建空对象实体。

(5) 将上一步的处理得出的实体与导入行填写数据进行赋值。

(6) 将需要保存的实体返回给业务领域,由业务领域处理保存逻辑

二、设置主实体ID

说明

• 根据员工编码和员工名称获取PersonInfo对象的代码相对容易理解,但是需要注意的是BaseRowInfo对象获取员工编码和员工名称值的方法。

• helper.setCurrentBillid(personInfo.getId().toString())设置主实体ID是非常关键的一步,001数据源导入是以person为主实体的,这里需要设置主实体ID,跟设置的主键一起用于确定更新多行页签的哪一条数据。

三、获取要保存的实体对象,调用保存方法

说明

• model.getSaveModelMap()返回的是一个map集合,key为String类型,value为 IObjectValue类型,可以根据key值获取对应的对象,key为实体全名称。

• saveModelDatas(model)是父类的保存逻辑,里面使用的是对应的实体的 controllerbean的默认保存逻辑。

四、添加自定义实体的逻辑校验

根据实体全名称从map中获取相应的对象,进行强制转换以后,就可以进行相应的逻辑校验

五、保存逻辑优化

前面几步关于数据源的导入已经基本完成,但是目前存在一个问题,数据源导入是多实体导入,导入的时候,各自调用默认的保存方法即可,这里就可以看到,多实体保存没有实物,就会导致导入的时候某些实体导入成功,某些实体导入不成功的问题。因此最后再说一下数据源导入保存逻辑添加事务的方法:

• 新建Facade。

• 改造导入逻辑。

(1)、新加Facade。

在对应路径下鼠标右键-新建,选择功能。会弹出新建功能向导,如下图所示:

填写完名称别名点击完成按钮,如下图所示:

点击图中的方法页签,为façade添加对应的方法。

下面是方法参数和方法异常的添加。下图分别为方法参数和方法异常添加按钮。

首先点击方法参数添加按钮,弹出方法参数对话框,如下图所示:

注意类型选择框没有map类型,这里手动填写全名称,其次点击方法异常添加按钮,如下图:

点击图中的选择按钮,选择相应的异常即可,这样façade添加完成,校验发布后即可开始保存方法的改造。

(2)、改造导入逻辑

根据实体名称获取对应的实体,用于调用保存方法。

自定义导入实现类引入façade的保存方法即可。

六、限制标准实体数据导入

对于标准实体的导入,最好使用预置模板上的预置实现类导入,因为预置实现类里面有一些预置的逻辑校验。限制标准标准实体导入可以有以下两方面:

• 根据实体名称限制导入 。

• 限制实体的某个字段导入。

(1)、根据实体名称限制导入

说明

• Person员工实体需要从集合中删除,关于person实体的导入,有很多逻辑在标准实现类里面,因此导入员工Person实体信息的时候不使用自定义实现类。同时这里不抛异常的原因是Person实体是主实体,抛异常的话会影响自定义实体的导入

• 对于除了Person以外的其他标准实体导入,也不建议在自定义实现类导入,这里可直接抛异常即可

(2)、限制实体的某个字段导入

问:这里限制字段导入,为什么不通过模板上的字段名称(perMultiDemo.description)来判断呢?

• 因为数据源导入的字段名称是由结构配置对象编码+查询字段设置下的字段名称组成,结构配置对象编码是变的

使用001信息集扩展开发自定义员工页签数据导入

使用001信息集扩展开发自定义员工页签数据导入.pptx【适用版本】 s-HR V8.5及以上【应用场景】 使用001信息集扩展开发自定义员工页签数据...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息