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