| | |
| | | model.setEditor(model.getCreator()); |
| | | if(model.getStartDate().getTime() > System.currentTimeMillis()){ |
| | | model.setStatus(Constants.ZERO); |
| | | }else if(model.getStartDate().getTime() <= System.currentTimeMillis() && model.getEndDate().getTime() > System.currentTimeMillis()){ |
| | | }else if(model.getStartDate().getTime() <= System.currentTimeMillis() && Utils.Date.getEnd(model.getEndDate()).getTime() > System.currentTimeMillis()){ |
| | | model.setStatus(Constants.ONE); |
| | | }else{ |
| | | model.setStatus(Constants.TWO); |
| | |
| | | t.setEditor(model.getCreator()); |
| | | t.setType(Constants.ZERO); |
| | | list.add(t); |
| | | } |
| | | if(Constants.equalsInteger(model.getStatus(),Constants.ONE)){ |
| | | //更新房源数据为租赁中 |
| | | roomMapper.update(new UpdateWrapper<YwRoom>().lambda().set(YwRoom::getLeaseNowStatus,Constants.ONE) |
| | | .in(YwRoom::getId,model.getRoomList().stream().map(i->i.getId()).collect(Collectors.toList())) |
| | | ); |
| | | } |
| | | ywContractRoomMapper.insert(list); |
| | | } |
| | |
| | | @Transactional(rollbackFor = {BusinessException.class,Exception.class}) |
| | | public Integer backRent(YwContract param){ |
| | | isParamValidBackRent(param); |
| | | YwContract model = ywContractMapper.selectById(param.getId()); |
| | | if(Objects.isNull(model)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | if(!(model.getStartDate().getTime()<=param.getBtDate().getTime()&&model.getEndDate().getTime()>=param.getBtDate().getTime())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"退租日期错误,请检查退租日期需在合同日期内!"); |
| | | } |
| | | param.setEditDate(new Date()); |
| | | param.setEditor(param.getLoginUserInfo().getId()); |
| | | //处理 |
| | |
| | | update.setBtRemark(getbackRentRemarkByParam(param)); |
| | | ywContractMapper.updateById(update); |
| | | dealLogBiz(param,Constants.YwLogType.CONTRACT_BACK, param.getLoginUserInfo().getRealname(),getbackRentLogByParam(param)); |
| | | //如果退租日期小于当前日期 则直接释放房源信息 未租赁 |
| | | if(Utils.Date.getEnd(param.getBtDate()).getTime()<System.currentTimeMillis()){ |
| | | List<YwContractRoom> contractRoomList = ywContractRoomMapper.selectList(new QueryWrapper<YwContractRoom>().lambda() |
| | | .eq(YwContractRoom::getContractId, param.getId())); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(contractRoomList)){ |
| | | //更新房源数据为未租赁 |
| | | roomMapper.update(new UpdateWrapper<YwRoom>().lambda().set(YwRoom::getLeaseNowStatus,Constants.ZERO) |
| | | .in(YwRoom::getId,contractRoomList.stream().map(i->i.getRoomId()).collect(Collectors.toList())) |
| | | ); |
| | | } |
| | | } |
| | | return param.getId(); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void dealTimeOut(){ |
| | | |
| | | List<YwContract> listA = ywContractMapper.selectList(new QueryWrapper<YwContract>().lambda() |
| | | .eq(YwContract::getIsdeleted,Constants.ZERO) |
| | | .in(YwContract::getStatus,Constants.ZERO) |
| | | .apply(" START_DATE < NOW() AND END_DATE > NOW() ") |
| | | ); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(listA)){ |
| | | //定时处理合同执行中 |
| | | ywContractMapper.update(new UpdateWrapper<YwContract>() |
| | | .lambda() |
| | | .set(YwContract::getStatus,Constants.ONE) |
| | | .set(YwContract::getEditDate,DateUtil.getCurrDateTime()) |
| | | .eq(YwContract::getIsdeleted,Constants.ZERO) |
| | | .in(YwContract::getStatus,Constants.ZERO) |
| | | .apply(" START_DATE < NOW() AND END_DATE > NOW() ") |
| | | .in(YwContract::getId,listA.stream().map(i->i.getId()).collect(Collectors.toList())) |
| | | ); |
| | | //定时处理合同已过期 |
| | | ywContractMapper.update(new UpdateWrapper<YwContract>() |
| | | .lambda() |
| | | .set(YwContract::getStatus,Constants.TWO) |
| | | .set(YwContract::getEditDate,DateUtil.getCurrDateTime()) |
| | | .eq(YwContract::getIsdeleted,Constants.ZERO) |
| | | .in(YwContract::getStatus,Constants.ONE,Constants.ZERO) |
| | | .apply(" END_DATE < CURRENT_DATE ") |
| | | |
| | | List<YwContractRoom> contractRoomList = ywContractRoomMapper.selectList(new QueryWrapper<YwContractRoom>().lambda().in(YwContractRoom::getContractId, |
| | | listA.stream().map(i->i.getId()).collect(Collectors.toList()))); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(contractRoomList)){ |
| | | //更新房源数据为租赁中 |
| | | roomMapper.update(new UpdateWrapper<YwRoom>().lambda().set(YwRoom::getLeaseNowStatus,Constants.ONE) |
| | | .in(YwRoom::getId,contractRoomList.stream().map(i->i.getRoomId()).collect(Collectors.toList())) |
| | | ); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | |
| | | ||Constants.equalsInteger(bill.getPayStatus(),Constants.THREE)){ |
| | | if(bill.getStartDate().getTime()<=param.getBtDate().getTime()){ |
| | | canBills.add(bill); |
| | | canBillCount = canBillCount ++; |
| | | canBillCount = canBillCount + 1 ; |
| | | }else{ |
| | | //如果还没开始,账单直接关闭 |
| | | closeBills.add(bill); |
| | |
| | | noBills.add(bill); |
| | | }else{ |
| | | canBills.add(bill); |
| | | canBillCount = canBillCount ++; |
| | | canBillCount = canBillCount + 1 ; |
| | | } |
| | | }else if(Constants.equalsInteger(bill.getPayStatus(),Constants.TWO) ){ |
| | | canBills.add(bill); |
| | | canBillCount = canBillCount ++; |
| | | canBillCount = canBillCount + 1 ; |
| | | } |
| | | } |
| | | } |
| | |
| | | if(fee.compareTo(new BigDecimal(0))== 0){ |
| | | //如果费用正好,则修改账单信息为已结清 |
| | | b.setPayStatus(Constants.ONE); |
| | | canBillCount = canBillCount --; |
| | | }else if(fee.compareTo(new BigDecimal(0))> 0){ |
| | | canBillCount = canBillCount - 1 ; |
| | | }else if(fee.compareTo(new BigDecimal(0))< 0){ |
| | | //如果需要进行退款,更新账单信息为待退款 |
| | | b.setPayStatus(Constants.FOUR); |
| | | }else if(fee.compareTo(new BigDecimal(0)) < 0){ |
| | | //如果账单还有款待收,则保持状态不变 |
| | | }else if(fee.compareTo(new BigDecimal(0)) > 0){ |
| | | //如果账单还有款待收,则更新账单为待收款 |
| | | if(b.getPayStatus()==Constants.ZERO){ |
| | | b.setPayStatus(Constants.ZERO); |
| | | }else if(b.getPayStatus()!=Constants.TWO){ |
| | | b.setPayStatus(Constants.TWO); |
| | | } |
| | | } |
| | | b.setReceivableFee(editBill.getReceivableFee()); |
| | | } |
| | |
| | | //2025-1-23 13:56:53 加入 前端入参调整后的账单信息 |
| | | List<YwContractBill> ywContractBillList = new ArrayList<>(); |
| | | //查询租赁条款 |
| | | if(Constants.equalsInteger(model.getType(),Constants.ZERO ) |
| | | || Constants.equalsInteger(model.getType(),Constants.TWO)&& com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(details1)){ |
| | | if((Constants.equalsInteger(model.getType(),Constants.ZERO ) |
| | | || Constants.equalsInteger(model.getType(),Constants.TWO))&& com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(details1)){ |
| | | YwContractDetail ywContractDetail = details1.get(Constants.ZERO); |
| | | YwContractBill zlBill = new YwContractBill(); |
| | | BeanUtils.copyProperties(model.getZlBillDTO(),zlBill); |
| | |
| | | } |
| | | } |
| | | //查询物业账单 |
| | | if(Constants.equalsInteger(model.getType(),Constants.ZERO ) |
| | | || Constants.equalsInteger(model.getType(),Constants.TWO)&& com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(details2)){ |
| | | if((Constants.equalsInteger(model.getType(),Constants.ZERO ) |
| | | || Constants.equalsInteger(model.getType(),Constants.ONE))&& com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(details2)){ |
| | | YwContractDetail ywContractDetail = details2.get(Constants.ZERO); |
| | | YwContractBill wyBill = new YwContractBill(); |
| | | BeanUtils.copyProperties(model.getWyBillDTO(),wyBill); |
| | |
| | | .selectAs(YwCustomer::getName, YwContract::getRenterName) |
| | | .selectAs(YwProject::getName, YwContract::getProjectName) |
| | | .select("t3.realname", YwContract::getCreatorName) |
| | | .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) |
| | | .select("(select sum(r.RENT_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(SystemUser.class, SystemUser::getId, YwContract::getUserId) |
| | | .leftJoin(SystemUser.class, SystemUser::getId, YwContract::getCreator) |
| | |
| | | //查询账单集合 |
| | | model.setBillList(ywContractBillMapper.selectJoinList(YwContractBill.class,new MPJLambdaWrapper<YwContractBill>() |
| | | .selectAll(YwContractBill.class ) |
| | | //.select(" ( select ifnull(sum(case when yw.REVENUE_TYPE = 0 then yw.ACT_RECEIVABLE_FEE else -yw.ACT_RECEIVABLE_FEE end),0) from yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as actReceivableFee ") |
| | | .select(" ( select ifnull( sum( CASE WHEN t.bill_type = 0 and yw.REVENUE_TYPE = 0 THEN yw.ACT_RECEIVABLE_FEE when t.bill_type = 0 and yw.REVENUE_TYPE = 1 then -yw.ACT_RECEIVABLE_FEE when t.bill_type = 1 and yw.REVENUE_TYPE = 0 then -yw.ACT_RECEIVABLE_FEE else yw.ACT_RECEIVABLE_FEE END),0) from yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as actReceivableFee ") |
| | | .eq( YwContractBill::getContractId,model.getId()) |
| | | .eq(YwContractBill::getIsdeleted,Constants.ZERO) |
| | | .orderByAsc(YwContractBill::getSortnum,YwContractBill::getCreateDate))); |
| | | for (YwContractBill ywContractBill:model.getBillList()) { |
| | | ywContractBill.setNeedReceivableFee(ywContractBill.getReceivableFee()); |
| | | // ywContractBill.setNeedReceivableFee(ywContractBill.getReceivableFee().subtract(ywContractBill.getActReceivableFee())); |
| | | } |
| | | model.setCanBackRentBills(new ArrayList<>()); |
| | | long nowStart = Utils.Date.getStart(date).getTime(); |
| | |
| | | if (pageWrap.getModel().getCreateDate() != null) { |
| | | queryWrapper.ge(YwContract::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); |
| | | queryWrapper.le(YwContract::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); |
| | | } |
| | | if (pageWrap.getModel().getStatusList() != null) { |
| | | queryWrapper.in(YwContract::getStatus, pageWrap.getModel().getStatusList()); |
| | | } |
| | | if (pageWrap.getModel().getEditor() != null) { |
| | | queryWrapper.eq(YwContract::getEditor, pageWrap.getModel().getEditor()); |
| | |
| | | QueryWrapper<YwContract> wrapper = new QueryWrapper<>(ywContract); |
| | | return ywContractMapper.selectCount(wrapper); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 到期合同 未发起退租的进行数据调整 把合同下的房源释放 定时时间需要在每天晚上12点前 |
| | | */ |
| | | @Override |
| | | public void updRoomLeaseNowStatus(){ |
| | | |
| | | //定时处理合同已过期 |
| | | List<YwContract> ywContractList = ywContractMapper.selectList(new QueryWrapper<YwContract>().lambda() |
| | | .eq(YwContract::getIsdeleted,Constants.ZERO) |
| | | .in(YwContract::getStatus,Constants.ONE,Constants.ZERO) |
| | | .apply(" DATE(END_DATE) = CURRENT_DATE ") |
| | | ); |
| | | |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractList)){ |
| | | ywContractMapper.update(new UpdateWrapper<YwContract>() |
| | | .lambda() |
| | | .set(YwContract::getStatus,Constants.TWO) |
| | | .set(YwContract::getEditDate,DateUtil.getCurrDateTime()) |
| | | .in(YwContract::getId,ywContractList.stream().map(i->i.getId()).collect(Collectors.toList())) |
| | | ); |
| | | |
| | | |
| | | List<YwContractRoom> contractRoomList = ywContractRoomMapper.selectList(new QueryWrapper<YwContractRoom>().lambda().in(YwContractRoom::getContractId, |
| | | ywContractList.stream().map(i->i.getId()).collect(Collectors.toList()))); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(contractRoomList)){ |
| | | //更新房源数据为租赁中 |
| | | roomMapper.update(new UpdateWrapper<YwRoom>().lambda().set(YwRoom::getLeaseNowStatus,Constants.ZERO) |
| | | .in(YwRoom::getId,contractRoomList.stream().map(i->i.getRoomId()).collect(Collectors.toList())) |
| | | ); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 退租中/已退租合同 把到了退租日期时间的数据 进行房源释放 定时时间需要在每天晚上12点前 |
| | | */ |
| | | @Override |
| | | public void updRentContractStatus(){ |
| | | List<YwContract> ywContractList = ywContractMapper.selectList(new QueryWrapper<YwContract>().lambda() |
| | | .eq(YwContract::getIsdeleted,Constants.ZERO) |
| | | .in(YwContract::getStatus,Constants.THREE,Constants.FOUR) |
| | | .eq(YwContract::getBtDate,DateUtil.getCurrDate()) |
| | | ); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractList)){ |
| | | List<YwContractRoom> contractRoomList = ywContractRoomMapper.selectList(new QueryWrapper<YwContractRoom>().lambda().in(YwContractRoom::getContractId, |
| | | ywContractList.stream().map(i->i.getId()).collect(Collectors.toList()))); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(contractRoomList)){ |
| | | //更新房源数据为待租赁 |
| | | roomMapper.update(new UpdateWrapper<YwRoom>().lambda().set(YwRoom::getLeaseNowStatus,Constants.ZERO) |
| | | .in(YwRoom::getId,contractRoomList.stream().map(i->i.getRoomId()).collect(Collectors.toList())) |
| | | ); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |