diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExecutor.java index b76c72c..fe82bf9 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExecutor.java @@ -1,7 +1,7 @@ package org.qinan.safetyeval.app.executor; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.qinan.safetyeval.app.orchestrator.QualFilingOrchestrator; import org.qinan.safetyeval.client.api.QualFilingApi; import org.qinan.safetyeval.client.change.request.QualFilingCommitmentChangeAddCmd; @@ -12,11 +12,15 @@ import org.qinan.safetyeval.client.co.QualFilingCO; import org.qinan.safetyeval.client.co.QualFilingComplianceCheckResultCO; import org.qinan.safetyeval.client.co.QualFilingDetailCO; import org.qinan.safetyeval.client.dto.*; +import org.qinan.safetyeval.domain.constant.BooleanQAEnum; import org.qinan.safetyeval.domain.constant.QualFilingApplyTypeEnum; import org.qinan.safetyeval.domain.constant.QualFilingReviewResultEnum; import org.qinan.safetyeval.domain.entity.*; +import org.qinan.safetyeval.domain.exception.BizException; +import org.qinan.safetyeval.domain.exception.ErrorCode; import org.qinan.safetyeval.domain.query.PageResult; import org.qinan.safetyeval.domain.service.QualFilingDomainService; +import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter; import org.qinan.safetyeval.infrastructure.dataobject.*; import org.qinan.safetyeval.infrastructure.mapper.*; import org.springframework.beans.BeanUtils; @@ -163,15 +167,26 @@ public class QualFilingExecutor implements QualFilingApi { @Override public SingleResponse aggregationSaveOrEdit(AggregationSaveOrEditQualFilingCmd cmd) { + // 新增时校验:用当前id查询记录获取org_id,若同机构已存在其他资质备案记录则不允许新增 + Long currentId = cmd.getQualFilingAddCmd().getId(); + if (currentId == null) { + Long count = qualFilingMapper.selectCount(new LambdaQueryWrapper() + .eq(QualFilingDO::getOrgId, ThreadLocalUserInfoAdapter.getOrgId()) + .eq(QualFilingDO::getDeleteEnum, BooleanQAEnum.FALSE.getValue())); + if (count != null && count > 0) { + throw new BizException(ErrorCode.QUAL_FILING_ALREADY_EXISTS); + } + } + QualFilingCO co = new QualFilingCO(); BeanUtils.copyProperties(cmd.getQualFilingAddCmd(), co); // 拷贝基本信息 QualFilingEntity entity = new QualFilingEntity(); - BeanUtils.copyProperties(cmd.getQualFilingAddCmd(),entity); + BeanUtils.copyProperties(cmd.getQualFilingAddCmd(), entity); entity.setBusinessScope(JSON.toJSONString(cmd.getQualFilingAddCmd().getBusinessScope())); //备案承诺书 QualFilingCommitmentEntity commitmentEntity = new QualFilingCommitmentEntity(); - BeanUtils.copyProperties(cmd.getQualFilingCommitmentAddCmd(),commitmentEntity); + BeanUtils.copyProperties(cmd.getQualFilingCommitmentAddCmd(), commitmentEntity); //备案装备 List equipmentEntities = cmd.getQualFilingEquipmentAddCmds().stream().map(item -> { QualFilingEquipmentEntity equipmentEntity = new QualFilingEquipmentEntity(); @@ -199,9 +214,9 @@ public class QualFilingExecutor implements QualFilingApi { return personnelCertEntity; }).collect(Collectors.toList()); } - Long id = qualFilingDomainService.aggregationSaveOrEdit(entity, commitmentEntity, equipmentEntities, materialEntities, personnelEntities, personnelCertEntities); - co.setId(id); - return SingleResponse.success(co); + Long id = qualFilingDomainService.aggregationSaveOrEdit(entity, commitmentEntity, equipmentEntities, materialEntities, personnelEntities, personnelCertEntities); + co.setId(id); + return SingleResponse.success(co); } @Override diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java index d1af5c2..75601b0 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/exception/ErrorCode.java @@ -75,6 +75,7 @@ public enum ErrorCode { QUAL_FILING_CHANGE_NO_DIFF("02-02-101", "备案信息无变更,无需提交"), QUAL_FILING_CHANGE_IN_PROGRESS("02-02-102", "存在进行中的备案变更"), QUAL_FILING_COMPLIANCE_CHECK_FAIL("02-02-103", "合规性校验未通过"), + QUAL_FILING_ALREADY_EXISTS("02-01-104", "该机构已存在资质备案记录,不允许重复新增"), // ---- 用户 ---- ACCOUNT_NOT_FOUND("04-01-001", "用户不存在"),