ソースを参照

[账期调整][修改][修改生成逻辑]

release_toaliyun_real
luozukai 7年前
コミット
0f01f80b48
1個のファイルの変更47行の追加19行の削除
  1. +47
    -19
      mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java

+ 47
- 19
mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java ファイルの表示

@@ -679,7 +679,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
rentList = buildRentMonth(wxMerchant, userId, wxRentContract, receivePeriod, lease, rentalStartDate, price,isPreview); rentList = buildRentMonth(wxMerchant, userId, wxRentContract, receivePeriod, lease, rentalStartDate, price,isPreview);
} else { } else {
//按日计租 //按日计租
Map<String, Object> resultMap = buildRent(lease, receivePeriod, price, rentalStartDate, Calendar.DAY_OF_MONTH, wxRentContract, userId, wxMerchant, 0, isPreview, null,false);
Map<String, Object> resultMap = buildRent(lease, receivePeriod, price, rentalStartDate, Calendar.DAY_OF_MONTH, wxRentContract, userId, wxMerchant, 0, isPreview, null,false,0);
rentList = ( List<WxBillRent>)resultMap.get("billList"); rentList = ( List<WxBillRent>)resultMap.get("billList");
} }
} }
@@ -795,7 +795,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
instance.add(Calendar.MONTH, month * i); instance.add(Calendar.MONTH, month * i);
startDate = instance.getTime(); startDate = instance.getTime();
} }
Map<String, Object> resultMap = buildRent(leaseArr[i], receivePeriod, priceArrs[i], startDate, Calendar.MONTH, wxRentContract, userId, wxMerchant, billcount, isPreview, shopInfos.isEmpty() ? null : shopInfos.get(i),i==size-1?true:false);
Map<String, Object> resultMap = buildRent(leaseArr[i], receivePeriod, priceArrs[i], startDate, Calendar.MONTH, wxRentContract, userId, wxMerchant, billcount, isPreview, shopInfos.isEmpty() ? null : shopInfos.get(i),i==size-1?true:false,size);
List<WxBillRent> billRentList = (List<WxBillRent>)resultMap.get("billList"); List<WxBillRent> billRentList = (List<WxBillRent>)resultMap.get("billList");
billcount = (Integer)resultMap.get("billcount"); billcount = (Integer)resultMap.get("billcount");
resultList.addAll(billRentList); resultList.addAll(billRentList);
@@ -811,7 +811,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
return false; return false;
} }


