电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

金蝶s-HR Cloud 考勤计算二次开发文档(8.5).docx

金蝶s-HR Cloud 考勤计算二次开发文档(8.5).docx_第1页
1/34
金蝶s-HR Cloud 考勤计算二次开发文档(8.5).docx_第2页
2/34
金蝶s-HR Cloud 考勤计算二次开发文档(8.5).docx_第3页
3/34
考勤计算二次开发帮助文档目录一.文档概述.......................................................................................................................4二.流程一览.......................................................................................................................51.考勤计算入口...............................................................................................................62.考勤计算准备数据.......................................................................................................62.1考勤计算-计算器封装...................................................................................................62.2.1考勤计算-计算器(calculator).............................................................................62.2全局信息集globeMap封装...........................................................................................72.2.1与人员无关的基础信息集......................................................................................72.2.2与人员有关的动态信息集......................................................................................73.内置考勤项目计算.......................................................................................................83.1取卡................................................................................................................................83.2内置考勤项目计算(打卡).........................................................................................93.2.1异常.........................................................................................................................93.2.2请假.......................................................................................................................103.2.3出差.......................................................................................................................103.2.4加班.......................................................................................................................113.2.5其他.......................................................................................................................113.3内置考勤项目计算(不打卡)...................................................................................123.3.1请假.......................................................................................................................123.3.2出差.......................................................................................................................133.3.3加班.......................................................................................................................133.3.4其他.......................................................................................................................134.自定义考勤项目计算.................................................................................................144.1考勤计算公式..............................................................................................................144.2自定义函数..................................................................................................................14三.示例演示.....................................................................................................................153.1前端页面配置..................................................................................................................153.2后端重构..........................................................................................................................16四.总结.............................................................................................................................17附录1.考勤计算常量表.........................................................................................................18附录2.考勤计算信息集速查.................................................................................................27附录2.1MapParam信息集结构表................................................................................27附录2.2calculateProParamsVo对象结构表..................................................................28附录2.3globeMap信息集结构表...................................................................................30一.文档概述考勤计算是考勤业务中的重要一环,随着代码的不停迭代,目前的考勤计算功能已经能够高效准确地完成既定的任务。但是,考虑到业务的多样性和延展性,出厂的考勤计算功能可能不能100%地满足每个公司的业务需求,为了让广大客户能够更全面的使用和更个性化地定制自己的业务,在最新版本的系统中,考勤计算已经能具有一定继承性和扩展性,可以进行深度的二次开发。所谓的二次开发,就是基于目前考勤计算框架,在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能。而考勤计算的二次开发,主要包括以下两方面的内容:1、考勤内置项目计算的重写开发;2、考勤自定义项目自定义函数的扩展开发;所以接下来文档将会全面地介绍考勤计算的框架,并会举例说明二次开发的流程以及各大注意事项。在阅读之前我们希望您已经具有一定的考勤计算业务基础,也有使用JAVA语言的实战经验,这样会更加快速地吸收文档内包含的知识。二.流程一览1.考勤计算入口目前考勤计算有四个入口,分别是:(1)考勤计算看板;(2)考勤计算页面-计算选中行;(3)考勤计算按页面-全部计算;(4)考勤计算后台事务。这四个考勤计算入口后台走的都是同一套逻辑,所有二次开发无须针对四个入口分别定制,进行一次的二次开发即对所有的入口同时生效。2.考勤计算准备数据2.1考勤计算-计算器封装会根据当前系统中的所有考勤制度上的设置,将各个业务的计算器封装在一起(有的业务分为打卡考勤/非打卡考勤);考勤计算过程中,会根据当前计算人员对应的考勤制度以及打卡类型(打卡考勤/非打卡考勤),自动选择不同的计算器集合依次调用集合中的计算器。2.2.1考勤计算-计算器(calculator)考勤计算的计算器是二次开发的主要内容,它包含了考勤计算全部内置项目的计算,一个业务可能有一到两个计算器,每个计算器对应了一个类,每个类中计算了多个内置考勤项目(可以在附录中查看)在考勤制制度中各块业务的选项卡中可以配置,依次为:(1)异常:只有一个计算器,只会在打卡考勤中生效;(2)请假:分为打卡考勤/不打卡考勤两个计算器;(3)出差:分为打卡考勤/不打卡考勤两个计算器;(4)加班:分为打卡考勤/不打卡考勤两个计算器;(5)取卡:只有一个计算器,只会在打卡考勤中生效;(6)其他:分为打卡考勤/不打卡考勤两个计算器;配置完毕后,实际考勤计算的时候,会根据人员是否打卡/不打卡考勤,组装不同的计算器。配置的内容为对应业务类的全路径,二次开发的时候,可以对这些类进行继承,在子类上进行二次开发,或者定义一个全新类,然后将完成之后的类全路径,复制到对应的配置项中。在二次开发的计算器中,每个计算器必须返回对应业务计算的内置考勤项目,否则计算结果将有缺失,附录中可以查看每个业务对应的计算器必须返回的结果集内容。注意:严禁修改出厂计算器对应的后台类。2.2全局信息集globeMap封装2.2.1与人员无关的基础信息集在考勤计算数据准备阶段,会准备这一部分的数据,并把结果放进globeMap中,在整个考勤计算过程中,这部分信息集不会做更变也不会做更新。属于静态信息集。所以在考勤计算过程中,请勿更改一下相关的设置,以免造成考勤计算结果和设置不一致的情况。信息集包括:1.批量查询取卡规则单个信息的集合;2.批量查询所有班次信息集合;3.所有假期制度;4.所有考勤制度;5.是否参与调休计算参数-公共参数;6.是否参与加班管控计算参数-公共参数;7.是否参与加班管控计算参数-加班管控;8.全局默认的工作日历;9.查询工作日历明细数据;10.假期制度主表信息;11.查询以下考勤基础资料:加班类型、出差类型、假期类型、班次类型、加班原因、加班补偿方式。注:在附录中可以查询信息集的详情。2.2.2与人员有关的动态信息集进入考勤计算主流程后,在进行具体业务计算前,会进行与人员有关的信息集查询,这部分信息集称为动态信息集,查询完这部分数据后,会结合静态信息集,对考勤计算人员进行过滤,拆分打卡/不打卡考勤人员,记录不参与计算人员的错误日志等。信息集包括:1、批量查询考勤档案信息集合;2、查询一批次人员的人员职位,岗位,组织,HR组织-信息集合;3、查询一批次人员的任职历史,查询某人考勤日期那天的组织;4、查询一段时间,一批人次的原始打卡记录信息;5、查询人员和考勤日期对应的考勤明细信息;6、查询人员和考勤日期对应的排班分录信息;7、与人,考勤计算开始结束时间有关的所有单据信息:包括出差单、加班单、请假单、请假单明细、销假单、补签卡;8、在最后,会根据已有的信息集信息,做一次过滤和分类,排除掉不能考勤计算的人员,并记录日志,将打卡和非打卡考勤人员分类。注:在附录中可以查询信息集的详情。3.内置考勤项目计算3.1取卡对应的计算器为:com.kingdee.shr.ats.calculate.implement.FetchCardPro此计算器必须对以下结果集进行计算更新:结果集变量名变量含义oneOnTime第一段上班时间oneOffTime第一段下班时间twoOnTime第二段上班时间twoOffTime第二段下班时间threeOnTime第三段上班时间threeOffTime第三段下班时间oneOnWorkTimeEarliest一段段头最早时间oneOnWorkTimeLatest一段段头最晚时间oneOffWorkTimeEarliest一段段尾最早时间oneOffWorkTimeLatest一段段尾最晚时间twoOnWorkTimeEarliest二段段头最早时间twoOnWorkTimeLatest二段段头最晚时间twoOffWorkTimeEarliest二段段尾最早时间twoOffWorkTimeLatest二段段尾最晚时间threeOnWorkTimeEarliest三段段头最早时间threeOnWorkTimeLatest三段段头最晚时间threeOffWorkTimeEarliest三段段尾最早时间threeOffWorkTimeLatest三段段尾最晚时间3.2内置考勤项目计算(打卡)3.2.1异常对应的计算器为:com.kingdee.shr.ats.calculate.implement.PunchardExceptionPro此计算器必须对以下结果集进行计算更新:结果集变量名变量含义oneLateValue第一段迟到分钟oneLeaveValue第一段早退分钟twoLateValue第二段迟到分钟twoLeaveValue第二段早退分钟threeLateValue第三段迟到分钟threeLeaveValue第三段早退分钟oneAbsentValue第一段旷工分钟twoAbsentValue第二段旷工分钟threeAbsentValue第三段旷工分钟lateTimes迟到次数lateMinuts迟到分钟leaveTimes早退次数leaveMinuts早退分钟absentTimes旷工次数absentHours旷工小时lackCardTimes缺卡次数3.2.2请假对应的计算器为:com.kingdee.shr.ats.calculate.implement.PunchardLeaveBillPro此计算器必须对以下结果集进行计算更新:结果集变量名变量含义leaveAtsTimes请假次数leaveAtsHours请假时长(小时)leaveAtsDays请假时长(天)sickLeaveTimes病假次数sickLeaveDays病假时长(天)sickLeaveHours病假时长(小时)yearLeaveTimes年假次数yearLeaveDays年假时长(天)yearLeaveHours年假时长(小时)matterLeaveTimes事假次数matterLeaveDays事假时长(天)matterLeaveHours事假时长(小时)tuneLeaveDays调休假时长(天)tuneLeaveHours调休假时长(小时)marryLeaveDays婚假时长(天)birthDays产假时长(天)accompanyBirthDays陪产假时长(天)birthControlDays节育假时长(天)injuryDays工伤假时长(天)visitDays探亲假时长(天)funeralDays丧假时长(天)otherLeaveDays其他假期时长(天)otherLeaveHours其他假期时长(小时)checkLeaveHours产检假时长(天)3.2.3出差对应的计算器为:com.kingdee.shr.ats.calculate.implement.PunchardTripBillPro此计算器必须对以下结果集进行计算更新:结果集变量名变量含义tripTimes出差次数tripDays出差时长(天)tripHours出差时长(小时)3.2.4加班对应的计算器为:com.kingdee.shr.ats.calculate.implement.PunchardOverTimeBillPro此计算器必须对以下结果集进行计算更新:结果集变量名变量含义tuneOT1Hours调休OT1小时数tuneOT2Hours调休OT2小时数tuneOT3Hours调休OT3小时overTimeOT1Hours计加班费OT1小时数overTimeOT2Hours计加班费OT2小时数overTimeOT3Hours计加班费OT3小时数3.2.5其他对应的计算器为:com.kingdee.shr.ats.calculate.implement.PunchardOtherPro此计算器必须对以下结果集进行计算更新:结果集变量名变量含义dayHour应出勤时数-每天工作小时数dayHourFact实际出勤时数attendDays应出勤天数attendDaysFact实际出勤天数fillTimes补卡次数signTimes签卡次数3.3内置考勤项目计算(不打卡)3.3.1请假对应的计算器为:com.kingdee.shr.ats.calculate.implement.NoPunchardLeaveBillPro此计算器必须对以下结果集进行计算更新:(同打卡)结果集变量名变量含义leaveAtsTimes请假次数leaveAtsHours请假时长(小时)leaveAtsDays请假时长(天)sickLeaveTimes病假次数sickLeaveDays病假时长(天)sickLeaveHours病假时长(小时)yearLeaveTimes年假次数yearLeaveDays年假时长(天)yearLeaveHours年假时长(小时)matterLeaveTimes事假次数matterLeaveDays事假时长(天)matterLeaveHours事假时长(小时)tuneLeaveDays调休假时长(天)tuneLeaveHours调休假时长(小时)marryLeaveDays婚假时长(天)birthDays产假时长(天)accompanyBirthDays陪产假时长(天)birthControlDays节育假时长(天)injuryDays工伤假时长(天)visitDays探亲假时长(天)funeralDays丧假时长(天)otherLeaveDays其他假期时长(天)otherLeaveHours其他假期时长(小时)checkLeaveHours产检假时长(天)3.3.2出差对应的计算器为:com.kingdee.shr.ats.calculate.implement.NoPunchardTripBillPro此计算器必须对以下结果集进行计算更新:(同打卡)结果集变量名变量含义tripTimes出差次数tripDays出差时长(天)tripHours出差时长(小时)3.3.3加班对应的计算器为:com.kingdee.shr.ats.calculate.implement.NoPunchardOverTimeBillPro此计算器必须对以下结果集进行计算更新:(同打卡)结果集变量名变量含义tuneOT1Hours调休OT1小时数tuneOT2Hours调休OT2小时数tuneOT3Hours调休OT3小时overTimeOT1Hours计加班费OT1小时数overTimeOT2Hours计加班费OT2小时数overTimeOT3Hours计加班费OT3小时数3.3.4其他对应的计算器为:com.kingdee.shr.ats.calculate.implement.NoPunchardOtherPro此计算器必须对以下结果集进行计算更新:结果集变量名变量含义dayHour应出勤时数-每天工作小时数dayHourFact实际出勤时数attendDays应出勤天数attendDaysFact实际出勤天数注:请勿对所有内置考勤项目的出厂计算器进行任何形式的修改。4.自定义考勤项目计算自定义的考勤项目计算是基于公式平台的,通过定制自定义公式,调用自定义函数实现考勤结果的二次运算。4.1考勤计算公式在【考勤制度】-点击某个考勤制度-【计算公式】页面可以配置自定义公式,自定义公式是基于自定义函数的,通过一个或多个函数的组合运算,得到自定义公式。4.2自定义函数自定义函数在用administrator登录后,在【核算函数】页面配置,如以下画面所示:目前【核算函数】内置了若干个考勤相关的函数,对于内置函数不能满足需求的,可以进行自定义函数的二次开发。一个函数对应了后台类的一个方法,若要自定义函数的开发,首先必须进行后台方法的实现,然后再在【核算函数】页面进行函数的注册配置。函数体的书写格式参考上图传入参数必须和实现方法一一对应。注:禁止修改内置的自定义函数。三.示例演示接下来将展示考勤计算那种【异常】业务相关的二次开发。3.1前端页面配置1、首先打开【考勤制度】,选中要进行二次开发的考勤制度并打开页面。2、可以看到,默认的【异常】业务的计算器是:com.kingdee.shr.ats.calculate.implement.PunchardExceptionPro3、我们假设二次开发后的计算器名称为:PunchardExceptionProDev4、点击【修订】按钮,将以下内容覆盖原本的计算器:com.kingdee.shr.ats.calculate.implement.PunchardExceptionProDev3.2后端重构1、新建一个包,假设为:com.kingdee.shr.ats.calculate.implement.dev注:包路径可根据自身需求定义,但不可和出厂计算器包一致,以免造成代码紊乱。(出厂包路径com.kingdee.shr.ats.calculate.implement)2、在此路径下新建类,类名设定为刚才我们在前端页面配置的计算器名字PunchardExceptionProDev2.1我们可以基于原本逻辑进行继承,如下图所示:若要对少部分的逻辑进行二次开发,建议使用继承模式,可沿用父类大部分的实现,在进行子类的开发之前,可先调用一次父类逻辑,对父类结果集进行二次更新。2.2我们也可以进行全部逻辑重写,必须实现接口IcalAttendanceProjects,如下图所示3、接下来可以在此类中进行逻辑重载/重构。在以上两种中,无论是继承或是实现模式,都定义了方法:publicvoidprocess(Contextctx,Mapparam,AttendanceDynamicResInforesult);其中参数ctx表示上下文,这里有当前登录用户信息和数据库的连接信息,若要在二次开发计算器中进行数据库连接,可使用这个参数,但实际为了考虑性能,我们不建议在二次开发过程中进行新的数据库连接;Param参数内包含了考勤计算过程中要用到的信息集,文中我们称为globeMap;Result参数是所有内置考勤项目的结果集,考勤计算的过程中,每个计算器对其中的一个或者多个参数进行了更新,最后会统一保存。注:Param和resulst的具体结构和内容可参照附录。4、最后必须更新【异常】业务对应的result结果集,通过查阅上文,我们知道异常业务的参数包括:AbsentHours,AbsentTimes,LateMinuts,LateTimes,LeaveMinuts,LeaveTimes,OneAbsentValue,OneLateValue,OneLeaveValue,TwoAbsentValue,TwoLateValue,TwoLeaveValue,ThreeAbsentValue,ThreeLateValue,ThreeLeaveValue,lackCardTtimes;在计算过程中我们可能会使用到结果集result的部分参数,我们为每个参数定义了取参数的方法getXXX和设参数的方法setXXX,为了代码规范和安全:如果我们取AbsentHours这个参数,我们使用result.getAbsentHours()这个方法,而不是result.absentHours;如果我们要设AbsentHours这个参数,我们使用result.setAbsentHours(XXX)而不是result.absentHours=XXX。5、【异常】业务的重构就完成。四.总结本文档从框架出发,介绍了考勤计算二次开发的整个流程,并对流程中的每一个步骤进行了详细的讲解,最后对讲解内容进行了实例化,帮助理解消化文中内容。此后,随着考勤计算功能不断强大,二次开发文档也会不断完善。充实其中内容和修改其中的错误。请开发人员进行二次开发前,务必仔细研读此文档。附录1.考勤计算常量表对应位置为:com.kingdee.eas.hr.ats.common.AttendanceConstants请使用AttendanceConstants.XXX的形式使用考勤计算的常量/***下划线分隔符
*/publicstaticfinalStringUNDERLINE="_";/***批量查询所有请假单据信息集合,人员_日期作为keyMap>*/publicfinalstaticStringATSLEAVEBILLINFOSMAP="T_HR_ATS_LeaveBillEntry";/***批量查询所有出差单据信息集合,人员_日期作为keyMap>*/publicfinalstaticStringATSTRIPBILLINFOSMAP="T_HR_ATS_TripBillEntry";/***批量查询所有加班单据信息集合,人员_日期作为keyMap>*/publicfinalstaticStringATSOVERTIMEBILLINFOSMAP="T_HR_ATS_OverTimeBillEntry";/***批量查询所有补签卡单据信息集合,人员_日期作为keyMap>*/publicfinalstaticStringFILLSIGNCARDINFOSMAP="fillSignCardInfosMap";/***装载请假单据明细信息集合,人员_日期作为keyMap>*/publicfinalstaticStringATSLEAVEBILLDETAILINFOSMAP="atsLeaveBillDetailInfosMap";/***批量查询取卡规则单个信息的集合,取卡规则的ID作为keyMap*/publicfinalstaticStringCARDRULESINGLEINFOMAP="T_HR_ATS_CardRule";/***批量查询所有班次信息集合,班次主表ID作为keyMap*/publicfinalstaticStringATSSHIFTINFOMAP="T_HR_ATS_Shift";/***查询所有假期制度的ID(BOSUUID)作为keyMap*/publicfinalstaticStringHOLIDAYPOLICYMAP="T_HR_ATS_HolidayPolicy";/***查询所有考勤制度的ID(BOSUUID)作为keyMap*/publicfinalstaticStringATTENDANCEPOLICYINFOMAP="T_HR_ATS_AttencePolicy";/***查询所有工作日历集合的ID(BOSUUID)作为key工作日历为key*Map*///publicfinalstaticStringWORKCALENDARCOL="T_HR_ATS_WorkCalendar";publicfinalstaticStringWORKCALENDARINFOMAP="T_HR_ATS_WorkCalendar";/****全局默认的工作日历WorkCalendarInfo*/publicfinalstaticStringDEFAULTWORKCALENDARINFO="defaultWorkCalInfo";/***查询工作日历明细数据,按照开始日期和结束日期查询工作日历_日期作为keyMap*/publicfinalstaticStringWORKITEMMAP="workItemMap";/***批量查询考勤档案信息集合,人员_日期作为keyMap*/publicfinalstaticStringATTENDANCEFILEINFOMAP="T_HR_ATS_AttendanceFile";/***查询一批次人员的人员职位,岗位,组织,HR组织-信息集合,人员ID作为key,考勤计算最后查询-HR组织-等字段使用**Map*/publicfinalstaticStringPPINFOMAP="ppInfoMap";/***查询一批次人员的任职历史,查询某人考勤日期那天的组织人员ID作为keyMap>*/publicfinalstaticStringEMPPOSINFOMAP="empPosInfoMap";/***查询一批次人员的变更历史人员ID作为keyMap>PersonHisInfoMap*/publicfinalstaticStringPERSONHISINFOMAP="PersonHisInfoMap";/***查询一段时间,一批人次的原始打卡记录信息,加班取卡使用人员ID_考勤日期作为keyMap>*/publicfinalstaticStringPUNCHCARDINFOMAP="punchCardInfoMap";/***查询人员和考勤日期对应的考勤明细信息人员ID_考勤日期作为keyMap>*/publicfinalstaticStringATTENDANCERESULTINFOSMAP="attendanceResultInfosMap";/***装载人员和考勤日期对应的排班分录信息,人员_考勤日期做为keyMap>*/publicfinalstaticStringSCHEDULESHIFTITEMMAP="T_HR_ATS_ScheduleShift";/****开始日期*/publicfinalstaticStringBEGINDATE="beginDate";/****结束日期*/publicfinalstaticStringENDDATE="endDate";/****人员id*/publicfinalstaticStringPERSONID="personId";/***当前考勤日期*/publicfinalstaticStringATTENCEDATE="attenceDate";/***手动创建的班前加班单的集合*/publicstaticfinalStringUSERCREATE_PREOTBILLLIST="userCreate_PreOTBillList";/***手动创建的班后加班单的集合*/publicstaticfinalStringUSERCREATE_AFTOTBILLLIST="userCreate_AftOTBillList";/***固定加班生成的加班单集合*/publicstaticfinalStringBACKJOBCREATE_OTBILLLIST="backJobCreate_OTBillList";/***自动生成班前加班生成的加班单集合*/publicstaticfinalStringBACKJOBCREATE_PREOTBILLLIST="backjobCreate_PreOTBillList";/***自动生成的班后加班生成的加班单结婚*/publicstaticfinalStringBACKJOBCREATE_AFTOTBILLLIST="backjobCreate_AftOTBillList";/****globalMap*/publicstaticfinalStringGLOBALMAP="globalMap";/****班次的keyAtsShiftInfo*/publicstaticfinalStringATSSHIFTINFO="atsShiftInfo";/****标准工时的keyBigDecimal*/publicstaticfinalStringSTANDARHOUR="standardHour";/****档案AttendanceFileInfo*/publicstaticfinalStringATTENCEFILE="attenceFile";/****考勤制度AttencePolicyInfo*/publicstaticfinalStringATTNECEPOLICYINFO="AttencePolicyInfo";/***查询所有加班类型的ID(BOSUUID)作为keyMap*/publicstaticfinalStringOVERTIMETYPE="T_HR_ATS_OverTimeType";/***加班补偿方式*/publicstaticfinalStringOVERTIMECOMPENTS="T_HR_ATS_OverTimeCompens";/***个人信息PersonPositionInfo*/publicstaticfinalStringPERSONPOSITIONINFO="personPositionInfo";/***个人信息PersonPositionInfoList*/publicstaticfinalStringEMPPOSORGLIST="empPosOrgRelationInfo";/***个人历史信息PersonPositionInfoList*/publicstaticfinalStringPERSONHISINFO="PersonHisInfo";/***个人组织和岗位信息PersonPositionInfoList*/publicstaticfinalStringPERSONPOSITIONINFOMAP="personPositionInfoMap";/***出差类型id为keyMaptripTypeMap*/publicstaticfinalStringTRIPTYPEINFOMAP="T_HR_ATS_TripType";/***假期制度主表id为keyMap*/publicstaticfinalStringHOLIDAYPOLICYSETINFO="T_HR_ATS_HolidayPolicySet";/***假期类型id为keyMap*/publicstaticfinalStringHOLIDAYTYPEMAP="T_HR_ATS_HolidayType";/***考勤明细*/publicstaticfinalStringATTENDANCERESULT="T_HR_ATS_AttendanceResult";/***排班班次类型id为keyMap*/publicstaticfinalStringATSSHIFTTYPE="T_HR_ATS_ShiftType";/***加班原因id为keyMap*/publicstaticfinalStringOVERTIMEREASON="T_HR_ATS_OverTimeReason";/****工作日历明细WorkCalendarItemInfo*/publicstaticfinalStringWORKCALENDARITEMINFO="WorkCalendarItemInfo";/***加班补偿方式id为keyMap*/publicstaticfinalStringOVERTIMECOMPENSINFO="T_HR_ATS_OverTimeCompens";/***日志主表*/publicstaticfinalStringLOGINFO="logInfoPk";/***日志实体*/publicstaticfinalStringLOGINFOMAINIFNO="logInfoMainInfo";/***是否后台事务定义触发*/publicstaticfinalStringBACKWORKDEF="backWorkDef";/***异常计算类*/publicstaticfinalStringPUNCHARDEXCEPTIONPRO="com.kingdee.shr.ats.calculate.implement.PunchardExceptionPro";/***打卡考勤请假计算类*/publicstaticfinalStringPUNCHARDLEAVEBILLPRO="com.kingdee.shr.ats.calculate.implement.PunchardLeaveBillPro";/***不打卡考勤请假项目计算类*/publicstaticfinalStringNOPUNCHARDLEAVEBILLPRO="com.kingdee.shr.ats.calculate.implement.NoPunchardLeaveBillPro";/***打卡考勤出差类项目计算类*/publicstaticfinalStringPUNCHARDTRIPBILLPRO="com.kingdee.shr.ats.calculate.implement.PunchardTripBillPro";/***不打卡考勤出差计算类*/publicstaticfinalStringNOPUNCHARDTRIPBILLPRO="com.kingdee.shr.ats.calculate.implement.NoPunchardTripBillPro";/***打卡考勤加班项目计算类*/publicstaticfinalStringPUNCHARDOVERTIMEBILLPRO="com.kingdee.shr.ats.calculate.implement.PunchardOverTimeBillPro";/***不打卡考勤加班类项目计算类*/publicstaticfinalStringNOPUNCHARDOVERTIMEBILLPRO="com.kingdee.shr.ats.calculate.implement.NoPunchardOverTimeBillPro";/***打卡考勤其他项目计算类*/publicstaticfinalStringPUNCHARDOTHERPRO="com.kingdee.shr.ats.calculate.implement.PunchardOtherPro";/***不打卡考勤其他项目计算类*/publicstaticfinalStringNOPUNCHARDOTHERPRO="com.kingdee.shr.ats.calculate.implement.NoPunchardOtherPro";/***fetchCardExcutor*/publicstaticfinalStringEXCUTECALFETCHCARD="com.kingdee.shr.ats.calculate.implement.FetchCardPro";/***考勤明细表,包含所有字段。*/publicstaticfinalStringATTENDANCERESULTOFALLFIELDS="T_HR_ATS_AttendanceResult";附录2.考勤计算信息集速查附录2.1MapParam信息集结构表示例1、获取人的ID:StringpersonId=(String)param.get(“personId”);示例2、获取globeMap:MapglobeMap=(Map)param.get(“globalMap”);Mapparam结构键(key)值说明(valuedescription)类型(type)备注calculateProParamsVo考勤计算常用参数集合对象CalculateProParamsVo将globeMap中考勤计算过程常用参数封装成的对象避免频繁对globalMap进行检索personId当前计算人的idStringattenceDate当前计算考勤日期(YYYY-MM-DD)StringglobalMap考勤计算信息总集Map考勤计算前准备的静态和动态信息集,包括一系列的基础数据和单据数据等附录2.2calculateProParamsVo对象结构表请使用getXXX/setXXX的方式对calculateProParamsVo进行读取或者修改CalculateProParamsVocalculateProParamsVo结构键(key)类型(value_type)值说明(valuedescription)scheduleShiftTagint几段班标识dateTypeint日期类型hasScheduleShiftItemsboolean排班是否有分录workDayTagint工作日标示,1代表工作日policyIdString考勤制度IDattendTypeOneString出勤类型一/二/三段班attendTypeTwoStringattendTypeThreeStringoneSegmentInRestBigDecimal段内休息时长一/二/三段班twoSegmentInRestBigDecimalthreeSegmentInRestBigDecimalpreFloatAdjustedoneBigDecimal浮动调整值一/二/三段班上半段/下半段nextFloatAdjustedoneBigDecimalpreFloatAdjustedtwoBigDecimalnextFloatAdjustedtwoBigDecimalpreFloatAdjustedthreeBigDecimalnextFloatAdjustedthreeBigDecimalpreIsPunchCardOneint是否打卡一/二/三段班MapMap上半段/下半段1代表是preIsPunchCardTwointpreIsPunchCardThreeintnextIsPunchCardOneintnextIsPunchCardTwointnextIsPunchCardThreeintstandardHourBigDecimal标准工时,默认为8oneOnTimeDynamicResultString实际取卡时间一/二/三段班上半段/下半段oneOffTimeDynamicResultStringtwoOnTimeDynamicResultStringtwoOffTimeDynamicResultStringthreeOnTimeDynamicResultStringthreeOffTimeDynamicResultStringoneOnTimeScheduleString排班时间一/二/三段班上半段/下半段oneOffTimeScheduleStringtwoOnTimeScheduleStringtwoOffTimeScheduleStringthreeOnTimeScheduleStringthreeOffTimeScheduleStringoneRestPreTimeScheduleString段内休息时间一段班上半段/下半段oneRestNextTimeScheduleStringisAtLeastTwoCardboolean临时加班是否需要打上下班卡otStartint加班起始值otCompensIdInfoOverTimeCompensInfo加班补偿方式isPreNotBillboolean班前无需加班单isAfterNotBillboolean班后无需加班单autoGenOverTimeboolean是否自动生成加班单lateAllowint迟到允许值leaveAllowint早退允许值absentAllowint旷工起始值示例1、获取迟到允许值:intlateAllow=calculateProParamsVo.getLateAllow();示例2、获取标准时长BigDecimalstandardHour=calculateProParamsVo.getStandardHour();示例3、给第一段班上段班设置取卡时间calculateProParamsVo.setOneOnTimeDynamicResult(“2016-07-0108:00:00”);附录2.3globeMap信息集结构表请结合附录1查看此表,请使用已定义常量名对信息集进行读取。考勤计算二次开发过程,请勿对信息集进行修改或者删除。MapglobeMap结构键(key)类型(value_type)值说明(valuedescription)与人无关的静态信息集AttendanceConstants.CARDRULESINGLEINFOMAPMap取卡规则单个信息的集合,取卡规则的ID作为keyAttendanceConstants.ATSSHIFTINFOMAPMap所有班次信息集合,班次主表ID作为keyAttendanceConstants.HOLIDAYPOLICYMAPMap所有假期制度,ID(BOSUUID)作为keyAttendanceConstants.ATTENDANCEPOLICYINFOMAPMap所有考勤制度的ID(BOSUUID)作为keyAttendanceConstants.OVERTIMETYPEMap加班类型isCalTuneboolean是否参与调休计算参数-公共参数isOTControlboolean是否参与加班管控计算参数-公共参数AttendanceConstants.ATSOVERTIMECONTROLMAPMap是否参与加班管控计算参数-加班管控Key:业务组织IDVALUE:是否启用加班管控AttendanceConstants.WORKCALENDARINFOMAPMap全局默认的工作日历不打卡考勤AttendanceConstants.WORKITEMMAPMap工作日历明细数据,按照开始日期和结束日期查询AttendanceConstants.TRIPTYPEINFOMAPMap出差类型AttendanceConstants.HOLIDAYPOLICYSETINFOMap假期制度主表信息AttendanceConstants.HOLIDAYTYPEMAPMap假期类型AttendanceConstants.ATSSHIFTTYPEMap班次类型AttendanceConstants.OVERTIMEREASONMap加班原因AttendanceConstants.OVERTIMECOMPENSINFOMap加班补偿方式与人有关的动态信息集AttendanceConstants.ATTENDANCEFILEINFOMAPMap考勤档案信息集合,人员ID作为keyAttendanceConstants.PPINFOMAPMap人员的人员职位,岗位,组织,HR组织-信息集合,人员ID作为keyAttendanceConstants.PUNCHCARDINFOMAPMap>原始打卡记录信息,加班取卡使用,人员ID_考勤日期作为keyAttendanceConstants.ATTENDANCERESULTINFOSMAPMap>人员和考勤日期对应的考勤明细信息AttendanceConstants.SCHEDULESHIFTITEMMAPMap>人员和考勤日期对应的排班分录信息,人员+考勤日期做为keyAttendanceConstants.ATSLEAVEBILLINFOSMAPMap>所有请假单据信息集合,人员_日期作为keyAttendanceConstants.ATSMap>_日期作为keyAttendanceConstants.ATSOVERTIMEBILLINFOSMAPMap>所有加班单据信息集合,人员_日期作为key,以分录信息为主的集合AttendanceConstants.FILLSIGNCARDINFOSMAPMap>所有补签卡单据信息集合,人员_日期作为keyAttendanceConstants.ATSLEAVEBILLDETAILINFOSMAPMap>请假单据明细信息集合,人员_日期作为key示例1、获取是否参与加班管控计算参数:BooleanisOverTimeControl=(Boolean)globeMap.get(“isOverTimeControl”);示例2、获取请假单Map>leaveBillMap=(Map>)globeMap.get(AttendanceConstants.ATSLEAVEBILLINFOSMAP);示例3、结合示例2,获取人A(ID为”abcde123”),在2016年7月1日的所有请假单List>leaveList_A=leaveBillMap.get(”abcde123”+AttendanceConstants.UNDERLINE+”2016-07-01”);

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

金蝶s-HR Cloud 考勤计算二次开发文档(8.5).docx

管理软件+ 关注
实名认证
内容提供者

管理软件资料分享

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信