jiangping
2024-11-27 bc87b51e20a0adf0badf2033ede93cafeb5fc147
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java
@@ -612,12 +612,7 @@
        bill.setEndDate(model.getEndDate());
        bill.setType(Constants.ZERO);
        bill.setCostType(type);
        YwContractDetail d = details.get(Constants.ZERO);
        if(Objects.isNull(d)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"条款数据异常");
        }
        Date planPayDate = DateUtil.addDaysToDate(d.getStartDate(),Constants.formatIntegerNum(d.getAdvanceDays()) * -1);
        bill.setPlanPayDate(planPayDate.getTime()>System.currentTimeMillis()?planPayDate:new Date());
        bill.setPlanPayDate(bill.getStartDate());
        bill.setTotleFee(type==Constants.THREE?model.getZlDeposit():model.getWyDeposit());//押金费用
        bill.setReceivableFee(bill.getTotleFee());
        bill.setBillType(Constants.ZERO);
@@ -675,7 +670,7 @@
            list.add(DateUtil.addMonthToDate(startDate,i*6));
        }
        if(restMonth>0 || monthDays>0){
            list.add(DateUtil.addDaysToDate(startDate,monthSix));
            list.add(DateUtil.addMonthToDate(startDate,monthSix));
        }
        return list;
    }
@@ -690,7 +685,7 @@
            list.add(DateUtil.addMonthToDate(startDate,i*3));
        }
        if(restMonth>0 || monthDays>0){
            list.add(DateUtil.addDaysToDate(startDate,monthThree));
            list.add(DateUtil.addMonthToDate(startDate,monthThree));
        }
        return list;
    }
