Browse Source

设备信息

master
zhizhi wu 4 years ago
parent
commit
1d94732a73
  1. 47
      src/main/java/com/ccsens/carbasics/api/EquipmentController.java
  2. 24
      src/main/java/com/ccsens/carbasics/bean/dto/EquipmentDto.java
  3. 24
      src/main/java/com/ccsens/carbasics/bean/vo/EquipmentVo.java
  4. 25
      src/main/java/com/ccsens/carbasics/persist/dao/EquipmentStatusDao.java
  5. 9
      src/main/java/com/ccsens/carbasics/persist/dao/OrganizationMemberDao.java
  6. 97
      src/main/java/com/ccsens/carbasics/service/EquipmentService.java
  7. 17
      src/main/java/com/ccsens/carbasics/service/IEquipmentService.java
  8. 8
      src/main/java/com/ccsens/carbasics/util/Constant.java
  9. 1
      src/main/java/com/ccsens/carbasics/util/DefaultCodeError.java
  10. 66
      src/main/resources/mapper_dao/EquipmentStatusDao.xml
  11. 15
      src/main/resources/mapper_dao/OrganizationMemberDao.xml

47
src/main/java/com/ccsens/carbasics/api/EquipmentController.java

@ -0,0 +1,47 @@
package com.ccsens.carbasics.api;
import com.ccsens.carbasics.bean.dto.EquipmentDto;
import com.ccsens.carbasics.bean.vo.OrganizationMemberVo;
import com.ccsens.carbasics.service.IEquipmentService;
import com.ccsens.carbasics.service.IOrganizationMemberService;
import com.ccsens.carbasics.util.DefaultCodeError;
import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.util.CodeError;
import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto;
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;
/**
* @description:
* @author: whj
* @time: 2021/10/19 15:36
*/
@Api(tags = "设备相关" )
@RestController
@RequestMapping("/equipment")
@Slf4j
public class EquipmentController {
@Resource
private IEquipmentService equipmentService;
@MustLogin
@ApiOperation(value = "查询用户对应的医院信息", notes = "")
@RequestMapping(value = "/buttonStart", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse buttonStart(@ApiParam @Validated @RequestBody QueryDto<EquipmentDto.Start> params) throws Exception{
log.info("一键启动请求:{},{}", params.getParam(), params.getUserId());
CodeError.Code code = equipmentService.start(params.getParam(), params.getUserId());
log.info("一键启动结果:{}", code);
return JsonResponse.newInstance().ok(code);
}
}

24
src/main/java/com/ccsens/carbasics/bean/dto/EquipmentDto.java

@ -0,0 +1,24 @@
package com.ccsens.carbasics.bean.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @description:
* @author: whj
* @time: 2021/10/19 15:38
*/
public class EquipmentDto {
@ApiModel("一键启动")
@Data
public static class Start{
@NotNull
@ApiModelProperty("急救ID")
private Long firstAidId;
}
}

24
src/main/java/com/ccsens/carbasics/bean/vo/EquipmentVo.java

@ -0,0 +1,24 @@
package com.ccsens.carbasics.bean.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: whj
* @time: 2021/10/19 15:39
*/
public class EquipmentVo {
@ApiModel("未完成的设备信息")
@Data
public static class Unfinished{
@ApiModelProperty("开始时间")
private Long time;
@ApiModelProperty("通知内容")
private String content;
@ApiModelProperty("总倒计时")
private Long totalCountdown;
}
}

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

@ -1,9 +1,34 @@
package com.ccsens.carbasics.persist.dao; package com.ccsens.carbasics.persist.dao;
import com.ccsens.carbasics.bean.vo.EquipmentVo;
import com.ccsens.carbasics.persist.mapper.EquipmentStatusMapper; import com.ccsens.carbasics.persist.mapper.EquipmentStatusMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
/**
* @author ma
*/
@Repository @Repository
public interface EquipmentStatusDao extends EquipmentStatusMapper { public interface EquipmentStatusDao extends EquipmentStatusMapper {
/**
* 统计病例一键启动的次数
* @param firstAidId 急救ID
* @return 启动次数
*/
long countButtonStart(@Param("firstAidId") Long firstAidId);
/**
* 查询虚拟设备的ID
* @param type 虚拟设备类型
* @return
*/
Long getVirtual(@Param("type") byte type);
/**
* 查询未完成设备信息
* @param firstAidId 急救ID
* @return
*/
EquipmentVo.Unfinished getUnfinished(@Param("firstAidId") Long firstAidId);
} }

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

@ -7,6 +7,8 @@ import com.ccsens.carbasics.persist.mapper.OrganizationMemberMapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
/** /**
* @author * @author
*/ */
@ -33,4 +35,11 @@ public interface OrganizationMemberDao extends OrganizationMemberMapper {
* @return 成员信息 * @return 成员信息
*/ */
OrganizationMember queryExistByUserId(@Param("userId") Long userId); OrganizationMember queryExistByUserId(@Param("userId") Long userId);
/**
* 查询机构下所有成员的userID
* @param organizationId 机构ID
* @return 成员的userID
*/
List<Long> queryUserIdsByOrganizationId(@Param("organizationId") Long organizationId);
} }

