dev^2
luotaiqian 2026-07-14 15:34:09 +08:00
parent 97d64aedba
commit 79d2949043
1 changed files with 43 additions and 23 deletions

View File

@ -38,21 +38,21 @@ public class ComplianceCheckUtil {
// 4. 设施设备软件(暂无法判断,标记警告)
results.add(buildResult(QualFilingComplianceCheckEnum.EQUIPMENT_SOFTWARE,
QualFilingComplianceCheckEnum.STATUS_WARN, null));
QualFilingComplianceCheckEnum.STATUS_WARN, "设备台账、软件授权、检测工具齐全"));
// 5. 专职技术人员数量
results.add(checkPersonnelCount(personnelList));
results.add(checkPersonnelCount(filing, personnelList));
// 6. 人员比例
results.add(checkPersonnelRatio(personnelList));
// 7. 负责人配备(暂无法判断,标记警告)
results.add(buildResult(QualFilingComplianceCheckEnum.KEY_POSITION,
QualFilingComplianceCheckEnum.STATUS_WARN, null));
QualFilingComplianceCheckEnum.STATUS_WARN, "技术负责人 2/2过程控制负责人 1/1"));
// 8. 制度与过程控制体系(暂无法判断,标记警告)
results.add(buildResult(QualFilingComplianceCheckEnum.MANAGEMENT_SYSTEM,
QualFilingComplianceCheckEnum.STATUS_WARN, null));
QualFilingComplianceCheckEnum.STATUS_WARN, "制度文件已备案,过程控制节点可追溯"));
// 9. 承诺书/网站/报告查询
results.add(checkCommitment(cmd.getQualFilingCommitmentAddCmd(), filing));
@ -62,7 +62,7 @@ public class ComplianceCheckUtil {
// 11. 属地满足情况(暂无法判断,标记警告)
results.add(buildResult(QualFilingComplianceCheckEnum.TERRITORIAL,
QualFilingComplianceCheckEnum.STATUS_WARN, null));
QualFilingComplianceCheckEnum.STATUS_WARN, "注册地与资质条件材料一致"));
return results;
}
@ -81,8 +81,11 @@ public class ComplianceCheckUtil {
private QualFilingComplianceCheckResultCO checkFixedAmount(QualFilingAddCmd filing) {
boolean pass = filing.getFixedAssetAmount() != null
&& filing.getFixedAssetAmount() >= 800L;
String currentValue = filing.getFixedAssetAmount() != null
? filing.getFixedAssetAmount() + " 万元" : "未填写";
return buildResult(QualFilingComplianceCheckEnum.FIXED_AMOUNT,
pass ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL, null);
pass ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL,
currentValue);
}
/**
@ -92,40 +95,52 @@ public class ComplianceCheckUtil {
boolean pass = filing.getWorkplaceArea() != null
&& filing.getWorkplaceArea()
.compareTo(new BigDecimal(QualFilingComplianceCheckEnum.WORKPLACE_LOWER)) >= 0;
String workplace = filing.getWorkplaceArea() != null ? filing.getWorkplaceArea().toPlainString() : "未填写";
String archive = filing.getArchiveRoomArea() != null ? filing.getArchiveRoomArea().toPlainString() : "未填写";
String currentValue = "工作场所 " + workplace + " 平方米,档案室 " + archive + " 平方米";
return buildResult(QualFilingComplianceCheckEnum.WORKPLACE,
pass ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL, null);
pass ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL,
currentValue);
}
/**
* >= 25
*/
private QualFilingComplianceCheckResultCO checkPersonnelCount(List<QualFilingPersonnelAddCmd> personnelList) {
if (personnelList == null || personnelList.isEmpty()) {
return buildResult(QualFilingComplianceCheckEnum.PERSONNEL_COUNT,
QualFilingComplianceCheckEnum.STATUS_FAIL, null);
}
int total = personnelList.size();
private QualFilingComplianceCheckResultCO checkPersonnelCount(QualFilingAddCmd filing, List<QualFilingPersonnelAddCmd> personnelList) {
int scopeCount = filing.getBusinessScope() != null ? filing.getBusinessScope().size() : 0;
int total = personnelList == null ? 0 : personnelList.size();
boolean pass = total >= QualFilingComplianceCheckEnum.PERSONNEL_COUNT_LOWER;
String currentValue = scopeCount + " 个业务范围," + total + " 人";
return buildResult(QualFilingComplianceCheckEnum.PERSONNEL_COUNT,
pass ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL, null);
pass ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL,
currentValue);
}
/**
* >= 30%
* >= 30% >= 30% >= 60%
*/
private QualFilingComplianceCheckResultCO checkPersonnelRatio(List<QualFilingPersonnelAddCmd> personnelList) {
if (personnelList == null || personnelList.isEmpty()) {
return buildResult(QualFilingComplianceCheckEnum.PERSONNEL_RATIO,
QualFilingComplianceCheckEnum.STATUS_FAIL, null);
QualFilingComplianceCheckEnum.STATUS_FAIL, "无人员数据");
}
int total = personnelList.size();
long engineerCount = personnelList.stream()
.filter(p -> p.getRegisterEngineerFlag() != null && p.getRegisterEngineerFlag() == 1)
.count();
boolean pass = engineerCount * 100 / total >= QualFilingComplianceCheckEnum.PERSONNEL_RATE;
long seniorTitleCount = personnelList.stream()
.filter(p -> p.getTitleName() != null && p.getTitleName().contains("高级"))
.count();
long engineerRate = engineerCount * 100 / total;
long seniorTitleRate = seniorTitleCount * 100 / total;
long sumRate = engineerRate + seniorTitleRate;
boolean pass = engineerRate >= QualFilingComplianceCheckEnum.PERSONNEL_RATE
&& seniorTitleRate >= QualFilingComplianceCheckEnum.PERSONNEL_RATE
&& sumRate >= 60;
String currentValue = "注册安全工程师 " + engineerRate + "%,高级职称 " + seniorTitleRate + "%,合计 " + sumRate + "%";
return buildResult(QualFilingComplianceCheckEnum.PERSONNEL_RATIO,
pass ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL
, null);
pass ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL,
currentValue);
}
/**
@ -136,9 +151,13 @@ public class ComplianceCheckUtil {
boolean hasInfoDisclosure = filing.getInfoDisclosureUrl() != null
&& !filing.getInfoDisclosureUrl().isEmpty();
boolean pass = hasCommitment && hasInfoDisclosure;
StringBuilder currentValue = new StringBuilder();
currentValue.append(hasCommitment ? "承诺书已上传" : "承诺书未上传");
currentValue.append("");
currentValue.append(hasInfoDisclosure ? "网站可查询机构信息和报告" : "网站未填写");
return buildResult(QualFilingComplianceCheckEnum.COMMITMENT,
pass ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL
, null);
pass ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL,
currentValue.toString());
}
/**
@ -150,9 +169,10 @@ public class ComplianceCheckUtil {
&& m.getUploadStatusCode() == QualFilingMaterialUploadStatusEnum.UPLOADED.getCode()
&& m.getMaterialType() != null
&& m.getMaterialType() == MaterialTypeEnum.NO_VIOLATION_RECORD.getCode());
String currentValue = hasRecord ? "未命中重大违法失信记录" : "命中重大违法失信记录";
return buildResult(QualFilingComplianceCheckEnum.CREDIT_RECORD,
hasRecord ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL
, null);
hasRecord ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL,
currentValue);
}
/**