D80.java 4.36 KB
package com.bsth.entity.directive;

import com.bsth.entity.directive.DC0.DC0Data;

import javax.persistence.*;
import java.util.Date;

/**
 * 
 * @ClassName: D80
 * @Description: TODO(驾驶员上报)
 * @author PanZhao
 * @date 2016年6月8日 下午12:36:42
 *
 */
@Entity
@Table(name = "bsth_v_report_80")
@NamedEntityGraphs({
    @NamedEntityGraph(name = "directive80_c0", attributeNodes = {
            @NamedAttributeNode("c0")
    })
})
public class D80 {

	@Id
	@GeneratedValue
	private Integer id;

	/**
	 * 设备编号
	 */
	private String deviceId;

	/**
	 * 时间戳(ms)
	 */
	private Long timestamp;

	/**
	 * 一级协议 0xC0
	 */
	private Short operCode;
	
	private D80Data data;
	
	/**
	 * c0 回复
	 */
	@OneToOne(cascade = CascadeType.ALL, fetch=FetchType.LAZY)
	private DC0 c0;
	
	/** 调度员是否确认 */
	private boolean confirm;
	
	/** 处理人 */
	private String handleUser;
	
	/** 处理结果 0:同意  -1:不同意 */
	private int confirmRs;
	
	/** 处理时间 */
	private Date handleTime;
	
	private String remarks;
	
	@Embeddable
	public static class D80Data {

		/**
		 * 0x86
		 */
		private Short operCode2;

		/**
		 * 请求代码 0xa1 恢复运营 0xa2 申请调档 0xa3 出场请求 0xa5 进场请求 0xa7 加油请求 0x50 车辆故障 0x70
		 * 路阻报告 0x60 事故报告 0x11 扣证纠纷 0x12 报警
		 */
		private Short requestCode;
		
		/**
		 * 线路编码
		 */
		private String lineId;
		
		/**
		 * 车辆内部编码
		 */
		@Transient
		private String nbbm;
		
		public Short getOperCode2() {
			return operCode2;
		}

		public void setOperCode2(Short operCode2) {
			this.operCode2 = operCode2;
		}

		public Short getRequestCode() {
			return requestCode;
		}

		public void setRequestCode(Short requestCode) {
			this.requestCode = requestCode;
		}


		public String getNbbm() {
			return nbbm;
		}

		public void setNbbm(String nbbm) {
			this.nbbm = nbbm;
		}

		public String getLineId() {
			return lineId;
		}

		public void setLineId(String lineId) {
			this.lineId = lineId;
		}
	}
	
	@Transient
	private String timeStr;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getDeviceId() {
		return deviceId;
	}

	public void setDeviceId(String deviceId) {
		this.deviceId = deviceId;
	}

	public Long getTimestamp() {
		return timestamp;
	}

	public void setTimestamp(Long timestamp) {
		this.timestamp = timestamp;
	}

	public Short getOperCode() {
		return operCode;
	}

	public void setOperCode(Short operCode) {
		this.operCode = operCode;
	}

	public D80Data getData() {
		return data;
	}

	public void setData(D80Data data) {
		this.data = data;
	}

	public DC0 getC0() {
		return c0;
	}

	public void setC0(DC0 c0) {
		this.c0 = c0;
	}

	public boolean isConfirm() {
		return confirm;
	}

	public void setConfirm(boolean confirm) {
		this.confirm = confirm;
	}

	public int getConfirmRs() {
		return confirmRs;
	}

	public void setConfirmRs(int confirmRs) {
		this.confirmRs = confirmRs;
	}

	public String getHandleUser() {
		return handleUser;
	}

	public void setHandleUser(String handleUser) {
		this.handleUser = handleUser;
	}

	public String getTimeStr() {
		return timeStr;
	}

	public void setTimeStr(String timeStr) {
		this.timeStr = timeStr;
	}

	public Date getHandleTime() {
		return handleTime;
	}

	public void setHandleTime(Date handleTime) {
		this.handleTime = handleTime;
	}
	
	public String getRemarks() {
		return remarks;
	}

	public void setRemarks(String remarks) {
		this.remarks = remarks;
	}
	
	public void addRemarks(String remarks) {
		if(null == this.remarks)
			setRemarks(remarks);
		else
			setRemarks(getRemarks() + remarks);
	}

	public void setC0(int reply, String handleUser){
		this.setConfirm(true);
		this.setHandleUser(handleUser);
		this.setConfirmRs(reply);
		this.setHandleTime(new Date());
		// 封装C0数据包并回复设备
		DC0 c0 = new DC0();
		c0.setDeviceId(this.getDeviceId());
		c0.setTimestamp(this.getTimestamp());
		c0.setOperCode((short) 0xC0);
		DC0Data data = new DC0Data();
		data.setOperCode2((short) 0x86);
		data.setRequestAck((short) (reply == 0 ? 0x06 : 0x15));
		c0.setData(data);
		this.setC0(c0);
	}
}