/compliance-check

dev
luotaiqian 2026-07-02 17:00:51 +08:00
parent 119945d782
commit 6a4a832671
9 changed files with 171 additions and 5 deletions

View File

@ -4,6 +4,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import org.qinan.safetyeval.client.api.QualFilingChangeApi; 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.QualFilingChangeCO;
import org.qinan.safetyeval.client.co.QualFilingChangeComplianceCheckResultCO; import org.qinan.safetyeval.client.co.QualFilingChangeComplianceCheckResultCO;
import org.qinan.safetyeval.client.dto.*; import org.qinan.safetyeval.client.dto.*;
@ -105,4 +106,10 @@ public class QualFilingChangeController {
qualFilingChangeApi.review(cmd); qualFilingChangeApi.review(cmd);
return SingleResponse.success(); return SingleResponse.success();
} }
@ApiOperation("备案变更详情5表聚合")
@GetMapping("/detail")
public SingleResponse<QualFilingChangeAggregationCO> detail(@ApiParam("主键ID") @RequestParam Long id) {
return qualFilingChangeApi.detail(id);
}
} }

View File

@ -4,6 +4,7 @@ import org.mapstruct.Mapper;
import org.mapstruct.Mapping; import org.mapstruct.Mapping;
import org.qinan.safetyeval.client.change.request.QualFilingCommitmentChangeAddCmd; import org.qinan.safetyeval.client.change.request.QualFilingCommitmentChangeAddCmd;
import org.qinan.safetyeval.client.change.request.QualFilingCommitmentChangeUpdateCmd; 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.change.model.QualFilingCommitmentChangeE;
import org.qinan.safetyeval.domain.entity.QualFilingCommitmentEntity; import org.qinan.safetyeval.domain.entity.QualFilingCommitmentEntity;
@ -41,4 +42,10 @@ public interface QualFilingCommitmentChangeCmdConvertor {
@Mapping(target = "tenantId", ignore = true) @Mapping(target = "tenantId", ignore = true)
@Mapping(target = "orgId", ignore = true) @Mapping(target = "orgId", ignore = true)
QualFilingCommitmentEntity convertChangeEToEntity(QualFilingCommitmentChangeE changeE); QualFilingCommitmentEntity convertChangeEToEntity(QualFilingCommitmentChangeE changeE);
/**
* CO
*/
@Mapping(source = "filingChangeId", target = "filingId")
QualFilingCommitmentCO convertChangeEToCO(QualFilingCommitmentChangeE changeE);
} }

View File

@ -4,6 +4,7 @@ import org.mapstruct.Mapper;
import org.mapstruct.Mapping; import org.mapstruct.Mapping;
import org.qinan.safetyeval.client.change.request.QualFilingEquipmentChangeAddCmd; import org.qinan.safetyeval.client.change.request.QualFilingEquipmentChangeAddCmd;
import org.qinan.safetyeval.client.change.request.QualFilingEquipmentChangeUpdateCmd; 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.change.model.QualFilingEquipmentChangeE;
import org.qinan.safetyeval.domain.entity.QualFilingEquipmentEntity; import org.qinan.safetyeval.domain.entity.QualFilingEquipmentEntity;
@ -48,4 +49,15 @@ public interface QualFilingEquipmentChangeCmdConvertor {
* *
*/ */
List<QualFilingEquipmentEntity> convertChangeEListToEntityList(List<QualFilingEquipmentChangeE> changeEs); List<QualFilingEquipmentEntity> convertChangeEListToEntityList(List<QualFilingEquipmentChangeE> changeEs);
/**
* CO
*/
@Mapping(source = "filingChangeId", target = "filingId")
QualFilingEquipmentCO convertChangeEToCO(QualFilingEquipmentChangeE changeE);
/**
* CO
*/
List<QualFilingEquipmentCO> convertChangeEListToCOList(List<QualFilingEquipmentChangeE> changeEs);
} }

View File

