91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

如何生成連續(xù)的流水號(hào)

admin
2011年3月3日 17:8 本文熱度 3400
工作中常常遇到流水號(hào)生成的問題,有的客戶要求流水號(hào)必須連續(xù),這個(gè)我們的開發(fā)工作提出了一個(gè)小難題。

解決方法如下:

方法一:采用最大號(hào)表的形式

在數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)表專門存放其他數(shù)據(jù)庫(kù)的最大流水號(hào),table_maxOrderID {table1_max,table2_max};

在向數(shù)據(jù)庫(kù)中插入數(shù)據(jù)的時(shí)候,首先想table_maxOrderId表查詢到當(dāng)前表的最大號(hào)加1,先更新最大號(hào)表,然后保存到業(yè)務(wù)數(shù)據(jù)。

優(yōu)點(diǎn):效率高

缺點(diǎn):號(hào)碼浪費(fèi)大一些(例如保存的時(shí)候失敗了,那么這個(gè)號(hào)碼就浪費(fèi)了。)

方法二:采用搶號(hào)的形式

這個(gè)不需要?jiǎng)?chuàng)建最大號(hào)表,在向數(shù)據(jù)庫(kù)中保存數(shù)據(jù)的時(shí)候,獲取當(dāng)前表的最大流水號(hào)。例如:

select max(ID) from tableName ; 讓后將結(jié)果加一。

優(yōu)點(diǎn):速度快,不浪費(fèi)號(hào)碼;

缺點(diǎn):并發(fā)的時(shí)候,號(hào)碼重復(fù)造成數(shù)據(jù)無(wú)法保存。

解決辦法:搶號(hào)。如果保存失敗,那么重復(fù)搶號(hào)例如:

Java代碼
  1. public synchronized String getOrderId(String shengid) {   
  2.   
  3.     if (shengid == null ││ "".equals(shengid.trim())) {   
  4.   
  5.         throw new NullPointerException("在獲取流水號(hào)的時(shí)候,省id為空!獲取流水號(hào)失敗!");   
  6.   
  7.     }          
  8.   
  9.     // 首先查找所在地區(qū)查找企業(yè)表中有沒有數(shù)據(jù)   
  10.   
  11.     int num = xjqyDao.getCountBySql(" and qy_sheng='" + shengid + "'");   
  12.   
  13.     String orderId = null;   
  14.   
  15.     if (num == 0) {   
  16.   
  17.         orderId = "0001";   
  18.   
  19.     } else {   
  20.   
  21.         //必須找到本省最大的檔案的id               
  22.   
  23.         String maxDabh = xjqyDao.getMaxDabhBySheng(shengid);   
  24.   
  25.         num = Integer.parseInt(maxDabh.substring(6));   
  26.   
  27.         String temp = (num + 1) + "";   
  28.   
  29.         int LEN = temp.length();   
  30.   
  31.         if (LEN > 4) {   
  32.   
  33.             log.error("出錯(cuò)了!一個(gè)省的蠶繭收購(gòu)加工企業(yè)的個(gè)數(shù)不能超過1萬(wàn)!");   
  34.   
  35.             return null;   
  36.   
  37.         }   
  38.   
  39.         for (int i = 0; i < 4 - LEN; i++) {   
  40.   
  41.             temp = "0" + temp;   
  42.   
  43.         }   
  44.   
  45.         orderId = temp;   
  46.   
  47.     }   
  48.   
  49.     return orderId;   
  50.   
  51. }  
Java代碼
  1.   
Java代碼
  1. class=java name="code">            for (int i = 0; i < 5; i++) { // 連續(xù)搶號(hào)5次,如果失敗,請(qǐng)用戶稍后再試!   
  2.   
  3.                 try {   
  4.   
  5.                     String orderId = getOrderId(xjqy.getSheng());// 獲取連續(xù)的流水號(hào)   
  6.   
  7.                     log.debug("獲取到的連續(xù)的流水號(hào)為:" + orderId);   
  8.   
  9.                     String dabh = ""// 檔案編號(hào)   
  10.   
  11.                     String code = ""// 企業(yè)編號(hào)   
  12.   
  13.   
  14.   
  15.                     dabh = xjqy.getSheng() + xjqy.getJdrq().substring(04)   
  16.   
  17.                             + orderId;   
  18.   
  19.                     log.debug("檔案編號(hào)為:" + dabh);   
  20.   
  21.                     xjqy.setDabh(dabh);   
  22.   
  23.   
  24.   
  25.                     // 所在省做了js校驗(yàn)   
  26.   
  27.                     if (xjqy.getShi() == null ││ xjqy.getShi().equals("")) {   
  28.   
  29.                         // 如果市為空   
  30.   
  31.                         code = xjqy.getSheng() + "0000" + xjqy.getLb()   
  32.   
  33.                                 + orderId;   
  34.   
  35.                     } else if (xjqy.getXian() == null  
  36.   
  37.                             ││ xjqy.getXian().equals("")) {   
  38.   
  39.                         // 如果縣為空   
  40.   
  41.                         code = xjqy.getShi() + "00" + xjqy.getLb() + orderId;   
  42.   
  43.                     } else {   
  44.   
  45.                         code = xjqy.getXian() + xjqy.getLb() + orderId;   
  46.   
  47.                     }   
  48.   
  49.                     log.debug("企業(yè)編號(hào)為:" + code);   
  50.   
  51.                     xjqy.setCode(code);   
  52.   
  53.   
  54.   
  55.                     xjqyDao.create(xjqy);   
  56.   
  57.                     log.debug("create object");   
  58.   
  59.                     flag = true;// 保存成功!   
  60.   
  61.                     break// 退出循環(huán)   
  62.   
  63.                 } catch (Exception e) {   
  64.   
  65.                     log.debug("保存企業(yè)信息出錯(cuò):", e);   
  66.   
  67.                 }   
  68.   
  69.             }   
  70.   
  71.   
  72.   
  73.             if (!flag) {   
  74.   
  75.                 throw new OurException("保存失敗!請(qǐng)稍后重試!");   
  76.   
  77.             }
      

小結(jié):
如果要從嚴(yán)格意義上生成連續(xù)的流水號(hào),那么應(yīng)該采用搶號(hào)的方法,同時(shí)限制用戶不準(zhǔn)刪除記錄,這樣才能保證流水號(hào)的嚴(yán)格連續(xù),否則錄入5條,刪掉其中的2條,那么用戶看到的記錄的號(hào)碼將無(wú)法連續(xù)了。


該文章在 2011/3/3 17:09:10 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产精品偷窥 | 成人视屏一区 | 噼里啪啦免 | www.7777| 精品国产污污污 | 三区在线播放 | 国产日韩欧美另类 | 国产操比 | 国产在线更新 | 国产日韩海的味道 | 中文字幕第二页 | 午夜一区一品日本 | 日本护士喷 | 午夜三级中文不 | 国产狂喷潮在线播放 | 九九热精品免费观看 | 成人一区二区在线 | 午夜日韩福利 | 欧美日女人b视频网 | 三级日韩 | 91网首页 | 国产愉拍精品视频手 | 国产精品区二 | 区三区在线 | 国产免播 | 精品日韩国产一区 | 日韩成人在 | 最新亚洲人成 | 日本免费一级视频 | 日本伦理电影片观看 | 理论片在人线免费 | 国产一区在线看 | 日韩BD| 国产思思精品视频 | 国产白虎不卡在线 | 国产精品视频视 | 日韩第一页在线 | 日韩制服在线 | 国产极品 | 91网站永久视频 | 午夜视频一区二区 |