97
src/main/java/com/ccsens/carbasics/service/EquipmentService.java

@ -0,0 +1,97 @@
package com.ccsens.carbasics.service;
import cn.hutool.core.lang.Snowflake;
import com.ccsens.carbasics.bean.dto.EquipmentDto;
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.po.OrganizationMember;
import com.ccsens.carbasics.bean.vo.EquipmentVo;
import com.ccsens.carbasics.mq.QcpButtonReceive;
import com.ccsens.carbasics.persist.dao.EquipmentStatusDao;
import com.ccsens.carbasics.persist.dao.FirstAidDao;
import com.ccsens.carbasics.persist.dao.OrganizationMemberDao;
import com.ccsens.carbasics.util.Constant;
import com.ccsens.carbasics.util.DefaultCodeError;
import com.ccsens.util.CodeError;
import com.ccsens.util.exception.BaseException;
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 javax.validation.constraints.NotNull;
import java.util.List;
/**
* @description:
* @author: whj
* @time: 2021/10/19 15:37
*/
@Slf4j
@Service
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class EquipmentService implements IEquipmentService {
@Resource
private Snowflake snowflake;
@Resource
private EquipmentStatusDao equipmentStatusDao;
@Resource
private FirstAidDao firstAidDao;
@Resource
private QcpButtonReceive qcpButtonReceive;
@Resource
private OrganizationMemberDao organizationMemberDao;
@Override
public CodeError.Code start(EquipmentDto.Start param, Long userId) {
Long firstAidId = param.getFirstAidId();
// TODO 1.身份校验
// 病例是否存在
FirstAid firstAid = firstAidDao.selectByPrimaryKey(firstAidId);
log.info("急救信息:{}", firstAid);
if (firstAid == null) {
throw new BaseException(DefaultCodeError.NOT_FIRST_AID_ID);
}
// 判断是否启动 该急救的设备
long count = equipmentStatusDao.countButtonStart(firstAidId);
log.info("{}一键启动数量:{}", firstAidId, count);
if (count > 0) {
return DefaultCodeError.BUTTON_START_ALREADY;
}
// 查询虚拟的分诊台设备
Long equipmentId = equipmentStatusDao.getVirtual(Constant.Equipment.TYPE_TRIAGE_TABLE);
log.info("虚拟设备ID:{}", equipmentId);
// 一键启动
// 保存分诊台启动
EquipmentStatus status = new EquipmentStatus();
status.setId(snowflake.nextId());
status.setFirstAidId(param.getFirstAidId());
status.setEquipmentId(equipmentId);
status.setEquipmentStatus(Constant.Equipment.RUNNING_STATUS);
status.setTime(System.currentTimeMillis());
equipmentStatusDao.insertSelective(status);
log.info("保存分诊台启动:{}", status);
//TODO 通知各设备
return DefaultCodeError.SUCCESS;
}
/**
* 通知医院的所有成员病例进度
* @param firstAidId 病例
*/
private void sendDoctor(Long firstAidId, String firstAidName, Long organizationId){
// 查询医院所有成员
List<Long> userIds = organizationMemberDao.queryUserIdsByOrganizationId(organizationId);
// 查询当前未完成的状态
EquipmentVo.Unfinished inform = equipmentStatusDao.getUnfinished(firstAidId);
log.info("未完成的设备:{}", inform);
if (inform == null) {
return;
}
// 封装对象
}
}

17
src/main/java/com/ccsens/carbasics/service/IEquipmentService.java

