Browse Source

20201215发送消息添加流程code

recovery
zy_Java 5 years ago
parent
commit
79c3f5efb7
  1. 3
      wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/Message/CarRecordMessageDto.java
  2. 7
      wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/Message/CarRecordMessageVo.java
  3. 21
      wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/StepDao.java
  4. 154
      wisdomcar/src/main/java/com/ccsens/wisdomcar/service/RecordService.java
  5. 8
      wisdomcar/src/main/java/com/ccsens/wisdomcar/util/Constant.java
  6. 25
      wisdomcar/src/main/resources/mapper_dao/StepDao.xml

3
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;
}

7
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);
}
}

21
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();
}

154
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<String> userIdSet) throws Exception {
private void doseAndSensorMessage(CarRecordMessageDto carRecordMessageDto, Set<String> 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<String> userIdSet) throws Exception {
CarRecordMessageVo carRecordMessageVo = new CarRecordMessageVo(carRecordMessageDto.getCarNumber(),carRecordMessageDto.getType(),carRecordMessageDto.getValue(),carRecordMessageDto.getTime());
private void sendRecordMessage(CarRecordMessageDto carRecordMessageDto,Set<String> 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,47 +230,40 @@ 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;
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:
}
//没有数据则添加
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){
String reidKey = Constant.FIRST_AID + firstAidId + "_" + Constant.CAR_RECORD_RFID + "_" + carRecordMessageDto.getValue();
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());
}else {
aidRecordExample.createCriteria().andFirstAidIdEqualTo(firstAidId)
.andTypeEqualTo(carRecordMessageDto.getType());
}
if(firstAidRecordMapper.countByExample(aidRecordExample) > 0){
return;
}
@ -275,5 +278,4 @@ public class RecordService implements IRecordService{
//添加redis
redisUtil.set(reidKey,aidRecord.getId(),Constant.FIRST_AID_REDIS_TIME);
}
}
}

8
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;
}

25
wisdomcar/src/main/resources/mapper_dao/StepDao.xml

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.wisdomcar.persist.dao.StepDao">
<select id="getCodeByRfId" resultType="java.lang.String">
SELECT
s.
FROM
`t_step` s,
t_rfid r
WHERE
s.id = r.step_id
and r.rfid = #{rfid}
limit 1
</select>
<select id="getCodeByStepOne" resultType="java.lang.String">
SELECT
s.code
FROM
`t_step` s
ORDER BY id
limit 1
</select>
</mapper>
Loading…
Cancel
Save