根据还款日,算出还款日期-

//------------------------------根据还款日,算出还款日期--------------------------
	// 约定还款日
	smartTranInfoMap.put("BusinessTerm", ctx.getParam("BusinessTerm"));
	//约定还款日
	int BusinessTerm1 = Integer.parseInt(smartTranInfoMap.get("BusinessTerm"));
	String dd = null;
	if(BusinessTerm1<10) {
		dd = "0"+ BusinessTerm1 ;
	}else {
		dd= BusinessTerm1+"";
	}
	//当前日期日
	int day1 = Integer.parseInt(DateUtil.todayStr("dd"));
	int day = BusinessTerm1-day1;
	String mm = null;
	if(day>0&&day>=15) {
		//本期还款日
		ctx.setParam("payBackMoneyStartDate", DateUtil.todayStr("yyyyMM")+dd);
		
	}
	else if(day>0&&day<15) {
		//本期还款日
		if(DateUtil.todayStr("MM").toString().equals("12")) {
			String a= (Integer.parseInt(DateUtil.todayStr("yyyy"))+1)+"01"+dd;
			ctx.setParam("payBackMoneyStartDate",a);
		}else {
			int M =Integer.parseInt(DateUtil.todayStr("MM"))+1;
			if(M<10) {
				 mm ="0"+M;
			}else {
				mm=M+"";
			}
			String a= DateUtil.todayStr("yyyy")+mm+dd;
			ctx.setParam("payBackMoneyStartDate", a);
		}	
	}
	else if(day<0) {
		int day2 = BusinessTerm1+getCurrentMonthDay()-day1;
		if(day2>15) {
			if(DateUtil.todayStr("MM").equals("12")) {
				String a= (Integer.parseInt(DateUtil.todayStr("yyyy"))+1)+"01"+dd;
				ctx.setParam("payBackMoneyStartDate",a);
			}else {
					int M =Integer.parseInt(DateUtil.todayStr("MM"))+1;
					if(M<10) {
						 mm ="0"+M;
					}else {
						mm=M+"";
					}
					String a= DateUtil.todayStr("yyyy")+mm+dd;
					ctx.setParam("payBackMoneyStartDate",a);	
			}	
		}
		else {
			if(DateUtil.todayStr("MM").equals("12")) {
				String a= (Integer.parseInt(DateUtil.todayStr("yyyy"))+1)+"02"+dd;
				ctx.setParam("payBackMoneyStartDate", a);
			}else {
				int M =Integer.parseInt(DateUtil.todayStr("MM"))+2;
				if(M<10) {
					 mm ="0"+M;
				}else {
					mm=M+"";
				}
				String a= DateUtil.todayStr("yyyy")+mm+dd;
				ctx.setParam("payBackMoneyStartDate", a);
			}
		}
	}
	
	
	//贷款结束日期
	int a= Integer.parseInt(ctx.getParam("payBackMoneyStartDate").toString().substring(0, 4).toString());
	String payBackMoneyEndDate = null;
	if(ctx.getParam("TermDay").equals("12")) {
		payBackMoneyEndDate = (a+1)+ctx.getParam("payBackMoneyStartDate").toString().substring(4,8);	
	}if(ctx.getParam("TermDay").equals("24")) {
		payBackMoneyEndDate = (a+2)+ctx.getParam("payBackMoneyStartDate").toString().substring(4,8);	
	}if(ctx.getParam("TermDay").equals("36")) {
		payBackMoneyEndDate = (a+3)+ctx.getParam("payBackMoneyStartDate").toString().substring(4,8);	
	}
	ctx.setParam("payBackMoneyEndDate",payBackMoneyEndDate);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要计算客户级过账单还款客户的1-30天回收率,需要先确定哪些客户在过账单当天有未还款项,然后计算这些客户在1-30天内回收的贷款金额占总未还款额的比例。可以使用以下SQL语句进行计算: ``` SELECT customer_id, SUM(CASE WHEN overdue_days <= 30 THEN recovered_amount ELSE 0 END) AS m1_recovered_amount, SUM(CASE WHEN overdue_days > 0 THEN overdue_amount ELSE 0 END) AS total_overdue_amount, (SUM(CASE WHEN overdue_days <= 30 THEN recovered_amount ELSE 0 END) / SUM(CASE WHEN overdue_days > 0 THEN overdue_amount ELSE 0 END)) AS m1_recovery_rate FROM ( SELECT customer_id, loan_amount AS overdue_amount, CASE WHEN DATEDIFF(CURDATE(), due_date) > 30 THEN DATEDIFF(CURDATE(), due_date) - 30 WHEN DATEDIFF(CURDATE(), due_date) > 0 THEN DATEDIFF(CURDATE(), due_date) ELSE 0 END AS overdue_days, CASE WHEN recovered_date IS NOT NULL THEN loan_amount ELSE 0 END AS recovered_amount FROM loan_table WHERE due_date <= CURDATE() AND recovered_date IS NULL ) AS temp GROUP BY customer_id; ``` 在以上SQL语句中,loan_table是包含贷款信息的表,包括贷款金额、到期、客户ID、还款日期等字段。首先使用WHERE子句筛选出在过账单当天有未还款项的贷款,并为每个未还款贷款计算逾期天数和回收金额,然后使用GROUP BY子句按客户ID进行分组,计算每个客户的1-30天回收率。其中,m1_recovered_amount表示1-30天内回收的贷款金额,total_overdue_amount表示总未还款额,m1_recovery_rate表示1-30天回收率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值