如何去掉员工姓名全拼中的分隔符'
序言:
s-HR标准产品在员工入职时,会根据员工姓名生成姓名全拼,但是为了避免歧义和确保拼读的清晰,有些姓名的拼音会带有分隔符',例如林燕娥的拼音为linyan 'e,在某些客户把姓名全拼做用户账号使用时,因账号不能包含',会导致用户无法登录。如果客户要求将'从姓名全拼中去掉,只能二开,工作量比较大。下面介绍一种简单的方式,通过dep脚本即可实现。
实现步骤:
1、 dep导入员工_个人信息实体
在动态扩展平台导入员工_个人信息,如下图所示:
2、 扩展dep脚本
在实体扩展定义中,找到addNew方法,并在addNew方法的后置脚本中写下去掉分隔符'dep代码,如下图所示:
然后启用相应的dep方案,即可实现在员工入职时去掉姓名全拼中的分隔符'。dep addNew后置脚本代码如下:
var imp = JavaImporter();
imp.importPackage(Packages.com.kingdee.eas.util.app);
with(imp){
// 获取上下文
var ctx = pluginCtx.getContext();
// 获取方法参数,这里获取的是personInfo对象
var obj = methodCtx.getParamValue(0);
// 获取方法的返回值,这里获取的是员工id
var billId = methodCtx.getResultValue();
// 从personInfo对象中获取姓名全拼
var fullNamePingYin = obj.get("fullNamePingYin");
if (fullNamePingYin.indexOf("’") !== -1){
// 获取去掉’后的姓名全拼
fullNamePingYin = fullNamePingYin.replace("’", "");
// 更新去掉’后的姓名全拼到数据库
var sql = "update t_bd_person SET FFullNamePingYin = '" + fullNamePingYin + "' WHERE FID = '"+billId+"'";
DbUtil.execute(ctx, sql);
}
}
3、实现更新员工时去掉姓名全拼中的分隔符'
上述步骤只能实现员工新增时,去掉姓名全拼中的分隔符',在员工编辑保存时,姓名全拼中的分隔符'又会出现,这是因为姓名全拼在员工编辑保存时是重新生成的。实现思路与新增逻辑一样。如下:
在实体扩展定义中,找到update方法,并在update方法的后置脚本中写下去掉分隔符'代码,如下图所示:
然后启用相应的dep方案,即可实现在员工编辑修改保存时去掉姓名全拼中的分隔符'。dep update后置脚本代码如下:
var imp = JavaImporter();
imp.importPackage(Packages.com.kingdee.eas.util.app);
with(imp){
// 获取上下文
var ctx = pluginCtx.getContext();
// 获取方法参数,这里获取的是personInfo对象
var obj = methodCtx.getParamValue(1);
// 获取方法参数,这里获取的是员工id
var billId = methodCtx.getParamValue(0);
// 从personInfo对象中获取姓名全拼
var fullNamePingYin = obj.get("fullNamePingYin");
if (fullNamePingYin.indexOf("’") !== -1){
// 获取去掉’后的姓名全拼
fullNamePingYin = fullNamePingYin.replace("’", "");
// 更新去掉’后的姓名全拼到数据库
var sql = "update t_bd_person SET FFullNamePingYin = '" + fullNamePingYin + "' WHERE FID = '"+billId+"'";
DbUtil.execute(ctx, sql);
}
}
4、已有数据如何批量去掉姓名全拼中的分隔符'呢
上述步骤完成后,如果需要批量去掉姓名全拼中的分隔符',使用综合信息导入,只维护编码名称,无需维护其他列字段值,批量导入即可批量去掉姓名全拼中的分隔符',如下图所示: