Ver a proveniência

[合同优化][修改][修改预览账单]

release_toaliyun_real
luozukai há 7 anos
ascendente
cometimento
08b64cca24
2 ficheiros alterados com 177 adições e 318 eliminações
  1. +17
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/BillTimeVo.java
  2. +160
    -318
      mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java

+ 17
- 0
mallinkService/src/main/java/com/iformall/domain/vo/BillTimeVo.java Ver ficheiro

@@ -0,0 +1,17 @@
package com.iformall.domain.vo;

import lombok.Data;
import java.io.Serializable;
import java.util.Date;

@Data
public class BillTimeVo implements Serializable{
private static final long serialVersionUID = 1L;

private Date startDate;

private Date endDate;

private Date ReceiveDate;
}

+ 160
- 318
mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java Ver ficheiro

@@ -9,6 +9,7 @@ import com.iformall.common.IdWorker;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
import com.iformall.domain.po.*;
import com.iformall.domain.vo.BillTimeVo;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.*;
@@ -722,10 +723,9 @@ public class WxRentContractServiceImpl implements WxRentContractService {
rentList = buildRentMonth(wxMerchant, userId, wxRentContract, receivePeriod, lease, rentalStartDate, price,isPreview);
} else {
//如果按日
//处理lease
lease = DateUtils.daysBetween(wxRentContract.getRentalStartDate(),wxRentContract.getRentalEndDate());

Map<String, Object> resultMap = buildRent(lease, receivePeriod, price, rentalStartDate, Calendar.DAY_OF_MONTH, wxRentContract, userId, wxMerchant, 0, isPreview, null,false);
List<Date> yearList = new ArrayList<>();
yearList.add(rentalStartDate);
Map<String, Object> resultMap = buildRent(receivePeriod, new long[]{price}, yearList, Calendar.DAY_OF_MONTH, wxRentContract, userId, wxMerchant, 0, isPreview,null);
rentList = ( List<WxBillRent>)resultMap.get("billList");
}
}
@@ -831,6 +831,8 @@ public class WxRentContractServiceImpl implements WxRentContractService {

int billcount = 0;
List<WxBillRent> resultList = new ArrayList<>();

List<Date> yearList = new ArrayList<>();
for (int i = 0; i < size; i++) {
Calendar instance = Calendar.getInstance();
Date startDate;
@@ -848,343 +850,113 @@ public class WxRentContractServiceImpl implements WxRentContractService {
instance.add(Calendar.MONTH, month * i);
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);
List<WxBillRent> billRentList = (List<WxBillRent>)resultMap.get("billList");
billcount = (Integer)resultMap.get("billcount");
resultList.addAll(billRentList);
yearList.add(startDate);
}
return resultList;
}

public boolean isFirstDay(Date date){
int dateInt = Integer.parseInt(new SimpleDateFormat("d").format(date));
if(dateInt == 1){
return true;
}
return false;
Map<String, Object> resultMap = buildRent(receivePeriod, priceArrs, yearList, Calendar.MONTH, wxRentContract, userId, wxMerchant, billcount, isPreview, shopInfos);
List<WxBillRent> billRentList = (List<WxBillRent>)resultMap.get("billList");
billcount = (Integer)resultMap.get("billcount");
resultList.addAll(billRentList);
return resultList;
}

