renkang
2024-11-27 b9632baaa11d6e9df2b8fea79f259314bfac1676
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java
@@ -45,6 +45,8 @@
    @Autowired
    private YwContractMapper ywContractMapper;
    @Autowired
    private YwContractRoomMapper ywContractRoomMapper;
    @Autowired
    private YwContractDetailMapper ywContractDetailMapper;
    @Autowired
    private YwContractBillMapper ywContractBillMapper;
@@ -82,11 +84,32 @@
        ywContractMapper.insert(model);
        dealDetailListBiz(model);//处理条款信息
        dealMultifileBiz(model);//处理附件信息
        dealLogBiz(model,Constants.YwLogType.CONTRACT_CREATE,null,null);//记录新建日志
        dealRoomsForContract(model);//处理房源关联表
        dealLogBiz(model,Constants.YwLogType.CONTRACT_CREATE,model.getLoginUserInfo().getRealname(),"【"+model.getRemark().replace("合同摘要:","")+"】");//记录新建日志
        return model.getId();
    }
    private void dealRoomsForContract(YwContract model) {
        List<YwContractRoom> list = new ArrayList<>();
        for(YwRoom room :model.getRoomList()){
            YwContractRoom t = new YwContractRoom();
            t.setContractId(model.getId());
            t.setRoomId(room.getId());
            t.setCreator(model.getCreator());
            t.setIsdeleted(Constants.ZERO);
            t.setCreateDate(model.getCreateDate());
            t.setEditDate(model.getCreateDate());
            t.setEditor(model.getCreator());
            t.setType(Constants.ZERO);
            list.add(t);
        }
        ywContractRoomMapper.insert(list);
    }
    @Override
    public   List<YwContractBill> getBillList(YwContract model){
        isParamValidForBill(model);
        model.setCreateDate(new Date());
        model.setEditDate(model.getCreateDate());
@@ -120,6 +143,8 @@
                    ||model.getZlDetailList().size() ==0){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,请按页面要求填写租赁条款信息");
            }
            model.setType(Constants.TWO);
            model.setWyDetailList(null);
            if(!(model.getZlFreeEndDate()==null &&  model.getZlFreeStartDate()==null) && (
                    (model.getZlFreeEndDate()!=null &&  model.getZlFreeStartDate()==null)
                            ||(model.getZlFreeEndDate()==null &&  model.getZlFreeStartDate()!=null)
@@ -158,6 +183,8 @@
            ){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,请按页面要求填写物业条款信息");
            }
            model.setType(Constants.ONE);
            model.setZlDetailList(null);
            if(!(model.getWyFreeEndDate()==null &&  model.getWyFreeStartDate()==null) && (
                    (model.getWyFreeEndDate()!=null &&  model.getWyFreeStartDate()==null)
                            ||(model.getWyFreeEndDate()==null &&  model.getWyFreeStartDate()!=null)
@@ -184,7 +211,7 @@
            }
        }
        YwProject project = projectMapper.selectById(model.getCompanyId());
        YwProject project = projectMapper.selectById(model.getProjectId());
        if(project ==null || Constants.equalsInteger(project.getIsdeleted(),Constants.ONE)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,请选择正确的项目信息!");
        }
@@ -202,13 +229,12 @@
        for(YwRoom r : rooms){
            model.setTotalArea(model.getTotalArea().add(Constants.formatBigdecimal(r.getArea())));
        }
        model.setRoomList(rooms);
    }
    private String getRemarlByParam(YwContract model) {
        String str = "";
        YwContractDetail zl = model.getZlDetailList()!=null&&model.getZlDetailList().size()>0?model.getZlDetailList().get(0):null;
        YwContractDetail yw = model.getWyDetailList()!=null&&model.getWyDetailList().size()>0?model.getWyDetailList().get(0):null;
        //起租日2024/06/01,租赁数为500㎡。首期租赁三月一付,租金单价35元/㎡·月。首期物业三月一付,物业单价4.3元/㎡·月
        String str0 = "合同摘要:起租日{param1},租赁数为{param2}㎡。首期租赁{param3},租金单价{param4}元{param5}。首期物业{param6},物业单价{param7}{param8}";
        String str1 = "合同摘要:起租日{param1},租赁数为{param2}㎡。首期租赁{param3},租金单价{param4}元{param5}。";
@@ -216,20 +242,20 @@
        if(Constants.equalsInteger(model.getType(),Constants.ZERO)){
            str= str0;
        }
        if(Constants.equalsInteger(model.getType(),Constants.ONE)){
        if(Constants.equalsInteger(model.getType(),Constants.TWO)){
            str= str1;
        }
        if(Constants.equalsInteger(model.getType(),Constants.TWO)){
        if(Constants.equalsInteger(model.getType(),Constants.ONE)){
            str= str2;
        }
        str = str.replace("{param1}",DateUtil.getDateLongSlash(model.getStartDate()))
                .replace("{param2}",model.getTotalArea().intValue()+"")
                .replace("{param3}",Constants.getPayTypeByNum(model.getZlPayType()))
                .replace("{param4}",zl!=null&&zl.getPrice()!=null?(zl.getPrice().intValue()+""):"0")
                .replace("{param5}",Constants.getPayTypeByNum(model.getWyPayType()))
                .replace("{param6}",Constants.getUnitTypeByNum(zl!=null?zl.getCircleType():null))
                .replace("{param7}",zl!=null&&yw.getPrice()!=null?(zl.getPrice().intValue()+""):"0")
                .replace("{param8}",Constants.getUnitTypeByNum(yw!=null?yw.getCircleType():null));
                .replace("{param4}",Constants.formatBigdecimal(model.getZlFirstPrice()).intValue()+"")
                .replace("{param5}",Constants.getUnitTypeByNum(model.getZlFirstCircle())
                .replace("{param6}",Constants.getPayTypeByNum(model.getWyPayType()))
                .replace("{param7}",Constants.formatBigdecimal(model.getWyFirstPrice()).intValue()+"")
                .replace("{param8}",Constants.getUnitTypeByNum(model.getWyFirstCircle())));
        return  str;
    }
    private String getbackRentRemarkByParam(YwContract model) {
@@ -241,6 +267,14 @@
                .replace("{param4}",(fee.compareTo(new BigDecimal(0)) >=0?
                        Constants.formatBigdecimal(model.getBtFee()).intValue()
                        :(Constants.formatBigdecimal(model.getBtFee()).intValue() * -1))+"" );
        return  str;
    }
    private String getbackRentLogByParam(YwContract model) {
        BigDecimal fee = Constants.formatBigdecimal(model.getBtFee());
        String str = "【退租日{param1},退租原因:{param2},退租协议中统计的费用总计{param3}元。】";
        str = str.replace("{param1}",DateUtil.getDateLongSlash(model.getBtDate()))
                .replace("{param2}",StringUtils.defaultString(model.getBtInfo(),""))
                .replace("{param3}",Constants.formatBigdecimal2Float(model.getBtFee()).doubleValue()+"");
        return  str;
    }
@@ -272,7 +306,7 @@
        update.setBtFee(param.getBtFee());
        update.setBtRemark(getbackRentRemarkByParam(param));
        ywContractMapper.updateById(update);
        dealLogBiz(param,Constants.YwLogType.CONTRACT_BACK,null,null);
        dealLogBiz(param,Constants.YwLogType.CONTRACT_BACK, param.getLoginUserInfo().getRealname(),getbackRentLogByParam(param));
        return param.getId();
    }
@@ -458,7 +492,7 @@
        List<YwContractDetail> details = new ArrayList<>();
        int num = 0;
        if(Constants.equalsInteger(model.getType(),Constants.ZERO )
                || Constants.equalsInteger(model.getType(),Constants.ONE)){
                || Constants.equalsInteger(model.getType(),Constants.TWO)){
            for(YwContractDetail d :model.getZlDetailList()){
               d.setCreateDate(model.getEditDate());
               d.setCreator(model.getEditor());
@@ -472,7 +506,7 @@
        }
        num = 0;
        if(Constants.equalsInteger(model.getType(),Constants.ZERO )
                || Constants.equalsInteger(model.getType(),Constants.TWO)){
                || Constants.equalsInteger(model.getType(),Constants.ONE)){
            for(YwContractDetail d :model.getWyDetailList()){
                d.setCreateDate(model.getEditDate());
                d.setCreator(model.getEditor());
@@ -500,11 +534,11 @@
        List<YwContractBill> billList1 = new ArrayList<>();
        List<YwContractBill> billList2 = new ArrayList<>();
        if(Constants.equalsInteger(model.getType(),Constants.ZERO )
                || Constants.equalsInteger(model.getType(),Constants.ONE)){
                || Constants.equalsInteger(model.getType(),Constants.TWO)){
            //如果有租赁条款
            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)){
                //如果是一次性付清
@@ -521,11 +555,11 @@
            }
        }
        if(Constants.equalsInteger(model.getType(),Constants.ZERO )
                || Constants.equalsInteger(model.getType(),Constants.TWO)){
                || Constants.equalsInteger(model.getType(),Constants.ONE)){
            //如果物业条款
            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)){
                //如果是一次性付清
@@ -547,19 +581,25 @@
        }else  if(model.getBillType() == 0){
            model.setBillList(billList2);
        }
        int num =1;
        for(int i=0;i<billList1.size();i++){
            if(Constants.equalsInteger( billList1.get(i).getCostType(),Constants.ZERO)){
                billList1.get(i).setSortnum(num++);
            }
        }
          num =1;
        for(int i=0;i<billList2.size();i++){
            if(Constants.equalsInteger( billList2.get(i).getCostType(),Constants.ONE)){
                billList2.get(i).setSortnum(num++);
            }
        }
        if(model.getId()!=null){
            for(int i=0;i<billList1.size();i++){
                billList1.get(i).setSortnum(i+1);
            }
            for(int i=0;i<billList2.size();i++){
                billList2.get(i).setSortnum(i+1);
            }
            ywContractBillMapper.insert(billList1);
            ywContractBillMapper.insert(billList2);
        }
    }
    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());
@@ -572,8 +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;
    }
@@ -675,10 +725,13 @@
            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);
            bill.setCompanyId(model.getCompanyId());
            list.add(bill);
        }
    }
@@ -759,6 +812,8 @@
            bill.setEndDate(d.getEndDate());//账单结束
            bill.setPlanPayDate(DateUtil.addDaysToDate(d.getStartDate(),Constants.formatIntegerNum(d.getAdvanceDays()) * -1));
            bill.setTotleFee(getTotalFeeByStartEnd(model,d,freeStart,freeEnd));
            bill.setReceivableFee(bill.getTotleFee());
            bill.setBillType(Constants.ZERO);
            list.add(bill);
        }
        return list;
@@ -774,6 +829,7 @@
        bill.setIsdeleted(Constants.ZERO);
        bill.setContractId(model.getId());
        bill.setStatus(Constants.ZERO);
        bill.setPayStatus(Constants.ZERO);
        bill.setDetailId(d.getId());
        bill.setCostType(d.getType());
        bill.setType(Constants.ZERO);
@@ -783,15 +839,21 @@
    private BigDecimal getAreasNumBYRooms(List<YwRoom> roomList) {
        BigDecimal data= new BigDecimal(0);
        for(YwRoom r :roomList){
            data = data.add(Constants.formatBigdecimal(r.getArea()));
        if(roomList!=null){
            for(YwRoom r :roomList){
                data = data.add(Constants.formatBigdecimal(r.getArea()));
            }
        }
        return  data;
    }
    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){
@@ -859,7 +921,7 @@
        }
        if(Constants.equalsInteger(model.getType(),Constants.ZERO )
                || Constants.equalsInteger(model.getType(),Constants.ONE)){
                || Constants.equalsInteger(model.getType(),Constants.TWO)){
            if(  model.getZlDeposit() == null
                    ||model.getZlPayType() == null
                    || model.getZlPayType()>3
@@ -899,7 +961,7 @@
            }
        }
        if(Constants.equalsInteger(model.getType(),Constants.ZERO )
                || Constants.equalsInteger(model.getType(),Constants.TWO)){
                || Constants.equalsInteger(model.getType(),Constants.ONE)){
            if(  model.getWyDeposit() == null
                    ||model.getWyPayType() == null
                    || model.getWyPayType()>3
@@ -917,7 +979,7 @@
            }
            for(YwContractDetail d :model.getWyDetailList()){
                if(  d.getStartDate() == null
                        ||d.getEditDate() == null
                        ||d.getEndDate() == null
                        ||d.getPrice() == null
                        ||d.getCircleType() == null
                        || d.getCircleType()>6
@@ -940,7 +1002,7 @@
            }
        }
        YwProject project = projectMapper.selectById(model.getCompanyId());
        YwProject project = projectMapper.selectById(model.getProjectId());
        if(project ==null || Constants.equalsInteger(project.getIsdeleted(),Constants.ONE)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,请选择正确的项目信息!");
        }
@@ -958,6 +1020,7 @@
        for(YwRoom r : rooms){
            model.setTotalArea(model.getTotalArea().add(Constants.formatBigdecimal(r.getArea())));
        }
        model.setRoomList(rooms);
        YwCustomer customer = customerMapper.selectById(model.getRenterId());
        if(customer ==null || Constants.equalsInteger(customer.getIsdeleted(),Constants.ONE)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,选择租客信息不存在,请返回刷新重试!");
@@ -1026,6 +1089,7 @@
        log.setObjType(type.getKey());
        log.setParam1(param1);
        log.setParam2(param2);
        log.setContent(param2);
        log.setTitle(type.getNoteinfo());
        ywWorkorderLogMapper.insert(log);
    }
@@ -1037,12 +1101,13 @@
                .selectAs(SystemUser::getRealname,YwContract::getUserName )
                .selectAs(YwCustomer::getName,YwContract::getRenterName )
                .selectAs(YwProject::getName,YwContract::getProjectName )
                .select("t4.realname",YwContract::getCreatorName )
                .select("t3.realname",YwContract::getCreatorName )
                .leftJoin(Company.class,Company::getId,YwContract::getCompanyId)
                .leftJoin(SystemUser.class,SystemUser::getId,YwContract::getUserId)
                .leftJoin(SystemUser.class,SystemUser::getId,YwContract::getCreator)
                .leftJoin(YwProject.class,YwProject::getId,YwContract::getProjectId)
                .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId);
                .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId)
                .eq( YwContract::getId,id);
        YwContract model = ywContractMapper.selectJoinOne(YwContract.class,queryWrapper);
        if(model != null){
            //合同附件
@@ -1057,7 +1122,7 @@
                    .leftJoin(YwBuilding.class,YwBuilding::getId,YwRoom::getBuildingId)
                    .leftJoin(YwFloor.class,YwFloor::getId,YwRoom::getFloor)
                    .eq(YwRoom::getIsdeleted,Constants.ZERO)
                    .exists("(select a.id from yw_contract_room a where a.isdeleted=1 and a.room_id=t.id and a.contract_id="+model.getId()+")");
                    .exists("(select a.id from yw_contract_room a where a.isdeleted=0 and a.type=0 and a.room_id=t.id and a.contract_id="+model.getId()+")");
            model.setRoomList(roomMapper.selectJoinList(YwRoom.class,rw));
            model.setWyFirstCircleStr(Constants.getUnitTypeByNum(model.getWyFirstCircle()));
            model.setZlFirstCircleStr(Constants.getUnitTypeByNum(model.getZlFirstCircle()));
@@ -1146,8 +1211,10 @@
        MPJLambdaWrapper<YwContract> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(YwContract.class )
                .selectAs(Company::getName,YwContract::getCompanyName )
                .selectAs(YwCustomer::getName,YwContract::getRenterName )
                .select("(select sum(r.area) from yw_contract_room cr left join yw_room r on r.id = cr.room_id where r.isdeleted=0 and cr.contract_id =t.id)",YwContract::getTotalArea )
                .leftJoin(Company.class,Company::getId,YwContract::getCompanyId);
                .leftJoin(Company.class,Company::getId,YwContract::getCompanyId)
                .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId);
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.eq(YwContract::getId, pageWrap.getModel().getId());