時間分段組合的需求解決

最近在開發中遇到一種需求,對於活期賬戶進行計算利息的時候進行分段計算。

舉個列子

比如用戶先要查詢 20190101 到20190131這個時間的活期賬戶利息。如果你想直接一個sql搞定的話,你就太低估了客戶的難纏。由於活期賬戶的利率會隨着銀行活期的利率進行調整,也就是說在 查詢的時間段內可能會存在 多個利率的,這樣的話涉及到到分段計算的問題。

起初碰到這個問題,腦袋一陣頭大。在認真分析後,關機單點還是在時間上。

首先第一步從數據庫中獲取 當前賬戶有幾個有效的利率,每個利率會有生效日(獲取爲sql查詢功能,在這裏不在詳細描述)。得到一個list。

第二部也就是重點,將查詢時間與返回的list進行組合。具體代碼如下 其中 三個參數分別是:利率生效日,查詢開始日期,查詢結束日期

public List removeDateListDemo(List<String> mapBondTempValueDemo,Date strStartDate1,Date strEndDate1){
			List<Date>  queryDatePointList = new ArrayList();
            Date tempStart=strStartDate;
		    Date tempEnd=strEndDate;
			System.out.println(mapBondTempValue+"需要處理的查詢時間段");
			queryDatePointList.add(tempStart);
			queryDatePointList.add(tempEnd);
			System.out.println(queryDatePointList+"組合前的查詢時間點List");
			for(String bondTempIndex:mapBondTempValue){
				//將ll變爲 Date類型
				Date bondTempValue = DataFormat.parseDate(bondTempIndex,DataFormat.DT_YYYY_MM_DD);
				if(bondTempValue.compareTo(tempStart)>0 && tempEnd.compareTo(bondTempValue)>0){
					queryDatePointList.add(bondTempValue);
				}
			}
			Collections.sort(queryDatePointList);
			System.out.println(queryDatePointList+"組合後的查詢時間點List");
			return queryDatePointList;
		}

 第三步:根據第二部返回的list的進行截斷計算,其中需要注意的是當循環到 list.length-1的時候結束,避免出現角標越界的錯誤,在這裏進行記錄,避免忘記

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章