公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

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

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

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

解決方法如下:

方法一:采用最大號表的形式

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

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

優(yōu)點:效率高

缺點:號碼浪費大一些(例如保存的時候失敗了,那么這個號碼就浪費了。)

方法二:采用搶號的形式

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

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

優(yōu)點:速度快,不浪費號碼;

缺點:并發(fā)的時候,號碼重復(fù)造成數(shù)據(jù)無法保存。

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

Java代碼
  1. public synchronized String getOrderId(String shengid) {   
  2.   
  3.     if (shengid == null ││ "".equals(shengid.trim())) {   
  4.   
  5.         throw new NullPointerException("在獲取流水號的時候,省id為空!獲取流水號失敗!");   
  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("出錯了!一個省的蠶繭收購加工企業(yè)的個數(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ù)搶號5次,如果失敗,請用戶稍后再試!   
  2.   
  3.                 try {   
  4.   
  5.                     String orderId = getOrderId(xjqy.getSheng());// 獲取連續(xù)的流水號   
  6.   
  7.                     log.debug("獲取到的連續(xù)的流水號為:" + orderId);   
  8.   
  9.                     String dabh = ""// 檔案編號   
  10.   
  11.                     String code = ""// 企業(yè)編號   
  12.   
  13.   
  14.   
  15.                     dabh = xjqy.getSheng() + xjqy.getJdrq().substring(04)   
  16.   
  17.                             + orderId;   
  18.   
  19.                     log.debug("檔案編號為:" + dabh);   
  20.   
  21.                     xjqy.setDabh(dabh);   
  22.   
  23.   
  24.   
  25.                     // 所在省做了js校驗   
  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è)編號為:" + 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è)信息出錯:", e);   
  66.   
  67.                 }   
  68.   
  69.             }   
  70.   
  71.   
  72.   
  73.             if (!flag) {   
  74.   
  75.                 throw new OurException("保存失敗!請稍后重試!");   
  76.   
  77.             }
      

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


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

主站蜘蛛池模板: 国产成人综合亚洲色就色 | 国产黄色靠逼视频网站 | 国产成人啪精品视频免费app | 国产成人毛片一级 | 97人妻人人做人碰人人添 | 国产午夜成人久久无码一区二区 | 91国内精品久久久久怡红院 | 国产高清精品在线91 | 国产高清久久综 | 国产精品一品道加勒比 | 国产精品毛片在线完整sab | 成人无码区免费aⅴ片黄瓜视频 | 国产精品亚洲专区无码影院 | 国产成人无码精品久久小说 | 极品丝袜乱系列全集大全目录 | 国产精品三级手 | 国内精品一区二区三区不卡 | 国产成人免费观看 | 国产91麻豆免费观看 | 国产盗摄一区二区欧美精品 | 91精品资源在线观看 | 精品久久无码视频一区 | 国产aⅴ精品 | 国产av无码无遮挡毛片 | 91制服丝| 91精品欧美一区二区综合在线 | 国产一级av无码系列专区 | 国产综合亚洲欧美另类久久久精品 | 69视频在线观看 | 国产成人av性色在线影院 | 国产制服丝袜一区二区三区 | 国产一区免费在线观看 | 国产成人精品一区二区 | 二区黄色 | 2025国产91精品久久久久久 | 国产精品日韩精品 | 国产三级久久精品三级 | 国产经典中文字幕影片 | 国产成人午夜福利r在线观 国产成人午夜福利电影在线播放 | 97人妻精品全国免费视频 | 精品人妻大屁股白浆无码下载 |