自動編碼是一個(gè)數(shù)據(jù)管理系統(tǒng)中必不可少的功能。它負(fù)責(zé)給常規(guī)的表單中按照規(guī)則生成規(guī)律、唯一、不重復(fù)的編碼。比如說員工信息中的工號、訂單表中的訂單號、入庫單的單號、產(chǎn)品信息中的產(chǎn)品編號等等。
因?yàn)榫幪柕囊?guī)則多種多樣,如果每個(gè)表都去自己寫代碼實(shí)現(xiàn)相應(yīng)的編碼生成,這個(gè)工作量不可謂不大。為了解決這個(gè)痛點(diǎn),SanMuGrid平臺開發(fā)了這個(gè)通用的自動編碼生成模塊,基本上可以解決99%的編碼需求。你也許覺得我這吹的是不是有點(diǎn)過了?不急,咱們往下看。
支持編碼類型
1、自增長ID:(長)整數(shù)型,根據(jù)初始值單純地生成自增長的數(shù)值。適合一些不需要特殊意義的場景,簡單表示唯一性,索引性能也會很高。
2、GUID:字符型,返回32位長度的GUID字符串。GUID作為表的主鍵的話,在多系統(tǒng)合并、不同數(shù)據(jù)庫數(shù)據(jù)同步時(shí)麻煩較少。
3、固定字符、日期、流水碼多種組合:大多數(shù)情況下為了讓票據(jù)編號擁有一定的可識別度,我們會給編號設(shè)定固定的字符開頭或結(jié)尾。也會根據(jù)票據(jù)流水碼歸零的周期來設(shè)置日期。
4、字段+表達(dá)式:這是殺手級的功能,通過這兩種類型的補(bǔ)充,我們就可以有自信說這樣的通用自動編碼功能可以完成99%的應(yīng)用場景。因?yàn)樽侄问强梢灾苯尤?shù)據(jù)表中的數(shù)據(jù)的,表達(dá)式可以寫VB.Net代碼從數(shù)據(jù)庫中獲取數(shù)據(jù),所以理論上用代碼實(shí)現(xiàn)的東西都可以通過表達(dá)式來實(shí)現(xiàn)。比如最典型的,做一個(gè)產(chǎn)品BOM編號,我們可能會需要用到產(chǎn)品的各種特性,然后再取其中幾種特性分組產(chǎn)生流水碼。這么復(fù)雜編碼一樣可以通過此模塊設(shè)置一下參數(shù)即可完成。
生成編號時(shí)機(jī)
AfterDataRowAdded:在新增行的時(shí)候即會生成。這樣做的好處是,如果此編號是關(guān)聯(lián)字段的話,子表如果有新增的話,會正常帶出此編號信息,能夠有效的保存數(shù)據(jù)。壞處是如果中間有放棄某些新增數(shù)據(jù)的話,就會導(dǎo)致編號中間出現(xiàn)斷號。
BeforeSave:在保存表的時(shí)候生成。這樣做的好處就是可以解決斷號的問題。有人可能會覺得,如果中間有人刪除單據(jù)的話,是不是還會有斷號呀?這時(shí)候我們可以結(jié)合邏輯刪除,這樣就可以保證沒有斷號了。
常規(guī)操作步驟
1.設(shè)置了相應(yīng)的格式參數(shù)后,得點(diǎn)擊向左這個(gè)按鈕,才會最終采用此格式參數(shù)。
2.可以結(jié)合示例上下調(diào)整參數(shù)的順序。