|
|
@ -60,6 +60,7 @@ public class RecordService implements IRecordService{ |
|
|
|
if(ObjectUtil.isNull(carRecordMessageDto)){ |
|
|
|
return; |
|
|
|
} |
|
|
|
log.info("接受信息:{}",carRecordMessageDto); |
|
|
|
//查找平车信息
|
|
|
|
WisdomCar wisdomCar = null; |
|
|
|
WisdomCarExample wisdomCarExample = new WisdomCarExample(); |
|
|
@ -72,13 +73,6 @@ public class RecordService implements IRecordService{ |
|
|
|
log.info("找不到平车id"); |
|
|
|
return; |
|
|
|
} |
|
|
|
WisdomCarRecord wisdomCarRecord = new WisdomCarRecord(); |
|
|
|
wisdomCarRecord.setId(snowflake.nextId()); |
|
|
|
wisdomCarRecord.setCarId(wisdomCars.get(0).getId()); |
|
|
|
wisdomCarRecord.setType(carRecordMessageDto.getType()); |
|
|
|
wisdomCarRecord.setValue(carRecordMessageDto.getValue()); |
|
|
|
wisdomCarRecord.setTime(carRecordMessageDto.getTime()); |
|
|
|
wisdomCarRecordMapper.insertSelective(wisdomCarRecord); |
|
|
|
|
|
|
|
//查找医院大屏的userId(暂时查找主屏幕)
|
|
|
|
Set<String> userIdSet = new HashSet<>(); |
|
|
@ -88,14 +82,40 @@ public class RecordService implements IRecordService{ |
|
|
|
if(CollectionUtil.isNotEmpty(screenList)){ |
|
|
|
screenList.forEach(screen -> userIdSet.add(screen.getUserId().toString())); |
|
|
|
} |
|
|
|
|
|
|
|
//如果是称重信息,制造测试数据发送大屏
|
|
|
|
boolean f = false; |
|
|
|
if(carRecordMessageDto.getType() == Constant.CAR_RECORD_WEIGHT){ |
|
|
|
String value = stepDao.getRecordByCarIdAndType(wisdomCars.get(0).getId(),carRecordMessageDto.getType()); |
|
|
|
if(!carRecordMessageDto.getValue().equals(value)){ |
|
|
|
f = true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
WisdomCarRecord wisdomCarRecord = new WisdomCarRecord(); |
|
|
|
wisdomCarRecord.setId(snowflake.nextId()); |
|
|
|
wisdomCarRecord.setCarId(wisdomCars.get(0).getId()); |
|
|
|
wisdomCarRecord.setType(carRecordMessageDto.getType()); |
|
|
|
wisdomCarRecord.setValue(carRecordMessageDto.getValue()); |
|
|
|
wisdomCarRecord.setTime(carRecordMessageDto.getTime()); |
|
|
|
wisdomCarRecordMapper.insertSelective(wisdomCarRecord); |
|
|
|
|
|
|
|
|
|
|
|
//获取流程
|
|
|
|
StepVo.Step step = null; |
|
|
|
if(carRecordMessageDto.getType() == Constant.CAR_RECORD_WEIGHT || carRecordMessageDto.getType() == Constant.CAR_RECORD_START){ |
|
|
|
if(carRecordMessageDto.getType() == Constant.CAR_RECORD_WEIGHT){ |
|
|
|
step = stepDao.getCodeByStepOne(); |
|
|
|
//处理体重数据
|
|
|
|
int weightInt = Integer.parseInt(carRecordMessageDto.getValue()); |
|
|
|
BigDecimal weight = BigDecimal.valueOf(weightInt).divide(BigDecimal.valueOf(1000),3,BigDecimal.ROUND_HALF_UP); |
|
|
|
BigDecimal weight = BigDecimal.valueOf(weightInt).divide(BigDecimal.valueOf(1000),2,BigDecimal.ROUND_HALF_DOWN); |
|
|
|
carRecordMessageDto.setValue(weight+""); |
|
|
|
if(f){ |
|
|
|
log.info("处理称重信息"); |
|
|
|
doseAndSensorMessage(carRecordMessageDto, userIdSet); |
|
|
|
} |
|
|
|
} |
|
|
|
if(carRecordMessageDto.getType() == Constant.CAR_RECORD_START){ |
|
|
|
step = stepDao.getCodeByStepOne(); |
|
|
|
} |
|
|
|
if(carRecordMessageDto.getType() == Constant.CAR_RECORD_RFID){ |
|
|
|
step = stepDao.getCodeByRfId(carRecordMessageDto.getValue()); |
|
|
@ -104,55 +124,55 @@ public class RecordService implements IRecordService{ |
|
|
|
sendRecordMessage(carRecordMessageDto,userIdSet,step == null?null:step.getStepCode(),step == null?null:step.getStepType()); |
|
|
|
|
|
|
|
|
|
|
|
//如果是称重信息,制造测试数据发送大屏
|
|
|
|
|
|
|
|
if(carRecordMessageDto.getType() == Constant.CAR_RECORD_WEIGHT){ |
|
|
|
log.info("处理称重信息"); |
|
|
|
doseAndSensorMessage(carRecordMessageDto, userIdSet); |
|
|
|
} |
|
|
|
// //如果是称重信息,制造测试数据发送大屏
|
|
|
|
// if(carRecordMessageDto.getType() == Constant.CAR_RECORD_WEIGHT){
|
|
|
|
//
|
|
|
|
// String value = stepDao.getRecordByCarIdAndType(wisdomCars.get(0).getId(),carRecordMessageDto.getType());
|
|
|
|
// BigDecimal weight = BigDecimal.valueOf(Double.parseDouble(value)).divide(BigDecimal.valueOf(1000),2,BigDecimal.ROUND_HALF_DOWN);
|
|
|
|
// if(!carRecordMessageDto.getValue().equals(weight.toString())){
|
|
|
|
// log.info("处理称重信息");
|
|
|
|
// doseAndSensorMessage(carRecordMessageDto, userIdSet);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//新建急救表存储信息
|
|
|
|
saveAidRecord(carRecordMessageDto, wisdomCar.getId()); |
|
|
|
saveAidRecord(carRecordMessageDto, wisdomCar.getId(),step); |
|
|
|
} |
|
|
|
|
|
|
|
private void doseAndSensorMessage(CarRecordMessageDto carRecordMessageDto, Set<String> userIdSet) throws Exception { |
|
|
|
//体重 单位g
|
|
|
|
BigDecimal weightInt = BigDecimal.valueOf(Double.parseDouble(carRecordMessageDto.getValue())); |
|
|
|
// /*剂量数据*/
|
|
|
|
// //计算剂量信息 总剂量 = 重量 * 0.9,团注剂量=总剂量*10%,维持剂量=总剂量*90%,均保留两位小数(重量为kg,消息发送的重量为g,需处理)
|
|
|
|
// String dosage;
|
|
|
|
// BigDecimal weight = BigDecimal.valueOf(weightInt).divide(BigDecimal.valueOf(1000),2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
// //总剂量
|
|
|
|
// BigDecimal totalDose = weight.multiply(BigDecimal.valueOf(0.9)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
// //团注剂量
|
|
|
|
// BigDecimal dose1 = totalDose.multiply(BigDecimal.valueOf(0.1)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
// //维持剂量
|
|
|
|
// BigDecimal dose2 = totalDose.subtract(dose1);
|
|
|
|
// dosage = totalDose + "," + dose1 + "," + dose2;
|
|
|
|
// //发送消息
|
|
|
|
// CarRecordMessageDto dosageRecord = new CarRecordMessageDto();
|
|
|
|
// BeanUtil.copyProperties(carRecordMessageDto,dosageRecord);
|
|
|
|
// dosageRecord.setType(Constant.CAR_RECORD_DOSAGE);
|
|
|
|
// dosageRecord.setValue(dosage);
|
|
|
|
// //发送消息
|
|
|
|
// sendRecordMessage(dosageRecord,userIdSet);
|
|
|
|
|
|
|
|
BigDecimal sensor1 = BigDecimal.valueOf(0); |
|
|
|
BigDecimal sensor2 = BigDecimal.valueOf(0); |
|
|
|
BigDecimal sensor3 = BigDecimal.valueOf(0); |
|
|
|
BigDecimal sensor4 = BigDecimal.valueOf(0); |
|
|
|
/*称重传感器数据*/ |
|
|
|
//获取一个5000以内的平均数
|
|
|
|
Random random = new Random(); |
|
|
|
BigDecimal randomWeight1 = BigDecimal.valueOf(random.nextInt(5000)).divide(BigDecimal.valueOf(1000),3,BigDecimal.ROUND_HALF_UP); |
|
|
|
BigDecimal randomWeight2 = BigDecimal.valueOf(random.nextInt(5000)).divide(BigDecimal.valueOf(1000),3,BigDecimal.ROUND_HALF_UP); |
|
|
|
//体重除以4
|
|
|
|
BigDecimal aveWeight = weightInt.divide(BigDecimal.valueOf(4),3,BigDecimal.ROUND_HALF_UP); |
|
|
|
BigDecimal sensor1 = aveWeight.subtract(randomWeight1); |
|
|
|
BigDecimal sensor2 = aveWeight.add(randomWeight1); |
|
|
|
BigDecimal sensor3 = aveWeight.subtract(randomWeight2); |
|
|
|
BigDecimal sensor4 = weightInt.subtract(sensor1).subtract(sensor2).subtract(sensor3); |
|
|
|
if(!weightInt.equals(BigDecimal.valueOf(0))){ |
|
|
|
//获取一个5000以内的平均数
|
|
|
|
Random random = new Random(); |
|
|
|
BigDecimal randomWeight1 = BigDecimal.valueOf(random.nextInt(5000)).divide(BigDecimal.valueOf(1000),2,BigDecimal.ROUND_HALF_DOWN); |
|
|
|
BigDecimal randomWeight2 = BigDecimal.valueOf(random.nextInt(5000)).divide(BigDecimal.valueOf(1000),2,BigDecimal.ROUND_HALF_DOWN); |
|
|
|
//体重除以4
|
|
|
|
BigDecimal aveWeight = weightInt.divide(BigDecimal.valueOf(4),3,BigDecimal.ROUND_HALF_DOWN); |
|
|
|
if(aveWeight.compareTo(BigDecimal.valueOf(5000)) < 1){ |
|
|
|
BigDecimal divide = aveWeight.multiply(BigDecimal.valueOf(1000)).divide(BigDecimal.valueOf(3), 2, BigDecimal.ROUND_HALF_DOWN); |
|
|
|
randomWeight1 = BigDecimal.valueOf(random.nextInt(divide.intValue())).divide(BigDecimal.valueOf(1000),2,BigDecimal.ROUND_HALF_DOWN); |
|
|
|
randomWeight2 = BigDecimal.valueOf(random.nextInt(divide.intValue())).divide(BigDecimal.valueOf(1000),2,BigDecimal.ROUND_HALF_DOWN); |
|
|
|
} |
|
|
|
|
|
|
|
sensor1 = aveWeight.subtract(randomWeight1); |
|
|
|
sensor2 = aveWeight.add(randomWeight1); |
|
|
|
sensor3 = aveWeight.subtract(randomWeight2); |
|
|
|
sensor4 = weightInt.subtract(sensor1).subtract(sensor2).subtract(sensor3); |
|
|
|
if(sensor4.compareTo(BigDecimal.valueOf(0)) < 1){ |
|
|
|
sensor4 = BigDecimal.valueOf(0); |
|
|
|
} |
|
|
|
} |
|
|
|
//第一个传感器
|
|
|
|
CarRecordMessageDto sensorMessage1 = new CarRecordMessageDto(); |
|
|
|
BeanUtil.copyProperties(carRecordMessageDto,sensorMessage1); |
|
|
|
sensorMessage1.setType(Constant.WEIGHT_SENSOR_1); |
|
|
|
sensorMessage1.setValue(sensor1 + ""); |
|
|
|
log.info("传感器一数据:{}",sensorMessage1); |
|
|
|
//发送消息
|
|
|
|
sendRecordMessage(sensorMessage1,userIdSet,null,null); |
|
|
|
//第二个传感器
|
|
|
@ -160,6 +180,7 @@ public class RecordService implements IRecordService{ |
|
|
|
BeanUtil.copyProperties(carRecordMessageDto,sensorMessage2); |
|
|
|
sensorMessage2.setType(Constant.WEIGHT_SENSOR_2); |
|
|
|
sensorMessage2.setValue(sensor2 + ""); |
|
|
|
log.info("传感器二数据:{}",sensorMessage2); |
|
|
|
//发送消息
|
|
|
|
sendRecordMessage(sensorMessage2,userIdSet,null,null); |
|
|
|
//第三个传感器
|
|
|
@ -167,6 +188,7 @@ public class RecordService implements IRecordService{ |
|
|
|
BeanUtil.copyProperties(carRecordMessageDto,sensorMessage3); |
|
|
|
sensorMessage3.setType(Constant.WEIGHT_SENSOR_3); |
|
|
|
sensorMessage3.setValue(sensor3 + ""); |
|
|
|
log.info("传感器三数据:{}",sensorMessage3); |
|
|
|
//发送消息
|
|
|
|
sendRecordMessage(sensorMessage3,userIdSet,null,null); |
|
|
|
//第四个传感器
|
|
|
@ -174,23 +196,9 @@ public class RecordService implements IRecordService{ |
|
|
|
BeanUtil.copyProperties(carRecordMessageDto,sensorMessage4); |
|
|
|
sensorMessage4.setType(Constant.WEIGHT_SENSOR_4); |
|
|
|
sensorMessage4.setValue(sensor4 + ""); |
|
|
|
log.info("传感器四数据:{}",sensorMessage4); |
|
|
|
//发送消息
|
|
|
|
sendRecordMessage(sensorMessage4,userIdSet,null,null); |
|
|
|
|
|
|
|
// /*震动传感器数据*/
|
|
|
|
// //随机生成坐标
|
|
|
|
// int shakeX = random.nextInt(65535);
|
|
|
|
// int shakeY = random.nextInt(65535);
|
|
|
|
// int shakeZ = random.nextInt(65535);
|
|
|
|
// //震动传感器
|
|
|
|
// CarRecordMessageDto shakeMessage = new CarRecordMessageDto();
|
|
|
|
// BeanUtil.copyProperties(carRecordMessageDto,shakeMessage);
|
|
|
|
// shakeMessage.setType(Constant.SHAKE_SENSOR);
|
|
|
|
// shakeMessage.setValue(shakeX + "," + shakeY + "," + shakeZ);
|
|
|
|
// //发送消息
|
|
|
|
// sendRecordMessage(shakeMessage,userIdSet);
|
|
|
|
|
|
|
|
// return dosage;
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -202,6 +210,7 @@ public class RecordService implements IRecordService{ |
|
|
|
carRecordMessageDto.getValue(),carRecordMessageDto.getTime(),stepCode,stepType); |
|
|
|
|
|
|
|
MessageRule messageRule = MessageRule.defaultRule(MessageConstant.DomainType.User); |
|
|
|
messageRule.setAckRule(MessageRule.AckRule.NONE); |
|
|
|
String s = JacksonUtil.beanToJson(carRecordMessageVo); |
|
|
|
InMessage inMessage = InMessage.newToUserMessage(null,userIdSet,null,messageRule,s); |
|
|
|
//发送消息
|
|
|
@ -211,7 +220,7 @@ public class RecordService implements IRecordService{ |
|
|
|
/** |
|
|
|
* 添加急救信息和急救记录信息 |
|
|
|
*/ |
|
|
|
private void saveAidRecord(CarRecordMessageDto carRecordMessageDto, Long wisdomCarId) { |
|
|
|
private void saveAidRecord(CarRecordMessageDto carRecordMessageDto, Long wisdomCarId, StepVo.Step step) { |
|
|
|
// 如果是开始信息,新建一条急救表数据
|
|
|
|
String key = Constant.FIRST_AID + wisdomCarId; |
|
|
|
if(carRecordMessageDto.getType() == Constant.CAR_RECORD_START){ |
|
|
@ -224,6 +233,11 @@ public class RecordService implements IRecordService{ |
|
|
|
firstAidMapper.insertSelective(firstAid); |
|
|
|
//存入redis
|
|
|
|
redisUtil.set(key,firstAid.getId(),Constant.FIRST_AID_REDIS_TIME); |
|
|
|
//删除redis内此平车之前的倾角数据
|
|
|
|
String keyX = Constant.FIRST_AID + carRecordMessageDto.getAuthId() + 21; |
|
|
|
String keyY = Constant.FIRST_AID + carRecordMessageDto.getAuthId() + 22; |
|
|
|
String keyZ = Constant.FIRST_AID + carRecordMessageDto.getAuthId() + 23; |
|
|
|
redisUtil.del(keyX,keyY,keyZ); |
|
|
|
return; |
|
|
|
} |
|
|
|
//redis查询急救表
|
|
|
@ -249,14 +263,14 @@ public class RecordService implements IRecordService{ |
|
|
|
case Constant.THROMBOLYTIC: |
|
|
|
case Constant.BOLUS_DOSE: |
|
|
|
case Constant.MAINTENANCE_DOSE: |
|
|
|
saveFirstAidRecord(carRecordMessageDto,firstAidId); |
|
|
|
saveFirstAidRecord(carRecordMessageDto,firstAidId,step); |
|
|
|
break; |
|
|
|
default: |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private void saveFirstAidRecord(CarRecordMessageDto carRecordMessageDto, Long firstAidId) { |
|
|
|
private void saveFirstAidRecord(CarRecordMessageDto carRecordMessageDto, Long firstAidId, StepVo.Step step) { |
|
|
|
String reidKey; |
|
|
|
if(carRecordMessageDto.getType() == Constant.CAR_RECORD_RFID){ |
|
|
|
reidKey = Constant.FIRST_AID + firstAidId + "_" + carRecordMessageDto.getType() + "_" + carRecordMessageDto.getValue(); |
|
|
@ -286,6 +300,7 @@ public class RecordService implements IRecordService{ |
|
|
|
aidRecord.setFirstAidId(firstAidId); |
|
|
|
aidRecord.setBeginTime(carRecordMessageDto.getTime()); |
|
|
|
aidRecord.setType(carRecordMessageDto.getType()); |
|
|
|
aidRecord.setStepId(step == null ? null : step.getId()); |
|
|
|
firstAidRecordMapper.insertSelective(aidRecord); |
|
|
|
//添加redis
|
|
|
|
redisUtil.set(reidKey,aidRecord.getId(),Constant.FIRST_AID_REDIS_TIME); |
|
|
|