Browse Source

一键通知相关接口1

master
ma 4 years ago
parent
commit
0516805a67
  1. 2
      src/main/java/com/ccsens/carbasics/bean/dto/ButtonDto.java
  2. 22
      src/main/java/com/ccsens/carbasics/bean/vo/EquipmentVo.java
  3. 21
      src/main/java/com/ccsens/carbasics/bean/vo/message/ButtonStartVo.java
  4. 22
      src/main/java/com/ccsens/carbasics/bean/vo/message/UpdateStatusVo.java
  5. 133
      src/main/java/com/ccsens/carbasics/mq/QcpButtonReceive.java
  6. 8
      src/main/java/com/ccsens/carbasics/persist/dao/EquipmentInformDao.java
  7. 18
      src/main/java/com/ccsens/carbasics/persist/dao/EquipmentStatusDao.java
  8. 24
      src/main/java/com/ccsens/carbasics/persist/dao/QcpDao.java
  9. 12
      src/main/resources/mapper_dao/EquipmentInformDao.xml
  10. 32
      src/main/resources/mapper_dao/EquipmentStatusDao.xml
  11. 41
      src/main/resources/mapper_dao/QcpDao.xml

2
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入参")

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

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

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

133
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<EquipmentVo.ButtonInfo> buttonInfoList = qcpDao.queryOtherEquipment(buttonInfo.getHospitalId());
log.info("查询医院其他设备:{}",buttonInfoList);
if (CollectionUtil.isNotEmpty(buttonInfoList)) {
for (EquipmentVo.ButtonInfo info : buttonInfoList) {
//查询需要发送的消息内容
EquipmentInform equipmentInform = equipmentInformDao.queryByType(info.getType());
HashSet<String> 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<EquipmentVo.ButtonInfo> triageTableList = qcpDao.queryTriageTable(buttonInfo.getHospitalId());
log.info("查询分诊台的设备id列表:{}",triageTableList);
if (CollectionUtil.isNotEmpty(triageTableList)) {
HashSet<String> 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);
}

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

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

24
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<EquipmentVo.ButtonInfo> queryOtherEquipment(@Param("hid") Long hospitalId);
/**
* 查询分诊台设备id
* @param hospitalId qcp医院id
* @return 分诊台列表
*/
List<EquipmentVo.ButtonInfo> queryTriageTable(@Param("hid") Long hospitalId);
}

12
src/main/resources/mapper_dao/EquipmentInformDao.xml

@ -2,4 +2,16 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.carbasics.persist.dao.EquipmentInformDao">
<select id="queryByType" resultType="com.ccsens.carbasics.bean.po.EquipmentInform">
SELECT
id,
type,
content,
total_countdown
FROM
t_qcp_equipment_inform
WHERE
rec_status = 0
AND type = #{type}
</select>
</mapper>

32
src/main/resources/mapper_dao/EquipmentStatusDao.xml

@ -2,4 +2,36 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.carbasics.persist.dao.EquipmentStatusDao">
<select id="queryByEidAndFid" resultType="com.ccsens.carbasics.bean.po.EquipmentStatus">
SELECT
id,
equipment_id,
first_aid_id,
equipment_status,
time
FROM
t_qcp_equipment_status
WHERE
rec_status = 0
AND first_aid_id = #{fid}
AND equipment_id = #{eid}
AND equipment_status = 1
</select>
<select id="queryByEidAndFidAndStatus" resultType="com.ccsens.carbasics.bean.po.EquipmentStatus">
SELECT
id,
equipment_id,
first_aid_id,
equipment_status,
time
FROM
t_qcp_equipment_status
WHERE
rec_status = 0
AND first_aid_id = #{fid}
AND equipment_id = #{eid}
AND equipment_status = #{status}
</select>
</mapper>

41
src/main/resources/mapper_dao/QcpDao.xml

@ -13,4 +13,45 @@
AND h.rec_status = 0
AND he.user_id = #{userId}
</select>
<select id="queryEquipmentInfoByUserId" resultType="com.ccsens.carbasics.bean.vo.EquipmentVo$ButtonInfo">
SELECT
id,
user_id,
`type`,
hospital_id
FROM
qcp.t_qcp_hospital_equipment
WHERE
rec_status = 0
AND user_id =#{userId}
</select>
<select id="queryOtherEquipment" resultType="com.ccsens.carbasics.bean.vo.EquipmentVo$ButtonInfo">
SELECT
id,
user_id,
type,
hospital_id
FROM
t_qcp_hospital_equipment
WHERE
rec_status = 0
AND hospital_id = #{hid}
AND user_id != 0
</select>
<select id="queryTriageTable" resultType="com.ccsens.carbasics.bean.vo.EquipmentVo$ButtonInfo">
SELECT
id,
user_id,
type,
hospital_id
FROM
qcp.t_qcp_hospital_equipment
WHERE
rec_status = 0
AND hospital_id = #{hid}
AND type = 0
</select>
</mapper>
Loading…
Cancel
Save