@ -4,6 +4,7 @@ import org.mapstruct.Mapper;
import org.mapstruct.Mapping; import org.mapstruct.Mapping;
import org.qinan.safetyeval.client.change.request.QualFilingMaterialChangeAddCmd; import org.qinan.safetyeval.client.change.request.QualFilingMaterialChangeAddCmd;
import org.qinan.safetyeval.client.change.request.QualFilingMaterialChangeUpdateCmd; 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.change.model.QualFilingMaterialChangeE;
import org.qinan.safetyeval.domain.entity.QualFilingMaterialEntity; import org.qinan.safetyeval.domain.entity.QualFilingMaterialEntity;
@ -48,4 +49,16 @@ public interface QualFilingMaterialChangeCmdConvertor {
* *
*/ */
List<QualFilingMaterialEntity> convertChangeEListToEntityList(List<QualFilingMaterialChangeE> changeEs); List<QualFilingMaterialEntity> convertChangeEListToEntityList(List<QualFilingMaterialChangeE> changeEs);
/**
* CO
*/
@Mapping(source = "filingChangeId", target = "filingId")
@Mapping(target = "materialType", ignore = true)
QualFilingMaterialCO convertChangeEToCO(QualFilingMaterialChangeE changeE);
/**
* CO
*/
List<QualFilingMaterialCO> convertChangeEListToCOList(List<QualFilingMaterialChangeE> changeEs);
} }

View File

@ -4,6 +4,7 @@ import org.mapstruct.Mapper;
import org.mapstruct.Mapping; import org.mapstruct.Mapping;
import org.qinan.safetyeval.client.change.request.QualFilingPersonnelCertChangeAddCmd; import org.qinan.safetyeval.client.change.request.QualFilingPersonnelCertChangeAddCmd;
import org.qinan.safetyeval.client.change.request.QualFilingPersonnelCertChangeUpdateCmd; 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.change.model.QualFilingPersonnelCertChangeE;
import org.qinan.safetyeval.domain.entity.QualFilingPersonnelCertEntity; import org.qinan.safetyeval.domain.entity.QualFilingPersonnelCertEntity;
@ -48,4 +49,15 @@ public interface QualFilingPersonnelCertChangeCmdConvertor {
* *
*/ */
List<QualFilingPersonnelCertEntity> convertChangeEListToEntityList(List<QualFilingPersonnelCertChangeE> changeEs); List<QualFilingPersonnelCertEntity> convertChangeEListToEntityList(List<QualFilingPersonnelCertChangeE> changeEs);
/**
* CO
*/
@Mapping(source = "filingChangeId", target = "filingId")
QualFilingPersonnelCertCO convertChangeEToCO(QualFilingPersonnelCertChangeE changeE);
/**
* CO
*/
List<QualFilingPersonnelCertCO> convertChangeEListToCOList(List<QualFilingPersonnelCertChangeE> changeEs);
} }

View File

@ -4,6 +4,7 @@ import org.mapstruct.Mapper;
import org.mapstruct.Mapping; import org.mapstruct.Mapping;
import org.qinan.safetyeval.client.change.request.QualFilingPersonnelChangeAddCmd; import org.qinan.safetyeval.client.change.request.QualFilingPersonnelChangeAddCmd;
import org.qinan.safetyeval.client.change.request.QualFilingPersonnelChangeUpdateCmd; 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.change.model.QualFilingPersonnelChangeE;
import org.qinan.safetyeval.domain.entity.QualFilingPersonnelEntity; import org.qinan.safetyeval.domain.entity.QualFilingPersonnelEntity;
@ -48,4 +49,15 @@ public interface QualFilingPersonnelChangeCmdConvertor {
* *
*/ */
List<QualFilingPersonnelEntity> convertChangeEListToEntityList(List<QualFilingPersonnelChangeE> changeEs); List<QualFilingPersonnelEntity> convertChangeEListToEntityList(List<QualFilingPersonnelChangeE> changeEs);
/**
* CO
*/
@Mapping(source = "filingChangeId", target = "filingId")
QualFilingPersonnelCO convertChangeEToCO(QualFilingPersonnelChangeE changeE);
/**
* CO
*/
List<QualFilingPersonnelCO> convertChangeEListToCOList(List<QualFilingPersonnelChangeE> changeEs);
} }

