本發(fā)明涉及財務結算領域,特別涉及一種基于區(qū)間樹查找算法的結算周期生成方法及系統(tǒng)。
背景技術:
目前,財務結算中一般根據不同供應商的資質情況需要進行相關結算來規(guī)避風險,如結算要求一般有按周結、按月結、按年結,甚至還有要求一周內多次結算、一月內多結算、一年內多結算等情形,這時就需要結算周期及結算日期都能夠靈活地定制化配置,從而讓結算員能簡單、直觀、快速地獲得所關注的結算周期及結算日期。
區(qū)間樹是基于紅黑樹擴展得到的支持以區(qū)間為元素的動態(tài)集合的操作,區(qū)間樹左側的節(jié)點區(qū)間都小于其父節(jié)點的區(qū)間、右側的節(jié)點區(qū)間都大于其父節(jié)點的區(qū)間,另外區(qū)間樹查找算法一般從根節(jié)點開始遍歷,區(qū)間元素的查找和插入都可以在時間復雜度o(lgn)所表示的時間內完成,n為區(qū)間樹節(jié)點數。因此,區(qū)間樹非常適合用于如結算周期、結算時間的靈活配置和查找。
技術實現要素:
本發(fā)明要解決的技術問題是為了克服現有技術中不能靈活地定制化配置結算周期以及不便于查找結算周期的缺陷,提供一種基于區(qū)間樹查找算法的結算周期生成方法及系統(tǒng)。
本發(fā)明是通過下述技術方案來解決上述技術問題:
一種基于區(qū)間樹查找算法的結算周期生成方法,所述方法包括以下步驟:
s1、接收結算配置數據,所述結算配置數據包括結算區(qū)間、結算日,所述結算區(qū)間包括起始日、截止日,所述起始日早于所述截止日,所述結算日不早于所述截止日;
s2、將所述結算配置數據生成結算周期區(qū)間樹的根節(jié)點,所述根節(jié)點包括節(jié)點顏色、查找鍵值、區(qū)間左值、區(qū)間右值、區(qū)間返回值,所述節(jié)點顏色為黑色,所述查找鍵值在所述結算區(qū)間內,所述區(qū)間左值為所述起始日,所述區(qū)間右值為所述截止日,所述區(qū)間返回值為所述結算日;
s3、利用所述根節(jié)點生成所述結算周期區(qū)間樹,所述結算周期區(qū)間樹為區(qū)間樹,所述結算周期區(qū)間樹包括若干節(jié)點。
較佳地,所述結算區(qū)間的跨度可任意配置。
較佳地,所述結算區(qū)間的跨度可配置為一星期、一個月或一年。
一種基于區(qū)間樹查找算法的結算周期生成系統(tǒng),所述系統(tǒng)包括接收模塊、根節(jié)點生成模塊、區(qū)間樹生成模塊,
所述接收模塊用于接收結算配置數據,所述結算配置數據包括結算區(qū)間、結算日,所述結算區(qū)間包括起始日、截止日,所述起始日早于所述截止日,所述結算日不早于所述截止日;
所述根節(jié)點生成模塊用于將所述結算配置數據生成結算周期區(qū)間樹的根節(jié)點,所述根節(jié)點包括節(jié)點顏色、查找鍵值、區(qū)間左值、區(qū)間右值、區(qū)間返回值,所述節(jié)點顏色為黑色,所述查找鍵值在所述結算區(qū)間內,所述區(qū)間左值為所述起始日,所述區(qū)間右值為所述截止日,所述區(qū)間返回值為所述結算日;
所述區(qū)間樹生成模塊用于利用所述根節(jié)點生成所述結算周期區(qū)間樹,所述結算周期區(qū)間樹為區(qū)間樹,所述結算周期區(qū)間樹包括若干節(jié)點。
較佳地,所述結算區(qū)間的跨度可任意配置。
較佳地,所述結算區(qū)間的跨度可配置為一星期、一個月或一年。
本發(fā)明的積極進步效果在于:本發(fā)明提供的基于區(qū)間樹查找算法的結算周期生成方法及系統(tǒng),其中所述方法中只需結算員簡單配置結算區(qū)間及結算日,通過所述方法就能自動建立起結算周期區(qū)間樹,從而基于區(qū)間樹查找算法,結算員就能簡單、直觀、快速地獲得所關注的結算周期及結算日期。
附圖說明
圖1為本發(fā)明的實施例1的基于區(qū)間樹查找算法的結算周期生成方法的流程圖。
圖2為本發(fā)明的實施例1的基于區(qū)間樹查找算法的結算周期生成方法的四天一結的結算周期區(qū)間樹的示意圖。
圖3為本發(fā)明的實施例2的基于區(qū)間樹查找算法的結算周期生成方法的一周一結的結算周期區(qū)間樹的示意圖。
圖4為本發(fā)明的實施例2的基于區(qū)間樹查找算法的結算周期生成方法的一月一結的結算周期區(qū)間樹的示意圖。
圖5為本發(fā)明的實施例2的基于區(qū)間樹查找算法的結算周期生成方法的一年一結的結算周期區(qū)間樹的示意圖。
圖6為本發(fā)明的實施例3的基于區(qū)間樹查找算法的結算周期生成方法的一周兩結的結算周期區(qū)間樹的示意圖。
圖7為本發(fā)明的實施例4的基于區(qū)間樹查找算法的結算周期生成系統(tǒng)的示意圖。
具體實施方式
下面通過實施例的方式進一步說明本發(fā)明,但并不因此將本發(fā)明限制在所述的實施例范圍之中。
實施例1
如圖1所示,本實施例提供的基于區(qū)間樹查找算法的結算周期生成方法,所述方法包括以下步驟:
101、接收結算配置數據,所述結算配置數據包括結算區(qū)間、結算日,所述結算區(qū)間包括起始日、截止日,所述起始日早于所述截止日,所述結算日不早于所述截止日;
102、將所述結算配置數據生成結算周期區(qū)間樹的根節(jié)點,所述根節(jié)點包括節(jié)點顏色、查找鍵值、區(qū)間左值、區(qū)間右值、區(qū)間返回值,所述節(jié)點顏色為黑色,所述查找鍵值在所述結算區(qū)間內,所述區(qū)間左值為所述起始日,所述區(qū)間右值為所述截止日,所述區(qū)間返回值為所述結算日;
103、利用所述根節(jié)點生成所述結算周期區(qū)間樹,所述結算周期區(qū)間樹為區(qū)間樹,所述結算周期區(qū)間樹包括若干節(jié)點。
其中,所述結算周期區(qū)間樹各節(jié)點均包括節(jié)點顏色、查找鍵值、區(qū)間左值、區(qū)間右值和區(qū)間返回值,所述節(jié)點顏色為紅色或黑色,具體為紅色還是黑色應滿足區(qū)間樹特性,所述查找鍵值一般可設置為區(qū)間左值更簡單、直觀。
進一步,所述結算區(qū)間的跨度可任意配置。
本實施例在在具體實施中,比如如圖2所示,將所述結算區(qū)間設置為四天一結算,然后通過上述步驟101-103將結算員所關注的自2017年5月28日至2017年6月22日這段時間內的每四天一結算的結算區(qū)間及其結算日自動建立起所述結算周期區(qū)間樹,這時就能很簡單、直觀、快速地獲得各結算周期及其結算日期。為提高所述結算周期區(qū)間樹的生成速度及查找效率,可以將所述結算周期區(qū)間樹存放于緩存中。另外,基于所述結算周期區(qū)間樹,通過區(qū)間樹查找算法,結算員就能簡單、直觀、快速地查找到所關注的結算周期及結算日期,比如想知道2017年6月20日所對應的結算區(qū)間及其結算日,根據區(qū)間樹查找算法,就能快速地查找到結算區(qū)間為20170619-20170622和結算日為20170623。再比如,想知道2017年7月10日所對應的結算周期及其結算日期,由于所述結算周期區(qū)間樹僅有截止日為2017年6月22日的結算區(qū)間及其結算日,這時需根據對應的結算周期配置,推算出所需查詢時間2017年7月10日對應的結算周期為20170709-20170712,結算日為20170713。因該結算周期為臨時查找,不會構造為結算周期區(qū)間樹,也不放入緩存從而節(jié)約構造時間和緩存。
實施例2
本實施例的基于區(qū)間樹查找算法的結算周期生成方法與實施例1的基于區(qū)間樹查找算法的結算周期生成方法基本相同,不同之處在于,所述結算區(qū)間的跨度可配置為一星期、一個月或一年。其中,跨度不必從周期的第一天開始,可以從中間開始定義,只需滿足一個周期的時間即可,但為了通俗易懂,本實施例中一般將跨度設為從第一天開始到周期結束日。如圖3所示的結算周期區(qū)間樹就為一周一結,這里僅將所關注的自2017年5月22日至2017年6月25日這段時間內每個星期的結算區(qū)間及其結算日按實施例1所述步驟101-103生成了相應的結算周期區(qū)間樹;如圖4所示的結算周期區(qū)間樹就為一個月一結,這里僅將所關注的自2016年12月至2017年6月這段時間內每個月的結算區(qū)間及其結算日按實施例1所述步驟101-103生成了相應的結算周期區(qū)間樹;如圖5所示的結算周期區(qū)間樹就為一年一結,這里僅將所關注的自2016年至2018年這三年的每年結算區(qū)間及其結算日按實施例1所述步驟101-103生成了相應的結算周期區(qū)間樹。另外,想知道哪天所對應的結算區(qū)間及其結算日,比如是屬于哪周的周結區(qū)間及其結算日、或者屬于哪月的月結區(qū)間及其結算日,或屬于哪年的年結區(qū)間及其結算日,查找方法及其過程描述與實施例1中相應所述內容相同,此處不再累述。
實施例3
本實施例的基于區(qū)間樹查找算法的結算周期生成方法為一周兩結的情況。本實施例中將所述結算區(qū)間配置為一周,并在一周內進行兩次結算,所以本實施例仍與實施例1基本相同,不同之處在于,由于一周為七天,若在一周內進行兩次結算,則可獲得兩個新的結算區(qū)間,比如如圖6所示那樣,將一周七天分成前四天和后三天這樣的兩種新的結算區(qū)間,當然新的結算區(qū)間也可以有其他不同分法,這里不再展開敘述。這時,將所關注的自2017年5月29日至2017年6月21日這段時間內各個星期的前四天和后三天分別形成的新的結算區(qū)間生成出相應的結算周期區(qū)間樹。另外,對于想知道哪天所對應的結算區(qū)間到底屬于哪周的前四天還是后三天及其結算日,查找方法及其過程描述與實施例1中相應所述內容相同,此處不再累述。
當然,其他一個結算周期內進行多次結算的情形可自行類推,此處不再累述。
實施例4
如圖7所示,本實施例提供的基于區(qū)間樹查找算法的結算周期生成系統(tǒng),所述系統(tǒng)包括接收模塊1、根節(jié)點生成模塊2、區(qū)間樹生成模塊3,
所述接收模塊1用于接收結算配置數據,所述結算配置數據包括結算區(qū)間、結算日,所述結算區(qū)間包括起始日、截止日,所述起始日早于所述截止日,所述結算日不早于所述截止日;
所述根節(jié)點生成模塊2用于將所述結算配置數據生成結算周期區(qū)間樹的根節(jié)點,所述結算周期區(qū)間樹為區(qū)間樹,所述根節(jié)點包括節(jié)點顏色、查找鍵值、區(qū)間左值、區(qū)間右值、區(qū)間返回值,所述節(jié)點顏色為黑色,所述查找鍵值在所述結算區(qū)間內,所述區(qū)間左值為所述起始日,所述區(qū)間右值為所述截止日,所述區(qū)間返回值為所述結算日;
所述區(qū)間樹生成模塊3用于利用所述根節(jié)點生成所述結算周期區(qū)間樹,所述結算周期區(qū)間樹包括若干節(jié)點。
進一步,所述結算區(qū)間的跨度可任意配置。
進一步,所述結算區(qū)間的跨度可配置為一星期、一個月或一年。
雖然以上描述了本發(fā)明的具體實施方式,但是本領域的技術人員應當理解,這僅是舉例說明,本發(fā)明的保護范圍是由所附權利要求書限定的。本領域的技術人員在不背離本發(fā)明的原理和實質的前提下,可以對這些實施方式做出多種變更或修改,但這些變更和修改均落入本發(fā)明的保護范圍。