lizhanwei
2020-02-17 caab8f84247d47251ca7997356b03bf6f06b1811
1.上报开始考试协议 2.结束考试 3.上报单项扣分项目
1个文件已修改
4个文件已添加
294 ■■■■■ 已修改文件
app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/platformMessage/StartExam2Server.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/platformMessage/StopExamMessage.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/platformMessage/UploadPosMessage.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/platformMessage/UploadStuItem.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
@@ -5,49 +5,25 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import android.speech.tts.TextToSpeech;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.widget.AppCompatEditText;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import androidx.work.OneTimeWorkRequest;
import androidx.work.WorkManager;
import com.anyun.exam.lib.util.ByteUtil;
import com.anyun.exam.lib.util.Speaker;
import com.google.android.material.textfield.TextInputEditText;
import java.util.List;
import java.util.Locale;
import java.util.Random;
import me.yokeyword.fragmentation.SupportFragment;
import safeluck.drive.evaluation.DB.Student;
import safeluck.drive.evaluation.DB.WokViewModel;
import safeluck.drive.evaluation.DB.WorkRoomDataBase;
import safeluck.drive.evaluation.DB.appstatusdb.AppStatusInitWork;
import safeluck.drive.evaluation.DB.criterias.CriteriaForI;
import safeluck.drive.evaluation.DB.criterias.viewmodel.CriteriaIViewModel;
import safeluck.drive.evaluation.DB.exam_status.ExamStatus;
import safeluck.drive.evaluation.DB.exam_status.ExamStatusInitWorker;
import safeluck.drive.evaluation.DB.exam_status.ExamStatusViewModel;
import safeluck.drive.evaluation.DB.failitems.FailedProj;
import safeluck.drive.evaluation.DB.failitems.FailedProj_select;
import safeluck.drive.evaluation.DB.gps.GpsInfoWorker;
import safeluck.drive.evaluation.R;
import safeluck.drive.evaluation.bean.RegisterMessage;
import safeluck.drive.evaluation.platformMessage.RegisterMessage;
import safeluck.drive.evaluation.im.IMSClientBootstrap;
import safeluck.drive.evaluation.im.MessageProcessor;
import safeluck.drive.evaluation.tcp.ConnectThread;
import safeluck.drive.evaluation.util.Utils;
/**
 * MyApplication2
app/src/main/java/safeluck/drive/evaluation/platformMessage/StartExam2Server.java
New file
@@ -0,0 +1,85 @@
package safeluck.drive.evaluation.platformMessage;
import android.text.TextUtils;
import com.anyun.im_lib.util.ByteUtil;
/**
 * 上报开始考试
 */
public class StartExam2Server extends DriveExamProtocol {
    private static final short BODY_LENGTH = 29;
    private String ID;//身份证
    private String BCDStr;//时间BCD[6] YYMMDDhhmmss
    private int exam_id;// DWORD  4字节 唯一考试ID标志
    private short examaCourse = 0;
    private int currPos = 0;
    /**
     * 构造函数
     *
     * @param msg_id 消息ID
     */
    public StartExam2Server(short msg_id) {
        super(msg_id);
    }
    @Override
    protected byte[] createMessageBody() {
        byte [] messageBody = new byte[BODY_LENGTH];
        byte[] idBytes = !TextUtils.isEmpty(ID)?ID.getBytes():"".getBytes();
        byte[] timeStampBCD = ByteUtil.str2Bcd(BCDStr);
        byte[] examIdBytes = ByteUtil.intGetBytes(exam_id);
        byte[] examBytes = ByteUtil.shortGetByte(examaCourse);
        System.arraycopy(idBytes,0,messageBody,currPos,idBytes.length);
        currPos += 18;
        System.arraycopy(timeStampBCD,0,messageBody,currPos,timeStampBCD.length);
        currPos += timeStampBCD.length;
        System.arraycopy(examIdBytes,0,messageBody,currPos,examIdBytes.length);
        currPos += 4;
        System.arraycopy(examBytes,0,messageBody,currPos,examBytes.length);
        return messageBody;
    }
    @Override
    protected short msgBodyLength() {
        return BODY_LENGTH;
    }
    public String getID() {
        return ID;
    }
    public void setID(String ID) {
        this.ID = ID;
    }
    public String getBCDStr() {
        return BCDStr;
    }
    public void setBCDStr(String BCDStr) {
        this.BCDStr = BCDStr;
    }
    public int getExam_id() {
        return exam_id;
    }
    public void setExam_id(int exam_id) {
        this.exam_id = exam_id;
    }
    public short getExamaCourse() {
        return examaCourse;
    }
    public void setExamaCourse(short examaCourse) {
        this.examaCourse = examaCourse;
    }
}
app/src/main/java/safeluck/drive/evaluation/platformMessage/StopExamMessage.java
New file
@@ -0,0 +1,28 @@
package safeluck.drive.evaluation.platformMessage;
/**
 * 上报结束考试
 */
