winter 1 год назад
Родитель
Сommit
fbf63d732d
1 измененных файлов: 49 добавлений и 45 удалений
  1. +49
    -45
      mallinkService/src/main/java/com/iformall/service/helper/WxRentContractHelper.java

+ 49
- 45
mallinkService/src/main/java/com/iformall/service/helper/WxRentContractHelper.java Просмотреть файл

@@ -557,34 +557,73 @@ public class WxRentContractHelper {
//最后一个月 //最后一个月
if (newStartDate.before(end)) { if (newStartDate.before(end)) {
Date last = DateUtils.getFirstDayForCurrMonth(end);
List<Date> lastValidDays = getValidDays(last,end,freeDays);
List<Date> lastValidDays = getValidDays(newStartDate,end,freeDays);
if (null == lastValidDays || lastValidDays.size() <= 0 ) { if (null == lastValidDays || lastValidDays.size() <= 0 ) {
return "0"; return "0";
} }
NeedPayDTO enp = getCurrentMonthPay(last, end, price, decimalSize, lastValidDays, dayPriceCalcute, monthAvageDays);
NeedPayDTO enp = getCurrentMonthPay(newStartDate, end, price, decimalSize, lastValidDays, dayPriceCalcute, monthAvageDays);
total = total.add(enp.getMoney()); total = total.add(enp.getMoney());
System.out.println("末月>>>>"+DateUtils.date2String(last)+">>>"+DateUtils.date2String(end)+">>>>"+enp.getMoney().toPlainString());
System.out.println("末月>>>>"+DateUtils.date2String(newStartDate)+">>>"+DateUtils.date2String(end)+">>>>"+enp.getMoney().toPlainString());
} }
return total.toPlainString(); return total.toPlainString();
} }
private static List<Date> getValidDays(Date start,Date end,List<Date> freeDays) { private static List<Date> getValidDays(Date start,Date end,List<Date> freeDays) {
List<Date> allDaysFrees = DateUtils.getAllDays(start, end);
if (null == allDaysFrees) {
List<Date> allDays = DateUtils.getAllDays(start, end);
if (null == allDays) {
return null; return null;
} }
List<Date> validDays = new ArrayList<Date>(); List<Date> validDays = new ArrayList<Date>();
validDays.addAll(allDaysFrees);
validDays.addAll(allDays);
if (null != freeDays) { if (null != freeDays) {
List<Date> curfreeDays = (List<Date>)CollectionUtils.intersection(allDaysFrees, freeDays);
if (null != curfreeDays) {
validDays.removeAll(curfreeDays);
List<Date> currfreeDays = (List<Date>) CollectionUtils.intersection(allDays, freeDays);
if (null != currfreeDays) {
validDays.removeAll(currfreeDays);
} }
} }
return validDays; return validDays;
} }
public static void main(String[] args) {
Date start = DateUtils.str2Date("2024-09-01 00:00:00").getTime();
Date end = DateUtils.str2Date("2024-09-30 23:59:59").getTime();
Date d1 = DateUtils.str2Date("2024-08-20 00:00:00").getTime();
Date d2 = DateUtils.str2Date("2024-09-10 00:00:00").getTime();
List<Date> f1 = DateUtils.getAllDays(d1, d2);
// Date d3 = DateUtils.str2Date("2024-09-01 00:00:00").getTime();
// Date d4 = DateUtils.str2Date("2024-09-30 00:00:00").getTime();
// f1.addAll(DateUtils.getAllDays(d3, d4));
System.out.println(getValidDays(start,end,f1));
// Date start = DateUtils.str2Date("2024-08-05 00:00:00").getTime();
// Date end = DateUtils.str2Date("2025-11-04 23:59:59").getTime();
//
// Date d1 = DateUtils.str2Date("2024-07-31 00:00:00").getTime();
// Date d2 = DateUtils.str2Date("2024-08-03 00:00:00").getTime();
// Date d3 = DateUtils.str2Date("2024-08-06 00:00:00").getTime();
// Date d4 = DateUtils.str2Date("2024-08-31 00:00:00").getTime();
// Date d5 = DateUtils.str2Date("2024-09-01 00:00:00").getTime();
// Date d6 = DateUtils.str2Date("2024-09-11 00:00:00").getTime();
// Date d7 = DateUtils.str2Date("2024-09-30 00:00:00").getTime();
//
// List<Date> freeDays = new ArrayList<Date>();
// freeDays.add(d1);
// freeDays.add(d2);
// freeDays.add(d3);
// freeDays.add(d4);
// freeDays.add(d5);
// freeDays.add(d6);
// freeDays.add(d7);
// System.out.println(DateUtils.getDaySet(d1, Calendar.DATE, -1));
//String dayMoney = getNeedPay(freeDays, 2, new BigDecimal(10), start, end, EnumRentDayPriceCalcute.AVERAGE_DAYS, 30);
//System.out.println(dayMoney);
//String monthMoney = getMonthNeedPay(freeDays, 2, new BigDecimal(2000), start, end, EnumContractReceivePeriodUnit.QUARTER.getCode(), 1, EnumRentDayPriceCalcute.AVERAGE_DAYS.getCode(), 30);
//System.out.println(monthMoney);
}
//查询当前月内的金额 //查询当前月内的金额
private static NeedPayDTO getCurrentMonthPay(Date start,Date end, BigDecimal priceMonth,Integer decimalSize,List<Date> validDays,Integer dayPriceCalcute,Integer monthAvageDays) { private static NeedPayDTO getCurrentMonthPay(Date start,Date end, BigDecimal priceMonth,Integer decimalSize,List<Date> validDays,Integer dayPriceCalcute,Integer monthAvageDays) {
NeedPayDTO np = new NeedPayDTO(); NeedPayDTO np = new NeedPayDTO();
@@ -770,40 +809,5 @@ public class WxRentContractHelper {
} }
return 0; return 0;
} }
public static void main(String[] args) {
Date start = DateUtils.str2Date("2024-09-01 00:00:00").getTime();
Date end = DateUtils.str2Date("2024-09-30 23:59:59").getTime();
Date d1 = DateUtils.str2Date("2024-00-01 00:00:00").getTime();
Date d2 = DateUtils.str2Date("2024-09-30 23:59:59").getTime();
System.out.println(getValidDays(start,end,DateUtils.getAllDays(d1, d2)));
// Date start = DateUtils.str2Date("2024-08-05 00:00:00").getTime();
// Date end = DateUtils.str2Date("2025-11-04 23:59:59").getTime();
//
// Date d1 = DateUtils.str2Date("2024-07-31 00:00:00").getTime();
// Date d2 = DateUtils.str2Date("2024-08-03 00:00:00").getTime();
// Date d3 = DateUtils.str2Date("2024-08-06 00:00:00").getTime();
// Date d4 = DateUtils.str2Date("2024-08-31 00:00:00").getTime();
// Date d5 = DateUtils.str2Date("2024-09-01 00:00:00").getTime();
// Date d6 = DateUtils.str2Date("2024-09-11 00:00:00").getTime();
// Date d7 = DateUtils.str2Date("2024-09-30 00:00:00").getTime();
//
// List<Date> freeDays = new ArrayList<Date>();
// freeDays.add(d1);
// freeDays.add(d2);
// freeDays.add(d3);
// freeDays.add(d4);
// freeDays.add(d5);
// freeDays.add(d6);
// freeDays.add(d7);
// System.out.println(DateUtils.getDaySet(d1, Calendar.DATE, -1));
//String dayMoney = getNeedPay(freeDays, 2, new BigDecimal(10), start, end, EnumRentDayPriceCalcute.AVERAGE_DAYS, 30);
//System.out.println(dayMoney);
//String monthMoney = getMonthNeedPay(freeDays, 2, new BigDecimal(2000), start, end, EnumContractReceivePeriodUnit.QUARTER.getCode(), 1, EnumRentDayPriceCalcute.AVERAGE_DAYS.getCode(), 30);
//System.out.println(monthMoney);
}


} }

Загрузка…
Отмена
Сохранить