public boolean isCrossMonth(Date start,Date end){
int startInt = Integer.parseInt(new SimpleDateFormat("M").format(start));
int endInt = Integer.parseInt(new SimpleDateFormat("M").format(end));
public Map<String, Object> buildRent(int receivePeriod,long[] priceArrs, List<Date> yearList,int dayType, WxRentContract wxRentContract, Long userId, WxMerchant wxMerchant, int billcount, Integer isPreview,List<Map<String, Object>> shopInfoList) {
// System.out.println("------+receivePeriod:"+receivePeriod+"price:"+price+"start:"+DateUtils.date2String(startdate,"yyyy-MM-dd")
// +"dayType:"+dayType+"billcount:"+billcount);
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
Map<String,Object> resultMap = new HashedMap();
List<WxBillRent> resultList = new ArrayList<>();
final IdWorker idWorker = IdWorker.get();

if(startInt != endInt){
return true;
Date endDate = null;
if(yearList.size() > 1){
endDate = yearList.get(1);
}
return false;
}

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

String shopInfoStr = null;
if (shopInfo != null) {
shopInfoStr = JSONObject.toJSONString(shopInfo);
} else {
if (wxRentContract.getRentShopType().equals(EnumRentShopType.SHOP.getCode()) &&
wxRentContract.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) {
String rentInfo = wxRentContract.getRentInfo();
JSONArray rentInfoArray = JSONArray.parseArray(rentInfo);
int rentSize = rentInfoArray.size();
Map<String, Object> shopInfoMap = new HashMap<>();
for (int i = 0; i < rentSize; i++) {
JSONObject rentInfoObject = rentInfoArray.getJSONObject(i);
shopInfoMap.put(rentInfoObject.getString("shopNumber"), 0);
}
shopInfoStr = JSONObject.toJSONString(shopInfoMap);
}
if(endDate == null){
// endDate = wxRentContract.getRentalEndDate();
}else{
//- 1天
//endDate = DateUtils.getDaySet(endDate,Calendar.DATE,-1);
}
List<BillTimeVo> billTimeVoList = initBillTimeList(wxRentContract.getRentalStartDate(),wxRentContract.getRentalEndDate(),wxRentContract.getAdjustPeriod(),dayType,receivePeriod);

Map<String,Object> resultMap = new HashedMap();
List<WxBillRent> resultList = new ArrayList<>();
final IdWorker idWorker = IdWorker.get();
int index = 0;

Date start = startdate;
Date end = wxRentContract.getRentalEndDate();
while (true){
WxBillRent wxBillRent = new WxBillRent();
wxBillRent.setIsPreview(isPreview);
wxBillRent.setId(idWorker.nextId());
wxBillRent.setRentContractId(wxRentContract.getId());
wxBillRent.setPay(0L);
long needpay = new BigDecimal(price).multiply(new BigDecimal(receivePeriod)).longValue();
for (BillTimeVo billTimeVo : billTimeVoList){
if(yearList.size() > 1) {
if (billTimeVo.getStartDate().after(endDate)) {
System.out.println("==========billTimeVo.getStartDate():"+sd.format(billTimeVo.getStartDate()));
System.out.println("==========endDate:"+sd.format(endDate));

Calendar instance = Calendar.getInstance();
instance.setTime(start);
instance.add(dayType, receivePeriod);
if(!wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())){
instance.add(Calendar.DAY_OF_MONTH, -1);
}
Date time = instance.getTime();
wxBillRent.setReceiveDate(time);
//账单开始时间
instance.clear();
instance.setTime(wxBillRent.getReceiveDate());
if(!wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())){
instance.add(Calendar.DAY_OF_MONTH, 1);
index++;
if(index >= yearList.size()-1){
endDate = wxRentContract.getRentalEndDate();
}else {
endDate = yearList.get(index);
}
System.out.println("==========cross:"+sd.format(endDate));
}
}
wxBillRent.setStarttime(instance.getTime());
//账单结束时间
instance.clear();
instance.setTime(wxBillRent.getStarttime());
instance.add(dayType, receivePeriod);
instance.add(Calendar.DAY_OF_MONTH, -1);
wxBillRent.setEndtime(instance.getTime());

wxBillRent.setNeedPay(needpay);
wxBillRent.setOwe(needpay);
wxBillRent.setReceivePay(needpay);
//获取price 、shopInfo
long price = priceArrs[index];
Map<String, Object> shopInfo = null;
if(shopInfoList != null){
shopInfo = shopInfoList.get(index);
}

//截止收租日在当前时间之前
Date date = new Date();
if (wxBillRent.getReceiveDate().before(date)) {
long day = (time.getTime() - date.getTime()) / (24 * 60 * 60 * 1000);
wxBillRent.setStatus(EnumBillRentStatus.NOT_PAID.getCode());
wxBillRent.setExpiredDay(day);
} else {//截止收租日在当前时间之后
Calendar now = Calendar.getInstance();
now.add(dayType, receivePeriod);
Date currenttime = now.getTime();
//当前日期加上周期后小于截止收租日就是没有到期,否则当前待缴
if (currenttime.before(wxBillRent.getReceiveDate())) {
wxBillRent.setStatus(EnumBillRentStatus.NOT_EXPIRED.getCode());
wxBillRent.setExpiredDay(0L);
} else {
wxBillRent.setStatus(EnumBillRentStatus.WAIT_PAY.getCode());
wxBillRent.setExpiredDay(0L);
String shopInfoStr = null;
if (shopInfo != null) {
shopInfoStr = JSONObject.toJSONString(shopInfo);
} else {
if (wxRentContract.getRentShopType().equals(EnumRentShopType.SHOP.getCode()) &&
wxRentContract.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) {
String rentInfo = wxRentContract.getRentInfo();
JSONArray rentInfoArray = JSONArray.parseArray(rentInfo);
int rentSize = rentInfoArray.size();
Map<String, Object> shopInfoMap = new HashMap<>();
for (int i = 0; i < rentSize; i++) {
JSONObject rentInfoObject = rentInfoArray.getJSONObject(i);
shopInfoMap.put(rentInfoObject.getString("shopNumber"), 0);
}
shopInfoStr = JSONObject.toJSONString(shopInfoMap);
}
}
wxBillRent.setRevenue(0L);
wxBillRent.setTenantId(wxMerchant.getTenantId());
wxBillRent.setIsDel(0);
wxBillRent.setMerchantId(wxMerchant.getId());
wxBillRent.setUserId(userId);
wxBillRent.setShopId(wxRentContract.getShopId());
wxBillRent.setCreatetime(date);
wxBillRent.setUpdatetime(date);
wxBillRent.setIsDel(EnumDelStatus.NOT_DEL.getCode());
wxBillRent.setRentShopType(wxRentContract.getRentShopType());
wxBillRent.setPeriod(++billcount);
wxBillRent.setShopInfo(shopInfoStr);
wxBillRentMapper.insertSelective(wxBillRent);
resultList.add(wxBillRent);

//next
start = DateUtils.getDaySet(wxBillRent.getEndtime(),Calendar.DATE,1);

break;
}


int extralease = lease % receivePeriod; //余
int extracount = extralease > 0 ? 1 : 0;
int paycount = lease / receivePeriod + extracount;
int index = paycount - 1;

//自然月计租,而且残月,周期整除,n+1,最后一个周期作为残月
if(wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())
&& !isFirstDay(wxRentContract.getRentalStartDate())
&& (wxRentContract.getLease() % wxRentContract.getReceivePeriod() == 0)
&& isLastYesr
&& isCrossMonth(wxRentContract.getRentalStartDate(),wxRentContract.getRentalEndDate())
){
paycount ++;
}
for(int i = 0; i < paycount; i++){
WxBillRent wxBillRent = new WxBillRent();
wxBillRent.setIsPreview(isPreview);
wxBillRent.setId(idWorker.nextId());
wxBillRent.setRentContractId(wxRentContract.getId());
wxBillRent.setPay(0L);
long needpay = new BigDecimal(price).multiply(new BigDecimal(receivePeriod)).longValue();

Calendar instance = Calendar.getInstance();
Date date = new Date();
instance.setTime(startdate);
instance.add(dayType, receivePeriod * i);
if(!wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())){
instance.add(Calendar.DAY_OF_MONTH, -1);
}
Date time = instance.getTime();
wxBillRent.setReceiveDate(time);
//账单开始时间
instance.clear();
instance.setTime(wxBillRent.getReceiveDate());
if(!wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())){
instance.add(Calendar.DAY_OF_MONTH, 1);
}
wxBillRent.setStarttime(instance.getTime());
//账单结束时间
instance.clear();
instance.setTime(wxBillRent.getStarttime());
instance.add(dayType, receivePeriod);
instance.add(Calendar.DAY_OF_MONTH, -1);
wxBillRent.setEndtime(instance.getTime());

//最后一个周期
if (extracount > 0 && i == index) {
//账单开始时间
instance.clear();
instance.setTime(wxBillRent.getReceiveDate());
if(!wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())){
instance.add(Calendar.DAY_OF_MONTH, 1);
}
wxBillRent.setStarttime(instance.getTime());
//账单结束时间
instance.clear();
instance.setTime(wxBillRent.getStarttime());
instance.add(dayType, extralease);
instance.add(Calendar.DAY_OF_MONTH, -1);
wxBillRent.setEndtime(instance.getTime());
needpay = new BigDecimal(price).multiply(new BigDecimal(extralease)).longValue();
}

//自然月,开始日期、缴款日,结束日期
if(wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())){
int rentStartDateInt = Integer.parseInt(new SimpleDateFormat("d").format(wxRentContract.getRentalStartDate()));
int startDateInt = Integer.parseInt(new SimpleDateFormat("d").format(wxBillRent.getStarttime()));
int endDateInt = Integer.parseInt(new SimpleDateFormat("d").format(wxRentContract.getRentalEndDate()));

if(i == 0){//第一周期
double oneDayProce = (double) price / DateUtils.getMonthDayCount(wxBillRent.getStarttime());
double needPayDouble;

if(receivePeriod <= 1) {//周期为一个月
wxBillRent.setEndtime(DateUtils.getLastDayForMonth(wxBillRent.getStarttime()));
needPayDouble = oneDayProce * (DateUtils.getMonthDayCount(wxBillRent.getStarttime())-startDateInt+1);
}else{ //周期大于一个月
Date firstDay = DateUtils.getFirstDayForCurrMonth(wxBillRent.getStarttime());
instance.clear();
instance.setTime(firstDay);
//最后一个期有余,加上残月,不整除时,最后一个月有余,否则为0
if(extralease > 0 && (i == paycount - 1)){
instance.add(dayType, extralease);
instance.add(Calendar.DAY_OF_MONTH, rentStartDateInt-1);
}else{
instance.add(dayType, receivePeriod);
}
instance.add(Calendar.DAY_OF_MONTH, -1);

wxBillRent.setEndtime(instance.getTime());
if(isLastYesr && (i == paycount - 1)){ //最后一年 最后一期
needPayDouble = 0;
oneDayProce = (double) price/DateUtils.getMonthDayCount(wxBillRent.getEndtime());
if(receivePeriod > 1) {
needPayDouble += price * extralease;
}
if(!isFirstDay(wxRentContract.getRentalStartDate())) { //残月才加
needPayDouble += oneDayProce * endDateInt;
}
}else{
//[A/31 *(31-12+1)]+A+A
needPayDouble = oneDayProce * (DateUtils.getMonthDayCount(wxBillRent.getStarttime())-startDateInt+1);
needPayDouble += price * (receivePeriod - 1);
}
}
DecimalFormat format = new DecimalFormat("0");
needpay = Long.parseLong(format.format(needPayDouble)); //分做四舍五入
}else if(i < paycount - 1){//中间周期
Date receiveDate = DateUtils.getFirstDayOfNextMonth(startdate,receivePeriod * i);
wxBillRent.setReceiveDate(receiveDate);
wxBillRent.setStarttime(receiveDate);
wxBillRent.setEndtime(DateUtils.getLastDayForMonth(wxBillRent.getStarttime(),receivePeriod * i));

instance.clear();
instance.setTime(receiveDate);
instance.add(dayType, receivePeriod);
instance.add(Calendar.DAY_OF_MONTH, -1);
wxBillRent.setEndtime(instance.getTime());
}else if(i == paycount - 1) {//最后周期
//receivePeriod * i 得到开始日期
Date receiveDate = DateUtils.getFirstDayOfNextMonth(startdate,receivePeriod * i);
wxBillRent.setReceiveDate(receiveDate);
wxBillRent.setStarttime(receiveDate);

//得到开始日期第一天
Date firstDay = DateUtils.getFirstDayForCurrMonth(wxBillRent.getStarttime());
instance.clear();
instance.setTime(firstDay);

//若最后一期有余,带上残月,(不整除时,最后一个月有余,否则extralease=0)
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);
}
}else{
if(isLastYesr) {
instance.add(dayType, extralease);
instance.add(Calendar.DAY_OF_MONTH, rentStartDateInt - 1);
}else{
instance.add(dayType, receivePeriod);
}
}
wxBillRent.setStarttime(billTimeVo.getStartDate());
wxBillRent.setEndtime(billTimeVo.getEndDate());
wxBillRent.setReceiveDate(billTimeVo.getReceiveDate());

