s-HR人力编制逻辑,表结构及工具类总结

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

s-HR人力编制逻辑,表结构及工具类总结

【适用版本】

s-HR V8.5SP1及以上版本

【注意事项】

s-HR V8.6.1.2之后新增多维编制,多维编制和人力编制关于编制,维度,起初人数等概念含义是一样的,但是多维编制可设置多个维度的控编,表结构和工具类也不同于人力编制,本文只介绍人力编制相关内容。

【功能说明】

1、编制概念

1.1 编制是什么?做什么?

其实大家都懂编制是什么意思,一个职位给多少编制就能入多少人,就这个意思。进而可以引申到组织的编制,以及其它维度的编制设置。

通过设置某一维度的编制,比如职位,可以控制职位的编制人数,方便细微的管控此职位的占编人数变化,达到集团人员管控的目的。

1.2 什么是占编制

目前系统业务对“占编制”的定义是:任职占编制并且用工关系状态占编制。需要注意的是“占编制”和“占人头”是两个概念,不要混淆。

任职占编制:可以通过EAS客户端 > 员工变动操作配置查看,任职为主任职并且变动类型占编制即为任职占编制。

用工关系状态占编制: 可以通过员工基础资料数据维护 > 用工关系状态 查看是否占编制。

获取当前的占编人数:可以通过员工信息维护页面的高级过滤

1.3 维度和频度

老编制系统编制的设置固定为三个维度,分别是组织、职位、用工关系

频度有两个,分别为年、月

即老编制系统支持3个维度和2个频度的组合控编

1.4 期初人数

编制期初人数指:上月月底时刻的人数,不是当前时间的占编人数,是以变动记录表为主体

比如当前是202012月份,则12的期初人数是取的2020-11-30 23:59:59 的占编人数

1.5 流入流出

流入流入指:当前组织或职位的人数流入或者流出,以流入流出表为主体

单据未生效则为预计流入流出,有在途数据;单据生效则变为实际流入流出,删除在途数据

1.6 汇总编制、直属编制

以组织来说,组织是有层级的。

A组织的汇总编制就是A组织包含下级的编制数,也就是A组织直属编制 + A组织下级组织编制之

A组织的直属编制就是字面的意思,就是A组织自身的编制数,不包含下级的编制,其实也就是组织下职位的编制之和的最大数量。

需要注意的是,编制表页面上展示的是汇总编制,如果只导入直属编制,那么在编制表页面是没有数据显示的。

1.7 定编明细

处理提单时,很多人问定编明细是什么意思?甚至有些人把编制数据写到定编明细字段中,然后问为什么编制没有生效

据我理解及咨询德马,定编明细这个字段没有用处,没有实际的业务意义;

它可以被理解为或者用做 “备注”。比如原来打算给A组织设置10个编制,于是可以给定编明细设置为10,具体编制也为10,后来由于各种各样的理由,A组织的编制更改了很多次,变成了16,这时候可以不忘初心看到定编明细,明白了自己的初衷是10.

由此看到,定编明细确实没什么用,不用过多关注。

2、页面及对应功能

人力编制模块主要包括四个页面,分别是人力编制表、人力编制控制线、人员需求申请、人力编制动态预览。其中核心和最常用的是人力编制表人力编制动态预览。


2.1 人力编制表

人力编制表可录入基于行政组织、职位、用工关系维度的人力编制,同时也支持年度、月度的人力编制维护,是编制系统核心的部分,用于建立编制表并录入编制数据。

PS 用工关系维度的编制在实际业务中很少有人使用,主要还是组织维度、职位维度,或者组织+职位)


2.2 人力编制动态预览

人力编制动态预览可以查询各行政组织、职位、用工关系状态下的编制数、实际人数、流入流出及可用编制人数情况,各维度的编制情况一览无遗,是业务人员最常用的功能。

2.3 人力编制控制线

人力编制控制线支持自上而下人力编制,上级可以控制下级行政组织的编制总数不能超过控制线

说白了就是可以给组织设置一条线,设置的编制数不能超过这条线,不选控制线的话,编制数就不限制填写。

PS:控制线在实际业务上基本没人使用)

2.4 人员需求申请

用人部门提交人员需求申请,可支持增补人员申请及扩编申请流程

