时间分段组合的需求解决

最近在开发中遇到一种需求,对于活期账户进行计算利息的时候进行分段计算。

举个列子

比如用户先要查询 20190101 到20190131这个时间的活期账户利息。如果你想直接一个sql搞定的话,你就太低估了客户的难缠。由于活期账户的利率会随着银行活期的利率进行调整,也就是说在 查询的时间段内可能会存在 多个利率的,这样的话涉及到到分段计算的问题。

起初碰到这个问题,脑袋一阵头大。在认真分析后,关机单点还是在时间上。

首先第一步从数据库中获取 当前账户有几个有效的利率,每个利率会有生效日(获取为sql查询功能,在这里不在详细描述)。得到一个list。

第二部也就是重点,将查询时间与返回的list进行组合。具体代码如下 其中 三个参数分别是:利率生效日,查询开始日期,查询结束日期

public List removeDateListDemo(List mapBondTempValueDemo,Date strStartDate1,Date strEndDate1){
			List  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的时候结束,避免出现角标越界的错误,在这里进行记录,避免忘记

你可能感兴趣的:(开发)