feat(REQ-4418) - 提交
This commit is contained in:
parent
033b938766
commit
b8e515ed55
@ -63,20 +63,42 @@ public class ImplementationReadyChecker implements ApplicationListener<Applicati
|
||||
log.info("祝贺,已通过必接事件的校验!但仍然请确保您的实现类逻辑正确无误,不允许出现空实现,否则生产问题自行负责!");
|
||||
return;
|
||||
}
|
||||
log.info("将继续通过 EventConsumer 进行检查...");
|
||||
methodImplemented = checkUnImplementedMethodsWithEventConsumer(context);
|
||||
if (getBinaryResult(methodImplemented) == 15) {
|
||||
log.warn("将继续通过 EventConsumer 进行检查...");
|
||||
|
||||
boolean[] methodImplemented2 = checkUnImplementedMethodsWithEventConsumer(context);
|
||||
if (getBinaryResult(methodImplemented2) == 15) {
|
||||
log.info("Congratulations, passed the verification!");
|
||||
log.info("祝贺,已通过必接事件的校验!但仍然请确保您的实现类逻辑正确无误,不允许出现空实现,否则生产问题自行负责!");
|
||||
} else {
|
||||
int finalResult = getBinaryResult(methodImplemented) & getBinaryResult(methodImplemented2);
|
||||
boolean[] booleansAdaptive = toBooleansAdaptive(finalResult);
|
||||
log.error("----------------------------------------");
|
||||
log.error("警告:未通过必接事件的校验!未实现的方法:{},请确保使用了实现了 {} 接口的Bean被Spring扫描,或者在EventConsumer注册了 ProcessInstanceEventEnum 的 EventCode。", String.join(", ", getUnImplementedMethods(methodImplemented)), TARGET_INTERFACE.getName());
|
||||
log.error("最终事件实现情况:(二进制:{}),(十进制:{})", String.format("%4s", Integer.toBinaryString(finalResult)).replace(' ', '0'), finalResult);
|
||||
log.error("警告:未通过必接事件的校验!未实现的方法:{},请确保使用了实现了 {} 接口的Bean被Spring扫描,或者在EventConsumer注册了 ProcessInstanceEventEnum 的 EventCode。", String.join(", ", getUnImplementedMethods(booleansAdaptive)), TARGET_INTERFACE.getName());
|
||||
log.error("----------------------------------------");
|
||||
sendAlter(context, getUnImplementedMethods(methodImplemented));
|
||||
sendAlter(context, getUnImplementedMethods(booleansAdaptive));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static boolean[] toBooleansAdaptive(int value) {
|
||||
if (value < 0) throw new IllegalArgumentException("adaptive mode only for non-negative");
|
||||
if (value == 0) return new boolean[]{false};
|
||||
int bits = 32 - Integer.numberOfLeadingZeros(value);
|
||||
return toBooleans(value, bits);
|
||||
}
|
||||
|
||||
// 高位在前:index=0 是最高位
|
||||
public static boolean[] toBooleans(int value, int bits) {
|
||||
if (bits <= 0 || bits > 32) throw new IllegalArgumentException("bits must be 1~32");
|
||||
boolean[] arr = new boolean[bits];
|
||||
for (int i = 0; i < bits; i++) {
|
||||
int shift = bits - 1 - i;
|
||||
arr[i] = ((value >>> shift) & 1) == 1;
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
private void sendAlter(ApplicationContext context, List<String> unImplementedMethods) {
|
||||
Environment environment = context.getEnvironment();
|
||||
DingTalkStarterAlterDTO dto = new DingTalkStarterAlterDTO();
|
||||
@ -118,9 +140,9 @@ public class ImplementationReadyChecker implements ApplicationListener<Applicati
|
||||
int binaryResult = getBinaryResult(methodImplemented);
|
||||
List<String> unimplementedMethods = getUnImplementedMethods(methodImplemented);
|
||||
log.info("实现 {} 接口的Bean数量: {}", TARGET_INTERFACE.getName(), handlers.size());
|
||||
log.info("方法实现情况:(二进制:{}),(十进制:{})", String.format("%4s", Integer.toBinaryString(binaryResult)).replace(' ', '0'), binaryResult);
|
||||
log.warn("基于接口事件实现情况:(二进制:{}),(十进制:{})", String.format("%4s", Integer.toBinaryString(binaryResult)).replace(' ', '0'), binaryResult);
|
||||
if (!unimplementedMethods.isEmpty()) {
|
||||
log.warn("未通过 Starter 提供的 {} 接口实现中找到以下方法的实现: {}。请确保至少有一个实现类覆盖这些方法以处理相应的事件。", TARGET_INTERFACE.getName(), String.join(", ", unimplementedMethods));
|
||||
log.info("未通过 Starter 提供的 {} 接口实现中找到以下方法的实现: {}。请确保至少有一个实现类覆盖这些方法以处理相应的事件。", TARGET_INTERFACE.getName(), String.join(", ", unimplementedMethods));
|
||||
}
|
||||
return methodImplemented;
|
||||
}
|
||||
@ -152,6 +174,8 @@ public class ImplementationReadyChecker implements ApplicationListener<Applicati
|
||||
}
|
||||
}
|
||||
});
|
||||
int binaryResult = getBinaryResult(methodImplemented);
|
||||
log.warn("基于EventConsumer事件实现情况:(二进制:{}),(十进制:{})", String.format("%4s", Integer.toBinaryString(binaryResult)).replace(' ', '0'), binaryResult);
|
||||
return methodImplemented;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user