发表于: 2017-10-02 22:10:59

1 853


一.今天完成的主要事情

1.编写一个小demo,用于计算平台给用户还利息的时间和利息数额,代码如下(代码还没有重构,结构非常乱,在项目中运用时会进一步重构)

package com.putaoteng.demo.utils;

import com.putaoteng.demo.model.RepaymentList;

import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class RepaymentCalender {
public static List<Long> getRepaymentPlan(long startTime, int days) {
List<Long> list = new ArrayList<Long>();
long endTime = startTime + days * 1000 * 3600 * 24L;

//将初始时间戳转换为格式化时间
       SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
String formatStartDate = simpleDateFormat.format(new Date(startTime));
String formatEndDate = simpleDateFormat.format(new Date(endTime));
System.out.println("起息格式化时间为: formatStartDate=" + formatStartDate);
System.out.println("到期格式化时间为: formatEndDate=" + formatEndDate);

//将格式化时间转化为整形数字,方便计算
Integer startDateNumber = Integer.valueOf(formatStartDate);

long repaymentTime = startTime;
Date date = null;
list.add(startTime);
while (true) {
//月份加1后再转换为字符串,如果有0230,0231这种特例,将其转换为0301
           startDateNumber += 100;
String newFormatDate = startDateNumber.toString();
String tempStr = newFormatDate.substring(4);
if (tempStr.equals("0230") || tempStr.equals("0231")) {
newFormatDate = newFormatDate.substring(0, 4) + "0301";
}
try {
date = simpleDateFormat.parse(newFormatDate);
repaymentTime = date.getTime();

if (repaymentTime < endTime) {
System.out.println(simpleDateFormat.format(date));
list.add(repaymentTime);
} else {
list.add(endTime);
System.out.println(formatEndDate);
break;
}
} catch (ParseException e) {
System.out.println(e.getMessage());
}
}

return list;
}

public static void main(String[] args) {

SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");

Date date = null;
try {
date = format.parse("20170819");
} catch (ParseException e) {
e.printStackTrace();
}

List<Long> list = getRepaymentPlan(date.getTime(), 360);
List<Integer> list2 = new ArrayList<Integer>();
List<RepaymentList> list3 = new ArrayList<RepaymentList>();


double principal = 10000.0000;
double rate = 0.0960;

long end = 0;
long start = 0;
double days = 0;
for (int i = 1; i < list.size(); i++) {
RepaymentList repaymentList = new RepaymentList();
end = list.get(i);
start = list.get(i - 1);

days = (end - start) / 1000 / 3600 / 24;
repaymentList.setDays(days);
repaymentList.setDate(end);
repaymentList.setAmount(BigDecimal.valueOf(principal*rate/360*days));

System.out.println(i + ":" + days);
list3.add(repaymentList);
}


for (RepaymentList repaymentList : list3) {
System.out.println(repaymentList.getDate());
System.out.printf("%.4f\n",repaymentList.getAmount());
System.out.printf("%.4f\n", repaymentList.getDays());
}
}

}


输出的结果为:

第一列为还款日期转换的时间戳,第二列为要还的金额,第三列为本次计息的天数

2.针对存在的问题,对表进行重构,编写部分sql

表名(begin)
product
表名(end)
表字段(begin)
COLUMNJAVA FIELDTYPEJAVA FIELD TYPE
ididbigintLong
product_serial_numberproductSerialNumbervarchar(15)String
product_nameproductNamevarchar(30)String
annual_yieldannualYielddecimal(14,6)BigDecimal
payment_back_waypaymentBackWayint(2)int
basic_capital_amountbasicCapitalAmountdecimal(14,6)BigDecimal
charging_interest_waychargingInterestWayint(2)int
financial_periodfinancialPeriodint(5)int
commentcommentvarchar(51)String
detail_img_urldetailImgUrlvarchar(500)String
flagflagint(2)int
recommendedrecommendedint(2)int
order_byorderByint(2)int
limitedlimitedint(2)int
statusstatusint(2)int
limited_capital_amountlimitedCapitalAmountdecimal(14,6)BigDecimal
create_bycreateBybigintLong
update_byupdateBybigintLong
update_atupdateAtbigintLong
create_atcreateAtbigintLong
表字段(end)
索引:
索引(begin)
UNI_TAG_STR(tag_str)
索引(end)
SQL文(begin)
SQL 文DAL TYPE (map or list) 
select * from product where   id=?Object
select product_serial_number,   product_name, annual_yield,   payment_back_way,charging_interest_way,financial_period from product where   id=?Object
select product_serial_number,   product_name, annual_yield from product where id=?Object
select id from product where   recommended=1 and  order by order_by   descMap
select id from prooduct where   order by order_by desc,update_at descMap


二.明天计划完成的主要事情

1.继续编写sql语句

2.思考如何解决user_product表高并发情况下读和写的问题

三.遇到的问题

对于要写在excel表中的sql语句没有清晰的概念,不知道什么样的sql可以写,什么样的sql不能写

四.收获

以上

五.项目进度情况

有延期风险


返回列表 返回列表
评论

    分享到