Browse Source

一键通知相关接口

master
ma 4 years ago
parent
commit
c0de47fab5
  1. 57
      src/main/java/com/ccsens/carbasics/bean/dto/ButtonDto.java
  2. 7
      src/main/java/com/ccsens/carbasics/config/BeanConfig.java
  3. 122
      src/main/java/com/ccsens/carbasics/mq/QcpButtonReceive.java
  4. 8
      src/main/java/com/ccsens/carbasics/persist/dao/EquipmentInformDao.java
  5. 9
      src/main/java/com/ccsens/carbasics/persist/dao/EquipmentStatusDao.java
  6. 8
      src/main/java/com/ccsens/carbasics/persist/dao/FirstAidDao.java
  7. 7
      src/main/java/com/ccsens/carbasics/persist/dao/OrganizationProjectDao.java
  8. 18
      src/main/java/com/ccsens/carbasics/persist/dao/QcpDao.java
  9. 30
      src/main/java/com/ccsens/carbasics/service/FirstAidService.java
  10. 1
      src/main/java/com/ccsens/carbasics/util/Constant.java
  11. 4
      src/main/java/com/ccsens/carbasics/util/DefaultCodeError.java
  12. 5
      src/main/resources/mapper_dao/EquipmentInformDao.xml
  13. 5
      src/main/resources/mapper_dao/EquipmentStatusDao.xml
  14. 16
      src/main/resources/mapper_dao/FirstAidDao.xml
  15. 10
      src/main/resources/mapper_dao/OrganizationProjectDao.xml
  16. 16
      src/main/resources/mapper_dao/QcpDao.xml

57
src/main/java/com/ccsens/carbasics/bean/dto/ButtonDto.java

@ -0,0 +1,57 @@
package com.ccsens.carbasics.bean.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author AUSU
*/
public class ButtonDto {
@Data
@ApiModel("身份证信息-mq入参")
public static class CarBasicsMq{
@ApiModelProperty("消息类型(0-身份证信息,1-一键启动,2-状态更改)")
private Byte type;
@ApiModelProperty("0-身份证信息")
private IdCardInfoMq idCardInfoMq;
@ApiModelProperty("1-一键启动")
private ButtonStartMq buttonStartMq;
@ApiModelProperty("2-状态更改")
private UpDateStatusMq upDateStatusMq;
}
@Data
@ApiModel("身份证信息-mq入参")
public static class IdCardInfoMq{
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("性别(0-女,1-男)")
private Byte sex;
@ApiModelProperty("民族")
private String nation;
@ApiModelProperty("身份证号")
private String idcard;
@ApiModelProperty("设备userId")
private Long userId;
}
@Data
@ApiModel("一键启动-mq入参")
public static class ButtonStartMq {
@ApiModelProperty("身份证号")
private String idcard;
@ApiModelProperty("设备userId")
private Long userId;
}
@Data
@ApiModel("状态更改-mq入参")
public static class UpDateStatusMq {
@ApiModelProperty("急救id")
private Long firstAidId;
@ApiModelProperty("状态(0身份证识别,1进行中,2结束)")
private Byte status;
@ApiModelProperty("设备userId")
private Long userId;
}
}

7
src/main/java/com/ccsens/carbasics/config/BeanConfig.java

@ -1,6 +1,8 @@
package com.ccsens.carbasics.config;
import com.ccsens.carbasics.intercept.MybatisInterceptor;
import com.ccsens.carbasics.util.Constant;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@ -19,4 +21,9 @@ public class BeanConfig {
MybatisInterceptor interceptor = new MybatisInterceptor();
return interceptor;
}
@Bean
public Queue queueNotifyStep(){
return new Queue(Constant.MQ.QCP_BUTTON_START);
}
}

122
src/main/java/com/ccsens/carbasics/mq/QcpButtonReceive.java

