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.entity.RiskAssessPlanEvaluateMes;
|
import com.gkhy.labRiskManage.domain.riskReport.model.bo.AssessMesInsertBO;
|
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.MesInsertDTO;
|
import com.gkhy.labRiskManage.domain.riskReport.model.dto.MesQueryDTO;
|
import com.gkhy.labRiskManage.domain.riskReport.repository.jpa.RiskAssessPlanEvaluateMesRepository;
|
import com.gkhy.labRiskManage.domain.riskReport.service.RiskAssessPlanEvaluateMesService;
|
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;
|
|
/**
|
* 评价方法MES
|
*/
|
@Service
|
public class RiskAssessPlanEvaluateMesServiceImpl implements RiskAssessPlanEvaluateMesService {
|
|
@Autowired
|
private RiskAssessPlanEvaluateMesRepository mesRepository;
|
|
/**
|
* 评价方法MES - 插入
|
*/
|
@Override
|
public MesInsertDTO InsertMes(Long currentUserId, AssessMesInsertBO mesInsertBO) {
|
|
EvaluateInsertDTO insertDTO = new EvaluateInsertDTO();
|
insertDTO.setResult(1);
|
IdentificationMethodCheck methodCheck = new IdentificationMethodCheck();
|
|
//校验辨识方法是否存在
|
int result = methodCheck.identificationMethodCheck(mesInsertBO.getIdentificationId(), mesInsertBO.getIdentificationMethod());
|
if (result == 0){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "辨识方法不存在");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getAssessPlanId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价的计划不能为空");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getMesM())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "MES_M的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getMesE())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "MES_E的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getMesS())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "MES_S的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getRiskValue())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getOriginalMesM())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有MES_M的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getOriginalMesE())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有MES_E的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getOriginalMesS())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有MES_S的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getOriginalRiskValue())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有风险数值不能为空");
|
}
|
RiskAssessPlanEvaluateMes mesByIdentification = mesRepository.getMesByIdentification(mesInsertBO.getIdentificationId(), mesInsertBO.getIdentificationMethod());
|
if (!ObjectUtils.isEmpty(mesByIdentification)){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "该辨识已经被评价,无需重复操作");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getEvaluateDesc())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价专家意见不能为空");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getSafeRiskAnalysis())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "安全风险分析内容不能为空");
|
}
|
|
BigDecimal value = mesInsertBO.getMesM().multiply(mesInsertBO.getMesE()).multiply(mesInsertBO.getMesS());
|
//BigDecimal类型比较,结果为0是相等
|
if (value.compareTo(mesInsertBO.getRiskValue()) != 0){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值计算有误,无法保存");
|
}
|
//设置参数
|
LocalDateTime date = LocalDateTime.now();
|
RiskAssessPlanEvaluateMes mes = new RiskAssessPlanEvaluateMes();
|
if (value.compareTo(new BigDecimal(10)) < 0){
|
mes.setRiskLevel(MethodEnum.RISK_LEVEL_1.getCode());
|
mes.setRiskLevelValue(MethodEnum.RISK_LEVEL_1.getCode());
|
mes.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){
|
mes.setRiskLevel(MethodEnum.RISK_LEVEL_2.getCode());
|
mes.setRiskLevelValue(MethodEnum.RISK_LEVEL_2.getCode());
|
mes.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){
|
mes.setRiskLevel(MethodEnum.RISK_LEVEL_3.getCode());
|
mes.setRiskLevelValue(MethodEnum.RISK_LEVEL_3.getCode());
|
mes.setRiskColor(MethodEnum.RISK_LEVEL_3.getCode());
|
}else if (value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_3.getCode())) > 0){
|
mes.setRiskLevel(MethodEnum.RISK_LEVEL_4.getCode());
|
mes.setRiskLevelValue(MethodEnum.RISK_LEVEL_4.getCode());
|
mes.setRiskColor(MethodEnum.RISK_LEVEL_4.getCode());
|
}
|
mes.setIdentificationId(mesInsertBO.getIdentificationId());
|
mes.setIdentificationMethod(mesInsertBO.getIdentificationMethod());
|
mes.setAssessPlanId(mesInsertBO.getAssessPlanId());
|
mes.setMesM(mesInsertBO.getMesM());
|
mes.setMesE(mesInsertBO.getMesE());
|
mes.setMesS(mesInsertBO.getMesS());
|
mes.setDeleteStatus(StatusEnum.DELETE_NOT.getCode().byteValue());
|
mes.setCreateTime(date);
|
mes.setUpdateTime(date);
|
mes.setRiskValue(mesInsertBO.getRiskValue());
|
mes.setManageLevel(mesInsertBO.getManageLevel());
|
mes.setStatus((byte) 1);
|
mes.setEvaluateDesc(mesInsertBO.getEvaluateDesc());
|
|
mes.setEducationMeasure(mesInsertBO.getEducationMeasure());
|
mes.setTechnologyMeasure(mesInsertBO.getTechnologyMeasure());
|
mes.setManageMeasure(mesInsertBO.getManageMeasure());
|
mes.setPersonalProtectionMeasure(mesInsertBO.getPersonalProtectionMeasure());
|
mes.setEmergencyMeasure(mesInsertBO.getEmergencyMeasure());
|
|
mes.setOriginalMesM(mesInsertBO.getOriginalMesM());
|
mes.setOriginalMesE(mesInsertBO.getOriginalMesE());
|
mes.setOriginalMesS(mesInsertBO.getOriginalMesS());
|
mes.setOriginalRiskValue(mesInsertBO.getOriginalRiskValue());
|
mes.setOriginalRiskLevelValue(mesInsertBO.getOriginalRiskLevelValue());
|
mes.setOriginalRiskLevel(mesInsertBO.getOriginalRiskLevel());
|
mes.setOriginalRiskColor(mesInsertBO.getOriginalRiskColor());
|
mes.setOriginalManageLevel(mesInsertBO.getOriginalManageLevel());
|
mes.setAdviseTechnologyMeasure(mesInsertBO.getAdviseTechnologyMeasure());
|
mes.setAdviseManageMeasure(mesInsertBO.getAdviseManageMeasure());
|
mes.setAdviseEmergencyMeasure(mesInsertBO.getAdviseEmergencyMeasure());
|
mes.setAdviseEducationMeasure(mesInsertBO.getAdviseEducationMeasure());
|
mes.setAdvisePersonalProtectionMeasure(mesInsertBO.getAdvisePersonalProtectionMeasure());
|
mes.setSafeRiskAnalysis(mesInsertBO.getSafeRiskAnalysis());
|
|
RiskAssessPlanEvaluateMes insertResult = mesRepository.save(mes);
|
|
return BeanCopyUtils.copyBean(insertResult, MesInsertDTO.class);
|
}
|
|
/**
|
* 评价方法MES - 修改
|
*/
|
@Override
|
public MesInsertDTO updateMes(Long currentUserId, AssessMesInsertBO mesInsertBO) {
|
|
EvaluateInsertDTO insertDTO = new EvaluateInsertDTO();
|
insertDTO.setResult(1);
|
|
if (ObjectUtils.isEmpty(mesInsertBO.getId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要修改的评价内容不能为空");
|
}
|
RiskAssessPlanEvaluateMes mesById = mesRepository.getMesById(mesInsertBO.getId());
|
if (ObjectUtils.isEmpty(mesById)){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要修改的评价不存在");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getAssessPlanId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价的计划不能为空");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getMesM())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "MES_M的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getMesE())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "MES_E的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getMesS())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "MES_S的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getRiskValue())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getEvaluateDesc())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价专家意见不能为空");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getOriginalMesM())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有MES_M的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getOriginalMesE())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有MES_E的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getOriginalMesS())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有MES_S的数值不能为空");
|
}
|
if (ObjectUtils.isEmpty(mesInsertBO.getOriginalRiskValue())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "固有风险数值不能为空");
|
}
|
BigDecimal value = mesInsertBO.getMesM().multiply(mesInsertBO.getMesE()).multiply(mesInsertBO.getMesS());
|
//BigDecimal类型比较,结果为0是相等
|
if (value.compareTo(mesInsertBO.getRiskValue()) != 0){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "风险数值计算有误,无法保存");
|
}
|
//设置参数
|
LocalDateTime date = LocalDateTime.now();
|
RiskAssessPlanEvaluateMes mes = BeanCopyUtils.copyBean(mesById, RiskAssessPlanEvaluateMes.class);
|
if (value.compareTo(new BigDecimal(10)) < 0){
|
mes.setRiskLevel(MethodEnum.RISK_LEVEL_1.getCode());
|
mes.setRiskLevelValue(MethodEnum.RISK_LEVEL_1.getCode());
|
mes.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){
|
mes.setRiskLevel(MethodEnum.RISK_LEVEL_2.getCode());
|
mes.setRiskLevelValue(MethodEnum.RISK_LEVEL_2.getCode());
|
mes.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){
|
mes.setRiskLevel(MethodEnum.RISK_LEVEL_3.getCode());
|
mes.setRiskLevelValue(MethodEnum.RISK_LEVEL_3.getCode());
|
mes.setRiskColor(MethodEnum.RISK_LEVEL_3.getCode());
|
}else if (value.compareTo(new BigDecimal(MethodEnum.RISK_EVALUATE_VALUE_3.getCode())) > 0){
|
mes.setRiskLevel(MethodEnum.RISK_LEVEL_4.getCode());
|
mes.setRiskLevelValue(MethodEnum.RISK_LEVEL_4.getCode());
|
mes.setRiskColor(MethodEnum.RISK_LEVEL_4.getCode());
|
}
|
mes.setMesM(mesInsertBO.getMesM());
|
mes.setMesE(mesInsertBO.getMesE());
|
mes.setMesS(mesInsertBO.getMesS());
|
mes.setUpdateTime(date);
|
mes.setRiskValue(mesInsertBO.getRiskValue());
|
mes.setManageLevel(mesInsertBO.getManageLevel());
|
mes.setMesE(mesInsertBO.getMesE());
|
mes.setMesM(mesInsertBO.getMesM());
|
mes.setMesS(mesInsertBO.getMesS());
|
mes.setEvaluateDesc(mesInsertBO.getEvaluateDesc());
|
|
mes.setEducationMeasure(mesInsertBO.getEducationMeasure());
|
mes.setTechnologyMeasure(mesInsertBO.getTechnologyMeasure());
|
mes.setManageMeasure(mesInsertBO.getManageMeasure());
|
mes.setPersonalProtectionMeasure(mesInsertBO.getPersonalProtectionMeasure());
|
mes.setEmergencyMeasure(mesInsertBO.getEmergencyMeasure());
|
|
mes.setOriginalMesM(mesInsertBO.getOriginalMesM());
|
mes.setOriginalMesE(mesInsertBO.getOriginalMesE());
|
mes.setOriginalMesS(mesInsertBO.getOriginalMesS());
|
mes.setOriginalRiskValue(mesInsertBO.getOriginalRiskValue());
|
mes.setOriginalRiskLevelValue(mesInsertBO.getOriginalRiskLevelValue());
|
mes.setOriginalRiskLevel(mesInsertBO.getOriginalRiskLevel());
|
mes.setOriginalRiskColor(mesInsertBO.getOriginalRiskColor());
|
mes.setOriginalManageLevel(mesInsertBO.getOriginalManageLevel());
|
mes.setAdviseTechnologyMeasure(mesInsertBO.getAdviseTechnologyMeasure());
|
mes.setAdviseManageMeasure(mesInsertBO.getAdviseManageMeasure());
|
mes.setAdviseEmergencyMeasure(mesInsertBO.getAdviseEmergencyMeasure());
|
mes.setAdviseEducationMeasure(mesInsertBO.getAdviseEducationMeasure());
|
mes.setAdvisePersonalProtectionMeasure(mesInsertBO.getAdvisePersonalProtectionMeasure());
|
mes.setSafeRiskAnalysis(mesInsertBO.getSafeRiskAnalysis());
|
|
RiskAssessPlanEvaluateMes insertResult = mesRepository.save(mes);
|
|
return BeanCopyUtils.copyBean(insertResult, MesInsertDTO.class);
|
}
|
|
/**
|
* 评价方法MES - 查询
|
*/
|
@Override
|
public MesQueryDTO getMesByPlanId(Long id) {
|
|
RiskAssessPlanEvaluateMes mesById = mesRepository.getMesById(id);
|
if (ObjectUtils.isEmpty(mesById)){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "mes评价方法不存在或已被删除");
|
}
|
return BeanCopyUtils.copyBean(mesById, MesQueryDTO.class);
|
}
|
|
/**
|
* 评价方法MES - 删除
|
*/
|
@Override
|
public EvaluateMethodDeleteDTO deleteMesByPlanId(Long currentUserId, RiskAssessPlanEvaluateDeleteReqBO deleteReqBO) {
|
|
if (ObjectUtils.isEmpty(deleteReqBO.getMesId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要删除的评价项目不能为空");
|
}
|
RiskAssessPlanEvaluateMes mesById = mesRepository.getMesById(deleteReqBO.getMesId());
|
if (ObjectUtils.isEmpty(mesById)){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "要删除的评价项目为空,或已被删除");
|
}
|
if (!mesById.getAssessPlanId().equals(deleteReqBO.getId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评估计划与评价项不匹配,无法删除");
|
}
|
|
EvaluateMethodDeleteDTO deleteDTO = new EvaluateMethodDeleteDTO();
|
|
mesById.setDeleteStatus(StatusEnum.DELETED.getCode().byteValue());
|
LocalDateTime date = LocalDateTime.now();
|
mesById.setUpdateTime(date);
|
|
RiskAssessPlanEvaluateMes deleteResult = mesRepository.save(mesById);
|
if (ObjectUtils.isEmpty(deleteResult)){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价方法不存在或已被删除");
|
}
|
deleteDTO.setResult(StatusEnum.DELETED.getCode().byteValue());
|
|
return deleteDTO;
|
}
|
|
/**
|
* 评价方法MES - list
|
*/
|
@Override
|
public List<MesQueryDTO> listMesByPlanId(Long id) {
|
List<RiskAssessPlanEvaluateMes> mesList = mesRepository.listMesByPlanId(id);
|
return BeanCopyUtils.copyBeanList(mesList, MesQueryDTO.class);
|
}
|
|
@Override
|
public List<RiskAssessPlanEvaluateMes> getMesByIds(List<Long> assessPlanIds) {
|
return mesRepository.getMesByIds(assessPlanIds);
|
}
|
|
@Override
|
public int deleteMesByAssessPlanId(Long id) {
|
|
List<RiskAssessPlanEvaluateMes> mesList = mesRepository.getMesByAssessPlanId(id);
|
if (mesList.size() < 1){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "评价方法不存在或已被删除");
|
}
|
int i = 0;
|
for (RiskAssessPlanEvaluateMes mes : mesList) {
|
mes.setDeleteStatus(StatusEnum.DELETED.getCode().byteValue());
|
RiskAssessPlanEvaluateMes save = mesRepository.save(mes);
|
if (ObjectUtils.isEmpty(save)){
|
i = 1;
|
}
|
}
|
return i;
|
}
|
|
@Override
|
public int deleteMesByPlan(Long id) {
|
List<RiskAssessPlanEvaluateMes> mesListByPlanId = mesRepository.getMesByPlanId(id);
|
if (ObjectUtils.isEmpty(mesListByPlanId)){
|
return StatusEnum.SUCCESS.getCode();
|
}
|
for (RiskAssessPlanEvaluateMes riskAssessPlanEvaluateMes : mesListByPlanId) {
|
riskAssessPlanEvaluateMes.setDeleteStatus(StatusEnum.DELETED.getCode().byteValue());
|
}
|
List<RiskAssessPlanEvaluateMes> result = mesRepository.saveAll(mesListByPlanId);
|
if (result.size() != mesListByPlanId.size()){
|
return StatusEnum.FAIL.getCode();
|
}
|
return StatusEnum.SUCCESS.getCode();
|
}
|
|
@Override
|
public RiskAssessPlanEvaluateMes getMesByIdentificationId(Long id, Byte identificationMethod) {
|
return mesRepository.getMesByIdentification(id, identificationMethod);
|
}
|
|
@Override
|
public List<RiskAssessPlanEvaluateMes> listMesByParam(Long assessPlanId, Long identificationId, Byte identificationMethod) {
|
return mesRepository.listMesByParam(assessPlanId, identificationId, identificationMethod);
|
}
|
}
|