⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 numgenerator.java

📁 j2ee源码
💻 JAVA
字号:
/*
 * Created on 2003/12/29
 */
package com.leeman.wkexs.common;

import javax.ejb.ObjectNotFoundException;
import java.util.*;

import com.leeman.common.dao.*;
import com.leeman.common.util.Formatter;
import com.leeman.common.util.DateUtils;
import com.leeman.common.util.EjbGetter;
import com.leeman.wkexs.common.dao.*;
/**
 * @author dennis
 */
public class NumGenerator{
	
	private static double nextValue(String companyID, int runningTypeEnum, String runningYear) throws Exception
	{
		return nextValue(companyID, runningTypeEnum, runningYear, null);
	}
	
	private static double nextValue(String companyID, int runningTypeEnum, String runningYear, String optionValue1) throws Exception
	{
		NumDef def = new NumDef(runningTypeEnum);
		String runningKey = null;
		
		if (optionValue1 != null)
		{
			runningKey = def.getRunning_type() + "@" + optionValue1;
		}
		else
		{
			runningKey = def.getRunning_type();
		}
		   
		double curr_no = 0;	
		Running_NumberHome home = (Running_NumberHome)EjbGetter.getEJBHome(Running_Number.JNDINAME, Running_NumberHome.class);
		try{
			Running_Number runningNumber = home.findByPrimaryKey(new Running_NumberKey(companyID, runningKey, runningYear));
			
			curr_no = runningNumber.getLast_used_no().doubleValue() + runningNumber.getIncrement_by().doubleValue();
			if (curr_no > runningNumber.getMax_value().doubleValue()){
				if (runningNumber.getRecycle().equals(WKConstants.YES_FLAG)){
					curr_no = runningNumber.getMin_value().doubleValue();
				}
				else{
					throw new Exception ("Running type reaches maximum value.");
				}
			}
			runningNumber.setLast_used_no(new Double(curr_no));
			runningNumber = null;
			return curr_no;
		}
		catch(ObjectNotFoundException e)
		{
			Running_Number runningNumber = home.create(companyID, runningKey, runningYear);
			runningNumber.setIncrement_by(def.getIncrement_by());
			runningNumber.setLast_used_no(def.getMin_value());
			runningNumber.setMin_value(def.getMin_value());
			runningNumber.setMax_value(def.getMax_value());
			runningNumber.setRunning_desc(def.getRunning_desc());
			runningNumber.setRecycle(WKConstants.YES_FLAG);
			
			return def.getMin_value().doubleValue();
		}
	}
	
	public static double generateNum(String companyID, int runningTypeEnum) throws Exception
	{
		return generateNum(companyID, runningTypeEnum, null);
	}
	
	public static double generateNum(String companyID, int runningTypeEnum, String optionValue1) throws Exception
	{
		double number = 0;
		GregorianCalendar gc = (GregorianCalendar)GregorianCalendar.getInstance();
		String yyyy = Formatter.lPad(String.valueOf(gc.get(GregorianCalendar.YEAR)), 4, '0');
		//String yy = yyyy.substring(2,4);
		//String mm = Formatter.lPad(String.valueOf(gc.get(GregorianCalendar.MONTH) + 1), 2, '0');
		//String dd = Formatter.lPad(String.valueOf(gc.get(GregorianCalendar.DAY_OF_MONTH)), 2, '0');
		//String hh = Formatter.lPad(String.valueOf(gc.get(GregorianCalendar.HOUR_OF_DAY)), 2, '0');
		//String mi = Formatter.lPad(String.valueOf(gc.get(GregorianCalendar.MINUTE)), 2, '0');
		//String ss = Formatter.lPad(String.valueOf(gc.get(GregorianCalendar.SECOND)), 2, '0');
		
		switch (runningTypeEnum)
		{			
			case NumDef.SC_TXN_NO:
				number = nextValue(companyID, runningTypeEnum, yyyy);
				break;
			case NumDef.SC_NO:
				number = nextValue(companyID, runningTypeEnum, yyyy);
				break;
			case NumDef.QUOTATION_TXN_NO:
				number = nextValue(companyID, runningTypeEnum, yyyy);
				break;
			case NumDef.QUOTATION_NO:
				number = nextValue(companyID, runningTypeEnum, yyyy);
				break;
			case NumDef.DEPOSIT_NO:
				number = nextValue(companyID, runningTypeEnum, yyyy);
				break;	
			case NumDef.DEBIT_NOTE_NO:
				number = nextValue(companyID, runningTypeEnum, yyyy);
				break;
			case NumDef.CREDIT_NOTE_NO:
				number = nextValue(companyID, runningTypeEnum, yyyy);
				break;
			case NumDef.SHIPMENT_NO:
				number = nextValue(companyID, runningTypeEnum, yyyy);
				break;
			case NumDef.PN_NO:
				number = nextValue(companyID, runningTypeEnum, yyyy);
				break;
			case NumDef.BR_NO:
				number = nextValue(companyID, runningTypeEnum, yyyy);
				break;
			case NumDef.INVOICE_NO:
				number = nextValue(companyID, runningTypeEnum, yyyy);
				break;
			case NumDef.CUSTOMER_NO:
				number = nextValue(companyID, runningTypeEnum, "99");
				break;
			/* Amended by Anthea on 26/6/07 */
			case NumDef.PRAR_NO:
				number = nextValue(companyID, runningTypeEnum, yyyy);
				break;
			/* */
			default:
				throw new Exception("Invalid Running Type Enumulation.");
		}
		return number;	
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -