金蝶s-HRCloudV8.6SP1RY专项绩效管理补丁1发布说明(补丁号:PT158958)金蝶软件(中国)有限公司补丁发布日期:2022.06.22一、PT166659本次新增补丁内容软件内容2.1.1功能优化1、考核关系设置—评价人:F7支持单选2、超链接附件无法上传提示修改3、优化已发送—评分催办邮件重复发送问题,监控催办添加提示语,10分钟内发不能重复催办。解决以下程序错误:1、修复PBC目标提交、员工自评等铃铛消息跳转页提示:“加载员工信息失败”问题;2、修复目标提交后修改目标下达人(考核责任人),旧的下达人待办未收回,新的下达人未收到待办问题。3、修复评估对象设置—添加人员—引用其他周期报错问题二、PT158958补丁包含内容软件内容2.1.1绩效过程跟踪表应用场景:绩效专员跨计划跨考核周期跟踪管辖范围员工的考核情况,包括是否参与考核,考核状态,可以催办相关人员及时处理绩效事务。应用步骤:1、绩效管理-绩效报表-绩效过程跟踪表,报表中可以根据考核状态、考核周期等信息查询员工的考核情况;2、支持催办绩效业务待办处理人及时处理绩效待办业务;3、支持导出列表数据进行分析。2.1.2功能优化1、考核计划执行各列表查看员工表单:未提交列表,点击列表首字段打开评估表单界面,可以查看评估表未下达列表,点击列表首字段打开评估表单界面,可以查看评估表未发送/已发送/已完成列表,屏蔽【查看评估表】按钮,点击列表可以查看评估表2、考核计划支持选择全部列表数据更新档案;3、考核计划支持选择全部列表数据删除档案;4、绩效工作台评分人在评分列表可以查看全部待办数据;5、绩效评分流程支持设置第一级节点并发;6、绩效档案列表添加考核活动字段,支持在列表查看员工参与了哪些考核计划。7、流程监控—支持流程批量跳转8、绩效目标下达列表支持查看全部9、绩效过程跟踪表列表考核状态修改:个人目标未提交改成已打回PBC,考核结果已结转改成本次考核周期已结束10、个人目标未下达的数据在员工考核计划执行-上级未下达页面的数据可能和绩效过程跟踪表列表个人目标未下达的数据一致的问题11、支持启动评分后更新评估对象档案(具体应用步骤见五、支持启动评分后更新评估对象档案)12、支持绩效过程跟踪表DEP扩展query(具体应用步骤见六、支持绩效过程跟踪表DEP扩展query)13、绩效过程跟踪表支持按考核责任人编码及名称进行快速搜索14、绩效过程跟踪表导出全部性能优化15、考核中评分催办消息通知支持选择自定义模板发送16、考核结果修订历史列表,用户行政组织权限进行数据隔离17、绩效工作台--目标页面交互优化18、跨页全选更新评估对象档案优化(需要修改DEP扩展脚本,具体应用步骤见七、支持启动评分后更新评估对象档案)19、重置流程保留打分信息及附件(具体应用步骤见八、重置流程保留打分信息及附件)20、兼容荣耀委托考核,现在只会禁用职位和组织匹配的档案,防止变动产生时错误禁用了委托档案21、被禁用的绩效考核档案也被添加到判重对象中,这样绩效二次委托到原部门报错,不能新增考核档案。解决方案:新增绩效考核档案判重提供扩展点,荣耀自己来判断(具体应用步骤见九、新增绩效档案扩展点)22、确认调动会把所有考核档案包括绩效委托档案都禁用,绩效委托考核档案失效,影响绩效委托正常逻辑,解决方案:调动确认添加考核档案禁用原考核档案逻辑提供扩展点,荣耀自己来判断(具体应用步骤见十、根据终止类型的绩效变动禁用档案扩展点)23、绩效过程跟踪表添加【批量下载附件】功能,需进行授权,支持分别下载目标填报阶段和评分阶段的附件24、绩效过程跟踪表【批量下载附件】功能支持跨页全选下载附件25、绩效消息邮件发送增加邮件间隔评率调整功能。在数据库绩效参数表中设置具体间隔时长,单位毫秒ms.(具体步骤见十一、设置绩效消息邮件发送间隔频率参数设置)26、新增和优化表单越权功能27、com.kingdee.shr.perfweb.app.base.evalplan.EvaResultSummary这个实体类中endSingleEvaObjProcess无法在dep中进行前置或者后置脚本扩展优化28、考核规则员工信息区域字段设置多语言改造(不包括评估表和记录表字段改造),绩效工作台目标填报及评分界面员工区域字段的多语言展示29、考核规则模板基本信息、评估表单、评估流程、考核模式、考核计划基本信息、考核周期、绩效分组支持多语言30、界面加载时会闪出一些隐藏按钮问题优化31、考核规则模板--区域指标字段多语言改造32、绩效过程跟踪表--跨页全选字段多语言改造33、待办通知跳转绩效待办页面需要支持荣耀二开扩展自定义链接34、评分催办模板默认本人/他人评分模板35、离职可以设置档案禁用时间解决以下程序错误:1.导入的评估对象在绩效过程跟踪表中,按统一目标未下达过滤不出来2.选择一批评估对象对其操作更新档案后,再将这批评估对象删除,然后再操作剩下的评估对象更新档案,导致剩下的评估对象都无法更新档案3.有多个绩效邮箱配置,当其中一个邮箱不可用时可能无法发送邮件4.绩效过程跟踪表导出全部当部分目标填报人或者目标下达人为空时,会影响附件中其他已有目标填报人或目标下达人不显示的问题5.荣耀支持启动评分后更新档案扩展脚本报错6.绩效工作台我已下达的目标菜单默认显示7.导入评估对象以及更新档案需要维护评估对象的行政组织为档案上的行政组织8.启动评议后-》撤销统一下达-》修改考核关系评价人-》重新启动评议,需要删除已不存在的评价人的打分信息(导入考核关系除外,导入的会将该考核关系下所有处理人打分信息都清除掉),另外本次修订了8.1.2脚本参考(见标红字体),需要按照“8.1.1按下图在DEP中针对评估对象实体的重置流程清空指标评分信息及整体评价扩展点增加前置扩展脚本”进行修改三、补丁形态补丁(PT166659)是绩效管理领域局部补丁,仅限于RY客户使用。本补丁基于s-HRCloudV8.6SP1补丁PTM165371,主要涉及指标变更、绩效过程跟踪表、部分功能优化。四、补丁依赖补丁(PT166659)依赖于s-HRCloudV8.6SP1PTM165371五、安装与部署说明4.1安装说明局部补丁PT166659是依赖于s-HRCloudV8.6SP1补丁PTM165371,所以安装前需检查是否已安装PTM165371。由于PT安装后无法完全卸载(补丁包可以卸载,但是脚本无法卸载),请先使用测试环境安装PT。测试通过后再在客户正式环境中使用。客户正式环境安装PT前请备份运行环境及数据库。4.2局部补丁安装特殊说明RY作为金蝶的重点客户,通过专项补丁分支支持,所提供补丁皆为局部补丁。局部补丁安装方法如下:1、局部补丁安装时,需先维护服务器安装目录中的白名单安装目录\eas\admin\config\localPath_whiteList.xml编辑localPath_whiteList.xml文件,添加对应的领域模块及补丁号。注:领域模块可以在该补丁文件的Patch.xml文件中获取。2、进入管理控制台,找到需要安装的局部补丁,正常安装。六、支持启动评分后更新评估对象档案6.1.1按下图在DEP中针对评估对象实体的更新档案前检查扩展点增加前置扩展脚本6.1.2脚本参考vareasNames=JavaImporter();easNames.importPackage(Packages.com.kingdee.shr.perfweb.app.base.evalplan);with(easNames){varctx=pluginCtx.getContext();varinfo=methodCtx.getParamValue(0);variEvaResultSummary=EvaResultSummaryFactory.getLocalInstance(ctx);varcolls=iEvaResultSummary.getEvaResultSummaryCollection("whereevaObj.id='"+info.getId().toString()+"'");if(colls!=null&&colls.size()>0){varresult=colls.get(0);result.setEvaObj(info);varfileInfo=info.getPerfFile();result.setPerfFile(fileInfo);result.setPositionId(fileInfo.getPosition().getId().toString());result.setAdminOrg(fileInfo.getAdminOrgUnit());iEvaResultSummary.save(result);}}七、支持绩效过程跟踪表DEP扩展query7.1.1按下图在DEP中根据名称”绩效过程跟踪”搜索query,并进行扩展八、支持启动评分后更新评估对象档案2(跨页全选改造)8.1.1按下图在DEP中针对评估对象实体的批量更新档案前检查扩展点增加前置扩展脚本8.1.2按下图在DEP中针对更新绩效档案任务池实体的批量修改扩展点增加前置扩展脚本(该脚本的作用为更新档案的同时更新考核结果中关联的档案,如果不添加该脚本,启动评分后更新评估对象档案会导致考核卡、考核历史等处的考核结果显示的档案不正确)8.1.3脚本参考vareasNames=JavaImporter();easNames.importPackage(Packages.com.kingdee.shr.perfweb.app.base.evalplan);easNames.importPackage(Packages.java.util);easNames.importPackage(Packages.com.kingdee.bos.metadata.entity);easNames.importPackage(Packages.com.kingdee.bos.metadata.query.util);easNames.importPackage(Packages.com.kingdee.eas.framework);with(easNames){java.lang.System.out.println("-------aaaa----------");varctx=pluginCtx.getContext();varcolls=methodCtx.getParamValue(0);if(colls!=null&&!colls.isEmpty()){varit=colls.iterator();varids=newHashSet();varevaMap=newHashMap();//key=评估对象id,value=评估对象while(it.hasNext()){varinfo=it.next();varevaObjInfo=info.getEvaObj();varid=evaObjInfo.getId().toString();ids.add(id);evaMap.put(id,evaObjInfo);}//更新评估对象对应考核结果中的档案、职位、组织varfilterInfo=newFilterInfo();filterInfo.getFilterItems().add(newFilterItemInfo("evaObj.id",ids,CompareType.INCLUDE));varevi=newEntityViewInfo();evi.setFilter(filterInfo);variEvaResultSummary=EvaResultSummaryFactory.getLocalInstance(ctx);varcolls2=iEvaResultSummary.getEvaResultSummaryCollection(evi);if(colls2!=null&&colls2.size()>0){varit1=colls2.iterator();varnewColl=newCoreBaseCollection();while(it1.hasNext()){varresult=it1.next();varinfo=evaMap.get(result.getEvaObj().getId().toString());result.setEvaObj(info);varfileInfo=info.getPerfFile();result.setPerfFile(fileInfo);result.setPositionId(fileInfo.getPosition().getId().toString());result.setAdminOrg(fileInfo.getAdminOrgUnit());newColl.add(result);}iEvaResultSummary.save(newColl);}}}九、重置流程保留打分信息及附件9.1.1按下图在DEP中针对评估对象实体的重置流程清空指标评分信息及整体评价扩展点增加前置扩展脚本9.1.2脚本参考vareasNames=JavaImporter();easNames.importPackage(Packages.com.kingdee.shr.perfweb.app.workflow);easNames.importPackage(Packages.com.kingdee.eas.framework);with(easNames){varctx=pluginCtx.getContext();varevaObjId=methodCtx.getParamValue(0);//不走标准产品逻辑清空指标评分信息及整体评价,只将打分节点状态改为未处理和不可见variGradeTaskNodeInst=GradeTaskNodeInstFactory.getLocalInstance(ctx);varcolls=iGradeTaskNodeInst.getGradeTaskNodeInstCollection("whereevaObj.id='"+evaObjId+"'");if(colls!=null&&!colls.isEmpty()){varit=colls.iterator();varnewColls=newCoreBaseCollection();while(it.hasNext()){varinfo=it.next();info.put("taskStatus","1");info.put("scoreStatus","1");info.put("isEffective","2");newColls.add(info);}iGradeTaskNodeInst.save(newColls);}//2022-02-16补充脚本:重置启动评分任务池状态variAsignmentPool=AsignmentPoolFactory.getLocalInstance(ctx)varacolls=iAsignmentPool.getAsignmentPoolCollection("whereevaObj='"+evaObjId+"'")if(acolls!=null&&!acolls.isEmpty()){varit=acolls.iterator();varnewColls=newCoreBaseCollection();while(it.hasNext()){varinfo=it.next();info.put("isCreateInst","0");info.put("taskLock","0");info.put("executeCount","0");newColls.add(info);}iAsignmentPool.save(newColls);}//TODO清空公示状态、沟通状态,主管初评}9.1.3按下图在DEP中针对评估对象实体的重置流程清空附件扩展点增加前置扩展脚本9.1.4按下图在DEP中针对评估对象实体的重置流程清空指标评分信息扩展点增加前置扩展脚本9.1.5按下图在DEP中针对绩效工作流Facade的生成指定评估对象的流程实例扩展点增加前置扩展脚本9.1.6脚本参考vareasNames=JavaImporter();easNames.importPackage(Packages.com.kingdee.shr.perfweb.app.workflow);easNames.importPackage(Packages.com.kingdee.eas.framework);with(easNames){varctx=pluginCtx.getContext();varevaObjectInfo=methodCtx.getParamValue(0);//生成实例时如果实例已存在则将一级流程激活varevaObjId=evaObjectInfo.get("id").toString();variGradeTaskNodeInst=GradeTaskNodeInstFactory.getLocalInstance(ctx);varcolls=iGradeTaskNodeInst.getGradeTaskNodeInstCollection("whereevaObj.id='"+evaObjId+"'andwfLevel=1");if(colls!=null&&!colls.isEmpty()){varit=colls.iterator();varnewColls=newCoreBaseCollection();while(it.hasNext()){varinfo=it.next();info.put("isEffective","1");info.put("canEdit","1");newColls.add(info);}iGradeTaskNodeInst.save(newColls);}}十、新增绩效档案扩展点按下图在DEP中针对评估对象实体的重置流程清空指标评分信息及整体评价扩展点增加前置扩展脚本,以下扩展点均位于“绩效考核档案”实体上10.1.1创建档案时判断档案是否已存在扩展点existsForCreate脚本参考:easNames.importPackage(Packages.java.util);with(easNames){varctx=pluginCtx.getContext();varperfFile=methodCtx.getParamValue(0);//TODO荣耀自行判断新增的档案是否已存在//该方法需要设置返回值类型,返回值类型为boolean,档案存在返回true,否则返回falsemethodCtx.setResultValue(java.lang.Boolean.TRUE)}10.1.2创建档案时判断档案是否已存在Filter扩展点setExistsForCreateFilter该扩展点方法默认会被9.1.1中的existsForCreate扩展点调用脚本参考:vareasNames=JavaImporter();easNames.importPackage(Packages.com.kingdee.bos.metadata.query.util);easNames.importPackage(Packages.com.kingdee.bos.metadata.entity);with(easNames){varctx=pluginCtx.getContext();varperfFile=methodCtx.getParamValue(0);varfilter=methodCtx.getParamValue(1);//标准产品默认filter:“员工id”+“职位id”+“行政组织id”+“业务组织id”+“任职类型”+“任职经历”//TODO此处可在标准产品基础上扩展标准产品filterfilter.getFilterItems().add(newFilterItemInfo("其他属性","其他属性值"));}10.1.3获取除当前档案之外其他主任职档案扩展点getMainPerfFilesExcludeCurrent(标准产品新增档案时会调用该扩展点获取同一员工在相同业务组织下的其他主任职档案,并将其禁用)脚本参考:easNames.importPackage(Packages.java.util);with(easNames){varctx=pluginCtx.getContext();//当前要新增的考核档案varperfFile=methodCtx.getParamValue(0);//TODO可以自行根据要新增的考核档案//该方法需要设置返回值类型,返回值类型为com.kingdee.bos.dao.IObjectCollectionmethodCtx.setResultValue(XXCollection)}10.1.4获取除其他当前档案之外其他主任职档案filter扩展点setMainPerfFilesExcludeCurrentFilter标准产品默认filter为:“员工id”+“业务组织id”+“任职类型”+“不是当前待创建档案的任职经历id”该扩展点方法默认会被9.1.3中的getMainPerfFilesExcludeCurrent扩展点调用,具体写法可以参考9.1.2中的示例十一、新增绩效档案扩展点11.1.1根据绩效变动事务操作为终止类型查询需禁用档案扩展点getCollByTRMTConfirm该扩展点脚本写法可以参考9.1.3中的示例11.1.2根据绩效变动事务操作为终止类型查询需禁用档案filter扩展点setTRMTConfirmFilter标准产品默认filter为:根据变动传来的“变动前任职经历id”+“绩效业务组织id”,具体写法可以参考9.1.2中的示例,荣耀可以在这个扩展点加filter,过滤掉不是“委托考核”的档案十二、设置绩效消息邮件发送间隔频率参数设置12.1.1根据绩效变动事务操作为终止类型查询需禁用档案filter扩展点setTRMTConfirmFilter12.1.2执行下面sql语句,fparavalue(参数值)里面输入邮件间隔频率时间单位毫秒ms。即可生效。如下图所示。select*fromT_PEF_PerfConfigwherefid='SbbBuk2HxEeZ3e2pwFjQ8G7dJN8='