故障模块测试

master
WeiRan 2024-09-25 15:53:55 +08:00
parent ab2f94acbd
commit c66b84bc6c
1 changed files with 24 additions and 13 deletions

View File

@ -33,7 +33,6 @@ public class FaultRuleServiceImpl extends ServiceImpl<FaultRuleMapper, CarFaultR
@Override
public List<Vehicle> checkfault(CarFaultRule carFaultRule) {
List<Vehicle> vehicles = new ArrayList<>();
//根据车辆VIN判断它属于什么类型的车辆
CarInformation carInformation = faultRuleMapper.selectTypeByVIN(carFaultRule.getVin());
Integer carInformationType = carInformation.getCarInformationType();
@ -54,26 +53,38 @@ public class FaultRuleServiceImpl extends ServiceImpl<FaultRuleMapper, CarFaultR
if (faultCondition.getMessageTypeCode().equals(declaredField.getName())){
String faultconditionIdentification = faultCondition.getFaultconditionIdentification();
BigDecimal faultconditionParameter = faultCondition.getFaultconditionParameter();
//判断条件选择
// 尝试将值转换为BigDecimal
BigDecimal bigDecimalValue = null;
if (value instanceof Number) {
Number numberValue = (Number) value;
if (numberValue instanceof Long || numberValue instanceof Integer) {
bigDecimalValue = BigDecimal.valueOf(numberValue.longValue());
} else if (numberValue instanceof Double || numberValue instanceof Float) {
// 注意Double转BigDecimal可能会引入精度问题因为Double本身可能不精确
// 如果需要精确控制可以考虑从源头使用BigDecimal
bigDecimalValue = BigDecimal.valueOf(numberValue.doubleValue());
}
}
//判断条件选择
if (faultconditionIdentification.equals(">") || faultconditionIdentification.equals("&gt;") ){
if (BigDecimal.valueOf((Long) value).compareTo(faultconditionParameter)>0){
vehicles.add(new Vehicle(carFaultRule.getVin(),declaredField+"超出规定范围"));
if (bigDecimalValue.compareTo(faultconditionParameter)>0){
vehicles.add(new Vehicle(carFaultRule.getVin(),declaredField.getName()+"超出规定范围"));
}
}else if(faultconditionIdentification.equals("<") || faultconditionIdentification.equals("&lt;")){
if (BigDecimal.valueOf((Long) value).compareTo(faultconditionParameter)<0){
vehicles.add(new Vehicle(carFaultRule.getVin(),declaredField+"过低"));
if (bigDecimalValue.compareTo(faultconditionParameter)<0){
vehicles.add(new Vehicle(carFaultRule.getVin(),declaredField.getName()+"过低"));
}
}else if(faultconditionIdentification.equals(">=") || faultconditionIdentification.equals("&gt;=")){
if (BigDecimal.valueOf((Long) value).compareTo(faultconditionParameter)>0){
vehicles.add(new Vehicle(carFaultRule.getVin(),declaredField+"超出规定范围")) ;
if (bigDecimalValue.compareTo(faultconditionParameter)>=0){
vehicles.add(new Vehicle(carFaultRule.getVin(),declaredField.getName()+"超出规定范围")) ;
}
}else if(faultconditionIdentification.equals("<=") || faultconditionIdentification.equals("&lt;=")){
if (BigDecimal.valueOf((Long) value).compareTo(faultconditionParameter)<0){
vehicles.add(new Vehicle(carFaultRule.getVin(),declaredField+"过低"));
if (bigDecimalValue.compareTo(faultconditionParameter)<=0){
vehicles.add(new Vehicle(carFaultRule.getVin(),declaredField.getName()+"过低"));
}
}else {
if (BigDecimal.valueOf((Long) value).compareTo(faultconditionParameter)==0){
vehicles.add(new Vehicle(carFaultRule.getVin(),declaredField+"已达到故障点"));
if (bigDecimalValue.compareTo(faultconditionParameter)==0){
vehicles.add(new Vehicle(carFaultRule.getVin(),declaredField.getName()+"已达到故障点"));
}
}
}
@ -85,6 +96,6 @@ public class FaultRuleServiceImpl extends ServiceImpl<FaultRuleMapper, CarFaultR
}
}
return null;
return vehicles;
}
}