|
|
|
@@ -3254,47 +3254,54 @@ public class WxRentContractServiceImpl implements WxRentContractService { |
|
|
|
bq.setIsDel(EnumDelStatus.NOT_DEL.getCode()); |
|
|
|
List<WxBillRent> billList = wxBillRentMapper.findList(bq); |
|
|
|
if (null != billList && billList.size() > 0 ) { |
|
|
|
WxBillRent br = billList.get(0); |
|
|
|
//判断账单是否跨月,如果跨月,需要按照每月来查询解单金额 |
|
|
|
int needPay = 0 ; |
|
|
|
int months = DateUtils.monthsBetween(br.getStarttime(), br.getEndtime()); |
|
|
|
if ( months > 0 ) { |
|
|
|
for (int i = 0 ; i < months ; i++ ) { |
|
|
|
int _money = 0; |
|
|
|
if (i == 0 ) { |
|
|
|
_money = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), br.getStarttime(), |
|
|
|
DateUtils.getLastDayForMonth(br.getStarttime())); |
|
|
|
}else if (i == (months-1)){ |
|
|
|
_money = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), |
|
|
|
DateUtils.getFirstDayForCurrMonth(DateUtils.getTimeAfterMonths(i,br.getStarttime())), |
|
|
|
DateUtils.getDayEnd(DateUtils.getTimeAfterDays(-1, br.getEndtime()))); |
|
|
|
for (int j = 0 ; j < billList.size(); j++) { |
|
|
|
WxBillRent br = billList.get(j); |
|
|
|
try { |
|
|
|
//判断账单是否跨月,如果跨月,需要按照每月来查询解单金额 |
|
|
|
int needPay = 0 ; |
|
|
|
int months = DateUtils.monthsBetween(br.getStarttime(), br.getEndtime()); |
|
|
|
if ( months > 0 ) { |
|
|
|
for (int i = 0 ; i < months ; i++ ) { |
|
|
|
int _money = 0; |
|
|
|
if (i == 0 ) { |
|
|
|
_money = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), br.getStarttime(), |
|
|
|
DateUtils.getLastDayForMonth(br.getStarttime())); |
|
|
|
}else if (i == (months-1)){ |
|
|
|
_money = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), |
|
|
|
DateUtils.getFirstDayForCurrMonth(DateUtils.getTimeAfterMonths(i,br.getStarttime())), |
|
|
|
DateUtils.getDayEnd(DateUtils.getTimeAfterDays(-1, br.getEndtime()))); |
|
|
|
}else { |
|
|
|
Date _date = DateUtils.getTimeAfterMonths(i,br.getStarttime()); |
|
|
|
_money = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), |
|
|
|
DateUtils.getFirstDayForCurrMonth(_date), |
|
|
|
DateUtils.getLastDayForMonth(_date)); |
|
|
|
} |
|
|
|
needPay = needPay + _money; |
|
|
|
} |
|
|
|
}else { |
|
|
|
Date _date = DateUtils.getTimeAfterMonths(i,br.getStarttime()); |
|
|
|
_money = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), |
|
|
|
DateUtils.getFirstDayForCurrMonth(_date), |
|
|
|
DateUtils.getLastDayForMonth(_date)); |
|
|
|
//同一个月 |
|
|
|
//合同账单结束的时间是00:00:00,取日期要取前一天 |
|
|
|
needPay = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), |
|
|
|
br.getStarttime(), DateUtils.getTimeAfterDays(-1, br.getEndtime())); |
|
|
|
} |
|
|
|
needPay = new BigDecimal(needPay).multiply(new BigDecimal(wxRentContract.getPayRatio())) |
|
|
|
.divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP).intValue(); |
|
|
|
Long oldNeedPay = br.getNeedPay(); |
|
|
|
if (needPay > br.getNeedPay()) { |
|
|
|
Long newPay = Long.parseLong(String.valueOf(needPay)); |
|
|
|
br.setNeedPay(newPay); |
|
|
|
br.setOwe(newPay); |
|
|
|
br.setReceivePay(newPay); |
|
|
|
br.setUpdatetime(new Date()); |
|
|
|
BigDecimal servicePay = new BigDecimal(br.getReceivePay()).multiply(new BigDecimal(wxPayAccountBill.getServiceChargeRate())).divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP); |
|
|
|
br.setServiceChargePay(servicePay.intValue()); |
|
|
|
br.setOwe(br.getReceivePay() + br.getServiceChargePay()); |
|
|
|
br.setComments("原金额["+oldNeedPay+"(分)]小于解单金额,系统自动更新"); |
|
|
|
wxBillRentMapper.updateById(br); |
|
|
|
} |
|
|
|
needPay = needPay + _money; |
|
|
|
}catch(Exception e) { |
|
|
|
logger.error("calcuteByTradeDaily error:"+br.getId(),e); |
|
|
|
} |
|
|
|
}else { |
|
|
|
//同一个月 |
|
|
|
//合同账单结束的时间是00:00:00,取日期要取前一天 |
|
|
|
needPay = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), |
|
|
|
br.getStarttime(), DateUtils.getTimeAfterDays(-1, br.getEndtime())); |
|
|
|
} |
|
|
|
needPay = new BigDecimal(needPay).multiply(new BigDecimal(wxRentContract.getPayRatio())) |
|
|
|
.divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP).intValue(); |
|
|
|
if (needPay > br.getNeedPay()) { |
|
|
|
Long newPay = Long.parseLong(String.valueOf(needPay)); |
|
|
|
br.setNeedPay(newPay); |
|
|
|
br.setOwe(newPay); |
|
|
|
br.setReceivePay(newPay); |
|
|
|
br.setUpdatetime(new Date()); |
|
|
|
BigDecimal servicePay = new BigDecimal(br.getReceivePay()).multiply(new BigDecimal(wxPayAccountBill.getServiceChargeRate())).divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP); |
|
|
|
br.setServiceChargePay(servicePay.intValue()); |
|
|
|
br.setOwe(br.getReceivePay() + br.getServiceChargePay()); |
|
|
|
br.setComments("解单金额["+newPay+"(分)]大于合同计算金额,系统自动更新"); |
|
|
|
wxBillRentMapper.updateById(br); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|