long needpay;

//当天也算,加1天
Date newEndDate = DateUtils.getDaySet(wxBillRent.getEndtime(),Calendar.DATE,1);
//按日
if(wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_DAY.getCode())){
int dayCount = DateUtils.daysBetween(wxBillRent.getStarttime(),newEndDate);
needpay = dayCount*price;
}else{
//按月
int[] diff = DateUtils.getDiff(wxBillRent.getStarttime(),newEndDate);
needpay = diff[0]*price;

//先减一个月 后加上残月
instance.add(Calendar.DAY_OF_MONTH, -1);
wxBillRent.setEndtime(instance.getTime());

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

//最后一期截止到结束日期
// if(i == paycount - 1 && isLastYesr){
// wxBillRent.setEndtime(wxRentContract.getRentalEndDate());
// //当天也算,加1天
// Date newEndDate = DateUtils.getDaySet(wxBillRent.getEndtime(),Calendar.DATE,1);
// //按日
// if(wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_DAY.getCode())){
// int dayCount = DateUtils.daysBetween(wxBillRent.getStarttime(),newEndDate);
// needpay = dayCount*price;
// }else{
// //按月
// SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
// System.out.println("----1"+sd.format(wxBillRent.getStarttime()));
// System.out.println("----2"+sd.format(newEndDate));
// int[] diff = DateUtils.getDiff(wxBillRent.getStarttime(),newEndDate);
// needpay = diff[0]*price;
//
// double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxRentContract.getRentalEndDate());
// needpay += diff[1] * oneDayProce;
// }
// }

wxBillRent.setNeedPay(needpay);
wxBillRent.setOwe(needpay);
wxBillRent.setReceivePay(needpay);

//截止收租日在当前时间之前
Date date = new Date();
if (wxBillRent.getReceiveDate().before(date)) {
long day = (time.getTime() - date.getTime()) / (24 * 60 * 60 * 1000);
long day = (wxBillRent.getReceiveDate().getTime() - date.getTime()) / (24 * 60 * 60 * 1000);
wxBillRent.setStatus(EnumBillRentStatus.NOT_PAID.getCode());
wxBillRent.setExpiredDay(day);
} else {//截止收租日在当前时间之后
@@ -1212,14 +984,10 @@ public class WxRentContractServiceImpl implements WxRentContractService {
wxBillRent.setRentShopType(wxRentContract.getRentShopType());
wxBillRent.setPeriod(++billcount);
wxBillRent.setShopInfo(shopInfoStr);
try {
wxBillRentMapper.insertSelective(wxBillRent);
resultList.add(wxBillRent);
} catch (Exception e) {
logger.error("添加租赁账单失败,e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
wxBillRentMapper.insertSelective(wxBillRent);
resultList.add(wxBillRent);
}

resultMap.put("billcount",billcount);
resultMap.put("billList",resultList);
return resultMap;
@@ -1971,6 +1739,80 @@ public class WxRentContractServiceImpl implements WxRentContractService {
public Integer getShopType(WxRentContract wxRentContract) {
return wxRentContractMapper.getShopType(wxRentContract);
}

public static void main(String[] args) throws Exception{
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
// Date start = sd.parse("2019-05-24");
// Date end = sd.parse("2020-06-24");
Date start = sd.parse("2019-05-24");
Date end = sd.parse("2019-08-10");

Integer adjustPeriod = EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode();
Integer dayType = Calendar.MONTH;
int receivePeriod = 2;

List<BillTimeVo> list = initBillTimeList(start,end,adjustPeriod,dayType,receivePeriod);
for (BillTimeVo b:list) {
System.out.print(sd.format(b.getStartDate()));
System.out.print(" "+sd.format(b.getEndDate()));
System.out.print(" "+sd.format(b.getReceiveDate()));

System.out.println();
}
}

public static List<BillTimeVo> initBillTimeList(Date start,Date end,Integer adjustPeriod,Integer dayType,int receivePeriod){
List<BillTimeVo> list = new ArrayList<>();

int count = 0;
while (true){
BillTimeVo timeVo = new BillTimeVo();

//开始时间
timeVo.setStartDate(start);

//账单日
Calendar instance = Calendar.getInstance();
instance.setTime(start);
if(!adjustPeriod.equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())){
instance.add(Calendar.DATE, -1);
}
timeVo.setReceiveDate(instance.getTime());

//结束时间
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sd.format(start));
instance.clear();
instance.setTime(start);
instance.add(dayType, receivePeriod);
instance.add(Calendar.DATE, -1);
timeVo.setEndDate(instance.getTime());

System.out.println(sd.format(instance.getTime()));

//自然月
if(adjustPeriod.equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())){
if(count == 0){
timeVo.setEndDate(DateUtils.getLastDayForMonth(timeVo.getStartDate()));
}
}

if(timeVo.getEndDate().after(end)){
timeVo.setEndDate(end);
}

list.add(timeVo);

//next
start = DateUtils.getDaySet(timeVo.getEndDate(),Calendar.DATE,1);

if(start.after(end)) {
break;
}
count ++;
}
return list;
}
}



Carregando…
Cancelar
Guardar