package com.gkhy.labRiskManage.domain.riskReport.service.impl;
|
|
import com.gkhy.labRiskManage.api.controller.riskReport.dto.respDto.ReportSourceTypeQueryRespDTO;
|
import com.gkhy.labRiskManage.application.riskReport.dto.bo.ReportSourceTypeAppInsertBO;
|
import com.gkhy.labRiskManage.application.riskReport.dto.bo.ReportSourceTypeAppUpdateBO;
|
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.basic.model.dto.RiskSourceTypeDTO;
|
import com.gkhy.labRiskManage.domain.basic.service.BasicExperimentRiskSourceTypeService;
|
import com.gkhy.labRiskManage.domain.riskReport.entity.ReportExperimentRiskSourceType;
|
import com.gkhy.labRiskManage.domain.riskReport.model.bo.ReportSourceTypeInsertBO;
|
import com.gkhy.labRiskManage.domain.riskReport.model.bo.ReportSourceTypeUpdateBO;
|
import com.gkhy.labRiskManage.domain.riskReport.model.dto.ReportPersonInsertDTO;
|
import com.gkhy.labRiskManage.domain.riskReport.model.dto.ReportSourceTypeInsertDTO;
|
import com.gkhy.labRiskManage.domain.riskReport.model.dto.ReportSourceTypeQueryDTO;
|
import com.gkhy.labRiskManage.domain.riskReport.repository.jpa.ReportExperimentRiskSourceTypeRepository;
|
import com.gkhy.labRiskManage.domain.riskReport.service.ReportExperimentRiskSourceTypeService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.ObjectUtils;
|
|
import java.time.LocalDateTime;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
|
/**
|
* 风险评估报告-实验可能有的危险源或危险因素类型
|
*/
|
@Service
|
public class ReportExperimentRiskSourceTypeServiceImpl implements ReportExperimentRiskSourceTypeService {
|
|
@Autowired
|
private ReportExperimentRiskSourceTypeRepository sourceTypeRepository;
|
@Autowired
|
private BasicExperimentRiskSourceTypeService basicTypeService;
|
/**
|
* 危险因素类型 - 插入
|
*/
|
@Override
|
public List<ReportSourceTypeInsertDTO> insertReportSourceType(Long currentUserId, List<ReportSourceTypeAppInsertBO> reportSourceTypeInsertBO) {
|
|
if (reportSourceTypeInsertBO.size() != 8){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "危险源类型不符合标准,请重新填写");
|
}
|
|
List<ReportSourceTypeInsertBO> typeInsertBO = BeanCopyUtils.copyBeanList(reportSourceTypeInsertBO, ReportSourceTypeInsertBO.class);
|
|
List<ReportExperimentRiskSourceType> sourceTypeLists = new ArrayList<>();
|
|
for (ReportSourceTypeInsertBO sourceTypeInsertBO : typeInsertBO) {
|
if (ObjectUtils.isEmpty(sourceTypeInsertBO.getReportId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "报告id不能为空");
|
}
|
if (ObjectUtils.isEmpty(sourceTypeInsertBO.getRiskSourceTypeId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "危险类型不能为空");
|
}
|
RiskSourceTypeDTO typeById = basicTypeService.getTypeById(sourceTypeInsertBO.getReportId());
|
if (ObjectUtils.isEmpty(typeById )){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR.getCode(), "危险类型不存在");
|
}
|
if (ObjectUtils.isEmpty(sourceTypeInsertBO.getStatus())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "危险类型,不能为空");
|
}
|
|
ReportExperimentRiskSourceType sourceType = BeanCopyUtils.copyBean(sourceTypeInsertBO, ReportExperimentRiskSourceType.class);
|
//补全数据
|
LocalDateTime date = LocalDateTime.now();
|
|
sourceType.setReportId(sourceTypeInsertBO.getReportId());
|
sourceType.setRiskSourceType(typeById.getRiskSourceType());
|
sourceType.setCreateTime(date);
|
sourceType.setUpdateTime(date);
|
sourceType.setCreateByUserId(currentUserId);
|
sourceType.setUpdateByUserId(currentUserId);
|
sourceType.setDeleteStatus(StatusEnum.DELETE_NOT.getCode().byteValue());
|
|
sourceTypeLists.add(sourceType);
|
}
|
|
List<ReportExperimentRiskSourceType> insertResult = sourceTypeRepository.saveAll(sourceTypeLists);
|
if (insertResult.size() != typeInsertBO.size()){
|
throw new BusinessException(this.getClass(), ResultCode.BUSINESS_ERROR.getCode(), "风险源类型写入失败");
|
}
|
|
return BeanCopyUtils.copyBeanList(insertResult, ReportSourceTypeInsertDTO.class);
|
}
|
|
/**
|
* 危险因素类型 - 修改
|
*/
|
@Override
|
public List<ReportSourceTypeInsertDTO> updateReportSourceType(Long currentUserId, List<ReportSourceTypeAppUpdateBO> reportSourceTypeAppUpdateBO) {
|
|
if (reportSourceTypeAppUpdateBO.size() != 8){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "危险源类型不符合标准,请重新填写");
|
}
|
|
List<ReportSourceTypeUpdateBO> typeUpdateBO = BeanCopyUtils.copyBeanList(reportSourceTypeAppUpdateBO, ReportSourceTypeUpdateBO.class);
|
|
List<ReportExperimentRiskSourceType> sourceTypeLists = new ArrayList<>();
|
|
for (ReportSourceTypeUpdateBO updateBO : typeUpdateBO) {
|
if (ObjectUtils.isEmpty(updateBO.getId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "危险类型id不能为空");
|
}
|
if (ObjectUtils.isEmpty(updateBO.getReportId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "报告id不能为空");
|
}
|
if (ObjectUtils.isEmpty(updateBO.getRiskSourceTypeId())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "危险类型不能为空");
|
}
|
RiskSourceTypeDTO typeById = basicTypeService.getTypeById(updateBO.getReportId());
|
if (ObjectUtils.isEmpty(typeById )){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR.getCode(), "危险类型不存在");
|
}
|
if (ObjectUtils.isEmpty(updateBO.getStatus())){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "危险类型是否存在不能为空");
|
}
|
ReportExperimentRiskSourceType type = sourceTypeRepository.getTypeById(updateBO.getId());
|
|
ReportExperimentRiskSourceType sourceType = BeanCopyUtils.copyBean(type, ReportExperimentRiskSourceType.class);
|
//补全数据
|
LocalDateTime date = LocalDateTime.now();
|
|
sourceType.setRiskSourceType(typeById.getRiskSourceType());
|
sourceType.setUpdateTime(date);
|
sourceType.setUpdateByUserId(currentUserId);
|
|
sourceTypeLists.add(sourceType);
|
}
|
|
List<ReportExperimentRiskSourceType> updateResult = sourceTypeRepository.saveAll(sourceTypeLists);
|
if (updateResult.size() != reportSourceTypeAppUpdateBO.size()){
|
throw new BusinessException(this.getClass(), ResultCode.BUSINESS_ERROR.getCode(), "风险源类型写入失败");
|
}
|
|
return BeanCopyUtils.copyBeanList(updateResult, ReportSourceTypeInsertDTO.class);
|
}
|
|
/**
|
* 危险因素类型 - 查询 by 报告id
|
*/
|
@Override
|
public List<ReportSourceTypeQueryRespDTO> getSourceTypeByReportId(Long id) {
|
|
List<ReportExperimentRiskSourceType> sourceTypeByReportId = sourceTypeRepository.getSourceTypeByReportId(id);
|
|
if (ObjectUtils.isEmpty(sourceTypeByReportId)){
|
return null;
|
}
|
|
return BeanCopyUtils.copyBeanList(sourceTypeByReportId, ReportSourceTypeQueryRespDTO.class);
|
}
|
|
@Override
|
public List<ReportExperimentRiskSourceType> insertAllReportSource(List<ReportExperimentRiskSourceType> riskSourceTypeList) {
|
|
List<ReportExperimentRiskSourceType> sourceTypes = sourceTypeRepository.saveAll(riskSourceTypeList);
|
return sourceTypes;
|
}
|
}
|