package cn.iocoder.yudao.module.mes.service.safety;
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.certificate.MesSafetyCertificatePageReqVO;
|
import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.certificate.MesSafetyCertificateSaveReqVO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.safety.MesSafetyCertificateDO;
|
import cn.iocoder.yudao.module.mes.dal.mysql.safety.MesSafetyCertificateMapper;
|
import jakarta.annotation.Resource;
|
import org.springframework.stereotype.Service;
|
import org.springframework.validation.annotation.Validated;
|
|
import java.util.Objects;
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
|
|
/**
|
* 安全生产 - 资格证书 Service 实现
|
*
|
* @author 超级管理员
|
*/
|
@Service
|
@Validated
|
public class MesSafetyCertificateServiceImpl implements MesSafetyCertificateService {
|
|
@Resource
|
private MesSafetyCertificateMapper certificateMapper;
|
|
@Override
|
public PageResult<MesSafetyCertificateDO> getCertificatePage(MesSafetyCertificatePageReqVO pageReqVO) {
|
return certificateMapper.selectPage(pageReqVO);
|
}
|
|
@Override
|
public MesSafetyCertificateDO getCertificate(Long id) {
|
return certificateMapper.selectById(id);
|
}
|
|
@Override
|
public Long createCertificate(MesSafetyCertificateSaveReqVO createReqVO) {
|
validateCertNoUnique(null, createReqVO.getCertNo());
|
validateDateRange(createReqVO);
|
MesSafetyCertificateDO certificate = BeanUtils.toBean(createReqVO, MesSafetyCertificateDO.class);
|
if (certificate.getStatus() == null) {
|
certificate.setStatus(MesSafetyCertificateDO.STATUS_VALID);
|
}
|
certificateMapper.insert(certificate);
|
return certificate.getId();
|
}
|
|
@Override
|
public void updateCertificate(MesSafetyCertificateSaveReqVO updateReqVO) {
|
validateCertificateExists(updateReqVO.getId());
|
validateCertNoUnique(updateReqVO.getId(), updateReqVO.getCertNo());
|
validateDateRange(updateReqVO);
|
MesSafetyCertificateDO updateObj = BeanUtils.toBean(updateReqVO, MesSafetyCertificateDO.class);
|
certificateMapper.updateById(updateObj);
|
}
|
|
@Override
|
public void deleteCertificate(Long id) {
|
validateCertificateExists(id);
|
certificateMapper.deleteById(id);
|
}
|
|
@Override
|
public MesSafetyCertificateDO validateCertificateExists(Long id) {
|
if (id == null) {
|
throw exception(MES_SAFETY_CERTIFICATE_NOT_EXISTS);
|
}
|
MesSafetyCertificateDO certificate = certificateMapper.selectById(id);
|
if (certificate == null) {
|
throw exception(MES_SAFETY_CERTIFICATE_NOT_EXISTS);
|
}
|
return certificate;
|
}
|
|
/**
|
* 有效期必须晚于发证日期
|
*/
|
private void validateDateRange(MesSafetyCertificateSaveReqVO reqVO) {
|
if (reqVO.getIssueDate() != null && reqVO.getExpireDate() != null
|
&& !reqVO.getExpireDate().isAfter(reqVO.getIssueDate())) {
|
throw exception(MES_SAFETY_CERTIFICATE_DATE_INVALID);
|
}
|
}
|
|
private void validateCertNoUnique(Long id, String certNo) {
|
MesSafetyCertificateDO exists = certificateMapper.selectByCertNo(certNo);
|
if (exists == null) {
|
return;
|
}
|
if (id == null || !Objects.equals(exists.getId(), id)) {
|
throw exception(MES_SAFETY_CERTIFICATE_NO_DUPLICATE);
|
}
|
}
|
|
}
|