百度了一下,前两页全是错误的,还全是复制粘贴的,错别字都一字不拉。那玩意顶多只能校验个位数。
找了校验规则,编写了如下代码实现信用代码校验:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;import org.apache.commons.lang3.StringUtils;import plugin.template.TemplateStepMeta;/*** 统一社会信用代码规则验证器 * @author balizuoan**/
public class UnifiedCodeValidator {private static final String REGEX = "[1-9NY]{1}[1-9]{1}[1-6]{1}[0-9]{5}[0123456789ABCDEFGHJKLMNPQRTUWXY]{10}";private static final int[] WEIGHT = { 1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28 };private static final String BASE_CODE_STRING = "0123456789ABCDEFGHJKLMNPQRTUWXY";private static final char[] BASE_CODE_ARRAY = BASE_CODE_STRING.toCharArray();private static final List<Character> BASE_CODES = new ArrayList<>();/*** 登记管理部门+机构类别代码* http://www.sohu.com/a/332134717_120209852*/private static final List<String> REGIST_CODE = Arrays.asList("11", "12", "13", "19","21", "29","31", "32", "33", "34", "35", "39","41", "49","51", "52", "53", "59","61", "62", "69","71", "72", "79","81", "89","91", "92", "93","A1", "A9","N1", "N2", "N3", "N9","Y1");/*** 省级行政区划代码*/private static final List<String> PROVINCE_REGION_CODE = Arrays.asList("11", "12", "13", "14", "15", "21", "22", "23", "31", "32", "33", "34", "35", "36", "37", "41", "42", "43", "44", "45", "46", "50", "51", "52", "53", "54", "61", "62", "63", "64", "65", "71", "81", "82", "91" );static {for (char c : BASE_CODE_ARRAY) {BASE_CODES.add(c);}}public boolean CodeValidate( Object[] row, String value, String rule) {if (StringUtils.isEmpty(value)) {return true;}// 长度验证if (value.length() != 18) {return false;}// 登记管理部门+机构类别代码验证if (!REGIST_CODE.contains(value.substring(0, 2))) {return false;}// 省级行政区划代码验证if (!PROVINCE_REGION_CODE.contains(value.substring(2, 4))) {return false;}// 正则初验if (!Pattern.matches(REGEX, value)) {return false;}// 效验码校验char[] businessCodeArray = value.toCharArray();char check = businessCodeArray[17];int sum = 0;for (int i = 0; i < 17; i++) {char key = businessCodeArray[i];sum += (BASE_CODES.indexOf(key) * WEIGHT[i]);}int checkCode = 31 - sum % 31;return check == BASE_CODE_ARRAY[checkCode % 31];}}

技术交流群,欢迎大佬和java学习者加入扣扣群:344635699

校验社会统一信用代码JAVA相关推荐

  1. oracle校验社会统一信用代码(菜J笔记)

    今天下午花了一下午时间,查了很久百度,写了一个很菜的东西 如果有什么问题,欢迎各位大佬指出,直接上代码 统一社会信用代码编码规则-维基百科 身份证号码的编码规则及校验-简书 国家企业信用信息公示查询系 ...

  2. java 社会统一信用代码分解,获取登记管理部门代码、机构类别代码、登记管理机关行政区划码、 主体标识码、校验码

