From c9fc43ded908425af405f61a1df3474dd3105e92 Mon Sep 17 00:00:00 2001
From: lizhanwei <Dana_Lee1016@126.com>
Date: 星期三, 26 二月 2020 14:36:30 +0800
Subject: [PATCH] 完成所有协议

---
 app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java              |   49 ++++++
 app/src/main/java/safeluck/drive/evaluation/platformMessage/decoder/SPEED.java      |   19 ++
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java            |   33 ++++
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj_select.java     |   18 ++
 app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java           |    4 
 app/src/main/java/safeluck/drive/evaluation/platformMessage/decoder/SpeedCoder.java |   29 ++++
 app/src/main/java/safeluck/drive/evaluation/app.java                                |   67 ++++++++-
 app/src/main/java/safeluck/drive/evaluation/MainActivity.java                       |   27 +++
 app/src/main/java/safeluck/drive/evaluation/viewmodels/ExamPlatformModel.java       |   31 ++++
 app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java         |   14 +
 app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0203.java      |    9 +
 app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java      |   59 +++++++
 app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java               |    2 
 app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0206.java      |    5 
 14 files changed, 329 insertions(+), 37 deletions(-)

diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java
index 0e641f0..39fe12a 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java
@@ -25,14 +25,14 @@
      * 濡傛灉瑕佹坊鍔� 绉戠洰浜孖I   III绫昏�冨満澶辫触椤圭洰锛岄渶瑕佸缓绔嬬浉搴旂殑璇勫垽鏍囧噯琛ㄦ暟鎹〃
      * @return
      */
-    @Query("SELECT emp_id,stu_id,deducting_reason,score_deducting,item_content from criteria_one INNER JOIN fail_projects ON  criteria_one.item_id= fail_projects.emp_id where fail_projects.stu_id=:stu_id and fail_projects.subject=1")
+    @Query("SELECT emp_id,stu_id, utc ,sn ,deducting_reason,score_deducting,item_content from criteria_one INNER JOIN fail_projects ON  criteria_one.item_id= fail_projects.emp_id where fail_projects.stu_id=:stu_id and fail_projects.subject=1")
     LiveData<List<FailedProj_select>> getFailedProjectsForI(long stu_id);
     /**
      * 鏌ヨ 绉戠洰浜� II绫昏�冨満鐨勫け璐ラ」鐩� 锛堝琛ㄦ煡璇級
      * 濡傛灉瑕佹坊鍔� 绉戠洰浜孖I   III绫昏�冨満澶辫触椤圭洰锛岄渶瑕佸缓绔嬬浉搴旂殑璇勫垽鏍囧噯琛ㄦ暟鎹〃
      * @return
      */
