日韩欧美国产精品免费一二-日韩欧美国产精品亚洲二区-日韩欧美国产精品专区-日韩欧美国产另-日韩欧美国产免费看-日韩欧美国产免费看清风阁

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

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

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

解決方法如下:

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

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

在向數(shù)據(jù)庫中插入數(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ù)庫中保存數(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ù)無法保存。

解決辦法:搶號(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萬!");   
  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)碼將無法連續(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倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(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

主站蜘蛛池模板: 国语对白精品视频在 | 国产一区日韩二区欧美三区 | 在线中文字幕亚洲 | 成人国内免费精品视频在线观看 | 在线观看国产色一二三区 | 欧美日韩aa一级视频 | 国产男女动作视频在线91 | 在线观看国产一区二区三区 | 国产精选91原创视频 | 国产原创剧 | 亚洲视频精品 | 2048国产精品原创综合在线 | 日韩欧美aⅴ综合网站发布 大香伊蕉在人线国产最新75 | 一色屋精品视频在线观看 | 国产国产精品人在线视 | 国语自产免费精品视频一区二区 | 亚洲精品911永久在线观看 | 大地影院mv在线观看视频免费 | 日本一区二区在线不卡 | 91成人国产网 | 亚洲日韩欧美不卡 | 欧美浓毛 | 丁香婷婷六月综合缴清 | 日韩一区二区三区四区区区 | 国产一区二区三区在线观看免费 | 免费人成网站在线免费观看 | 最新韩剧美剧超清全集 | 国女精品爽爽一区二区 | 男人操女人网站 | 亚洲中文字幕在线观看 | 日韩精品亚洲人成在线观看 | 亚洲国产亚洲片在线观看播放 | а√天堂资源8在线官网在线 | 欧美色综合网站 | 天下第一社区在线观看视频 | 亚洲综合色一区二区三区另类 | 国产精品户 | 国内精品视频成人一区 | 成人污污污www网站免费丝瓜 | 国产精品亚洲欧美 | 亚洲伊人精品国产91综合 |