apzl_leasing/src_tenwa/com/tenwa/apzl/comm/SeriaNumBerForUtil.java

329 lines
11 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.tenwa.apzl.comm;
import java.text.DecimalFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import jbo.com.tenwa.entity.comm.serialutil.T_SERIAL_DISCARD_NUMBER;
import jbo.com.tenwa.entity.comm.serialutil.T_SERIAL_NUMBER;
import com.amarsoft.are.jbo.BizObject;
import com.amarsoft.are.jbo.BizObjectManager;
import com.amarsoft.are.jbo.BizObjectQuery;
import com.amarsoft.are.jbo.JBOFactory;
import com.amarsoft.are.jbo.JBOTransaction;
import com.amarsoft.are.lang.StringX;
import com.tenwa.comm.util.date.DateAssistant;
import com.tenwa.comm.util.jboutil.DataOperatorUtil;
import com.tenwa.util.SerialNumberUtil;
/**
* @author 58261
* ÓÅ»¯ÎҵŤ×÷´ú°ìÏÔʾ
*
* */
public class SeriaNumBerForUtil {
public static synchronized String getTiaoXiSerialNumber(JBOTransaction tx) throws Exception{
return SeriaNumBerForUtil.getSerialNumber("TXLC{year}{maxOrderNumber}",7,null, "TXLC", null, tx);
}
protected static synchronized String getSerialNumber(String serialNumberPattern,int numberCount,Map<String,String> model,String type,Integer queryYear,JBOTransaction tx) throws Exception
{
String currentDateTime = DateAssistant.getTodayNow();
String currentYear = currentDateTime.substring(0,4);
String month = currentDateTime.substring(5,7);
String day = currentDateTime.substring(8,10);
String hour = currentDateTime.substring(11,13);
String minute = currentDateTime.substring(14,16);
String second = currentDateTime.substring(17,19);
Integer year = Integer.parseInt(currentYear);
if(null != queryYear){
year = queryYear;
}
Map<String,String> paramMap = new HashMap<String,String>();
paramMap.put("year", year+"");
paramMap.put("month", month+"");
paramMap.put("day", day+"");
paramMap.put("hour", hour+"");
paramMap.put("minute", minute+"");
paramMap.put("second", second+"");
int maxOrderNumber = getMaxOrderNumber(type, queryYear, tx);
StringBuffer numberFormat = new StringBuffer();
for(int i=0;i<numberCount;i++)
{
numberFormat.append("0");
}
DecimalFormat df = new DecimalFormat(numberFormat.toString());
String serialNumberFormat = df.format(maxOrderNumber);
paramMap.put("maxOrderNumber", serialNumberFormat);
if(null != model){
paramMap.putAll(model);
}
String serialNumberString = getSerialNumber(paramMap, serialNumberPattern);
return serialNumberString;
}
protected static synchronized String getSerialNumber(Map<String,String> paramMap,String serialNumberPattern){
for(String key:paramMap.keySet()){
if(serialNumberPattern.indexOf("{"+key+"}")>=0){
serialNumberPattern=serialNumberPattern.replace("{"+key+"}", paramMap.get(key));
}
}
return serialNumberPattern;
}
/***
* serialNumberPatternÆ¥ÅäÖµ
* {year}->Äê·Ý£¬Èç¹û²ÎÊýyearΪ¿ÕÔòÈ¡µ±Ç°Äê
* {month}->µ±Ç°ÔÂ
* {day}->µ±Ç°ÈÕ
* {hour}->ʱ
* {minute}->·Ö
* {second}->Ãë
* {maxOrderNumber}->µ±Ç°×î´óÐòºÅ
*
* **/
protected static synchronized String getSerialNumberByMonth(String serialNumberPattern,int numberCount,Map<String,String> model,String type,Integer queryYear,Integer queryMonth,JBOTransaction tx) throws Exception
{
String currentDateTime = DateAssistant.getTodayNow();
String currentYear = currentDateTime.substring(0,4);
String monthStr = currentDateTime.substring(5,7);
String day = currentDateTime.substring(8,10);
String hour = currentDateTime.substring(11,13);
String minute = currentDateTime.substring(14,16);
String second = currentDateTime.substring(17,19);
int year = Integer.parseInt(currentYear);
int month = Integer.parseInt(monthStr);
if(null != queryYear){
year = queryYear;
}
if(null != queryMonth){
month = queryMonth ;
}
Map<String,String> paramMap = new HashMap<String,String>();
paramMap.put("year", year+"");
paramMap.put("month", monthStr+"");
paramMap.put("day", day+"");
paramMap.put("hour", hour+"");
paramMap.put("minute", minute+"");
paramMap.put("second", second+"");
int maxOrderNumber = getMaxOrderNumberByMonth(type, year,month, tx);
StringBuffer numberFormat = new StringBuffer();
for(int i=0;i<numberCount;i++)
{
numberFormat.append("0");
}
DecimalFormat df = new DecimalFormat(numberFormat.toString());
String serialNumberFormat = df.format(maxOrderNumber);
paramMap.put("maxOrderNumber", serialNumberFormat);
if(null != model){
paramMap.putAll(model);
}
String serialNumberString = getSerialNumber(paramMap, serialNumberPattern);
return serialNumberString;
}
//¿¼ÂDz¢·¢Çé¿ö±ØÐë²ÉÓÃͬ²½»úÖÆ
@SuppressWarnings("unchecked")
protected static synchronized int getMaxOrderNumber(String type,Integer queryYear,JBOTransaction tx) throws Exception
{
int currentYear = Calendar.getInstance().get(Calendar.YEAR);
BizObjectManager tNumberManager = JBOFactory.getBizObjectManager(T_SERIAL_NUMBER.CLASS_NAME);
tx.join(tNumberManager);
Map<String,String>searchCondtion=new HashMap<String,String>();
if(!StringX.isEmpty(type)){
searchCondtion.put("type_", type);
}
if(null != queryYear){
searchCondtion.put("year_", queryYear.toString());
}
String querySql = DataOperatorUtil.getQuerySql(searchCondtion);
BizObjectQuery bqDest = tNumberManager.createQuery(querySql);
for (String key : searchCondtion.keySet()) {
bqDest.setParameter(key, searchCondtion.get(key).toString());
}
BizObject serialNumber = null;
serialNumber = bqDest.getSingleResult(true);// Ä¿±êJBO£¬ÐèÒª×ö¸üвÙ×÷
if(null==serialNumber){
serialNumber = tNumberManager.newObject();
if(null != queryYear)
{
currentYear = queryYear;
}
serialNumber.setAttributeValue("year_",currentYear);
serialNumber.setAttributeValue("type_",type);
serialNumber.setAttributeValue("order_number_", "0");
}
int maxOrderNumber = Integer.valueOf(serialNumber.getAttribute("order_number_").getInt()) + 1;
serialNumber.setAttributeValue("order_number_",maxOrderNumber);
tNumberManager.saveObject(serialNumber);
return maxOrderNumber;
}
//¿¼ÂDz¢·¢Çé¿ö±ØÐë²ÉÓÃͬ²½»úÖÆ
@SuppressWarnings("unchecked")
protected static synchronized int getMaxOrderNumberByMonth(String type,Integer queryYear,Integer queryMonth,JBOTransaction tx) throws Exception
{
int currentYear = Calendar.getInstance().get(Calendar.YEAR);
int currentMonth = Calendar.getInstance().get(Calendar.MONTH);
BizObjectManager tNumberManager = JBOFactory.getBizObjectManager(T_SERIAL_NUMBER.CLASS_NAME);
tx.join(tNumberManager);
Map<String,String>searchCondtion=new HashMap<String,String>();
if(!StringX.isEmpty(type)){
searchCondtion.put("type_", type);
}
if(null != queryYear){
searchCondtion.put("year_", queryYear.toString());
}
if(null != queryMonth){
searchCondtion.put("month_", queryMonth.toString());
}
String querySql = DataOperatorUtil.getQuerySql(searchCondtion);
BizObjectQuery bqDest = tNumberManager.createQuery(querySql);
for (String key : searchCondtion.keySet()) {
bqDest.setParameter(key, searchCondtion.get(key).toString());
}
BizObject serialNumber = null;
serialNumber = bqDest.getSingleResult(true);// Ä¿±êJBO£¬ÐèÒª×ö¸üвÙ×÷
if(null==serialNumber)
{
serialNumber = tNumberManager.newObject();
if(null != queryYear)
{
currentYear = queryYear;
}
if(null != queryMonth){
currentMonth = queryMonth;
}
serialNumber.setAttributeValue("year_",currentYear);
serialNumber.setAttributeValue("month_",currentMonth);
serialNumber.setAttributeValue("type_",type);
serialNumber.setAttributeValue("order_number_", "0");
}
int maxOrderNumber = Integer.valueOf(serialNumber.getAttribute("order_number_").getInt()) + 1;
serialNumber.setAttributeValue("order_number_",maxOrderNumber);
tNumberManager.saveObject(serialNumber);
return maxOrderNumber;
}
/**
* ÓÅÏÈ´ÓºÅÂë·ÏÆú³ØÖÐÈ¡ºÅ,Èç¹ûºÅÂë·ÏÆú³ØÖÐûÓдýÈ¡ºÅÂð,Ôò¸ù¾ÝÐòÁкÅÉú³É
* @param serialNumberPattern
* @param numberCount
* @param model
* @param type
* @param queryYear
* @param hibernateTemplate
* @param jdbcTemplate
* @return
* @throws Exception
*/
protected static synchronized String getSerialNumberFirstDiscard(String serialNumberPattern,int numberCount,Map<String,String> model,String type,Integer queryYear,JBOTransaction tx) throws Exception
{
String currentDateTime = DateAssistant.getTodayNow();
String currentYear = currentDateTime.substring(0,4);
String month = currentDateTime.substring(5,7);
String day = currentDateTime.substring(8,10);
String hour = currentDateTime.substring(11,13);
String minute = currentDateTime.substring(14,16);
String second = currentDateTime.substring(17,19);
int year = Integer.parseInt(currentYear);
if(null != queryYear){
year = queryYear;
}
Map<String,String> paramMap = new HashMap<String,String>();
paramMap.put("year", year+"");
paramMap.put("month", month+"");
paramMap.put("day", day+"");
paramMap.put("hour", hour+"");
paramMap.put("minute", minute+"");
paramMap.put("second", second+"");
int maxOrderNumber =0;
//´Ó·ÏÆú³Ø²éÕÒ¿ÉÓúÅÂë
maxOrderNumber=getMinDiscardNumber(type, queryYear, tx);
if(maxOrderNumber<0){//·ÏÆú³ØÖÐûÓÐÊý¾Ý
maxOrderNumber=getMaxOrderNumber(type, year, tx);
}
StringBuffer numberFormat = new StringBuffer();
for(int i=0;i<numberCount;i++)
{
numberFormat.append("0");
}
DecimalFormat df = new DecimalFormat(numberFormat.toString());
String serialNumberFormat = df.format(maxOrderNumber);
paramMap.put("maxOrderNumber", serialNumberFormat);
if(null != model){
paramMap.putAll(model);
}
String serialNumberString = getSerialNumber(paramMap, serialNumberPattern);
return serialNumberString;
}
@SuppressWarnings("unchecked")
protected static synchronized int getMinDiscardNumber(String type,Integer queryYear,JBOTransaction tx) throws Exception
{
BizObjectManager tNumberManager = JBOFactory.getBizObjectManager(T_SERIAL_DISCARD_NUMBER.CLASS_NAME);
tx.join(tNumberManager);
Map<String,String>searchCondtion=new HashMap<String,String>();
if(!StringX.isEmpty(type)){
searchCondtion.put("type_", type);
}
if(null != queryYear){
searchCondtion.put("year_", queryYear.toString());
}
String querySql = DataOperatorUtil.getQuerySql(searchCondtion);
BizObjectQuery bqDest = tNumberManager.createQuery(querySql);
for (String key : searchCondtion.keySet()) {
bqDest.setParameter(key, searchCondtion.get(key).toString());
}
BizObject serialNumber = null;
serialNumber = bqDest.getSingleResult(true);// Ä¿±êJBO£¬ÐèÒª×ö¸üвÙ×÷
if(null!=serialNumber)
{
int minOrderNumber = serialNumber.getAttribute("discard_number_").getInt();
tNumberManager.deleteObject(serialNumber);
return minOrderNumber;
}
return -1;
}
}