package com.ruoyi.system.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.domain.model.LoginUserApplet;
|
import com.ruoyi.common.core.exception.ServiceException;
|
import com.ruoyi.common.enums.ProcessCategoryEnum;
|
import com.ruoyi.common.utils.SecurityUtils;
|
import com.ruoyi.system.bo.ProcessStartBO;
|
import com.ruoyi.system.mapper.TRentalReturnRecordMapper;
|
import com.ruoyi.system.model.TContract;
|
import com.ruoyi.system.model.THouse;
|
import com.ruoyi.system.model.TRentalReturnRecord;
|
import com.ruoyi.system.query.RentalReturnAuditQuery;
|
import com.ruoyi.system.query.RentalReturnRecordQuery;
|
import com.ruoyi.system.service.ITRentalReturnRecordService;
|
import com.ruoyi.system.service.StateProcessTemplateService;
|
import com.ruoyi.system.service.TContractService;
|
import com.ruoyi.system.service.THouseService;
|
import com.ruoyi.system.vo.RentalRetureApplyVO;
|
import com.ruoyi.system.vo.RentalReturnRecordVO;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.context.annotation.Lazy;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.time.LocalDateTime;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
@Service
|
@RequiredArgsConstructor(onConstructor_ = @__(@Lazy))
|
public class TRentalReturnRecordServiceImpl extends ServiceImpl<TRentalReturnRecordMapper, TRentalReturnRecord>
|
implements ITRentalReturnRecordService {
|
private final TContractService contractService;
|
private final StateProcessTemplateService stateProcessTemplateService;
|
private final THouseService houseService;
|
|
@Override
|
public IPage<RentalReturnRecordVO> queryRentalReturnRecordList(Page<RentalReturnRecordVO> page, RentalReturnRecordQuery query) {
|
String businessDeptId = SecurityUtils.getBusinessDeptId();
|
query.setBusinessDeptId(businessDeptId);
|
query.setIsAdminDelete(true);
|
return this.baseMapper.queryRentalReturnRecordList(page, query);
|
}
|
|
@Override
|
public RentalReturnRecordVO queryRentalReturnRecordById(String id) {
|
return this.baseMapper.queryRentalReturnRecordById(id);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void apply(RentalRetureApplyVO rentalReture,String tenantId) {
|
TContract contract = contractService.getById(rentalReture.getContractId());
|
if (contract == null) {
|
throw new ServiceException("该房屋暂无合同");
|
}
|
|
TRentalReturnRecord tRentalReturnRecord = new TRentalReturnRecord();
|
tRentalReturnRecord.setTenantId(tenantId);
|
tRentalReturnRecord.setHouseId(contract.getHouseId());
|
tRentalReturnRecord.setContractId(contract.getId());
|
tRentalReturnRecord.setReasonForReturn(rentalReture.getReasonForReturn());
|
tRentalReturnRecord.setImages(rentalReture.getImages());
|
tRentalReturnRecord.setAuditStatus(1);
|
save(tRentalReturnRecord);
|
boolean update = houseService.update(new LambdaUpdateWrapper<THouse>()
|
.set(THouse::getRentalReturnStatus, "2")
|
.eq(THouse::getId, contract.getHouseId()));
|
if (!update){
|
throw new ServiceException("更新房屋状态失败");
|
}
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void audit(RentalReturnAuditQuery returnAuditQuery, Long userId,String userName) {
|
TRentalReturnRecord record = getById(returnAuditQuery.getId());
|
if (record == null){
|
throw new ServiceException("申请记录不存在");
|
}
|
if (record.getAuditStatus() != 1){
|
throw new ServiceException("申请记录已审核");
|
}
|
|
THouse house = houseService.getById(record.getHouseId());
|
if (returnAuditQuery.getAuditResult() == 2){
|
TContract contract = contractService.getById(record.getContractId());
|
contract.setTerminateRemark(returnAuditQuery.getAuditOpinion());
|
contract.setTerminateTime(record.getCreateTime());
|
contractService.updateById(contract);
|
// 进入合同提前终止审批流程
|
ProcessStartBO processStartBO = new ProcessStartBO();
|
processStartBO.setCategory(ProcessCategoryEnum.CATEGORY3.getValue().toString());
|
processStartBO.setModuleName("合同提前终止审批");
|
processStartBO.setName(contract.getContractName());
|
processStartBO.setRemark("");
|
Map<String, Object> variable = new HashMap<>();
|
variable.put("projectId", record.getContractId());
|
processStartBO.setVariable(variable);
|
//开启工作流程
|
stateProcessTemplateService.start(processStartBO);
|
house.setRentalReturnStatus("3");
|
houseService.updateById(house);
|
}else {
|
house.setRentalReturnStatus("1");
|
houseService.updateById(house);
|
}
|
record.setAuditTime(LocalDateTime.now());
|
record.setAuditStatus(returnAuditQuery.getAuditResult());
|
record.setAuditOpinion(returnAuditQuery.getAuditOpinion());
|
record.setAuditUserId(userId);
|
record.setUpdateBy(userName);
|
record.setUpdateTime(LocalDateTime.now());
|
updateById(record);
|
}
|
}
|