|
|
@ -35,74 +35,79 @@ public class RabbitController { |
|
|
|
|
|
|
|
@RabbitHandler |
|
|
|
public void process(String messageJson) { |
|
|
|
logger.info("平车上传消息数据: {}",messageJson); |
|
|
|
logger.info("平车上传消息数据: {}", messageJson); |
|
|
|
// return;
|
|
|
|
OutMessageSet outMessageSet = JSONObject.parseObject(messageJson,OutMessageSet.class); |
|
|
|
if(ObjectUtil.isNull(outMessageSet)){ |
|
|
|
return; |
|
|
|
} |
|
|
|
Set<OutMessage> messageSet = outMessageSet.getMessageSet(); |
|
|
|
if (CollectionUtil.isEmpty(messageSet)) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
List<CarRecordMessageDto> carRecordMessageDtoList = new ArrayList<>(); |
|
|
|
Map<Integer ,Long> map = new HashMap<>(); |
|
|
|
messageSet.forEach(outMessage -> { |
|
|
|
CarRecordMessageDto carRecordMessageDto = JSONObject.parseObject(outMessage.getData(),CarRecordMessageDto.class); |
|
|
|
if(ObjectUtil.isNull(carRecordMessageDto)){ |
|
|
|
try { |
|
|
|
OutMessageSet outMessageSet = JSONObject.parseObject(messageJson, OutMessageSet.class); |
|
|
|
if (ObjectUtil.isNull(outMessageSet)) { |
|
|
|
return; |
|
|
|
} |
|
|
|
switch (carRecordMessageDto.getType()){ |
|
|
|
case Constant.CAR_RECORD_WEIGHT: |
|
|
|
getWeight(carRecordMessageDtoList, map, carRecordMessageDto,16); |
|
|
|
break; |
|
|
|
case Constant.WEIGHT_SENSOR_1: |
|
|
|
// getWeight(carRecordMessageDtoList, map, carRecordMessageDto,25);
|
|
|
|
break; |
|
|
|
case Constant.WEIGHT_SENSOR_2: |
|
|
|
// getWeight(carRecordMessageDtoList, map, carRecordMessageDto,27);
|
|
|
|
break; |
|
|
|
case Constant.WEIGHT_SENSOR_3: |
|
|
|
// getWeight(carRecordMessageDtoList, map, carRecordMessageDto,29);
|
|
|
|
break; |
|
|
|
case Constant.WEIGHT_SENSOR_4: |
|
|
|
// getWeight(carRecordMessageDtoList, map, carRecordMessageDto,31);
|
|
|
|
break; |
|
|
|
case Constant.SHAKE_SENSOR: |
|
|
|
log.info("倾角传感器:{}",carRecordMessageDto); |
|
|
|
long shakeValue = getShakeValue(carRecordMessageDto); |
|
|
|
|
|
|
|
map.put(carRecordMessageDto.getAddr(),shakeValue); |
|
|
|
if(map.get(21) != null && map.get(22) != null && map.get(23) != null ){ |
|
|
|
String value = map.get(21) + "," + map.get(22) + "," + map.get(23); |
|
|
|
carRecordMessageDto.setValue(value); |
|
|
|
carRecordMessageDtoList.add(carRecordMessageDto); |
|
|
|
} |
|
|
|
break; |
|
|
|
case Constant.THROMBOLYTIC: |
|
|
|
case Constant.BOLUS_DOSE: |
|
|
|
case Constant.MAINTENANCE_DOSE: |
|
|
|
BigDecimal value1 = BigDecimal.valueOf(Double.parseDouble(carRecordMessageDto.getValue())).divide(BigDecimal.valueOf(100),2,BigDecimal.ROUND_HALF_DOWN); |
|
|
|
carRecordMessageDto.setValue(value1.toString()); |
|
|
|
carRecordMessageDtoList.add(carRecordMessageDto); |
|
|
|
break; |
|
|
|
default: |
|
|
|
carRecordMessageDtoList.add(carRecordMessageDto); |
|
|
|
break; |
|
|
|
Set<OutMessage> messageSet = outMessageSet.getMessageSet(); |
|
|
|
if (CollectionUtil.isEmpty(messageSet)) { |
|
|
|
return; |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
carRecordMessageDtoList.forEach(carRecordMessageDto -> { |
|
|
|
try { |
|
|
|
log.info("处理后的平车消息:{}",carRecordMessageDto); |
|
|
|
recordService.disposeMessage(carRecordMessageDto); |
|
|
|
List<CarRecordMessageDto> carRecordMessageDtoList = new ArrayList<>(); |
|
|
|
Map<Integer, Long> map = new HashMap<>(); |
|
|
|
messageSet.forEach(outMessage -> { |
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
}); |
|
|
|
CarRecordMessageDto carRecordMessageDto = JSONObject.parseObject(outMessage.getData(), CarRecordMessageDto.class); |
|
|
|
if (ObjectUtil.isNull(carRecordMessageDto)) { |
|
|
|
return; |
|
|
|
} |
|
|
|
switch (carRecordMessageDto.getType()) { |
|
|
|
case Constant.CAR_RECORD_WEIGHT: |
|
|
|
getWeight(carRecordMessageDtoList, map, carRecordMessageDto, 16); |
|
|
|
break; |
|
|
|
case Constant.WEIGHT_SENSOR_1: |
|
|
|
// getWeight(carRecordMessageDtoList, map, carRecordMessageDto,25);
|
|
|
|
break; |
|
|
|
case Constant.WEIGHT_SENSOR_2: |
|
|
|
// getWeight(carRecordMessageDtoList, map, carRecordMessageDto,27);
|
|
|
|
break; |
|
|
|
case Constant.WEIGHT_SENSOR_3: |
|
|
|
// getWeight(carRecordMessageDtoList, map, carRecordMessageDto,29);
|
|
|
|
break; |
|
|
|
case Constant.WEIGHT_SENSOR_4: |
|
|
|
// getWeight(carRecordMessageDtoList, map, carRecordMessageDto,31);
|
|
|
|
break; |
|
|
|
case Constant.SHAKE_SENSOR: |
|
|
|
log.info("倾角传感器:{}", carRecordMessageDto); |
|
|
|
long shakeValue = getShakeValue(carRecordMessageDto); |
|
|
|
|
|
|
|
map.put(carRecordMessageDto.getAddr(), shakeValue); |
|
|
|
if (map.get(21) != null && map.get(22) != null && map.get(23) != null) { |
|
|
|
String value = map.get(21) + "," + map.get(22) + "," + map.get(23); |
|
|
|
carRecordMessageDto.setValue(value); |
|
|
|
carRecordMessageDtoList.add(carRecordMessageDto); |
|
|
|
} |
|
|
|
break; |
|
|
|
case Constant.THROMBOLYTIC: |
|
|
|
case Constant.BOLUS_DOSE: |
|
|
|
case Constant.MAINTENANCE_DOSE: |
|
|
|
BigDecimal value1 = BigDecimal.valueOf(Double.parseDouble(carRecordMessageDto.getValue())).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_DOWN); |
|
|
|
carRecordMessageDto.setValue(value1.toString()); |
|
|
|
carRecordMessageDtoList.add(carRecordMessageDto); |
|
|
|
break; |
|
|
|
default: |
|
|
|
carRecordMessageDtoList.add(carRecordMessageDto); |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
carRecordMessageDtoList.forEach(carRecordMessageDto -> { |
|
|
|
try { |
|
|
|
log.info("处理后的平车消息:{}", carRecordMessageDto); |
|
|
|
recordService.disposeMessage(carRecordMessageDto); |
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
}); |
|
|
|
} catch (Exception e) { |
|
|
|
log.error("平车消息JSON转换异常", e); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private long getShakeValue(CarRecordMessageDto carRecordMessageDto) { |
|
|
@ -111,42 +116,42 @@ public class RabbitController { |
|
|
|
long value = 0L; |
|
|
|
//redis查找该平车上一次的倾角数据
|
|
|
|
Object o = redisUtil.get(key); |
|
|
|
if(ObjectUtil.isNull(o)){ |
|
|
|
if (ObjectUtil.isNull(o)) { |
|
|
|
//如果没有依次存入redis,value值都是0
|
|
|
|
redisUtil.set(key,carRecordMessageDto.getValue()); |
|
|
|
carRecordMessageDto.setValue(0+""); |
|
|
|
}else { |
|
|
|
redisUtil.set(key, carRecordMessageDto.getValue()); |
|
|
|
carRecordMessageDto.setValue(0 + ""); |
|
|
|
} else { |
|
|
|
//如果有,用当前的值减去上次的数据,得到的是新的value
|
|
|
|
value = Long.parseLong(carRecordMessageDto.getValue()) - Long.parseLong(o.toString()); |
|
|
|
} |
|
|
|
return value; |
|
|
|
} |
|
|
|
|
|
|
|
private void getWeight(List<CarRecordMessageDto> carRecordMessageDtoList, Map<Integer, Long> map, CarRecordMessageDto carRecordMessageDto,int highAddr) { |
|
|
|
private void getWeight(List<CarRecordMessageDto> carRecordMessageDtoList, Map<Integer, Long> map, CarRecordMessageDto carRecordMessageDto, int highAddr) { |
|
|
|
boolean flag = carRecordMessageDto.getAddr() == highAddr; |
|
|
|
Long weight = getWeight(map, carRecordMessageDto, flag ? highAddr + 1 : highAddr,flag); |
|
|
|
log.info("计算后的重量:{}",weight); |
|
|
|
if(weight == null){ |
|
|
|
Long weight = getWeight(map, carRecordMessageDto, flag ? highAddr + 1 : highAddr, flag); |
|
|
|
log.info("计算后的重量:{}", weight); |
|
|
|
if (weight == null) { |
|
|
|
return; |
|
|
|
} |
|
|
|
carRecordMessageDto.setValue(weight.toString()); |
|
|
|
carRecordMessageDtoList.add(carRecordMessageDto); |
|
|
|
} |
|
|
|
|
|
|
|
private Long getWeight(Map<Integer, Long> map, CarRecordMessageDto carRecordMessageDto,int value2,boolean firstHigh) { |
|
|
|
log.info("value = {},,firstHigh={}",value2,firstHigh); |
|
|
|
if(map.get(value2) == null){ |
|
|
|
map.put(carRecordMessageDto.getAddr(),Long.parseLong(carRecordMessageDto.getValue())); |
|
|
|
private Long getWeight(Map<Integer, Long> map, CarRecordMessageDto carRecordMessageDto, int value2, boolean firstHigh) { |
|
|
|
log.info("value = {},,firstHigh={}", value2, firstHigh); |
|
|
|
if (map.get(value2) == null) { |
|
|
|
map.put(carRecordMessageDto.getAddr(), Long.parseLong(carRecordMessageDto.getValue())); |
|
|
|
return null; |
|
|
|
}else { |
|
|
|
} else { |
|
|
|
long weight1 = Long.parseLong(carRecordMessageDto.getValue()); |
|
|
|
long weight2 = map.get(value2); |
|
|
|
log.info("准备计算重量:{},,,{}",weight1,weight2); |
|
|
|
if(firstHigh){ |
|
|
|
log.info("weight1 << 16 + weight2:{}",weight1 << 16 | weight2); |
|
|
|
log.info("准备计算重量:{},,,{}", weight1, weight2); |
|
|
|
if (firstHigh) { |
|
|
|
log.info("weight1 << 16 + weight2:{}", weight1 << 16 | weight2); |
|
|
|
return weight1 << 16 | weight2; |
|
|
|
}else { |
|
|
|
log.info("weight2 << 16 + weight1:{}",weight2 << 16 | weight1); |
|
|
|
} else { |
|
|
|
log.info("weight2 << 16 + weight1:{}", weight2 << 16 | weight1); |
|
|
|
return weight2 << 16 | weight1; |
|
|
|
} |
|
|
|
} |
|
|
|