问题描述:

`提示:根据已有的社会统一信用编码,获取每个组成部分的内容


学习内容:

提示:这里需要说明一下,统一社会信用代码的构成
社会统一信用代码是由18位 阿拉伯数字或大写英文字母(不使用I、O、Z、S、V)组成的。如:12100000400012916R(中国医学科学院北京协和医院)

  • 第1位 :登记管理部门代码
  • 第2位 :机构类别代码
  • 第3-8位 :登记管理机关行政区划码
  • 第9-17位 : 主体标识码
  • 第18位 : 校验码

代码部分:

创建 UnifiedSocialCreditCode (社会统一信用代码)实体类,用来保存分解下来的各部分结果

/*** 见GB 32100-2015 法人和其他组织统一社会信用代码编码规则.pdf* <p>* 社会统一信用代码 18位 阿拉伯数字或大写英文字母(不使用I、O、Z、S、V)组成* 第1位 :登记管理部门代码* 第2位 :机构类别代码  (医疗卫生机构类别代码)* 第3-8位 :登记管理机关行政区划码* 第9-17位 : 主体标识码(组织机构代码)* 第18位 : 校验码*/
public class UnifiedSocialCreditCode {/*** 统一社会信用代码*/private String uscc;/*** 第1位 登记管理部门代码*  1 机构编制 2 外交;3司法行政;4 文化;5 民政;6旅游;7 宗教;8 工会;9 工商;*   A中央军委改革和编制办公室;N农业;Y其他。*/private String managementDepartmentCode;/*** 第2位 机构类别代码*      机构编制 1: 机关 1 事业单位 2 中央编办直接管理机构编制的群众团体 3 其他 9*      民政 5: 社会团体 1 民办非企业单位 2 基金会 3 其他 9*      工商 9: 企业 1 个体工商户 2 农民专业合作社 3*      其他 Y: 1*/private String orgType;/*** 第3位-第8位 登记管理机关 行政区划代码*      参照 GB/T 2260 编码*/private String admdvsCode;/*** 第9位-第17位 主体标识码(组织机构代码)*      参照GB 11714*/private String orgCode;/*** 第18位 校验码*/private String keyCode;public UnifiedSocialCreditCode() {}public UnifiedSocialCreditCode(String uscc) {this.uscc = uscc;}public String getUscc() {return uscc;}public void setUscc(String uscc) {this.uscc = uscc;}public String getManagementDepartmentCode() {return managementDepartmentCode;}public void setManagementDepartmentCode(String managementDepartmentCode) {this.managementDepartmentCode = managementDepartmentCode;}public String getOrgType() {return orgType;}public void setOrgType(String orgType) {this.orgType = orgType;}public String getAdmdvsCode() {return admdvsCode;}public void setAdmdvsCode(String admdvsCode) {this.admdvsCode = admdvsCode;}public String getOrgCode() {return orgCode;}public void setOrgCode(String orgCode) {this.orgCode = orgCode;}public String getKeyCode() {return keyCode;}public void setKeyCode(String keyCode) {this.keyCode = keyCode;}}

这个工具类中的 setUSCCInfo()方法是用来实现 分解USCC各部分,同时给unifiedSocialCreditCode对象赋值。

public class UnifiedSocialCreditCodeMethod {/***  根据社会统一信用代码设置*  登记管理部门代码、医疗卫生机构类别代码、行政区划码、组织机构代码、校验码*  这个类是用来给 UnifiedSocialCreditCode */public static UnifiedSocialCreditCode setUSCCInfo(String USCC){UnifiedSocialCreditCode unifiedSocialCreditCode = new UnifiedSocialCreditCode();String managementDepartmentCode = USCC.substring(0,1);  // 第1位 登记管理部门代码String orgType = USCC.substring(1).substring(0,1);  // 第2位 机构类别代码String admdvsCode = USCC.substring(2).substring(0,6);  // 第3位-第8位 登记管理机关(行政区划代码)String orgCode = USCC.substring(8).substring(0,9);  // 第9位-第17位 主体标识码(组织机构代码)String keyCode = USCC.substring(17).substring(0,1);  // 第18位 校验码unifiedSocialCreditCode.setManagementDepartmentCode(managementDepartmentCode);unifiedSocialCreditCode.setOrgType(orgType);unifiedSocialCreditCode.setAdmdvsCode(admdvsCode);unifiedSocialCreditCode.setOrgCode(orgCode);unifiedSocialCreditCode.setKeyCode(keyCode);return unifiedSocialCreditCode;}/*** 统一社会信用代码校验*  TODO** @return true/false*/public static  boolean checkUSCC(String USCC) {if (USCC.length() != 18) {//            System.out.println("统一社会信用代码长度错误");return false;}int Weight[] = {1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28};        //用于存放权值int index = 0;       //用于计算当前判断的统一社会信用代码位数char testc;          //用于存放当前位的统一社会信用代码int tempSum = 0;     //用于存放代码字符和加权因子乘积之和int tempNum = 0;for (index = 0; index < 17; index++) {testc = USCC.charAt(index);// 第1位 登记注册类型代码if (index == 0) {if (testc != '1' && testc != '5' && testc != '9' && testc != 'Y') {System.out.println("统一社会信用代码中登记管理部门代码错误");return false;}}// 第2位 机构类别代码if (index == 1) {if (testc != '1' && testc != '2' && testc != '3' && testc != '9') {System.out.println("统一社会信用代码中机构类别代码错误");return false;}}tempNum = charToNum(testc);if (tempNum != -1) {                               //验证代码中是否有错误字符tempSum += Weight[index] * tempNum;} else {System.out.println("统一社会信用代码中出现错误字符");return false;}}tempNum = 31 - tempSum % 31;if (tempNum == 31) tempNum = 0;if (charToNum(USCC.charAt(17)) == tempNum)    //按照GB/T 17710标准对统一社会信用代码前17位计算校验码,并与第18位校验位进行比对return true;elsereturn false;}/*** 按照GB32100-2015标准代码字符集将用于检验的字符变为相应数字* @param c* @return  转换完成后对应的数字,若无法找到 字符集中的字符,返回-1*/public static  int charToNum(char c) {switch (c) {case '0':return 0;case '1':return 1;case '2':return 2;case '3':return 3;case '4':return 4;case '5':return 5;case '6':return 6;case '7':return 7;case '8':return 8;case '9':return 9;case 'A':return 10;case 'B':return 11;case 'C':return 12;case 'D':return 13;case 'E':return 14;case 'F':return 15;case 'G':return 16;case 'H':return 17;case 'J':return 18;case 'K':return 19;case 'L':return 20;case 'M':return 21;case 'N':return 22;case 'P':return 23;case 'Q':return 24;case 'R':return 25;case 'T':return 26;case 'U':return 27;case 'W':return 28;case 'X':return 29;case 'Y':return 30;default:return -1;}}
}

测试
– 测试一个USCC
– 测试多个USCC

 public static void main(String[] args) {String USCC = "114211000112501285";UnifiedSocialCreditCode unifiedSocialCreditCode = setUSCCInfo(USCC);// 创建对象切设置对应的属性if (checkUSCC(USCC)) {System.out.println(unifiedSocialCreditCode);} else {System.out.println(USCC + "统一社会信用代码错误");}//多个 USCCString test[] = {"12420100441123456Q","12420100441623336T","1242010044162605X6","12420100441434015U"};for (int i = 0; i < test.length; i++) {String USCC = test[i];UnifiedSocialCreditCode unifiedSocialCreditCode = null;if (checkUSCC(USCC)){unifiedSocialCreditCode = setUSCCInfo(USCC);System.out.println(unifiedSocialCreditCode);}else {System.out.println(USCC+"统一社会信用代码错误");}}}

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

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

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

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

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

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

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

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

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

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

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

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

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

  7. java时间代码_java获取当前时间的四种方法代码实例

    这篇文章主要介绍了java获取当前时间的四种方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 第一种:Date类 public class ...

  8. java crc 校验码_java实现CRC校验码

    这两天项目中要使用到CRC校验功能,网上大量的例子是针对c.delphi的例子,前期没有做过,理论上也欠缺很多知识,在这里对java如何实现我们想要的crc校验功能做一下自己的总结,以下内容有本分转自 ...

  9. python输出时间代码_Python获取世界多地时间怎么写代码呢?

    地球是自西向东自转,东边比西边先看到太阳,东边的时间也比西边的早.东边时刻与西边时刻的差值不仅要以时计,而且还要以分和秒来计算,这给人们带来不便. 为了克服时间上的混乱,1884年在华盛顿召开的一次国 ...

最新文章

  1. 去哪儿网消息队列设计与实现
  2. AI A_star算法野人渡河-实验报告
  3. 笔记-信息化与系统集成技术-区块链的特征
  4. java同步锁实例_Java lock同步锁使用实例解析
  5. ov5640帧率配置_赛博朋克2077 优化设置大全!帧数50暴涨100
  6. 2596 售货员的难题
  7. 在熟练使用2B铅笔前,请不要打开Axure
  8. Module build failed (from ./node_modules/babel-loader/lib/index.js): Error: [BABEL] D:\moblie\web_co
  9. 五大算法之二--动态规划
  10. 搞不懂,为啥现在什么公司都在考算法???
  11. dataset.filter
  12. iBATIS事务处理
  13. 数学建模(7)---建模开始
  14. Qt connect parent widget 连接父控件的信号槽
  15. appassembler-maven-plugin插件打包本地依赖的jar
  16. python小数点后任意位_Python计算开方、立方、圆周率,精确到小数点后任意位的方法...
  17. 程序员非常实用的十个工具网站,值得收藏
  18. 子网掩码起什么作用?
  19. Comic Life 3 for Mac(漫画创作软件)内附安装教程需要 macOS 11.x系统
  20. 【组合数学】递推方程 ( 特征方程与特征根 | 特征方程示例 | 一元二次方程根公式 )

热门文章

  1. php实现pdhf2加密,搞了一天半了,可恶的加密代码解决方案
  2. 第10集丨龙场悟道:阳明心学的诞生
  3. 不再盯着男性发烧友,小米手机要去“撩妹”?
  4. HW--DSF服务配置文件
  5. 多线程面试题_线程魔术技巧:使用Java线程可以做的5件事
  6. 好用在线html编辑器,求一款好用的html在线编辑器
  7. linux pv 信号量,pv操作与信号量(示例代码)
  8. 如何在vscode中优雅的编写C语言
  9. erc20根据合约地址获取所有交易记录
  10. numpy 数组的旋转、上下翻转、镜像