From 40e5354d874c416661681cb2715d5adf8f1b128e Mon Sep 17 00:00:00 2001 From: lizhanwei <Dana_Lee1016@126.com> Date: 星期一, 30 三月 2020 12:17:37 +0800 Subject: [PATCH] 增加正则判断一个字符串是否全为数字;不再TTSWorker里面执行插入数据库操作和语音播报工作;训练模式和考试模式评判信息按时间排序;收到评判消息在线程里面进行语音播报和数据库操作 --- app/src/main/java/safeluck/drive/evaluation/app.java | 91 ++++++++++++----- app/src/main/java/safeluck/drive/evaluation/bean/ScoreBean.java | 38 +++++++ app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt | 14 +- app/src/main/java/safeluck/drive/evaluation/worker/TTSWorker.kt | 44 ++++---- app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java | 26 +---- app/src/main/java/safeluck/drive/evaluation/util/Utils.java | 38 ++++++ app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java | 13 +- 7 files changed, 174 insertions(+), 90 deletions(-) diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt index 6cca400..ecc25a2 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt +++ b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt @@ -189,13 +189,13 @@ } else { MyLog.i("璇诲彇Assert鐩綍涓嬪垵濮嬪寲鐨勫湴鍥�") var buffer: StringBuffer? -// buffer = FileUtil.readAssetTxtFile(applicationContext, safeluck.drive.evaluation.Constant.ROAD_MAP) -// if (buffer != null) { -// AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.PUSH_ROAD_MAP_INFO, buffer.toString()) -// } else { -// MyLog.i( String.format("鍦板浘妯″瀷鏈嫹鍏%s]鐩綍涓�", Environment.getExternalStorageDirectory().absolutePath + "/" + applicationContext.packageName)) -// CThreadPoolExecutor.runOnMainThread { Toast.makeText(app.getAppContext(), String.format("鍦板浘妯″瀷鏈嫹鍏%s]鐩綍涓�", Environment.getExternalStorageDirectory().absolutePath + "/" + applicationContext.packageName), Toast.LENGTH_SHORT).show() } -// } + buffer = FileUtil.readAssetTxtFile(applicationContext, safeluck.drive.evaluation.Constant.ROAD_MAP) + if (buffer != null) { + AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.PUSH_ROAD_MAP_INFO, buffer.toString()) + } else { + MyLog.i( String.format("鍦板浘妯″瀷鏈嫹鍏%s]鐩綍涓�", Environment.getExternalStorageDirectory().absolutePath + "/" + applicationContext.packageName)) + CThreadPoolExecutor.runOnMainThread { Toast.makeText(app.getAppContext(), String.format("鍦板浘妯″瀷鏈嫹鍏%s]鐩綍涓�", Environment.getExternalStorageDirectory().absolutePath + "/" + applicationContext.packageName), Toast.LENGTH_SHORT).show() } + } buffer = FileUtil.readAssetTxtFile(applicationContext, safeluck.drive.evaluation.Constant.MAP) if (buffer != null) { AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.PUSH_MAP_INFO, buffer.toString()) diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java index c1e15a9..8f11cf7 100644 --- a/app/src/main/java/safeluck/drive/evaluation/app.java +++ b/app/src/main/java/safeluck/drive/evaluation/app.java @@ -193,24 +193,57 @@ if(!TextUtils.isEmpty(json)){ Data judgeData = new Data.Builder().putString(Constant.TTS,json).build(); - JsonArray jsonArray = (JsonArray) JsonParser.parseString(json); - for (int i = 0; i < jsonArray.size(); i++) { - JsonObject jsonObject = jsonArray.get(i).getAsJsonObject(); - int emp_id = jsonObject.get("wrong_id").getAsInt(); - if (emp_id>1000){ - CriteriaForIII ttsStr=WorkRoomDataBase.getWorkRoomDataBase(this).getCriteriaIIIDao().queryItemForCriteriaIIINoLive(emp_id-1000); - ExamPlatformData.getInstance().getTTS().speak(ttsStr.getDeducting_reason() + (ttsStr.getScore_deducting() == 100? "涓嶅悎鏍�" : "鎵�" + - ttsStr.getScore_deducting() + "鍒�")); - }else{ - CriteriaForI ttsStr = WorkRoomDataBase.getWorkRoomDataBase(this).getCriteriaIDao().queryItemForCriteriaINoLive(emp_id); - ExamPlatformData.getInstance().getTTS().speak(ttsStr.getDeducting_reason() + (ttsStr.getScore_deducting() == 100? "涓嶅悎鏍�" : "鎵�" + - ttsStr.getScore_deducting() + "鍒�")); - } - - } + final JsonArray jsonArray = (JsonArray) JsonParser.parseString(json); OneTimeWorkRequest ttswoker = new OneTimeWorkRequest.Builder(TTSWorker.class).setInputData(judgeData).build(); WorkManager.getInstance(getAppContext()).enqueue(ttswoker); + + CThreadPoolExecutor.runInBackground(new Runnable() { + @Override + public void run() { + 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(); + int sn = jsonObject.get("sn").getAsInt(); + if (emp_id>1000){ + CriteriaForIII ttsStr=WorkRoomDataBase.getWorkRoomDataBase(getAppContext()).getCriteriaIIIDao().queryItemForCriteriaIIINoLive(emp_id-1000); + ExamPlatformData.getInstance().getTTS().speak(ttsStr.getDeducting_reason() + (ttsStr.getScore_deducting() == 100? "涓嶅悎鏍�" : "鎵�" + + ttsStr.getScore_deducting() + "鍒�")); + }else{ + CriteriaForI ttsStr = WorkRoomDataBase.getWorkRoomDataBase(getAppContext()).getCriteriaIDao().queryItemForCriteriaINoLive(emp_id); + ExamPlatformData.getInstance().getTTS().speak(ttsStr.getDeducting_reason() + (ttsStr.getScore_deducting() == 100? "涓嶅悎鏍�" : "鎵�" + + ttsStr.getScore_deducting() + "鍒�")); + } + + if (emp_id<1000) { //鍦哄湴璇勫垽娑堟伅 + if (emp_id > 31 || emp_id < 0) { + MyLog.i("emp_id瓒呭嚭鑼冨洿涓嶈兘鎻掑叆鏁版嵁搴擄紙I绫昏�冨満锛�"); + + }else{ + FailedProj failedProj = new FailedProj(Constant.SUBJECT_I, emp_id, Constant.TEST_STU_ID, utc, sn); + MyLog.i("鎻掑叆fail_projects琛�=$failedProj"); + WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getFailProjDao().insert(failedProj); + } + + } + if (emp_id>1000) { //閬撹矾 璇勫垽娑堟伅 + + if (emp_id >1066 || emp_id < 1000) { + MyLog.i("emp_id瓒呭嚭鑼冨洿涓嶈兘鎻掑叆鏁版嵁搴擄紙璺�冪被鑰冨満锛�"); + }else{ + LuKaoFailedProj failedProj = new LuKaoFailedProj(Constant.SUBJECT_III, (emp_id-1000), Constant.TEST_STU_ID, utc, sn); + MyLog.i("鎻掑叆璺�僨ail_projects琛�=$failedProj"); + WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getLuKaoFailProjDao().insert(failedProj); + } + + } + + } + } + }); + + } @@ -477,20 +510,20 @@ } }); StringBuffer buffer; -// buffer =FileUtil.readAssetTxtFile(getApplicationContext(),Constant.ROAD_MAP); -// if (buffer != null){ -// -// AYSdk.getInstance().sendCmd(Constant.PUSH_ROAD_MAP_INFO,buffer.toString()); -// }else{ -// MyLog.d(TAG,String.format("鍦板浘妯″瀷鏈嫹鍏%s]鐩綍涓�", Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+getApplicationContext().getPackageName())); -// CThreadPoolExecutor.runOnMainThread(new Runnable() { -// @Override -// public void run() { -// Toast.makeText(getAppContext(), String.format("鍦板浘妯″瀷鏈嫹鍏%s]鐩綍涓�", Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+getApplicationContext().getPackageName()), Toast.LENGTH_SHORT).show(); -// } -// }); -// -// } + buffer =FileUtil.readAssetTxtFile(getApplicationContext(),Constant.ROAD_MAP); + if (buffer != null){ + + AYSdk.getInstance().sendCmd(Constant.PUSH_ROAD_MAP_INFO,buffer.toString()); + }else{ + MyLog.d(TAG,String.format("鍦板浘妯″瀷鏈嫹鍏%s]鐩綍涓�", Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+getApplicationContext().getPackageName())); + CThreadPoolExecutor.runOnMainThread(new Runnable() { + @Override + public void run() { + Toast.makeText(getAppContext(), String.format("鍦板浘妯″瀷鏈嫹鍏%s]鐩綍涓�", Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+getApplicationContext().getPackageName()), Toast.LENGTH_SHORT).show(); + } + }); + + } buffer =FileUtil.readAssetTxtFile(getApplicationContext(),Constant.MAP); if (buffer != null){ diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/ScoreBean.java b/app/src/main/java/safeluck/drive/evaluation/bean/ScoreBean.java index 3cb50a8..e0b7191 100644 --- a/app/src/main/java/safeluck/drive/evaluation/bean/ScoreBean.java +++ b/app/src/main/java/safeluck/drive/evaluation/bean/ScoreBean.java @@ -1,12 +1,16 @@ package safeluck.drive.evaluation.bean; +import com.anyun.exam.lib.MyLog; + +import safeluck.drive.evaluation.util.Utils; + /** * MyApplication2 * Created by lzw on 2019/3/19. 14:17:11 * 閭锛�632393724@qq.com * All Rights Saved! Chongqing AnYun Tech co. LTD */ -public class ScoreBean { +public class ScoreBean implements Comparable<ScoreBean>{ /**鎵e垎鍒嗘暟*/ private float mScore; /**鎵e垎椤圭洰*/ @@ -14,12 +18,32 @@ /**鎵e垎鍘熷洜*/ private String reason; + private long mUtc; + public ScoreBean(float mScore, String mItem, String reason) { this.mScore = mScore; this.mItem = mItem; this.reason = reason; } + public ScoreBean(float mScore, String mItem, String reason,String utc) { + this.mScore = mScore; + this.mItem = mItem; + this.reason = reason; + if (Utils.isDigital(utc)){ + MyLog.i("utc鏃堕棿涓嶆槸绾暟瀛�"); + }else{ + + + mUtc = Utils.dateToLongSec(utc); + } + } + + public long getUtc() { + return mUtc; + } + + public float getScore() { return mScore; @@ -44,4 +68,16 @@ public void setReason(String reason) { this.reason = reason; } + + + @Override + public int compareTo(ScoreBean o) { + if (this.mUtc>o.getUtc()){ + return -1; + }else if (this.mUtc==o.getUtc()){ + return 0; + }else{ + return 1; + } + } } 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 5c8b3f8..2ae1f26 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java @@ -62,7 +62,6 @@ 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; import safeluck.drive.evaluation.util.Utils; import safeluck.drive.evaluation.viewmodels.TimeViewModel; @@ -352,9 +351,9 @@ 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())); + mArrayList.add(new ScoreBean(f.getScore_deducting(), f.getItem_content(), f.getDeducting_reason(),f.getUtc())); item_conents.add(f.getItem_content()); - Collections.reverse(mArrayList); + Collections.sort(mArrayList); mScoreAdapter.addDatas(mArrayList); MyLog.i("item_score="+item_id); } @@ -373,7 +372,7 @@ item_id = 0; mArrayList.clear(); item_conents.clear(); - Collections.reverse(mArrayList); + Collections.sort(mArrayList); mScoreAdapter.addDatas(mArrayList); mHandler.obtainMessage(ADD_DATA).sendToTarget(); } @@ -398,9 +397,9 @@ 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())); + mArrayList.add(new ScoreBean(f.getScore_deducting(), f.getItem_content(), f.getDeducting_reason(),f.getUtc())); item_conents.add(f.getItem_content()); - Collections.reverse(mArrayList); + Collections.sort(mArrayList); mScoreAdapter.addDatas(mArrayList); MyLog.i("item_score="+item_id); } @@ -419,7 +418,7 @@ item_id = 0; mArrayList.clear(); item_conents.clear(); - Collections.reverse(mArrayList); + Collections.sort(mArrayList); mScoreAdapter.addDatas(mArrayList); mHandler.obtainMessage(ADD_DATA).sendToTarget(); } diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java index 0c2074a..6b1f4c5 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java @@ -1,25 +1,18 @@ package safeluck.drive.evaluation.fragment; -import android.app.AlarmManager; -import android.app.PendingIntent; import android.content.Context; -import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.core.app.AlarmManagerCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProviders; import androidx.work.OneTimeWorkRequest; -import androidx.work.PeriodicWorkRequest; -import androidx.work.WorkInfo; import androidx.work.WorkManager; import android.os.Handler; import android.os.Message; -import android.os.SystemClock; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; @@ -45,8 +38,6 @@ import java.util.Collections; import java.util.Date; import java.util.List; -import java.util.Random; -import java.util.concurrent.TimeUnit; import me.yokeyword.fragmentation.SupportFragment; import safeluck.drive.evaluation.Constant; @@ -72,13 +63,8 @@ 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; import safeluck.drive.evaluation.util.Utils; import safeluck.drive.evaluation.viewmodels.TimeViewModel; -import safeluck.drive.evaluation.worker.TimeWorker; - -import static androidx.work.PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS; /**鍗曟満璁粌UI * MyApplication2 @@ -374,9 +360,9 @@ 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())); + mArrayList.add(new ScoreBean(f.getScore_deducting(), f.getItem_content(), f.getDeducting_reason(),f.getUtc())); item_conents.add(f.getItem_content()); - Collections.reverse(mArrayList); + Collections.sort(mArrayList); mScoreAdapter.addDatas(mArrayList); MyLog.i("item_score="+item_id); } @@ -393,7 +379,7 @@ item_id = 0; mArrayList.clear(); item_conents.clear(); - Collections.reverse(mArrayList); + Collections.sort(mArrayList); mScoreAdapter.addDatas(mArrayList); mHandler.obtainMessage(ADD_DATA).sendToTarget(); } @@ -418,9 +404,9 @@ 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())); + mArrayList.add(new ScoreBean(f.getScore_deducting(), f.getItem_content(), f.getDeducting_reason(),f.getUtc())); item_conents.add(f.getItem_content()); - Collections.reverse(mArrayList); + Collections.sort(mArrayList); mScoreAdapter.addDatas(mArrayList); MyLog.i("item_score="+item_id); } @@ -437,7 +423,7 @@ item_id = 0; mArrayList.clear(); item_conents.clear(); - Collections.reverse(mArrayList); + Collections.sort(mArrayList); mScoreAdapter.addDatas(mArrayList); mHandler.obtainMessage(ADD_DATA).sendToTarget(); } diff --git a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java index 23bbbb3..04b5ae8 100644 --- a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java +++ b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java @@ -12,13 +12,17 @@ import java.math.BigDecimal; import java.security.SecureRandom; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.Collections; +import java.util.Date; import java.util.List; import java.util.Random; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import javax.crypto.Cipher; import javax.crypto.SecretKey; @@ -125,10 +129,10 @@ return temp; } - public static boolean isDigital(String str) { - String regx= "^\\d+"; - return str.matches(regx); - } +// public static boolean isDigital(String str) { +// String regx= "^\\d+"; +// return str.matches(regx); +// } // public static void main(String []args){ // String str = "EB00020000031420010000000400A5"; @@ -349,6 +353,13 @@ Point p1 = new Point(2.55,1.0); Point p2 = new Point(1.55,1.0); System.out.println(Calc3Point(p1,p2,1.0).toString()); + System.out.println( isDigital("2003233d")); + System.out.println( isDigital("d2003233")); + System.out.println( dateToLongSec("20200330101455")); + + + + ; } public static Point Calc3Point(Point p1,Point p2,double L ){ @@ -429,4 +440,23 @@ return simpleDateFormat.format(begin_time); } + + public static boolean isDigital(String str){ + String regx = "^[0-9]*$"; + Pattern pattern = Pattern.compile(regx); + Matcher matcher = pattern.matcher(str); + return matcher.matches(); + } + + public static long dateToLongSec(String utc) { + + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + Date date = null; + try { + date = simpleDateFormat.parse(utc); + } catch (ParseException e) { + e.printStackTrace(); + } + return date.getTime()/1000; + } } diff --git a/app/src/main/java/safeluck/drive/evaluation/worker/TTSWorker.kt b/app/src/main/java/safeluck/drive/evaluation/worker/TTSWorker.kt index 72cd703..d8062eb 100644 --- a/app/src/main/java/safeluck/drive/evaluation/worker/TTSWorker.kt +++ b/app/src/main/java/safeluck/drive/evaluation/worker/TTSWorker.kt @@ -147,28 +147,28 @@ - if (emp_id<1000) { //鍦哄湴璇勫垽娑堟伅 - if (emp_id > 31 || emp_id < 0) { - MyLog.i("emp_id瓒呭嚭鑼冨洿涓嶈兘鎻掑叆鏁版嵁搴擄紙I绫昏�冨満锛�") - - }else{ - val failedProj = FailedProj(Constant.SUBJECT_I, emp_id, Constant.TEST_STU_ID, utc, sn) - MyLog.i("鎻掑叆fail_projects琛�=$failedProj") - WorkRoomDataBase.getWorkRoomDataBase(applicationContext).failProjDao.insert(failedProj) - } - - } - if (emp_id>1000) { //閬撹矾 璇勫垽娑堟伅 - - if (emp_id >1066 || emp_id < 1000) { - MyLog.i("emp_id瓒呭嚭鑼冨洿涓嶈兘鎻掑叆鏁版嵁搴擄紙璺�冪被鑰冨満锛�") - }else{ - val failedProj = LuKaoFailedProj(Constant.SUBJECT_III, (emp_id-1000), Constant.TEST_STU_ID, utc, sn) - MyLog.i("鎻掑叆璺�僨ail_projects琛�=$failedProj") - WorkRoomDataBase.getWorkRoomDataBase(applicationContext).luKaoFailProjDao.insert(failedProj) - } - - } +// if (emp_id<1000) { //鍦哄湴璇勫垽娑堟伅 +// if (emp_id > 31 || emp_id < 0) { +// MyLog.i("emp_id瓒呭嚭鑼冨洿涓嶈兘鎻掑叆鏁版嵁搴擄紙I绫昏�冨満锛�") +// +// }else{ +// val failedProj = FailedProj(Constant.SUBJECT_I, emp_id, Constant.TEST_STU_ID, utc, sn) +// MyLog.i("鎻掑叆fail_projects琛�=$failedProj") +// WorkRoomDataBase.getWorkRoomDataBase(applicationContext).failProjDao.insert(failedProj) +// } +// +// } +// if (emp_id>1000) { //閬撹矾 璇勫垽娑堟伅 +// +// if (emp_id >1066 || emp_id < 1000) { +// MyLog.i("emp_id瓒呭嚭鑼冨洿涓嶈兘鎻掑叆鏁版嵁搴擄紙璺�冪被鑰冨満锛�") +// }else{ +// val failedProj = LuKaoFailedProj(Constant.SUBJECT_III, (emp_id-1000), Constant.TEST_STU_ID, utc, sn) +// MyLog.i("鎻掑叆璺�僨ail_projects琛�=$failedProj") +// WorkRoomDataBase.getWorkRoomDataBase(applicationContext).luKaoFailProjDao.insert(failedProj) +// } +// +// } } -- Gitblit v1.8.0