-    @Query("SELECT emp_id,stu_id,deducting_reason,score_deducting,item_content from criteria_two INNER JOIN fail_projects ON  criteria_two.item_id= fail_projects.emp_id where fail_projects.stu_id=:stu_id and fail_projects.subject=2")
+    @Query("SELECT emp_id,stu_id,utc,sn,deducting_reason,score_deducting,item_content from criteria_two INNER JOIN fail_projects ON  criteria_two.item_id= fail_projects.emp_id where fail_projects.stu_id=:stu_id and fail_projects.subject=2")
     LiveData<List<FailedProj_select>> getFailedProjectsForII(long stu_id);
 
     /**
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java
index 0794aee..5c4fa41 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java
@@ -37,13 +37,30 @@
     //浣滀负澶栭敭锛屽搴擨绫昏�冨満鐨刬tem_id
     @ColumnInfo(name = "emp_id")
     private int emp_id;
-
-    public FailedProj(int subject, int emp_id,long stu_id) {
+    private int  sn;
+    private String utc;
+    public FailedProj(int subject, int emp_id,long stu_id,String utc,int sn) {
         this.subject = subject;
         this.emp_id = emp_id;
         this.stu_id = stu_id;
+        this.sn = sn;
+        this.utc = utc;
+    }
+    public int getSn() {
+        return sn;
     }
 
+    public void setSn(int sn) {
+        this.sn = sn;
+    }
+
+    public String getUtc() {
+        return utc;
+    }
+
+    public void setUtc(String utc) {
+        this.utc = utc;
+    }
     public int getId() {
         return id;
     }
@@ -75,4 +92,16 @@
     public void setEmp_id(int emp_id) {
         this.emp_id = emp_id;
     }
+
+    @Override
+    public String toString() {
+        return "FailedProj{" +
+                "id=" + id +
+                ", stu_id=" + stu_id +
+                ", subject=" + subject +
+                ", emp_id=" + emp_id +
+                ", sn=" + sn +
+                ", utc='" + utc + '\'' +
+                '}';
+    }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj_select.java b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj_select.java
index f0f3634..c62956c 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj_select.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj_select.java
@@ -16,6 +16,8 @@
     private long stu_id;
     private String item_content;
     private String deducting_reason;
+    private int  sn;
+    private String utc;
     private int score_deducting;
 
     public int getEmp_id() {
@@ -42,6 +44,22 @@
         this.deducting_reason = deducting_reason;
     }
 
+    public int getSn() {
+        return sn;
+    }
+
+    public void setSn(int sn) {
+        this.sn = sn;
+    }
+
+    public String getUtc() {
+        return utc;
+    }
+
+    public void setUtc(String utc) {
+        this.utc = utc;
+    }
+
     public long getStu_id() {
         return stu_id;
     }
diff --git a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java
index dda96f5..1795cdf 100644
--- a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java
+++ b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java
@@ -25,6 +25,7 @@
 import safeluck.drive.evaluation.DB.rtktb.RTKConfigViewModel;
 import safeluck.drive.evaluation.DB.signalConfigdb.SignalConfigViewModel;
 import safeluck.drive.evaluation.DB.signalConfigdb.SingalConfig;
+import safeluck.drive.evaluation.bean.ExamPlatformData;
 import safeluck.drive.evaluation.bean.SignalConfigRemote;
 import safeluck.drive.evaluation.cEventCenter.CEventCenter;
 import safeluck.drive.evaluation.cEventCenter.ICEventListener;
@@ -54,6 +55,7 @@
 import safeluck.drive.evaluation.util.FileUtil;
 import safeluck.drive.evaluation.util.PermissionManager;
 import safeluck.drive.evaluation.util.SPUtils;
+import safeluck.drive.evaluation.viewmodels.ExamPlatformModel;
 import safeluck.drive.evaluation.viewmodels.MainViewModel;
 import safeluck.drive.evaluation.viewmodels.RTKConnAndLogin;
 import safeluck.drive.evaluation.viewmodels.RTKConnAndLoginViewModel;
@@ -158,10 +160,27 @@
         setContentView(R.layout.activity_main);
         // TODO
         //  杩涜tcp杩炴帴
-        String userId = "100002";
-        String token = "token_" + userId;
-        String hosts = "[{\"host\":\"192.168.31.77\", \"port\":12125}]";
-        IMSClientBootstrap.getInstance().init(userId,token,hosts,1,this);
+        final String userId = "100002";
+        final String token = "token_" + userId;
+        ExamPlatformModel examPlatformModel = ViewModelProviders.of(this).get(ExamPlatformModel.class);
+        examPlatformModel.getDataChange().observe(this, new Observer<Integer>() {
+            @Override
+            public void onChanged(Integer integer) {
+                Log.i(TAG, "ExamPlatformModel onChanged: integer=="+integer);
+                if (integer == 1){
+                    MyLog.i("閲嶆柊杩炴帴鑰冭瘯骞冲彴");
+                }else{
+
+                }
+
+
+                String str = ExamPlatformData.getInstance().getPlatformIP();
+                String hosts = "[{\"host\":"+str+","+ "\"port\":"+ExamPlatformData.getInstance().getPlatformPort()+"}]";
+                MyLog.i("hosts="+hosts);
+                IMSClientBootstrap.getInstance().init(userId,token,hosts,1,MainActivity.this);
+            }
+        });
+
 
 
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java
index 540476d..81a393d 100644
--- a/app/src/main/java/safeluck/drive/evaluation/app.java
+++ b/app/src/main/java/safeluck/drive/evaluation/app.java
@@ -43,6 +43,7 @@
 import safeluck.drive.evaluation.DB.exam_status.ExamStatusWoker;
 import safeluck.drive.evaluation.DB.failitems.FailedProj;
 import safeluck.drive.evaluation.DB.failitems.FailedProjRepository;
+import safeluck.drive.evaluation.DB.failitems.FailedProj_select;
 import safeluck.drive.evaluation.DB.gps.GpsInfoWorker;
 import safeluck.drive.evaluation.DB.rtktb.RTKConfig;
 import safeluck.drive.evaluation.DB.rtktb.RTKWorkRepository;
@@ -51,9 +52,11 @@
 import safeluck.drive.evaluation.im.IMSClientBootstrap;
 import safeluck.drive.evaluation.im.IMSConnectStatusListener;
 import safeluck.drive.evaluation.im.MessageProcessor;
+import safeluck.drive.evaluation.platformMessage.AttachInfo;
 import safeluck.drive.evaluation.platformMessage.JKMessage0100;
 import safeluck.drive.evaluation.platformMessage.JKMessage0101;
 import safeluck.drive.evaluation.platformMessage.JKMessage0203;
+import safeluck.drive.evaluation.platformMessage.JKMessage0206;
 import safeluck.drive.evaluation.util.FileUtil;
 import safeluck.drive.evaluation.util.SPUtils;
 import safeluck.drive.evaluation.util.SystemUtil;
@@ -175,24 +178,23 @@
             case Constant.JUDGE_INFO:
 
                 if(!TextUtils.isEmpty(json)){
-                    JKMessage0203 jkMessage0203 = new JKMessage0203();
-                    jkMessage0203.phone = "0314200100000004";
-                    jkMessage0203.timeBCD = new Date();
-                    jkMessage0203.fail_item_id = 4;
-                    jkMessage0203.fail_score = 10;
-                    jkMessage0203.fail_reason = "鍙戝姩鏈哄惎鍔ㄥ悗锛屼笉鍙婃椂鏉惧紑鍚姩寮�鍏�";
-                    jkMessage0203.ID = "123456789";
-                    jkMessage0203.exam_id = 123456;
-                    MessageProcessor.getInstance().sendMessage(jkMessage0203);
+
                     JsonArray jsonArray = JsonParser.parseString(json).getAsJsonArray();
                     for (int i = 0; i < jsonArray.size(); i++) {
                         JsonObject jsonObject = jsonArray.get(i).getAsJsonObject();
                         int emp_id = jsonObject.get("wrong_id").getAsInt();
+                        String utc = jsonObject.get("utc").getAsString();
+                        MyLog.i("璇勫垽娑堟伅瑙f瀽涔嬪墠鐨剈tc="+utc);
+                        utc = utc.substring(2,utc.length()-3);
+                        MyLog.i("璇勫垽娑堟伅瑙f瀽涔嬪悗鐨剈tc="+utc);
+                        int sn = jsonObject.get("sn").getAsInt();
                         if (emp_id>31|| emp_id<0){
                             MyLog.i(TAG,"emp_id瓒呭嚭鑼冨洿涓嶈兘鎻掑叆鏁版嵁搴擄紙I绫昏�冨満锛�");
                             return;
                         }
-                        failedProjRepository.insert(new FailedProj(Constant.SUBJECT_I, emp_id, Constant.TEST_STU_ID));
+                        FailedProj failedProj = new FailedProj(Constant.SUBJECT_I, emp_id, Constant.TEST_STU_ID,utc,sn);
+                        MyLog.i("鎻掑叆fail_projects琛�="+failedProj.toString());
+                        failedProjRepository.insert(failedProj);
                     }
                 }
 
@@ -266,6 +268,51 @@
 
                 CEventCenter.dispatchEvent(Constant.BIND_SPEED_TOPIC,cmd,0,json);
                 break;
+            case Constant.RTK_INFO:
+                try {
+                    JSONObject jsSpeed = new JSONObject(json);
+                    double latitude = jsSpeed.getDouble("latitude");
+                    double longitude = jsSpeed.getDouble("longitude");
+                    double altitude = jsSpeed.getDouble("altitude");
+                    double speed = jsSpeed.getDouble("speed");
+                    int  qf = jsSpeed.getInt("qf");
+                    double track_ture = jsSpeed.getDouble("track_ture");
+                    String utc = jsSpeed.getString("utc");
+                    utc = utc.replace(".","");
+                    MyLog.i("RTK info 淇敼鍚庣殑utc"+utc);
+                    JKMessage0206 jkMessage0206 = new JKMessage0206();
+                    jkMessage0206.alert = 0;
+                    jkMessage0206.status = 0;
+                    jkMessage0206.jd = longitude;
+                    jkMessage0206.wd = latitude;
+                    jkMessage0206.gaoCheng = (int)altitude;
+                    jkMessage0206.speed = speed;
+                    jkMessage0206.fangXiang = (int)track_ture;
+                    jkMessage0206.rf = qf;
+                    jkMessage0206.timeBCD = utc;
+                    jkMessage0206.json =json;
+                    jkMessage0206.length = jkMessage0206.json.length();
+                    AttachInfo attachInfo = new AttachInfo();
+                    attachInfo.attach_message_id = Integer.parseInt(String.valueOf(0x40));
+                    attachInfo.attach_message_length = 4;
+                    Log.i(TAG, "attachInfo.attach_message_id ="+attachInfo.attach_message_id );
+                    if (attachInfo.attach_message_id == 0x41){
+                        Log.i(TAG, "onClick: 41");
+                        attachInfo.attach_data="00000000";
+                    }else{
+
+                        //18涓瓧鑺� ascii
+                        attachInfo.attach_data="303030303030303030303030303030303030";
+                    }
+
+                    jkMessage0206.attachInfo = attachInfo;
+                    Log.i(TAG, "浣嶇疆涓婃姤="+jkMessage0206.toString());
+                    MessageProcessor.getInstance().sendMessage(jkMessage0206);
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+
+                break;
 
         }
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java b/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
index f790567..dde1e74 100644
--- a/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
@@ -1,31 +1,46 @@
 package safeluck.drive.evaluation.bean;
 
 import android.content.Context;
+import android.util.Log;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.ViewModelProviders;
+
+import com.anyun.exam.lib.MyLog;
 
 import java.util.Random;
 
 import safeluck.drive.evaluation.app;
 import safeluck.drive.evaluation.util.SPUtils;
+import safeluck.drive.evaluation.viewmodels.ExamPlatformModel;
+import safeluck.drive.evaluation.viewmodels.MainViewModel;
 
 public class ExamPlatformData {
     private static final ExamPlatformData ourInstance = new ExamPlatformData();
 
     private int exam_id =12345;//鑰冭瘯鍞竴ID
 
+    private String id;//韬唤璇�
+
+    private String ip;
+    private int port;
+
     public static ExamPlatformData getInstance() {
         return ourInstance;
     }
 
-    private ExamPlatformData() {
 
+    private ExamPlatformData() {
     }
 
     public String getPlatformIP(){
-        return (String) SPUtils.get(app.getAppContext(),SPUtils.PLATFORM_IP,"");
+        ip = (String) SPUtils.get(app.getAppContext(),SPUtils.PLATFORM_IP,"47.93.157.103");
+        return ip;
     }
 
     public int getPlatformPort(){
-        return (int) SPUtils.get(app.getAppContext(),SPUtils.PLATFORM_PORT,0);
+        port = (int) SPUtils.get(app.getAppContext(),SPUtils.PLATFORM_PORT,2020);
+        return port;
     }
 
     /**
@@ -33,8 +48,24 @@
      * @param ip
      */
     public void insertPlatformIp(String ip){
+
         SPUtils.put(app.getAppContext(),SPUtils.PLATFORM_IP,ip);
 
+    }
+
+    /**
+     * 姣旇緝ip鍦板潃鍜岀鍙e彿锛�
+     * @param ip
+     * @param port
+     * @return ip鍜岀鍙e叾涓湁鍙樺寲锛岃繑鍥瀟rue锛屽惁鍒欒繑鍥瀎alse
+     */
+    public boolean compareIPandPort(String ip,int port){
+        MyLog.i( "compareIPandPort: "+ip+" "+port);
+        if(!getPlatformIP().equalsIgnoreCase(ip) || getPlatformPort()!=port){
+            MyLog.i("ip鍜岀鍙f湁鍙樺寲");
+            return true;
+        }
+        return false;
     }
 
     /**
@@ -45,11 +76,17 @@
         SPUtils.put(app.getAppContext(),SPUtils.PLATFORM_PORT,port);
     }
 
-    public int getExamUniqueID(){
 
 
-
-        return exam_id;
+    public String getID() {
+        return id;
     }
 
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public int getExam_id() {
+        return exam_id;
+    }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java
index c718b37..808b110 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java
@@ -3,6 +3,7 @@
 import android.os.Bundle;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.lifecycle.ViewModelProviders;
 
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -25,6 +26,7 @@
 import safeluck.drive.evaluation.R;
 import safeluck.drive.evaluation.bean.ExamPlatformData;
 import safeluck.drive.evaluation.util.FileUtil;
+import safeluck.drive.evaluation.viewmodels.ExamPlatformModel;
 
 /**
  * 鍩虹鏁版嵁璁剧疆
@@ -41,7 +43,7 @@
     private Button btn_config_signal;
     private Button btn_mcu_upgrade;
     private EditText et_ip,et_port;
-
+    private ExamPlatformModel examPlatformModel;
     public static SupportFragment newInstance() {
         return new BaseDatasFragment();
     }
@@ -53,11 +55,12 @@
 
         View view = inflater.inflate(R.layout.layout_base_datas, container, false);
         initView(view);
+        examPlatformModel = ViewModelProviders.of(this).get(ExamPlatformModel.class);
         return view;
     }
 
     private void initView(View view) {
-        view.findViewById(R.id.btn_save_platform);
+        view.findViewById(R.id.btn_save_platform).setOnClickListener(this);
         et_ip = view.findViewById(R.id.et_platform_ip);
         et_port = view.findViewById(R.id.et_platform_port);
         btn_inspect_signal = view.findViewById(R.id.btn_inpsect_signal);
@@ -97,8 +100,11 @@
                 }
                 break;
             case R.id.btn_save_platform:
-                ExamPlatformData.getInstance().insertPlatformIp(et_ip.getText().toString().trim());
-                ExamPlatformData.getInstance().insertPlatformPort(Integer.parseInt(et_port.getText().toString().trim()));
+                if(ExamPlatformData.getInstance().compareIPandPort(et_ip.getText().toString().trim(),Integer.parseInt(et_port.getText().toString().trim()))){
+                    examPlatformModel.changeDataValue(1);
+                    ExamPlatformData.getInstance().insertPlatformIp(et_ip.getText().toString().trim());
+                    ExamPlatformData.getInstance().insertPlatformPort(Integer.parseInt(et_port.getText().toString().trim()));
+                }
                 break;
             default:
                 break;
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
index a325f73..d518075 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
@@ -49,6 +49,7 @@
 import safeluck.drive.evaluation.R;
 import safeluck.drive.evaluation.adapter.ScoreAdapter;
 import safeluck.drive.evaluation.DB.exam_status.ExamStatus;
+import safeluck.drive.evaluation.bean.ExamPlatformData;
 import safeluck.drive.evaluation.bean.ScoreBean;
 import safeluck.drive.evaluation.cEventCenter.CEventCenter;
 import safeluck.drive.evaluation.cEventCenter.ICEventListener;
@@ -57,6 +58,7 @@
 import safeluck.drive.evaluation.im.MessageProcessor;
 import safeluck.drive.evaluation.platformMessage.JKMessage0201;
 import safeluck.drive.evaluation.platformMessage.JKMessage0202;
+import safeluck.drive.evaluation.platformMessage.JKMessage0203;
 import safeluck.drive.evaluation.platformMessage.JKMessage0204;
 
 /**
@@ -156,6 +158,7 @@
                         mScoreAdapter.addDatas(mArrayList);
                     }
                     //TODO 鍙戦�丣KMessage0203 缁欏钩鍙帮紝杩欏効鏈夌偣澶嶆潅锛岀湅鎬庝箞澶勭悊
+                    sendJKMessage0203(failedProj_selects);
                     currTotalScore -=item_id;
                     if (currTotalScore < Constant.PASSING_SCORE){
                         MyLog.i(TAG,"浣庝簬80锛屼笉鍚堟牸");
@@ -213,6 +216,7 @@
 
                         tv_name.setText(getString(R.string.name)+student.getName());
                         tv_id.setText(getString(R.string.user_id)+student.getID());
+                        ExamPlatformData.getInstance().setId(student.getID());
                     }
                 }
             }
@@ -231,6 +235,53 @@
         });
 
         return view;
+    }
+    private List<Integer> sns =new ArrayList<>();
+    private void sendJKMessage0203(List<FailedProj_select> failedProj_selects) {
+        JKMessage0203 jkMessage0203 = new JKMessage0203();
+        jkMessage0203.phone = "0314200100000004";
+        jkMessage0203.ID = ExamPlatformData.getInstance().getID();
+        jkMessage0203.exam_id = ExamPlatformData.getInstance().getExam_id();
+
+        for (int i = 0; i < failedProj_selects.size(); i++) {
+            if (hasSnEqulas(failedProj_selects)){
+
+            }else{
+                MyLog.i("娌℃湁鐩稿悓鐨剆n锛屽彂閫�");
+                sns.add(failedProj_selects.get(i).getSn());
+                jkMessage0203.timeBCD = failedProj_selects.get(i).getUtc();
+                jkMessage0203.fail_item_id = failedProj_selects.get(i).getEmp_id();
+                jkMessage0203.fail_score = failedProj_selects.get(i).getScore_deducting();
+                jkMessage0203.fail_reason = failedProj_selects.get(i).getDeducting_reason();
+            }
+
+        }
+
+
+
+
+
+
+
+        MessageProcessor.getInstance().sendMessage(jkMessage0203);
+    }
+
+    private boolean hasSnEqulas(List<FailedProj_select> failedProj_selects){
+        if (sns.size() > 0){
+            for (int i = 0; i < failedProj_selects.size(); i++) {
+            for (int j = 0; j < sns.size(); j++) {
+                if (sns.get(j) == failedProj_selects.get(i).getSn()){
+                    MyLog.i("sn鐩稿悓锛屼笉鍙�");
+                    return true;
+                }else{
+                    continue;
+                }
+                }
+            }
+
+        }
+        return false;
+
     }
 
     private int whatPaintColor(ExamStatus examStat) {
@@ -344,8 +395,8 @@
                 jkMessage0202.phone = "0314200100000004";
                 jkMessage0202.timeBCD = new Date();
                 jkMessage0202.curr_exam = 0;
-                jkMessage0202.ID = "123456789";
-                jkMessage0202.exam_id = 123456;
+                jkMessage0202.ID = ExamPlatformData.getInstance().getID();
+                jkMessage0202.exam_id = ExamPlatformData.getInstance().getExam_id();
                 MessageProcessor.getInstance().sendMessage(jkMessage0202);
                 break;
             case R.id.tv_stop:
@@ -399,8 +450,8 @@
         jkMessage0204.timeBCD = new Date();
         jkMessage0204.score = 10;
         jkMessage0204.stop = JKMessage0204.SUCC_STOP;
-        jkMessage0204.ID = "123456789";
-        jkMessage0204.exam_id = 123456;
+        jkMessage0204.ID = ExamPlatformData.getInstance().getID();
+        jkMessage0204.exam_id = ExamPlatformData.getInstance().getExam_id();
         MessageProcessor.getInstance().sendMessage(jkMessage0204);
     }
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
index b636ff8..5ed9ac4 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
@@ -236,7 +236,7 @@
             case R.id.btn_fail:
                 JKMessage0203 jkMessage0203 = new JKMessage0203();
                 jkMessage0203.phone = "0314200100000004";
-                jkMessage0203.timeBCD = new Date();
+                jkMessage0203.timeBCD = "200226135444";
                 jkMessage0203.fail_item_id = 4;
                 jkMessage0203.fail_score = 10;
                 jkMessage0203.fail_reason = "鍙戝姩鏈哄惎鍔ㄥ悗锛屼笉鍙婃椂鏉惧紑鍚姩寮�鍏�";
diff --git a/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0203.java b/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0203.java
index c5c6217..aff895c 100644
--- a/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0203.java
+++ b/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0203.java
@@ -2,6 +2,7 @@
 
 import com.safeluck.aykj.annotation.Ascii;
 import com.safeluck.aykj.annotation.BcdDateTime;
+import com.safeluck.aykj.annotation.Hex;
 import com.safeluck.aykj.annotation.Int32;
 import com.safeluck.aykj.annotation.Int8;
 import com.safeluck.aykj.annotation.Length;
@@ -15,8 +16,12 @@
     @Ascii
     public String ID;
     @Order(2)
-    @BcdDateTime
-    public Date timeBCD;
+    @Length(6)
+    @Hex
+    public String timeBCD;
+//    @Order(2)
+//    @BcdDateTime
+//    public Date timeBCD;
     @Order(3)
     @Int32
     public int exam_id;
diff --git a/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0206.java b/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0206.java
index a56e6ef..0f23386 100644
--- a/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0206.java
+++ b/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0206.java
@@ -3,6 +3,7 @@
 import com.safeluck.aykj.annotation.*;
 
 import safeluck.drive.evaluation.platformMessage.decoder.JWD;
+import safeluck.drive.evaluation.platformMessage.decoder.SPEED;
 
 public class JKMessage0206 extends JK2019MessageBase {
     @Order(1)
@@ -22,8 +23,8 @@
     @Int16
     public int gaoCheng;
     @Order(6)
-    @Int16
-    public int speed;
+    @SPEED
+    public double speed;
     @Order(7)
     @Int16
     public int fangXiang;
diff --git a/app/src/main/java/safeluck/drive/evaluation/platformMessage/decoder/SPEED.java b/app/src/main/java/safeluck/drive/evaluation/platformMessage/decoder/SPEED.java
new file mode 100644
index 0000000..f265772
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/platformMessage/decoder/SPEED.java
@@ -0,0 +1,19 @@
+package safeluck.drive.evaluation.platformMessage.decoder;
+
+import com.safeluck.aykj.annotation.Length;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Created by zw on 2017/6/15.
+ */
+
+@Length(2)
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.FIELD})
+public @interface SPEED {
+//    Class<? extends IMessageCoder<?>>[] coder() default Int32Coder.class;
+}
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/platformMessage/decoder/SpeedCoder.java b/app/src/main/java/safeluck/drive/evaluation/platformMessage/decoder/SpeedCoder.java
new file mode 100644
index 0000000..f1e565c
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/platformMessage/decoder/SpeedCoder.java
@@ -0,0 +1,29 @@
+package safeluck.drive.evaluation.platformMessage.decoder;
+
+import com.safeluck.aykj.decoder.BaseDecoder;
+import com.safeluck.aykj.decoder.Int16Coder;
+import com.safeluck.aykj.decoder.Int32Coder;
+
+import java.math.BigDecimal;
+
+/**
+ * Created by zw on 2017/6/15.
+ */
+
+public class SpeedCoder extends BaseDecoder<Double> {
+    Int16Coder coder = new Int16Coder();
+    @Override
+    public Double decode(String str) {
+        double ret = coder.decode(str);
+        double x = ret / 10;
+        BigDecimal bg = new BigDecimal(x);
+        double f1 = bg.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
+        return f1;
+    }
+
+    @Override
+    public String encode(Double str) {
+        int speed = (int)(str * 10);
+        return coder.encode(speed);
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/viewmodels/ExamPlatformModel.java b/app/src/main/java/safeluck/drive/evaluation/viewmodels/ExamPlatformModel.java
new file mode 100644
index 0000000..914671a
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/viewmodels/ExamPlatformModel.java
@@ -0,0 +1,31 @@
+package safeluck.drive.evaluation.viewmodels;
+
+
+import android.util.Log;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.ViewModel;
+
+import com.anyun.exam.lib.MyLog;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+public class ExamPlatformModel extends ViewModel {
+    private static final String TAG = "ExamPlatformModel";
+    private MutableLiveData<Integer> dataChange = new MutableLiveData<>(0);
+    public LiveData<Integer> getDataChange(){
+
+        return dataChange;
+    }
+    public void changeDataValue(final int value){
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                dataChange.postValue(value);
+            }
+        }).start();
+    }
+
+
+}

--
Gitblit v1.8.0