lizhanwei
2020-03-22 fad6626d6375cb9a2991e9e9e2cb5fdc0f3b7b74
科目三评判消息加入数据库
8个文件已修改
248 ■■■■■ 已修改文件
app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjRepository.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/failitems/LuKaoFailProjDao.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/worker/TTSWorker.kt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt
@@ -108,17 +108,22 @@
        sendSignalConfigsToRemote(indexs)
        val data = Data.Builder().putInt(Constant.EXAM_STATUS_TYPE,examType).build()
        if (examType != safeluck.drive.evaluation.Constant.NONE_BEEN_START_EXAM) {
//        if (examType != safeluck.drive.evaluation.Constant.NONE_BEEN_START_EXAM) {
            try {
                val jsonObject = JSONObject()
                jsonObject.put("exam", 1)
                if (examType == safeluck.drive.evaluation.Constant.NONE_BEEN_START_EXAM) {
                    jsonObject.put("exam", 0)
                }else{
                    jsonObject.put("exam", 1)
                }
                jsonObject.put("type", examType)
                val examJson = jsonObject.toString()
                AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.EXAM_STATUS, examJson)
            } catch (e: JSONException) {
                e.printStackTrace()
            }
        }
//        }
        return Result.success(data)
    }
app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjRepository.java
@@ -57,6 +57,7 @@
            @Override
            public void run() {
                failProjDao.deleteAll();
                luKaofailProjDao.deleteAll();
            }
        });
    }