@ -0,0 +1,122 @@
package com.ccsens.carbasics.mq;
import cn.hutool.core.bean.BeanUtil;
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.EquipmentStatus;
import com.ccsens.carbasics.bean.po.FirstAid;
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.RedisUtil;
import com.ccsens.util.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* 暴风眼接收qcp一键通知相关消息
* @author Ausu
*/
@Slf4j
@Component
@RabbitListener(queues = Constant.MQ.QCP_BUTTON_START)
public class QcpButtonReceive {
@Resource
private Snowflake snowflake;
@Resource
private RedisUtil redisUtil;
@Resource
private QcpDao qcpDao;
@Resource
private IFirstAidService firstAidService;
@Resource
private OrganizationProjectDao organizationProjectDao;
@Resource
private EquipmentStatusDao equipmentStatusDao;
@Resource
private EquipmentInformDao equipmentInformDao;
@Resource
private FirstAidDao firstAidDao;
@RabbitHandler
public void process(String messageJson) throws Exception {
log.info("接收到的消息为:{}",messageJson);
ButtonDto.CarBasicsMq carBasicsMq = JSONObject.parseObject(messageJson, ButtonDto.CarBasicsMq.class);
switch (carBasicsMq.getType()){
case 0:
idCardDiscern(carBasicsMq.getIdCardInfoMq());
break;
case 1:
buttonStart(carBasicsMq.getButtonStartMq());
break;
case 2:
updateStatus(carBasicsMq.getUpDateStatusMq());
break;
default:
break;
}
}
/**
* 身份证识别处理
* @param param 参数
*/
public void idCardDiscern(ButtonDto.IdCardInfoMq param) {
log.info("暴风眼身份证识别接收到的参数{}",param);
String idCard = (String) redisUtil.get(param.getName() + param.getIdcard());
if (StrUtil.isNotBlank(idCard)) {
return;
}
redisUtil.set(param.getName()+param.getIdcard(),param.getIdcard(),300);
//根据设备userId查询项目id
Long projectId = qcpDao.queryProjectByUserId(param.getUserId());
log.info("查询到的项目id:{}",projectId);
if (ObjectUtil.isNotNull(projectId)) {
Long organizationId = organizationProjectDao.queryByProjectId(projectId);
log.info("查询到的暴风眼机构id:{}",organizationId);
if (ObjectUtil.isNotNull(organizationId)) {
//创建病例
PatientDto.SavePatient savePatient = new PatientDto.SavePatient();
BeanUtil.copyProperties(param,savePatient);
savePatient.setGender(param.getSex());
firstAidService.getFirstAid(savePatient,param.getUserId(), (byte) 5,organizationId);
}
}
}
/**
* 一键启动处理
* @param param 参数
*/
public void buttonStart(ButtonDto.ButtonStartMq param) {
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());
}
}
/**
* 修改状态处理
* @param param 参数
*/
public void updateStatus(ButtonDto.UpDateStatusMq param) {
}
}

8
src/main/java/com/ccsens/carbasics/persist/dao/EquipmentInformDao.java

@ -0,0 +1,8 @@
package com.ccsens.carbasics.persist.dao;
import com.ccsens.carbasics.persist.mapper.EquipmentInformMapper;
import org.springframework.stereotype.Repository;
@Repository
public interface EquipmentInformDao extends EquipmentInformMapper {
}

9
src/main/java/com/ccsens/carbasics/persist/dao/EquipmentStatusDao.java

@ -0,0 +1,9 @@
package com.ccsens.carbasics.persist.dao;
import com.ccsens.carbasics.persist.mapper.EquipmentStatusMapper;
import org.springframework.stereotype.Repository;
@Repository
public interface EquipmentStatusDao extends EquipmentStatusMapper {
}

8
src/main/java/com/ccsens/carbasics/persist/dao/FirstAidDao.java

@ -62,4 +62,12 @@ public interface FirstAidDao extends FirstAidMapper {
* @param patientName 患者姓名
*/
void updateProjectName(@Param("projectId") Long projectId, @Param("patientName") String patientName);
/**
* 根据机构id和身份证号查询急救信息
* @param organizationId 机构id
* @param idcard 身份证号
* @return 患者急救信息
*/
FirstAid queryByOidAndIdcard(@Param("oid") Long organizationId,@Param("idcard") String idcard);
}

7
src/main/java/com/ccsens/carbasics/persist/dao/OrganizationProjectDao.java

@ -12,4 +12,11 @@ public interface OrganizationProjectDao extends OrganizationProjectMapper {
* @return 项目
*/
OrganizationProject queryByOrganizationId(@Param("oid") Long organizationId);
/**
* 根据项目id查询机构
* @param projectId 项目id
* @return 机构id
*/
Long queryByProjectId(@Param("projectId") Long projectId);
}

18
src/main/java/com/ccsens/carbasics/persist/dao/QcpDao.java

@ -0,0 +1,18 @@
package com.ccsens.carbasics.persist.dao;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
/**
* 查询qcp中的信息
* @author AUSU
*/
@Repository
public interface QcpDao {
/**
* 根据设备userId查询项目id
* @param userId 设备userId
* @return 项目id
*/
Long queryProjectByUserId(@Param("userId") Long userId);
}

30
src/main/java/com/ccsens/carbasics/service/FirstAidService.java

