package com.gkhy.labRiskManage.domain.riskReport.service.impl;
|
|
|
import com.gkhy.labRiskManage.api.controller.riskReport.dto.repDto.RiskAssessPlanEvaluateDeleteReqBO;
|
import com.gkhy.labRiskManage.commons.enums.MethodEnum;
|
import com.gkhy.labRiskManage.commons.enums.ResultCode;
|
import com.gkhy.labRiskManage.commons.enums.StatusEnum;
|
import com.gkhy.labRiskManage.commons.exception.BusinessException;
|
import com.gkhy.labRiskManage.commons.utils.BeanCopyUtils;
|
import com.gkhy.labRiskManage.domain.riskReport.entity.RiskAssessPlanEvaluateRs;
|
import com.gkhy.labRiskManage.domain.riskReport.model.bo.AssessRsInsertBO;
|
import com.gkhy.labRiskManage.domain.riskReport.model.dto.EvaluateInsertDTO;
|
import com.gkhy.labRiskManage.domain.riskReport.model.dto.EvaluateMethodDeleteDTO;
|
import com.gkhy.labRiskManage.domain.riskReport.model.dto.RsInsertDTO;
|
import com.gkhy.labRiskManage.domain.riskReport.model.dto.RsQueryDTO;
|
import com.gkhy.labRiskManage.domain.riskReport.repository.jpa.RiskAssessPlanEvaluateRsRepository;
|
import com.gkhy.labRiskManage.domain.riskReport.service.RiskAssessPlanEvaluateRsService;
|
import com.gkhy.labRiskManage.domain.riskReport.utils.IdentificationMethodCheck;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.ObjectUtils;
|
|
import java.math.BigDecimal;
|
import java.time.LocalDateTime;
|
import java.util.Collections;
|
import java.util.List;
|
|
/**
|
* 评价方法RS
|
*/
|
@Service
|
public class RiskAssessPlanEvaluateRsServiceImpl implements RiskAssessPlanEvaluateRsService {
|
|
@Autowired
|
private RiskAssessPlanEvaluateRsRepository rsRepository;
|
|
/**
|
* 评价方法RS - 插入
|
*/
|
@Override
|
public RsInsertDTO InsertRs(Long currentUserId, AssessRsInsertBO rsInsertBO) {
|
|
EvaluateInsertDTO insertDTO = new EvaluateInsertDTO();
|
insertDTO.setResult(1);
|
IdentificationMethodCheck methodCheck = new IdentificationMethodCheck();
|
|
//校验辨识方法是否存在
|
int result = methodCheck.identificationMethodCheck(rsInsertBO.getIdentificationId(), rsInsertBO.getIdentificationMethod());
|
if (result == 0){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "辨识方法不存在");
|
}
|
if (ObjectUtils.isEmpty(rsInsertBO.getAssessPlanId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价的计划不能为空");
|
}
|
if (ObjectUtils.isEmpty(rsInsertBO.getRsR())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "RS_R的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(rsInsertBO.getRsS())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "RS_S的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(rsInsertBO.getRiskValue())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(rsInsertBO.getOriginalRsR())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有RS_R的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(rsInsertBO.getOriginalRsS())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有RS_S的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(rsInsertBO.getOriginalRiskValue())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有风险数值不能为空");
|
}
|
RiskAssessPlanEvaluateRs rsByIdentification = rsRepository.getRsByIdentification(rsInsertBO.getIdentificationId(), rsInsertBO.getIdentificationMethod());
|
if (!ObjectUtils.isEmpty(rsByIdentification)){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "该辨识已经被评价,无需重复操作");
|
}
|
if (ObjectUtils.isEmpty(rsInsertBO.getEvaluateDesc())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价专家意见不能为空");
|
}
|
BigDecimal value = rsInsertBO.getRsR().multiply(rsInsertBO.getRsS());
|
//BigDecimal类型比较,结果为0是相等
|
if (value.compareTo(rsInsertBO.getRiskValue()) != 0){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值计算有误,无法保存");
|
}
|
if (ObjectUtils.isEmpty(rsInsertBO.getSafeRiskAnalysis())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "安全风险分析内容不能为空");
|
}
|
//设置参数
|
LocalDateTime date = LocalDateTime.now();
|
RiskAssessPlanEvaluateRs rs = new RiskAssessPlanEvaluateRs();
|
if (value.compareTo(new BigDecimal(10)) < 0){
|
rs.setRiskLevel(MethodEnum.RISK_LEVEL_1.getCode());
|
rs.setRiskLevelValue(MethodEnum.RISK_LEVEL_1.getCode());
|
rs.setRiskColor(MethodEnum.RISK_LEVEL_1.getCode());
|
}else if (value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_1.getCode())) > 0 && value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_2.getCode())) < 0){
|
rs.setRiskLevel(MethodEnum.RISK_LEVEL_2.getCode());
|
rs.setRiskLevelValue(MethodEnum.RISK_LEVEL_2.getCode());
|
rs.setRiskColor(MethodEnum.RISK_LEVEL_2.getCode());
|
}else if (value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_2.getCode())) > 0 && value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_3.getCode())) < 0){
|
rs.setRiskLevel(MethodEnum.RISK_LEVEL_3.getCode());
|
rs.setRiskLevelValue(MethodEnum.RISK_LEVEL_3.getCode());
|
rs.setRiskColor(MethodEnum.RISK_LEVEL_3.getCode());
|
}else if (value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_3.getCode())) > 0){
|
rs.setRiskLevel(MethodEnum.RISK_LEVEL_4.getCode());
|
rs.setRiskLevelValue(MethodEnum.RISK_LEVEL_4.getCode());
|
rs.setRiskColor(MethodEnum.RISK_LEVEL_4.getCode());
|
}
|
rs.setIdentificationId(rsInsertBO.getIdentificationId());
|
rs.setIdentificationMethod(rsInsertBO.getIdentificationMethod());
|
rs.setAssessPlanId(rs.getAssessPlanId());
|
rs.setRsR(rsInsertBO.getRsR());
|
rs.setRsS(rsInsertBO.getRsS());
|
rs.setDeleteStatus(StatusEnum.DELETE_NOT.getCode().byteValue());
|
rs.setCreateTime(date);
|
rs.setUpdateTime(date);
|
rs.setRiskValue(rsInsertBO.getRiskValue());
|
rs.setManageLevel(rsInsertBO.getManageLevel());
|
rs.setEvaluateDesc(rsInsertBO.getEvaluateDesc());
|
rs.setStatus((byte) 1);
|
|
rs.setEducationMeasure(rsInsertBO.getEducationMeasure());
|
rs.setTechnologyMeasure(rsInsertBO.getTechnologyMeasure());
|
rs.setManageMeasure(rsInsertBO.getManageMeasure());
|
rs.setPersonalProtectionMeasure(rsInsertBO.getPersonalProtectionMeasure());
|
rs.setEmergencyMeasure(rsInsertBO.getEmergencyMeasure());
|
|
rs.setRsR(rsInsertBO.getRsR());
|
rs.setRsS(rsInsertBO.getRsS());
|
rs.setOriginalRiskValue(rsInsertBO.getOriginalRiskValue());
|
rs.setOriginalRiskLevelValue(rsInsertBO.getOriginalRiskLevelValue());
|
rs.setOriginalRiskLevel(rsInsertBO.getOriginalRiskLevel());
|
rs.setOriginalRiskColor(rsInsertBO.getOriginalRiskColor());
|
rs.setOriginalManageLevel(rsInsertBO.getOriginalManageLevel());
|
rs.setAdviseTechnologyMeasure(rsInsertBO.getAdviseTechnologyMeasure());
|
rs.setAdviseManageMeasure(rsInsertBO.getAdviseManageMeasure());
|
rs.setAdviseEmergencyMeasure(rsInsertBO.getAdviseEmergencyMeasure());
|
rs.setAdviseEducationMeasure(rsInsertBO.getAdviseEducationMeasure());
|
rs.setAdvisePersonalProtectionMeasure(rsInsertBO.getAdvisePersonalProtectionMeasure());
|
rs.setSafeRiskAnalysis(rsInsertBO.getSafeRiskAnalysis());
|
|
RiskAssessPlanEvaluateRs insertResult = rsRepository.save(rs);
|
|
return BeanCopyUtils.copyBean(insertResult, RsInsertDTO.class);
|
}
|
|
/**
|
* 评价方法RS - 修改
|
*/
|
@Override
|
public RsInsertDTO updateRs(Long currentUserId, AssessRsInsertBO rsInsertBO) {
|
|
EvaluateInsertDTO insertDTO = new EvaluateInsertDTO();
|
insertDTO.setResult(1);
|
|
if (ObjectUtils.isEmpty(rsInsertBO.getId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要修改的评价内容不能为空");
|
}
|
RiskAssessPlanEvaluateRs rsById = rsRepository.getRsById(rsInsertBO.getId());
|
if (ObjectUtils.isEmpty(rsById)){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要修改的评价不存在");
|
}
|
if (ObjectUtils.isEmpty(rsInsertBO.getAssessPlanId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价的计划不能为空");
|
}
|
if (ObjectUtils.isEmpty(rsInsertBO.getRsR())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "RS_R的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(rsInsertBO.getRsS())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "RS_S的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(rsInsertBO.getRiskValue())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(rsInsertBO.getOriginalRsR())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有RS_R的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(rsInsertBO.getOriginalRsS())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有RS_S的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(rsInsertBO.getOriginalRiskValue())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有风险数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(rsInsertBO.getEvaluateDesc())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价专家意见不能为空");
|
}
|
BigDecimal value = rsInsertBO.getRsR().multiply(rsInsertBO.getRsS());
|
//BigDecimal类型比较,结果为0是相等
|
if (value.compareTo(rsInsertBO.getRiskValue()) != 0){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值计算有误,无法保存");
|
}
|
if (ObjectUtils.isEmpty(rsInsertBO.getSafeRiskAnalysis())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "安全风险分析内容不能为空");
|
}
|
|
//设置参数
|
LocalDateTime date = LocalDateTime.now();
|
RiskAssessPlanEvaluateRs rs = BeanCopyUtils.copyBean(rsById, RiskAssessPlanEvaluateRs.class);
|
if (value.compareTo(new BigDecimal(10)) < 0){
|
rs.setRiskLevel(MethodEnum.RISK_LEVEL_1.getCode());
|
rs.setRiskLevelValue(MethodEnum.RISK_LEVEL_1.getCode());
|
rs.setRiskColor(MethodEnum.RISK_LEVEL_1.getCode());
|
}else if (value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_1.getCode())) > 0 && value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_2.getCode())) < 0){
|
rs.setRiskLevel(MethodEnum.RISK_LEVEL_2.getCode());
|
rs.setRiskLevelValue(MethodEnum.RISK_LEVEL_2.getCode());
|
rs.setRiskColor(MethodEnum.RISK_LEVEL_2.getCode());
|
}else if (value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_2.getCode())) > 0 && value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_3.getCode())) < 0){
|
rs.setRiskLevel(MethodEnum.RISK_LEVEL_3.getCode());
|
rs.setRiskLevelValue(MethodEnum.RISK_LEVEL_3.getCode());
|
rs.setRiskColor(MethodEnum.RISK_LEVEL_3.getCode());
|
}else if (value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_3.getCode())) > 0){
|
rs.setRiskLevel(MethodEnum.RISK_LEVEL_4.getCode());
|
rs.setRiskLevelValue(MethodEnum.RISK_LEVEL_4.getCode());
|
rs.setRiskColor(MethodEnum.RISK_LEVEL_4.getCode());
|
}
|
rs.setRsR(rsInsertBO.getRsR());
|
rs.setRsS(rsInsertBO.getRsS());
|
rs.setUpdateTime(date);
|
rs.setRiskValue(rsInsertBO.getRiskValue());
|
rs.setManageLevel(rsInsertBO.getManageLevel());
|
rs.setStatus(StatusEnum.REPORT_NOT_START.getCode().byteValue());
|
rs.setEvaluateDesc(rsInsertBO.getEvaluateDesc());
|
|
rs.setEducationMeasure(rsInsertBO.getEducationMeasure());
|
rs.setTechnologyMeasure(rsInsertBO.getTechnologyMeasure());
|
rs.setManageMeasure(rsInsertBO.getManageMeasure());
|
rs.setPersonalProtectionMeasure(rsInsertBO.getPersonalProtectionMeasure());
|
rs.setEmergencyMeasure(rsInsertBO.getEmergencyMeasure());
|
|
rs.setRsR(rsInsertBO.getRsR());
|
rs.setRsS(rsInsertBO.getRsS());
|
rs.setOriginalRiskValue(rsInsertBO.getOriginalRiskValue());
|
rs.setOriginalRiskLevelValue(rsInsertBO.getOriginalRiskLevelValue());
|
rs.setOriginalRiskLevel(rsInsertBO.getOriginalRiskLevel());
|
rs.setOriginalRiskColor(rsInsertBO.getOriginalRiskColor());
|
rs.setOriginalManageLevel(rsInsertBO.getOriginalManageLevel());
|
rs.setAdviseTechnologyMeasure(rsInsertBO.getAdviseTechnologyMeasure());
|
rs.setAdviseManageMeasure(rsInsertBO.getAdviseManageMeasure());
|
rs.setAdviseEmergencyMeasure(rsInsertBO.getAdviseEmergencyMeasure());
|
rs.setAdviseEducationMeasure(rsInsertBO.getAdviseEducationMeasure());
|
rs.setAdvisePersonalProtectionMeasure(rsInsertBO.getAdvisePersonalProtectionMeasure());
|
rs.setSafeRiskAnalysis(rsInsertBO.getSafeRiskAnalysis());
|
|
RiskAssessPlanEvaluateRs insertResult = rsRepository.save(rs);
|
|
return BeanCopyUtils.copyBean(insertResult, RsInsertDTO.class);
|
}
|
|
/**
|
* 评价方法RS - 查询
|
*/
|
@Override
|
public RsQueryDTO getRsByPlanId(Long id) {
|
|
RiskAssessPlanEvaluateRs rsById = rsRepository.getRsById(id);
|
if (ObjectUtils.isEmpty(rsById)){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "rs评价方法不存在或已被删除");
|
}
|
return BeanCopyUtils.copyBean(rsById, RsQueryDTO.class);
|
}
|
|
/**
|
* 评价方法RS - 删除
|
*/
|
@Override
|
public EvaluateMethodDeleteDTO deleteRsByPlanId(Long currentUserId, RiskAssessPlanEvaluateDeleteReqBO deleteReqBO) {
|
|
if (ObjectUtils.isEmpty(deleteReqBO.getRsId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要删除的评价项目不能为空");
|
}
|
RiskAssessPlanEvaluateRs rsById = rsRepository.getRsById(deleteReqBO.getRsId());
|
if (ObjectUtils.isEmpty(rsById)){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要删除的评价项目为空,或已被删除");
|
}
|
if (!rsById.getAssessPlanId().equals(deleteReqBO.getId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评估计划与评价项不匹配,无法删除");
|
}
|
|
EvaluateMethodDeleteDTO deleteDTO = new EvaluateMethodDeleteDTO();
|
|
rsById.setDeleteStatus(StatusEnum.DELETED.getCode().byteValue());
|
LocalDateTime date = LocalDateTime.now();
|
rsById.setUpdateTime(date);
|
|
RiskAssessPlanEvaluateRs deleteResult = rsRepository.save(rsById);
|
if (ObjectUtils.isEmpty(deleteResult)){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价方法不存在或已被删除");
|
}
|
deleteDTO.setResult(StatusEnum.DELETED.getCode().byteValue());
|
|
return deleteDTO;
|
}
|
|
/**
|
* 评价方法RS - list
|
*/
|
@Override
|
public List<RsQueryDTO> listRsByPlanId(Long id) {
|
List<RiskAssessPlanEvaluateRs> rsList = rsRepository.listRsByPlanId(id);
|
return BeanCopyUtils.copyBeanList(rsList, RsQueryDTO.class);
|
}
|
|
@Override
|
public List<RiskAssessPlanEvaluateRs> getRsByIds(List<Long> assessPlanIds) {
|
return rsRepository.getRsByIds(assessPlanIds);
|
}
|
|
@Override
|
public int deleteRsByAssessPlanId(Long id) {
|
|
List<RiskAssessPlanEvaluateRs> rsList = rsRepository.geByAssessPlanId(id);
|
if (rsList.size() < 1){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价方法不存在或已被删除");
|
}
|
int i = 1;
|
for (RiskAssessPlanEvaluateRs rs : rsList) {
|
rs.setDeleteStatus(StatusEnum.DELETED.getCode().byteValue());
|
RiskAssessPlanEvaluateRs save = rsRepository.save(rs);
|
if (ObjectUtils.isEmpty(save)){
|
i = 1;
|
}
|
}
|
return i;
|
}
|
|
@Override
|
public int deleteRsByPlan(Long id) {
|
List<RiskAssessPlanEvaluateRs> rsListByPlanId = rsRepository.getRsByPlanId(id);
|
if (ObjectUtils.isEmpty(rsListByPlanId)){
|
return StatusEnum.SUCCESS.getCode();
|
}
|
for (RiskAssessPlanEvaluateRs riskAssessPlanEvaluateRs : rsListByPlanId) {
|
riskAssessPlanEvaluateRs.setDeleteStatus(StatusEnum.DELETED.getCode().byteValue());
|
}
|
List<RiskAssessPlanEvaluateRs> result = rsRepository.saveAll(rsListByPlanId);
|
if (result.size() != rsListByPlanId.size()){
|
return StatusEnum.FAIL.getCode();
|
}
|
return StatusEnum.SUCCESS.getCode();
|
}
|
|
@Override
|
public RiskAssessPlanEvaluateRs getRsByIdentificationId(Long id, Byte identificationMethod) {
|
return rsRepository.getRsByIdentification(id, identificationMethod);
|
}
|
|
@Override
|
public List<RiskAssessPlanEvaluateRs> listRsByParam(Long assessPlanId, Long identificationId, Byte identificationMethod) {
|
return rsRepository.listRsByParam(assessPlanId, identificationId, identificationMethod);
|
}
|
}
|