jiangping
2024-11-27 fb487d66f1930780fe1cde09da3fec89b13db2f9
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java
@@ -538,7 +538,7 @@
            //如果有租赁条款
            if(Constants.formatBigdecimal(model.getZlDeposit()).compareTo(new BigDecimal(0))>0){
                    //如果有租赁押金
                billList1.add(initDepoistBill(Constants.THREE,model));
                billList1.add(initDepoistBill(Constants.THREE,model,details));
            }
            if(Constants.equalsInteger(model.getZlPayType(), Constants.ZERO)){
                //如果是一次性付清
@@ -559,7 +559,7 @@
            //如果物业条款
            if(Constants.formatBigdecimal(model.getWyDeposit()).compareTo(new BigDecimal(0))>0){
                //如果有租赁押金
                billList2.add(initDepoistBill(Constants.FOUR,model));
                billList2.add(initDepoistBill(Constants.FOUR,model,details));
            }
            if(Constants.equalsInteger(model.getWyPayType(), Constants.ZERO)){
                //如果是一次性付清
@@ -599,7 +599,7 @@
        }
    }
    private YwContractBill initDepoistBill(int type,  YwContract model) {
    private YwContractBill initDepoistBill(int type,  YwContract model, List<YwContractDetail> details) {
        YwContractBill bill  = new YwContractBill();
        bill.setCreateDate(model.getEditDate());
        bill.setCreator(model.getEditor());
@@ -612,10 +612,18 @@
        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.setTotleFee(type==Constants.THREE?model.getZlDeposit():model.getWyDeposit());//押金费用
        bill.setReceivableFee(bill.getTotleFee());
        bill.setBillType(Constants.ZERO);
        bill.setPayStatus(Constants.ZERO);
        bill.setSortnum(0);
        bill.setCompanyId(model.getCompanyId());
        return bill;
    }
@@ -662,13 +670,12 @@
        int monthSix = months / 6;//6个月维度数量
        int restMonth = months % 6;//剩余的整月
        int monthDays =   dateCompare.getMonthDays();//不满一个月的天数
        Date date = new Date();
        List<Date> list = new ArrayList<>();
        for (int i = 0; i < monthSix; i++) {
            list.add(DateUtil.addMonthToDate(date,i*6));
            list.add(DateUtil.addMonthToDate(startDate,i*6));
        }
        if(restMonth>0 || monthDays>0){
            list.add(DateUtil.addDaysToDate(date,monthSix));
            list.add(DateUtil.addDaysToDate(startDate,monthSix));
        }
        return list;
    }
@@ -678,13 +685,12 @@
        int monthThree = months / 3;//3个月维度数量
        int restMonth = months % 3;//剩余的整月
        int monthDays =   dateCompare.getMonthDays();//不满一个月的天数
        Date date = new Date();
        List<Date> list = new ArrayList<>();
        for (int i = 0; i < monthThree; i++) {
            list.add(DateUtil.addMonthToDate(date,i*3));
            list.add(DateUtil.addMonthToDate(startDate,i*3));
        }
        if(restMonth>0 || monthDays>0){
            list.add(DateUtil.addDaysToDate(date,monthThree));
            list.add(DateUtil.addDaysToDate(startDate,monthThree));
        }
        return list;
    }
@@ -709,24 +715,27 @@
    }
    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 = DateUtil.addDaysToDate(DateUtil.addYearToDate(start,1),-1);//结束日期为下一个周期的前一天
            if(end.getTime()> d.getEndDate().getTime() ){
                end = d.getEndDate();
            Date end = d.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);//账单结束
            bill.setPlanPayDate(DateUtil.addDaysToDate(d.getStartDate(),Constants.formatIntegerNum(d.getAdvanceDays()) * -1));
            Date planPayDate = DateUtil.addDaysToDate(d.getStartDate(),Constants.formatIntegerNum(d.getAdvanceDays()) * -1);
            bill.setPlanPayDate(planPayDate.getTime()>System.currentTimeMillis()?planPayDate:new Date());
            BigDecimal totalFee =getTotalFeeByStartEnd(model,d,freeStart,freeEnd);
            bill.setTotleFee(totalFee);
            bill.setReceivableFee(totalFee);
            bill.setBillType(Constants.ZERO);
            temp++;
            bill.setCompanyId(model.getCompanyId());
            list.add(bill);
        }
    }
    private BigDecimal getTotalFeeByStartEnd(YwContract model, YwContractDetail d,Date freeStart,Date freeEnd) {
@@ -777,13 +786,12 @@
        DateCompare dateCompare =   DateCompare.monthYearCompare(startDate, endDate );
        int years = dateCompare.getYear();
        int yeardays = dateCompare.getYearDays();
        Date date = new Date();
        List<Date> list = new ArrayList<>();
        for (int i = 0; i < years; i++) {
            list.add(DateUtil.addYearToDate(date,i));
            list.add(DateUtil.addYearToDate(startDate,i));
        }
        if(yeardays>0){
            list.add(DateUtil.addYearToDate(date,years));
            list.add(DateUtil.addYearToDate(startDate,years));
        }
        return list;
    }
@@ -840,8 +848,11 @@
    }
    private void initFiles(YwContract model) {
        List<Multifile> multifiles = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda()
                .eq(Multifile::getObjId, model.getId() )
        List<Multifile> multifiles = multifileMapper.selectJoinList(Multifile.class,new MPJLambdaWrapper<Multifile>()
                .selectAll(Multifile.class)
                .selectAs(SystemUser::getRealname,Multifile::getUserName)
                .leftJoin(SystemUser.class,SystemUser::getId,Multifile::getCreator)
                .eq(Multifile::getObjId,model.getId())
                .in(Multifile::getObjType, Arrays.asList(new Integer[]{Constants.MultiFile.YW_CONTRACT_FILE.getKey()}))
                .eq(Multifile::getIsdeleted,Constants.ZERO));
        if(multifiles!=null){