你还在为身份证校验种类不够而苦恼吗
具体操作步骤请往下看↓
1 新建一个插件类
首先,新建一个插件类,类名例如:UserIdCardFormatValidatorPlugin2.java
主要逻辑说明见代码注释:
package kd.bos.sec.user; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.resource.ResManager; import kd.bos.dataentity.utils.StringUtils; import kd.bos.entity.ExtendedDataEntity; import kd.bos.entity.plugin.AbstractOperationServicePlugIn; import kd.bos.entity.plugin.AddValidatorsEventArgs; import kd.bos.entity.validate.AbstractValidator; import kd.bos.org.utils.Consts; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 人员保存时,对身份证进行校验的插件 * @author rd_chaohua_cheng */ public class UserIdCardFormatValidatorPlugin2 extends AbstractOperationServicePlugIn { @Override public void onAddValidators(AddValidatorsEventArgs e) { super.onAddValidators(e); e.addValidator(new UserIdCardFormatValidator2()); } private static class UserIdCardFormatValidator2 extends AbstractValidator { @Override public void validate() { for (ExtendedDataEntity dataEntity : dataEntities) { DynamicObject userObj = dataEntity.getDataEntity(); // 获取页面输入的身份证信息 String idCard = userObj.getString(Consts.IDCARD); String errorMsg = ""; if (StringUtils.isNotBlank(idCard)) { // 如果身份证输入有空格,去掉空格 idCard = idCard.replaceAll(" ", ""); userObj.set(Consts.IDCARD, idCard); // 校验身份证的正确性(可校验长度、格式及校验码),校验正确则不处理。 // 如果校验失败就返回相应的错误信息。 // 二次开发的主要实现部分如下: // 由于校验码检查较复杂这里省略掉 // 下面的范例只判断身份证长度及正则表达式的一个简单做法。 // 中国大陆身份证:18位长度;中国香港身份证:10位长度,样式Yabcdef(z) if (idCard.length() == 18) { String VERIFY_18_PATTERN_STR = "(\\d{6})" + "(\\d{8})" + "(\\d{3})" + "([\\d[xX]]{1})"; Pattern VERIFY_18_PATTERN = Pattern.compile(VERIFY_18_PATTERN_STR); Matcher m = VERIFY_18_PATTERN.matcher(idCard); if (m.matches() == false) { errorMsg = "“中国大陆身份证号”格式不正确"; // 把错误信息加入到提示语中。 addErrorMessage(dataEntity, errorMsg); } } else if (idCard.length() == 10) { String VERIFY_HK_PATTERN_STR = "^([A-Z]{1,2})([0-9]{6})\\(([A0-9])\\)$"; Pattern VERIFY_HK_PATTERN = Pattern.compile(VERIFY_HK_PATTERN_STR); Matcher m = VERIFY_HK_PATTERN.matcher(idCard); if (m.matches() == false) { errorMsg = "“中国香港身份证号”格式不正确"; // 把错误信息加入到提示语中。 addErrorMessage(dataEntity, errorMsg); } } else { // 可根据具体错误信息进行返回。下面的errorMsg值,使用了多语言的写法。 errorMsg = ResManager.loadKDString("“身份证号”位数不正确", "UserIdCardFormatValidatorPlugin2_3","bos-sec-user"); // 把错误信息加入到提示语中。 addErrorMessage(dataEntity, errorMsg); } } } } } }
2 人员表单设计器修改
其次,在开发平台里进行人员表单设计器修改,其路径为:【系统服务云】→【基础服务】→【人员】→【人员】(页面编码:bos_user)。
对标准产品的人员元数据进行扩展,在扩展元数据中进行操作。
1)点击表单控件中的‘保存’,然后再点击‘操作代码’。
2)选择‘保存’行,再点击‘修改’。
3)点击‘其他控制’,再点击‘服务插件’。
4)注册启用‘身份证校验二次开发插件’,并上移到‘人员保存插件’前(重要)。
(备注:身份证校验插件都是独立的,如果新旧插件同时启用,在插件列表靠前的插件会先校验,任何一个插件校验失败都不能保存成功,故需把标准的身份证校验插件禁用,只用二开的插件进行校验。)
第一步,点击注册,填入如下信息。
第二步,取消启用标准版的‘身份证校验插件’。
5)保存修改后的bos_user表单。
3 操作验证
最后,需要进行操作验证。
进入操作页面的路径为:【系统服务云】→【基础服务】→【人员管理】→【人员】。
1)通过人员的新增或修改进行验证。如果输入的身份证号长度和身份证格式(正则表达式)都正确,点击保存时,保存成功。
如果输入的身份证长度正确,但身份证格式(正则表达式)错误,则报身份证格式错误信息;
如果输入的身份证号长度不满足任何一个,点击保存时,则报身份证位数不正确。
2)如果有些国家或地区的身份证没有加到插件中,但是现在急需维护这些身份证信息,可以临时禁用掉身份证校验插件,让这类身份证信息临时添加进去。添加身份证信息后,再及时地恢复原来的身份证插件启用状态。
输入任何格式的身份证号,点击保存时,都会保存成功。
以上就是将不同籍别身份信息录入苍穹人员系统的所有步骤啦,你学会了吗?
#往期推荐#
更多精彩内容,“码”上了解!↓
你还在为身份证校验种类不够而苦恼吗
本文2024-09-23 00:32:20发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-140105.html