博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于组织机构算法A001、A0010001、A0010002
阅读量:4287 次
发布时间:2019-05-27

本文共 2938 字,大约阅读时间需要 9 分钟。

      由于所以偶然,公司有一个项目需要重构组织机构,所以我得重新架构组织机构这一块,于是我采用典型的A001、A0010001、A0010002的方式

/** * 流水号生成规则(按默认规则递增,数字从1-99开始递增,数字到99,递增字母;位数不够增加位数) * A001 * A001A002 * */public class YouBianCodeUtil {	// 数字位数(默认生成3位的数字)	private static final int numLength = 4;	public static final int zhanweiLength = 1+numLength;	/**	 * 根据前一个code,获取同级下一个code	 * 例如:当前最大code为D01A04,下一个code为:D01A05	 * 	 * @param code	 * @return	 */	public static synchronized String getNextYouBianCode(String code) {		String newcode = "";		if (code == null || code =="") {			String zimu = "A";			String num = getStrNum(1);			newcode = zimu + num;		} else {			String before_code = code.substring(0, code.length() - 1- numLength);			String after_code = code.substring(code.length() - 1 - numLength,code.length());			char after_code_zimu = after_code.substring(0, 1).charAt(0);			Integer after_code_num = Integer.parseInt(after_code.substring(1));//			 org.jeecgframework.core.util.LogUtil.info(after_code);//			 org.jeecgframework.core.util.LogUtil.info(after_code_zimu);//			 org.jeecgframework.core.util.LogUtil.info(after_code_num);			String nextNum = "";			char nextZimu = 'A';			// 先判断数字等于999*,则计数从1重新开始,递增			if (after_code_num == getMaxNumByLength(numLength)) {				nextNum = getNextStrNum(0);			} else {				nextNum = getNextStrNum(after_code_num);			}			// 先判断数字等于999*,则字母从A重新开始,递增			if(after_code_num == getMaxNumByLength(numLength)) {				nextZimu = getNextZiMu(after_code_zimu);			}else{				nextZimu = after_code_zimu;			}			// 例如Z99,下一个code就是Z99A01			if ('Z' == after_code_zimu && getMaxNumByLength(numLength) == after_code_num) {				newcode = code + (nextZimu + nextNum);			} else {				newcode = before_code + (nextZimu + nextNum);			}		}		return newcode;	}	/**	 * 根据父亲code,获取下级的下一个code	 * 	 * 例如:父亲CODE:A01	 *       当前CODE:A01B03	 *       获取的code:A01B04	 *       	 * @param parentCode   上级code	 * @param localCode    同级code	 * @return	 */	public static synchronized String getSubYouBianCode(String parentCode,String localCode) {		if(localCode!=null && localCode!=""){//			return parentCode + getNextYouBianCode(localCode);			return getNextYouBianCode(localCode);		}else{			parentCode = parentCode + "A"+ getNextStrNum(0);		}		return parentCode;	}		/**	 * 将数字前面位数补零	 * 	 * @param num	 * @return	 */	private static String getNextStrNum(int num) {		return getStrNum(getNextNum(num));	}	/**	 * 将数字前面位数补零	 * 	 * @param num	 * @return	 */	private static String getStrNum(int num) {		String s = String.format("%0" + numLength + "d", num);		return s;	}	/**	 * 递增获取下个数字	 * 	 * @param num	 * @return	 */	private static int getNextNum(int num) {		num++;		return num;	}	/**	 * 递增获取下个字母	 * 	 * @param num	 * @return	 */	private static char getNextZiMu(char zimu) {		if (zimu == 'Z') {			return 'A';		}		zimu++;		return zimu;	}		/**	 * 根据数字位数获取最大值	 * @param length	 * @return	 */	private static int getMaxNumByLength(int length){		if(length==0){			return 0;		}		String max_num = "";		for (int i=0;i

转载地址:http://odagi.baihongyu.com/

你可能感兴趣的文章
【赵薇与贝嫂希尔顿撞包】
查看>>
【王菲机场背3万LV包 气场压过代言人范爷】
查看>>
【可疑代码扫描器V0.12最新绿色版】
查看>>
【色空win7动漫美女诱惑主题】
查看>>
【美女送福利了win7主题】
查看>>
【解析关电脑后CPU风扇转不停问题】
查看>>
【内网不正常引起死机解决办法】
查看>>
【5步搜索到无线网卡信号】
查看>>
优酷客户端3.8.0 [优酷客户端官方正式版]
查看>>
【还原win7系统默认字体的方法】
查看>>
重庆一号通V2011官方版[新型电信服务]
查看>>
【图文】教你设置Win8系统中家长控制
查看>>
【主题世界】阿狸对着你卖萌桌面主题
查看>>
【加密桌面便签】V1.1正式版简体中文
查看>>
【Windows7系统装什么浏览器好用】
查看>>
看图纸V3.2.1正式版[看图纸正式版下载]
查看>>
【图文解决win7系统C盘空间不够用】
查看>>
【win7系统怎样进去登陆界面】
查看>>
【win7无法识别u盘的解决办法】
查看>>
【布谷鸟来客提醒V4.0 官方版】淘宝店铺监控软件
查看>>