app/src/main/java/safeluck/drive/evaluation/DB/failitems/LuKaoFailProjDao.java
@@ -36,6 +36,6 @@
    @Query("SELECT COUNT(*)  from lukao_fail_projects where subject=:subject_id")
    LiveData<Integer> getSubject(int subject_id);
    @Query("delete from fail_projects")
    @Query("delete from lukao_fail_projects")
    void deleteAll();
}
app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
@@ -27,6 +27,10 @@
public class ExamPlatformData {
    public static final int MODE_NONE = 0;
    public static final int EXAM_TYPE_LUKAO_Light = 3;
    public static final int EXAM_TYPE_LUKAO = 4;
    public static final int EXAM_TYPE_ChangKAO = 2;
    private static final String TAG = "ExamPlatformData";
    private static final ExamPlatformData ourInstance = new ExamPlatformData();
@@ -45,7 +49,10 @@
    public static final int DEV_NOT_LOGIN = 5;
    public static final int DEV_LOGIN = 6;
    private boolean  isTrainingMode = false;//是否训练模式
    private int  trainingMode = 0;//即不是训练模式也是考试模式
    public static final int EXAMING_MODE =1;
    public static final int TRAINING_MODE =2;
    private static HashMap<Integer,String> examPlatformStrs = new HashMap<>();
    private List<Integer> sns =new ArrayList<>();//保存所有失败项目的sn
    private static HashMap<Integer,String> enter_exit_item_tts = new HashMap<>();
@@ -264,14 +271,16 @@
        }
    }
    public boolean isTrainingMode() {
        isTrainingMode = (boolean) SPUtils.get(app.getAppContext(),SPUtils.TRAIN_MODE,false);
        return isTrainingMode;
    public int getTrainingMode() {
        trainingMode = (int) SPUtils.get(app.getAppContext(),SPUtils.TRAIN_MODE,0);
        return trainingMode;
    }
    public void setTrainingMode(boolean trainingMode) {
    public void setTrainingMode(int trainingMode) {
        SPUtils.put(app.getAppContext(),SPUtils.TRAIN_MODE,trainingMode);
        isTrainingMode = trainingMode;
        trainingMode = trainingMode;
    }
    public void setPhone(String phone) {
app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java
@@ -66,16 +66,21 @@
        switch (v.getId()) {
            case R.id.car_train:
                //单机训练
                TrainFragment trainFragment = findFragment(TrainFragment.class);
                if (trainFragment == null) {
                    trainFragment = (TrainFragment) TrainFragment.newInstance();
                    start(trainFragment);
                } else {
                    start(trainFragment);
                if (ExamPlatformData.getInstance().getTrainingMode()==ExamPlatformData.EXAMING_MODE){
                    Toast.makeText(_mActivity, "当前正处于考试模式,无法进入单击训练,请先结束考试", Toast.LENGTH_SHORT).show();
                }else{
                    TrainFragment trainFragment = findFragment(TrainFragment.class);
                    if (trainFragment == null) {
                        trainFragment = (TrainFragment) TrainFragment.newInstance();
                        start(trainFragment);
                    } else {
                        start(trainFragment);
                    }
                }
                break;
            case R.id.network_train:
                if (ExamPlatformData.getInstance().isTrainingMode()){
                if (ExamPlatformData.getInstance().getTrainingMode()==ExamPlatformData.TRAINING_MODE){
                    Toast.makeText(_mActivity, "当前正处于训练模式,无法进入联网考试,请先结束训练", Toast.LENGTH_SHORT).show();
                }else{
                    NetWorkTrainFragment netWorkTrainFragment = findFragment(NetWorkTrainFragment.class);
app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
@@ -270,7 +270,54 @@
            failedProjViewModel.getFailedProjectsForIII(Constant.TEST_STU_ID).observe(this, new Observer<List<FailedProj_select>>() {
                @Override
                public void onChanged(List<FailedProj_select> failedProj_selects) {
                    MyLog.i("现在是路考状态,监视路考数据失败项目");
                    if (ExamPlatformData.getInstance().getExamType()>ExamPlatformData.EXAM_TYPE_ChangKAO){
                        MyLog.i("现在是路考状态,监视路考数据失败项目");
                        if (failedProj_selects != null && failedProj_selects.size()>0){
                            item_id = 0;
                            currTotalScore = 100;
                            mArrayList.clear();
                            item_conents.clear();
                            for (FailedProj_select f :
                                    failedProj_selects) {
                                item_id += f.getScore_deducting();
                                Log.i(TAG, "onChanged: " + f.toString());
                                mArrayList.add(new ScoreBean(f.getScore_deducting(), f.getItem_content(), f.getDeducting_reason()));
                                item_conents.add(f.getItem_content());
                                Collections.reverse(mArrayList);
                                mScoreAdapter.addDatas(mArrayList);
                                MyLog.i("item_score="+item_id);
                            }
                            MyLog.i("没扣分之前得分:"+currTotalScore);
                            currTotalScore -=item_id;
                            MyLog.i("路考当前得分:"+currTotalScore);
                            if (currTotalScore < Constant.PASSING_SCORE){
                                MyLog.i("路考低于80,不合格"+currTotalScore);
//                                ExamPlatformData.getInstance().getTTS().speak("考试不合格");
//                                stopExam();
                            }
                            MyLog.i("路考监测到有失败项目加入,通知UI更新颜色");
                            mHandler.obtainMessage(ADD_DATA).sendToTarget();
                        }else{
                            MyLog.i(TAG,"路考失败项目数据表被清空更新UI");
                            item_id = 0;
                            mArrayList.clear();
                            item_conents.clear();
                            Collections.reverse(mArrayList);
                            mScoreAdapter.addDatas(mArrayList);
                            mHandler.obtainMessage(ADD_DATA).sendToTarget();
                        }
                    }
                }
            });
        failedProjViewModel.getFailedProjectsForI(Constant.TEST_STU_ID).observe(this, new Observer<List<FailedProj_select>>() {
            @Override
            public void onChanged(List<FailedProj_select> failedProj_selects) {
                if (ExamPlatformData.getInstance().getExamType()<=ExamPlatformData.EXAM_TYPE_ChangKAO){
                    MyLog.i("现在是场考状态,监视路考数据失败项目");
                    if (failedProj_selects != null && failedProj_selects.size()>0){
                        item_id = 0;
@@ -289,16 +336,16 @@
                        }
                        MyLog.i("没扣分之前得分:"+currTotalScore);
                        currTotalScore -=item_id;
                        MyLog.i("路考当前得分:"+currTotalScore);
                        MyLog.i("当前得分:"+currTotalScore);
                        if (currTotalScore < Constant.PASSING_SCORE){
                            MyLog.i("路考低于80,不合格"+currTotalScore);
                        ExamPlatformData.getInstance().getTTS().speak("考试不合格");
                        stopExam();
                            MyLog.i("场考低于80,不合格"+currTotalScore);
//                            ExamPlatformData.getInstance().getTTS().speak("考试不合格");
//                            stopExam();
                        }
                        MyLog.i("路考监测到有失败项目加入,通知UI更新颜色");
                        MyLog.i("场考监测到有失败项目加入,通知UI更新颜色");
                        mHandler.obtainMessage(ADD_DATA).sendToTarget();
                    }else{
                        MyLog.i(TAG,"路考失败项目数据表被清空更新UI");
                        MyLog.i(TAG,"场考失败项目数据表被清空更新UI");
                        item_id = 0;
                        mArrayList.clear();
                        item_conents.clear();
@@ -307,48 +354,7 @@
                        mHandler.obtainMessage(ADD_DATA).sendToTarget();
                    }
                }
            });
        failedProjViewModel.getFailedProjectsForI(Constant.TEST_STU_ID).observe(this, new Observer<List<FailedProj_select>>() {
            @Override
            public void onChanged(List<FailedProj_select> failedProj_selects) {
                MyLog.i("现在是场考状态,监视路考数据失败项目");
                if (failedProj_selects != null && failedProj_selects.size()>0){
                    item_id = 0;
                    currTotalScore = 100;
                    mArrayList.clear();
                    item_conents.clear();
                    for (FailedProj_select f :
                            failedProj_selects) {
                        item_id += f.getScore_deducting();
                        Log.i(TAG, "onChanged: " + f.toString());
                        mArrayList.add(new ScoreBean(f.getScore_deducting(), f.getItem_content(), f.getDeducting_reason()));
                        item_conents.add(f.getItem_content());
                        Collections.reverse(mArrayList);
                        mScoreAdapter.addDatas(mArrayList);
                        MyLog.i("item_score="+item_id);
                    }
                    MyLog.i("没扣分之前得分:"+currTotalScore);
                    currTotalScore -=item_id;
                    MyLog.i("当前得分:"+currTotalScore);
                    if (currTotalScore < Constant.PASSING_SCORE){
                        MyLog.i("场考低于80,不合格"+currTotalScore);
                        ExamPlatformData.getInstance().getTTS().speak("考试不合格");
                        stopExam();
                    }
                    MyLog.i("场考监测到有失败项目加入,通知UI更新颜色");
                    mHandler.obtainMessage(ADD_DATA).sendToTarget();
                }else{
                    MyLog.i(TAG,"场考失败项目数据表被清空更新UI");
                    item_id = 0;
                    mArrayList.clear();
                    item_conents.clear();
                    Collections.reverse(mArrayList);
                    mScoreAdapter.addDatas(mArrayList);
                    mHandler.obtainMessage(ADD_DATA).sendToTarget();
                }
            }
        });
@@ -508,7 +514,7 @@
                    @Override
                    public void changKao() {
                        exam_type = 2;
                        ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.EXAMING_MODE);
                        iv_head.getDrawable().setLevel(1);
                        ExamPlatformData.getInstance().setExamType(exam_type);
                        examStatusViewModel.updateStartExam(exam_type);
@@ -521,6 +527,7 @@
                    @Override
                    public void luKao() {
                        ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.EXAMING_MODE);
                        exam_type = 3;
                        ExamPlatformData.getInstance().setExamType(exam_type);
                        examStatusViewModel.updateStartExam(exam_type);
@@ -588,9 +595,20 @@
        MyLog.i(TAG,"结束考试");
        sns.clear();
        //设置模式为NONE 0
        ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.MODE_NONE);
        //恢复初始数据
        OneTimeWorkRequest examStatusInitWork = OneTimeWorkRequest.from(ExamStatusInitWorker.class);
        WorkManager.getInstance(_mActivity).enqueue(examStatusInitWork);
        item_id = 0;
        currTotalScore = 100;
        failedProjViewModel.deleteAll();
        tv_total_score.setText(String.valueOf(currTotalScore));
        iv_head.getDrawable().setLevel(0);
        ExamPlatformData.getInstance().getTTS().speak("结束考试");
        examStatusViewModel.updateStartExam(Constant.NONE_BEEN_START_EXAM);
        sendExamJson(0,0);//结束考试 exstart=0
app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -396,43 +396,43 @@
    }
//    private void sendJKMessage0203(List<FailedProj_select> failedProj_selects) {
//        JKMessage0203 jkMessage0203 = new JKMessage0203();
//        jkMessage0203.phone =  ExamPlatformData.getInstance().getPhone();
//        jkMessage0203.ID = ExamPlatformData.getInstance().getID();
//        jkMessage0203.exam_id = ExamPlatformData.getInstance().getExam_id();
////        JKMessage0203 jkMessage0203 = new JKMessage0203();
////        jkMessage0203.phone =  ExamPlatformData.getInstance().getPhone();
////        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.get(i).getSn())){
////                MyLog.i("sn相同"+failedProj_selects.get(i).getSn());
////            }else{
////                ExamPlatformData.getInstance().getTTS().speak(failedProj_selects.get(i).getDeducting_reason()+(
////                        failedProj_selects.get(i).getScore_deducting()==100?"不合格":"扣"+
////                                failedProj_selects.get(i).getScore_deducting()+"分"));
////                MyLog.i("没有相同的sn,发送"+failedProj_selects.get(i).getSn());
////                ExamPlatformData.getInstance().addSn(failedProj_selects.get(i).getSn());
////                String utc =   failedProj_selects.get(i).getUtc();
////                if (!TextUtils.isEmpty(utc)&&utc.length()>12){
////                    utc =utc.substring(0,12);
////                }
////                jkMessage0203.timeBCD = utc ;
////
////                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();
////            }
////
////        }
//
//        for (int i = 0; i < failedProj_selects.size(); i++) {
//            if (hasSnEqulas(failedProj_selects.get(i).getSn())){
//                MyLog.i("sn相同"+failedProj_selects.get(i).getSn());
//            }else{
//                ExamPlatformData.getInstance().getTTS().speak(failedProj_selects.get(i).getDeducting_reason()+(
//                        failedProj_selects.get(i).getScore_deducting()==100?"不合格":"扣"+
//                                failedProj_selects.get(i).getScore_deducting()+"分"));
//                MyLog.i("没有相同的sn,发送"+failedProj_selects.get(i).getSn());
//                ExamPlatformData.getInstance().addSn(failedProj_selects.get(i).getSn());
//                String utc =   failedProj_selects.get(i).getUtc();
//                if (!TextUtils.isEmpty(utc)&&utc.length()>12){
//                    utc =utc.substring(0,12);
//                }
//                jkMessage0203.timeBCD = utc ;
////        MessageProcessor.getInstance().sendMessage(jkMessage0203);
////    }
//
//                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(int failedProjSn){
//        if (ExamPlatformData.getInstance().getSns().size() > 0){
//            for (int j = 0; j < ExamPlatformData.getInstance().getSns().size(); j++) {
//                MyLog.i("已存在的sn"+ExamPlatformData.getInstance().getSns().get(j));
//                if (ExamPlatformData.getInstance().getSns().get(j) == failedProjSn){
//                    MyLog.i("sn相同,不发"+ExamPlatformData.getInstance().getSns().get(j));
//                    return true;
////    private boolean hasSnEqulas(int failedProjSn){
////        if (ExamPlatformData.getInstance().getSns().size() > 0){
////            for (int j = 0; j < ExamPlatformData.getInstance().getSns().size(); j++) {
////                MyLog.i("已存在的sn"+ExamPlatformData.getInstance().getSns().get(j));
////                if (ExamPlatformData.getInstance().getSns().get(j) == failedProjSn){
////                    MyLog.i("sn相同,不发"+ExamPlatformData.getInstance().getSns().get(j));
////                    return true;
//                }else{
//                    continue;
//                }
@@ -538,7 +538,7 @@
                        ExamPlatformData.getInstance().getTTS().speak("开始训练");
                        jkMessage0202.curr_exam = 0;
                        ExamPlatformData.getInstance().setTrainingMode(true);//设置为训练模式
                        ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.TRAINING_MODE);//设置为训练模式
                        MessageProcessor.getInstance().sendMessage(jkMessage0202);
                    }
@@ -608,8 +608,8 @@
        //清空sns
        ExamPlatformData.getInstance().clearSns();
        //设置训练模式为false
        ExamPlatformData.getInstance().setTrainingMode(false);
        //设置模式为NONE 0
        ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.MODE_NONE);
        //恢复初始数据
        OneTimeWorkRequest examStatusInitWork = OneTimeWorkRequest.from(ExamStatusInitWorker.class);
app/src/main/java/safeluck/drive/evaluation/worker/TTSWorker.kt
@@ -36,8 +36,10 @@
        for ( i in 0 until jsonArray.size()) {
            val jsonObject = jsonArray[i].asJsonObject
            val emp_id = jsonObject["wrong_id"].asInt
            var utc = jsonObject["utc"].asString
            MyLog.i("评判消息解析之前的utc=$utc")
            MyLog.i("wrong_id=$emp_id")
            utc = utc.substring(2, utc.length - 3)
            MyLog.i("评判消息解析之后的utc=$utc")
        val sn = jsonObject["sn"].asInt