From 0516805a6709311d832a2aae9174d8dfa4f35585 Mon Sep 17 00:00:00 2001 From: ma <1062634917@qq.com> Date: Tue, 19 Oct 2021 17:08:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E9=94=AE=E9=80=9A=E7=9F=A5=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=8E=A5=E5=8F=A31?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ccsens/carbasics/bean/dto/ButtonDto.java | 2 + .../ccsens/carbasics/bean/vo/EquipmentVo.java | 22 +++ .../bean/vo/message/ButtonStartVo.java | 21 +++ .../bean/vo/message/UpdateStatusVo.java | 22 +++ .../ccsens/carbasics/mq/QcpButtonReceive.java | 133 ++++++++++++++++-- .../persist/dao/EquipmentInformDao.java | 8 ++ .../persist/dao/EquipmentStatusDao.java | 18 +++ .../ccsens/carbasics/persist/dao/QcpDao.java | 24 ++++ .../mapper_dao/EquipmentInformDao.xml | 12 ++ .../mapper_dao/EquipmentStatusDao.xml | 32 +++++ src/main/resources/mapper_dao/QcpDao.xml | 41 ++++++ 11 files changed, 326 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/ccsens/carbasics/bean/vo/EquipmentVo.java create mode 100644 src/main/java/com/ccsens/carbasics/bean/vo/message/ButtonStartVo.java create mode 100644 src/main/java/com/ccsens/carbasics/bean/vo/message/UpdateStatusVo.java diff --git a/src/main/java/com/ccsens/carbasics/bean/dto/ButtonDto.java b/src/main/java/com/ccsens/carbasics/bean/dto/ButtonDto.java index 03149c7..9baf473 100644 --- a/src/main/java/com/ccsens/carbasics/bean/dto/ButtonDto.java +++ b/src/main/java/com/ccsens/carbasics/bean/dto/ButtonDto.java @@ -43,6 +43,8 @@ public class ButtonDto { private String idcard; @ApiModelProperty("设备userId") private Long userId; + @ApiModelProperty("设备userId") + private Long time = System.currentTimeMillis(); } @Data @ApiModel("状态更改-mq入参") diff --git a/src/main/java/com/ccsens/carbasics/bean/vo/EquipmentVo.java b/src/main/java/com/ccsens/carbasics/bean/vo/EquipmentVo.java new file mode 100644 index 0000000..8237a87 --- /dev/null +++ b/src/main/java/com/ccsens/carbasics/bean/vo/EquipmentVo.java @@ -0,0 +1,22 @@ +package com.ccsens.carbasics.bean.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +public class EquipmentVo { + + @Data + @ApiModel("设备信息") + public static class ButtonInfo{ + @ApiModelProperty("id") + private Long id; + @ApiModelProperty("设备userId") + private Long userId; + @ApiModelProperty("设备类型(0分诊台,1收费处,2ct室,3溶栓区)") + private Byte type; + @ApiModelProperty("qcp的医院id") + private Long hospitalId; + } + +} diff --git a/src/main/java/com/ccsens/carbasics/bean/vo/message/ButtonStartVo.java b/src/main/java/com/ccsens/carbasics/bean/vo/message/ButtonStartVo.java new file mode 100644 index 0000000..71a7edf --- /dev/null +++ b/src/main/java/com/ccsens/carbasics/bean/vo/message/ButtonStartVo.java @@ -0,0 +1,21 @@ +package com.ccsens.carbasics.bean.vo.message; + +import lombok.Data; + +@Data +public class ButtonStartVo { + + private String type = "buttonStart"; + private Data data; + + @lombok.Data + public static class Data{ + private String name; + private String content; + private Long totalCountdown; + private Long realCountdown; + private Long time; + private Long firstAidId; + } + +} diff --git a/src/main/java/com/ccsens/carbasics/bean/vo/message/UpdateStatusVo.java b/src/main/java/com/ccsens/carbasics/bean/vo/message/UpdateStatusVo.java new file mode 100644 index 0000000..cef9f24 --- /dev/null +++ b/src/main/java/com/ccsens/carbasics/bean/vo/message/UpdateStatusVo.java @@ -0,0 +1,22 @@ +package com.ccsens.carbasics.bean.vo.message; + +import lombok.Data; + +@Data +public class UpdateStatusVo { + private String type = "updateStatus"; + private Data data; + + @lombok.Data + public static class Data{ + private Long time; + private Byte status; + private Long firstAidId; + + public Data(Long time, Byte status, Long firstAidId) { + this.time = time; + this.status = status; + this.firstAidId = firstAidId; + } + } +} diff --git a/src/main/java/com/ccsens/carbasics/mq/QcpButtonReceive.java b/src/main/java/com/ccsens/carbasics/mq/QcpButtonReceive.java index 2daf767..0314344 100644 --- a/src/main/java/com/ccsens/carbasics/mq/QcpButtonReceive.java +++ b/src/main/java/com/ccsens/carbasics/mq/QcpButtonReceive.java @@ -1,26 +1,40 @@ package com.ccsens.carbasics.mq; 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 cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.ccsens.carbasics.bean.dto.ButtonDto; import com.ccsens.carbasics.bean.dto.PatientDto; +import com.ccsens.carbasics.bean.po.EquipmentInform; import com.ccsens.carbasics.bean.po.EquipmentStatus; import com.ccsens.carbasics.bean.po.FirstAid; +import com.ccsens.carbasics.bean.vo.EquipmentVo; +import com.ccsens.carbasics.bean.vo.message.ButtonStartVo; +import com.ccsens.carbasics.bean.vo.message.UpdateStatusVo; import com.ccsens.carbasics.persist.dao.*; import com.ccsens.carbasics.service.IFirstAidService; import com.ccsens.carbasics.util.Constant; import com.ccsens.carbasics.util.DefaultCodeError; +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.config.RabbitMQConfig; import com.ccsens.util.exception.BaseException; +import com.fasterxml.jackson.core.JsonProcessingException; import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.core.AmqpTemplate; import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.util.HashSet; +import java.util.List; +import java.util.Set; /** * 暴风眼接收qcp一键通知相关消息 @@ -47,6 +61,8 @@ public class QcpButtonReceive { private EquipmentInformDao equipmentInformDao; @Resource private FirstAidDao firstAidDao; + @Resource + private AmqpTemplate amqpTemplate; @RabbitHandler public void process(String messageJson) throws Exception { @@ -78,6 +94,7 @@ public class QcpButtonReceive { return; } redisUtil.set(param.getName()+param.getIdcard(),param.getIdcard(),300); + //根据设备userId查询项目id Long projectId = qcpDao.queryProjectByUserId(param.getUserId()); log.info("查询到的项目id:{}",projectId); @@ -89,7 +106,17 @@ public class QcpButtonReceive { PatientDto.SavePatient savePatient = new PatientDto.SavePatient(); BeanUtil.copyProperties(param,savePatient); savePatient.setGender(param.getSex()); - firstAidService.getFirstAid(savePatient,param.getUserId(), (byte) 5,organizationId); + FirstAid firstAid = firstAidService.getFirstAid(savePatient, param.getUserId(), (byte) 5, organizationId); + //查询设备信息,并保存状态 + EquipmentVo.ButtonInfo buttonInfo = qcpDao.queryEquipmentInfoByUserId(param.getUserId()); + if (ObjectUtil.isNotNull(buttonInfo)) { + EquipmentStatus equipmentStatus = new EquipmentStatus(); + equipmentStatus.setId(snowflake.nextId()); + equipmentStatus.setEquipmentId(buttonInfo.getId()); + equipmentStatus.setEquipmentStatus((byte) 0); + equipmentStatus.setFirstAidId(firstAid.getId()); + equipmentStatus.setTime(System.currentTimeMillis()); + } } } @@ -99,23 +126,111 @@ public class QcpButtonReceive { * 一键启动处理 * @param param 参数 */ - public void buttonStart(ButtonDto.ButtonStartMq param) { + public void buttonStart(ButtonDto.ButtonStartMq param) throws JsonProcessingException { log.info("暴风眼一键启动接收到的参数{}",param); - Long projectId = qcpDao.queryProjectByUserId(param.getUserId()); - Long organizationId = organizationProjectDao.queryByProjectId(projectId); - FirstAid firstAid = firstAidDao.queryByOidAndIdcard(organizationId,param.getIdcard()); - if (ObjectUtil.isNotNull(firstAid)) { - EquipmentStatus equipmentStatus = new EquipmentStatus(); - equipmentStatus.setId(snowflake.nextId()); + //查询设备信息 + EquipmentVo.ButtonInfo buttonInfo = qcpDao.queryEquipmentInfoByUserId(param.getUserId()); + if (ObjectUtil.isNotNull(buttonInfo)) { + Long projectId = qcpDao.queryProjectByUserId(param.getUserId()); + Long organizationId = organizationProjectDao.queryByProjectId(projectId); + FirstAid firstAid = firstAidDao.queryByOidAndIdcard(organizationId,param.getIdcard()); + if (ObjectUtil.isNotNull(firstAid)) { + EquipmentStatus equipmentStatus = equipmentStatusDao.queryByEidAndFid(buttonInfo.getId(),firstAid.getId()); + if (ObjectUtil.isNotNull(equipmentStatus)) { + return; + } + EquipmentStatus triageStatus = new EquipmentStatus(); + triageStatus.setId(snowflake.nextId()); + triageStatus.setFirstAidId(firstAid.getId()); + triageStatus.setEquipmentId(buttonInfo.getId()); + triageStatus.setEquipmentStatus((byte) 1); + triageStatus.setTime(System.currentTimeMillis()); + equipmentStatusDao.insertSelective(equipmentStatus); + //查询医院其他设备 + List buttonInfoList = qcpDao.queryOtherEquipment(buttonInfo.getHospitalId()); + log.info("查询医院其他设备:{}",buttonInfoList); + if (CollectionUtil.isNotEmpty(buttonInfoList)) { + for (EquipmentVo.ButtonInfo info : buttonInfoList) { + //查询需要发送的消息内容 + EquipmentInform equipmentInform = equipmentInformDao.queryByType(info.getType()); + HashSet userSet = new HashSet<>(); + userSet.add(info.getUserId().toString()); + ButtonStartVo.Data data = new ButtonStartVo.Data(); + data.setName(firstAid.getName()); + data.setContent(equipmentInform.getContent()); + data.setFirstAidId(firstAid.getId()); + data.setTotalCountdown(equipmentInform.getTotalCountdown()); + data.setRealCountdown(System.currentTimeMillis() - param.getTime()); + data.setTime(equipmentStatus.getTime()); + ButtonStartVo buttonStartVo = new ButtonStartVo(); + buttonStartVo.setData(data); + InMessage inMessage = new InMessage(); + inMessage.setTos(userSet); + inMessage.setData(JacksonUtil.beanToJson(buttonStartVo)); + inMessage.setToDomain(MessageConstant.DomainType.User); + log.info("一键启动调用消息系统传参{}",inMessage); + amqpTemplate.convertAndSend(RabbitMQConfig.MESSAGE_QUEUE_NAME,JacksonUtil.beanToJson(inMessage)); + } + } + } } + } /** * 修改状态处理 * @param param 参数 */ - public void updateStatus(ButtonDto.UpDateStatusMq param) { + public void updateStatus(ButtonDto.UpDateStatusMq param) throws JsonProcessingException { + log.info("暴风眼修改状态接收到的参数{}",param); + EquipmentVo.ButtonInfo buttonInfo = qcpDao.queryEquipmentInfoByUserId(param.getUserId()); + if (ObjectUtil.isNull(buttonInfo)) { + return; + } + EquipmentStatus equipmentStatus = equipmentStatusDao.queryByEidAndFidAndStatus(buttonInfo.getId(),param.getFirstAidId(),param.getStatus()); + if (ObjectUtil.isNotNull(equipmentStatus)) { + return; + } + if (1 == buttonInfo.getType()) { + if (param.getStatus() ==1 || param.getStatus() == 2) { + //查询分诊台的设备id + List triageTableList = qcpDao.queryTriageTable(buttonInfo.getHospitalId()); + log.info("查询分诊台的设备id列表:{}",triageTableList); + if (CollectionUtil.isNotEmpty(triageTableList)) { + HashSet userSet = new HashSet<>(); + for (EquipmentVo.ButtonInfo triageTable : triageTableList) { + userSet.add(triageTable.getUserId().toString()); + //保存分诊台关闭的信息 + EquipmentStatus triageTableStatus = new EquipmentStatus(); + triageTableStatus.setId(snowflake.nextId()); + triageTableStatus.setTime(System.currentTimeMillis()); + triageTableStatus.setEquipmentStatus((byte) 2); + triageTableStatus.setEquipmentId(triageTable.getId()); + triageTableStatus.setFirstAidId(param.getFirstAidId()); + equipmentStatusDao.insertSelective(triageTableStatus); + } + UpdateStatusVo.Data data = new UpdateStatusVo.Data(System.currentTimeMillis(), (byte) 2,param.getFirstAidId()); + UpdateStatusVo updateStatusVo = new UpdateStatusVo(); + updateStatusVo.setData(data); + InMessage inMessage = new InMessage(); + inMessage.setTos(userSet); + inMessage.setData(JacksonUtil.beanToJson(updateStatusVo)); + inMessage.setToDomain(MessageConstant.DomainType.User); + log.info("更改状态调用消息系统传参{}",inMessage); + amqpTemplate.convertAndSend(RabbitMQConfig.MESSAGE_QUEUE_NAME,JacksonUtil.beanToJson(inMessage)); + } + + } + } + //保存设备更改状态的信息 + EquipmentStatus saveEquipmentStatus = new EquipmentStatus(); + saveEquipmentStatus.setId(snowflake.nextId()); + saveEquipmentStatus.setTime(System.currentTimeMillis()); + saveEquipmentStatus.setEquipmentStatus(param.getStatus()); + saveEquipmentStatus.setEquipmentId(buttonInfo.getId()); + saveEquipmentStatus.setFirstAidId(param.getFirstAidId()); + equipmentStatusDao.insertSelective(saveEquipmentStatus); } diff --git a/src/main/java/com/ccsens/carbasics/persist/dao/EquipmentInformDao.java b/src/main/java/com/ccsens/carbasics/persist/dao/EquipmentInformDao.java index a67e85f..6649b9b 100644 --- a/src/main/java/com/ccsens/carbasics/persist/dao/EquipmentInformDao.java +++ b/src/main/java/com/ccsens/carbasics/persist/dao/EquipmentInformDao.java @@ -1,8 +1,16 @@ package com.ccsens.carbasics.persist.dao; +import com.ccsens.carbasics.bean.po.EquipmentInform; import com.ccsens.carbasics.persist.mapper.EquipmentInformMapper; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @Repository public interface EquipmentInformDao extends EquipmentInformMapper { + /** + * 根据类型查询需要发送的内容 + * @param type 设备类型 + * @return 发送内容 + */ + EquipmentInform queryByType(@Param("type") Byte type); } diff --git a/src/main/java/com/ccsens/carbasics/persist/dao/EquipmentStatusDao.java b/src/main/java/com/ccsens/carbasics/persist/dao/EquipmentStatusDao.java index 9587e31..1d7acee 100644 --- a/src/main/java/com/ccsens/carbasics/persist/dao/EquipmentStatusDao.java +++ b/src/main/java/com/ccsens/carbasics/persist/dao/EquipmentStatusDao.java @@ -1,9 +1,27 @@ package com.ccsens.carbasics.persist.dao; +import com.ccsens.carbasics.bean.po.EquipmentStatus; import com.ccsens.carbasics.persist.mapper.EquipmentStatusMapper; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @Repository public interface EquipmentStatusDao extends EquipmentStatusMapper { + /** + * 根据设备id和急救id查询是否启动过 + * @param eid 设备id + * @param fid 急救id + * @return 设备状态 + */ + EquipmentStatus queryByEidAndFid(@Param("eid") Long eid,@Param("fid") Long fid); + + /** + * 根据设备id和急救id和状态查询是否已存在 + * @param eid 设备id + * @param fid 急救id + * @param status 设备状态 + * @return 设备状态信息 + */ + EquipmentStatus queryByEidAndFidAndStatus(@Param("eid") Long eid,@Param("fid") Long fid,@Param("status") Byte status); } diff --git a/src/main/java/com/ccsens/carbasics/persist/dao/QcpDao.java b/src/main/java/com/ccsens/carbasics/persist/dao/QcpDao.java index 6d8a0f0..27bd19b 100644 --- a/src/main/java/com/ccsens/carbasics/persist/dao/QcpDao.java +++ b/src/main/java/com/ccsens/carbasics/persist/dao/QcpDao.java @@ -1,8 +1,11 @@ package com.ccsens.carbasics.persist.dao; +import com.ccsens.carbasics.bean.vo.EquipmentVo; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; +import java.util.List; + /** * 查询qcp中的信息 * @author AUSU @@ -15,4 +18,25 @@ public interface QcpDao { * @return 项目id */ Long queryProjectByUserId(@Param("userId") Long userId); + + /** + * 根据设备userId查询设备信息 + * @param userId 设备userId + * @return 设备信息 + */ + EquipmentVo.ButtonInfo queryEquipmentInfoByUserId(@Param("userId") Long userId); + + /** + * 根据医院id查询其他 + * @param hospitalId 医院id + * @return 其他设备列表 + */ + List queryOtherEquipment(@Param("hid") Long hospitalId); + + /** + * 查询分诊台设备id + * @param hospitalId qcp医院id + * @return 分诊台列表 + */ + List queryTriageTable(@Param("hid") Long hospitalId); } diff --git a/src/main/resources/mapper_dao/EquipmentInformDao.xml b/src/main/resources/mapper_dao/EquipmentInformDao.xml index d9b3e8f..4de4fe0 100644 --- a/src/main/resources/mapper_dao/EquipmentInformDao.xml +++ b/src/main/resources/mapper_dao/EquipmentInformDao.xml @@ -2,4 +2,16 @@ + \ No newline at end of file diff --git a/src/main/resources/mapper_dao/EquipmentStatusDao.xml b/src/main/resources/mapper_dao/EquipmentStatusDao.xml index ba4f758..7bd7d82 100644 --- a/src/main/resources/mapper_dao/EquipmentStatusDao.xml +++ b/src/main/resources/mapper_dao/EquipmentStatusDao.xml @@ -2,4 +2,36 @@ + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_dao/QcpDao.xml b/src/main/resources/mapper_dao/QcpDao.xml index 5990d29..940d611 100644 --- a/src/main/resources/mapper_dao/QcpDao.xml +++ b/src/main/resources/mapper_dao/QcpDao.xml @@ -13,4 +13,45 @@ AND h.rec_status = 0 AND he.user_id = #{userId} + + + + + + \ No newline at end of file