你还在为身份证校验种类不够而苦恼吗

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

你还在为身份证校验种类不够而苦恼吗



具体操作步骤请往下看↓




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);
     }
    }
   }
  }
 }
}


人员表单设计器修改

其次,在开发平台里进行人员表单设计器修改,其路径为:【系统服务云】→【基础服务】→【人员→【人员】(页面编码:bos_user)


对标准产品的人员元数据进行扩展,在扩展元数据中进行操作。


1)点击表单控件中的‘保存’,然后再点击‘操作代码’。



2)选择‘保存’行,再点击‘修改’。



3)点击‘其他控制’,再点击‘服务插件’。



4)注册启用‘身份证校验二次开发插件’,并上移到‘人员保存插件’前(重要)。


(备注:身份证校验插件都是独立的,如果新旧插件同时启用,在插件列表靠前的插件会先校验,任何一个插件校验失败都不能保存成功,故需把标准的身份证校验插件禁用,只用二开的插件进行校验。)



第一步,点击注册,填入如下信息。




第二步,取消启用标准版的‘身份证校验插件’。



5)保存修改后的bos_user表单。


操作验证

最后,需要进行操作验证。


进入操作页面的路径为:【系统服务云】→【基础服务】→【人员管理→【人员】


1)通过人员的新增或修改进行验证。如果输入的身份证号长度和身份证格式(正则表达式)都正确,点击保存时,保存成功。



如果输入的身份证长度正确,但身份证格式(正则表达式)错误,则报身份证格式错误信息;



如果输入的身份证号长度不满足任何一个,点击保存时,则报身份证位数不正确。



2)如果有些国家或地区的身份证没有加到插件中,但是现在急需维护这些身份证信息,可以临时禁用掉身份证校验插件,让这类身份证信息临时添加进去。添加身份证信息后,再及时地恢复原来的身份证插件启用状态。



输入任何格式的身份证号,点击保存时,都会保存成功。



以上就是将不同籍别身份信息录入苍穹人员系统的所有步骤啦,你学会了吗?


#往期推荐#


#  玩溜组织F7-组织控件高级配置

#  数据隔离控制有妙招 之 组织隔离

 业务组织的划分,竟然可以这么简单!


更多精彩内容,“码”上了解!↓




你还在为身份证校验种类不够而苦恼吗

具体操作步骤请往下看↓1 新建一个插件类首先,新建一个插件类,类名例如:UserIdCardFormatValidatorPlugin2.java主要逻辑说明见代码注释...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息