package jnpf.bizcommon.audit.service.support;
|
|
import jnpf.audit.AuditConsts;
|
import jnpf.util.JsonUtil;
|
import org.springframework.util.StringUtils;
|
|
import java.util.Locale;
|
import java.util.Map;
|
|
/** 审计事件物理合并分类;同一 operationId 每类最多一行。 */
|
public final class AuditEventCategories {
|
public static final String BUSINESS = "BUSINESS";
|
public static final String PRIMARY_SIGN = "PRIMARY_SIGN";
|
public static final String REVIEW_SIGN = "REVIEW_SIGN";
|
|
private AuditEventCategories() {
|
}
|
|
public static String resolve(String eventType, String extraJson) {
|
if (!AuditConsts.TYPE_E_SIGNATURE.equals(eventType)) {
|
return BUSINESS;
|
}
|
String explicitRole = extraValue(extraJson, "signatureRole");
|
if ("REVIEW".equalsIgnoreCase(explicitRole)) {
|
return REVIEW_SIGN;
|
}
|
String signField = extraValue(extraJson, "signField");
|
if (StringUtils.hasText(signField)) {
|
String normalized = signField.toLowerCase(Locale.ROOT);
|
if (normalized.contains("review") || normalized.contains("fuhe")
|
|| normalized.contains("复审") || normalized.contains("复核")) {
|
return REVIEW_SIGN;
|
}
|
}
|
return PRIMARY_SIGN;
|
}
|
|
private static String extraValue(String extraJson, String key) {
|
if (!StringUtils.hasText(extraJson)) {
|
return null;
|
}
|
try {
|
Map<String, Object> extra = JsonUtil.stringToMap(extraJson);
|
Object value = extra == null ? null : extra.get(key);
|
return value == null ? null : String.valueOf(value);
|
} catch (Throwable ignored) {
|
return null;
|
}
|
}
|
}
|