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