View File

@ -3,11 +3,13 @@ package org.qinan.safetyeval.app.executor;
import org.qinan.safetyeval.app.change.convertor.*; import org.qinan.safetyeval.app.change.convertor.*;
import org.qinan.safetyeval.app.orchestrator.QualFilingOrchestrator; import org.qinan.safetyeval.app.orchestrator.QualFilingOrchestrator;
import org.qinan.safetyeval.client.api.QualFilingChangeApi; 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.QualFilingChangeCO;
import org.qinan.safetyeval.client.co.QualFilingChangeComplianceCheckResultCO; import org.qinan.safetyeval.client.co.QualFilingChangeComplianceCheckResultCO;
import org.qinan.safetyeval.client.co.QualFilingChangeHistoryCO; import org.qinan.safetyeval.client.co.QualFilingChangeHistoryCO;
import org.qinan.safetyeval.client.dto.*; import org.qinan.safetyeval.client.dto.*;
import org.qinan.safetyeval.domain.change.gateway.*; 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.change.model.*;
import org.qinan.safetyeval.domain.constant.QualFilingFormStepEnum; import org.qinan.safetyeval.domain.constant.QualFilingFormStepEnum;
import org.qinan.safetyeval.domain.constant.QualFilingReviewResultEnum; 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.QualFilingDomainService;
import org.qinan.safetyeval.domain.service.QualFilingReviewDomainService; import org.qinan.safetyeval.domain.service.QualFilingReviewDomainService;
import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter; import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -78,6 +81,9 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi {
@Resource @Resource
private QualFilingPersonnelCertChangeGateway qualFilingPersonnelCertChangeGateway; private QualFilingPersonnelCertChangeGateway qualFilingPersonnelCertChangeGateway;
@Resource
private QualFilingChangeDetailGateway qualFilingChangeDetailGateway;
@Override @Override
public SingleResponse<QualFilingChangeCO> add(QualFilingChangeAddCmd cmd) { public SingleResponse<QualFilingChangeCO> add(QualFilingChangeAddCmd cmd) {
QualFilingChangeEntity entity = new QualFilingChangeEntity(); QualFilingChangeEntity entity = new QualFilingChangeEntity();
@ -203,6 +209,7 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi {
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public SingleResponse<QualFilingChangeCO> aggregationSaveOrEdit(AggregationSaveOrEditQualFilingChangeCmd cmd) { public SingleResponse<QualFilingChangeCO> aggregationSaveOrEdit(AggregationSaveOrEditQualFilingChangeCmd cmd) {
validateBeforeSaveOrEdit(cmd); validateBeforeSaveOrEdit(cmd);
@ -235,17 +242,29 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi {
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
Long id = qualFilingChangeDomainService.aggregationSaveOrEdit(entity, commitmentEntity
, equipmentEntities, materialEntities, personnelEntities, personnelCertEntities);
// 编辑场景:对比请求数据与已有变更数据,生成变更明细 // 编辑场景:对比请求数据与已有变更数据,生成变更明细
if (!cmd.isAdd()) { if (!cmd.isAdd()) {
List<QualFilingChangeDetailEntity> details = diffFromCmd(cmd.getQualFilingChangeAddCmd().getId() Long changeId = cmd.getQualFilingChangeAddCmd().getId();
List<QualFilingChangeDetailEntity> details = diffFromCmd(changeId
, entity, commitmentEntity, equipmentEntities , entity, commitmentEntity, equipmentEntities
, materialEntities, personnelEntities, personnelCertEntities); , materialEntities, personnelEntities, personnelCertEntities);
// TODO: 后续可将details传入domainService进行持久化 // 根据changeId先删除原有变更明细再新增
List<QualFilingChangeDetailEntity> 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(); QualFilingChangeCO co = new QualFilingChangeCO();
co.setId(id); co.setId(id);
return SingleResponse.success(co); return SingleResponse.success(co);
@ -325,6 +344,55 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi {
qualFilingChangeDomainService.modify(updateE); qualFilingChangeDomainService.modify(updateE);
} }
@Override
public SingleResponse<QualFilingChangeAggregationCO> 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<QualFilingEquipmentChangeE> equipmentChangeEs = qualFilingEquipmentChangeGateway.listByFilingId(changeFilingId);
if (!CollectionUtils.isEmpty(equipmentChangeEs)) {
detail.setEquipmentList(qualFilingEquipmentChangeCmdConvertor.convertChangeEListToCOList(equipmentChangeEs));
}
// 材料清单
List<QualFilingMaterialChangeE> materialChangeEs = qualFilingMaterialChangeGateway.listByFilingId(changeFilingId);
if (!CollectionUtils.isEmpty(materialChangeEs)) {
detail.setMaterialList(qualFilingMaterialChangeCmdConvertor.convertChangeEListToCOList(materialChangeEs));
}
// 人员清单
List<QualFilingPersonnelChangeE> personnelChangeEs = qualFilingPersonnelChangeGateway.listByFilingId(changeFilingId);
if (!CollectionUtils.isEmpty(personnelChangeEs)) {
detail.setPersonnelList(qualFilingPersonnelChangeCmdConvertor.convertChangeEListToCOList(personnelChangeEs));
}
// 人员证书清单
List<QualFilingPersonnelCertChangeE> personnelCertChangeEs = qualFilingPersonnelCertChangeGateway.listByFilingId(changeFilingId);
if (!CollectionUtils.isEmpty(personnelCertChangeEs)) {
detail.setPersonnelCertList(qualFilingPersonnelCertChangeCmdConvertor.convertChangeEListToCOList(personnelCertChangeEs));
}
return SingleResponse.success(detail);
}
/** /**
* *
* <ul> * <ul>

View File

@ -1,5 +1,6 @@
package org.qinan.safetyeval.client.api; 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.QualFilingChangeComplianceCheckResultCO;
import org.qinan.safetyeval.client.co.QualFilingChangeHistoryCO; import org.qinan.safetyeval.client.co.QualFilingChangeHistoryCO;
import org.qinan.safetyeval.client.co.QualFilingChangeCO; import org.qinan.safetyeval.client.co.QualFilingChangeCO;
@ -45,4 +46,6 @@ public interface QualFilingChangeApi {
SingleResponse<QualFilingChangeCO> aggregationSaveOrEdit(AggregationSaveOrEditQualFilingChangeCmd cmd); SingleResponse<QualFilingChangeCO> aggregationSaveOrEdit(AggregationSaveOrEditQualFilingChangeCmd cmd);
void review(QualFilingChangeReviewAddCmd cmd); void review(QualFilingChangeReviewAddCmd cmd);
SingleResponse<QualFilingChangeAggregationCO> detail(Long id);
} }

View File

@ -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;
/**
* CO5
*
* @author safety-eval
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class QualFilingChangeAggregationCO extends QualFilingChangeCO {
@ApiModelProperty(value = "法定代表人承诺书")
private QualFilingCommitmentCO commitment;
@ApiModelProperty(value = "变更装备列表")
private List<QualFilingEquipmentCO> equipmentList;
@ApiModelProperty(value = "变更材料列表")
private List<QualFilingMaterialCO> materialList;
@ApiModelProperty(value = "变更人员列表")
private List<QualFilingPersonnelCO> personnelList;
@ApiModelProperty(value = "变更人员证书列表")
private List<QualFilingPersonnelCertCO> personnelCertList;
}