如何在提报单分录上增加、修改和删除字段
【适用版本】
s-HR Cloud V8.6.1.2及以上
【应用场景】
出于业务需求,客户希望对提报单上非提报项目类型的字段进行调整,比如修改字段某些属性、删除某个字段或者增加新的字段。
【详细说明】
1、提报单分录加载逻辑介绍
1.1 加载分录表头
1.1.1 在编辑页面下,提报单表单页的提报项目发生变化时,会触发提报单分录表的表头重新加载,即触发getEditGridColModel方法。视图中配置的js文件为:
<script src="${appPath}/${appCode}/web/js/integrate/base/submitbill/defaultBatchSubmitShemeBill.js" />
1.1.2 前端getEditGridColModel方法会调用后端Handler的getEditGridColModelAction方法加载columnModel。视图中配置的后端处理器为:
<handler class="com.kingdee.shr.compensation.web.handler.integrate.BatchSubmitShemeBillEditHandler" />
在BatchSubmitShemeBillEditHandler的getEditGridColModelAction方法中有一个可拓展的分录生成器,通过该分录生成器获取分录表头信息。
CmpColumnModels cmpColumnModels = getEntryGenerator(ctx).getEntryColumnModels(ctx, submitSchemeId, params);
(拓展点1)
1.1.3. BaseSubmitBillEntryGenerator简介
目前提报单分录的固定字段(非提报项目)加载哪些字段,是由视图com.kingdee.shr.compensation.app.integrate.BatchSubmitShemeBill.form.display配置决定的。
这些字段的加载方法,在BaseSubmitBillEntryGenerator中维护了视图中配置的field的name属性就对应字段加载columnModel方法,例如员工编码的columnModel加载方法为assembleNumber。
(拓展点2)
最终在方法getEntryColumnModelsCustom中通过反射调用完成了对表头的组装
1.2 加载分录数据
1.2.1 在脚本defaultBatchSubmitShemeBill.js中,getGridDataRequestURL为加载分录数据的方法。该方法配指定了加载数的后端处理器com.kingdee.shr.compensation.web.handler.integrate.BatchSubmitBillEntryGridHandler和加载数据的方法名getGridDataAction。
BatchSubmitBillEntryGridHandler的getGridDataAction方法拓展了父类并覆写了父类的getGridMap方法获取数据。
1.2.2 组装分录数据查询的SQL
上图所示的CmpIntegrateUtils类的getBillColumnListAndQuerySql方法组装了以下3种信息:
colNames: 字段在所属实体种的名称或者提报项目的数据库字段名
columnMap: 数值型字段名对应的精度信息
querySql: 数查询SQL,对应的变量为StringBuilder sd
(拓展点3)
1.3 分录F7选择员工后带出关联信息
用户在提报单分录上选择员工后,会自动填充组织和职位等信息,代码实现逻辑页在脚本defaultBatchSubmitShemeBill.js的setGridNameEvent方法中。
(拓展点4)
2、如何新增一个字段
2.1 拓展提报单单据分录,增加属性,给分录固定表和动态表增加字段(如何查找所有分录见社区文档如何根据提报单分录信息决定工作流走向)。如果字段是由其它属性带出无需报错则跳过这一步。
2.2 拓展视图,拓展js,拓展Handler ,拓展BaseSubmitBillEntryGenerator并在拓展的Handler中使用(见拓展点1)。
2.3 在拓展的BaseSubmitBillEntryGenerator的assembleFieldName2MethodName中,增加新字段名和方法名映射(见拓展点2),并实现新增字段的加载方法(模仿其它字段实现)。
2.4 在查询SQL中增加新增的字段(见拓展点3)
2.5 新增字段如果需要在员工选择后自动带出,在拓展的js的setGridNameEvent方法中,自动填充的信息增加对应的赋值(见拓展点4)
3、如何删除一个字段
3.1 拓展视图,拓展js,拓展Handler ,拓展BaseSubmitBillEntryGenerator并在拓展的Handler中使用(见拓展点1)。
3.2 在拓展的BaseSubmitBillEntryGenerator的assembleFieldName2MethodName中,删除字段名和方法的映射关系(见拓展点2)。
3.3 用uipk搜索视图com.kingdee.shr.compensation.app.integrate.BatchSubmitShemeBill.form.display,将不需要的字段从视图中删除。
4、如何修改字段属性
4.1 拓展视图,拓展js,拓展Handler ,拓展BaseSubmitBillEntryGenerator并在拓展的Handler中使用(见拓展点1)。
4.2 在拓展的BaseSubmitBillEntryGenerator的实现中,找到需要修改字段属性的字段加载方法,重写覆盖。下面以币别为例进行说明:
public void assembleCurrency(Context ctx, CmpColumnModels cmpColumnModels) { String currencyName = getMultiLan(ctx, "label7");// 币别在分录上的显示名称 Map<String, Boolean> attr = attrMap == null ? new HashMap<String, Boolean>() : attrMap.get("currency"); cmpColumnModels.add(currencyName, CmpColumnModelWrapper.createF7ColModel("currency", currencyName, 90) .assembleF7Editoptions(currencyName, UIPK_CURRENCY, true) .frozen(attr.get("frozen")) .hidden(attr.get("hidden")).get()); }
4.2.1 assembleF7Editoptions方法第3个参数true表示该字段必填, UIPK_CURRENCY指定了币别的F7选择的视图对应的
4.2.2 frozen表示是否列冻结,参数值来自视图com.kingdee.shr.compensation.app.integrate.BatchSubmitShemeBill.form.display的配置
4.2.3 hidden方法表示是否隐藏,参数值来自视图com.kingdee.shr.compensation.app.integrate.BatchSubmitShemeBill.form.display的配置
如何在提报单分录上增加、修改和删除字段
本文2024-09-22 21:12:26发表“s-hr cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-shr-118603.html