package com.gkhy.assess.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.assess.common.exception.ApiException;
import com.gkhy.assess.system.domain.AssContract;
import com.gkhy.assess.system.enums.ReportProgressEnum;
import com.gkhy.assess.system.mapper.AssContractMapper;
import com.gkhy.assess.system.service.AssContractService;
import com.gkhy.assess.system.service.AssProjectService;
import com.gkhy.assess.system.utils.ShiroUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
*
* 合同管理表 服务实现类
*
*
* @author kzy
* @since 2023-12-12 10:46:54
*/
@Service
public class AssContractServiceImpl extends ServiceImpl implements AssContractService {
@Autowired
private AssProjectService projectService;
@Override
@Transactional(rollbackFor = RuntimeException.class)
public int addContract(AssContract contract) {
Long projectId=contract.getProjectId();
projectService.checkUserAllowed(projectId);
checkConstractCount(projectId);
//校验项目状态
projectService.checkReportProgress(projectId,ReportProgressEnum.RISK_ESTIMATE);
contract.setCreateBy(ShiroUtils.getSysUser().getUsername());
int row=baseMapper.insert(contract);
if(row>0) {
//更新项目状态
projectService.changeReportProgress(projectId,ReportProgressEnum.CONTRACT);
}
return row;
}
public void checkConstractCount(Long projectId){
//校验项目下风险评估数量
int contractCount= baseMapper.getCountByProjectId(projectId);
if(contractCount>0){
throw new ApiException("项目下已存在合同信息");
}
}
@Override
public int editContract(AssContract contract) {
projectService.checkUserAllowed(contract.getProjectId());
contract.setUpdateBy(ShiroUtils.getSysUser().getUsername());
int row=baseMapper.updateById(contract);
return row;
}
@Override
public AssContract getContractByProjectId(Long projectId) {
projectService.checkUserAllowed(projectId);
return baseMapper.getContractByProjectId(projectId);
}
@Override
public AssContract getContractById(Long contractId) {
AssContract contract= baseMapper.getContractById(contractId);
projectService.checkUserAllowed(contract.getProjectId());
return contract;
}
}