| @@ -557,34 +557,73 @@ public class WxRentContractHelper { | |||
| //最后一个月 | |||
| 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 ) { | |||
| 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()); | |||
| 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(); | |||
| } | |||
| 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; | |||
| } | |||
| List<Date> validDays = new ArrayList<Date>(); | |||
| validDays.addAll(allDaysFrees); | |||
| validDays.addAll(allDays); | |||
| 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; | |||
| } | |||
| 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) { | |||
| NeedPayDTO np = new NeedPayDTO(); | |||
| @@ -770,40 +809,5 @@ public class WxRentContractHelper { | |||
| } | |||
| 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); | |||
| } | |||
| } | |||