From 061928659ab2bed6de443a716c443574c00f3066 Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Thu, 2 Jul 2026 15:03:53 +0800 Subject: [PATCH 01/12] /compliance-check --- .../qinan/safetyeval/app/executor/QualFilingChangeExecutor.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java index ab54f7f..6f647e7 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java @@ -181,6 +181,8 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { QualFilingChangeCO co = new QualFilingChangeCO(); + + // 变更基本信息 QualFilingChangeEntity entity = qualFilingChangeCmdConvertor.convertCmdToE(cmd.getQualFilingChangeAddCmd()); From d19a86494612a662748ce5ecc3329adbc003944c Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Thu, 2 Jul 2026 15:41:50 +0800 Subject: [PATCH 02/12] /compliance-check --- .../executor/QualFilingChangeExecutor.java | 178 +++++++++++++++++- .../QualFilingEquipmentChangeGateway.java | 7 + .../QualFilingMaterialChangeGateway.java | 7 + .../QualFilingPersonnelCertChangeGateway.java | 7 + .../QualFilingEquipmentChangeDoConvertor.java | 10 + .../QualFilingMaterialChangeDoConvertor.java | 10 + ...lFilingPersonnelCertChangeDoConvertor.java | 10 + .../QualFilingEquipmentChangeGatewayImpl.java | 6 + .../QualFilingMaterialChangeGatewayImpl.java | 6 + ...lFilingPersonnelCertChangeGatewayImpl.java | 6 + .../QualFilingEquipmentChangeRepository.java | 7 + .../QualFilingMaterialChangeRepository.java | 7 + ...alFilingPersonnelCertChangeRepository.java | 7 + ...alFilingEquipmentChangeRepositoryImpl.java | 9 + ...ualFilingMaterialChangeRepositoryImpl.java | 9 + ...lingPersonnelCertChangeRepositoryImpl.java | 9 + 16 files changed, 291 insertions(+), 4 deletions(-) diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java index 6f647e7..ea1919d 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java @@ -7,8 +7,11 @@ import org.qinan.safetyeval.client.co.QualFilingChangeCO; import org.qinan.safetyeval.client.co.QualFilingChangeComplianceCheckResultCO; import org.qinan.safetyeval.client.co.QualFilingChangeHistoryCO; import org.qinan.safetyeval.client.dto.*; +import org.qinan.safetyeval.domain.change.gateway.*; import org.qinan.safetyeval.domain.change.model.*; +import org.qinan.safetyeval.domain.constant.QualFilingFormStepEnum; import org.qinan.safetyeval.domain.constant.QualFilingStatusEnum; +import org.qinan.safetyeval.domain.entity.QualFilingChangeDetailEntity; import org.qinan.safetyeval.domain.entity.QualFilingChangeEntity; import org.qinan.safetyeval.domain.exception.BizException; import org.qinan.safetyeval.domain.exception.ErrorCode; @@ -22,8 +25,10 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -51,6 +56,17 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { @Resource private QualFilingPersonnelCertChangeCmdConvertor qualFilingPersonnelCertChangeCmdConvertor; + @Resource + private QualFilingCommitmentChangeGateway qualFilingCommitmentChangeGateway; + @Resource + private QualFilingEquipmentChangeGateway qualFilingEquipmentChangeGateway; + @Resource + private QualFilingMaterialChangeGateway qualFilingMaterialChangeGateway; + @Resource + private QualFilingPersonnelChangeGateway qualFilingPersonnelChangeGateway; + @Resource + private QualFilingPersonnelCertChangeGateway qualFilingPersonnelCertChangeGateway; + @Override public SingleResponse add(QualFilingChangeAddCmd cmd) { QualFilingChangeEntity entity = new QualFilingChangeEntity(); @@ -179,10 +195,6 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { public SingleResponse aggregationSaveOrEdit(AggregationSaveOrEditQualFilingChangeCmd cmd) { validateBeforeSaveOrEdit(cmd); - QualFilingChangeCO co = new QualFilingChangeCO(); - - - // 变更基本信息 QualFilingChangeEntity entity = qualFilingChangeCmdConvertor.convertCmdToE(cmd.getQualFilingChangeAddCmd()); @@ -214,6 +226,16 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { Long id = qualFilingChangeDomainService.aggregationSaveOrEdit(entity, commitmentEntity , equipmentEntities, materialEntities, personnelEntities, personnelCertEntities); + + // 编辑场景:对比请求数据与已有变更数据,生成变更明细 + if (!cmd.isAdd()) { + List details = diffFromCmd(cmd.getQualFilingChangeAddCmd().getId() + , entity, commitmentEntity, equipmentEntities + , materialEntities, personnelEntities, personnelCertEntities); + // TODO: 后续可将details传入domainService进行持久化 + } + + QualFilingChangeCO co = new QualFilingChangeCO(); co.setId(id); return SingleResponse.success(co); } @@ -248,6 +270,154 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { } } + /** + * 对比请求数据与已有变更数据,生成变更明细列表 + */ + private List diffFromCmd( + Long changeId, QualFilingChangeEntity newEntity, QualFilingCommitmentChangeE newCommitment, + List newEquipments, List newMaterials, + List newPersonnel, List newCerts) { + List details = new ArrayList<>(); + + // 基本信息变更 + QualFilingChangeEntity existingEntity = qualFilingChangeDomainService.get(changeId); + if (existingEntity != null && basicInfoChanged(existingEntity, newEntity)) { + details.add(stepDetail(changeId, QualFilingFormStepEnum.BASIC_INFO, "备案基本信息变更", + summarizeBasic(existingEntity), summarizeBasic(newEntity))); + } + + // 承诺书变更 + QualFilingCommitmentChangeE existingCommitment = qualFilingCommitmentChangeGateway.getByFilingId(changeId); + if (commitmentChanged(existingCommitment, newCommitment)) { + details.add(stepDetail(changeId, QualFilingFormStepEnum.COMMITMENT, "法定代表人承诺书变更", + "承诺书", "承诺书已变更")); + } + + // 装备清单变更 + List existingEquipments = qualFilingEquipmentChangeGateway.listByFilingId(changeId); + if (equipmentListChanged(existingEquipments, newEquipments)) { + details.add(stepDetail(changeId, QualFilingFormStepEnum.EQUIPMENT, "装备清单变更", + "装备清单", "装备清单已变更")); + } + + // 材料清单变更 + List existingMaterials = qualFilingMaterialChangeGateway.listByFilingId(changeId); + if (materialListChanged(existingMaterials, newMaterials)) { + details.add(stepDetail(changeId, QualFilingFormStepEnum.MATERIALS, "备案材料上传变更", + "材料清单", "材料清单已变更")); + } + + // 人员变更 + List existingPersonnel = qualFilingPersonnelChangeGateway.listByFilingId(changeId); + if (personnelListChanged(existingPersonnel, newPersonnel)) { + details.add(stepDetail(changeId, QualFilingFormStepEnum.PERSONNEL, "备案人员管理变更", + "人员清单", "人员清单已变更")); + } + + // 人员证书变更 + List existingCerts = qualFilingPersonnelCertChangeGateway.listByFilingId(changeId); + if (certListChanged(existingCerts, newCerts)) { + details.add(stepDetail(changeId, QualFilingFormStepEnum.PERSONNEL, "备案人员证书变更", + "人员证书清单", "人员证书清单已变更")); + } + + return details; + } + + private boolean basicInfoChanged(QualFilingChangeEntity exist, QualFilingChangeEntity newEntity) { + return !Objects.equals(exist.getFilingTerritoryCode(), newEntity.getFilingTerritoryCode()) + || !Objects.equals(exist.getBusinessScope(), newEntity.getBusinessScope()) + || !Objects.equals(exist.getRegisterAddress(), newEntity.getRegisterAddress()) + || !Objects.equals(exist.getOfficeAddress(), newEntity.getOfficeAddress()) + || !Objects.equals(exist.getCreditCode(), newEntity.getCreditCode()) + || !Objects.equals(exist.getQualCertNo(), newEntity.getQualCertNo()) + || !Objects.equals(exist.getLegalPersonPhone(), newEntity.getLegalPersonPhone()) + || !Objects.equals(exist.getContactPhone(), newEntity.getContactPhone()) + || !Objects.equals(exist.getInfoDisclosureUrl(), newEntity.getInfoDisclosureUrl()) + || !Objects.equals(exist.getFixedAssetAmount(), newEntity.getFixedAssetAmount()) + || !Objects.equals(exist.getArchiveRoomArea(), newEntity.getArchiveRoomArea()) + || !Objects.equals(exist.getFulltimeEvaluatorCount(), newEntity.getFulltimeEvaluatorCount()) + || !Objects.equals(exist.getRegisteredEngineerCount(), newEntity.getRegisteredEngineerCount()) + || !Objects.equals(exist.getWorkplaceArea(), newEntity.getWorkplaceArea()) + || !Objects.equals(exist.getUnitIntro(), newEntity.getUnitIntro()) + || !Objects.equals(exist.getAttachmentUrl(), newEntity.getAttachmentUrl()); + } + + private String summarizeBasic(QualFilingChangeEntity entity) { + return entity.getFilingUnitName() + "|" + entity.getBusinessScope(); + } + + private boolean commitmentChanged(QualFilingCommitmentChangeE exist, QualFilingCommitmentChangeE newEntity) { + String existSig = exist == null ? "" : exist.getCommitmentContent() + "|" + exist.getLegalRepSignatureUrl() + + "|" + exist.getSignDate() + "|" + exist.getLegalRepPersonnelId() + "|" + exist.getLegalRepName(); + String newSig = newEntity == null ? "" : newEntity.getCommitmentContent() + "|" + newEntity.getLegalRepSignatureUrl() + + "|" + newEntity.getSignDate() + "|" + newEntity.getLegalRepPersonnelId() + "|" + newEntity.getLegalRepName(); + return !existSig.equals(newSig); + } + + private boolean equipmentListChanged(List exist, List newList) { + return !equipmentSignature(exist).equals(equipmentSignature(newList)); + } + + private String equipmentSignature(List list) { + return safeList(list).stream() + .map(e -> e.getSourceEquipmentId() + ":" + e.getCalibrationReportUrl()) + .sorted() + .collect(Collectors.joining(";")); + } + + private boolean materialListChanged(List exist, List newList) { + return !materialSignature(exist).equals(materialSignature(newList)); + } + + private String materialSignature(List list) { + return safeList(list).stream() + .map(m -> m.getMaterialContent() + ":" + m.getAttachmentUrl()) + .sorted() + .collect(Collectors.joining(";")); + } + + private boolean personnelListChanged(List exist, List newList) { + return !personnelSignature(exist).equals(personnelSignature(newList)); + } + + private String personnelSignature(List list) { + return safeList(list).stream() + .map(QualFilingPersonnelChangeE::getSourcePersonnelId) + .map(String::valueOf) + .sorted() + .collect(Collectors.joining(",")); + } + + private boolean certListChanged(List exist, List newList) { + return !certSignature(exist).equals(certSignature(newList)); + } + + private String certSignature(List list) { + return safeList(list).stream() + .map(c -> c.getSourceCertId() + ":" + c.getCertNo() + ":" + c.getCertAttachmentUrl()) + .sorted() + .collect(Collectors.joining(";")); + } + + private List safeList(List list) { + return list == null ? Collections.emptyList() : list; + } + + private QualFilingChangeDetailEntity stepDetail(Long changeId, QualFilingFormStepEnum step, + String content, String before, String after) { + QualFilingChangeDetailEntity detail = new QualFilingChangeDetailEntity(); + detail.setChangeId(changeId); + detail.setFormStepCode(step.getCode()); + detail.setFormStepName(step.getName()); + detail.setChangeField("step:" + step.getCode()); + detail.setChangeContent(content); + detail.setChangeItemName(step.getName()); + detail.setBeforeValue(before); + detail.setAfterValue(after); + return detail; + } + private QualFilingChangeCO toCO(QualFilingChangeEntity entity) { if (entity == null) { return null; diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingEquipmentChangeGateway.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingEquipmentChangeGateway.java index 317e9ce..dd199a3 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingEquipmentChangeGateway.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingEquipmentChangeGateway.java @@ -2,6 +2,8 @@ package org.qinan.safetyeval.domain.change.gateway; import org.qinan.safetyeval.domain.change.model.QualFilingEquipmentChangeE; +import java.util.List; + /** * 备案申请装备-变更网关 * @@ -41,4 +43,9 @@ public interface QualFilingEquipmentChangeGateway { * @return 结果 */ Boolean deletedQualFilingEquipmentChangeByIds(Long[] ids); + + /** + * 根据filingId查询备案申请装备-变更列表 + */ + List listByFilingId(Long filingId); } diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingMaterialChangeGateway.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingMaterialChangeGateway.java index f8eed49..27d0429 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingMaterialChangeGateway.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingMaterialChangeGateway.java @@ -2,6 +2,8 @@ package org.qinan.safetyeval.domain.change.gateway; import org.qinan.safetyeval.domain.change.model.QualFilingMaterialChangeE; +import java.util.List; + /** * 备案申请材料-变更网关 * @@ -42,6 +44,11 @@ public interface QualFilingMaterialChangeGateway { */ Boolean deletedQualFilingMaterialChangeByIds(Long[] ids); + /** + * 根据filingId查询备案申请材料-变更列表 + */ + List listByFilingId(Long filingId); + /** * 统计指定filingId下满足上传状态和材料类型的记录数 */ diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingPersonnelCertChangeGateway.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingPersonnelCertChangeGateway.java index 0394bf9..d69928b 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingPersonnelCertChangeGateway.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingPersonnelCertChangeGateway.java @@ -2,6 +2,8 @@ package org.qinan.safetyeval.domain.change.gateway; import org.qinan.safetyeval.domain.change.model.QualFilingPersonnelCertChangeE; +import java.util.List; + /** * 备案申请人员证书网关 * @@ -41,4 +43,9 @@ public interface QualFilingPersonnelCertChangeGateway { * @return 结果 */ Boolean deletedQualFilingPersonnelCertChangeByIds(Long[] ids); + + /** + * 根据filingId查询备案申请人员证书列表 + */ + List listByFilingId(Long filingId); } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingEquipmentChangeDoConvertor.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingEquipmentChangeDoConvertor.java index 055fba3..61e1a79 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingEquipmentChangeDoConvertor.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingEquipmentChangeDoConvertor.java @@ -50,4 +50,14 @@ public interface QualFilingEquipmentChangeDoConvertor { * @return */ List converDosToCos(List qualFilingEquipmentChangeDos); + + /** + * DO转领域对象 + */ + QualFilingEquipmentChangeE converDoToEe(QualFilingEquipmentChangeDO qualFilingEquipmentChangeDO); + + /** + * DOs转领域对象列表 + */ + List converDosToEes(List qualFilingEquipmentChangeDOs); } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingMaterialChangeDoConvertor.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingMaterialChangeDoConvertor.java index f8edeb5..cd34a68 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingMaterialChangeDoConvertor.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingMaterialChangeDoConvertor.java @@ -50,4 +50,14 @@ public interface QualFilingMaterialChangeDoConvertor { * @return */ List converDosToCos(List qualFilingMaterialChangeDos); + + /** + * DO转领域对象 + */ + QualFilingMaterialChangeE converDoToEe(QualFilingMaterialChangeDO qualFilingMaterialChangeDO); + + /** + * DOs转领域对象列表 + */ + List converDosToEes(List qualFilingMaterialChangeDOs); } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingPersonnelCertChangeDoConvertor.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingPersonnelCertChangeDoConvertor.java index 4d73e17..fd5e7ae 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingPersonnelCertChangeDoConvertor.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingPersonnelCertChangeDoConvertor.java @@ -53,6 +53,16 @@ public interface QualFilingPersonnelCertChangeDoConvertor { */ List converDosToCos(List qualFilingPersonnelCertChangeDos); + /** + * DO转领域对象 + */ + QualFilingPersonnelCertChangeE converDoToEe(QualFilingPersonnelCertChangeDO qualFilingPersonnelCertChangeDO); + + /** + * DOs转领域对象列表 + */ + List converDosToEes(List qualFilingPersonnelCertChangeDOs); + /** * OrgPersonnelCertDO转QualFilingPersonnelCertChangeDO * diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gateway/QualFilingEquipmentChangeGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gateway/QualFilingEquipmentChangeGatewayImpl.java index e308aca..1875b72 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gateway/QualFilingEquipmentChangeGatewayImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gateway/QualFilingEquipmentChangeGatewayImpl.java @@ -45,4 +45,10 @@ public class QualFilingEquipmentChangeGatewayImpl implements QualFilingEquipment public Boolean deletedQualFilingEquipmentChangeByIds(Long[] ids) { return qualFilingEquipmentChangeRepository.deletedQualFilingEquipmentChangeByIds(ids); } + + @Override + public java.util.List listByFilingId(Long filingId) { + return qualFilingEquipmentChangeDoConvertor.converDosToEes( + qualFilingEquipmentChangeRepository.listByFilingId(filingId)); + } } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gateway/QualFilingMaterialChangeGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gateway/QualFilingMaterialChangeGatewayImpl.java index 27ddbbd..8f9db83 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gateway/QualFilingMaterialChangeGatewayImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gateway/QualFilingMaterialChangeGatewayImpl.java @@ -46,6 +46,12 @@ public class QualFilingMaterialChangeGatewayImpl implements QualFilingMaterialCh return qualFilingMaterialChangeRepository.deletedQualFilingMaterialChangeByIds(ids); } + @Override + public java.util.List listByFilingId(Long filingId) { + return qualFilingMaterialChangeDoConvertor.converDosToEes( + qualFilingMaterialChangeRepository.listByFilingId(filingId)); + } + @Override public int countByFilingIdAndUploadStatusCodeAndMaterialType(Long filingId, Integer uploadStatusCode, String materialType) { return qualFilingMaterialChangeRepository.countByFilingIdAndUploadStatusCodeAndMaterialType(filingId, uploadStatusCode, materialType); diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gateway/QualFilingPersonnelCertChangeGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gateway/QualFilingPersonnelCertChangeGatewayImpl.java index 69a410e..b63df01 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gateway/QualFilingPersonnelCertChangeGatewayImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gateway/QualFilingPersonnelCertChangeGatewayImpl.java @@ -45,4 +45,10 @@ public class QualFilingPersonnelCertChangeGatewayImpl implements QualFilingPerso public Boolean deletedQualFilingPersonnelCertChangeByIds(Long[] ids) { return qualFilingPersonnelCertChangeRepository.deletedQualFilingPersonnelCertChangeByIds(ids); } + + @Override + public java.util.List listByFilingId(Long filingId) { + return qualFilingPersonnelCertChangeDoConvertor.converDosToEes( + qualFilingPersonnelCertChangeRepository.listByFilingId(filingId)); + } } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/QualFilingEquipmentChangeRepository.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/QualFilingEquipmentChangeRepository.java index d53fd0e..ea45ccd 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/QualFilingEquipmentChangeRepository.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/QualFilingEquipmentChangeRepository.java @@ -5,6 +5,8 @@ import com.jjb.saas.framework.repository.repo.BaseRepository; import org.qinan.safetyeval.client.change.request.QualFilingEquipmentChangePageQry; import org.qinan.safetyeval.infrastructure.persistence.domainobject.QualFilingEquipmentChangeDO; +import java.util.List; + /** * 备案申请装备-变更 * @@ -62,4 +64,9 @@ public interface QualFilingEquipmentChangeRepository extends BaseRepository listByFilingId(Long filingId); + } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/QualFilingMaterialChangeRepository.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/QualFilingMaterialChangeRepository.java index f9e99b6..cd3f175 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/QualFilingMaterialChangeRepository.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/QualFilingMaterialChangeRepository.java @@ -5,6 +5,8 @@ import com.jjb.saas.framework.repository.repo.BaseRepository; import org.qinan.safetyeval.client.change.request.QualFilingMaterialChangePageQry; import org.qinan.safetyeval.infrastructure.persistence.domainobject.QualFilingMaterialChangeDO; +import java.util.List; + /** * 备案申请材料-变更 * @@ -62,6 +64,11 @@ public interface QualFilingMaterialChangeRepository extends BaseRepository listByFilingId(Long filingId); + /** * 统计指定filingId下满足上传状态和材料类型的记录数 */ diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/QualFilingPersonnelCertChangeRepository.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/QualFilingPersonnelCertChangeRepository.java index 515e968..e0fcd17 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/QualFilingPersonnelCertChangeRepository.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/QualFilingPersonnelCertChangeRepository.java @@ -5,6 +5,8 @@ import com.jjb.saas.framework.repository.repo.BaseRepository; import org.qinan.safetyeval.client.change.request.QualFilingPersonnelCertChangePageQry; import org.qinan.safetyeval.infrastructure.persistence.domainobject.QualFilingPersonnelCertChangeDO; +import java.util.List; + /** * 备案申请人员证书 * @@ -62,4 +64,9 @@ public interface QualFilingPersonnelCertChangeRepository extends BaseRepository< */ Boolean deletedQualFilingPersonnelCertChangeByIds(Long[] ids); + /** + * 根据filingId查询备案申请人员证书列表 + */ + List listByFilingId(Long filingId); + } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingEquipmentChangeRepositoryImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingEquipmentChangeRepositoryImpl.java index b0bb292..d29af2a 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingEquipmentChangeRepositoryImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingEquipmentChangeRepositoryImpl.java @@ -13,6 +13,7 @@ import org.qinan.safetyeval.infrastructure.persistence.repository.QualFilingEqui import org.springframework.stereotype.Service; import java.util.Arrays; +import java.util.List; /** * 备案申请装备-变更 @@ -114,4 +115,12 @@ public class QualFilingEquipmentChangeRepositoryImpl extends BaseRepositoryImpl< public Boolean deletedQualFilingEquipmentChangeByIds(Long[] ids) { return super.removeBatchEnByIds(Arrays.asList(ids)); } + + @Override + public List listByFilingId(Long filingId) { + return super.lambdaQuery() + .eq(QualFilingEquipmentChangeDO::getFilingChangeId, filingId) + .eq(QualFilingEquipmentChangeDO::getDeleteEnum, BooleanEnum.FALSE.getValue()) + .list(); + } } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingMaterialChangeRepositoryImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingMaterialChangeRepositoryImpl.java index 8c0b973..18091fe 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingMaterialChangeRepositoryImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingMaterialChangeRepositoryImpl.java @@ -13,6 +13,7 @@ import org.qinan.safetyeval.infrastructure.persistence.repository.QualFilingMate import org.springframework.stereotype.Service; import java.util.Arrays; +import java.util.List; /** * 备案申请材料-变更 @@ -94,6 +95,14 @@ public class QualFilingMaterialChangeRepositoryImpl extends BaseRepositoryImpl listByFilingId(Long filingId) { + return super.lambdaQuery() + .eq(QualFilingMaterialChangeDO::getFilingChangeId, filingId) + .eq(QualFilingMaterialChangeDO::getDeleteEnum, BooleanEnum.FALSE.getValue()) + .list(); + } + @Override public int countByFilingIdAndUploadStatusCodeAndMaterialType(Long filingId, Integer uploadStatusCode, String materialType) { return super.lambdaQuery() diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingPersonnelCertChangeRepositoryImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingPersonnelCertChangeRepositoryImpl.java index f56cec0..9cf3c48 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingPersonnelCertChangeRepositoryImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingPersonnelCertChangeRepositoryImpl.java @@ -13,6 +13,7 @@ import org.qinan.safetyeval.infrastructure.persistence.repository.QualFilingPers import org.springframework.stereotype.Service; import java.util.Arrays; +import java.util.List; /** * 备案申请人员证书 @@ -108,4 +109,12 @@ public class QualFilingPersonnelCertChangeRepositoryImpl extends BaseRepositoryI public Boolean deletedQualFilingPersonnelCertChangeByIds(Long[] ids) { return super.removeBatchEnByIds(Arrays.asList(ids)); } + + @Override + public List listByFilingId(Long filingId) { + return super.lambdaQuery() + .eq(QualFilingPersonnelCertChangeDO::getFilingChangeId, filingId) + .eq(QualFilingPersonnelCertChangeDO::getDeleteEnum, BooleanEnum.FALSE.getValue()) + .list(); + } } From f983c8e0f2f37a23102aad903e6f3da1451d4e74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B2=91=E6=BA=AA?= <1015733727@qq.com> Date: Thu, 2 Jul 2026 15:48:35 +0800 Subject: [PATCH 03/12] =?UTF-8?q?feat:=20=E8=B5=84=E8=B4=A8=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E8=81=9A=E5=90=88=E6=96=B0=E5=A2=9E/=E7=BC=96?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/handler/GlobalExceptionHandler.java | 2 +- .../orchestrator/QualFilingOrchestrator.java | 11 ++--------- .../gatewayimpl/QualFilingGatewayImpl.java | 17 ----------------- .../safetyeval/start/SafetyEvalApplication.java | 2 +- .../src/main/resources/nacos/config-common.yml | 2 +- 5 files changed, 5 insertions(+), 29 deletions(-) diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/handler/GlobalExceptionHandler.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/handler/GlobalExceptionHandler.java index 55ff3fc..cb85e69 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/handler/GlobalExceptionHandler.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/handler/GlobalExceptionHandler.java @@ -70,7 +70,7 @@ public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ResponseEntity> handleUnexpectedException(Exception exception) { LOGGER.error("Unhandled controller exception", exception); - return response(HttpStatus.INTERNAL_SERVER_ERROR, SYSTEM_ERROR_CODE, + return response(HttpStatus.OK, SYSTEM_ERROR_CODE, message("system.error", "Internal server error")); } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/orchestrator/QualFilingOrchestrator.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/orchestrator/QualFilingOrchestrator.java index c9d55d3..bbfb1a1 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/orchestrator/QualFilingOrchestrator.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/orchestrator/QualFilingOrchestrator.java @@ -214,15 +214,7 @@ public class QualFilingOrchestrator { domainQuery.setSupervision(query.getSupervision()); PageResult pageResult = qualFilingGateway.page(domainQuery); List records = pageResult.getRecords().stream() - .map(entity -> { - QualFilingCO co = toCO(entity); - Long originId = entity.getApplyTypeCode() != null - && entity.getApplyTypeCode() == QualFilingApplyTypeEnum.CHANGE_DRAFT.getCode() - && entity.getOriginFilingId() != null - ? entity.getOriginFilingId() : entity.getId(); - co.setChangeCount(qualFilingChangeDetailGateway.countByFilingId(originId)); - return co; - }) + .map(entity -> toCO(entity)) .collect(Collectors.toList()); return PageResult.of(records, pageResult.getTotal(), pageResult.getPageNum(), pageResult.getPageSize()); } @@ -685,6 +677,7 @@ public class QualFilingOrchestrator { co.setUploadStatusName(entity.getUploadStatusName()); co.setAttachmentDesc(entity.getAttachmentDesc()); co.setAttachmentUrl(entity.getAttachmentUrl()); + co.setMaterialType(entity.getMaterialType()); co.setMaterialRemark(entity.getMaterialRemark()); co.setTenantId(entity.getTenantId()); return co; diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingGatewayImpl.java index ef3b2fb..929413e 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingGatewayImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingGatewayImpl.java @@ -119,23 +119,6 @@ public class QualFilingGatewayImpl implements QualFilingGateway { if (query.getSupervision()) { wrapper.ne(QualFilingDO::getFilingStatusCode, 5); } -// if (SCENE_CHANGE.equals(query.getScene())) { -// applyChangeListFilter(wrapper, query); -// } -// else { -// if (query.getFilingStatusCodes() != null && !query.getFilingStatusCodes().isEmpty()) { -// wrapper.in(QualFilingDO::getFilingStatusCode, query.getFilingStatusCodes()); -// } -// else if (query.getFilingStatusCode() != null) { -// wrapper.eq(QualFilingDO::getFilingStatusCode, query.getFilingStatusCode()); -// } -// if (query.getApplyTypeCode() != null) { -// wrapper.eq(QualFilingDO::getApplyTypeCode, query.getApplyTypeCode()); -// if (query.getApplyTypeCode() == APPLY_TYPE_FILED_MANAGE) { -// wrapper.isNull(QualFilingDO::getOriginFilingId); -// } -// } -// } wrapper.orderByDesc(QualFilingDO::getCreateTime); Page page = new Page<>(query.getPageNum(), query.getPageSize()); diff --git a/safety-eval-start/src/main/java/org/qinan/safetyeval/start/SafetyEvalApplication.java b/safety-eval-start/src/main/java/org/qinan/safetyeval/start/SafetyEvalApplication.java index 0e89b40..52d58c5 100644 --- a/safety-eval-start/src/main/java/org/qinan/safetyeval/start/SafetyEvalApplication.java +++ b/safety-eval-start/src/main/java/org/qinan/safetyeval/start/SafetyEvalApplication.java @@ -24,7 +24,7 @@ import java.util.List; * * @author safety-eval */ -@SpringBootApplication(scanBasePackages = {"org.qinan.safetyeval", "com.jjb.saas"}) +@SpringBootApplication(scanBasePackages = {"org.qinan.safetyeval", "com.jjb.saas"},exclude = {com.jjb.saas.framework.datascope.DataScopeConfiguration.class}) @EnableDubbo @EnableFeignClients(basePackages = {"org.qinan.safetyeval", "com.jjb.saas"}) @Slf4j diff --git a/safety-eval-start/src/main/resources/nacos/config-common.yml b/safety-eval-start/src/main/resources/nacos/config-common.yml index 7203789..744e079 100644 --- a/safety-eval-start/src/main/resources/nacos/config-common.yml +++ b/safety-eval-start/src/main/resources/nacos/config-common.yml @@ -146,7 +146,7 @@ mysql: port: ${common.mysql.port} username: ${common.mysql.username} password: ${common.mysql.password} - db: jjb_saas_safety_eval + db: ${application.name} open: sdk: From a773232cff28d6a5aad5e4ba96775c3b2f83175c Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Thu, 2 Jul 2026 16:31:29 +0800 Subject: [PATCH 04/12] /compliance-check --- .../web/QualFilingChangeController.java | 9 +- .../QualFilingChangeCmdConvertor.java | 15 ++++ ...ualFilingCommitmentChangeCmdConvertor.java | 10 +++ ...QualFilingEquipmentChangeCmdConvertor.java | 17 ++++ .../QualFilingMaterialChangeCmdConvertor.java | 17 ++++ ...FilingPersonnelCertChangeCmdConvertor.java | 17 ++++ ...QualFilingPersonnelChangeCmdConvertor.java | 17 ++++ .../executor/QualFilingChangeExecutor.java | 89 ++++++++++++++++++- .../client/api/QualFilingChangeApi.java | 3 + .../client/co/QualFilingChangeCO.java | 3 + .../client/dto/QualFilingChangeAddCmd.java | 3 +- .../dto/QualFilingChangeReviewAddCmd.java | 37 ++++++++ .../constant/QualFilingReviewResultEnum.java | 2 + .../domain/entity/QualFilingChangeEntity.java | 3 + .../dataobject/QualFilingChangeDO.java | 1 + .../QualFilingChangeGatewayImpl.java | 2 + .../mapper/QualFilingChangeMapper.xml | 3 +- 17 files changed, 243 insertions(+), 5 deletions(-) create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingChangeReviewAddCmd.java diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingChangeController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingChangeController.java index 978863f..bf0a2fd 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingChangeController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingChangeController.java @@ -1,12 +1,12 @@ package org.qinan.safetyeval.adapter.web; import io.swagger.annotations.Api; -import org.qinan.safetyeval.client.dto.*; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.qinan.safetyeval.client.api.QualFilingChangeApi; import org.qinan.safetyeval.client.co.QualFilingChangeCO; import org.qinan.safetyeval.client.co.QualFilingChangeComplianceCheckResultCO; +import org.qinan.safetyeval.client.dto.*; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -98,4 +98,11 @@ public class QualFilingChangeController { public SingleResponse> complianceCheck(@ApiParam("主键ID") @RequestParam Long id) { return qualFilingChangeApi.complianceCheck(id); } + + @ApiOperation("审核") + @PostMapping("/review") + public SingleResponse review(@Validated @RequestBody QualFilingChangeReviewAddCmd cmd) { + qualFilingChangeApi.review(cmd); + return SingleResponse.success(); + } } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingChangeCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingChangeCmdConvertor.java index c422d03..62ef942 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingChangeCmdConvertor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingChangeCmdConvertor.java @@ -1,8 +1,10 @@ package org.qinan.safetyeval.app.change.convertor; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; import org.qinan.safetyeval.client.dto.QualFilingChangeAddCmd; import org.qinan.safetyeval.domain.entity.QualFilingChangeEntity; +import org.qinan.safetyeval.domain.entity.QualFilingEntity; /** * 备案变更基本信息命令转换 @@ -19,4 +21,17 @@ public interface QualFilingChangeCmdConvertor { * @return */ QualFilingChangeEntity convertCmdToE(QualFilingChangeAddCmd qualFilingChangeAddCmd); + + /** + * 变更实体转备案实体 + * id 由调用方手动设置(使用 changeFilingId) + */ + @Mapping(target = "id", ignore = true) + @Mapping(target = "originFilingId", ignore = true) + @Mapping(target = "rejectReason", ignore = true) + @Mapping(target = "submitTime", ignore = true) + @Mapping(target = "approveTime", ignore = true) + @Mapping(target = "applyTypeCode", ignore = true) + @Mapping(target = "applyTypeName", ignore = true) + QualFilingEntity convertChangeEToEntity(QualFilingChangeEntity changeEntity); } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingCommitmentChangeCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingCommitmentChangeCmdConvertor.java index f1aa58b..a67f4e3 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingCommitmentChangeCmdConvertor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingCommitmentChangeCmdConvertor.java @@ -5,6 +5,7 @@ import org.mapstruct.Mapping; import org.qinan.safetyeval.client.change.request.QualFilingCommitmentChangeAddCmd; import org.qinan.safetyeval.client.change.request.QualFilingCommitmentChangeUpdateCmd; import org.qinan.safetyeval.domain.change.model.QualFilingCommitmentChangeE; +import org.qinan.safetyeval.domain.entity.QualFilingCommitmentEntity; /** * 法定代人承诺书-变更转换 @@ -31,4 +32,13 @@ public interface QualFilingCommitmentChangeCmdConvertor { */ @Mapping(target = "qualFilingCommitmentChangeGateway", ignore = true) QualFilingCommitmentChangeE convertCmdToE(QualFilingCommitmentChangeUpdateCmd qualFilingCommitmentChangeUpdateCmd); + + /** + * 变更承诺书转承诺书实体 + */ + @Mapping(target = "id", ignore = true) + @Mapping(target = "filingId", ignore = true) + @Mapping(target = "tenantId", ignore = true) + @Mapping(target = "orgId", ignore = true) + QualFilingCommitmentEntity convertChangeEToEntity(QualFilingCommitmentChangeE changeE); } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingEquipmentChangeCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingEquipmentChangeCmdConvertor.java index 538d693..e6a6156 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingEquipmentChangeCmdConvertor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingEquipmentChangeCmdConvertor.java @@ -5,6 +5,9 @@ import org.mapstruct.Mapping; import org.qinan.safetyeval.client.change.request.QualFilingEquipmentChangeAddCmd; import org.qinan.safetyeval.client.change.request.QualFilingEquipmentChangeUpdateCmd; import org.qinan.safetyeval.domain.change.model.QualFilingEquipmentChangeE; +import org.qinan.safetyeval.domain.entity.QualFilingEquipmentEntity; + +import java.util.List; /** * 备案申请装备-变更转换 @@ -31,4 +34,18 @@ public interface QualFilingEquipmentChangeCmdConvertor { */ @Mapping(target = "qualFilingEquipmentChangeGateway", ignore = true) QualFilingEquipmentChangeE convertCmdToE(QualFilingEquipmentChangeUpdateCmd qualFilingEquipmentChangeUpdateCmd); + + /** + * 变更装备转装备实体 + */ + @Mapping(target = "id", ignore = true) + @Mapping(target = "filingId", ignore = true) + @Mapping(target = "tenantId", ignore = true) + @Mapping(target = "orgId", ignore = true) + QualFilingEquipmentEntity convertChangeEToEntity(QualFilingEquipmentChangeE changeE); + + /** + * 批量转换 + */ + List convertChangeEListToEntityList(List changeEs); } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingMaterialChangeCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingMaterialChangeCmdConvertor.java index cb213d7..139d00c 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingMaterialChangeCmdConvertor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingMaterialChangeCmdConvertor.java @@ -5,6 +5,9 @@ import org.mapstruct.Mapping; import org.qinan.safetyeval.client.change.request.QualFilingMaterialChangeAddCmd; import org.qinan.safetyeval.client.change.request.QualFilingMaterialChangeUpdateCmd; import org.qinan.safetyeval.domain.change.model.QualFilingMaterialChangeE; +import org.qinan.safetyeval.domain.entity.QualFilingMaterialEntity; + +import java.util.List; /** * 备案申请材料-变更转换 @@ -31,4 +34,18 @@ public interface QualFilingMaterialChangeCmdConvertor { */ @Mapping(target = "qualFilingMaterialChangeGateway", ignore = true) QualFilingMaterialChangeE convertCmdToE(QualFilingMaterialChangeUpdateCmd qualFilingMaterialChangeUpdateCmd); + + /** + * 变更材料转材料实体 + */ + @Mapping(target = "id", ignore = true) + @Mapping(target = "filingId", ignore = true) + @Mapping(target = "tenantId", ignore = true) + @Mapping(target = "orgId", ignore = true) + QualFilingMaterialEntity convertChangeEToEntity(QualFilingMaterialChangeE changeE); + + /** + * 批量转换 + */ + List convertChangeEListToEntityList(List changeEs); } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelCertChangeCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelCertChangeCmdConvertor.java index 6782ffc..df4f6f9 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelCertChangeCmdConvertor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelCertChangeCmdConvertor.java @@ -5,6 +5,9 @@ import org.mapstruct.Mapping; import org.qinan.safetyeval.client.change.request.QualFilingPersonnelCertChangeAddCmd; import org.qinan.safetyeval.client.change.request.QualFilingPersonnelCertChangeUpdateCmd; import org.qinan.safetyeval.domain.change.model.QualFilingPersonnelCertChangeE; +import org.qinan.safetyeval.domain.entity.QualFilingPersonnelCertEntity; + +import java.util.List; /** * 备案申请人员证书转换 @@ -31,4 +34,18 @@ public interface QualFilingPersonnelCertChangeCmdConvertor { */ @Mapping(target = "qualFilingPersonnelCertChangeGateway", ignore = true) QualFilingPersonnelCertChangeE convertCmdToE(QualFilingPersonnelCertChangeUpdateCmd qualFilingPersonnelCertChangeUpdateCmd); + + /** + * 变更人员证书转人员证书实体 + */ + @Mapping(target = "id", ignore = true) + @Mapping(target = "filingId", ignore = true) + @Mapping(target = "tenantId", ignore = true) + @Mapping(target = "orgId", ignore = true) + QualFilingPersonnelCertEntity convertChangeEToEntity(QualFilingPersonnelCertChangeE changeE); + + /** + * 批量转换 + */ + List convertChangeEListToEntityList(List changeEs); } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelChangeCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelChangeCmdConvertor.java index 2b9bde4..04b3405 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelChangeCmdConvertor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelChangeCmdConvertor.java @@ -5,6 +5,9 @@ import org.mapstruct.Mapping; import org.qinan.safetyeval.client.change.request.QualFilingPersonnelChangeAddCmd; import org.qinan.safetyeval.client.change.request.QualFilingPersonnelChangeUpdateCmd; import org.qinan.safetyeval.domain.change.model.QualFilingPersonnelChangeE; +import org.qinan.safetyeval.domain.entity.QualFilingPersonnelEntity; + +import java.util.List; /** * 备案申请人员-变更转换 @@ -31,4 +34,18 @@ public interface QualFilingPersonnelChangeCmdConvertor { */ @Mapping(target = "qualFilingPersonnelChangeGateway", ignore = true) QualFilingPersonnelChangeE convertCmdToE(QualFilingPersonnelChangeUpdateCmd qualFilingPersonnelChangeUpdateCmd); + + /** + * 变更人员转人员实体 + */ + @Mapping(target = "id", ignore = true) + @Mapping(target = "filingId", ignore = true) + @Mapping(target = "tenantId", ignore = true) + @Mapping(target = "orgId", ignore = true) + QualFilingPersonnelEntity convertChangeEToEntity(QualFilingPersonnelChangeE changeE); + + /** + * 批量转换 + */ + List convertChangeEListToEntityList(List changeEs); } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java index ea1919d..b9bf76c 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java @@ -10,18 +10,21 @@ import org.qinan.safetyeval.client.dto.*; import org.qinan.safetyeval.domain.change.gateway.*; import org.qinan.safetyeval.domain.change.model.*; import org.qinan.safetyeval.domain.constant.QualFilingFormStepEnum; +import org.qinan.safetyeval.domain.constant.QualFilingReviewResultEnum; import org.qinan.safetyeval.domain.constant.QualFilingStatusEnum; -import org.qinan.safetyeval.domain.entity.QualFilingChangeDetailEntity; -import org.qinan.safetyeval.domain.entity.QualFilingChangeEntity; +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.query.QualFilingChangeQuery; import org.qinan.safetyeval.domain.service.QualFilingChangeDomainService; +import org.qinan.safetyeval.domain.service.QualFilingDomainService; +import org.qinan.safetyeval.domain.service.QualFilingReviewDomainService; import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -41,6 +44,14 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { @Autowired(required = false) private QualFilingChangeDomainService qualFilingChangeDomainService; + @Lazy + @Autowired(required = false) + private QualFilingDomainService qualFilingDomainService; + + @Lazy + @Autowired(required = false) + private QualFilingReviewDomainService qualFilingReviewDomainService; + @Resource private QualFilingOrchestrator qualFilingOrchestrator; @Resource @@ -240,6 +251,80 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { return SingleResponse.success(co); } + @Override + @Transactional(rollbackFor = Exception.class) + public void review(QualFilingChangeReviewAddCmd cmd) { + Long changeFilingId = cmd.getChangeFilingId(); + + // 查询变更基本信息 + QualFilingChangeEntity changeEntity = qualFilingChangeDomainService.get(changeFilingId); + + if (changeEntity == null) { + throw new BizException(ErrorCode.QUAL_FILING_CHANGE_NOT_FOUND); + } + QualFilingChangeEntity updateE = qualFilingChangeDomainService.get(changeFilingId); + updateE.setId(changeFilingId); + + // 构建并保存审核记录 + QualFilingReviewEntity reviewEntity = new QualFilingReviewEntity(); + reviewEntity.setFilingId(changeEntity.getChangeFilingId()); + reviewEntity.setReviewResult(cmd.getReviewResult()); + reviewEntity.setFilingExpertId(cmd.getFilingExpertId()); + reviewEntity.setFilingExpertName(cmd.getFilingExpertName()); + reviewEntity.setReviewOpinion(cmd.getReviewOpinion()); + reviewEntity = qualFilingReviewDomainService.add(reviewEntity); + + // 更新变更记录的 filing_review_id 和 filing_status_code + updateE.setFilingReviewId(reviewEntity.getId()); + + // 审核通过:将变更数据同步到正式备案表 + if (QualFilingReviewResultEnum.PASS.getName().equals(cmd.getReviewResult())) { + updateE.setFilingStatusCode(QualFilingStatusEnum.FILED.getCode()); + updateE.setFilingStatusName(QualFilingStatusEnum.FILED.getName()); + + // 转换变更基本信息 → 备案实体 + QualFilingEntity entity = qualFilingChangeCmdConvertor.convertChangeEToEntity(changeEntity); + entity.setId(changeEntity.getChangeFilingId()); + + // 查询并转换承诺书 + QualFilingCommitmentChangeE commitmentChangeE = qualFilingCommitmentChangeGateway.getByFilingId(changeFilingId); + QualFilingCommitmentEntity commitmentEntity = null; + if (commitmentChangeE != null) { + commitmentEntity = qualFilingCommitmentChangeCmdConvertor.convertChangeEToEntity(commitmentChangeE); + commitmentEntity.setFilingId(changeEntity.getChangeFilingId()); + } + + // 查询并转换装备清单 + List equipmentChangeEs = qualFilingEquipmentChangeGateway.listByFilingId(changeFilingId); + List equipmentEntities = qualFilingEquipmentChangeCmdConvertor.convertChangeEListToEntityList(equipmentChangeEs); + equipmentEntities.forEach(e -> e.setFilingId(changeEntity.getChangeFilingId())); + + // 查询并转换材料清单 + List materialChangeEs = qualFilingMaterialChangeGateway.listByFilingId(changeFilingId); + List materialEntities = qualFilingMaterialChangeCmdConvertor.convertChangeEListToEntityList(materialChangeEs); + materialEntities.forEach(e -> e.setFilingId(changeEntity.getChangeFilingId())); + + // 查询并转换人员 + List personnelChangeEs = qualFilingPersonnelChangeGateway.listByFilingId(changeFilingId); + List personnelEntities = qualFilingPersonnelChangeCmdConvertor.convertChangeEListToEntityList(personnelChangeEs); + personnelEntities.forEach(e -> e.setFilingId(changeEntity.getChangeFilingId())); + + // 查询并转换人员证书 + List personnelCertChangeEs = qualFilingPersonnelCertChangeGateway.listByFilingId(changeFilingId); + List personnelCertEntities = qualFilingPersonnelCertChangeCmdConvertor.convertChangeEListToEntityList(personnelCertChangeEs); + personnelCertEntities.forEach(e -> e.setFilingId(changeEntity.getChangeFilingId())); + + // 调用聚合保存,将变更数据写入正式备案表 + qualFilingDomainService.aggregationSaveOrEdit(entity, commitmentEntity, equipmentEntities, materialEntities, personnelEntities, personnelCertEntities); + } else { + updateE.setFilingStatusCode(QualFilingStatusEnum.REJECTED.getCode()); + updateE.setFilingStatusName(QualFilingStatusEnum.REJECTED.getName()); + } + + // 更新变更记录 + qualFilingChangeDomainService.modify(updateE); + } + /** * 聚合保存或编辑前的状态校验 *
    diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/QualFilingChangeApi.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/QualFilingChangeApi.java index 63078ee..ab3f870 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/QualFilingChangeApi.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/QualFilingChangeApi.java @@ -9,6 +9,7 @@ import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.QualFilingChangeAddCmd; import org.qinan.safetyeval.client.dto.QualFilingChangeModifyCmd; import org.qinan.safetyeval.client.dto.QualFilingChangePageQuery; +import org.qinan.safetyeval.client.dto.QualFilingChangeReviewAddCmd; import org.qinan.safetyeval.client.dto.QualFilingChangeSubmitCmd; import org.qinan.safetyeval.client.dto.QualFilingRejectCmd; @@ -42,4 +43,6 @@ public interface QualFilingChangeApi { SingleResponse> complianceCheck(Long id); SingleResponse aggregationSaveOrEdit(AggregationSaveOrEditQualFilingChangeCmd cmd); + + void review(QualFilingChangeReviewAddCmd cmd); } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingChangeCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingChangeCO.java index 8c2c608..a10bb5f 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingChangeCO.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingChangeCO.java @@ -18,6 +18,9 @@ public class QualFilingChangeCO { @ApiModelProperty(value = "备案申请ID") private Long filingId; + @ApiModelProperty(value = "审核ID") + private Long filingReviewId; + @ApiModelProperty(value = "变更备案ID") private Long changeFilingId; diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingChangeAddCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingChangeAddCmd.java index e4dfd8f..c9aeb06 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingChangeAddCmd.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingChangeAddCmd.java @@ -1,9 +1,10 @@ package org.qinan.safetyeval.client.dto; import io.swagger.annotations.ApiModelProperty; -import java.math.BigDecimal; import lombok.Data; +import java.math.BigDecimal; + /** * 备案变更新增命令 * diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingChangeReviewAddCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingChangeReviewAddCmd.java new file mode 100644 index 0000000..58d2470 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingChangeReviewAddCmd.java @@ -0,0 +1,37 @@ +package org.qinan.safetyeval.client.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.qinan.safetyeval.domain.constant.QualFilingReviewResultEnum; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * 资质审核记录新增命令 + * + * @author safety-eval + */ +@Data +public class QualFilingChangeReviewAddCmd { + + @ApiModelProperty(value = "变更备案申请id") + @NotNull(message = "备案申请id 不能为空") + private Long changeFilingId; + + @ApiModelProperty(value = "备案审核id", hidden = true) + private Long filingReviewId; + + @ApiModelProperty(value = QualFilingReviewResultEnum.REMARKS) + @NotBlank(message = "审核结果 不能为空") + private String reviewResult; + + @ApiModelProperty(value = "专家id") + private Long filingExpertId; + + @ApiModelProperty(value = "专家名称") + private String filingExpertName; + + @ApiModelProperty(value = "综合审核意见") + private String reviewOpinion; +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/QualFilingReviewResultEnum.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/QualFilingReviewResultEnum.java index f70d434..83ccd3a 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/QualFilingReviewResultEnum.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/QualFilingReviewResultEnum.java @@ -14,6 +14,8 @@ public enum QualFilingReviewResultEnum { private final int code; private final String name; + public static final String REMARKS = "审核结果(1通过2待定3不通过)"; + QualFilingReviewResultEnum(int code, String name) { this.code = code; this.name = name; diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/QualFilingChangeEntity.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/QualFilingChangeEntity.java index 897de59..051f5de 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/QualFilingChangeEntity.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/QualFilingChangeEntity.java @@ -27,6 +27,9 @@ public class QualFilingChangeEntity { /** 打回原因 */ private String rejectReason; + /** 审核ID */ + private Long filingReviewId; + /** 提交时间 */ private java.time.LocalDateTime submitTime; diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/QualFilingChangeDO.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/QualFilingChangeDO.java index 96f144e..afb9b33 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/QualFilingChangeDO.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/QualFilingChangeDO.java @@ -21,6 +21,7 @@ public class QualFilingChangeDO { private Long changeFilingId; private String rejectReason; private LocalDateTime submitTime; + private Long filingReviewId; private String filingTerritoryCode; private String filingTerritoryName; private String filingUnitName; diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingChangeGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingChangeGatewayImpl.java index ad92e50..59c644c 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingChangeGatewayImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingChangeGatewayImpl.java @@ -228,6 +228,7 @@ public class QualFilingChangeGatewayImpl implements QualFilingChangeGateway { dataObject.setFilingId(entity.getFilingId()); dataObject.setChangeFilingId(entity.getChangeFilingId()); dataObject.setRejectReason(entity.getRejectReason()); + dataObject.setFilingReviewId(entity.getFilingReviewId()); dataObject.setSubmitTime(entity.getSubmitTime()); dataObject.setFilingTerritoryCode(entity.getFilingTerritoryCode()); dataObject.setFilingTerritoryName(entity.getFilingTerritoryName()); @@ -265,6 +266,7 @@ public class QualFilingChangeGatewayImpl implements QualFilingChangeGateway { entity.setFilingId(dataObject.getFilingId()); entity.setChangeFilingId(dataObject.getChangeFilingId()); entity.setRejectReason(dataObject.getRejectReason()); + entity.setFilingReviewId(dataObject.getFilingReviewId()); entity.setSubmitTime(dataObject.getSubmitTime()); entity.setFilingTerritoryCode(dataObject.getFilingTerritoryCode()); entity.setFilingTerritoryName(dataObject.getFilingTerritoryName()); diff --git a/safety-eval-infrastructure/src/main/resources/mapper/QualFilingChangeMapper.xml b/safety-eval-infrastructure/src/main/resources/mapper/QualFilingChangeMapper.xml index 82fe6dc..8c3217a 100644 --- a/safety-eval-infrastructure/src/main/resources/mapper/QualFilingChangeMapper.xml +++ b/safety-eval-infrastructure/src/main/resources/mapper/QualFilingChangeMapper.xml @@ -9,6 +9,7 @@ + @@ -48,7 +49,7 @@ - `id`, `org_id`, `filing_id`, `change_filing_id`, `reject_reason`, `submit_time`, `filing_territory_code`, `filing_territory_name`, `filing_unit_name`, `filing_unit_type_code`, `filing_unit_type_name`, `filing_no`, `business_scope`, `register_address`, `office_address`, `credit_code`, `qual_cert_no`, `legal_person_phone`, `contact_phone`, `info_disclosure_url`, `fixed_asset_amount`, `archive_room_area`, `fulltime_evaluator_count`, `registered_engineer_count`, `workplace_area`, `unit_intro`, `attachment_url`, `filing_status_code`, `filing_status_name`, `delete_enum`, `remarks`, `create_name`, `update_name`, `tenant_id`, `version`, `create_time`, `update_time`, `create_id`, `update_id`, `env` + `id`, `org_id`, `filing_id`, `change_filing_id`, `filing_review_id`, `reject_reason`, `submit_time`, `filing_territory_code`, `filing_territory_name`, `filing_unit_name`, `filing_unit_type_code`, `filing_unit_type_name`, `filing_no`, `business_scope`, `register_address`, `office_address`, `credit_code`, `qual_cert_no`, `legal_person_phone`, `contact_phone`, `info_disclosure_url`, `fixed_asset_amount`, `archive_room_area`, `fulltime_evaluator_count`, `registered_engineer_count`, `workplace_area`, `unit_intro`, `attachment_url`, `filing_status_code`, `filing_status_name`, `delete_enum`, `remarks`, `create_name`, `update_name`, `tenant_id`, `version`, `create_time`, `update_time`, `create_id`, `update_id`, `env` From 6a4a83267125e8038947c59ccaf5503339f513f4 Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Thu, 2 Jul 2026 17:00:51 +0800 Subject: [PATCH 05/12] /compliance-check --- .../web/QualFilingChangeController.java | 7 ++ ...ualFilingCommitmentChangeCmdConvertor.java | 7 ++ ...QualFilingEquipmentChangeCmdConvertor.java | 12 +++ .../QualFilingMaterialChangeCmdConvertor.java | 13 ++++ ...FilingPersonnelCertChangeCmdConvertor.java | 12 +++ ...QualFilingPersonnelChangeCmdConvertor.java | 12 +++ .../executor/QualFilingChangeExecutor.java | 78 +++++++++++++++++-- .../client/api/QualFilingChangeApi.java | 3 + .../co/QualFilingChangeAggregationCO.java | 32 ++++++++ 9 files changed, 171 insertions(+), 5 deletions(-) create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingChangeAggregationCO.java diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingChangeController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingChangeController.java index bf0a2fd..5d2e4ef 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingChangeController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingChangeController.java @@ -4,6 +4,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.qinan.safetyeval.client.api.QualFilingChangeApi; +import org.qinan.safetyeval.client.co.QualFilingChangeAggregationCO; import org.qinan.safetyeval.client.co.QualFilingChangeCO; import org.qinan.safetyeval.client.co.QualFilingChangeComplianceCheckResultCO; import org.qinan.safetyeval.client.dto.*; @@ -105,4 +106,10 @@ public class QualFilingChangeController { qualFilingChangeApi.review(cmd); return SingleResponse.success(); } + + @ApiOperation("备案变更详情(5表聚合)") + @GetMapping("/detail") + public SingleResponse detail(@ApiParam("主键ID") @RequestParam Long id) { + return qualFilingChangeApi.detail(id); + } } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingCommitmentChangeCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingCommitmentChangeCmdConvertor.java index a67f4e3..5ea84a2 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingCommitmentChangeCmdConvertor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingCommitmentChangeCmdConvertor.java @@ -4,6 +4,7 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.qinan.safetyeval.client.change.request.QualFilingCommitmentChangeAddCmd; import org.qinan.safetyeval.client.change.request.QualFilingCommitmentChangeUpdateCmd; +import org.qinan.safetyeval.client.co.QualFilingCommitmentCO; import org.qinan.safetyeval.domain.change.model.QualFilingCommitmentChangeE; import org.qinan.safetyeval.domain.entity.QualFilingCommitmentEntity; @@ -41,4 +42,10 @@ public interface QualFilingCommitmentChangeCmdConvertor { @Mapping(target = "tenantId", ignore = true) @Mapping(target = "orgId", ignore = true) QualFilingCommitmentEntity convertChangeEToEntity(QualFilingCommitmentChangeE changeE); + + /** + * 变更承诺书转承诺书CO + */ + @Mapping(source = "filingChangeId", target = "filingId") + QualFilingCommitmentCO convertChangeEToCO(QualFilingCommitmentChangeE changeE); } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingEquipmentChangeCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingEquipmentChangeCmdConvertor.java index e6a6156..66647c4 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingEquipmentChangeCmdConvertor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingEquipmentChangeCmdConvertor.java @@ -4,6 +4,7 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.qinan.safetyeval.client.change.request.QualFilingEquipmentChangeAddCmd; import org.qinan.safetyeval.client.change.request.QualFilingEquipmentChangeUpdateCmd; +import org.qinan.safetyeval.client.co.QualFilingEquipmentCO; import org.qinan.safetyeval.domain.change.model.QualFilingEquipmentChangeE; import org.qinan.safetyeval.domain.entity.QualFilingEquipmentEntity; @@ -48,4 +49,15 @@ public interface QualFilingEquipmentChangeCmdConvertor { * 批量转换 */ List convertChangeEListToEntityList(List changeEs); + + /** + * 变更装备转装备CO + */ + @Mapping(source = "filingChangeId", target = "filingId") + QualFilingEquipmentCO convertChangeEToCO(QualFilingEquipmentChangeE changeE); + + /** + * 批量转换变更装备为CO + */ + List convertChangeEListToCOList(List changeEs); } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingMaterialChangeCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingMaterialChangeCmdConvertor.java index 139d00c..c9a9117 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingMaterialChangeCmdConvertor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingMaterialChangeCmdConvertor.java @@ -4,6 +4,7 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.qinan.safetyeval.client.change.request.QualFilingMaterialChangeAddCmd; import org.qinan.safetyeval.client.change.request.QualFilingMaterialChangeUpdateCmd; +import org.qinan.safetyeval.client.co.QualFilingMaterialCO; import org.qinan.safetyeval.domain.change.model.QualFilingMaterialChangeE; import org.qinan.safetyeval.domain.entity.QualFilingMaterialEntity; @@ -48,4 +49,16 @@ public interface QualFilingMaterialChangeCmdConvertor { * 批量转换 */ List convertChangeEListToEntityList(List changeEs); + + /** + * 变更材料转材料CO + */ + @Mapping(source = "filingChangeId", target = "filingId") + @Mapping(target = "materialType", ignore = true) + QualFilingMaterialCO convertChangeEToCO(QualFilingMaterialChangeE changeE); + + /** + * 批量转换变更材料为CO + */ + List convertChangeEListToCOList(List changeEs); } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelCertChangeCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelCertChangeCmdConvertor.java index df4f6f9..78ec511 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelCertChangeCmdConvertor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelCertChangeCmdConvertor.java @@ -4,6 +4,7 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.qinan.safetyeval.client.change.request.QualFilingPersonnelCertChangeAddCmd; import org.qinan.safetyeval.client.change.request.QualFilingPersonnelCertChangeUpdateCmd; +import org.qinan.safetyeval.client.co.QualFilingPersonnelCertCO; import org.qinan.safetyeval.domain.change.model.QualFilingPersonnelCertChangeE; import org.qinan.safetyeval.domain.entity.QualFilingPersonnelCertEntity; @@ -48,4 +49,15 @@ public interface QualFilingPersonnelCertChangeCmdConvertor { * 批量转换 */ List convertChangeEListToEntityList(List changeEs); + + /** + * 变更人员证书转人员证书CO + */ + @Mapping(source = "filingChangeId", target = "filingId") + QualFilingPersonnelCertCO convertChangeEToCO(QualFilingPersonnelCertChangeE changeE); + + /** + * 批量转换变更人员证书为CO + */ + List convertChangeEListToCOList(List changeEs); } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelChangeCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelChangeCmdConvertor.java index 04b3405..8ed2f24 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelChangeCmdConvertor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingPersonnelChangeCmdConvertor.java @@ -4,6 +4,7 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.qinan.safetyeval.client.change.request.QualFilingPersonnelChangeAddCmd; import org.qinan.safetyeval.client.change.request.QualFilingPersonnelChangeUpdateCmd; +import org.qinan.safetyeval.client.co.QualFilingPersonnelCO; import org.qinan.safetyeval.domain.change.model.QualFilingPersonnelChangeE; import org.qinan.safetyeval.domain.entity.QualFilingPersonnelEntity; @@ -48,4 +49,15 @@ public interface QualFilingPersonnelChangeCmdConvertor { * 批量转换 */ List convertChangeEListToEntityList(List changeEs); + + /** + * 变更人员转人员CO + */ + @Mapping(source = "filingChangeId", target = "filingId") + QualFilingPersonnelCO convertChangeEToCO(QualFilingPersonnelChangeE changeE); + + /** + * 批量转换变更人员为CO + */ + List convertChangeEListToCOList(List changeEs); } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java index b9bf76c..f286b4c 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java @@ -3,11 +3,13 @@ package org.qinan.safetyeval.app.executor; import org.qinan.safetyeval.app.change.convertor.*; import org.qinan.safetyeval.app.orchestrator.QualFilingOrchestrator; import org.qinan.safetyeval.client.api.QualFilingChangeApi; +import org.qinan.safetyeval.client.co.QualFilingChangeAggregationCO; import org.qinan.safetyeval.client.co.QualFilingChangeCO; import org.qinan.safetyeval.client.co.QualFilingChangeComplianceCheckResultCO; import org.qinan.safetyeval.client.co.QualFilingChangeHistoryCO; import org.qinan.safetyeval.client.dto.*; import org.qinan.safetyeval.domain.change.gateway.*; +import org.qinan.safetyeval.domain.gateway.QualFilingChangeDetailGateway; import org.qinan.safetyeval.domain.change.model.*; import org.qinan.safetyeval.domain.constant.QualFilingFormStepEnum; import org.qinan.safetyeval.domain.constant.QualFilingReviewResultEnum; @@ -21,6 +23,7 @@ import org.qinan.safetyeval.domain.service.QualFilingChangeDomainService; import org.qinan.safetyeval.domain.service.QualFilingDomainService; import org.qinan.safetyeval.domain.service.QualFilingReviewDomainService; import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -78,6 +81,9 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { @Resource private QualFilingPersonnelCertChangeGateway qualFilingPersonnelCertChangeGateway; + @Resource + private QualFilingChangeDetailGateway qualFilingChangeDetailGateway; + @Override public SingleResponse add(QualFilingChangeAddCmd cmd) { QualFilingChangeEntity entity = new QualFilingChangeEntity(); @@ -203,6 +209,7 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { } @Override + @Transactional(rollbackFor = Exception.class) public SingleResponse aggregationSaveOrEdit(AggregationSaveOrEditQualFilingChangeCmd cmd) { validateBeforeSaveOrEdit(cmd); @@ -235,17 +242,29 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { .collect(Collectors.toList()); } - Long id = qualFilingChangeDomainService.aggregationSaveOrEdit(entity, commitmentEntity - , equipmentEntities, materialEntities, personnelEntities, personnelCertEntities); - // 编辑场景:对比请求数据与已有变更数据,生成变更明细 if (!cmd.isAdd()) { - List details = diffFromCmd(cmd.getQualFilingChangeAddCmd().getId() + Long changeId = cmd.getQualFilingChangeAddCmd().getId(); + List details = diffFromCmd(changeId , entity, commitmentEntity, equipmentEntities , materialEntities, personnelEntities, personnelCertEntities); - // TODO: 后续可将details传入domainService进行持久化 + // 根据changeId先删除原有变更明细,再新增 + List existingDetails = qualFilingChangeDetailGateway.listByChangeId(changeId); + if (!CollectionUtils.isEmpty(existingDetails)) { + existingDetails.forEach(d -> qualFilingChangeDetailGateway.delete(d.getId())); + } + if (!CollectionUtils.isEmpty(details)) { + String operatorName = AuthUserContextAdapter.getCurrentUserName(); + details.forEach(d -> { + d.setCreateName(operatorName); + qualFilingChangeDetailGateway.save(d); + }); + } } + Long id = qualFilingChangeDomainService.aggregationSaveOrEdit(entity, commitmentEntity + , equipmentEntities, materialEntities, personnelEntities, personnelCertEntities); + QualFilingChangeCO co = new QualFilingChangeCO(); co.setId(id); return SingleResponse.success(co); @@ -325,6 +344,55 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { qualFilingChangeDomainService.modify(updateE); } + @Override + public SingleResponse detail(Long id) { + // 查询变更主记录 + QualFilingChangeEntity changeEntity = qualFilingChangeDomainService.get(id); + if (changeEntity == null) { + throw new BizException(ErrorCode.QUAL_FILING_CHANGE_NOT_FOUND); + } + + QualFilingChangeAggregationCO detail = new QualFilingChangeAggregationCO(); + BeanUtils.copyProperties(toCO(changeEntity), detail); + + Long changeFilingId = changeEntity.getChangeFilingId(); + if (changeFilingId == null) { + return SingleResponse.success(detail); + } + + // 承诺书 + QualFilingCommitmentChangeE commitmentChangeE = qualFilingCommitmentChangeGateway.getByFilingId(changeFilingId); + if (commitmentChangeE != null) { + detail.setCommitment(qualFilingCommitmentChangeCmdConvertor.convertChangeEToCO(commitmentChangeE)); + } + + // 装备清单 + List equipmentChangeEs = qualFilingEquipmentChangeGateway.listByFilingId(changeFilingId); + if (!CollectionUtils.isEmpty(equipmentChangeEs)) { + detail.setEquipmentList(qualFilingEquipmentChangeCmdConvertor.convertChangeEListToCOList(equipmentChangeEs)); + } + + // 材料清单 + List materialChangeEs = qualFilingMaterialChangeGateway.listByFilingId(changeFilingId); + if (!CollectionUtils.isEmpty(materialChangeEs)) { + detail.setMaterialList(qualFilingMaterialChangeCmdConvertor.convertChangeEListToCOList(materialChangeEs)); + } + + // 人员清单 + List personnelChangeEs = qualFilingPersonnelChangeGateway.listByFilingId(changeFilingId); + if (!CollectionUtils.isEmpty(personnelChangeEs)) { + detail.setPersonnelList(qualFilingPersonnelChangeCmdConvertor.convertChangeEListToCOList(personnelChangeEs)); + } + + // 人员证书清单 + List personnelCertChangeEs = qualFilingPersonnelCertChangeGateway.listByFilingId(changeFilingId); + if (!CollectionUtils.isEmpty(personnelCertChangeEs)) { + detail.setPersonnelCertList(qualFilingPersonnelCertChangeCmdConvertor.convertChangeEListToCOList(personnelCertChangeEs)); + } + + return SingleResponse.success(detail); + } + /** * 聚合保存或编辑前的状态校验 *
      diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/QualFilingChangeApi.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/QualFilingChangeApi.java index ab3f870..62e30b3 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/QualFilingChangeApi.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/QualFilingChangeApi.java @@ -1,5 +1,6 @@ package org.qinan.safetyeval.client.api; +import org.qinan.safetyeval.client.co.QualFilingChangeAggregationCO; import org.qinan.safetyeval.client.co.QualFilingChangeComplianceCheckResultCO; import org.qinan.safetyeval.client.co.QualFilingChangeHistoryCO; import org.qinan.safetyeval.client.co.QualFilingChangeCO; @@ -45,4 +46,6 @@ public interface QualFilingChangeApi { SingleResponse aggregationSaveOrEdit(AggregationSaveOrEditQualFilingChangeCmd cmd); void review(QualFilingChangeReviewAddCmd cmd); + + SingleResponse detail(Long id); } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingChangeAggregationCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingChangeAggregationCO.java new file mode 100644 index 0000000..3af4db4 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingChangeAggregationCO.java @@ -0,0 +1,32 @@ +package org.qinan.safetyeval.client.co; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * 备案变更详情聚合 CO(5 个子表聚合) + * + * @author safety-eval + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class QualFilingChangeAggregationCO extends QualFilingChangeCO { + + @ApiModelProperty(value = "法定代表人承诺书") + private QualFilingCommitmentCO commitment; + + @ApiModelProperty(value = "变更装备列表") + private List equipmentList; + + @ApiModelProperty(value = "变更材料列表") + private List materialList; + + @ApiModelProperty(value = "变更人员列表") + private List personnelList; + + @ApiModelProperty(value = "变更人员证书列表") + private List personnelCertList; +} \ No newline at end of file From fe7a7607c55637d4c2be07fb8575de65dad8b686 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B2=91=E6=BA=AA?= <1015733727@qq.com> Date: Thu, 2 Jul 2026 17:12:08 +0800 Subject: [PATCH 06/12] =?UTF-8?q?feat:=20=E8=B5=84=E8=B4=A8=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E9=80=9A=E8=BF=87,=E9=80=9A=E8=BF=87=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/executor/QualFilingExecutor.java | 66 +++++++++++++++++++ .../QualFilingChangeGatewayImpl.java | 2 +- .../gatewayimpl/QualFilingGatewayImpl.java | 4 +- 3 files changed, 68 insertions(+), 4 deletions(-) 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 d9e7995..e69e320 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,19 +1,28 @@ package org.qinan.safetyeval.app.executor; +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; +import org.qinan.safetyeval.client.change.request.QualFilingEquipmentChangeAddCmd; +import org.qinan.safetyeval.client.change.request.QualFilingMaterialChangeAddCmd; +import org.qinan.safetyeval.client.change.request.QualFilingPersonnelChangeAddCmd; 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.QualFilingApplyTypeEnum; +import org.qinan.safetyeval.domain.constant.QualFilingReviewResultEnum; import org.qinan.safetyeval.domain.entity.*; import org.qinan.safetyeval.domain.query.PageResult; import org.qinan.safetyeval.domain.service.QualFilingDomainService; +import org.qinan.safetyeval.infrastructure.dataobject.*; +import org.qinan.safetyeval.infrastructure.mapper.*; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -35,6 +44,22 @@ public class QualFilingExecutor implements QualFilingApi { @Resource private QualFilingOrchestrator qualFilingOrchestrator; + @Resource + private QualFilingChangeExecutor qualFilingChangeExecutor; + + @Resource + private QualFilingMapper qualFilingMapper; + @Resource + private QualFilingCommitmentMapper qualFilingCommitmentMapper; + @Resource + private QualFilingEquipmentMapper qualFilingEquipmentMapper; + @Resource + private QualFilingMaterialMapper qualFilingMaterialMapper; + @Resource + private QualFilingPersonnelMapper qualFilingPersonnelMapper; + @Resource + private QualFilingPersonnelCertMapper qualFilingPersonnelCertMapper; + @Override public SingleResponse add(QualFilingAddCmd cmd) { QualFilingEntity entity = new QualFilingEntity(); @@ -179,8 +204,49 @@ public class QualFilingExecutor implements QualFilingApi { } @Override + @Transactional(rollbackFor = Exception.class) public void review(QualFilingReviewAddCmd cmd) { qualFilingDomainService.review(cmd.getFilingId(), cmd.getReviewResult(), cmd.getReviewResultRemark(), cmd.getFilingExpertId(), cmd.getFilingExpertName(), cmd.getReviewOpinion()); + if (QualFilingReviewResultEnum.PASS.getCode() == Integer.parseInt(cmd.getReviewResult())) { + // 审核通过,需要新增资质变更记录 + AggregationSaveOrEditQualFilingChangeCmd cmdSync = new AggregationSaveOrEditQualFilingChangeCmd(); + // 基本信息 + QualFilingDO qualFilingDO = qualFilingMapper.selectById(cmd.getFilingId()); + QualFilingChangeAddCmd qualFilingChangeAddCmd = new QualFilingChangeAddCmd(); + BeanUtils.copyProperties(qualFilingDO, qualFilingChangeAddCmd, "id"); + cmdSync.setQualFilingChangeAddCmd(qualFilingChangeAddCmd); + // 备案承诺书 + QualFilingCommitmentDO qualFilingCommitmentDO = qualFilingCommitmentMapper.selectOne(new LambdaQueryWrapper() + .eq(QualFilingCommitmentDO::getFilingId, cmd.getFilingId())); + QualFilingCommitmentChangeAddCmd qualFilingCommitmentChangeAddCmd = new QualFilingCommitmentChangeAddCmd(); + BeanUtils.copyProperties(qualFilingCommitmentDO, qualFilingCommitmentChangeAddCmd); + cmdSync.setQualFilingCommitmentChangeAddCmd(qualFilingCommitmentChangeAddCmd); + // 备案装备 + List qualFilingEquipmentDOs = qualFilingEquipmentMapper.selectList(new LambdaQueryWrapper() + .eq(QualFilingEquipmentDO::getFilingId, cmd.getFilingId())); + cmdSync.setQualFilingEquipmentChangeAddCmds(qualFilingEquipmentDOs.stream().map(item -> { + QualFilingEquipmentChangeAddCmd qualFilingEquipmentChangeAddCmd = new QualFilingEquipmentChangeAddCmd(); + BeanUtils.copyProperties(item, qualFilingEquipmentChangeAddCmd); + return qualFilingEquipmentChangeAddCmd; + }).collect(Collectors.toList())); + // 备案材料清单 + List qualFilingMaterialDOs = qualFilingMaterialMapper.selectList(new LambdaQueryWrapper() + .eq(QualFilingMaterialDO::getFilingId, cmd.getFilingId())); + cmdSync.setQualFilingMaterialChangeAddCmds(qualFilingMaterialDOs.stream().map(item -> { + QualFilingMaterialChangeAddCmd qualFilingMaterialChangeAddCmd = new QualFilingMaterialChangeAddCmd(); + BeanUtils.copyProperties(item, qualFilingMaterialChangeAddCmd); + return qualFilingMaterialChangeAddCmd; + }).collect(Collectors.toList())); + // 备案人员 + List qualFilingPersonnelDOs = qualFilingPersonnelMapper.selectList(new LambdaQueryWrapper() + .eq(QualFilingPersonnelDO::getFilingId, cmd.getFilingId())); + cmdSync.setQualFilingPersonnelChangeAddCmds(qualFilingPersonnelDOs.stream().map(item -> { + QualFilingPersonnelChangeAddCmd qualFilingPersonnelChangeAddCmd = new QualFilingPersonnelChangeAddCmd(); + BeanUtils.copyProperties(item, qualFilingPersonnelChangeAddCmd); + return qualFilingPersonnelChangeAddCmd; + }).collect(Collectors.toList())); + qualFilingChangeExecutor.aggregationSaveOrEdit(cmdSync); + } } private QualFilingCO toLegacyCO(QualFilingEntity entity) { diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingChangeGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingChangeGatewayImpl.java index 59c644c..8c72b51 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingChangeGatewayImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingChangeGatewayImpl.java @@ -200,7 +200,7 @@ public class QualFilingChangeGatewayImpl implements QualFilingChangeGateway { .stream().map(QualFilingPersonnelChangeE::getSourcePersonnelId).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(sourcePersonnelIds)) { List orgPersonnelCertDOS = orgPersonnelCertMapper.selectList(new LambdaQueryWrapper() - .eq(OrgPersonnelCertDO::getPersonnelId, sourcePersonnelIds)); + .in(OrgPersonnelCertDO::getPersonnelId, sourcePersonnelIds)); if (!CollectionUtils.isEmpty(orgPersonnelCertDOS)) { for (OrgPersonnelCertDO orgPersonnelCertDO : orgPersonnelCertDOS) { QualFilingPersonnelCertChangeDO qualFilingPersonnelCertChangeDO = diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingGatewayImpl.java index 929413e..fa540d3 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingGatewayImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingGatewayImpl.java @@ -200,7 +200,7 @@ public class QualFilingGatewayImpl implements QualFilingGateway { List sourcePersonnelIds = personnelEntities.stream().map(QualFilingPersonnelEntity::getSourcePersonnelId).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(sourcePersonnelIds)) { List orgPersonnelCertDOS = orgPersonnelCertMapper.selectList(new LambdaQueryWrapper() - .eq(OrgPersonnelCertDO::getPersonnelId, sourcePersonnelIds)); + .in(OrgPersonnelCertDO::getPersonnelId, sourcePersonnelIds)); if (!CollectionUtils.isEmpty(orgPersonnelCertDOS)) { for (OrgPersonnelCertDO orgPersonnelCertDO : orgPersonnelCertDOS) { QualFilingPersonnelCertDO qualFilingPersonnelCertDO = new QualFilingPersonnelCertDO(); @@ -236,7 +236,6 @@ public class QualFilingGatewayImpl implements QualFilingGateway { * @param reviewOpinion 审核意见 */ @Override - @Transactional(rollbackFor = Exception.class) public void review(Long filingId, String reviewResult, String reviewResultRemark, Long filingExpertId, String filingExpertName, String reviewOpinion) { // 保存审核记录 QualFilingReviewDO qualFilingReviewDO = new QualFilingReviewDO(); @@ -258,7 +257,6 @@ public class QualFilingGatewayImpl implements QualFilingGateway { filing.setFilingReviewId(qualFilingReviewDO.getId()); InsertFieldDefaults.applyForUpdate(filing); qualFilingMapper.updateById(filing); - //todo 审核通过是否需要新增资质变更记录 } /** From 1581e963c9e306ea9bb5de08f098a2a8da4bed6e Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Thu, 2 Jul 2026 18:49:38 +0800 Subject: [PATCH 07/12] message --- .../adapter/web/AccountController.java | 33 +++++++++++++++++++ .../safetyeval/client/dto/SendMessageCmd.java | 27 +++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SendMessageCmd.java diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java index 3ac334f..5f98b79 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java @@ -1,14 +1,22 @@ package org.qinan.safetyeval.adapter.web; +import cn.hutool.json.JSONUtil; +import com.jjb.saas.message.client.message.facede.MessageFacade; +import com.jjb.saas.message.client.message.request.MessageSendCmd; +import com.jjb.saas.message.client.message.request.MessageTargetCmd; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import java.util.UUID; +import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboReference; import org.qinan.safetyeval.client.api.AccountApi; import org.qinan.safetyeval.client.co.AccountCO; import org.qinan.safetyeval.client.dto.AccountAddCmd; import org.qinan.safetyeval.client.dto.AccountModifyCmd; import org.qinan.safetyeval.client.dto.AccountPageQuery; import org.qinan.safetyeval.client.dto.PageResponse; +import org.qinan.safetyeval.client.dto.SendMessageCmd; import org.qinan.safetyeval.client.dto.SingleResponse; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; @@ -25,6 +33,7 @@ import javax.annotation.Resource; * * @author safety-eval */ +@Slf4j @Api(tags = "用户管理") @RestController @RequestMapping("/account") @@ -33,6 +42,9 @@ public class AccountController { @Resource private AccountApi accountApi; + @DubboReference + private MessageFacade messageFacade; + @ApiOperation("新增用户") @PostMapping("/save") public SingleResponse add(@Validated @RequestBody AccountAddCmd cmd) { @@ -62,4 +74,25 @@ public class AccountController { public PageResponse page(@Validated AccountPageQuery query) { return accountApi.page(query); } + + @ApiOperation("发送短信") + @PostMapping("/sendMessage") + public com.alibaba.cola.dto.SingleResponse sendMessage(@Validated @RequestBody SendMessageCmd cmd) { + MessageSendCmd messageSendCmd = new MessageSendCmd(); + messageSendCmd.setBusinessId(UUID.randomUUID().toString().replace("-", "")); + + MessageTargetCmd messageTargetCmd = new MessageTargetCmd(); + messageTargetCmd.setUserId(cmd.getUserId()); + messageSendCmd.setTargetCmd(messageTargetCmd); + + messageSendCmd.setSourceCode("MS000146"); + messageSendCmd.setNeedTokenEnum(false); + messageSendCmd.setParams(cmd.getParams()); + + log.info("发送短信参数: messageSendCmd: {}", JSONUtil.toJsonStr(messageSendCmd)); + com.alibaba.cola.dto.SingleResponse result = messageFacade.send(messageSendCmd); + log.info("发送短信结果: result: {}", JSONUtil.toJsonStr(result)); + return result; + } + } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SendMessageCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SendMessageCmd.java new file mode 100644 index 0000000..6517b99 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SendMessageCmd.java @@ -0,0 +1,27 @@ +package org.qinan.safetyeval.client.dto; + +import io.swagger.annotations.ApiModelProperty; +import java.util.Map; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import lombok.Data; + +/** + * 发送短信命令 + * + * @author safety-eval + */ +@Data +public class SendMessageCmd { + + @ApiModelProperty(value = "消息接受人ID", required = true) + @NotNull(message = "消息接受人ID不能为空") + private Long userId; + + @ApiModelProperty(value = "消息模板编码", required = true) + @NotBlank(message = "消息模板编码不能为空") + private String sourceCode; + + @ApiModelProperty(value = "消息模板参数") + private Map params; +} \ No newline at end of file From a6704fb7341286ed25db41c15b4eaebfd7deef0a Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Fri, 3 Jul 2026 09:45:19 +0800 Subject: [PATCH 08/12] message --- .../adapter/web/AccountController.java | 4 +- .../web/QualFilingChangeController.java | 39 ------------------- .../safetyeval/client/dto/SendMessageCmd.java | 6 +-- 3 files changed, 6 insertions(+), 43 deletions(-) diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java index 5f98b79..a2b4682 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java @@ -42,7 +42,7 @@ public class AccountController { @Resource private AccountApi accountApi; - @DubboReference + @DubboReference(protocol = "dubbo", url = "${safety-eval.gbs-user-sync.user-facade-url:}") private MessageFacade messageFacade; @ApiOperation("新增用户") @@ -78,11 +78,13 @@ public class AccountController { @ApiOperation("发送短信") @PostMapping("/sendMessage") public com.alibaba.cola.dto.SingleResponse sendMessage(@Validated @RequestBody SendMessageCmd cmd) { + MessageSendCmd messageSendCmd = new MessageSendCmd(); messageSendCmd.setBusinessId(UUID.randomUUID().toString().replace("-", "")); MessageTargetCmd messageTargetCmd = new MessageTargetCmd(); messageTargetCmd.setUserId(cmd.getUserId()); + messageTargetCmd.setMobile(cmd.getMobile()); messageSendCmd.setTargetCmd(messageTargetCmd); messageSendCmd.setSourceCode("MS000146"); diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingChangeController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingChangeController.java index 5d2e4ef..42a8022 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingChangeController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingChangeController.java @@ -27,23 +27,6 @@ public class QualFilingChangeController { @Resource private QualFilingChangeApi qualFilingChangeApi; - @ApiOperation("新增备案变更") - @PostMapping("/save") - public SingleResponse add(@Validated @RequestBody QualFilingChangeAddCmd cmd) { - return qualFilingChangeApi.add(cmd); - } - - @ApiOperation("查询备案变更详情") - @GetMapping("/get") - public SingleResponse get(@ApiParam("主键ID") @RequestParam Long id) { - return qualFilingChangeApi.get(id); - } - - @ApiOperation("修改备案变更") - @PostMapping("/modify") - public SingleResponse modify(@Validated @RequestBody QualFilingChangeModifyCmd cmd) { - return qualFilingChangeApi.modify(cmd); - } @ApiOperation("删除备案变更") @PostMapping("/delete") @@ -57,17 +40,6 @@ public class QualFilingChangeController { return qualFilingChangeApi.page(query); } - @ApiOperation("发起备案变更(克隆草稿)") - @PostMapping("/start") - public SingleResponse start(@ApiParam("备案申请id") @RequestParam Long filingId) { - return qualFilingChangeApi.start(filingId); - } - - @ApiOperation("提交备案变更") - @PostMapping("/submit") - public SingleResponse submit(@Validated @RequestBody org.qinan.safetyeval.client.dto.QualFilingChangeSubmitCmd cmd) { - return qualFilingChangeApi.submit(cmd); - } @ApiOperation("备案变更历史") @GetMapping("/history") @@ -76,17 +48,6 @@ public class QualFilingChangeController { return qualFilingChangeApi.history(filingId); } - @ApiOperation("变更审核通过") - @PostMapping("/approve") - public SingleResponse approve(@ApiParam("备案变更id") @RequestParam Long changeId) { - return qualFilingChangeApi.approve(changeId); - } - - @ApiOperation("变更审核打回") - @PostMapping("/reject") - public SingleResponse reject(@Validated @RequestBody QualFilingRejectCmd cmd) { - return qualFilingChangeApi.reject(cmd); - } @ApiOperation("聚合新增or编辑资质备案变更申请") @PostMapping("/aggregationSaveOrEdit") diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SendMessageCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SendMessageCmd.java index 6517b99..e0186df 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SendMessageCmd.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SendMessageCmd.java @@ -18,9 +18,9 @@ public class SendMessageCmd { @NotNull(message = "消息接受人ID不能为空") private Long userId; - @ApiModelProperty(value = "消息模板编码", required = true) - @NotBlank(message = "消息模板编码不能为空") - private String sourceCode; + @ApiModelProperty(value = "手机号", required = true) + @NotBlank(message = "手机号不能为空") + private String mobile; @ApiModelProperty(value = "消息模板参数") private Map params; From 883e125e947533575747a08a2a6f382a7eead586 Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Fri, 3 Jul 2026 09:46:27 +0800 Subject: [PATCH 09/12] message --- .../org/qinan/safetyeval/adapter/web/AccountController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java index a2b4682..cbdc0a6 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/AccountController.java @@ -42,7 +42,7 @@ public class AccountController { @Resource private AccountApi accountApi; - @DubboReference(protocol = "dubbo", url = "${safety-eval.gbs-user-sync.user-facade-url:}") + @DubboReference private MessageFacade messageFacade; @ApiOperation("新增用户") From 0dceb829f8a6fff97bb2a925468355d7bf429648 Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Fri, 3 Jul 2026 10:07:24 +0800 Subject: [PATCH 10/12] message --- .../safetyeval/infrastructure/config/MybatisPlusConfig.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/config/MybatisPlusConfig.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/config/MybatisPlusConfig.java index 2c7d444..3e8d206 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/config/MybatisPlusConfig.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/config/MybatisPlusConfig.java @@ -15,7 +15,8 @@ import org.springframework.context.annotation.Configuration; * @author safety-eval */ @Configuration -@MapperScan("org.qinan.safetyeval.infrastructure") +@MapperScan({"org.qinan.safetyeval.infrastructure.mapper" +, "org.qinan.safetyeval.infrastructure.persistence.mapper"}) @EnableConfigurationProperties(ServerProperties.class) public class MybatisPlusConfig { From e1578d99387c9dcca4b4ea6afd62e1f6a2fb0ab7 Mon Sep 17 00:00:00 2001 From: zhanglei Date: Fri, 3 Jul 2026 10:18:14 +0800 Subject: [PATCH 11/12] =?UTF-8?q?feat:=20=E4=BB=A3=E7=A0=81=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/GlobalExceptionHandler.java | 10 ++++---- .../app/executor/AccountExecutor.java | 23 ++++++++++++++++++- .../app/executor/QualFilingExecutor.java | 2 +- .../client/dto/QualFilingChangeAddCmd.java | 2 ++ .../safetyeval/client/dto/SingleResponse.java | 4 ++++ .../support/InsertFieldDefaults.java | 7 +++++- 6 files changed, 40 insertions(+), 8 deletions(-) diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/handler/GlobalExceptionHandler.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/handler/GlobalExceptionHandler.java index cb85e69..0fc7e4e 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/handler/GlobalExceptionHandler.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/handler/GlobalExceptionHandler.java @@ -34,7 +34,7 @@ public class GlobalExceptionHandler { @ExceptionHandler(BizException.class) public ResponseEntity> handleBizException(BizException exception) { String message = message("error." + exception.getCode(), exception.getMessage()); - return response(HttpStatus.BAD_REQUEST, exception.getCode(), message); + return response(HttpStatus.OK, exception.getCode(), message); } @ExceptionHandler(MethodArgumentNotValidException.class) @@ -42,7 +42,7 @@ public class GlobalExceptionHandler { MethodArgumentNotValidException exception) { FieldError fieldError = exception.getBindingResult().getFieldError(); String fallback = fieldError == null ? null : fieldError.getDefaultMessage(); - return response(HttpStatus.BAD_REQUEST, VALIDATION_ERROR_CODE, + return response(HttpStatus.OK, VALIDATION_ERROR_CODE, message("validation.failed", fallback)); } @@ -50,20 +50,20 @@ public class GlobalExceptionHandler { public ResponseEntity> handleBindException(BindException exception) { FieldError fieldError = exception.getBindingResult().getFieldError(); String fallback = fieldError == null ? null : fieldError.getDefaultMessage(); - return response(HttpStatus.BAD_REQUEST, VALIDATION_ERROR_CODE, + return response(HttpStatus.OK, VALIDATION_ERROR_CODE, message("validation.failed", fallback)); } @ExceptionHandler(ConstraintViolationException.class) public ResponseEntity> handleConstraintViolation( ConstraintViolationException exception) { - return response(HttpStatus.BAD_REQUEST, VALIDATION_ERROR_CODE, + return response(HttpStatus.OK, VALIDATION_ERROR_CODE, message("validation.failed", exception.getMessage())); } @ExceptionHandler({HttpMessageNotReadableException.class, MissingServletRequestParameterException.class}) public ResponseEntity> handleInvalidRequest(Exception exception) { - return response(HttpStatus.BAD_REQUEST, VALIDATION_ERROR_CODE, + return response(HttpStatus.OK, VALIDATION_ERROR_CODE, message("request.invalid", exception.getMessage())); } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/AccountExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/AccountExecutor.java index 22ba9a7..db11d48 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/AccountExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/AccountExecutor.java @@ -1,5 +1,8 @@ package org.qinan.safetyeval.app.executor; +import com.jjb.saas.system.client.user.request.UserAddCmd; +import com.zcloud.gbscommon.utils.MD5; +import com.zcloud.gbscommon.utils.Sm2Util; import org.qinan.safetyeval.client.api.AccountApi; import org.qinan.safetyeval.client.co.AccountCO; import org.qinan.safetyeval.client.dto.AccountAddCmd; @@ -12,9 +15,12 @@ import org.qinan.safetyeval.domain.query.AccountQuery; import org.qinan.safetyeval.domain.query.PageResult; import org.qinan.safetyeval.domain.service.AccountDomainService; import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter; +import org.qinan.safetyeval.infrastructure.adapter.gbs.GbsUserFacadeClient; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 用户执行器(App层) @@ -27,8 +33,15 @@ public class AccountExecutor implements AccountApi { @Lazy @Autowired(required = false) private AccountDomainService accountDomainService; + @Autowired + private GbsUserFacadeClient gbsUserFacadeClient; + @Value("${def.password:a123456}") + private String defPassword; + @Value("${def.publicKey:0402df2195296d4062ac85ad766994d73e871b887e18efb9a9a06b4cebc72372869b7da6c347c129dee2b46a0f279ff066b01c76208c2a052af75977c722a2ccee}") + private String publicKey; @Override + @Transactional(rollbackFor = Exception.class) public SingleResponse add(AccountAddCmd cmd) { AccountEntity entity = new AccountEntity(); entity.setUserName(cmd.getUserName()); @@ -37,8 +50,16 @@ public class AccountExecutor implements AccountApi { entity.setPassword(cmd.getPassword()); entity.setProfileUrl(cmd.getProfileUrl()); entity.setType(cmd.getType()); - AccountEntity result = accountDomainService.add(entity); + // 同步gbs用户 + UserAddCmd userAddCmd = new UserAddCmd(); + userAddCmd.setId(result.getId()); + userAddCmd.setAccount(result.getAccount()); + userAddCmd.setTenantId(result.getTenantId()); + userAddCmd.setName(result.getUserName()); + String encrypt = Sm2Util.encryptHex(MD5.md5(defPassword), publicKey); + userAddCmd.setPassword(encrypt); + gbsUserFacadeClient.add(userAddCmd); return SingleResponse.success(toCO(result)); } 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 e69e320..1b3d4ac 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 @@ -26,7 +26,6 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; -import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -214,6 +213,7 @@ public class QualFilingExecutor implements QualFilingApi { QualFilingDO qualFilingDO = qualFilingMapper.selectById(cmd.getFilingId()); QualFilingChangeAddCmd qualFilingChangeAddCmd = new QualFilingChangeAddCmd(); BeanUtils.copyProperties(qualFilingDO, qualFilingChangeAddCmd, "id"); + qualFilingChangeAddCmd.setFilingId(qualFilingDO.getId()); cmdSync.setQualFilingChangeAddCmd(qualFilingChangeAddCmd); // 备案承诺书 QualFilingCommitmentDO qualFilingCommitmentDO = qualFilingCommitmentMapper.selectOne(new LambdaQueryWrapper() diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingChangeAddCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingChangeAddCmd.java index c9aeb06..5da5823 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingChangeAddCmd.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/QualFilingChangeAddCmd.java @@ -19,6 +19,8 @@ public class QualFilingChangeAddCmd { @ApiModelProperty(value = "备案申请id") private Long filingId; + private Long orgId; + @ApiModelProperty(value = "关联变更的id") private Long changeFilingId; diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SingleResponse.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SingleResponse.java index 0ff43b7..957f299 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SingleResponse.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/SingleResponse.java @@ -23,6 +23,9 @@ public class SingleResponse { @ApiModelProperty(value = "响应消息") private String message; + @ApiModelProperty(value = "错误响应消息") + private String errMessage; + @ApiModelProperty(value = "响应数据") private T data; @@ -46,6 +49,7 @@ public class SingleResponse { response.setSuccess(false); response.setCode(code); response.setMessage(message); + response.setErrMessage(message); return response; } } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/support/InsertFieldDefaults.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/support/InsertFieldDefaults.java index e1c7139..2f48498 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/support/InsertFieldDefaults.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/support/InsertFieldDefaults.java @@ -2,7 +2,6 @@ package org.qinan.safetyeval.infrastructure.support; import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter; import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter; -import org.qinan.safetyeval.infrastructure.dataobject.QualFilingExpertDO; import java.lang.reflect.Method; import java.time.LocalDateTime; @@ -86,6 +85,8 @@ public final class InsertFieldDefaults { LocalDateTime now = LocalDateTime.now(); Long userId = AuthUserContextAdapter.getCurrentUserId(); String userName = AuthUserContextAdapter.getCurrentUserName(); + // 机构信息id + Long orgInfoId = ThreadLocalUserInfoAdapter.get(); setIfNull(dataObject, "updateTime", now); if (userId != null) { @@ -94,6 +95,10 @@ public final class InsertFieldDefaults { if (userName != null) { setIfNull(dataObject, "updateName", userName); } + if (orgInfoId != null) { + // 机构信息id + setIfNull(dataObject, "orgId", orgInfoId); + } } private static void setIfNull(Object target, String property, Object value) { From aa308ea9051afe8683680a45e4c0d176e3b37e01 Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Fri, 3 Jul 2026 10:30:58 +0800 Subject: [PATCH 12/12] message --- .../client/change/request/QualFilingMaterialChangeAddCmd.java | 2 +- .../infrastructure/gatewayimpl/QualFilingChangeGatewayImpl.java | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/request/QualFilingMaterialChangeAddCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/request/QualFilingMaterialChangeAddCmd.java index 052a9e7..e68c87a 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/request/QualFilingMaterialChangeAddCmd.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/change/request/QualFilingMaterialChangeAddCmd.java @@ -28,7 +28,7 @@ public class QualFilingMaterialChangeAddCmd implements Serializable { */ @ApiModelProperty(value = "材料类型1,申请材料目录(原件),2,申请书(原件),3,法人证明(复印件),4,三年内无重大违法失信记录查询证明,5,法定代表人承诺书(原件),6,固定资产法定证明材料,7,工作场所及档案室面积证明,8,安全评价师专业能力证明,9,相关负责人证明材料,10,机构内部管理制度", required = true) @NotBlank(message = "材料类型1,申请材料目录(原件),2,申请书(原件),3,法人证明(复印件),4,三年内无重大违法失信记录查询证明,5,法定代表人承诺书(原件),6,固定资产法定证明材料,7,工作场所及档案室面积证明,8,安全评价师专业能力证明,9,相关负责人证明材料,10,机构内部管理制度不能为空") - private String materialType; + private Integer materialType; /** * 材料内容 */ diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingChangeGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingChangeGatewayImpl.java index 8c72b51..72d37af 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingChangeGatewayImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/QualFilingChangeGatewayImpl.java @@ -145,8 +145,10 @@ public class QualFilingChangeGatewayImpl implements QualFilingChangeGateway { QualFilingChangeDO dataObject = qualFilingChangeDoConvertor.convertEeToDo(entity); if (Objects.nonNull(dataObject.getId())) { // 编辑 + InsertFieldDefaults.applyForUpdate(dataObject); qualFilingChangeMapper.updateById(dataObject); } else { + InsertFieldDefaults.apply(dataObject); qualFilingChangeMapper.insert(dataObject); } if (Objects.isNull(dataObject.getId())) {