16 changed files with 529 additions and 149 deletions
@ -0,0 +1,17 @@ |
|||||
|
package com.ccsens.wisdomcar.bean.vo; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
/** |
||||
|
* @author 逗 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class StepVo { |
||||
|
@Data |
||||
|
public static class Step{ |
||||
|
private Long id; |
||||
|
private String stepCode; |
||||
|
private byte stepType; |
||||
|
|
||||
|
} |
||||
|
} |
@ -1,55 +1,154 @@ |
|||||
//package com.ccsens.wisdomcar.rabbitMQ;
|
package com.ccsens.wisdomcar.rabbitMQ; |
||||
//
|
|
||||
//import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil; |
||||
//import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil; |
||||
//import com.alibaba.fastjson.JSONObject;
|
import cn.hutool.core.util.StrUtil; |
||||
//import com.ccsens.util.bean.message.common.OutMessage;
|
import com.alibaba.fastjson.JSONObject; |
||||
//import com.ccsens.util.bean.message.common.OutMessageSet;
|
import com.ccsens.util.RedisUtil; |
||||
//import com.ccsens.util.config.RabbitMQConfig;
|
import com.ccsens.util.bean.message.common.OutMessage; |
||||
//import com.ccsens.wisdomcar.bean.dto.Message.CarRecordMessageDto;
|
import com.ccsens.util.bean.message.common.OutMessageSet; |
||||
//import com.ccsens.wisdomcar.service.IRecordService;
|
import com.ccsens.util.config.RabbitMQConfig; |
||||
//import lombok.extern.slf4j.Slf4j;
|
import com.ccsens.wisdomcar.bean.dto.Message.CarRecordMessageDto; |
||||
//import org.slf4j.Logger;
|
import com.ccsens.wisdomcar.service.IRecordService; |
||||
//import org.slf4j.LoggerFactory;
|
import com.ccsens.wisdomcar.util.Constant; |
||||
//import org.springframework.amqp.rabbit.annotation.RabbitHandler;
|
import lombok.extern.slf4j.Slf4j; |
||||
//import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
import org.slf4j.Logger; |
||||
//import org.springframework.stereotype.Component;
|
import org.slf4j.LoggerFactory; |
||||
//
|
import org.springframework.amqp.rabbit.annotation.RabbitHandler; |
||||
//import javax.annotation.Resource;
|
import org.springframework.amqp.rabbit.annotation.RabbitListener; |
||||
//import java.util.Set;
|
import org.springframework.stereotype.Component; |
||||
//
|
|
||||
//@Slf4j
|
import javax.annotation.Resource; |
||||
//@Component
|
import java.math.BigDecimal; |
||||
//@RabbitListener(queues = RabbitMQConfig.WISDOM_CAR)
|
import java.util.*; |
||||
//public class RabbitController {
|
|
||||
// @Resource
|
@Slf4j |
||||
// private IRecordService recordService;
|
@Component |
||||
//
|
@RabbitListener(queues = RabbitMQConfig.WISDOM_CAR) |
||||
// private Logger logger = LoggerFactory.getLogger(RabbitController.class);
|
public class RabbitController { |
||||
//
|
@Resource |
||||
// @RabbitHandler
|
private IRecordService recordService; |
||||
// public void process(String messageJson) {
|
@Resource |
||||
// logger.info("平车上传消息数据: {}",messageJson);
|
private RedisUtil redisUtil; |
||||
// OutMessageSet outMessageSet = JSONObject.parseObject(messageJson,OutMessageSet.class);
|
|
||||
// if(ObjectUtil.isNull(outMessageSet)){
|
private Logger logger = LoggerFactory.getLogger(RabbitController.class); |
||||
// return;
|
|
||||
// }
|
@RabbitHandler |
||||
// Set<OutMessage> messageSet = outMessageSet.getMessageSet();
|
public void process(String messageJson) { |
||||
// if (CollectionUtil.isEmpty(messageSet)) {
|
logger.info("平车上传消息数据: {}",messageJson); |
||||
// return;
|
OutMessageSet outMessageSet = JSONObject.parseObject(messageJson,OutMessageSet.class); |
||||
// }
|
if(ObjectUtil.isNull(outMessageSet)){ |
||||
// messageSet.forEach(outMessage -> {
|
return; |
||||
// CarRecordMessageDto carRecordMessageDto = JSONObject.parseObject(outMessage.getData(),CarRecordMessageDto.class);
|
} |
||||
// if(ObjectUtil.isNull(carRecordMessageDto)){
|
Set<OutMessage> messageSet = outMessageSet.getMessageSet(); |
||||
// return;
|
if (CollectionUtil.isEmpty(messageSet)) { |
||||
// }
|
return; |
||||
// try {
|
} |
||||
// recordService.disposeMessage(carRecordMessageDto);
|
|
||||
// } catch (Exception e) {
|
List<CarRecordMessageDto> carRecordMessageDtoList = new ArrayList<>(); |
||||
// log.error("处理平车信息异常",e);
|
Map<Integer ,Long> map = new HashMap<>(); |
||||
// e.printStackTrace();
|
messageSet.forEach(outMessage -> { |
||||
// }
|
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(); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
private long getShakeValue(CarRecordMessageDto carRecordMessageDto) { |
||||
|
String key = Constant.FIRST_AID + carRecordMessageDto.getAuthId() + carRecordMessageDto.getAddr(); |
||||
|
|
||||
|
long value = 0L; |
||||
|
//redis查找该平车上一次的倾角数据
|
||||
|
Object o = redisUtil.get(key); |
||||
|
if(ObjectUtil.isNull(o)){ |
||||
|
//如果没有依次存入redis,value值都是0
|
||||
|
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) { |
||||
|
boolean flag = carRecordMessageDto.getAddr() == highAddr; |
||||
|
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())); |
||||
|
return null; |
||||
|
}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); |
||||
|
return weight1 << 16 | weight2; |
||||
|
}else { |
||||
|
log.info("weight2 << 16 + weight1:{}",weight2 << 16 | weight1); |
||||
|
return weight2 << 16 | weight1; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
@ -1,6 +1,6 @@ |
|||||
spring: |
spring: |
||||
profiles: |
profiles: |
||||
active: dev |
active: prod |
||||
include: common, util-dev |
include: common, util-prod |
||||
|
|
||||
|
|
||||
|
Loading…
Reference in new issue