`
brofe
  • 浏览: 232822 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

校验全国组织机构代码是否合法

    博客分类:
  • Util
阅读更多
根据网络整理,经过实际应用。


package com.brofe.util;

import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;


/**
 * 校验全国组织机构代码是否合法
 * 
 * <p>
 * 	本标准根据国家技术监督局 1997年国家标准制修订项目补充计划,对 GB/T 11714—1995《全国组织机构代码编制规则》进行修订。
 * </p>
 * 
 * <p>
 * 	使用方法: OrgCodeValidation.validate("全国组织机构代码");
 * </p>
 * 
 * @author brofe
 * @since Jun 8, 2009
 * @version 1.0
 */
public class OrgCodeValidation {
	
	protected static Logger log = Logger.getLogger(OrgCodeValidation.class);
	
	private static final String[] codeNo = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B",
			"C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "O", "P", "Q", "R", "S",
			"T", "U", "V", "W", "X", "Y", "Z" };
	
	private static final String[] staVal = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11",
			"12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24",
			"25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35" };
	
	private OrgCodeValidation () {}
	
	/**
	 * 校验组织机构代码
	 * 
	 * @param orgCode 待校验的组织机构代码
	 * @return true 表示合法,false 表示不合法
	 */
	public static boolean validate(String orgCode) {
		if (StringUtils.isEmpty(orgCode)) {
			log.error("组织机构代码不能为空", new NullPointerException());
			return false;
		}
		
		Pattern pat = Pattern.compile("^[0-9A-Z]{8}-[0-9X]$");
		Matcher matcher = pat.matcher(orgCode);
		if (!matcher.matches()) {
			return false;
		}
		
		Map map = new HashMap();
		for (int i = 0; i < codeNo.length; i++) {
			map.put(codeNo[i], staVal[i]);
		}
		final int[] wi = { 3, 7, 9, 10, 5, 8, 4, 2 };
		String[] all = orgCode.split("-");
		final char[] values = all[0].toCharArray();
		int parity = 0;
		for (int i = 0; i < values.length; i++) {
			final String val = Character.toString(values[i]);
			parity += wi[i] * Integer.parseInt(map.get(val).toString());
		}
		String cheak = (11 - parity % 11) == 10 ? "X" : Integer.toString((11 - parity % 11));
		
		return cheak.equals(all[1]);
	}
	
	public static void main(String[] args) {
		// 00251807-3 00251808-1
		System.out.println(OrgCodeValidation.validate("00251805-7")); // 00251805-7 true
		System.out.println(OrgCodeValidation.validate("00251809-X")); // 00251809-X true
	}
}

分享到:
评论
1 楼 daichangfu 2012-08-23  
不错,不错,借鉴一下

相关推荐

    统一社会信用代码校验函数SQL

    校验统一社会信用代码的合法性,是SQL2008的标量函数

    组织机构代码生成器

    组织机构代码通常由国家或地区的管理机构发放,其结构可能因地区而异,但大体上包括几个组成部分:前缀、地区码、主体码和校验码。前缀通常是国家或地区的代码,例如中国的OCC以"91"开头;地区码则表示机构所在行政...

    单位代码批量校验工具

    单位代码批量校验工具是一种专为处理和验证组织机构代码而设计的实用软件。在信息化社会中,单位代码是识别和区分各类企事业单位、机关团体等法定身份的重要标识,它具有唯一性和标准化的特点。此工具的主要功能在于...

    Oracle统一社会信用代码自定义效验函数

    4. **机构类型代码检查**:中间的8位代表机构类型,需要验证其合法性。 5. **顺序码和校验码**:最后4位为顺序码和校验码,顺序码通常是随机分配的,校验码需要通过前面17位计算得出。 在Oracle数据库中,创建这样...

    最新oracle验证统一社会信用代码的函数

    在Oracle数据库系统中,"统一社会信用代码"(Unified Social Credit Code,USCC)是一种用于企业和组织的独特标识,类似于个人的身份证号码。它由18位数字组成,包含丰富的信息,如行政区划代码、机构类型、登记序号...

    易语言-易语言校验统一社会信用代码

    统一社会信用代码是国家为了加强社会信用体系建设而推行的一套独特的标识码,它由18位数字组成,包含了法人和其他组织的各类基础信息,如组织机构代码、税务登记号、工商注册号等。校验这些代码的正确性对于防止数据...

    《2018年工会决算报表》填报说明.doc.docx

    2. **组织机构代码**:根据国家技术监督部门提供的9位码填写,如果单位已获得统一社会信用代码,则按照9-17位信息填列。统一社会信用代码是18位的标识,包含登记管理部门代码、机构类别代码、行政区划码、主体标识码...

    py代码-统一社会信用代码生成

    1. **数据合法性**:行政区划代码和组织机构代码需要符合国家规定的范围,不能随意生成。 2. **错误处理**:在生成过程中应处理可能出现的异常,如非法输入或计算错误。 3. **可配置性**:如果需要从数据库或其他...

    jiaoyan.zip

    这个18位的代码包含了组织类别、行政区划代码、机构代码、校验码等信息。在处理企业数据时,需要确保输入的社会统一信用代码符合特定的编码规则,例如通过模10的校验算法来验证其正确性。 食品经营和生产许可证涉及...

    网上办理退工登记备案手续的步骤.pdf

    例如,如果组织机构代码是12345678-9,那么就直接输入123456789。点击“登录”按钮,进入退工登记的操作界面。 3. 确认退工人员信息:在操作页面,单位需要输入即将退工人员的姓名和身份证号码,然后点击“校验”...

    JavaScript中校验银行卡号的实现代码

    3. **校验前缀**:银行卡号的前缀通常代表着发卡机构,因此可以对卡号的前几位进行检查,确保它们符合某个银行或卡组织所使用的有效范围。 4. **Luhm校验**:这是一种校验和校验位算法,利用一种特定的算法,通过...

    危险废物(医疗废物)集中处理(置)厂运行情况(基503表)借鉴.pdf

    1. **组织机构代码**:这是一个在全国范围内独一无二的识别码,用于区分不同的企业和机构,由八位数字和一位校验码组成,是机构在行政管理中的身份证明。 2. **单位名称和公章**:单位的正式名称,通常与工商部门或...

    危险废物(医疗废物)集中处理(置)厂运行情况.doc

    - 组织机构代码:用于识别单位的唯一标识,由八位数字和一位校验码组成。 - 单位名称:企业或机构的官方全称,应与公章一致。 - 经营许可证证书编号:危险废物处理厂运营的合法证明。 - 法定代表人:负责单位...

    江西省电梯起重机械安装改造维修许可鉴定评审细则.docx

    - 税务登记证和组织机构代码证书必须齐全,与申请时提交的复印件一致,企业应有独立的财务账号。 2. **人员配置**: - 法定代表人、管理者代表、技术负责人、质量保证工程师等关键职位人员应具备相关法律法规知识...

    testurl_textarea_test.pdf

    - **所需材料**:详细列出了申请过程中需要提交的各种文件,包括但不限于申请表、注册登记证、组织机构代码证等,并强调所有材料需加盖公章。 - **申请表填写要求**:申请表应以打印形式填写,避免涂改,并且除了...

    原料药供应商审计报告1031.pdf

    - 供应商需持有有效的药品生产许可证、营业执照、组织机构代码证和药品GMP证书。报告中提到的各项证件都在有效期内,表明供应商具备合法生产原料药的资格。 2. **组织与人员**: - 供应商应有完善的员工培训管理...

    (2021-2022年收藏)新建压力管道行政许可登记办证须知压力管道使用登记行政许可.doc

    2. 营业执照及组织机构代码证:证明单位合法性,需盖公章。 3. 压力管道设计文件:提供原件,用于审核后返还。 4. 压力管道安装质量证明书:证明安装质量,需提供复印件并返还原件。 5. 安装质量监督检验报告:确保...

Global site tag (gtag.js) - Google Analytics