public Map<String, Object> buildRent(int lease, int receivePeriod, int price, Date startdate, int dayType, WxRentContract wxRentContract, Long userId, WxMerchant wxMerchant, int billcount, Integer isPreview, Map<String, Object> shopInfo,boolean isLastYesr) {
public Map<String, Object> buildRent(int lease, int receivePeriod, int price, Date startdate, int dayType, WxRentContract wxRentContract, Long userId, WxMerchant wxMerchant, int billcount, Integer isPreview, Map<String, Object> shopInfo,boolean isLastYesr,int yearSize) {
System.out.println("------lease:"+lease+"receivePeriod:"+receivePeriod+"price:"+price+"start:"+DateUtils.date2String(startdate,"yyyy-MM-dd") System.out.println("------lease:"+lease+"receivePeriod:"+receivePeriod+"price:"+price+"start:"+DateUtils.date2String(startdate,"yyyy-MM-dd")
+"dayType:"+dayType+"billcount:"+billcount); +"dayType:"+dayType+"billcount:"+billcount);


@@ -840,7 +840,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
int paycount = lease / receivePeriod + extracount; int paycount = lease / receivePeriod + extracount;
int index = paycount - 1; int index = paycount - 1;
final IdWorker idWorker = IdWorker.get(); final IdWorker idWorker = IdWorker.get();
//自然月,而且残月,周期整除,n+1,最后一个周期作为残月
//自然月计租,而且残月,周期整除,n+1,最后一个周期作为残月
if(wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode()) if(wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())
&& !isFirstDay(wxRentContract.getRentalStartDate()) && !isFirstDay(wxRentContract.getRentalStartDate())
&& (wxRentContract.getLease() % wxRentContract.getReceivePeriod() == 0) && (wxRentContract.getLease() % wxRentContract.getReceivePeriod() == 0)
@@ -933,7 +933,9 @@ public class WxRentContractServiceImpl implements WxRentContractService {
if(receivePeriod > 1) { if(receivePeriod > 1) {
needPayDouble += price * extralease; needPayDouble += price * extralease;
} }
needPayDouble += oneDayProce * endDateInt;
if(!isFirstDay(wxRentContract.getRentalStartDate())) { //残月才加
needPayDouble += oneDayProce * endDateInt;
}
}else{ }else{
//[A/31 *(31-12+1)]+A+A //[A/31 *(31-12+1)]+A+A
needPayDouble = oneDayProce * (DateUtils.getMonthDayCount(wxBillRent.getStarttime())-startDateInt+1); needPayDouble = oneDayProce * (DateUtils.getMonthDayCount(wxBillRent.getStarttime())-startDateInt+1);
@@ -961,32 +963,58 @@ public class WxRentContractServiceImpl implements WxRentContractService {
Date firstDay = DateUtils.getFirstDayForCurrMonth(wxBillRent.getStarttime()); Date firstDay = DateUtils.getFirstDayForCurrMonth(wxBillRent.getStarttime());
instance.clear(); instance.clear();
instance.setTime(firstDay); instance.setTime(firstDay);

//最后一期有余,加上残月,(不整除时,最后一个月有余,否则为0) //最后一期有余,加上残月,(不整除时,最后一个月有余,否则为0)
if(receivePeriod > 1) {
if(isLastYesr) {
instance.add(dayType, extralease);
}else{
if(isFirstDay(wxRentContract.getRentalStartDate())){
if(receivePeriod > 1) {
if(isLastYesr && extralease > 0) {
instance.add(dayType, extralease);
}else{
instance.add(dayType, receivePeriod);
}
}else {
instance.add(dayType, receivePeriod); instance.add(dayType, receivePeriod);
} }
}else{
if(receivePeriod > 1) {
if(isLastYesr) {
instance.add(dayType, extralease);
}else{
instance.add(dayType, receivePeriod);
}
}
if(isLastYesr) {
instance.add(Calendar.DAY_OF_MONTH, rentStartDateInt - 1);
}
} }
if(isLastYesr) {
instance.add(Calendar.DAY_OF_MONTH, rentStartDateInt - 1);
}

instance.add(Calendar.DAY_OF_MONTH, -1); instance.add(Calendar.DAY_OF_MONTH, -1);
wxBillRent.setEndtime(instance.getTime()); wxBillRent.setEndtime(instance.getTime());


//逻辑同计算endtime //逻辑同计算endtime
double needPayDouble = 0; double needPayDouble = 0;
double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxBillRent.getEndtime()); double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxBillRent.getEndtime());
if(receivePeriod > 1) {
if(isLastYesr) {
needPayDouble += price * extralease;
}else{
if(isFirstDay(wxRentContract.getRentalStartDate())){
if(receivePeriod > 1) {
if(isLastYesr && extralease > 0) {
needPayDouble += price * extralease;
}else{
needPayDouble += price * receivePeriod;
}
}else {
needPayDouble += price * receivePeriod; needPayDouble += price * receivePeriod;
} }
}
if(isLastYesr) {
needPayDouble += oneDayProce * endDateInt;
}else{
if(receivePeriod > 1) {
if(isLastYesr) {
needPayDouble += price * extralease;
}else{
needPayDouble += price * receivePeriod;
}
}
if(isLastYesr) {
needPayDouble += oneDayProce * endDateInt;
}
} }
DecimalFormat format = new DecimalFormat("0"); DecimalFormat format = new DecimalFormat("0");
needpay = Integer.parseInt(format.format(needPayDouble)); //分做四舍五入 needpay = Integer.parseInt(format.format(needPayDouble)); //分做四舍五入


読み込み中…
キャンセル
保存