You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
2.5 KiB

package com.example.demo.circulator.service;
import com.example.demo.Dao.paymentMapper;
import com.example.demo.Dao.productMapper;
import com.example.demo.Dao.usageDateMapper;
import com.example.demo.bean.Product;
import com.example.demo.bean.Repayment;
import com.example.demo.bean.UsageDate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class EPR_CirService extends CirService{
@Autowired
private usageDateMapper usageDateMapper;
@Autowired
private paymentMapper paymentMapper;
@Autowired
private productMapper productMapper;
@Transactional //数据库与事物的一致性
public double NextCirculator(long checkNum){
try{
UsageDate usageDate = usageDateMapper.selectUsageDateByCheckNum(checkNum);
Repayment repayment = paymentMapper.selectPepaymentBycheckNum(checkNum);
if(usageDate!=null){return -2;}
int year = usageDate.getYear();
double amount = usageDate.getAmount();
long productNum = usageDate.getProductNum();
Product product = productMapper.selectProductByProductNum(productNum);
if(product==null)return -3;
float intrate = product.getIntrate();
double rep_amount = 0;
if(repayment!=null)
repayment.getRepAmount();
intrate /= 12;
int month = year*12;
double next_principal_and_interest = amount/month + (amount - rep_amount) * intrate;
return next_principal_and_interest;
}catch(Exception e){
e.printStackTrace();
}finally {
}
return -1;
}
public double SumCirculator(long productNum,double amount,int year){
try{
Product product = productMapper.selectProductByProductNum(productNum);
if(product==null)return -3;
float intrate = product.getIntrate();
intrate /= 12;
int month = year * 12;
double first_principal_and_interest = amount/month + amount*intrate;
double last_principal_and_interest = amount/month + amount*(1-(month-1)/month)*intrate;
double principal_and_interest = (first_principal_and_interest + last_principal_and_interest)*month/2;
return principal_and_interest;
}catch(Exception e){
e.printStackTrace();
}finally {
}
return -1;
}
}