@@ -717,16 +712,16 @@
    private void dealCircleDateBillBiz(  List<Date> dateList ,YwContract model, YwContractDetail d, Date freeStart, Date freeEnd, List<YwContractBill> list ) {
        int temp = 0;
        for(Date start : dateList){
            Date end = d.getEndDate();
            Date end = model.getEndDate();
            if(temp+1 < dateList.size()){
                end =DateUtil.addDaysToDate(dateList.get(temp+1),-1);
            }
            YwContractBill bill = initCreateBillModel(model,d );
            bill.setStartDate(start);//账单开始
            bill.setEndDate(end);//账单结束
            Date planPayDate = DateUtil.addDaysToDate(d.getStartDate(),Constants.formatIntegerNum(d.getAdvanceDays()) * -1);
            Date planPayDate = DateUtil.addDaysToDate(bill.getStartDate(),Constants.formatIntegerNum(d.getAdvanceDays()) * -1);
            bill.setPlanPayDate(planPayDate.getTime()>System.currentTimeMillis()?planPayDate:new Date());
            BigDecimal totalFee =getTotalFeeByStartEnd(model,d,freeStart,freeEnd);
            BigDecimal totalFee =getTotalFeeByStartEnd(model,d,bill,freeStart,freeEnd);
            bill.setTotleFee(totalFee);
            bill.setReceivableFee(totalFee);
            bill.setBillType(Constants.ZERO);
@@ -738,9 +733,9 @@
    }
    private BigDecimal getTotalFeeByStartEnd(YwContract model, YwContractDetail d,Date freeStart,Date freeEnd) {
    private BigDecimal getTotalFeeByStartEnd(YwContract model, YwContractDetail d, YwContractBill bill,Date freeStart,Date freeEnd) {
        BigDecimal totalFee = new BigDecimal(0);
        DateCompare dateCompare =   DateCompare.dayCompare(d.getStartDate(),d.getEndDate(),freeStart,freeEnd);
        DateCompare dateCompare =   DateCompare.dayCompare(bill.getStartDate(),bill.getEndDate(),freeStart,freeEnd);
        if(Constants.equalsInteger(d.getCircleType(),Constants.ZERO)){
            //0=元每平米天
            int days = dateCompare.getDay();
@@ -809,8 +804,8 @@
            YwContractBill bill = initCreateBillModel(model,d);
            bill.setStartDate(d.getStartDate());//账单开始
            bill.setEndDate(d.getEndDate());//账单结束
            bill.setPlanPayDate(DateUtil.addDaysToDate(d.getStartDate(),Constants.formatIntegerNum(d.getAdvanceDays()) * -1));
            bill.setTotleFee(getTotalFeeByStartEnd(model,d,freeStart,freeEnd));
            bill.setPlanPayDate(DateUtil.addDaysToDate(bill.getStartDate(),Constants.formatIntegerNum(d.getAdvanceDays()) * -1));
            bill.setTotleFee(getTotalFeeByStartEnd(model,d,bill,freeStart,freeEnd));
            bill.setReceivableFee(bill.getTotleFee());
            bill.setBillType(Constants.ZERO);
            list.add(bill);
@@ -918,7 +913,6 @@
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,合同有效期结束时间不得早于开始时间!");
        }
        if(Constants.equalsInteger(model.getType(),Constants.ZERO )
                || Constants.equalsInteger(model.getType(),Constants.TWO)){
            if(  model.getZlDeposit() == null
@@ -929,12 +923,18 @@
                    ||model.getZlDetailList().size() ==0){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,请按页面要求填写租赁条款信息");
            }
            if(!(model.getZlFreeEndDate()==null &&  model.getZlFreeStartDate()==null) && (
                        (model.getZlFreeEndDate()!=null &&  model.getZlFreeStartDate()==null)
                        ||(model.getZlFreeEndDate()==null &&  model.getZlFreeStartDate()!=null)
                        ||model.getZlFreeEndDate().getTime()<= model.getZlFreeStartDate().getTime())
                  ){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,请选择正确的租赁条款免租期信息!");
            }
            if((model.getZlFreeStartDate()!=null && model.getZlFreeEndDate()!=null)
                    && (model.getZlFreeEndDate().getTime()>model.getEndDate().getTime()
                    || model.getZlFreeStartDate().getTime()<model.getStartDate().getTime())){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,免租期开始日期和结束日期限制在合同时间范围内!");
            }
            for(YwContractDetail d :model.getZlDetailList()){
                if(  d.getStartDate() == null
@@ -948,6 +948,9 @@
                }
                if(d.getEndDate().getTime()<= d.getStartDate().getTime()){
                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,租赁条款有效期结束时间不得早于开始时间!");
                }
                if(d.getEndDate().getTime()>model.getEndDate().getTime() ||d.getStartDate().getTime()<model.getStartDate().getTime()){
                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,条款开始日期和结束日期限制在合同时间范围内!");
                }
                if(!Constants.equalsInteger(model.getWyPayType(),Constants.ZERO) &&
                        Constants.equalsInteger(d.getCircleType(),Constants.SIX)){
@@ -970,11 +973,17 @@
            ){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,请按页面要求填写物业条款信息");
            }
            if(!(model.getWyFreeEndDate()==null &&  model.getWyFreeStartDate()==null) && (
                    (model.getWyFreeEndDate()!=null &&  model.getWyFreeStartDate()==null)
                            ||(model.getWyFreeEndDate()==null &&  model.getWyFreeStartDate()!=null)
                            ||model.getWyFreeEndDate().getTime()<= model.getWyFreeStartDate().getTime())){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,请选择正确的物业条款免租期信息!");
            }
            if((model.getWyFreeStartDate()!=null && model.getWyFreeEndDate()!=null)
                    && (model.getWyFreeEndDate().getTime()>model.getEndDate().getTime()
                    || model.getWyFreeStartDate().getTime()<model.getStartDate().getTime())){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,免租期开始日期和结束日期限制在合同时间范围内!");
            }
            for(YwContractDetail d :model.getWyDetailList()){
                if(  d.getStartDate() == null
@@ -989,6 +998,9 @@
                if(d.getEndDate().getTime()<= d.getStartDate().getTime()){
                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,物业条款有效期结束时间不得早于开始时间!");
                }
                if(d.getEndDate().getTime()>model.getEndDate().getTime() ||d.getStartDate().getTime()<model.getStartDate().getTime()){
                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,条款开始日期和结束日期限制在合同时间范围内!");
                }
                if(!Constants.equalsInteger(model.getWyPayType(),Constants.ZERO) &&
                        Constants.equalsInteger(d.getCircleType(),Constants.SIX)){
                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,物业条款只有选择一次性付款时,才能选择该按每场收费;");