package com.ruoyi.sim.domain;
import java.util.Date;
import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.sim.service.impl.CommParseUtils;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 模拟器报文对象 sim_sim_msg
*
* @author tom
* @date 2024-12-18
*/
public class SimMsg extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 模拟器报文ID
*/
private Long simMsgId;
/**
* 模拟器ID
*/
@Excel(name = "模拟器ID")
private Long simId;
/**
* 关联ID
*/
@Excel(name = "关联ID")
private Long examFaultRefId;
/**
* 考试类型
* 1:练习
* 2:自主练习
* 3:考试
*/
@Excel(name = "考试类型")
private String examCollectionType;
/**
* 状态 0初始值 1成功 2失败
*/
@Excel(name = "状态 0初始值 1成功 2失败")
private String sendMsgState;
/**
* 优先级
*/
@Excel(name = "优先级")
private Integer priority;
/**
* 发送报文类型 cmd+cmdId
*/
@Excel(name = "发送报文类型 cmd+cmdId")
private String sendMsgType;
/**
* 发送报文
*/
@Excel(name = "发送报文")
private String sendMsg;
/**
* 发送时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "发送时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date sendTime;
/**
* 接收报文
*/
@Excel(name = "接收报文")
private String receiveMsg;
private String receiveOriginalMsg;
/**
* 接收时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "接收时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date receiveTime;
/**
* 重试次数
*/
@Excel(name = "重试次数")
private Integer retryCount = 0;
/**
* default.
*/
private Integer result = Result.DEFAULT_VALUE;
/**
* default ""
*/
private String errorMsg = "";
public void setSimMsgId(Long simMsgId) {
this.simMsgId = simMsgId;
}
public Long getSimMsgId() {
return simMsgId;
}
public void setSimId(Long simId) {
this.simId = simId;
}
public Long getSimId() {
return simId;
}
public void setExamFaultRefId(Long examFaultRefId) {
this.examFaultRefId = examFaultRefId;
}
public Long getExamFaultRefId() {
return examFaultRefId;
}
public void setExamCollectionType(String examCollectionType) {
this.examCollectionType = examCollectionType;
}
public String getExamCollectionType() {
return examCollectionType;
}
public void setSendMsgState(String sendMsgState) {
this.sendMsgState = sendMsgState;
}
public String getSendMsgState() {
return sendMsgState;
}
public void setPriority(Integer priority) {
this.priority = priority;
}
public Integer getPriority() {
return priority;
}
public void setSendMsgType(String sendMsgType) {
this.sendMsgType = sendMsgType;
}
public String getSendMsgType() {
return sendMsgType;
}
public void setSendMsg(String sendMsg) {
this.sendMsg = sendMsg;
}
public String getSendMsg() {
return sendMsg;
}
public void setSendTime(Date sendTime) {
this.sendTime = sendTime;
}
public Date getSendTime() {
return sendTime;
}
public void setReceiveMsg(String receiveMsg) {
this.receiveMsg = receiveMsg;
}
public String getReceiveMsg() {
return receiveMsg;
}
public String getReceiveOriginalMsg() {
return receiveOriginalMsg;
}
public void setReceiveOriginalMsg(String receiveOriginalMsg) {
this.receiveOriginalMsg = receiveOriginalMsg;
}
public void setReceiveTime(Date receiveTime) {
this.receiveTime = receiveTime;
}
public Date getReceiveTime() {
return receiveTime;
}
public void setRetryCount(Integer retryCount) {
this.retryCount = retryCount;
}
public Integer getRetryCount() {
return retryCount;
}
public Integer getResult() {
return result;
}
public void setResult(Integer result) {
this.result = result;
}
public String getErrorMsg() {
return errorMsg;
}
public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("simMsgId", simMsgId)
.append("simId", simId)
.append("examFaultRefId", examFaultRefId)
.append("examCollectionType", examCollectionType)
.append("sendMsgState", sendMsgState)
.append("priority", priority)
.append("sendMsgType", sendMsgType)
.append("sendMsg", sendMsg)
.append("sendTime", sendTime)
.append("receiveMsg", receiveMsg)
.append("receiveOriginalMsg", receiveOriginalMsg)
.append("receiveTime", receiveTime)
.append("retryCount", retryCount)
.append("result", result)
.append("errorMsg", errorMsg)
.toString();
}
// -------------------------------- tom add --------------------------------
public boolean isResultOk() {
if (Objects.equals(this.result, Result.SUCCESS)) {
return true;
}
return false;
}
public boolean isResultNotOk() {
return !isResultOk();
}
public AjaxResult getDefaultErrorAR() {
if (Objects.equals(this.result, Result.SUCCESS)) {
// throw new IllegalArgumentException("错误执行!先判断消息对错!");
return AjaxResult.success("");
} else if (Objects.equals(this.result, Result.SOCKET_CONNECT_EXCEPTION)) {
return AjaxResult.error("模拟器通信连接失败!");
} else if (Objects.equals(this.result, Result.READ_TIMEOUT_EXCEPTION)) {
return AjaxResult.error("模拟器通信超时!");
} else if (Objects.equals(this.result, Result.RECEIVE_CHECK_FAIL)) {
return AjaxResult.error("回复报文格式错误!
系统自动尝试重新连接,请3秒后重新尝试开始考试!");
} else if (Objects.equals(this.result, Result.RECEIVE_NOT_MATCH)) {
return AjaxResult.error("回复报文不匹配!
系统自动尝试重新连接,请3秒后重新尝试开始考试!");
} else {
// throw new IllegalArgumentException("参数错误!");
}
return null;
}
public String getReceiveSubContentData() {
return CommParseUtils.receiveSubContentData(this);
}
public boolean isReceiveContentDataBlank() {
return CommParseUtils.isReceiveContentDataBlank(this);
}
public interface Result {
/**
* 默认空值。
*/
Integer DEFAULT_VALUE = 0;
/**
* 成功。
*/
Integer SUCCESS = 200;
/**
* Socket连接问题。
*/
Integer SOCKET_CONNECT_EXCEPTION = 501;
/**
* SocketTimeoutException。
*/
Integer READ_TIMEOUT_EXCEPTION = 502;
/**
* 接收报文格式不正确。
*/
Integer RECEIVE_CHECK_FAIL = 520;
/**
* 接收报文格式不匹配。
*/
Integer RECEIVE_NOT_MATCH = 530;
/**
* 报文校验码错误。
* todo:没有启用。
*/
Integer VERIFY_ERROR = 540;
/**
* 重要报文在运行,低优先级的跳过
*/
Integer SKIP = 600;
}
public SimMsg() {
}
public SimMsg(Long simMsgId, String sendMsg) {
this.simMsgId = simMsgId;
this.sendMsg = sendMsg;
}
public void retryCountPlus1() {
setRetryCount(getRetryCount() + 1);
}
}