init
parent
fe091beba0
commit
2b034872ad
|
|
@ -6,8 +6,8 @@ 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.QualFilingChangeAggregationCO;
|
||||||
import org.qinan.safetyeval.client.co.QualFilingChangeCO;
|
import org.qinan.safetyeval.client.co.QualFilingChangeCO;
|
||||||
import org.qinan.safetyeval.client.co.QualFilingComplianceCheckResultCO;
|
|
||||||
import org.qinan.safetyeval.client.co.QualFilingChangeOrgCO;
|
import org.qinan.safetyeval.client.co.QualFilingChangeOrgCO;
|
||||||
|
import org.qinan.safetyeval.client.co.QualFilingComplianceCheckResultCO;
|
||||||
import org.qinan.safetyeval.client.dto.*;
|
import org.qinan.safetyeval.client.dto.*;
|
||||||
import org.qinan.safetyeval.domain.constant.QualFilingStatusEnum;
|
import org.qinan.safetyeval.domain.constant.QualFilingStatusEnum;
|
||||||
import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter;
|
import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter;
|
||||||
|
|
@ -65,7 +65,7 @@ public class QualFilingChangeController {
|
||||||
@PostMapping("/aggregationSaveOrEdit")
|
@PostMapping("/aggregationSaveOrEdit")
|
||||||
public SingleResponse<QualFilingChangeCO> aggregationSaveOrEdit(@RequestBody AggregationSaveOrEditQualFilingChangeCmd cmd) {
|
public SingleResponse<QualFilingChangeCO> aggregationSaveOrEdit(@RequestBody AggregationSaveOrEditQualFilingChangeCmd cmd) {
|
||||||
cmd.getQualFilingChangeAddCmd().setFilingStatusCode(QualFilingStatusEnum.CHANGE_REVIEWING.getCode());
|
cmd.getQualFilingChangeAddCmd().setFilingStatusCode(QualFilingStatusEnum.CHANGE_REVIEWING.getCode());
|
||||||
return qualFilingChangeApi.aggregationSaveOrEdit(cmd);
|
return qualFilingChangeApi.aggregationSaveOrEdit(cmd, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("合规检查")
|
@ApiOperation("合规检查")
|
||||||
|
|
|
||||||
|
|
@ -253,12 +253,13 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public SingleResponse<QualFilingChangeCO> aggregationSaveOrEdit(AggregationSaveOrEditQualFilingChangeCmd cmd) {
|
public SingleResponse<QualFilingChangeCO> aggregationSaveOrEdit(
|
||||||
|
AggregationSaveOrEditQualFilingChangeCmd cmd, boolean throwException) {
|
||||||
validateBeforeSaveOrEdit(cmd);
|
validateBeforeSaveOrEdit(cmd);
|
||||||
// 合规性校验:只要有一项未通过则抛出异常
|
// 合规性校验:只要有一项未通过则抛出异常
|
||||||
if (reviewEnable) {
|
if (reviewEnable) {
|
||||||
AggregationSaveOrEditQualFilingCmd qualFilingCmd = convertToQualFilingCmd(cmd);
|
AggregationSaveOrEditQualFilingCmd qualFilingCmd = convertToQualFilingCmd(cmd);
|
||||||
List<QualFilingComplianceCheckResultCO> complianceResults = ComplianceCheckUtil.complianceCheck(qualFilingCmd);
|
List<QualFilingComplianceCheckResultCO> complianceResults = ComplianceCheckUtil.complianceCheck(qualFilingCmd, throwException);
|
||||||
List<String> failedItems = complianceResults.stream()
|
List<String> failedItems = complianceResults.stream()
|
||||||
.filter(r -> QualFilingComplianceCheckEnum.STATUS_FAIL.equals(r.getStatus()))
|
.filter(r -> QualFilingComplianceCheckEnum.STATUS_FAIL.equals(r.getStatus()))
|
||||||
.map(QualFilingComplianceCheckResultCO::getTitle)
|
.map(QualFilingComplianceCheckResultCO::getTitle)
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ import org.qinan.safetyeval.domain.service.QualFilingDomainService;
|
||||||
import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter;
|
import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter;
|
||||||
import org.qinan.safetyeval.infrastructure.dataobject.*;
|
import org.qinan.safetyeval.infrastructure.dataobject.*;
|
||||||
import org.qinan.safetyeval.infrastructure.mapper.*;
|
import org.qinan.safetyeval.infrastructure.mapper.*;
|
||||||
|
import org.qinan.safetyeval.infrastructure.utils.ComplianceCheckUtil;
|
||||||
import org.springframework.beans.BeanUtils;
|
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;
|
||||||
|
|
@ -168,6 +169,7 @@ public class QualFilingExecutor implements QualFilingApi {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SingleResponse<QualFilingCO> aggregationSaveOrEdit(AggregationSaveOrEditQualFilingCmd cmd) {
|
public SingleResponse<QualFilingCO> aggregationSaveOrEdit(AggregationSaveOrEditQualFilingCmd cmd) {
|
||||||
|
ComplianceCheckUtil.complianceCheck(cmd, true);
|
||||||
// 新增时校验:用当前id查询记录获取org_id,若同机构已存在其他资质备案记录则不允许新增
|
// 新增时校验:用当前id查询记录获取org_id,若同机构已存在其他资质备案记录则不允许新增
|
||||||
Long currentId = cmd.getQualFilingAddCmd().getId();
|
Long currentId = cmd.getQualFilingAddCmd().getId();
|
||||||
if (currentId == null) {
|
if (currentId == null) {
|
||||||
|
|
@ -264,7 +266,7 @@ public class QualFilingExecutor implements QualFilingApi {
|
||||||
BeanUtils.copyProperties(item, qualFilingPersonnelChangeAddCmd);
|
BeanUtils.copyProperties(item, qualFilingPersonnelChangeAddCmd);
|
||||||
return qualFilingPersonnelChangeAddCmd;
|
return qualFilingPersonnelChangeAddCmd;
|
||||||
}).collect(Collectors.toList()));
|
}).collect(Collectors.toList()));
|
||||||
qualFilingChangeExecutor.aggregationSaveOrEdit(cmdSync);
|
qualFilingChangeExecutor.aggregationSaveOrEdit(cmdSync, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -858,7 +858,7 @@ public class QualFilingOrchestrator {
|
||||||
cmd.setQualFilingMaterialAddCmds(
|
cmd.setQualFilingMaterialAddCmds(
|
||||||
qualFilingCmdConvertor.convertEntityListToCmdList(qualFilingMaterialGateway.listByFilingId(id)));
|
qualFilingCmdConvertor.convertEntityListToCmdList(qualFilingMaterialGateway.listByFilingId(id)));
|
||||||
|
|
||||||
return ComplianceCheckUtil.complianceCheck(cmd);
|
return ComplianceCheckUtil.complianceCheck(cmd, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -893,7 +893,7 @@ public class QualFilingOrchestrator {
|
||||||
qualFilingMaterialChangeCmdConvertor.convertChangeEListToCmdList(
|
qualFilingMaterialChangeCmdConvertor.convertChangeEListToCmdList(
|
||||||
qualFilingMaterialChangeGateway.listByFilingId(changeId)));
|
qualFilingMaterialChangeGateway.listByFilingId(changeId)));
|
||||||
|
|
||||||
return ComplianceCheckUtil.complianceCheck(qualFilingCmd);
|
return ComplianceCheckUtil.complianceCheck(qualFilingCmd, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Long resolveOrgId() {
|
private Long resolveOrgId() {
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,7 @@
|
||||||
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.*;
|
||||||
import org.qinan.safetyeval.client.co.QualFilingComplianceCheckResultCO;
|
import org.qinan.safetyeval.client.dto.*;
|
||||||
import org.qinan.safetyeval.client.co.QualFilingChangeHistoryCO;
|
|
||||||
import org.qinan.safetyeval.client.co.QualFilingChangeCO;
|
|
||||||
import org.qinan.safetyeval.client.co.QualFilingChangeOrgCO;
|
|
||||||
import org.qinan.safetyeval.client.dto.AggregationSaveOrEditQualFilingChangeCmd;
|
|
||||||
import org.qinan.safetyeval.client.dto.PageResponse;
|
|
||||||
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;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
@ -46,7 +34,8 @@ public interface QualFilingChangeApi {
|
||||||
|
|
||||||
SingleResponse<List<QualFilingComplianceCheckResultCO>> complianceCheck(Long id);
|
SingleResponse<List<QualFilingComplianceCheckResultCO>> complianceCheck(Long id);
|
||||||
|
|
||||||
SingleResponse<QualFilingChangeCO> aggregationSaveOrEdit(AggregationSaveOrEditQualFilingChangeCmd cmd);
|
SingleResponse<QualFilingChangeCO> aggregationSaveOrEdit(AggregationSaveOrEditQualFilingChangeCmd cmd
|
||||||
|
, boolean throwException);
|
||||||
|
|
||||||
void review(QualFilingChangeReviewAddCmd cmd);
|
void review(QualFilingChangeReviewAddCmd cmd);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,8 +34,13 @@ public class ComplianceCheckUtil {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 合规检查:根据聚合命令对象逐项检查是否满足法规要求
|
* 合规检查:根据聚合命令对象逐项检查是否满足法规要求
|
||||||
|
*
|
||||||
|
* @param cmd cmd
|
||||||
|
* @param throwException true throw ; false show
|
||||||
|
* @return QualFilingComplianceCheckResultCO
|
||||||
*/
|
*/
|
||||||
public List<QualFilingComplianceCheckResultCO> complianceCheck(AggregationSaveOrEditQualFilingCmd cmd) {
|
public List<QualFilingComplianceCheckResultCO> complianceCheck(AggregationSaveOrEditQualFilingCmd cmd
|
||||||
|
, boolean throwException) {
|
||||||
QualFilingAddCmd filing = cmd.getQualFilingAddCmd();
|
QualFilingAddCmd filing = cmd.getQualFilingAddCmd();
|
||||||
List<QualFilingPersonnelAddCmd> personnelList = cmd.getQualFilingPersonnelAddCmds();
|
List<QualFilingPersonnelAddCmd> personnelList = cmd.getQualFilingPersonnelAddCmds();
|
||||||
List<QualFilingMaterialAddCmd> materialList = cmd.getQualFilingMaterialAddCmds();
|
List<QualFilingMaterialAddCmd> materialList = cmd.getQualFilingMaterialAddCmds();
|
||||||
|
|
@ -63,7 +68,7 @@ public class ComplianceCheckUtil {
|
||||||
results.add(checkPersonnelCount(filing, personnelList));
|
results.add(checkPersonnelCount(filing, personnelList));
|
||||||
|
|
||||||
// 6. 人员比例
|
// 6. 人员比例
|
||||||
results.add(checkPersonnelRatio(filing.getBusinessScope(), personnelList, certCapabilityList));
|
results.add(checkPersonnelRatio(filing.getBusinessScope(), personnelList, certCapabilityList, throwException));
|
||||||
|
|
||||||
// 7. 负责人配备
|
// 7. 负责人配备
|
||||||
results.add(checkKeyPosition(filing, personnelList));
|
results.add(checkKeyPosition(filing, personnelList));
|
||||||
|
|
@ -163,7 +168,7 @@ public class ComplianceCheckUtil {
|
||||||
* 人员比例:中级注安师 >= 30%,高级职称 >= 30%,合计 >= 60%
|
* 人员比例:中级注安师 >= 30%,高级职称 >= 30%,合计 >= 60%
|
||||||
*/
|
*/
|
||||||
private QualFilingComplianceCheckResultCO checkPersonnelRatio(List<String> businessScope
|
private QualFilingComplianceCheckResultCO checkPersonnelRatio(List<String> businessScope
|
||||||
, List<QualFilingPersonnelAddCmd> personnelList, List<OrgPersonnelCertCapabilityComplianceCheckCO> personnelCertCoList) {
|
, List<QualFilingPersonnelAddCmd> personnelList, List<OrgPersonnelCertCapabilityComplianceCheckCO> personnelCertCoList, boolean throwException) {
|
||||||
if (personnelList == null || personnelList.isEmpty()) {
|
if (personnelList == null || personnelList.isEmpty()) {
|
||||||
return buildResult(QualFilingComplianceCheckEnum.PERSONNEL_RATIO,
|
return buildResult(QualFilingComplianceCheckEnum.PERSONNEL_RATIO,
|
||||||
QualFilingComplianceCheckEnum.STATUS_FAIL, "无人员数据");
|
QualFilingComplianceCheckEnum.STATUS_FAIL, "无人员数据");
|
||||||
|
|
@ -188,12 +193,16 @@ public class ComplianceCheckUtil {
|
||||||
.convertCmdsToCos(personnelList);
|
.convertCmdsToCos(personnelList);
|
||||||
Pair<Boolean, String> booleanStringPair = industryProfessionalStandardsValid(
|
Pair<Boolean, String> booleanStringPair = industryProfessionalStandardsValid(
|
||||||
businessScope, personnelCoList, personnelCertCoList);
|
businessScope, personnelCoList, personnelCertCoList);
|
||||||
if (Boolean.FALSE.equals(booleanStringPair.getKey())) {
|
boolean personPassed = Boolean.TRUE.equals(booleanStringPair.getKey());
|
||||||
|
if (!personPassed && throwException) {
|
||||||
throw new BizException(PERSON_NOT_ENOUGH, booleanStringPair.getValue());
|
throw new BizException(PERSON_NOT_ENOUGH, booleanStringPair.getValue());
|
||||||
}
|
}
|
||||||
|
if (!personPassed) {
|
||||||
|
currentValue += booleanStringPair.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
return buildResult(QualFilingComplianceCheckEnum.PERSONNEL_RATIO,
|
return buildResult(QualFilingComplianceCheckEnum.PERSONNEL_RATIO,
|
||||||
pass ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL,
|
pass && personPassed ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL,
|
||||||
currentValue);
|
currentValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue