diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/Message/CarRecordMessageDto.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/Message/CarRecordMessageDto.java index d1811432..1976718d 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/Message/CarRecordMessageDto.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/Message/CarRecordMessageDto.java @@ -12,7 +12,7 @@ public class CarRecordMessageDto { */ private String carNumber; /** - * 类型 0开始 1体重 2rfid, 3称重一 4称重二 5称重三 6称重四 7震动 8剂量 + * 类型 0开始 1体重 2rfid, 3称重一 4称重二 5称重三 6称重四 7震动 8溶栓 9团注 10维持 */ private byte type; /** @@ -23,4 +23,5 @@ public class CarRecordMessageDto { * 时间 */ private Long time; + } diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/Message/CarRecordMessageVo.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/Message/CarRecordMessageVo.java index 36122865..de215e5a 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/Message/CarRecordMessageVo.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/Message/CarRecordMessageVo.java @@ -28,6 +28,10 @@ public class CarRecordMessageVo extends BaseMessageDto { * 时间 */ private Long time; + /** + * 流程 + */ + private String step; } private Data data; @@ -36,13 +40,14 @@ public class CarRecordMessageVo extends BaseMessageDto { setTime(System.currentTimeMillis()); } - public CarRecordMessageVo(String carNumber,int type,String value,Long time){ + public CarRecordMessageVo(String carNumber,int type,String value,Long time,String step){ this(); Data d = new Data(); d.setCarNumber(carNumber); d.setType(type); d.setValue(value); d.setTime(time); + d.setStep(step); setData(d); } } diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/StepDao.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/StepDao.java new file mode 100644 index 00000000..51f2d2c7 --- /dev/null +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/StepDao.java @@ -0,0 +1,21 @@ +package com.ccsens.wisdomcar.persist.dao; + +import com.ccsens.wisdomcar.persist.mapper.StepMapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +/** + * @author 逗 + */ +@Repository +public interface StepDao extends StepMapper { + + /** + * 通过rfid查找流程 + * @param value rfid + * @return 返回流程的code + */ + String getCodeByRfId(@Param("rfid") String value); + + String getCodeByStepOne(); +} diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/RecordService.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/RecordService.java index 80e8a0e7..d0d1cdc8 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/RecordService.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/RecordService.java @@ -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.po.*; 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.util.Constant; import lombok.extern.slf4j.Slf4j; @@ -20,7 +21,6 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.math.BigDecimal; import java.util.HashSet; import java.util.List; import java.util.Random; @@ -42,6 +42,8 @@ public class RecordService implements IRecordService{ @Resource private FirstAidRecordMapper firstAidRecordMapper; @Resource + private StepDao stepDao; + @Resource private Snowflake snowflake; @Resource private IMessageService messageService; @@ -83,38 +85,46 @@ public class RecordService implements IRecordService{ if(CollectionUtil.isNotEmpty(screenList)){ 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){ - dosage = doseAndSensorMessage(carRecordMessageDto, userIdSet); + doseAndSensorMessage(carRecordMessageDto, userIdSet); } //新建急救表存储信息 - saveAidRecord(carRecordMessageDto, wisdomCar.getId(),dosage); + saveAidRecord(carRecordMessageDto, wisdomCar.getId()); } - private String doseAndSensorMessage(CarRecordMessageDto carRecordMessageDto, Set userIdSet) throws Exception { + private void doseAndSensorMessage(CarRecordMessageDto carRecordMessageDto, Set userIdSet) throws Exception { //体重 单位g int weightInt = Integer.parseInt(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); +// /*剂量数据*/ +// //计算剂量信息 总剂量 = 重量 * 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); /*称重传感器数据*/ //获取一个5000以内的平均数 @@ -133,51 +143,51 @@ public class RecordService implements IRecordService{ sensorMessage1.setType(Constant.WEIGHT_SENSOR_1); sensorMessage1.setValue(sensor1 + ""); //发送消息 - sendRecordMessage(sensorMessage1,userIdSet); + sendRecordMessage(sensorMessage1,userIdSet,null); //第二个传感器 CarRecordMessageDto sensorMessage2 = new CarRecordMessageDto(); BeanUtil.copyProperties(carRecordMessageDto,sensorMessage2); sensorMessage2.setType(Constant.WEIGHT_SENSOR_2); sensorMessage2.setValue(sensor2 + ""); //发送消息 - sendRecordMessage(sensorMessage2,userIdSet); + sendRecordMessage(sensorMessage2,userIdSet,null); //第三个传感器 CarRecordMessageDto sensorMessage3 = new CarRecordMessageDto(); BeanUtil.copyProperties(carRecordMessageDto,sensorMessage3); sensorMessage3.setType(Constant.WEIGHT_SENSOR_3); sensorMessage3.setValue(sensor3 + ""); //发送消息 - sendRecordMessage(sensorMessage3,userIdSet); + sendRecordMessage(sensorMessage3,userIdSet,null); //第四个传感器 CarRecordMessageDto sensorMessage4 = new CarRecordMessageDto(); BeanUtil.copyProperties(carRecordMessageDto,sensorMessage4); sensorMessage4.setType(Constant.WEIGHT_SENSOR_4); sensorMessage4.setValue(sensor4 + ""); //发送消息 - sendRecordMessage(sensorMessage4,userIdSet); + sendRecordMessage(sensorMessage4,userIdSet,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); +// /*震动传感器数据*/ +// //随机生成坐标 +// 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; +// return dosage; } /** * 发送消息 */ - private void sendRecordMessage(CarRecordMessageDto carRecordMessageDto,Set userIdSet) throws Exception { - CarRecordMessageVo carRecordMessageVo = new CarRecordMessageVo(carRecordMessageDto.getCarNumber(),carRecordMessageDto.getType(),carRecordMessageDto.getValue(),carRecordMessageDto.getTime()); + private void sendRecordMessage(CarRecordMessageDto carRecordMessageDto,Set userIdSet,String step) throws Exception { + CarRecordMessageVo carRecordMessageVo = new CarRecordMessageVo(carRecordMessageDto.getCarNumber(),carRecordMessageDto.getType(),carRecordMessageDto.getValue(),carRecordMessageDto.getTime(),step); MessageRule messageRule = MessageRule.defaultRule(MessageConstant.DomainType.User); 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; if(carRecordMessageDto.getType() == Constant.CAR_RECORD_START){ @@ -220,60 +230,52 @@ public class RecordService implements IRecordService{ if(firstAidId == null){ return; } - //如果是称重信息 - if(carRecordMessageDto.getType() == Constant.CAR_RECORD_WEIGHT){ - String weightKey = Constant.FIRST_AID + firstAidId + "_" + Constant.CAR_RECORD_WEIGHT; - Object weightRedis = redisUtil.get(weightKey); - if(ObjectUtil.isNotNull(weightRedis)){ - return; - } - FirstAidRecordExample aidRecordExample = new FirstAidRecordExample(); - aidRecordExample.createCriteria().andTypeEqualTo(carRecordMessageDto.getType()).andFirstAidIdEqualTo(firstAidId); - if(firstAidRecordMapper.countByExample(aidRecordExample) > 0){ - 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); + + switch (carRecordMessageDto.getType()){ + case Constant.CAR_RECORD_RFID : + case Constant.CAR_RECORD_WEIGHT: + case Constant.THROMBOLYTIC: + case Constant.BOLUS_DOSE: + case Constant.MAINTENANCE_DOSE: + saveFirstAidRecord(carRecordMessageDto,firstAidId); + break; + default: } - //如果是rfid信息 + + } + + private void saveFirstAidRecord(CarRecordMessageDto carRecordMessageDto, Long firstAidId) { + String reidKey; if(carRecordMessageDto.getType() == Constant.CAR_RECORD_RFID){ - String reidKey = Constant.FIRST_AID + firstAidId + "_" + Constant.CAR_RECORD_RFID + "_" + carRecordMessageDto.getValue(); - Object weightRedis = redisUtil.get(reidKey); - if(ObjectUtil.isNotNull(weightRedis)){ - return; - } - FirstAidRecordExample aidRecordExample = new FirstAidRecordExample(); + reidKey = Constant.FIRST_AID + firstAidId + "_" + carRecordMessageDto.getType() + "_" + carRecordMessageDto.getValue(); + }else { + reidKey = Constant.FIRST_AID + firstAidId + "_" + carRecordMessageDto.getType(); + } + Object weightRedis = redisUtil.get(reidKey); + if(ObjectUtil.isNotNull(weightRedis)){ + return; + } + + FirstAidRecordExample aidRecordExample = new FirstAidRecordExample(); + if(carRecordMessageDto.getType() == Constant.CAR_RECORD_RFID) { aidRecordExample.createCriteria().andFirstAidIdEqualTo(firstAidId) .andTypeEqualTo(carRecordMessageDto.getType()).andValueEqualTo(carRecordMessageDto.getValue()); - if(firstAidRecordMapper.countByExample(aidRecordExample) > 0){ - return; - } - //没有数据则添加 - 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); + }else { + aidRecordExample.createCriteria().andFirstAidIdEqualTo(firstAidId) + .andTypeEqualTo(carRecordMessageDto.getType()); + } + if(firstAidRecordMapper.countByExample(aidRecordExample) > 0){ + return; } + //没有数据则添加 + 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); } } diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/util/Constant.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/util/Constant.java index eb61ac9a..532c2142 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/util/Constant.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/util/Constant.java @@ -29,8 +29,12 @@ public class Constant { public static final byte WEIGHT_SENSOR_4 = 6; /**振动传感器(倾角传感器)*/ public static final byte SHAKE_SENSOR = 7; - /**剂量*/ - public static final byte CAR_RECORD_DOSAGE = 8; + /**溶栓剂量*/ + public static final byte THROMBOLYTIC = 8; + /**团注剂量*/ + public static final byte BOLUS_DOSE = 9; + /**维持剂量*/ + public static final byte MAINTENANCE_DOSE = 10; } diff --git a/wisdomcar/src/main/resources/mapper_dao/StepDao.xml b/wisdomcar/src/main/resources/mapper_dao/StepDao.xml new file mode 100644 index 00000000..97f63365 --- /dev/null +++ b/wisdomcar/src/main/resources/mapper_dao/StepDao.xml @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file