package cn.iocoder.yudao.module.srm.service.certificate; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.srm.controller.admin.certificate.vo.SrmSupplierCertificatePageReqVO; import cn.iocoder.yudao.module.srm.controller.admin.certificate.vo.SrmSupplierCertificateSaveReqVO; import cn.iocoder.yudao.module.srm.dal.dataobject.SrmSupplierCertificateDO; import cn.iocoder.yudao.module.srm.dal.mysql.SrmSupplierCertificateMapper; import cn.iocoder.yudao.module.srm.enums.ErrorCodeConstants; import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import java.time.LocalDate; import java.util.List; @Service @Validated public class SrmSupplierCertificateServiceImpl implements SrmSupplierCertificateService { @Resource private SrmSupplierCertificateMapper certificateMapper; @Override public Long createCertificate(SrmSupplierCertificateSaveReqVO createReqVO) { SrmSupplierCertificateDO certificate = BeanUtils.toBean(createReqVO, SrmSupplierCertificateDO.class); updateStatus(certificate); certificateMapper.insert(certificate); return certificate.getId(); } @Override public void updateCertificate(SrmSupplierCertificateSaveReqVO updateReqVO) { validateCertificateExists(updateReqVO.getId()); SrmSupplierCertificateDO updateObj = BeanUtils.toBean(updateReqVO, SrmSupplierCertificateDO.class); updateStatus(updateObj); certificateMapper.updateById(updateObj); } @Override public void deleteCertificate(Long id) { validateCertificateExists(id); certificateMapper.deleteById(id); } @Override public SrmSupplierCertificateDO getCertificate(Long id) { return certificateMapper.selectById(id); } @Override public PageResult getCertificatePage(SrmSupplierCertificatePageReqVO pageReqVO) { return certificateMapper.selectPage(pageReqVO); } @Override public List getCertificateListBySupplierId(Long supplierId) { return certificateMapper.selectListBySupplierId(supplierId); } @Override public List getExpiringCertificates() { LocalDate now = LocalDate.now(); return certificateMapper.selectExpiringList(now, now.plusDays(30)); } private void validateCertificateExists(Long id) { if (certificateMapper.selectById(id) == null) { throw ServiceExceptionUtil.exception(ErrorCodeConstants.CERTIFICATE_NOT_EXISTS); } } private void updateStatus(SrmSupplierCertificateDO certificate) { if (certificate.getValidEndDate() != null) { LocalDate now = LocalDate.now(); if (certificate.getValidEndDate().isBefore(now)) { certificate.setStatus(1); // 已过期 } else if (certificate.getValidEndDate().isBefore(now.plusDays(30))) { certificate.setStatus(2); // 即将过期 } else { certificate.setStatus(0); // 有效 } } } }