package com.gkhy.assess.system.service.impl;
import com.gkhy.assess.common.exception.ApiException;
import com.gkhy.assess.system.domain.AssProject;
import com.gkhy.assess.system.domain.AssRiskEstimate;
import com.gkhy.assess.system.enums.ReportProgressEnum;
import com.gkhy.assess.system.mapper.AssRiskEstimateMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.assess.system.domain.SysUser;
import com.gkhy.assess.system.service.AssProjectService;
import com.gkhy.assess.system.service.AssRiskEstimateService;
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 AssRiskEstimateServiceImpl extends ServiceImpl implements AssRiskEstimateService {
@Autowired
private AssProjectService projectService;
@Override
@Transactional(rollbackFor = RuntimeException.class)
public Long addRiskEstimate(AssRiskEstimate riskEstimate) {
SysUser user= ShiroUtils.getSysUser();
if(user.getAgencyId()==null){
throw new ApiException("无权操作,只有机构用户有权操作");
}
AssProject project=riskEstimate.getProject();
project.setAgencyId(user.getAgencyId());
projectService.addProject(project);
Long projectId=project.getId();
riskEstimate.setProjectId(projectId);
riskEstimate.setCreateBy(ShiroUtils.getSysUser().getUsername());
int row=baseMapper.insert(riskEstimate);
if(row>0){
//更新项目状态
projectService.changeReportProgress(projectId,ReportProgressEnum.RISK_ESTIMATE);
}
return projectId;
}
public void checkRiskEstimateCount(Long projectId){
//校验项目下风险评估数量
int contractCount= baseMapper.getCountByProjectId(projectId);
if(contractCount>0){
throw new ApiException("项目下已存在风险评估信息");
}
}
@Override
@Transactional(rollbackFor = RuntimeException.class)
public int editRiskEstimate(AssRiskEstimate riskEstimate) {
AssProject project=riskEstimate.getProject();
projectService.editProject(project);
Long riskId=riskEstimate.getId();
if(riskId==null){
throw new ApiException("项目风险分析id不能为空");
}
riskEstimate.setUpdateBy(ShiroUtils.getSysUser().getUsername());
int row =baseMapper.updateById(riskEstimate);
return row;
}
@Override
public AssRiskEstimate getRiskEstimateByProjectId(Long projectId) {
projectService.checkUserAllowed(projectId);
AssRiskEstimate riskEstimate= baseMapper.getRiskEstimateByProjectId(projectId);
if(riskEstimate==null){
throw new ApiException("项目风险分析不存在");
}
riskEstimate.setProject(projectService.getProjectById(riskEstimate.getProjectId()));
return riskEstimate;
}
@Override
public AssRiskEstimate getRiskEstimateById(Long riskId) {
return baseMapper.getRiskEstimateById(riskId);
}
}