public class StopExamMessage extends DriveExamProtocol {
    private static final short BODY_LENGTH = 29;
    /**
     * 构造函数
     *
     * @param msg_id 消息ID
     */
    public StopExamMessage(short msg_id) {
        super(msg_id);
    }
    @Override
    protected byte[] createMessageBody() {
        byte [] messageBody = new byte[BODY_LENGTH];
        return messageBody;
    }
    @Override
    protected short msgBodyLength() {
        return BODY_LENGTH;
    }
}
app/src/main/java/safeluck/drive/evaluation/platformMessage/UploadPosMessage.java
New file
@@ -0,0 +1,28 @@
package safeluck.drive.evaluation.platformMessage;
/**
 * 位置上报
 */
public class UploadPosMessage extends DriveExamProtocol {
    private static final short BODY_LENGTH = 29;
    /**
     * 构造函数
     *
     * @param msg_id 消息ID
     */
    public UploadPosMessage(short msg_id) {
        super(msg_id);
    }
    @Override
    protected byte[] createMessageBody() {
        byte [] messageBody = new byte[BODY_LENGTH];
        return messageBody;
    }
    @Override
    protected short msgBodyLength() {
        return BODY_LENGTH;
    }
}
app/src/main/java/safeluck/drive/evaluation/platformMessage/UploadStuItem.java
New file
@@ -0,0 +1,127 @@
package safeluck.drive.evaluation.platformMessage;
import android.text.TextUtils;
import com.anyun.im_lib.util.ByteUtil;
import java.text.SimpleDateFormat;
/**
 * 上报学员单项扣分项目
 */
public class UploadStuItem extends DriveExamProtocol {
    private static final short BODY_LENGTH = 30;
    private short reasonLength = 0;
    private int currPos = 0;
    private String ID;//身份证
    private String BCDStr;//时间BCD[6] YYMMDDhhmmss
    private int exam_id;// DWORD  4字节 唯一考试ID标志
    private short fail_item_id;//扣分项目编号 1字节
    private short score;//扣分分数 一字节
    private String reason;//扣分原因
    public String getID() {
        return ID;
    }
    public void setID(String ID) {
        this.ID = ID;
    }
    public int getExam_id() {
        return exam_id;
    }
    public void setExam_id(int exam_id) {
        this.exam_id = exam_id;
    }
    public short getFail_item_id() {
        return fail_item_id;
    }
    public void setFail_item_id(short fail_item_id) {
        this.fail_item_id = fail_item_id;
    }
    public short getScore() {
        return score;
    }
    public void setScore(short score) {
        this.score = score;
    }
    public String getReason() {
        return reason;
    }
    public void setReason(String reason) {
        this.reason = reason;
    }
    public String getBCDStr() {
        return BCDStr;
    }
    /**
     * 设置时间
     * 形如"200217020618"字符串
     * @param BCDStr
     */
    public void setBCDStr(String BCDStr) {
        this.BCDStr = BCDStr;
    }
    /**
     * 构造函数
     *
     * @param msg_id 消息ID
     */
    public UploadStuItem(short msg_id) {
        super(msg_id);
    }
    @Override
    protected byte[] createMessageBody() {
        byte [] messageBody = new byte[BODY_LENGTH+reasonLength];
        byte[] idBytes = !TextUtils.isEmpty(ID)?ID.getBytes():"".getBytes();
        byte[] timeStampBCD = ByteUtil.str2Bcd(BCDStr);
        byte[] examIdBytes = ByteUtil.intGetBytes(exam_id);
        byte[] fail_item_idBytes = ByteUtil.shortGetByte(fail_item_id);
        byte[] score_bytes = ByteUtil.shortGetByte(score);
        byte[] reasonBytes = !TextUtils.isEmpty(reason)?reason.getBytes():"".getBytes();
        reasonLength = (short) reasonBytes.length;
        System.arraycopy(idBytes,0,messageBody,currPos,idBytes.length);
        currPos += 18;
        System.arraycopy(timeStampBCD,0,messageBody,currPos,timeStampBCD.length);
        currPos += timeStampBCD.length;
        System.arraycopy(examIdBytes,0,messageBody,currPos,examIdBytes.length);
        currPos += 4;
        System.arraycopy(fail_item_idBytes,0,messageBody,currPos,fail_item_idBytes.length);
        currPos += 1;
        System.arraycopy(score_bytes,0,messageBody,currPos,score_bytes.length);
        currPos += 1;
        System.arraycopy(reasonBytes,0,messageBody,currPos,reasonLength);
        return messageBody;
    }
    @Override
    protected short msgBodyLength() {
        return (short) (BODY_LENGTH+reasonLength);
    }
}