@ -0,0 +1,17 @@
package com.ccsens.carbasics.service;
import com.ccsens.carbasics.bean.dto.EquipmentDto;
import com.ccsens.util.CodeError;
/**
* @author whj
*/
public interface IEquipmentService {
/**
* 一键启动
* @param param 病例信息
* @param userId 启动者信息
* @return 启动结果
*/
CodeError.Code start(EquipmentDto.Start param, Long userId);
}

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

@ -29,6 +29,14 @@ public class Constant {
/**平车角色名*/ /**平车角色名*/
public static final String CAR_ROLE_NAME = "平车"; public static final String CAR_ROLE_NAME = "平车";
public static final class Equipment {
public static final Byte ID_CARD_IDENTIFY_STATUS = 0;
public static final Byte RUNNING_STATUS = 1;
public static final Byte CLOSED_STATUS = 0;
/**分诊台*/
public static final Byte TYPE_TRIAGE_TABLE = 0;
}
public static final class TimeCheck{ public static final class TimeCheck{
public static final Map<String, Map<String, TimeCheckItem>> compareItems = new HashMap<>(); public static final Map<String, Map<String, TimeCheckItem>> compareItems = new HashMap<>();

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

@ -50,6 +50,7 @@ public class DefaultCodeError extends CodeError {
* 一键启动相关错误 * 一键启动相关错误
*/ */
public static final Code REPEAT_CREATE = new Code(505,"已创建患者,请勿重复创建", true); public static final Code REPEAT_CREATE = new Code(505,"已创建患者,请勿重复创建", true);
public static final Code BUTTON_START_ALREADY = new Code(506,"本次急救已一键启动", true);

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

@ -2,4 +2,70 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!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 namespace="com.ccsens.carbasics.persist.dao.EquipmentStatusDao">
<select id="countButtonStart" resultType="java.lang.Long">
SELECT
count(*)
FROM
t_qcp_equipment_status s,
qcp.t_qcp_hospital_equipment e
WHERE
s.equipment_id = e.id
AND s.first_aid_id = #{firstAidId}
AND e.type = 0
AND s.equipment_status = 1
AND s.rec_status = 0
AND e.rec_status = 0
</select>
<select id="getVirtual" resultType="java.lang.Long">
SELECT
id
FROM
qcp.t_qcp_hospital_equipment
WHERE
type = #{type}
AND hospital_id = 0
AND user_id = 0
AND rec_status = 0
ORDER BY
id DESC
LIMIT 1
</select>
<select id="getUnfinished" resultType="com.ccsens.carbasics.bean.vo.EquipmentVo$Unfinished">
SELECT
t1.time,
t2.content,
t2.totalCountdown
FROM
( SELECT * FROM t_qcp_equipment_status WHERE first_aid_id = #{firstAidId} AND rec_status = 0 ) t1,
(
SELECT
s.equipment_id,
max( equipment_status ) AS type,
i.content,
i.total_countdown AS totalCountdown
FROM
t_qcp_equipment_status s,
t_qcp_equipment_inform i,
qcp.t_qcp_hospital_equipment e
WHERE
s.equipment_id = e.id
AND e.type = i.type
AND s.first_aid_id = #{firstAidId}
AND s.rec_status = 0
AND i.rec_status = 0
AND e.rec_status = 0
GROUP BY
i.type
HAVING
max( equipment_status ) &lt; 2
ORDER BY
i.sort
LIMIT 1
) t2
WHERE
t1.equipment_id = t2.equipment_id
AND t1.equipment_status = t2.type
ORDER BY t1.time
LIMIT 1
</select>
</mapper> </mapper>

15
src/main/resources/mapper_dao/OrganizationMemberDao.xml

@ -87,4 +87,19 @@
AND user_id = #{userId} AND user_id = #{userId}
LIMIT 1 LIMIT 1
</select> </select>
<select id="queryUserIdsByOrganizationId" resultType="java.lang.Long">
SELECT DISTINCT
m.user_id
FROM
t_organization_department d,
t_organization_member_position p,
t_organization_member m
WHERE
d.id = p.department_id
AND p.member_id = m.id
AND d.organization_id = #{organizationId}
AND d.rec_status = 0
AND p.rec_status = 0
AND m.rec_status = 0
</select>
</mapper> </mapper>

Loading…
Cancel
Save