|
@ -12,6 +12,7 @@ import com.ccsens.util.bean.message.common.MessageRule; |
|
|
import com.ccsens.wisdomcar.bean.dto.Message.CarRecordMessageDto; |
|
|
import com.ccsens.wisdomcar.bean.dto.Message.CarRecordMessageDto; |
|
|
import com.ccsens.wisdomcar.bean.po.*; |
|
|
import com.ccsens.wisdomcar.bean.po.*; |
|
|
import com.ccsens.wisdomcar.bean.vo.Message.CarRecordMessageVo; |
|
|
import com.ccsens.wisdomcar.bean.vo.Message.CarRecordMessageVo; |
|
|
|
|
|
import com.ccsens.wisdomcar.persist.dao.StepDao; |
|
|
import com.ccsens.wisdomcar.persist.mapper.*; |
|
|
import com.ccsens.wisdomcar.persist.mapper.*; |
|
|
import com.ccsens.wisdomcar.util.Constant; |
|
|
import com.ccsens.wisdomcar.util.Constant; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
@ -20,7 +21,6 @@ import org.springframework.transaction.annotation.Propagation; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
import javax.annotation.Resource; |
|
|
import java.math.BigDecimal; |
|
|
|
|
|
import java.util.HashSet; |
|
|
import java.util.HashSet; |
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
import java.util.Random; |
|
|
import java.util.Random; |
|
@ -42,6 +42,8 @@ public class RecordService implements IRecordService{ |
|
|
@Resource |
|
|
@Resource |
|
|
private FirstAidRecordMapper firstAidRecordMapper; |
|
|
private FirstAidRecordMapper firstAidRecordMapper; |
|
|
@Resource |
|
|
@Resource |
|
|
|
|
|
private StepDao stepDao; |
|
|
|
|
|
@Resource |
|
|
private Snowflake snowflake; |
|
|
private Snowflake snowflake; |
|
|
@Resource |
|
|
@Resource |
|
|
private IMessageService messageService; |
|
|
private IMessageService messageService; |
|
@ -83,38 +85,46 @@ public class RecordService implements IRecordService{ |
|
|
if(CollectionUtil.isNotEmpty(screenList)){ |
|
|
if(CollectionUtil.isNotEmpty(screenList)){ |
|
|
screenList.forEach(screen -> userIdSet.add(screen.getUserId().toString())); |
|
|
screenList.forEach(screen -> userIdSet.add(screen.getUserId().toString())); |
|
|
} |
|
|
} |
|
|
|
|
|
//获取流程
|
|
|
|
|
|
String step = null; |
|
|
|
|
|
if(carRecordMessageDto.getType() == Constant.CAR_RECORD_WEIGHT){ |
|
|
|
|
|
step = stepDao.getCodeByStepOne(); |
|
|
|
|
|
} |
|
|
|
|
|
if(carRecordMessageDto.getType() == Constant.CAR_RECORD_RFID){ |
|
|
|
|
|
step = stepDao.getCodeByRfId(carRecordMessageDto.getValue()); |
|
|
|
|
|
} |
|
|
//发送消息
|
|
|
//发送消息
|
|
|
sendRecordMessage(carRecordMessageDto,userIdSet); |
|
|
sendRecordMessage(carRecordMessageDto,userIdSet,step); |
|
|
//如果是称重信息,制造测试数据发送大屏
|
|
|
//如果是称重信息,制造测试数据发送大屏
|
|
|
String dosage = ""; |
|
|
|
|
|
if(carRecordMessageDto.getType() == Constant.CAR_RECORD_WEIGHT){ |
|
|
if(carRecordMessageDto.getType() == Constant.CAR_RECORD_WEIGHT){ |
|
|
dosage = doseAndSensorMessage(carRecordMessageDto, userIdSet); |
|
|
doseAndSensorMessage(carRecordMessageDto, userIdSet); |
|
|
} |
|
|
} |
|
|
//新建急救表存储信息
|
|
|
//新建急救表存储信息
|
|
|
saveAidRecord(carRecordMessageDto, wisdomCar.getId(),dosage); |
|
|
saveAidRecord(carRecordMessageDto, wisdomCar.getId()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private String doseAndSensorMessage(CarRecordMessageDto carRecordMessageDto, Set<String> userIdSet) throws Exception { |
|
|
private void doseAndSensorMessage(CarRecordMessageDto carRecordMessageDto, Set<String> userIdSet) throws Exception { |
|
|
//体重 单位g
|
|
|
//体重 单位g
|
|
|
int weightInt = Integer.parseInt(carRecordMessageDto.getValue()); |
|
|
int weightInt = Integer.parseInt(carRecordMessageDto.getValue()); |
|
|
/*剂量数据*/ |
|
|
// /*剂量数据*/
|
|
|
//计算剂量信息 总剂量 = 重量 * 0.9,团注剂量=总剂量*10%,维持剂量=总剂量*90%,均保留两位小数(重量为kg,消息发送的重量为g,需处理)
|
|
|
// //计算剂量信息 总剂量 = 重量 * 0.9,团注剂量=总剂量*10%,维持剂量=总剂量*90%,均保留两位小数(重量为kg,消息发送的重量为g,需处理)
|
|
|
String dosage; |
|
|
// String dosage;
|
|
|
BigDecimal weight = BigDecimal.valueOf(weightInt).divide(BigDecimal.valueOf(1000),2,BigDecimal.ROUND_HALF_UP); |
|
|
// 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 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 dose1 = totalDose.multiply(BigDecimal.valueOf(0.1)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
//维持剂量
|
|
|
// //维持剂量
|
|
|
BigDecimal dose2 = totalDose.subtract(dose1); |
|
|
// BigDecimal dose2 = totalDose.subtract(dose1);
|
|
|
dosage = totalDose + "," + dose1 + "," + dose2; |
|
|
// dosage = totalDose + "," + dose1 + "," + dose2;
|
|
|
//发送消息
|
|
|
// //发送消息
|
|
|
CarRecordMessageDto dosageRecord = new CarRecordMessageDto(); |
|
|
// CarRecordMessageDto dosageRecord = new CarRecordMessageDto();
|
|
|
BeanUtil.copyProperties(carRecordMessageDto,dosageRecord); |
|
|
// BeanUtil.copyProperties(carRecordMessageDto,dosageRecord);
|
|
|
dosageRecord.setType(Constant.CAR_RECORD_DOSAGE); |
|
|
// dosageRecord.setType(Constant.CAR_RECORD_DOSAGE);
|
|
|
dosageRecord.setValue(dosage); |
|
|
// dosageRecord.setValue(dosage);
|
|
|
//发送消息
|
|
|
// //发送消息
|
|
|
sendRecordMessage(dosageRecord,userIdSet); |
|
|
// sendRecordMessage(dosageRecord,userIdSet);
|
|
|
|
|
|
|
|
|
/*称重传感器数据*/ |
|
|
/*称重传感器数据*/ |
|
|
//获取一个5000以内的平均数
|
|
|
//获取一个5000以内的平均数
|
|
@ -133,51 +143,51 @@ public class RecordService implements IRecordService{ |
|
|
sensorMessage1.setType(Constant.WEIGHT_SENSOR_1); |
|
|
sensorMessage1.setType(Constant.WEIGHT_SENSOR_1); |
|
|
sensorMessage1.setValue(sensor1 + ""); |
|
|
sensorMessage1.setValue(sensor1 + ""); |
|
|
//发送消息
|
|
|
//发送消息
|
|
|
sendRecordMessage(sensorMessage1,userIdSet); |
|
|
sendRecordMessage(sensorMessage1,userIdSet,null); |
|
|
//第二个传感器
|
|
|
//第二个传感器
|
|
|
CarRecordMessageDto sensorMessage2 = new CarRecordMessageDto(); |
|
|
CarRecordMessageDto sensorMessage2 = new CarRecordMessageDto(); |
|
|
BeanUtil.copyProperties(carRecordMessageDto,sensorMessage2); |
|
|
BeanUtil.copyProperties(carRecordMessageDto,sensorMessage2); |
|
|
sensorMessage2.setType(Constant.WEIGHT_SENSOR_2); |
|
|
sensorMessage2.setType(Constant.WEIGHT_SENSOR_2); |
|
|
sensorMessage2.setValue(sensor2 + ""); |
|
|
sensorMessage2.setValue(sensor2 + ""); |
|
|
//发送消息
|
|
|
//发送消息
|
|
|
sendRecordMessage(sensorMessage2,userIdSet); |
|
|
sendRecordMessage(sensorMessage2,userIdSet,null); |
|
|
//第三个传感器
|
|
|
//第三个传感器
|
|
|
CarRecordMessageDto sensorMessage3 = new CarRecordMessageDto(); |
|
|
CarRecordMessageDto sensorMessage3 = new CarRecordMessageDto(); |
|
|
BeanUtil.copyProperties(carRecordMessageDto,sensorMessage3); |
|
|
BeanUtil.copyProperties(carRecordMessageDto,sensorMessage3); |
|
|
sensorMessage3.setType(Constant.WEIGHT_SENSOR_3); |
|
|
sensorMessage3.setType(Constant.WEIGHT_SENSOR_3); |
|
|
sensorMessage3.setValue(sensor3 + ""); |
|
|
sensorMessage3.setValue(sensor3 + ""); |
|
|
//发送消息
|
|
|
//发送消息
|
|
|
sendRecordMessage(sensorMessage3,userIdSet); |
|
|
sendRecordMessage(sensorMessage3,userIdSet,null); |
|
|
//第四个传感器
|
|
|
//第四个传感器
|
|
|
CarRecordMessageDto sensorMessage4 = new CarRecordMessageDto(); |
|
|
CarRecordMessageDto sensorMessage4 = new CarRecordMessageDto(); |
|
|
BeanUtil.copyProperties(carRecordMessageDto,sensorMessage4); |
|
|
BeanUtil.copyProperties(carRecordMessageDto,sensorMessage4); |
|
|
sensorMessage4.setType(Constant.WEIGHT_SENSOR_4); |
|
|
sensorMessage4.setType(Constant.WEIGHT_SENSOR_4); |
|
|
sensorMessage4.setValue(sensor4 + ""); |
|
|
sensorMessage4.setValue(sensor4 + ""); |
|
|
//发送消息
|
|
|
//发送消息
|
|
|
sendRecordMessage(sensorMessage4,userIdSet); |
|
|
sendRecordMessage(sensorMessage4,userIdSet,null); |
|
|
|
|
|
|
|
|
/*震动传感器数据*/ |
|
|
// /*震动传感器数据*/
|
|
|
//随机生成坐标
|
|
|
// //随机生成坐标
|
|
|
int shakeX = random.nextInt(65535); |
|
|
// int shakeX = random.nextInt(65535);
|
|
|
int shakeY = random.nextInt(65535); |
|
|
// int shakeY = random.nextInt(65535);
|
|
|
int shakeZ = random.nextInt(65535); |
|
|
// int shakeZ = random.nextInt(65535);
|
|
|
//震动传感器
|
|
|
// //震动传感器
|
|
|
CarRecordMessageDto shakeMessage = new CarRecordMessageDto(); |
|
|
// CarRecordMessageDto shakeMessage = new CarRecordMessageDto();
|
|
|
BeanUtil.copyProperties(carRecordMessageDto,shakeMessage); |
|
|
// BeanUtil.copyProperties(carRecordMessageDto,shakeMessage);
|
|
|
shakeMessage.setType(Constant.SHAKE_SENSOR); |
|
|
// shakeMessage.setType(Constant.SHAKE_SENSOR);
|
|
|
shakeMessage.setValue(shakeX + "," + shakeY + "," + shakeZ); |
|
|
// shakeMessage.setValue(shakeX + "," + shakeY + "," + shakeZ);
|
|
|
//发送消息
|
|
|
// //发送消息
|
|
|
sendRecordMessage(shakeMessage,userIdSet); |
|
|
// sendRecordMessage(shakeMessage,userIdSet);
|
|
|
|
|
|
|
|
|
return dosage; |
|
|
// return dosage;
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 发送消息 |
|
|
* 发送消息 |
|
|
*/ |
|
|
*/ |
|
|
private void sendRecordMessage(CarRecordMessageDto carRecordMessageDto,Set<String> userIdSet) throws Exception { |
|
|
private void sendRecordMessage(CarRecordMessageDto carRecordMessageDto,Set<String> userIdSet,String step) throws Exception { |
|
|
CarRecordMessageVo carRecordMessageVo = new CarRecordMessageVo(carRecordMessageDto.getCarNumber(),carRecordMessageDto.getType(),carRecordMessageDto.getValue(),carRecordMessageDto.getTime()); |
|
|
CarRecordMessageVo carRecordMessageVo = new CarRecordMessageVo(carRecordMessageDto.getCarNumber(),carRecordMessageDto.getType(),carRecordMessageDto.getValue(),carRecordMessageDto.getTime(),step); |
|
|
|
|
|
|
|
|
MessageRule messageRule = MessageRule.defaultRule(MessageConstant.DomainType.User); |
|
|
MessageRule messageRule = MessageRule.defaultRule(MessageConstant.DomainType.User); |
|
|
String s = JacksonUtil.beanToJson(carRecordMessageVo); |
|
|
String s = JacksonUtil.beanToJson(carRecordMessageVo); |
|
@ -189,7 +199,7 @@ public class RecordService implements IRecordService{ |
|
|
/** |
|
|
/** |
|
|
* 添加急救信息和急救记录信息 |
|
|
* 添加急救信息和急救记录信息 |
|
|
*/ |
|
|
*/ |
|
|
private void saveAidRecord(CarRecordMessageDto carRecordMessageDto, Long wisdomCarId,String dosage) { |
|
|
private void saveAidRecord(CarRecordMessageDto carRecordMessageDto, Long wisdomCarId) { |
|
|
// 如果是开始信息,新建一条急救表数据
|
|
|
// 如果是开始信息,新建一条急救表数据
|
|
|
String key = Constant.FIRST_AID + wisdomCarId; |
|
|
String key = Constant.FIRST_AID + wisdomCarId; |
|
|
if(carRecordMessageDto.getType() == Constant.CAR_RECORD_START){ |
|
|
if(carRecordMessageDto.getType() == Constant.CAR_RECORD_START){ |
|
@ -220,60 +230,52 @@ public class RecordService implements IRecordService{ |
|
|
if(firstAidId == null){ |
|
|
if(firstAidId == null){ |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
//如果是称重信息
|
|
|
|
|
|
if(carRecordMessageDto.getType() == Constant.CAR_RECORD_WEIGHT){ |
|
|
switch (carRecordMessageDto.getType()){ |
|
|
String weightKey = Constant.FIRST_AID + firstAidId + "_" + Constant.CAR_RECORD_WEIGHT; |
|
|
case Constant.CAR_RECORD_RFID : |
|
|
Object weightRedis = redisUtil.get(weightKey); |
|
|
case Constant.CAR_RECORD_WEIGHT: |
|
|
if(ObjectUtil.isNotNull(weightRedis)){ |
|
|
case Constant.THROMBOLYTIC: |
|
|
return; |
|
|
case Constant.BOLUS_DOSE: |
|
|
} |
|
|
case Constant.MAINTENANCE_DOSE: |
|
|
FirstAidRecordExample aidRecordExample = new FirstAidRecordExample(); |
|
|
saveFirstAidRecord(carRecordMessageDto,firstAidId); |
|
|
aidRecordExample.createCriteria().andTypeEqualTo(carRecordMessageDto.getType()).andFirstAidIdEqualTo(firstAidId); |
|
|
break; |
|
|
if(firstAidRecordMapper.countByExample(aidRecordExample) > 0){ |
|
|
default: |
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
//没有数据则添加
|
|
|
|
|
|
FirstAidRecord aidRecord = new FirstAidRecord(); |
|
|
|
|
|
aidRecord.setId(snowflake.nextId()); |
|
|
|
|
|
aidRecord.setFirstAidId(firstAidId); |
|
|
|
|
|
aidRecord.setValue(carRecordMessageDto.getValue()); |
|
|
|
|
|
aidRecord.setBeginTime(carRecordMessageDto.getTime()); |
|
|
|
|
|
aidRecord.setType(carRecordMessageDto.getType()); |
|
|
|
|
|
firstAidRecordMapper.insertSelective(aidRecord); |
|
|
|
|
|
//添加redis
|
|
|
|
|
|
redisUtil.set(weightKey,aidRecord.getId(),Constant.FIRST_AID_REDIS_TIME); |
|
|
|
|
|
//添加剂量信息
|
|
|
|
|
|
FirstAidRecord dosageRecord = new FirstAidRecord(); |
|
|
|
|
|
dosageRecord.setId(snowflake.nextId()); |
|
|
|
|
|
dosageRecord.setFirstAidId(firstAidId); |
|
|
|
|
|
dosageRecord.setValue(dosage); |
|
|
|
|
|
dosageRecord.setType(Constant.SHAKE_SENSOR); |
|
|
|
|
|
dosageRecord.setBeginTime(carRecordMessageDto.getTime()); |
|
|
|
|
|
firstAidRecordMapper.insertSelective(dosageRecord); |
|
|
|
|
|
} |
|
|
} |
|
|
//如果是rfid信息
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void saveFirstAidRecord(CarRecordMessageDto carRecordMessageDto, Long firstAidId) { |
|
|
|
|
|
String reidKey; |
|
|
if(carRecordMessageDto.getType() == Constant.CAR_RECORD_RFID){ |
|
|
if(carRecordMessageDto.getType() == Constant.CAR_RECORD_RFID){ |
|
|
String reidKey = Constant.FIRST_AID + firstAidId + "_" + Constant.CAR_RECORD_RFID + "_" + carRecordMessageDto.getValue(); |
|
|
reidKey = Constant.FIRST_AID + firstAidId + "_" + carRecordMessageDto.getType() + "_" + carRecordMessageDto.getValue(); |
|
|
Object weightRedis = redisUtil.get(reidKey); |
|
|
}else { |
|
|
if(ObjectUtil.isNotNull(weightRedis)){ |
|
|
reidKey = Constant.FIRST_AID + firstAidId + "_" + carRecordMessageDto.getType(); |
|
|
return; |
|
|
} |
|
|
} |
|
|
Object weightRedis = redisUtil.get(reidKey); |
|
|
FirstAidRecordExample aidRecordExample = new FirstAidRecordExample(); |
|
|
if(ObjectUtil.isNotNull(weightRedis)){ |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
FirstAidRecordExample aidRecordExample = new FirstAidRecordExample(); |
|
|
|
|
|
if(carRecordMessageDto.getType() == Constant.CAR_RECORD_RFID) { |
|
|
aidRecordExample.createCriteria().andFirstAidIdEqualTo(firstAidId) |
|
|
aidRecordExample.createCriteria().andFirstAidIdEqualTo(firstAidId) |
|
|
.andTypeEqualTo(carRecordMessageDto.getType()).andValueEqualTo(carRecordMessageDto.getValue()); |
|
|
.andTypeEqualTo(carRecordMessageDto.getType()).andValueEqualTo(carRecordMessageDto.getValue()); |
|
|
if(firstAidRecordMapper.countByExample(aidRecordExample) > 0){ |
|
|
}else { |
|
|
return; |
|
|
aidRecordExample.createCriteria().andFirstAidIdEqualTo(firstAidId) |
|
|
} |
|
|
.andTypeEqualTo(carRecordMessageDto.getType()); |
|
|
//没有数据则添加
|
|
|
} |
|
|
FirstAidRecord aidRecord = new FirstAidRecord(); |
|
|
if(firstAidRecordMapper.countByExample(aidRecordExample) > 0){ |
|
|
aidRecord.setId(snowflake.nextId()); |
|
|
return; |
|
|
aidRecord.setValue(carRecordMessageDto.getValue()); |
|
|
|
|
|
aidRecord.setFirstAidId(firstAidId); |
|
|
|
|
|
aidRecord.setBeginTime(carRecordMessageDto.getTime()); |
|
|
|
|
|
aidRecord.setType(carRecordMessageDto.getType()); |
|
|
|
|
|
firstAidRecordMapper.insertSelective(aidRecord); |
|
|
|
|
|
//添加redis
|
|
|
|
|
|
redisUtil.set(reidKey,aidRecord.getId(),Constant.FIRST_AID_REDIS_TIME); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
//没有数据则添加
|
|
|
|
|
|
FirstAidRecord aidRecord = new FirstAidRecord(); |
|
|
|
|
|
aidRecord.setId(snowflake.nextId()); |
|
|
|
|
|
aidRecord.setValue(carRecordMessageDto.getValue()); |
|
|
|
|
|
aidRecord.setFirstAidId(firstAidId); |
|
|
|
|
|
aidRecord.setBeginTime(carRecordMessageDto.getTime()); |
|
|
|
|
|
aidRecord.setType(carRecordMessageDto.getType()); |
|
|
|
|
|
firstAidRecordMapper.insertSelective(aidRecord); |
|
|
|
|
|
//添加redis
|
|
|
|
|
|
redisUtil.set(reidKey,aidRecord.getId(),Constant.FIRST_AID_REDIS_TIME); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|