出差单实现外勤业务二开指南
【适用版本】
s-HR Cloud V8.6.1.2及以上
【详细说明】
前言
在系统中实现外勤单业务方案有很多种,比如说做一个全新的外勤单功能,视图、权限、实体、工作流模板都是新的,这种方案优势很明显不会跟现有的单据产生关联,是一个独立的功能模块,跟其其它单据做了隔离,缺点也很明显开发周期长,要投入的开发资源多,对开发人员的要求也比较高,最起码BOS框架用到的技术都得熟练掌握。本文提供的方案是基于出差单做改造,在出差单的基础上来实现外勤业务,代码量少配置也不复杂,嘿嘿有点王婆卖瓜了,下面直接开整。
业务方案
出差单列表新增一个创建外勤多人单(单人单可参照多人单处理,核心逻辑是一样的)的入口。外勤多人单的页面是新视图,这里没有复用出差多人单的视图,因为复用的话,一大堆字段就得动态隐藏显示,不要给自己找麻烦,能走捷径为啥要绕远路。部分表单字段需要调整,例如出差时区、出差日期、出差开始时间、出差结束时间,出差原因、出差天数等等,统一“出差”改“外勤”,页面再增加一个隐藏的下拉字段,业务类型:出差/外勤;出差列表增加“业务类型”列,包含“出差”字眼的列名称要做调整,比如“出差时区”列名称改为“时区”,其他列做等同处理;在出差项目分组下面增加一个外勤项目;增加一个外勤时长,汇总外勤时间,并且可汇总到考勤结果汇总上。
技术实现
1. 新增一个枚举元数据BusType,只有两个值0、1,出差业务用0表示,外勤业务用1表示
2. 导入实体com.kingdee.eas.hr.ats.app.AtsTripBillEntry
出差分类实体增加业务类型属性busType,字段名称为busType,数据来源选择固定下拉列表
引用第一步新增的枚举属性
保存元数据校验无误后启用方案。
3. 新建外勤单视图,包含出差的字段名称记得都改过来
看下页面效果
4. 在出差项目分组新增“外勤项目”,项目类型为明细兼汇总,数据类型选择实数
5. 【开发平台-薪酬核算配置-核算函数】新增函数FunGetOutsideDay
函数体内容:
public double FunGetOutsideDay(double unitValue) {
com.kingdee.custom.function.AtsCalFunctionServiceExt atsFunctionService = new com.kingdee.custom.function.AtsCalFunctionServiceExt();
return atsFunctionService.getDay(unitValue,paramMap);
}
新建后台类com.kingdee.custom.function.AtsCalFunctionServiceExt继承com.kingdee.eas.hr.ats.function.AtsCalFunctionService,新增方法getDay,从出差单过滤出外勤业务
6. 考勤制度自定义外勤项目计算公式,外勤项目调用自定义函数进行计算