    问题描述: `提示:根据已有的社会统一信用编码,获取每个组成部分的内容 学习内容: 提示:这里需要说明一下,统一社会信用代码的构成 社会统一信用代码是由18位 阿拉伯数字或大写英文字母(不使用I.O. ...

  3. java 组织机构代码_JAVA实现社会统一信用代码校验的方法|chu

    网上找了几个,写的都不太适合,有的写出来了,也没有给出参考的算法链接.这样就导致了如果产生错误我们无法排查(不懂原理怎么排查对吧). 如果在使用过程中有疑虑,请参考:较验规则 package com. ...

  4. java 组织机构代码_JAVA实现社会统一信用代码校验的方法

    网上找了几个,写的都不太适合,有的写出来了,也没有给出参考的算法链接.这样就导致了如果产生错误我们无法排查(不懂原理怎么排查对吧). 如果在使用过程中有疑虑,请参考:较验规则 package com. ...

  5. java 组织机构代码_JAVA实现社会统一信用代码较验

    网上找了几个,写的都不太适合,有的写出来了,也没有给出参考的算法链接.这样就导致了如果产生错误我们无法排查(不懂原理怎么排查对吧). 如果在使用过程中有疑虑,请参考:较验规则 代码实现 package ...

  6. Python 生成、识别社会统一信用代码

    三证合一之后,社会统一信用代码就是企业的身份证.也就是说只要你的程序涉及企业信息的录入,那就少不了社会统一信用代码的录入.这里分享一个工具,可以用 Python 来识别社会统一信用代码,也可以随机生成 ...

  7. Js中身份证验证及社会统一信用代码验证

    二代身份证验证规则如下: //函数参数必须是字符串,因为二代身份证号码是十八位,而在javascript中,十八位的数值会超出计算范围,造成不精确的结果,导致最后两位和计算的值不一致,从而该函数出现错 ...

  8. 手机号,身份证号,邮政编码,统一信用代码,发票抬头,纳税人识别号正则校验

    手机号 phone(rule, value, callback) {const reg = /^[1][3,4,5,6.7,8,9][0-9]{9}$/if (!reg.test(value)) {c ...

  9. PHP验证统一信用代码

    <?php /*** 判断是否为统一社会信用代码*/ function isCompanyCode($str){$one = '159Y';//第一位可以出现的字符$two = '12391'; ...

  10. 统一信用代码n开头_股票代码查询怎么查,通过板块查找股票

    股票代码怎么查询? 股票查询能够在任意行情软件中查找,在输入股票号那栏中输入要查找个股的名字的首字母就可以了,行情软件查找都是输入首字母即可.下列为股票号的归类: 股票代码怎么查询? 股票查询能够在任 ...

最新文章

  1. SecureCRT中sqlplus,使用Backspace删除时 ^H^H
  2. 2.1:CGPROGRAM
  3. HTML frameset 标签
  4. python实战系列之爬取CSDN博客之星2020年度排名情况(附源码)
  5. 前端学习(64):css继承属性小结
  6. vb net的定时循环_.NET工具ReSharper:如何帮助Visual Studio用户?
  7. 数字逻辑之组合逻辑电路
  8. 我的一些学习经验:概述
  9. 使用大数据分析需要注意什么因素
  10. 配置gem5-gpu docker版
  11. WPS金山软件,死磕微软31年,故事要从1988年说起...
  12. 明解c语言答案第11章,《明解C语言第3版.入门篇》练习代码 第11章
  13. 利用python构建马科维茨_如何用python实现Markowitz投资组合优化
  14. python大作业数据_python 爬虫初探和简单数据分析及可视化,帮学妹写个大作业...
  15. 计算机游戏33关,史上最难游戏?这个游戏推出了35年,玩家最多也只能通到33关!...
  16. Windows10windows server 2012r2作为slave 用jenkins部署微信小程序自动化打包
  17. 软件测试内容全貌——全景图 (1)
  18. Linux top命令参数及使用方法详解
  19. [戴爾*卡耐基]個人簡介
  20. 51 Nod 1563——坐标轴上的最大团

热门文章

  1. php token过期时间,token过期是什么意思
  2. 电信机顶盒中心服务器连接异常,电信电视盒子连不上网的解决方法
  3. Windows利用WTS API获取锁屏状态
  4. Android 腾讯 云通信 用户头像更新
  5. oracle现金流量表逻辑,现金流量表之附表逻辑分析
  6. 《霍比特人2:史矛革之战》BD高清 电影 下载 [中文字幕]
  7. 《嵌入式-STM32开发指南》第三部分 外设篇 - 第4章 超声波测距
  8. 鲶鱼效应 互联网倒逼传统金融业转型
  9. 小米6无线显示无法连接服务器,小米手机:无法连接WiFi怎么解决?
  10. 【DataBase Notation(1/3)】Notation_Chen, Crow‘s Foot and UML