diff --git a/util/src/main/java/com/ccsens/util/config/RabbitMQConfig.java b/util/src/main/java/com/ccsens/util/config/RabbitMQConfig.java index 0b07bcf1..68cd4d7d 100644 --- a/util/src/main/java/com/ccsens/util/config/RabbitMQConfig.java +++ b/util/src/main/java/com/ccsens/util/config/RabbitMQConfig.java @@ -53,6 +53,11 @@ public class RabbitMQConfig { return new Queue(GAME_SCORE); } + @Bean + public Queue wisdom_car(){ + return new Queue(WISDOM_CAR); + } + // @Bean // public Queue queueGame(){ // return new Queue(GAME_MQ_A); diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/api/DebugController.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/api/DebugController.java index 846d1f23..5d91ffc6 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/api/DebugController.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/api/DebugController.java @@ -1,14 +1,22 @@ package com.ccsens.wisdomcar.api; import com.ccsens.util.JsonResponse; +import com.ccsens.util.bean.dto.QueryDto; +import com.ccsens.wisdomcar.bean.dto.Message.CarRecordMessageDto; +import com.ccsens.wisdomcar.bean.dto.StatisticsDto; +import com.ccsens.wisdomcar.service.IRecordService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; @Api(tags = "DEBUG" , description = "DebugController | ") @@ -16,6 +24,8 @@ import javax.servlet.http.HttpServletRequest; @RequestMapping("/debug") @Slf4j public class DebugController { + @Resource + private IRecordService recordService; @ApiOperation(value = "/测试",notes = "") @ApiImplicitParams({ @@ -26,4 +36,13 @@ public class DebugController { return JsonResponse.newInstance().ok("测试"); } + @ApiOperation(value = "/测试消息接收存放",notes = "") + @ApiImplicitParams({ + }) + @RequestMapping(value="/record",method = RequestMethod.POST,produces = {"application/json;charset=UTF-8"}) + public JsonResponse record(@ApiParam @Validated @RequestBody QueryDto params) throws Exception { + recordService.disposeMessage(params.getParam()); + return JsonResponse.newInstance().ok("测试"); + } + } diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/api/StatisticsController.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/api/StatisticsController.java index 109ef427..21eb77a0 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/api/StatisticsController.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/api/StatisticsController.java @@ -1,10 +1,22 @@ package com.ccsens.wisdomcar.api; +import com.ccsens.util.JsonResponse; +import com.ccsens.util.bean.dto.QueryDto; +import com.ccsens.wisdomcar.bean.dto.StatisticsDto; +import com.ccsens.wisdomcar.bean.vo.StatisticsVo; +import com.ccsens.wisdomcar.service.IStatisticsService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; + /** * @author 逗 */ @@ -13,5 +25,15 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/statistics") public class StatisticsController { + @Resource + private IStatisticsService statisticsService; + @ApiOperation(value = "查看测评结果", notes = "") + @RequestMapping(value = "/get/result", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse getResult(@ApiParam @Validated @RequestBody QueryDto params) { + log.info("查看测评结果:{}",params); + StatisticsVo.FastEdResult fastEdResult = statisticsService.getResult(params.getParam()); + log.info("查看测评结果"); + return JsonResponse.newInstance().ok(fastEdResult); + } } 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 ce72b5bd..d1811432 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:体重 2:剂量 3:rfid + * 类型 0开始 1体重 2rfid, 3称重一 4称重二 5称重三 6称重四 7震动 8剂量 */ private byte type; /** diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/StatisticsDto.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/StatisticsDto.java new file mode 100644 index 00000000..027782bc --- /dev/null +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/StatisticsDto.java @@ -0,0 +1,20 @@ +package com.ccsens.wisdomcar.bean.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author 逗 + */ +@Data +public class StatisticsDto { + + @Data + @ApiModel("医院id") + public static class Hospital{ + @ApiModelProperty("医院id") + private Long id; + } + +} diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/StatisticsVo.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/StatisticsVo.java new file mode 100644 index 00000000..23a7aa4f --- /dev/null +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/StatisticsVo.java @@ -0,0 +1,20 @@ +package com.ccsens.wisdomcar.bean.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author 逗 + */ +@Data +public class StatisticsVo { + + + @Data + @ApiModel("医院id") + public static class FastEdResult{ + @ApiModelProperty("医院id") + private Long id; + } +} diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/rabbitMQ/RabbitController.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/rabbitMQ/RabbitController.java index 02c25c0f..bbccaf20 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/rabbitMQ/RabbitController.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/rabbitMQ/RabbitController.java @@ -9,6 +9,7 @@ import com.ccsens.util.config.RabbitMQConfig; import com.ccsens.wisdomcar.bean.dto.Message.CarRecordMessageDto; import com.ccsens.wisdomcar.service.IRecordService; import com.ccsens.wisdomcar.service.RecordService; +import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.amqp.rabbit.annotation.RabbitHandler; @@ -19,7 +20,7 @@ import javax.annotation.Resource; import java.util.List; import java.util.Set; - +@Slf4j @Component @RabbitListener(queues = RabbitMQConfig.WISDOM_CAR) public class RabbitController { @@ -44,7 +45,12 @@ public class RabbitController { if(ObjectUtil.isNull(carRecordMessageDto)){ return; } - recordService.disposeMessage(carRecordMessageDto); + try { + recordService.disposeMessage(carRecordMessageDto); + } catch (Exception e) { + log.error("处理平车信息异常",e); + e.printStackTrace(); + } }); } diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IRecordService.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IRecordService.java index 424e20fa..1debd2fc 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IRecordService.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IRecordService.java @@ -4,9 +4,11 @@ import com.ccsens.wisdomcar.bean.dto.Message.CarRecordMessageDto; import com.fasterxml.jackson.core.JsonProcessingException; public interface IRecordService { + /** * 后台接受消息并处理 * @param carRecordMessageDto 接收到的消息 + * @throws Exception */ - void disposeMessage(CarRecordMessageDto carRecordMessageDto) throws JsonProcessingException, Exception; + void disposeMessage(CarRecordMessageDto carRecordMessageDto) throws Exception; } diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IStatisticsService.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IStatisticsService.java new file mode 100644 index 00000000..b2125283 --- /dev/null +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/IStatisticsService.java @@ -0,0 +1,13 @@ +package com.ccsens.wisdomcar.service; + +import com.ccsens.wisdomcar.bean.dto.StatisticsDto; +import com.ccsens.wisdomcar.bean.vo.StatisticsVo; + +public interface IStatisticsService { + /** + * 查看FAST ED结果 + * @param param + * @return + */ + StatisticsVo.FastEdResult getResult(StatisticsDto.Hospital param); +} 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 0953377e..58fd2010 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/RecordService.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/RecordService.java @@ -1,27 +1,29 @@ package com.ccsens.wisdomcar.service; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.ObjectUtil; import com.ccsens.util.JacksonUtil; +import com.ccsens.util.RedisUtil; import com.ccsens.util.bean.message.common.InMessage; import com.ccsens.util.bean.message.common.MessageConstant; 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.mapper.FirstAidMapper; -import com.ccsens.wisdomcar.persist.mapper.FirstAidRecordMapper; -import com.ccsens.wisdomcar.persist.mapper.WisdomCarMapper; -import com.ccsens.wisdomcar.persist.mapper.WisdomCarRecordMapper; +import com.ccsens.wisdomcar.persist.mapper.*; +import com.ccsens.wisdomcar.util.Constant; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; 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; import java.util.Set; /** @@ -43,6 +45,10 @@ public class RecordService implements IRecordService{ private Snowflake snowflake; @Resource private IMessageService messageService; + @Resource + private ScreenMapper screenMapper; + @Resource + private RedisUtil redisUtil; @Override public void disposeMessage(CarRecordMessageDto carRecordMessageDto) throws Exception { @@ -68,98 +74,206 @@ public class RecordService implements IRecordService{ wisdomCarRecord.setValue(carRecordMessageDto.getValue()); wisdomCarRecord.setTime(carRecordMessageDto.getTime()); wisdomCarRecordMapper.insertSelective(wisdomCarRecord); - // 发送的消息 - CarRecordMessageVo carRecordMessageVo = new CarRecordMessageVo(carRecordMessageDto.getCarNumber(),carRecordMessageDto.getType(),carRecordMessageDto.getValue(),carRecordMessageDto.getTime()); - //添加接收者 + + //查找医院大屏的userId(暂时查找主屏幕) Set userIdSet = new HashSet<>(); - userIdSet.add("123456"); + ScreenExample screenExample = new ScreenExample(); + screenExample.createCriteria().andHospitalIdEqualTo(0L).andShowTypeEqualTo((byte) 0); + List screenList = screenMapper.selectByExample(screenExample); + if(CollectionUtil.isNotEmpty(screenList)){ + screenList.forEach(screen -> userIdSet.add(screen.getUserId().toString())); + } + //发送消息 + sendRecordMessage(carRecordMessageDto,userIdSet); + //如果是称重信息,制造测试数据发送大屏 + String dosage = ""; + if(carRecordMessageDto.getType() == Constant.CAR_RECORD_WEIGHT){ + dosage = doseAndSensorMessage(carRecordMessageDto, userIdSet); + } + //新建急救表存储信息 + saveAidRecord(carRecordMessageDto, wisdomCar.getId(),dosage); + } + + private String 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.divide(BigDecimal.valueOf(0.9),2,BigDecimal.ROUND_HALF_UP); + //团注剂量 + BigDecimal dose1 = totalDose.divide(BigDecimal.valueOf(0.1),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以内的平均数 + Random random = new Random(); + int randomWeight = random.nextInt(5000); + //体重除以4 + int aveWeight = weightInt / 4; + int sensor1 = aveWeight - randomWeight; + int sensor2 = aveWeight + randomWeight; + int sensor3 = aveWeight - randomWeight; + int sensor4 = weightInt - sensor1 - sensor2 - sensor3; + + //第一个传感器 + CarRecordMessageDto sensorMessage1 = new CarRecordMessageDto(); + BeanUtil.copyProperties(carRecordMessageDto,sensor1); + sensorMessage1.setType(Constant.WEIGHT_SENSOR_1); + sensorMessage1.setValue(sensor1 + ""); + //发送消息 + sendRecordMessage(sensorMessage1,userIdSet); + //第二个传感器 + CarRecordMessageDto sensorMessage2 = new CarRecordMessageDto(); + BeanUtil.copyProperties(carRecordMessageDto,sensor1); + sensorMessage2.setType(Constant.WEIGHT_SENSOR_2); + sensorMessage2.setValue(sensor2 + ""); + //发送消息 + sendRecordMessage(sensorMessage2,userIdSet); + //第三个传感器 + CarRecordMessageDto sensorMessage3 = new CarRecordMessageDto(); + BeanUtil.copyProperties(carRecordMessageDto,sensor1); + sensorMessage3.setType(Constant.WEIGHT_SENSOR_3); + sensorMessage3.setValue(sensor3 + ""); + //发送消息 + sendRecordMessage(sensorMessage3,userIdSet); + //第四个传感器 + CarRecordMessageDto sensorMessage4 = new CarRecordMessageDto(); + BeanUtil.copyProperties(carRecordMessageDto,sensor1); + sensorMessage4.setType(Constant.WEIGHT_SENSOR_4); + sensorMessage4.setValue(sensor4 + ""); + //发送消息 + sendRecordMessage(sensorMessage4,userIdSet); + + /*震动传感器数据*/ + //随机生成坐标 + int shakeX = random.nextInt(65535); + int shakeY = random.nextInt(65535); + int shakeZ = random.nextInt(65535); + //第四个传感器 + CarRecordMessageDto shakeMessage = new CarRecordMessageDto(); + BeanUtil.copyProperties(carRecordMessageDto,sensor1); + shakeMessage.setType(Constant.WEIGHT_SENSOR_4); + shakeMessage.setValue(shakeX + "," + shakeY + "," + shakeZ); + //发送消息 + sendRecordMessage(shakeMessage,userIdSet); + + return dosage; + } + + + /** + * 发送消息 + */ + private void sendRecordMessage(CarRecordMessageDto carRecordMessageDto,Set userIdSet) throws Exception { + CarRecordMessageVo carRecordMessageVo = new CarRecordMessageVo(carRecordMessageDto.getCarNumber(),carRecordMessageDto.getType(),carRecordMessageDto.getValue(),carRecordMessageDto.getTime()); + MessageRule messageRule = MessageRule.defaultRule(MessageConstant.DomainType.User); String s = JacksonUtil.beanToJson(carRecordMessageVo); InMessage inMessage = InMessage.newToUserMessage(null,userIdSet,null,messageRule,s); //发送消息 messageService.sendToCarRecord(inMessage); - //TODO 如果是称重信息,制造测试数据发送大屏 - - //新建急救表存储信息 - saveAidRecord(carRecordMessageDto, wisdomCar.getId()); } - private void saveAidRecord(CarRecordMessageDto carRecordMessageDto, Long wisdomCarId) { - // 如果是开始信息,新建一条急救表数据( TODO redis) - if(carRecordMessageDto.getType() == 0){ - //TODO 结束该平车的上一个急救信息 - FirstAidExample firstAidExample = new FirstAidExample(); - firstAidExample.createCriteria().andCarIdEqualTo(wisdomCarId).andBegintimeNotEqualTo(0L).andEndtimeEqualTo(0L); - List firstAidList = firstAidMapper.selectByExample(firstAidExample); -// if(CollectionUtil.isNotEmpty()) + /** + * 添加急救信息和急救记录信息 + */ + private void saveAidRecord(CarRecordMessageDto carRecordMessageDto, Long wisdomCarId,String dosage) { + // 如果是开始信息,新建一条急救表数据 + String key = Constant.FIRST_AID + wisdomCarId; + if(carRecordMessageDto.getType() == Constant.CAR_RECORD_START){ //新建急救信息 FirstAid firstAid = new FirstAid(); firstAid.setId(snowflake.nextId()); firstAid.setCarId(wisdomCarId); - firstAid.setBegintime(carRecordMessageDto.getTime()); + firstAid.setBeginTime(carRecordMessageDto.getTime()); //存入数据库 firstAidMapper.insertSelective(firstAid); //存入redis - String key = ""; - }else { - // 否则去添加急救流程信息(TODO redis) - //急救表id 通过平车id查找 + redisUtil.set(key,firstAid.getId(),Constant.FIRST_AID_REDIS_TIME); + return; + } + //redis查询急救表 + Long firstAidId = null; + Object o = redisUtil.get(key); + if(ObjectUtil.isNotNull(o)){ FirstAidExample firstAidExample = new FirstAidExample(); firstAidExample.createCriteria().andCarIdEqualTo(wisdomCarId); List firstAids = firstAidMapper.selectByExample(firstAidExample); - if(CollectionUtil.isNotEmpty(firstAids)){ - FirstAid firstAid = firstAids.get(0); - //查找该环节是否已经存储信息 - if(carRecordMessageDto.getType() == 3){ - //rfid需要判断类型和value的值(rfid)是否相同 - FirstAidRecordExample aidRecordExample = new FirstAidRecordExample(); - aidRecordExample.createCriteria().andTypeEqualTo(carRecordMessageDto.getType()).andValueEqualTo(carRecordMessageDto.getValue()); - if(firstAidRecordMapper.countByExample(aidRecordExample) <= 0){ - //没有数据则添加 - FirstAidRecord aidRecord = new FirstAidRecord(); - aidRecord.setId(snowflake.nextId()); - aidRecord.setFirstAidId(firstAid.getId()); - aidRecord.setValue(carRecordMessageDto.getValue()); - aidRecord.setBegintime(carRecordMessageDto.getTime()); - aidRecord.setType(carRecordMessageDto.getType()); - firstAidRecordMapper.insertSelective(aidRecord); - //修改之前的所有没有结束时间的环节 - FirstAidRecordExample recordExample = new FirstAidRecordExample(); - recordExample.createCriteria().andBegintimeNotEqualTo(0L).andEndtimeEqualTo(0L); - List firstAidRecordList = firstAidRecordMapper.selectByExample(recordExample); - if(CollectionUtil.isNotEmpty(firstAidRecordList)){ - firstAidRecordList.forEach(firstAidRecord -> { - firstAidRecord.setEndtime(carRecordMessageDto.getTime()); - firstAidRecordMapper.updateByPrimaryKeySelective(firstAidRecord); - }); - } - } - }else { - //其他类型只需要判断类型是否相同 - FirstAidRecordExample aidRecordExample = new FirstAidRecordExample(); - aidRecordExample.createCriteria().andTypeEqualTo(carRecordMessageDto.getType()); - if(firstAidRecordMapper.countByExample(aidRecordExample) <= 0){ - //没有数据则添加 - FirstAidRecord aidRecord = new FirstAidRecord(); - aidRecord.setId(snowflake.nextId()); - aidRecord.setFirstAidId(firstAid.getId()); - aidRecord.setValue(carRecordMessageDto.getValue()); - aidRecord.setBegintime(carRecordMessageDto.getTime()); - aidRecord.setType(carRecordMessageDto.getType()); - firstAidRecordMapper.insertSelective(aidRecord); - //修改之前的所有没有结束时间的环节 - FirstAidRecordExample recordExample = new FirstAidRecordExample(); - recordExample.createCriteria().andBegintimeNotEqualTo(0L).andEndtimeEqualTo(0L); - List firstAidRecordList = firstAidRecordMapper.selectByExample(recordExample); - if(CollectionUtil.isNotEmpty(firstAidRecordList)){ - firstAidRecordList.forEach(firstAidRecord -> { - firstAidRecord.setEndtime(carRecordMessageDto.getTime()); - firstAidRecordMapper.updateByPrimaryKeySelective(firstAidRecord); - }); - } - } - } + if(CollectionUtil.isNotEmpty(firstAids)) { + firstAidId = firstAids.get(0).getId(); + } + }else { + firstAidId = (Long) o; + } + 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); + } + //如果是rfid信息 + 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(); + 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); } } } diff --git a/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/StatisticsService.java b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/StatisticsService.java new file mode 100644 index 00000000..7a6d47cf --- /dev/null +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/service/StatisticsService.java @@ -0,0 +1,18 @@ +package com.ccsens.wisdomcar.service; + +import com.ccsens.wisdomcar.bean.dto.StatisticsDto; +import com.ccsens.wisdomcar.bean.vo.StatisticsVo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +@Slf4j +@Service +@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) +public class StatisticsService implements IStatisticsService{ + @Override + public StatisticsVo.FastEdResult getResult(StatisticsDto.Hospital param) { + return null; + } +} 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 1922824b..eb61ac9a 100644 --- a/wisdomcar/src/main/java/com/ccsens/wisdomcar/util/Constant.java +++ b/wisdomcar/src/main/java/com/ccsens/wisdomcar/util/Constant.java @@ -1,14 +1,36 @@ package com.ccsens.wisdomcar.util; + /** - * @description: - * @author: whj - * @time: 2020/8/13 17:14 + * @author 逗 */ public class Constant { /** * 急救信息 */ - public static final long SINGLE_ROLL_30_S = 2011; + public static final String FIRST_AID = "first_aid_"; + /** + * redis存储时间:五小时 (秒) + */ + public static final Long FIRST_AID_REDIS_TIME = 5 * 60 * 60L; + /**开始*/ + public static final byte CAR_RECORD_START = 0; + /**体重*/ + public static final byte CAR_RECORD_WEIGHT = 1; + /**rfid*/ + public static final byte CAR_RECORD_RFID = 2; + /**称重传感器一*/ + public static final byte WEIGHT_SENSOR_1 = 3; + /**称重传感器二*/ + public static final byte WEIGHT_SENSOR_2 = 4; + /**称重传感器三*/ + public static final byte WEIGHT_SENSOR_3 = 5; + /**称重传感器四*/ + public static final byte WEIGHT_SENSOR_4 = 6; + /**振动传感器(倾角传感器)*/ + public static final byte SHAKE_SENSOR = 7; + /**剂量*/ + public static final byte CAR_RECORD_DOSAGE = 8; + }