人员需求申请的初衷是正规的增编流程,比如一个编制表已经填好了编制并启用了,A职位的占编人数已满,但是现在A职位需要再入职一个人,那么就可以走人员需求申请,通过工作流审批增加编制。当然了,编制表提供了变更的功能,可以直接改编制。

人员需求申请功能存在一定的缺陷,详见后文。


3、主要实现类

3.1 人力编制表

com.kingdee.shr.costbudget.web.handler.StaffingListHandler

com.kingdee.shr.costbudget.web.handler.StaffingHandler (编制表的最重要handler

com.kingdee.shr.costbudget.util.StaffingExcelUtilExcel工具类,主要是全量导入的逻辑)

com.kingdee.shr.costbudget.util.StaffingHelper(编制工具类)


3.2 人力编制动态预览

com.kingdee.shr.costbudget.web.handler.StaffingStatHandler(动态预览页面的数据)

com.kingdee.shr.costbudget.util.StaffingStatHelper(期初人数、流入流出等重要的SQL


3.3 人员需求申请

com.kingdee.shr.costbudget.web.handler.StaffingAddBillEditHandler(表单)

com.kingdee.shr.costbudget.web.handler.StaffingAddBillListHandler(列表)


3.4 人力编制控制线

目前业务来看并不重要:

com.kingdee.shr.costbudget.web.handler.StaffingControlEditHandler(表单)

com.kingdee.shr.costbudget.web.handler.StaffingControlListHandler(列表)


3.5 编制历史表处理

“变更中”状态的编制走的是历史表,不过尽量不要在变更中去处理提单,麻烦!等它生效

com.kingdee.shr.costbudget.web.handler.StaffingHisListHandler

com.kingdee.shr.costbudget.web.handler.StaffingHisViewHandler


4、主要数据表

4.1 编制重要表

T_HR_staffing                  人力编制表

T_HR_staffingOrg               组织编制数据表

T_HR_staffingPost              职位编制数据表

T_HR_staffingLaborRelation      用工关系编制数据表(基本不用)

文章不会提供数据字典,如有需要可通过s-HR系统下载数据字典查看。


4.1.1 T_HR_Staffing

记录人力编制列表的信息,通过此表关联组织、职位编制表的具体数据


4.1.2 T_HR_StaffingOrg

记录组织的具体编制数据,通过字段FStaffing和人力编制表关联

查询数据:SELECT * FROM t_hr_staffingorg where FStaffing = '' and FAdminOrgUnit = '' and FMonth = 0 ; 再加一个FState就可以唯一确定一条数据。

FMonth = 0即查询年度编制,为1-12 即查询月份具体编制,查询根据频度来定。

表里面是设计了年度编制两个字段的,后面应该是弃用了,不要产生误解。


4.1.3 T_HR_StaffingPost

记录职位的具体编制数据,和组织编制表差不多,多了个职位字段,相当于编制具体到组织下面的职位了。组织、职位,组织+职位是最常用的控编组合。


4.2 相关重要表

T_BD_PersonHis          员工历史表

T_HR_EmpOrgRelation     员工变动记录表

这两张表是编制获取期初人数的关键表。


T_HR_EmpFlowInOut      流入流出表

计算编制流入流出的关键表。


T_HR_EmpPosChangeData  任职经历变化过程表(在途数据)

单据还没有正式生效时的在途数据,生效后事务删除,编制的计算要算入在途表的数据。


5、重要OSF和方法

5.1 GetStaffingStateService

编制最重要的OSF,各控编入口调用,返回控编结果。

参数说明:

adminOrg.id: 需要获取编制状态的 行政组织 id ,非必填

position.id: 需要获取编制状态的 职位id值,非必填

employeeModle.id: 需要获取编制状态的 用工关系的id值,非必填

hassub:是否包含下级

bizDate:取数参考时间,时间格式yyyy-MM-dd 或者:yyyy-MM-dd HHss


返回值:

orgId: 缺编组织id

orgName:  缺编组织名称

positionId: 缺编职位id

positionName: 缺编职位名称

labelRelationId: 用工关系类型id

labelRelationName: 用工关系类型名称

isStaffingShort: 是否缺编

shortNumber: 缺编数量


5.2 SHRPersonCountOfPersonPlanService

获取当前编制人数及在途人数,GetStaffingStateService中有调用此OSF计算可用编制。

参数说明:

adminOrg.id: 需要获取编制状态的 行政组织 id ,非必填

position.id: 需要获取编制状态的 职位id值,非必填

employeeModle.id: 需要获取编制状态的 用工关系的id值,非必填

hassub:是否包含下级

bizDate:取数参考时间,时间格式yyyy-MM-dd 或者:yyyy-MM-dd HHss


返回值:

subPersonCount : 在途需减少编制人数

addPersonCount:  在途需添加编制人数

personCount: 当前实际在编人数

5.3 SHRActionVerifyByPersonPlanCustomerTool工具类

编制校验拓展工具类:

此工具类封装了入编制和去编制的一些校验方法,以及单据提交审批、撤销、删除时需要处理编制数据的相关方法,如果入转调离使用编制逻辑和系统原有业务不匹配时,需要二开独立业务功能时,使用该工具类是具有很好的参考性 ,这是人力编制模块最重要的工具类,基本封装了需要使用的功能,异常处理也非常智能。

工具类常用方法说明:

5.3.1  canAddSHRPerson方法

逻辑: 判断组织、职位、用工关系是否可以添加占编人数。

5.3.2  deleteEmpPosChangeData方法

逻辑: 删除任职经历变化过程表数据,经常撤销或反审批单据时调用。

5.3.3  refreshEmpPosChangeDataState方法

逻辑: 刷新任职经历变化过程表数据状态


5.4 人力编制表的保存方法

人力编制表是编制的核心。保存这一块从前端到后端都有很多有趣的东西,特别是前端的组织树,还有翻页控件等。后端很多的校验逻辑,值得把保存的链路都看一遍。


5.5 动态预览获取数据方法

动态预览页面三个维度获取页面数据的方法,里面包含了期初人数,流入流出,可用编制的SQL和计算逻辑,看完基本就知道编制的大部分逻辑了。

6、常见问题及解决思路

6.1填写了编制数据却没有控编

思路:主要是看EAS客户端有没有开启多维控编参数

6.2 页面上编制数量足够,但是入职被控住了编

思路:页面上填写的是汇总编制,入职是需要校验职位的编制的,如果组织也填写了编制,那么还需要校验组织的直属编制。页面上看起来此组织填写了编制,实际上数据库存的直属编制不足,就会校验住。所以需要去组织表看一下直属编制够不够。

6.3 职位编制同步汇总到组织编制问题

6.3.1 职位编制没有同步到组织编制

思路:1、首先需要去看EAS客户端的同步汇总参数是否打开

2、同步汇总的触发条件是职位的编制发生改变,而不是有些人以为的定时任务一样。功能是写在职位编制的保存里面,而前端传入的编制保存参数只会拿更改的数据,可以去看看保存的逻辑。

6.3.2 同步之后的数据不对

思路:因为把封存组织、职位的编制也算了进去。这个问题85SP1我已经修改了。

6.4 是否可以支持组织编制汇总

目前不能支持,组织编制汇总存在两个问题:

1、 组织之间存在层级关系,会重复汇总。

2、 组织同步汇总和职位同步汇总相冲突。

6.5 (提单很多、重点)编制动态预览数据不对

6.5.1 期初人数问题

概念部分提到了对期初人数的定义,并且现在已经在85SP1版本修复了正确的期初人数SQL

未打最新补丁的期初人数可能存在几个问题:

1、 三个维度原先取得是月初的00:00:00 ,不符合单据的生效时间,并且会和流入流出的时间重复产生重复的计数,造成错误的可用编制。

2、 用工关系维度的期初人数计算不正确。因为离职时用工关系为空的情况会匹配不到,最新已更改为从用工关系历史表去匹配。

6.5.2 流入流出人数问题

流入流出分为实际流入流出和预计流入流出,这一块的数据问题很多,本身程序上就有很多问题。

以离职为例,发起离职单,如果这个人占编(任职、用工关系都占编制),那么会立即算入在途数据,预计流出+1,可用编制+1,离职单据生效(最后工作日后一天),实际流出+1

流入流出原来存在的主要问题是:离职时用工关系为空,SQL用的是inner join匹配不上,应该改为left join,此问题85SP1已修复。

但是预计流入流出现在的玩法其实也是存在问题的,比如一个1月的调动单,现在已经到2月了,那个单还是没有审批,所以也不在预计流入流出里面,动态预览里面显示不到这条数据,在途表里面有这条数据,编制会校验住,提单自然来了。这种情况目前看程序来讲,应该改成校验在途表的所有数据,而不是当前月份的单据生效数据。但还需要考虑会不会有其它影响。

6.5.3 临时更改是否占编问题

场景:举例系统预置的一个用工关系状态“劳务派遣”默认为占编;

比如系统中11月有10个用工关系为劳务派遣的占编的人,那12月这10个人统计在期初人数里面;现在12的某一天将“劳务派遣”更改为不占编,这种操作在流入流入表不会产生数据,那么在编制里面也不会体现出来,“劳务派遣”的人还是会继续占着编制。

目前确实是这样的,但有些客户觉得不合适,还在需求分析中。

6.5.4 历史补录问题

场景:如当前月份是12月份,11月份补录入职,校验的编制均为12月份(当前月份)数据。

经分析应该改为:单据生效月份编制数 - 单据生效月份下月期初人数

概要不在我手里,估计下个补丁会修复历史补录的问题。

6.6 汇总编制和直属编制问题

前面已经解释过汇总和直属的概念,这种问题就是因为客户或实施没有理解这种关系。

1、导入时只填了直属,然后页面显示的是汇总,就觉得数据没有导入进去。

2控编时被控住了,只看页面编制表的数据,不去看动态预览。

这些情况都是因为没有区分出汇总和直属。

6.7 导入问题

编制这边的导入分为82开始的全量导入和85SP1新增的空模板导入,目前来说,全量导入用得比较多一点。

需要注意的是,编制全量导入不是用的平台的导入逻辑,是领域自己写的Excel读取导入,目前来说存在一些问题。


1、目前的导入时逐行读取,没有解决并发导入的问题,所以大并发导入可能会导入重复数据,造成脏数据编制校验的问题。这个问题目前程序并没有很好的解决方案,不过用户存在此问题的也比较少,现在一般是清理重复数据。


3、 导入大数据量时,会存在进度条报302的问题。以前测试环境复现了,但现在又不能复现,目前没有分析出原因。


4、 导入的编制数据必须是数值格式,文本格式可能会读取不到导不进去。这类问题还挺多的,别去看提单上说确认是数值格式什么的,明明是文本格式的数值,在那里确认确认。碰到说导入导不进去的,先去看看是不是数值。


5、 第四种导不进去就是前面所说的,只填了直属编制或者定编明细,而页面显示的是汇总编制。

6.8 人员需求申请的缺陷

当某个维度需要增编走审批流程时,那么会用到人员需求申请。

人员需求申请页面必须填写组织和职位,也就是说这个增编你是具体到职位的。但是有些客户只用组织控编,并不用职位维度,那么一走人员需求申请的话就会填上职位的编制,造成整个编制数据错误。

目前来说的话设计如此,只能说人员需求申请目前不满足只控组织维度的情况增编,这是一个设计上的缺陷。这种情况就需要走编制表变更。

6.9 员工初始化导入影响流入流出的问题

目前编制占编的定义中有一个是任职占编制,任职占编制就包括了任职为主任职+变动类型占编制。

而员工初始化导入几个版本来都存在一个问题,导入的员工在流入流出表初始化任职状态写死为0,即为兼职,但实际在变动记录表中是为主任职。这样的话员工做操作时,流入流出不会在编制动态预览上体现,因为判定这个员工初始就是不占编的。最近这类问题挺多的,需要将流入流出表的任职状态改为正确的。

6.10 如何实现部分控编

有些大型集团,并不是整颗组织树都想使用编制,而是部分组织想要控编,目前人力编制是可以支持这种需求的。

做法:只填写需要控编的组织即可,不需要控编的组织不填写编制数据,即可实现部分控编。


大概总结这10比较常见的问题,供大家参考。


s-HR人力编制逻辑,表结构及工具类总结

【适用版本】s-HR V8.5SP1及以上版本【注意事项】s-HR V8.6.1.2之后新增多维编制,多维编制和人力编制关于编制,维度,起初人数等概念含...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息