From 078ce36a32bc6679f32e42fd18a9cbb454ff7b7d Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期一, 10 二月 2025 11:38:13 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TContractServiceImpl.java | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 156 insertions(+), 2 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TContractServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TContractServiceImpl.java index 1cb2a34..458ec6c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TContractServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TContractServiceImpl.java @@ -1,14 +1,33 @@ package com.ruoyi.system.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.basic.PageInfo; +import com.ruoyi.common.constant.DictConstants; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.utils.DictUtils; +import com.ruoyi.common.utils.bean.BeanUtils; +import com.ruoyi.system.dto.SignContractDTO; +import com.ruoyi.system.dto.TerminateContractDTO; +import com.ruoyi.system.mapper.TBillMapper; +import com.ruoyi.system.mapper.TCheckAcceptRecordMapper; import com.ruoyi.system.mapper.TContractMapper; -import com.ruoyi.system.model.TContract; -import com.ruoyi.system.model.TTenant; +import com.ruoyi.system.mapper.THouseMapper; +import com.ruoyi.system.model.*; +import com.ruoyi.system.query.TContractAppletQuery; +import com.ruoyi.system.query.TContractBillQuery; import com.ruoyi.system.query.TContractQuery; +import com.ruoyi.system.service.TBillService; import com.ruoyi.system.service.TContractService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.system.vo.BillVO; +import com.ruoyi.system.vo.CheckAcceptRecordVO; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; +import java.util.Arrays; import java.util.List; /** @@ -21,13 +40,148 @@ */ @Service public class TContractServiceImpl extends ServiceImpl<TContractMapper, TContract> implements TContractService { + @Resource + private TCheckAcceptRecordMapper checkAcceptRecordMapper; + @Resource + private THouseMapper houseMapper; + @Resource + private TBillMapper billMapper; + @Resource + private TBillService billService; + @Resource + private TContractMapper contractMapper; @Override public PageInfo<TContract> contractList(TContractQuery query) { PageInfo<TContract> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<TContract> list = this.baseMapper.contractList(query,pageInfo); + for (TContract tContract : list) { + tContract.setPayType(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CONTRACT_PAY_TYPE,tContract.getPayType())); + tContract.setStatus(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CONTRACT_STATUS,tContract.getStatus())); + } pageInfo.setRecords(list); return pageInfo; } + + @Override + public PageInfo<TContract> contractAppletList(TContractAppletQuery query) { + PageInfo<TContract> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); + List<TContract> list = this.baseMapper.contractAppletList(query,pageInfo); + for (TContract tContract : list) { + tContract.setPayType(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CONTRACT_PAY_TYPE,tContract.getPayType())); + tContract.setStatus(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CONTRACT_STATUS,tContract.getStatus())); + } + pageInfo.setRecords(list); + return pageInfo; + } + + @Override + public PageInfo<BillVO> contractBillList(TContractBillQuery query) { + PageInfo<BillVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); + List<BillVO> list = this.baseMapper.contractBillList(query,pageInfo); + for (BillVO billVO : list) { + if (billVO.getPayFeesStatus().equals("4")){ + billVO.setPayFeesMoneyString((billVO.getPayFeesMoney().add(billVO.getPayableFeesPenalty()))+"【"+billVO.getPayFeesMoney()+"+"+billVO.getPayableFeesPenalty()+"】"); + } + billVO.setPayFeesStatus(DictUtils.getDictLabel(DictConstants.DICT_TYPE_PAY_FEES_STATUS,billVO.getPayFeesStatus())); + } + pageInfo.setRecords(list); + return pageInfo; + } + @Override + public void terminateContract(TerminateContractDTO dto) { + TContract contract = this.baseMapper.selectById(dto.getId()); + contract.setTerminateRemark(dto.getTerminateRemark()); + contract.setStatus("4"); + this.baseMapper.updateById(contract); + // 生成验收记录 + TCheckAcceptRecord tCheckAcceptRecord = new TCheckAcceptRecord(); + tCheckAcceptRecord.setContractId(dto.getId()); + tCheckAcceptRecord.setHouseId(contract.getHouseId()); + tCheckAcceptRecord.setLeaseReason("后台终止"); + tCheckAcceptRecord.setStatus("1"); + checkAcceptRecordMapper.insert(tCheckAcceptRecord); + // 将所有未缴费账单设置未已失效 + List<TBill> tBills = billMapper.selectList(new LambdaQueryWrapper<TBill>() + .in(TBill::getPayFeesStatus, Arrays.asList("1,4")) + .eq(TBill::getContractId, dto.getId())); + for (TBill tBill : tBills) { + tBill.setPayFeesStatus("5"); + } + billService.updateBatchById(tBills); + } + + + @Override + public CheckAcceptRecordVO getCheckByContractId(String id) { + CheckAcceptRecordVO checkAcceptRecordVO = new CheckAcceptRecordVO(); + TCheckAcceptRecord tCheckAcceptRecord = checkAcceptRecordMapper.selectOne(new LambdaQueryWrapper<TCheckAcceptRecord>() + .eq(TCheckAcceptRecord::getContractId, id)); + BeanUtils.copyProperties(tCheckAcceptRecord,checkAcceptRecordVO); + THouse tHouse = houseMapper.selectById(tCheckAcceptRecord.getHouseId()); + tHouse.setLeaseStatus(DictUtils.getDictLabel(DictConstants.DICT_TYPE_LEASE_STATUS,tHouse.getLeaseStatus())); + tHouse.setBusinessAttributes(DictUtils.getDictLabel(DictConstants.DICT_TYPE_BUSINESS_ATTRIBUTES,tHouse.getBusinessAttributes())); + checkAcceptRecordVO.setHouse(tHouse); + return checkAcceptRecordVO; + } + + @Override + public R signContract(SignContractDTO dto) { + TContract contract = contractMapper.selectById(dto.getId()); + if (contract==null)return R.fail("合同不存在"); + if (contract.getStatus().equals("4"))return R.fail("该合同已签订"); + contract.setSignature(dto.getSignature()); + contract.setStatus("2"); + contractMapper.updateById(contract); + // 用户签订合同后 生成第一批账单包含租金账单和押金账单 后续账单通过定时任务生成 + TBill rent = new TBill(); + rent.setContractId(contract.getId()); + // 应缴费租金 + BigDecimal payableFeesMoney = new BigDecimal("0"); + LocalDateTime startTime = contract.getStartTime(); + LocalDateTime endTime = contract.getEndTime(); +// // 计算相差多少天 +// long days = ChronoUnit.DAYS.between(startTime, endTime); +// // 计算相差多少个月 +// long months = ChronoUnit.MONTHS.between(startTime, endTime); +// if (months<=31){ +// // 小于等于一个月 合计租金就是首笔账单金额 +// payableFeesMoney = contract.getTotalRent(); +// }else{ +// switch (contract.getPayType()){ +// case "1": +// break; +// case "2": +// break; +// case "3": +// break; +// } +// } +// +// rent.setPayableFeesMoney(payableFeesMoney); +// rent.setPayableFeesTime(contract.getFirstPayTime()); +// rent.setPayFeesStatus("1"); +// rent.setBillType("1"); +// +// TBill deposit = new TBill(); +// deposit.setContractId(contract.getId()); +// deposit.setPayableFeesMoney(contract.getDeposit()); +// deposit.setPayableFeesTime(contract.getFirstPayTime()); +// deposit.setPayFeesStatus("1"); +// deposit.setBillType("2"); + return R.ok(); + } + + @Override + public void export(TContractQuery query) { + + } + + @Override + public List<TContract> contractExportList(TContractQuery query) { + List<TContract> list = this.baseMapper.contractExportList(query); + + return list; + } } -- Gitblit v1.7.1