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.RiskAssessPlanEvaluateLec;
|
import com.gkhy.labRiskManage.domain.riskReport.entity.RiskAssessPlanEvaluateLs;
|
import com.gkhy.labRiskManage.domain.riskReport.model.bo.AssessLSInsertBO;
|
import com.gkhy.labRiskManage.domain.riskReport.model.dto.*;
|
import com.gkhy.labRiskManage.domain.riskReport.repository.jpa.RiskAssessPlanEvaluateLsRepository;
|
import com.gkhy.labRiskManage.domain.riskReport.service.RiskAssessPlanEvaluateLsService;
|
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;
|
|
/**
|
* 评价方法LS
|
*/
|
@Service
|
public class RiskAssessPlanEvaluateLsServiceImpl implements RiskAssessPlanEvaluateLsService {
|
|
@Autowired
|
private RiskAssessPlanEvaluateLsRepository lsRepository;
|
|
/**
|
* 评价方法LS - 插入
|
*/
|
@Override
|
public LsInsertDTO insertLs(Long currentUserId, AssessLSInsertBO lsInsertBO) {
|
|
EvaluateInsertDTO insertDTO = new EvaluateInsertDTO();
|
insertDTO.setResult(1);
|
IdentificationMethodCheck methodCheck = new IdentificationMethodCheck();
|
|
//校验辨识方法是否存在
|
int result = methodCheck.identificationMethodCheck(lsInsertBO.getIdentificationId(), lsInsertBO.getIdentificationMethod());
|
if (result == 0){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "辨识方法不存在");
|
}
|
if (ObjectUtils.isEmpty(lsInsertBO.getAssessPlanId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价的计划不能为空");
|
}
|
if (ObjectUtils.isEmpty(lsInsertBO.getLsL())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "LS_L的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(lsInsertBO.getLsS())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "LS_S的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(lsInsertBO.getRiskValue())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(lsInsertBO.getOriginalLsL())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有LS_L的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(lsInsertBO.getOriginalLsS())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有LS_S的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(lsInsertBO.getOriginalRiskValue())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有风险数值不能为空");
|
}
|
RiskAssessPlanEvaluateLs lsByIdentification = lsRepository.getLsByIdentification(lsInsertBO.getIdentificationId(), lsInsertBO.getIdentificationMethod());
|
if (!ObjectUtils.isEmpty(lsByIdentification)){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "该辨识已经被评价,无需重复操作");
|
}
|
if (ObjectUtils.isEmpty(lsInsertBO.getEvaluateDesc())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价专家意见不能为空");
|
}
|
BigDecimal value = lsInsertBO.getLsL().multiply(lsInsertBO.getLsS());
|
//BigDecimal类型比较,结果为0是相等
|
if (value.compareTo(lsInsertBO.getRiskValue()) != 0){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值计算有误,无法保存");
|
}
|
if (ObjectUtils.isEmpty(lsInsertBO.getSafeRiskAnalysis())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "安全风险分析内容不能为空");
|
}
|
|
RiskAssessPlanEvaluateLs ls = new RiskAssessPlanEvaluateLs();
|
//设置参数
|
if (value.compareTo(new BigDecimal(10)) < 0){
|
ls.setRiskLevel(MethodEnum.RISK_LEVEL_1.getCode());
|
ls.setRiskLevelValue(MethodEnum.RISK_LEVEL_1.getCode());
|
ls.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){
|
ls.setRiskLevel(MethodEnum.RISK_LEVEL_2.getCode());
|
ls.setRiskLevelValue(MethodEnum.RISK_LEVEL_2.getCode());
|
ls.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){
|
ls.setRiskLevel(MethodEnum.RISK_LEVEL_3.getCode());
|
ls.setRiskLevelValue(MethodEnum.RISK_LEVEL_3.getCode());
|
ls.setRiskColor(MethodEnum.RISK_LEVEL_3.getCode());
|
}else if (value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_3.getCode())) > 0){
|
ls.setRiskLevel(MethodEnum.RISK_LEVEL_4.getCode());
|
ls.setRiskLevelValue(MethodEnum.RISK_LEVEL_4.getCode());
|
ls.setRiskColor(MethodEnum.RISK_LEVEL_4.getCode());
|
}
|
LocalDateTime date = LocalDateTime.now();
|
ls.setIdentificationId(lsInsertBO.getIdentificationId());
|
ls.setIdentificationMethod(lsInsertBO.getIdentificationMethod());
|
ls.setAssessPlanId(lsInsertBO.getAssessPlanId());
|
ls.setLsL(lsInsertBO.getLsL());
|
ls.setLsS(lsInsertBO.getLsS());
|
ls.setDeleteStatus(StatusEnum.DELETE_NOT.getCode().byteValue());
|
ls.setCreateTime(date);
|
ls.setUpdateTime(date);
|
ls.setRiskValue(lsInsertBO.getRiskValue());
|
ls.setManageLevel(lsInsertBO.getManageLevel());
|
ls.setStatus((byte) 1);
|
ls.setEvaluateDesc(lsInsertBO.getEvaluateDesc());
|
|
ls.setEducationMeasure(lsInsertBO.getEducationMeasure());
|
ls.setTechnologyMeasure(lsInsertBO.getTechnologyMeasure());
|
ls.setManageMeasure(lsInsertBO.getManageMeasure());
|
ls.setPersonalProtectionMeasure(lsInsertBO.getPersonalProtectionMeasure());
|
ls.setEmergencyMeasure(lsInsertBO.getEmergencyMeasure());
|
|
ls.setOriginalLsL(lsInsertBO.getOriginalLsL());
|
ls.setOriginalLsS(lsInsertBO.getOriginalLsS());
|
ls.setOriginalRiskValue(lsInsertBO.getOriginalRiskValue());
|
ls.setOriginalRiskLevelValue(lsInsertBO.getOriginalRiskLevelValue());
|
ls.setOriginalRiskLevel(lsInsertBO.getOriginalRiskLevel());
|
ls.setOriginalRiskColor(lsInsertBO.getOriginalRiskColor());
|
ls.setOriginalManageLevel(lsInsertBO.getOriginalManageLevel());
|
ls.setAdviseTechnologyMeasure(lsInsertBO.getAdviseTechnologyMeasure());
|
ls.setAdviseManageMeasure(lsInsertBO.getAdviseManageMeasure());
|
ls.setAdviseEmergencyMeasure(lsInsertBO.getAdviseEmergencyMeasure());
|
ls.setAdviseEducationMeasure(lsInsertBO.getAdviseEducationMeasure());
|
ls.setAdvisePersonalProtectionMeasure(lsInsertBO.getAdvisePersonalProtectionMeasure());
|
ls.setSafeRiskAnalysis(lsInsertBO.getSafeRiskAnalysis());
|
|
RiskAssessPlanEvaluateLs insertResult = lsRepository.save(ls);
|
|
return BeanCopyUtils.copyBean(insertResult, LsInsertDTO.class);
|
}
|
|
/**
|
* 评价方法LS - 修改
|
*/
|
@Override
|
public LecInsertDTO updateLs(Long currentUserId, AssessLSInsertBO lsInsertBO) {
|
|
EvaluateInsertDTO insertDTO = new EvaluateInsertDTO();
|
insertDTO.setResult(1);
|
|
if (ObjectUtils.isEmpty(lsInsertBO.getId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要修改的评价内容不能为空");
|
}
|
RiskAssessPlanEvaluateLs lsById = lsRepository.getLsById(lsInsertBO.getId());
|
if (ObjectUtils.isEmpty(lsById)){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要修改的评价不存在");
|
}
|
if (ObjectUtils.isEmpty(lsInsertBO.getAssessPlanId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价的计划不能为空");
|
}
|
if (ObjectUtils.isEmpty(lsInsertBO.getLsL())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "LS_L的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(lsInsertBO.getLsS())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "LS_S的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(lsInsertBO.getRiskValue())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(lsInsertBO.getEvaluateDesc())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价专家意见不能为空");
|
}
|
if (ObjectUtils.isEmpty(lsInsertBO.getOriginalLsL())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有LS_L的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(lsInsertBO.getOriginalLsS())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有LS_S的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(lsInsertBO.getOriginalRiskValue())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有风险数值不能为空");
|
}
|
BigDecimal value = lsInsertBO.getLsL().multiply(lsInsertBO.getLsS());
|
//BigDecimal类型比较,结果为0是相等
|
if (value.compareTo(lsInsertBO.getRiskValue()) != 0){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值计算有误,无法保存");
|
}
|
if (ObjectUtils.isEmpty(lsInsertBO.getSafeRiskAnalysis())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "安全风险分析内容不能为空");
|
}
|
|
//设置参数
|
LocalDateTime date = LocalDateTime.now();
|
RiskAssessPlanEvaluateLs ls = BeanCopyUtils.copyBean(lsById, RiskAssessPlanEvaluateLs.class);
|
if (value.compareTo(new BigDecimal(10)) < 0){
|
ls.setRiskLevel(MethodEnum.RISK_LEVEL_1.getCode());
|
ls.setRiskLevelValue(MethodEnum.RISK_LEVEL_1.getCode());
|
ls.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){
|
ls.setRiskLevel(MethodEnum.RISK_LEVEL_2.getCode());
|
ls.setRiskLevelValue(MethodEnum.RISK_LEVEL_2.getCode());
|
ls.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){
|
ls.setRiskLevel(MethodEnum.RISK_LEVEL_3.getCode());
|
ls.setRiskLevelValue(MethodEnum.RISK_LEVEL_3.getCode());
|
ls.setRiskColor(MethodEnum.RISK_LEVEL_3.getCode());
|
}else if (value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_3.getCode())) > 0){
|
ls.setRiskLevel(MethodEnum.RISK_LEVEL_4.getCode());
|
ls.setRiskLevelValue(MethodEnum.RISK_LEVEL_4.getCode());
|
ls.setRiskColor(MethodEnum.RISK_LEVEL_4.getCode());
|
}
|
ls.setLsL(lsInsertBO.getLsL());
|
ls.setLsS(lsInsertBO.getLsS());
|
ls.setUpdateTime(date);
|
ls.setRiskValue(lsInsertBO.getRiskValue());
|
ls.setManageLevel(lsInsertBO.getManageLevel());
|
ls.setEvaluateDesc(lsInsertBO.getEvaluateDesc());
|
|
ls.setEducationMeasure(lsInsertBO.getEducationMeasure());
|
ls.setTechnologyMeasure(lsInsertBO.getTechnologyMeasure());
|
ls.setManageMeasure(lsInsertBO.getManageMeasure());
|
ls.setPersonalProtectionMeasure(lsInsertBO.getPersonalProtectionMeasure());
|
ls.setEmergencyMeasure(lsInsertBO.getEmergencyMeasure());
|
|
ls.setOriginalLsL(lsInsertBO.getOriginalLsL());
|
ls.setOriginalLsS(lsInsertBO.getOriginalLsS());
|
ls.setOriginalRiskValue(lsInsertBO.getOriginalRiskValue());
|
ls.setOriginalRiskLevelValue(lsInsertBO.getOriginalRiskLevelValue());
|
ls.setOriginalRiskLevel(lsInsertBO.getOriginalRiskLevel());
|
ls.setOriginalRiskColor(lsInsertBO.getOriginalRiskColor());
|
ls.setOriginalManageLevel(lsInsertBO.getOriginalManageLevel());
|
ls.setAdviseTechnologyMeasure(lsInsertBO.getAdviseTechnologyMeasure());
|
ls.setAdviseManageMeasure(lsInsertBO.getAdviseManageMeasure());
|
ls.setAdviseEmergencyMeasure(lsInsertBO.getAdviseEmergencyMeasure());
|
ls.setAdviseEducationMeasure(lsInsertBO.getAdviseEducationMeasure());
|
ls.setAdvisePersonalProtectionMeasure(lsInsertBO.getAdvisePersonalProtectionMeasure());
|
ls.setSafeRiskAnalysis(lsInsertBO.getSafeRiskAnalysis());
|
|
RiskAssessPlanEvaluateLs insertResult = lsRepository.save(ls);
|
|
return BeanCopyUtils.copyBean(insertResult, LecInsertDTO.class);
|
}
|
|
/**
|
* 评价方法LS - 查询
|
*/
|
@Override
|
public LsQueryDTO getLsByPlanId(Long id) {
|
|
RiskAssessPlanEvaluateLs lsById = lsRepository.getLsById(id);
|
if (ObjectUtils.isEmpty(lsById)){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "ls评价方法不存在或已被删除");
|
}
|
return BeanCopyUtils.copyBean(lsById, LsQueryDTO.class);
|
}
|
|
/**
|
* 评价方法LS - 删除
|
*/
|
@Override
|
public EvaluateMethodDeleteDTO deleteLsByPlanId(Long currentUserId, RiskAssessPlanEvaluateDeleteReqBO deleteReqBO) {
|
|
if (ObjectUtils.isEmpty(deleteReqBO.getLsId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要删除的评价项目不能为空");
|
}
|
RiskAssessPlanEvaluateLs lsById = lsRepository.getLsById(deleteReqBO.getLsId());
|
if (ObjectUtils.isEmpty(lsById)){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要删除的评价项目为空,或已被删除");
|
}
|
if (!lsById.getAssessPlanId().equals(deleteReqBO.getId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评估计划与评价项不匹配,无法删除");
|
}
|
|
EvaluateMethodDeleteDTO deleteDTO = new EvaluateMethodDeleteDTO();
|
|
lsById.setDeleteStatus(StatusEnum.DELETED.getCode().byteValue());
|
LocalDateTime date = LocalDateTime.now();
|
lsById.setUpdateTime(date);
|
|
RiskAssessPlanEvaluateLs deleteResult = lsRepository.save(lsById);
|
if (ObjectUtils.isEmpty(deleteResult)){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价方法不存在或已被删除");
|
}
|
deleteDTO.setResult(StatusEnum.DELETED.getCode().byteValue());
|
|
return deleteDTO;
|
}
|
|
/**
|
* 评价方法LS - list
|
*/
|
@Override
|
public List<LsQueryDTO> listLsByPlanId(Long id) {
|
List<RiskAssessPlanEvaluateLs> lsList = lsRepository.listLsByPlanId(id);
|
return BeanCopyUtils.copyBeanList(lsList, LsQueryDTO.class);
|
}
|
|
@Override
|
public List<RiskAssessPlanEvaluateLs> getLsByIds(List<Long> assessPlanIds) {
|
return lsRepository.getLsByIds(assessPlanIds);
|
}
|
|
@Override
|
public int deleteLsByAssessPlanId(Long id) {
|
|
List<RiskAssessPlanEvaluateLs> lsList = lsRepository.getLsByAssessPlanId(id);
|
if (lsList.size() < 1){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价方法不存在或已被删除");
|
}
|
int i = 0;
|
for (RiskAssessPlanEvaluateLs ls : lsList) {
|
ls.setDeleteStatus(StatusEnum.DELETED.getCode().byteValue());
|
RiskAssessPlanEvaluateLs save = lsRepository.save(ls);
|
if (ObjectUtils.isEmpty(save)){
|
i = 1;
|
}
|
}
|
return i;
|
}
|
|
@Override
|
public int deleteLsByPlan(Long id) {
|
List<RiskAssessPlanEvaluateLs> lsListByPlanId = lsRepository.getLsByPlanId(id);
|
if (ObjectUtils.isEmpty(lsListByPlanId)){
|
return StatusEnum.SUCCESS.getCode();
|
}
|
for (RiskAssessPlanEvaluateLs riskAssessPlanEvaluateLs : lsListByPlanId) {
|
riskAssessPlanEvaluateLs.setEvaluateDesc(StatusEnum.DELETED.getDesc());
|
}
|
List<RiskAssessPlanEvaluateLs> result = lsRepository.saveAll(lsListByPlanId);
|
if (result.size() != lsListByPlanId.size()){
|
return StatusEnum.FAIL.getCode();
|
}
|
return StatusEnum.SUCCESS.getCode();
|
}
|
|
@Override
|
public RiskAssessPlanEvaluateLs getLsByIdentificationId(Long id, Byte identificationMethod) {
|
return lsRepository.getLsByIdentification(id, identificationMethod);
|
}
|
|
@Override
|
public List<RiskAssessPlanEvaluateLs> listLsByParam(Long id, Long identificationId, Byte identificationMethod) {
|
return lsRepository.getLsByParam(id, identificationId, identificationMethod);
|
}
|
}
|