@ -200,20 +200,22 @@ public class FirstAidService implements IFirstAidService{
firstAidLogDao.insertSelective(firstAidLogJoin);
}
//添加疑似诊断信息
FirstAidRecord firstAidRecord = new FirstAidRecord();
firstAidRecord.setId(snowflake.nextId());
firstAidRecord.setFirstAidId(firstAid.getId());
firstAidRecord.setQuestionCode(Constant.QuestionCode.CJBL_YSBL);
firstAidRecord.setAnswer(param.getSuspected());
firstAidRecord.setSubmitUserId(userId);
firstAidRecord.setSubmitUserType((byte) 1);
firstAidRecord.setOperator(userId);
firstAidRecordMapper.insertSelective(firstAidRecord);
//加日志
FirstAidRecordLog firstAidRecordLog = new FirstAidRecordLog();
BeanUtil.copyProperties(firstAidRecord,firstAidRecordLog);
firstAidRecordLog.setId(snowflake.nextId());
firstAidRecordLogMapper.insertSelective(firstAidRecordLog);
if (StrUtil.isNotBlank(param.getSuspected())) {
FirstAidRecord firstAidRecord = new FirstAidRecord();
firstAidRecord.setId(snowflake.nextId());
firstAidRecord.setFirstAidId(firstAid.getId());
firstAidRecord.setQuestionCode(Constant.QuestionCode.CJBL_YSBL);
firstAidRecord.setAnswer(param.getSuspected());
firstAidRecord.setSubmitUserId(userId);
firstAidRecord.setSubmitUserType((byte) 1);
firstAidRecord.setOperator(userId);
firstAidRecordMapper.insertSelective(firstAidRecord);
//加日志
FirstAidRecordLog firstAidRecordLog = new FirstAidRecordLog();
BeanUtil.copyProperties(firstAidRecord,firstAidRecordLog);
firstAidRecordLog.setId(snowflake.nextId());
firstAidRecordLogMapper.insertSelective(firstAidRecordLog);
}
return firstAid;
}

1
src/main/java/com/ccsens/carbasics/util/Constant.java

@ -23,6 +23,7 @@ public class Constant {
public static final class MQ {
public final static String QCP_NOTIFY_STEP = "notify_step";
public final static String QCP_BUTTON_START = "button_start";
}
/**平车角色名*/

4
src/main/java/com/ccsens/carbasics/util/DefaultCodeError.java

@ -46,6 +46,10 @@ public class DefaultCodeError extends CodeError {
public static final Code QUESTIONNAIRE_DETAIL_ERROR = new Code(37,"问卷详情信息错误", true);
public static final Code QUESTIONNAIRE_INFO_INCOMPLETE = new Code(39,"请填写全部选项", true);
public static final Code XGZL_INCOMPLETE = new Code(40,"请填写血管内治疗的全部选项", true);
/**
* 一键启动相关错误
*/
public static final Code REPEAT_CREATE = new Code(505,"已创建患者,请勿重复创建", true);

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

@ -0,0 +1,5 @@
<?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.carbasics.persist.dao.EquipmentInformDao">
</mapper>

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

@ -0,0 +1,5 @@
<?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.carbasics.persist.dao.EquipmentStatusDao">
</mapper>

16
src/main/resources/mapper_dao/FirstAidDao.xml

@ -205,4 +205,20 @@
project_id = #{projectId}
AND rec_status = 0
</select>
<select id="queryByOidAndIdcard" resultType="com.ccsens.carbasics.bean.po.FirstAid">
SELECT
id,
`name`,
gender,
age,
nation,
project_id
FROM
t_qcp_first_aid
WHERE
rec_status = 0
AND hospital_id = #{oid}
AND idcard = #{idcard}
</select>
</mapper>

10
src/main/resources/mapper_dao/OrganizationProjectDao.xml

@ -16,4 +16,14 @@
LIMIT 1
</select>
<select id="queryByProjectId" resultType="java.lang.Long">
SELECT
organization_id
FROM
t_organization_project
WHERE
rec_status = 0
AND project_id = #{projectId}
</select>
</mapper>

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

@ -0,0 +1,16 @@
<?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.carbasics.persist.dao.QcpDao">
<select id="queryProjectByUserId" resultType="java.lang.Long">
SELECT
h.project_id
FROM
qcp.t_qcp_hospital_equipment AS he
LEFT JOIN qcp.t_qcp_hospital AS h ON he.hospital_id = h.id
WHERE
he.rec_status = 0
AND h.rec_status = 0
AND he.user_id = #{userId}
</select>
</mapper>
Loading…
Cancel
Save