import com.alibaba.fastjson.JSON;
import com.idea.fault.entity.Signal;
import com.idea.fault.entity.SignalBean;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
@Slf4j
public class AppTest {
public static void main(String[] args) {
String data = "{\"vin\": \"LW433B109L1021956\",\"receiveTime\": 1655777399240,\"signals\": [{\"sigName\": \"BMS_SensorTemp1\",\"sigVal\": 30,\"collectTime\": 1655777397224},{\"sigName\": \"BMS_SensorTemp10\",\"sigVal\": 220,\"collectTime\": 1655777397224,\"validStatus\": 1},{\"sigName\": \"BMS_SensorTemp6\",\"sigVal\": 30,\"collectTime\": 1655777397224,\"validStatus\": 1},{\"sigName\": \"BMS_SensorTemp7\",\"sigVal\": 180,\"collectTime\": 1655777397224,\"validStatus\": 1},{\"sigName\": \"BMS_PosRESSMaxTemp\",\"sigVal\": 20,\"collectTime\": 1655777397224,\"validStatus\": 1},{\"sigName\": \"BMS_RESSMinTemp\",\"sigVal\": 1,\"collectTime\": 1655777397224,\"validStatus\": 1},{\"sigName\": \"BMS_PosRESSMinTemp\",\"sigVal\": 1,\"collectTime\": 1655777397224,\"validStatus\": 1},{\"sigName\": \"BMS_RESSMaxTemp\",\"sigVal\": 180,\"collectTime\": 1655777397224,\"validStatus\": 1}],\"location\": null}";
final SignalBean signalBean = JSON.parseObject(data, SignalBean.class);
log.info("getVin {}", signalBean.getVin());
log.info("signal size {}", signalBean.getSignals().size());
int minTemp = getMinTemp(signalBean.getSignals());
int maxTemp = getMaxTemp(signalBean.getSignals());
int result = maxTemp - minTemp;
// 获取最大值和最小值差值
// 故障时刻电池最高温度 BMS_RESSMaxTemp和最低温度 BMS_RESSMinTemp的差值≥20
if (result >= 20) {
log.info("故障时刻电池差值 {}", result);
} else {
log.info("无故障 VIM: {} 差值: {}", signalBean.getVin(), result);
}
}
private static int getMinTemp(List<Signal> signals) {
for (Signal signal : signals) {
if (signal.getSigName().equalsIgnoreCase("BMS_RESSMinTemp")) {
int minTemp = signal.getSigVal();
log.info("signal maxTemp {}", minTemp);
return minTemp;
}
}
return 0;
}
private static int getMaxTemp(List<Signal> signals) {
for (Signal signal : signals) {
if (signal.getSigName().equalsIgnoreCase("BMS_RESSMaxTemp")) {
int maxTemp = signal.getSigVal();
log.info("signal maxTemp {}", maxTemp);
return maxTemp;
}
}
return 0;
}
}