From 0a99001be87811ebb884b8f3f491f48054a22330 Mon Sep 17 00:00:00 2001 From: renkang <8417338+k94314517@user.noreply.gitee.com> Date: 星期二, 13 五月 2025 17:29:00 +0800 Subject: [PATCH] 客户资料 巡检任务业务 --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java | 153 +++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 124 insertions(+), 29 deletions(-) diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java index 49ecb0b..383ca4c 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java @@ -84,7 +84,7 @@ 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); @@ -112,6 +112,12 @@ 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); } @@ -341,6 +347,13 @@ @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()); //澶勭悊 @@ -364,30 +377,47 @@ 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(){ - //瀹氭椂澶勭悊鍚堝悓鎵ц涓� - ywContractMapper.update(new UpdateWrapper<YwContract>() - .lambda() - .set(YwContract::getStatus,Constants.ONE) - .set(YwContract::getEditDate,DateUtil.getCurrDateTime()) + + 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() ") ); - //瀹氭椂澶勭悊鍚堝悓宸茶繃鏈� - 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 ") - ); + 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()) + .in(YwContract::getId,listA.stream().map(i->i.getId()).collect(Collectors.toList())) + ); + + 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())) + ); + } + } } @@ -420,7 +450,7 @@ ||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); @@ -432,11 +462,11 @@ 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 ; } } } @@ -464,12 +494,17 @@ if(fee.compareTo(new BigDecimal(0))== 0){ //濡傛灉璐圭敤姝eソ锛屽垯淇敼璐﹀崟淇℃伅涓哄凡缁撴竻 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()); } @@ -654,8 +689,8 @@ //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); @@ -691,8 +726,8 @@ } } //鏌ヨ鐗╀笟璐﹀崟 - 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); @@ -1396,7 +1431,7 @@ .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) @@ -1457,14 +1492,12 @@ //鏌ヨ璐﹀崟闆嗗悎 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(); @@ -1574,6 +1607,9 @@ 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()); @@ -1712,4 +1748,63 @@ 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())) + ); + } + } + } + + } -- Gitblit v1.9.3