From 38c8a976c50c02b094e987cc230e3389f00447ca Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Thu, 2 Jul 2026 10:49:26 +0800 Subject: [PATCH] =?UTF-8?q?/compliance-check=20=E5=90=88=E8=A7=84=E6=A3=80?= =?UTF-8?q?=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/QualFilingChangeController.java | 8 + .../executor/QualFilingChangeExecutor.java | 7 + .../orchestrator/QualFilingOrchestrator.java | 152 ++++++++++++++++++ .../client/api/QualFilingChangeApi.java | 5 + ...alFilingChangeComplianceCheckResultCO.java | 22 +++ .../QualFilingCommitmentChangeGateway.java | 5 + .../QualFilingMaterialChangeGateway.java | 5 + .../QualFilingPersonnelChangeGateway.java | 23 +++ ...QualFilingCommitmentChangeDoConvertor.java | 10 ++ .../QualFilingPersonnelChangeDoConvertor.java | 10 ++ ...QualFilingCommitmentChangeGatewayImpl.java | 9 ++ .../QualFilingMaterialChangeGatewayImpl.java | 5 + .../QualFilingPersonnelChangeGatewayImpl.java | 21 +++ .../QualFilingCommitmentChangeRepository.java | 5 + .../QualFilingMaterialChangeRepository.java | 5 + .../QualFilingPersonnelChangeRepository.java | 20 +++ ...lFilingCommitmentChangeRepositoryImpl.java | 8 + ...ualFilingMaterialChangeRepositoryImpl.java | 10 ++ ...alFilingPersonnelChangeRepositoryImpl.java | 34 ++++ 19 files changed, 364 insertions(+) create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingChangeComplianceCheckResultCO.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 e8ca5a7..fec77e4 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 @@ -6,10 +6,12 @@ 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.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.List; /** * 备案变更适配层(Controller) @@ -84,4 +86,10 @@ public class QualFilingChangeController { public SingleResponse reject(@Validated @RequestBody QualFilingRejectCmd cmd) { return qualFilingChangeApi.reject(cmd); } + + @ApiOperation("合规检查") + @GetMapping("/compliance-check") + public SingleResponse> complianceCheck(@ApiParam("主键ID") @RequestParam Long id) { + return qualFilingChangeApi.complianceCheck(id); + } } 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 4194f6f..486e5de 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,6 +3,7 @@ package org.qinan.safetyeval.app.executor; import org.qinan.safetyeval.app.orchestrator.QualFilingOrchestrator; 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.co.QualFilingChangeHistoryCO; import org.qinan.safetyeval.client.dto.PageResponse; import org.qinan.safetyeval.client.dto.SingleResponse; @@ -21,6 +22,7 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.List; /** * 备案变更执行器(App层) @@ -154,6 +156,11 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { return SingleResponse.success(); } + @Override + public SingleResponse> complianceCheck(Long id) { + return SingleResponse.success(qualFilingOrchestrator.complianceCheckChange(id)); + } + private QualFilingChangeCO toCO(QualFilingChangeEntity entity) { if (entity == null) { return null; 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 34116ed..6729ebe 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 @@ -6,6 +6,10 @@ import org.qinan.safetyeval.client.dto.AggregationSaveOrEditQualFilingCmd; import org.qinan.safetyeval.client.dto.QualFilingModifyCmd; import org.qinan.safetyeval.client.dto.QualFilingPageQuery; import org.qinan.safetyeval.client.dto.SingleResponse; +import org.qinan.safetyeval.domain.change.gateway.QualFilingCommitmentChangeGateway; +import org.qinan.safetyeval.domain.change.gateway.QualFilingMaterialChangeGateway; +import org.qinan.safetyeval.domain.change.gateway.QualFilingPersonnelChangeGateway; +import org.qinan.safetyeval.domain.change.model.QualFilingCommitmentChangeE; import org.qinan.safetyeval.domain.constant.*; import org.qinan.safetyeval.domain.entity.*; import org.qinan.safetyeval.domain.exception.BizException; @@ -59,6 +63,15 @@ public class QualFilingOrchestrator { @Resource private QualFilingChangeDetailGateway qualFilingChangeDetailGateway; + @Resource + private QualFilingPersonnelChangeGateway qualFilingPersonnelChangeGateway; + + @Resource + private QualFilingCommitmentChangeGateway qualFilingCommitmentChangeGateway; + + @Resource + private QualFilingMaterialChangeGateway qualFilingMaterialChangeGateway; + @Resource private OrgInfoGateway orgInfoGateway; @@ -887,6 +900,145 @@ public class QualFilingOrchestrator { return co; } + /** + * 备案变更合规检查:根据变更ID逐项检查是否满足法规要求 + */ + public List complianceCheckChange(Long changeId) { + QualFilingChangeEntity change = qualFilingChangeGateway.get(changeId); + if (change == null) { + throw new BizException(ErrorCode.QUAL_FILING_NOT_FOUND); + } + + List results = new ArrayList<>(); + + // 1. 主体资格 + results.add(checkMainQualificationChange(change)); + + // 2. 场所与设备 + results.add(checkWorkplaceChange(change)); + + // 3. 人员数量与结构 + results.add(checkPersonnelCountChange(changeId)); + + // 4. 人员资历 + results.add(checkPersonnelExperienceChange(changeId)); + + // 5. 关键岗位要求(暂默认通过,标记警告) + results.add(buildChangeResult(QualFilingComplianceCheckEnum.KEY_POSITION, + QualFilingComplianceCheckEnum.STATUS_WARN)); + + // 6. 管理体系(暂无法判断,标记警告) + results.add(buildChangeResult(QualFilingComplianceCheckEnum.MANAGEMENT_SYSTEM, + QualFilingComplianceCheckEnum.STATUS_WARN)); + + // 7. 责任承诺 + results.add(checkCommitmentChange(changeId)); + + // 8. 信息公开 + results.add(checkInfoDisclosureChange(change)); + + // 9. 信用记录 + results.add(checkCreditRecordChange(changeId)); + + // 10. 其他 + results.add(buildChangeResult(QualFilingComplianceCheckEnum.OTHER, + QualFilingComplianceCheckEnum.STATUS_PASS)); + + return results; + } + + /** + * 主体资格:固定资产 >= 1000万元 + */ + private QualFilingChangeComplianceCheckResultCO checkMainQualificationChange(QualFilingChangeEntity change) { + boolean pass = change.getFixedAssetAmount() != null + && change.getFixedAssetAmount() >= 1_000_000_000L; + return buildChangeResult(QualFilingComplianceCheckEnum.MAIN_QUALIFICATION, + pass ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL); + } + + /** + * 场所与设备:工作场所建筑面积 >= 1000㎡ + */ + private QualFilingChangeComplianceCheckResultCO checkWorkplaceChange(QualFilingChangeEntity change) { + boolean pass = change.getWorkplaceArea() != null + && change.getWorkplaceArea() + .compareTo(new BigDecimal(QualFilingComplianceCheckEnum.WORKPLACE_LOWER)) >= 0; + return buildChangeResult(QualFilingComplianceCheckEnum.WORKPLACE, + pass ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL); + } + + /** + * 人员数量与结构:专职技术人员 >= 25人,中级注安师 >= 30% + */ + private QualFilingChangeComplianceCheckResultCO checkPersonnelCountChange(Long filingId) { + int total = qualFilingPersonnelChangeGateway.countByFilingId(filingId); + if (total == 0) { + return buildChangeResult(QualFilingComplianceCheckEnum.PERSONNEL_COUNT, + QualFilingComplianceCheckEnum.STATUS_FAIL); + } + int engineerCount = qualFilingPersonnelChangeGateway.countByFilingIdAndRegisterEngineerFlag(filingId, 1); + boolean pass = total >= QualFilingComplianceCheckEnum.PERSONNEL_COUNT_LOWER + && engineerCount * 100 / total >= QualFilingComplianceCheckEnum.PERSONNEL_RATE; + return buildChangeResult(QualFilingComplianceCheckEnum.PERSONNEL_COUNT, + pass ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL); + } + + /** + * 人员资历:所有专职技术人员在本行业领域工作二年以上 + */ + private QualFilingChangeComplianceCheckResultCO checkPersonnelExperienceChange(Long filingId) { + int total = qualFilingPersonnelChangeGateway.countByFilingId(filingId); + if (total == 0) { + return buildChangeResult(QualFilingComplianceCheckEnum.PERSONNEL_EXPERIENCE, + QualFilingComplianceCheckEnum.STATUS_FAIL); + } + LocalDate threshold = LocalDate.now().minusYears(2); + boolean allQualified = qualFilingPersonnelChangeGateway.countByFilingIdAndJoinWorkDateAfter(filingId, threshold) == 0; + return buildChangeResult(QualFilingComplianceCheckEnum.PERSONNEL_EXPERIENCE, + allQualified ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL); + } + + /** + * 责任承诺:qual_filing_commitment_change 表是否有数据 + */ + private QualFilingChangeComplianceCheckResultCO checkCommitmentChange(Long filingId) { + QualFilingCommitmentChangeE commitment = + qualFilingCommitmentChangeGateway.getByFilingId(filingId); + return buildChangeResult(QualFilingComplianceCheckEnum.COMMITMENT, + commitment != null ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL); + } + + /** + * 信息公开:info_disclosure_url 是否已填写 + */ + private QualFilingChangeComplianceCheckResultCO checkInfoDisclosureChange(QualFilingChangeEntity change) { + boolean pass = change.getInfoDisclosureUrl() != null + && !change.getInfoDisclosureUrl().isEmpty(); + return buildChangeResult(QualFilingComplianceCheckEnum.INFO_DISCLOSURE, + pass ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL); + } + + /** + * 信用记录:qual_filing_material_change 表 upload_status_code=2 且 material_type=4 + */ + private QualFilingChangeComplianceCheckResultCO checkCreditRecordChange(Long filingId) { + int count = qualFilingMaterialChangeGateway.countByFilingIdAndUploadStatusCodeAndMaterialType( + filingId, + QualFilingMaterialUploadStatusEnum.UPLOADED.getCode(), + String.valueOf(MaterialTypeEnum.NO_VIOLATION_RECORD.getCode())); + return buildChangeResult(QualFilingComplianceCheckEnum.CREDIT_RECORD, + count > 0 ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL); + } + + private QualFilingChangeComplianceCheckResultCO buildChangeResult(QualFilingComplianceCheckEnum item, String status) { + QualFilingChangeComplianceCheckResultCO co = new QualFilingChangeComplianceCheckResultCO(); + co.setTitle(item.getTitle()); + co.setDescription(item.getDescription()); + co.setStatus(status); + return co; + } + private Long resolveOrgId() { return orgContextResolver.resolveOrgId(null); } 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 65a6ae7..8f680cf 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.QualFilingChangeComplianceCheckResultCO; import org.qinan.safetyeval.client.co.QualFilingChangeHistoryCO; import org.qinan.safetyeval.client.co.QualFilingChangeCO; import org.qinan.safetyeval.client.dto.PageResponse; @@ -10,6 +11,8 @@ import org.qinan.safetyeval.client.dto.QualFilingChangePageQuery; import org.qinan.safetyeval.client.dto.QualFilingChangeSubmitCmd; import org.qinan.safetyeval.client.dto.QualFilingRejectCmd; +import java.util.List; + /** * 备案变更接口定义(Client层) */ @@ -34,4 +37,6 @@ public interface QualFilingChangeApi { SingleResponse approve(Long changeId); SingleResponse reject(QualFilingRejectCmd cmd); + + SingleResponse> complianceCheck(Long id); } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingChangeComplianceCheckResultCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingChangeComplianceCheckResultCO.java new file mode 100644 index 0000000..08af30d --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingChangeComplianceCheckResultCO.java @@ -0,0 +1,22 @@ +package org.qinan.safetyeval.client.co; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 备案变更合规检查结果CO + * + * @author safety-eval + */ +@Data +public class QualFilingChangeComplianceCheckResultCO { + + @ApiModelProperty(value = "检查项标题") + private String title; + + @ApiModelProperty(value = "检查项描述") + private String description; + + @ApiModelProperty(value = "检查结果状态:PASS 通过 / NOT_PASS 未通过 / WARN 警告") + private String status; +} diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingCommitmentChangeGateway.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingCommitmentChangeGateway.java index 017abd5..6f656e0 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingCommitmentChangeGateway.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingCommitmentChangeGateway.java @@ -41,4 +41,9 @@ public interface QualFilingCommitmentChangeGateway { * @return 结果 */ Boolean deletedQualFilingCommitmentChangeByIds(Long[] ids); + + /** + * 根据filingId查询承诺书 + */ + QualFilingCommitmentChangeE getByFilingId(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 104842e..f8eed49 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 @@ -41,4 +41,9 @@ public interface QualFilingMaterialChangeGateway { * @return 结果 */ Boolean deletedQualFilingMaterialChangeByIds(Long[] ids); + + /** + * 统计指定filingId下满足上传状态和材料类型的记录数 + */ + int countByFilingIdAndUploadStatusCodeAndMaterialType(Long filingId, Integer uploadStatusCode, String materialType); } diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingPersonnelChangeGateway.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingPersonnelChangeGateway.java index 2957713..3cfb21f 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingPersonnelChangeGateway.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/change/gateway/QualFilingPersonnelChangeGateway.java @@ -2,6 +2,9 @@ package org.qinan.safetyeval.domain.change.gateway; import org.qinan.safetyeval.domain.change.model.QualFilingPersonnelChangeE; +import java.time.LocalDate; +import java.util.List; + /** * 备案申请人员-变更网关 * @@ -41,4 +44,24 @@ public interface QualFilingPersonnelChangeGateway { * @return 结果 */ Boolean deletedQualFilingPersonnelChangeByIds(Long[] ids); + + /** + * 根据filingId查询备案申请人员-变更列表 + */ + List listByFilingId(Long filingId); + + /** + * 统计指定filingId下的人员总数 + */ + int countByFilingId(Long filingId); + + /** + * 统计指定filingId下注册工程师数量 + */ + int countByFilingIdAndRegisterEngineerFlag(Long filingId, Integer registerEngineerFlag); + + /** + * 统计指定filingId下参加工作时间晚于指定日期的人数 + */ + int countByFilingIdAndJoinWorkDateAfter(Long filingId, LocalDate joinWorkDate); } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingCommitmentChangeDoConvertor.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingCommitmentChangeDoConvertor.java index 61635e8..d65110f 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingCommitmentChangeDoConvertor.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingCommitmentChangeDoConvertor.java @@ -50,4 +50,14 @@ public interface QualFilingCommitmentChangeDoConvertor { * @return */ List converDosToCos(List qualFilingCommitmentChangeDos); + + /** + * DO转领域对象 + */ + QualFilingCommitmentChangeE converDoToEe(QualFilingCommitmentChangeDO qualFilingCommitmentChangeDO); + + /** + * DOs转领域对象列表 + */ + List converDosToEes(List qualFilingCommitmentChangeDOs); } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingPersonnelChangeDoConvertor.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingPersonnelChangeDoConvertor.java index a6a12f3..a8e83fb 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingPersonnelChangeDoConvertor.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/QualFilingPersonnelChangeDoConvertor.java @@ -50,4 +50,14 @@ public interface QualFilingPersonnelChangeDoConvertor { * @return */ List converDosToCos(List qualFilingPersonnelChangeDos); + + /** + * DO转领域对象 + */ + QualFilingPersonnelChangeE converDoToEe(QualFilingPersonnelChangeDO qualFilingPersonnelChangeDO); + + /** + * DOs转领域对象列表 + */ + List converDosToEes(List qualFilingPersonnelChangeDOs); } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gateway/QualFilingCommitmentChangeGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gateway/QualFilingCommitmentChangeGatewayImpl.java index 99ba647..e000525 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gateway/QualFilingCommitmentChangeGatewayImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gateway/QualFilingCommitmentChangeGatewayImpl.java @@ -45,4 +45,13 @@ public class QualFilingCommitmentChangeGatewayImpl implements QualFilingCommitme public Boolean deletedQualFilingCommitmentChangeByIds(Long[] ids) { return qualFilingCommitmentChangeRepository.deletedQualFilingCommitmentChangeByIds(ids); } + + @Override + public QualFilingCommitmentChangeE getByFilingId(Long filingId) { + QualFilingCommitmentChangeDO dataObject = qualFilingCommitmentChangeRepository.getByFilingId(filingId); + if (dataObject == null) { + return null; + } + return qualFilingCommitmentChangeDoConvertor.converDoToEe(dataObject); + } } 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 5c768af..27ddbbd 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 @@ -45,4 +45,9 @@ public class QualFilingMaterialChangeGatewayImpl implements QualFilingMaterialCh public Boolean deletedQualFilingMaterialChangeByIds(Long[] ids) { return qualFilingMaterialChangeRepository.deletedQualFilingMaterialChangeByIds(ids); } + + @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/QualFilingPersonnelChangeGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gateway/QualFilingPersonnelChangeGatewayImpl.java index 171585c..3b4fd94 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gateway/QualFilingPersonnelChangeGatewayImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gateway/QualFilingPersonnelChangeGatewayImpl.java @@ -45,4 +45,25 @@ public class QualFilingPersonnelChangeGatewayImpl implements QualFilingPersonnel public Boolean deletedQualFilingPersonnelChangeByIds(Long[] ids) { return qualFilingPersonnelChangeRepository.deletedQualFilingPersonnelChangeByIds(ids); } + + @Override + public java.util.List listByFilingId(Long filingId) { + return qualFilingPersonnelChangeDoConvertor.converDosToEes( + qualFilingPersonnelChangeRepository.listByFilingId(filingId)); + } + + @Override + public int countByFilingId(Long filingId) { + return qualFilingPersonnelChangeRepository.countByFilingId(filingId); + } + + @Override + public int countByFilingIdAndRegisterEngineerFlag(Long filingId, Integer registerEngineerFlag) { + return qualFilingPersonnelChangeRepository.countByFilingIdAndRegisterEngineerFlag(filingId, registerEngineerFlag); + } + + @Override + public int countByFilingIdAndJoinWorkDateAfter(Long filingId, java.time.LocalDate joinWorkDate) { + return qualFilingPersonnelChangeRepository.countByFilingIdAndJoinWorkDateAfter(filingId, joinWorkDate); + } } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/QualFilingCommitmentChangeRepository.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/QualFilingCommitmentChangeRepository.java index 3209140..5724b44 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/QualFilingCommitmentChangeRepository.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/QualFilingCommitmentChangeRepository.java @@ -62,4 +62,9 @@ public interface QualFilingCommitmentChangeRepository extends BaseRepository listByFilingId(Long filingId); + + /** + * 统计指定filingId下的人员总数 + */ + int countByFilingId(Long filingId); + + /** + * 统计指定filingId下注册工程师数量 + */ + int countByFilingIdAndRegisterEngineerFlag(Long filingId, Integer registerEngineerFlag); + + /** + * 统计指定filingId下参加工作时间晚于指定日期的人数 + */ + int countByFilingIdAndJoinWorkDateAfter(Long filingId, java.time.LocalDate joinWorkDate); + } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingCommitmentChangeRepositoryImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingCommitmentChangeRepositoryImpl.java index 300f753..2c2f6a0 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingCommitmentChangeRepositoryImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/repository/impl/QualFilingCommitmentChangeRepositoryImpl.java @@ -78,4 +78,12 @@ public class QualFilingCommitmentChangeRepositoryImpl extends BaseRepositoryImpl public Boolean deletedQualFilingCommitmentChangeByIds(Long[] ids) { return super.removeBatchEnByIds(Arrays.asList(ids)); } + + @Override + public QualFilingCommitmentChangeDO getByFilingId(Long filingId) { + return super.lambdaQuery() + .eq(QualFilingCommitmentChangeDO::getFilingId, filingId) + .eq(QualFilingCommitmentChangeDO::getDeleteEnum, BooleanEnum.FALSE.getValue()) + .one(); + } } 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 00c5800..816a6e7 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 @@ -93,4 +93,14 @@ public class QualFilingMaterialChangeRepositoryImpl extends BaseRepositoryImpl listByFilingId(Long filingId) { + return super.lambdaQuery() + .eq(QualFilingPersonnelChangeDO::getFilingId, filingId) + .eq(QualFilingPersonnelChangeDO::getDeleteEnum, BooleanEnum.FALSE.getValue()) + .list(); + } + + @Override + public int countByFilingId(Long filingId) { + return super.lambdaQuery() + .eq(QualFilingPersonnelChangeDO::getFilingId, filingId) + .eq(QualFilingPersonnelChangeDO::getDeleteEnum, BooleanEnum.FALSE.getValue()) + .count().intValue(); + } + + @Override + public int countByFilingIdAndRegisterEngineerFlag(Long filingId, Integer registerEngineerFlag) { + return super.lambdaQuery() + .eq(QualFilingPersonnelChangeDO::getFilingId, filingId) + .eq(QualFilingPersonnelChangeDO::getDeleteEnum, BooleanEnum.FALSE.getValue()) + .eq(QualFilingPersonnelChangeDO::getRegisterEngineerFlag, registerEngineerFlag) + .count().intValue(); + } + + @Override + public int countByFilingIdAndJoinWorkDateAfter(Long filingId, java.time.LocalDate joinWorkDate) { + return super.lambdaQuery() + .eq(QualFilingPersonnelChangeDO::getFilingId, filingId) + .eq(QualFilingPersonnelChangeDO::getDeleteEnum, BooleanEnum.FALSE.getValue()) + .gt(QualFilingPersonnelChangeDO::getJoinWorkDate, joinWorkDate) + .count().intValue(); + } }