时间分段组合的需求解决

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

举个列子

比如用户先要查询 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的时候结束,避免出现角标越界的错误,在这里进行记录,避免忘记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值