package com.nb.im.entity; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.annotation.TableName; import com.nb.app.msg.bean.MsgBean; import com.nb.core.entity.GenericEntity; import com.nb.core.enums.SexEnum; import com.nb.im.enums.ImStatusEnum; import com.nb.im.enums.SponsorEnum; import com.nb.web.api.enums.ClinicManageEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.ToString; import javax.validation.constraints.NotNull; import java.util.Date; import java.util.Map; /** * @author lifang * @version 1.0.0 * @ClassName ImRoomEntity.java * @Description TODO * @createTime 2022年08月16日 09:22:00 */ @EqualsAndHashCode(callSuper = true) @Data @TableName(value = "im_room",autoResultMap = true) @ApiModel(value="聊天室") @ToString @NoArgsConstructor public class ImRoomEntity extends GenericEntity { @ApiModelProperty(value = "病人id",required = true) @NotNull(message = "病人id不能为空",groups = Insert.class) private String patientId; @ApiModelProperty(value = "住院号",required = true) private String patientCode; @ApiModelProperty("看护人备注病人名称") private String patientNamePs; @ApiModelProperty("病人名称") private String patientName; @ApiModelProperty("病人年龄") private String patientAge; @ApiModelProperty("病人性别") private SexEnum patientSex; @ApiModelProperty(value = "看护位置",allowableValues = "0(院内管理) 1(居家管理)") private ClinicManageEnum manageType; @ApiModelProperty(value = "看护人id",required = true) @NotNull(message = "看护人id不能为空",groups = Insert.class) private String assistId; @ApiModelProperty(value = "看护人头像") private String assistAvatar; @ApiModelProperty(value = "医生头像") private String doctorAvatar; @ApiModelProperty(value = "医生id",required = true) @NotNull(message = "医生id不能为空",groups = Insert.class) private String doctorId; @ApiModelProperty("聊天室所对应的绑定id") private String bindId; @ApiModelProperty(value = "发起人类型",required = true,allowableValues = "0(看护人发起) 1(医生发起)") @NotNull(message = "发起类型不能为空",groups = Insert.class) private SponsorEnum sponsorType; @ApiModelProperty(value = "聊天室总消息数",readOnly = true) private Integer totalCount; @ApiModelProperty("成功建立聊天室时间") private Date successTime; @ApiModelProperty("聊天室状态") private ImStatusEnum status; @ApiModelProperty("聊天室最后一条消息id") private String lastMsgId; @ApiModelProperty("聊天室最后一条消息时间") private Date lastMsgTime; @ApiModelProperty("聊天室最后一条消息发送人") private String lastSenderId; @ApiModelProperty("监控是否结束") private Boolean monitorFinished; @ApiModelProperty("监控结束时间") private Date monitorFinishedTime; @ApiModelProperty("医生置顶状态") private Boolean doctorTop; /** * 描述: 由看护人发起的咨询或一件疼痛呼叫 * @author lifang * @date 2022/8/16 10:38 * @param source * @return ImRoomEntity */ public static ImRoomEntity createRoom(MsgBean source){ ImRoomEntity result = new ImRoomEntity(); result.setAssistId(source.getSenderId()); result.setAssistAvatar(source.getSenderAvatar()); result.setPatientId(source.getPatientId()); result.setPatientCode(source.getPatientCode()); result.setPatientName(source.getPatientName()); result.setPatientSex(source.getPatientSex()); result.setPatientAge(source.getPatientAge()); result.setDoctorId(source.getReceiverId()); result.setSponsorType(SponsorEnum.assist); result.setTotalCount(1); //等待医生确认 result.setStatus(ImStatusEnum.WAITING); result.setDoctorTop(false); //默认院内管理 Map properties = source.getProperties(); ClinicManageEnum manageType=ClinicManageEnum.hospital; if(CollectionUtil.isNotEmpty(properties)){ manageType = (ClinicManageEnum) properties.getOrDefault("manageType", ClinicManageEnum.hospital); } result.setManageType(manageType); return result; } }