package cn.iocoder.yudao.module.mes.service.pd.document; 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.pd.document.vo.MesPdDocumentPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.pd.document.vo.MesPdDocumentSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.pd.document.MesPdDocumentDO; import cn.iocoder.yudao.module.mes.dal.mysql.pd.document.MesPdDocumentMapper; import cn.iocoder.yudao.module.mes.service.pd.project.MesPdProjectService; import cn.iocoder.yudao.module.system.api.storage.StorageAttachmentApi; import jakarta.annotation.Resource; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.PD_DOCUMENT_NOT_EXISTS; /** * MES 设计资料 Service 实现类 * * @author 芋道源码 */ @Service @Validated public class MesPdDocumentServiceImpl implements MesPdDocumentService { @Resource private MesPdDocumentMapper documentMapper; @Resource @Lazy private MesPdProjectService projectService; @Resource private StorageAttachmentApi storageAttachmentApi; @Override public Long createDocument(MesPdDocumentSaveReqVO createReqVO) { // 校验设计项目存在 projectService.validateProjectExists(createReqVO.getProjectId()); // 插入 MesPdDocumentDO document = BeanUtils.toBean(createReqVO, MesPdDocumentDO.class); documentMapper.insert(document); storageAttachmentApi.bindAttachments("file", "mes_pd_document", document.getId(), createReqVO.getBlobIds()); return document.getId(); } @Override public void updateDocument(MesPdDocumentSaveReqVO updateReqVO) { // 校验存在 validateDocumentExists(updateReqVO.getId()); // 更新 MesPdDocumentDO updateObj = BeanUtils.toBean(updateReqVO, MesPdDocumentDO.class); documentMapper.updateById(updateObj); if (updateReqVO.getBlobIds() != null) { storageAttachmentApi.deleteAttachmentsByRecord("mes_pd_document", updateReqVO.getId()); storageAttachmentApi.bindAttachments("file", "mes_pd_document", updateReqVO.getId(), updateReqVO.getBlobIds()); } } @Override public void deleteDocument(Long id) { // 校验存在 validateDocumentExists(id); // 删除附件 storageAttachmentApi.deleteAttachmentsByRecord("mes_pd_document", id); // 删除 documentMapper.deleteById(id); } @Override public MesPdDocumentDO getDocument(Long id) { return documentMapper.selectById(id); } @Override public PageResult getDocumentPage(MesPdDocumentPageReqVO pageReqVO) { return documentMapper.selectPage(pageReqVO); } @Override public List getDocumentListByProjectId(Long projectId) { return documentMapper.selectListByProjectId(projectId); } @Override public void deleteByProjectId(Long projectId) { List documents = documentMapper.selectListByProjectId(projectId); for (MesPdDocumentDO document : documents) { storageAttachmentApi.deleteAttachmentsByRecord("mes_pd_document", document.getId()); } documentMapper.deleteByProjectId(projectId); } private MesPdDocumentDO validateDocumentExists(Long id) { MesPdDocumentDO document = documentMapper.selectById(id); if (document == null) { throw exception(PD_DOCUMENT_NOT_EXISTS); } return document; } }