Merge branch 'master' of https://gitee.com/endian11/DriveJudge
| | |
| | | public static final String TIME_MINUTE = "show_time_minute"; |
| | | @NotNull |
| | | public static final String MCU_UPGRADE_FAIL_RESASON = "mcu_upgrade_fail_reason"; |
| | | @NotNull |
| | | public static final String TTS="tts_judge"; |
| | | } |
| | |
| | | import safeluck.drive.evaluation.DB.failitems.FailProjDao; |
| | | import safeluck.drive.evaluation.DB.failitems.FailedProj; |
| | | import safeluck.drive.evaluation.DB.failitems.FailedProjWorker; |
| | | import safeluck.drive.evaluation.DB.failitems.LuKaoFailProjDao; |
| | | import safeluck.drive.evaluation.DB.failitems.LuKaoFailedProj; |
| | | import safeluck.drive.evaluation.DB.gps.GPSInfo; |
| | | import safeluck.drive.evaluation.DB.gps.GpsInfoDao; |
| | | import safeluck.drive.evaluation.DB.rtktb.RTKConfig; |
| | |
| | | * 邮箱:632393724@qq.com |
| | | * All Rights Saved! Chongqing AnYun Tech co. LTD |
| | | */ |
| | | @Database(entities = {Student.class, CriteriaForI.class, FailedProj.class, CriteriaForII.class, CriteriaForIII.class,RTKConfig.class, GPSInfo.class, AppStatus.class, ExamStatus.class, SingalConfig.class},version = 1,exportSchema = false) |
| | | @Database(entities = {Student.class, CriteriaForI.class, FailedProj.class,LuKaoFailedProj.class, CriteriaForII.class, CriteriaForIII.class,RTKConfig.class, GPSInfo.class, AppStatus.class, ExamStatus.class, SingalConfig.class},version = 1,exportSchema = false) |
| | | public abstract class WorkRoomDataBase extends RoomDatabase { |
| | | private static final String TAG = "WorkRoomDataBase"; |
| | | public abstract StudentDao getstudentDao(); |
| | |
| | | * @return |
| | | */ |
| | | public abstract CriteriaIIIDao getCriteriaIIIDao(); |
| | | |
| | | public abstract LuKaoFailProjDao getLuKaoFailProjDao(); |
| | | } |
| | |
| | | * item_id item_content deducting_reason score_deducting required _precision |
| | | 23 起步 车门未完全关闭起步 不合格 行驶距离大于1m 时 |
| | | **************/ |
| | | |
| | | |
| | | |
| | | @PrimaryKey |
| | | @ColumnInfo(name = "item_id") |
| | | @NonNull |
| | |
| | | |
| | | @Query( "SELECT * FROM criteria_one WHERE item_id =:item_id") |
| | | LiveData<CriteriaForI > queryItemForCriteriaI(int item_id); |
| | | @Query( "SELECT * FROM criteria_one WHERE item_id =:item_id") |
| | | CriteriaForI queryItemForCriteriaINoLive(int item_id); |
| | | } |
| | |
| | | |
| | | @Query( "SELECT * FROM criteria_three WHERE item_id =:item_id") |
| | | LiveData<CriteriaForIII > queryItemForCriteriaIII(int item_id); |
| | | @Query( "SELECT * FROM criteria_three WHERE item_id =:item_id") |
| | | CriteriaForIII queryItemForCriteriaIIINoLive(int item_id); |
| | | } |
| | |
| | | package safeluck.drive.evaluation.DB.exam_status |
| | | |
| | | import android.content.Context |
| | | import android.os.Environment |
| | | import android.text.TextUtils |
| | | import android.util.Log |
| | | import android.widget.Toast |
| | | import androidx.work.Data |
| | | import androidx.work.Worker |
| | | import androidx.work.WorkerParameters |
| | |
| | | import safeluck.drive.evaluation.DB.WorkRoomDataBase |
| | | import safeluck.drive.evaluation.DB.rtktb.RTKConfig |
| | | import safeluck.drive.evaluation.DB.signalConfigdb.SingalConfig |
| | | import safeluck.drive.evaluation.app |
| | | import safeluck.drive.evaluation.bean.ExamPlatformData |
| | | import safeluck.drive.evaluation.bean.SignalConfigRemote |
| | | import safeluck.drive.evaluation.bean.SimulateNightBean |
| | | import safeluck.drive.evaluation.bean.SimulateNightBean.QuestionBean |
| | | import safeluck.drive.evaluation.util.CThreadPoolExecutor |
| | | import safeluck.drive.evaluation.util.FileUtil |
| | | import safeluck.drive.evaluation.util.Utils |
| | | import java.io.IOException |
| | | import java.io.InputStreamReader |
| | |
| | | tempQs.add(list[list.size-1])//提示灯光考试结束 |
| | | simulateNightBean.setQuestion(tempQs) |
| | | AYSdk.getInstance().sendCmd(0x8012, gson.toJson(simulateNightBean)) |
| | | |
| | | sendMapInfo() |
| | | sendVehicleInfo() |
| | | |
| | | MyLog.i(TAG,"查到的考试type="+examType) |
| | | ExamPlatformData.getInstance().examType = examType |
| | | val data = Data.Builder().putInt(Constant.EXAM_STATUS_TYPE,examType).build() |
| | | if (examType != safeluck.drive.evaluation.Constant.NONE_BEEN_START_EXAM) { |
| | | try { |
| | | val jsonObject = JSONObject() |
| | | 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() |
| | | } |
| | | } |
| | | |
| | | var rtk = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).rtkConfigDao._getRtkConfig() |
| | | if (rtk == null){ |
| | | try { |
| | |
| | | |
| | | sendSignalConfigsToRemote(indexs) |
| | | |
| | | |
| | | val data = Data.Builder().putInt(Constant.EXAM_STATUS_TYPE,examType).build() |
| | | if (examType != safeluck.drive.evaluation.Constant.NONE_BEEN_START_EXAM) { |
| | | try { |
| | | val jsonObject = JSONObject() |
| | | 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) |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | private fun sendMapInfo(){ |
| | | val mapPath = ExamPlatformData.getInstance().mapPath |
| | | if (!TextUtils.isEmpty(mapPath)) { |
| | | MyLog.i("调用更新Map路径后的地图$mapPath") |
| | | val fileContent = FileUtil.readFile(mapPath) |
| | | if (fileContent != null) { |
| | | val str = String(fileContent) |
| | | Log.i(TAG,"文件内容:$str") |
| | | AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.PUSH_MAP_INFO, str) |
| | | } else { |
| | | MyLog.i(String.format("文件:%s不存在", mapPath)) |
| | | CThreadPoolExecutor.runOnMainThread { Toast.makeText(app.getAppContext(), "文件:" + mapPath + "不存在", Toast.LENGTH_SHORT).show() } |
| | | } |
| | | } 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.MAP) |
| | | if (buffer != null) { |
| | | AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.PUSH_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() } |
| | | } |
| | | } |
| | | } |
| | | |
| | | private fun sendVehicleInfo(){ |
| | | val carPath = ExamPlatformData.getInstance().carModelPath |
| | | if (!TextUtils.isEmpty(carPath)) { |
| | | MyLog.i("使用更新后的Car模型地图$carPath") |
| | | val bytes = FileUtil.readFile(carPath) |
| | | if (bytes != null) { |
| | | val str = String(bytes) |
| | | AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.PUSH_VECHILE_PROFILE, str) |
| | | } else { |
| | | MyLog.i(String.format("文件:%s不存在", carPath)) |
| | | } |
| | | } else { |
| | | val vebuffer = FileUtil.readAssetTxtFile(applicationContext, safeluck.drive.evaluation.Constant.VEHICLE) |
| | | if (vebuffer != null) { |
| | | AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.PUSH_VECHILE_PROFILE, vebuffer.toString()) |
| | | } else { |
| | | MyLog.i(String.format("车辆模型模型未拷入[%s]目录下", Environment.getExternalStorageDirectory().absolutePath + "/" + applicationContext.packageName)) |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | */ |
| | | @Entity(tableName = "fail_projects",foreignKeys = {@ForeignKey(entity = CriteriaForI.class, |
| | | parentColumns = "item_id",childColumns = "emp_id",onDelete = CASCADE),@ForeignKey(entity = CriteriaForII.class, |
| | | parentColumns = "item_id",childColumns = "emp_id",onDelete = CASCADE),@ForeignKey(entity = CriteriaForIII.class, |
| | | parentColumns = "item_id",childColumns = "emp_id",onDelete = CASCADE)},indices = @Index(value = {"emp_id"})) |
| | | public class FailedProj { |
| | | @PrimaryKey(autoGenerate = true) |
| | |
| | | |
| | | |
| | | private FailProjDao failProjDao; |
| | | private LuKaoFailProjDao luKaofailProjDao; |
| | | |
| | | public FailedProjRepository(Application application) { |
| | | WorkRoomDataBase dataBase = WorkRoomDataBase.getWorkRoomDataBase(application); |
| | | failProjDao = dataBase.getFailProjDao(); |
| | | luKaofailProjDao = dataBase.getLuKaoFailProjDao(); |
| | | } |
| | | |
| | | |
| | |
| | | public void run() { |
| | | |
| | | failProjDao.insert(proj); |
| | | } |
| | | }); |
| | | } |
| | | public void insertLuKao(final LuKaoFailedProj proj) { |
| | | WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | |
| | | luKaofailProjDao.insert(proj); |
| | | } |
| | | }); |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | public LiveData<List<FailedProj_select>> getFailedProjectsForIII(long stu_id) { |
| | | return failProjDao.getFailedProjectsForIII(stu_id); |
| | | return luKaofailProjDao.getFailedProjectsForIII(stu_id); |
| | | } |
| | | |
| | | |
| | |
| | | */ |
| | | public class FailedProj_select { |
| | | |
| | | @ColumnInfo(name = "emp_id") |
| | | |
| | | private int emp_id; |
| | | |
| | | private long stu_id; |
New file |
| | |
| | | package safeluck.drive.evaluation.DB.failitems; |
| | | |
| | | import androidx.lifecycle.LiveData; |
| | | import androidx.room.Dao; |
| | | import androidx.room.Insert; |
| | | import androidx.room.OnConflictStrategy; |
| | | import androidx.room.Query; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * MyApplication2 |
| | | * Created by lzw on 2019/11/26. 18:08:08 |
| | | * 邮箱:632393724@qq.com |
| | | * All Rights Saved! Chongqing AnYun Tech co. LTD |
| | | */ |
| | | @Dao |
| | | public interface LuKaoFailProjDao { |
| | | |
| | | @Insert(onConflict = OnConflictStrategy.REPLACE) |
| | | void insert(LuKaoFailedProj proj); |
| | | |
| | | /** |
| | | * 查询 科目三 路考考场的失败项目 (多表查询) |
| | | * 如果要添加 科目二II III类考场失败项目,需要建立相应的评判标准表数据表 |
| | | * @return |
| | | */ |
| | | @Query("SELECT emp_id,stu_id,utc,sn,deducting_reason,score_deducting,item_content from criteria_three INNER JOIN lukao_fail_projects ON criteria_three.item_id= lukao_fail_projects.emp_id where lukao_fail_projects.stu_id=:stu_id and lukao_fail_projects.subject=3") |
| | | LiveData<List<FailedProj_select>> getFailedProjectsForIII(long stu_id); |
| | | |
| | | /** |
| | | * 获取失败项目条数 |
| | | * @param subject_id |
| | | * @return |
| | | */ |
| | | @Query("SELECT COUNT(*) from lukao_fail_projects where subject=:subject_id") |
| | | LiveData<Integer> getSubject(int subject_id); |
| | | |
| | | @Query("delete from fail_projects") |
| | | void deleteAll(); |
| | | } |
New file |
| | |
| | | package safeluck.drive.evaluation.DB.failitems; |
| | | |
| | | import androidx.room.ColumnInfo; |
| | | import androidx.room.Entity; |
| | | import androidx.room.ForeignKey; |
| | | import androidx.room.Index; |
| | | import androidx.room.PrimaryKey; |
| | | |
| | | import safeluck.drive.evaluation.DB.criterias.CriteriaForI; |
| | | import safeluck.drive.evaluation.DB.criterias.CriteriaForII; |
| | | import safeluck.drive.evaluation.DB.criterias.CriteriaForIII; |
| | | |
| | | import static androidx.room.ForeignKey.CASCADE; |
| | | |
| | | /** |
| | | * MyApplication2 |
| | | * 失败项目条目 |
| | | * Created by lzw on 2019/11/26. 17:59:20 |
| | | * 邮箱:632393724@qq.com |
| | | * All Rights Saved! Chongqing AnYun Tech co. LTD |
| | | */ |
| | | @Entity(tableName = "lukao_fail_projects",foreignKeys = {@ForeignKey(entity = CriteriaForIII.class, |
| | | parentColumns = "item_id",childColumns = "emp_id",onDelete = CASCADE)},indices = @Index(value = {"emp_id"})) |
| | | public class LuKaoFailedProj { |
| | | @PrimaryKey(autoGenerate = true) |
| | | private int id; |
| | | |
| | | |
| | | |
| | | @ColumnInfo(name = "stu_id") |
| | | private long stu_id; |
| | | |
| | | // =1 I类考场 ==2 II类考场 3-路考 |
| | | @ColumnInfo(name = "subject") |
| | | private int subject; |
| | | |
| | | //作为外键,对应I类考场的item_id |
| | | @ColumnInfo(name = "emp_id") |
| | | private int emp_id; |
| | | private int sn; |
| | | private String utc; |
| | | public LuKaoFailedProj(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; |
| | | } |
| | | |
| | | public void setId(int id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public long getStu_id() { |
| | | return stu_id; |
| | | } |
| | | |
| | | public void setStu_id(long stu_id) { |
| | | this.stu_id = stu_id; |
| | | } |
| | | |
| | | public int getSubject() { |
| | | return subject; |
| | | } |
| | | |
| | | public void setSubject(int subject) { |
| | | this.subject = subject; |
| | | } |
| | | |
| | | public int getEmp_id() { |
| | | return emp_id; |
| | | } |
| | | |
| | | 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 + '\'' + |
| | | '}'; |
| | | } |
| | | } |
| | |
| | | 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.failitems.LuKaoFailedProj; |
| | | import safeluck.drive.evaluation.DB.gps.GpsInfoWorker; |
| | | import safeluck.drive.evaluation.DB.rtktb.RTKConfig; |
| | | import safeluck.drive.evaluation.DB.rtktb.RTKConfigUpdateWorker; |
| | | import safeluck.drive.evaluation.DB.rtktb.RTKWorkRepository; |
| | | import safeluck.drive.evaluation.bean.ExamMap; |
| | | import safeluck.drive.evaluation.bean.ExamPlatformData; |
| | | import safeluck.drive.evaluation.cEventCenter.CEvent; |
| | | import safeluck.drive.evaluation.cEventCenter.CEventCenter; |
| | |
| | | import safeluck.drive.evaluation.util.SPUtils; |
| | | import safeluck.drive.evaluation.util.SystemUtil; |
| | | import safeluck.drive.evaluation.worker.MCUUpgradeWorker; |
| | | import safeluck.drive.evaluation.worker.TTSWorker; |
| | | |
| | | /** |
| | | * MyApplication2 |
| | |
| | | } |
| | | switch (cmd) { |
| | | case Constant.NDK_START: |
| | | sendVechileInfo(); |
| | | sendMapInfo(); |
| | | // sendVechileInfo(); |
| | | // sendMapInfo(); |
| | | OneTimeWorkRequest examStatausOutWorker = OneTimeWorkRequest.from(ExamStatusOutWorker.class); |
| | | OneTimeWorkRequest mcuUpgradeWorker = OneTimeWorkRequest.from(MCUUpgradeWorker.class); |
| | | WorkManager.getInstance(getApplicationContext()).beginWith(examStatausOutWorker).then(mcuUpgradeWorker).enqueue(); |
| | |
| | | case Constant.JUDGE_INFO: |
| | | |
| | | if(!TextUtils.isEmpty(json)){ |
| | | |
| | | Data judgeData = new Data.Builder().putString(Constant.TTS,json).build(); |
| | | OneTimeWorkRequest ttswoker = new OneTimeWorkRequest.Builder(TTSWorker.class).setInputData(judgeData).build(); |
| | | WorkManager.getInstance(getAppContext()).enqueue(ttswoker); |
| | | JsonArray jsonArray = JsonParser.parseString(json).getAsJsonArray(); |
| | | for (int i = 0; i < jsonArray.size(); i++) { |
| | | JsonObject jsonObject = jsonArray.get(i).getAsJsonObject(); |
| | |
| | | utc = utc.substring(2,utc.length()-3); |
| | | MyLog.i("评判消息解析之后的utc="+utc); |
| | | int sn = jsonObject.get("sn").getAsInt(); |
| | | if (ExamPlatformData.getInstance().getExamType()==2){//场地评判消息 |
| | | if (emp_id>31|| emp_id<0){ |
| | | MyLog.i(TAG,"emp_id超出范围不能插入数据库(I类考场)"); |
| | | return; |
| | | } |
| | | FailedProj failedProj = new FailedProj(Constant.SUBJECT_I, emp_id, Constant.TEST_STU_ID,utc,sn); |
| | | MyLog.i("插入fail_projects表="+failedProj.toString()); |
| | | failedProjRepository.insert(failedProj); |
| | | } |
| | | if (ExamPlatformData.getInstance().getExamType()>2){//道路 评判消息 |
| | | if (emp_id>66|| emp_id<1){ |
| | | MyLog.i(TAG,"emp_id超出范围不能插入数据库(路考类考场)"); |
| | | return; |
| | | } |
| | | FailedProj failedProj = new FailedProj(Constant.SUBJECT_III, emp_id, Constant.TEST_STU_ID,utc,sn); |
| | | MyLog.i("插入路考fail_projects表="+failedProj.toString()); |
| | | // if (ExamPlatformData.getInstance().getExamType()==2){//场地评判消息 |
| | | // if (emp_id>31|| emp_id<0){ |
| | | // MyLog.i(TAG,"emp_id超出范围不能插入数据库(I类考场)"); |
| | | // return; |
| | | // } |
| | | // FailedProj failedProj = new FailedProj(Constant.SUBJECT_I, emp_id, Constant.TEST_STU_ID,utc,sn); |
| | | // MyLog.i("插入fail_projects表="+failedProj.toString()); |
| | | // failedProjRepository.insert(failedProj); |
| | | } |
| | | // } |
| | | // if (ExamPlatformData.getInstance().getExamType()>2){//道路 评判消息 |
| | | // if (emp_id>66|| emp_id<1){ |
| | | // MyLog.i(TAG,"emp_id超出范围不能插入数据库(路考类考场)"); |
| | | // return; |
| | | // } |
| | | // LuKaoFailedProj failedProj = new LuKaoFailedProj(Constant.SUBJECT_III, emp_id, Constant.TEST_STU_ID,utc,sn); |
| | | // MyLog.i("插入路考fail_projects表="+failedProj.toString()); |
| | | // failedProjRepository.insertLuKao(failedProj); |
| | | // } |
| | | |
| | | } |
| | | } |
| | |
| | | Toast.makeText(getAppContext(), "读取Assert目录下初始化的地图", Toast.LENGTH_SHORT).show(); |
| | | } |
| | | }); |
| | | StringBuffer buffer =FileUtil.readAssetTxtFile(getApplicationContext(),Constant.ROAD_MAP); |
| | | StringBuffer buffer; |
| | | buffer =FileUtil.readAssetTxtFile(getApplicationContext(),Constant.ROAD_MAP); |
| | | if (buffer != null){ |
| | | |
| | | AYSdk.getInstance().sendCmd(Constant.PUSH_ROAD_MAP_INFO,buffer.toString()); |
| | |
| | | }); |
| | | |
| | | } |
| | | buffer =FileUtil.readAssetTxtFile(getApplicationContext(),Constant.MAP); |
| | | if (buffer != null){ |
| | | |
| | | AYSdk.getInstance().sendCmd(Constant.PUSH_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(); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | |
| | | mScoreAdapter.addDatas(mArrayList); |
| | | MyLog.i("item_score="+item_id); |
| | | } |
| | | //TODO 发送JKMessage0203 给平台,这儿有点复杂,看怎么处理 |
| | | sendJKMessage0203(failedProj_selects); |
| | | MyLog.i("没扣分之前得分:"+currTotalScore); |
| | | currTotalScore -=item_id; |
| | | MyLog.i("路考当前得分:"+currTotalScore); |
| | |
| | | mScoreAdapter.addDatas(mArrayList); |
| | | MyLog.i("item_score="+item_id); |
| | | } |
| | | //TODO 发送JKMessage0203 给平台,这儿有点复杂,看怎么处理 |
| | | sendJKMessage0203(failedProj_selects); |
| | | MyLog.i("没扣分之前得分:"+currTotalScore); |
| | | currTotalScore -=item_id; |
| | | MyLog.i("当前得分:"+currTotalScore); |
| | |
| | | return view; |
| | | } |
| | | private List<Integer> sns =new ArrayList<>(); |
| | | 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(); |
| | | |
| | | 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()); |
| | | sns.add(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(); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | MessageProcessor.getInstance().sendMessage(jkMessage0203); |
| | | } |
| | | |
| | | private boolean hasSnEqulas(int failedProjSn){ |
| | | if (sns.size() > 0){ |
| | | for (int j = 0; j < sns.size(); j++) { |
| | | MyLog.i("已存在的sn"+sns.get(j)); |
| | | if (sns.get(j) == failedProjSn){ |
| | | MyLog.i("sn相同,不发"+sns.get(j)); |
| | | return true; |
| | | }else{ |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | } |
| | | return false; |
| | | |
| | | } |
| | | |
| | | |
| | | private void initView(View view) { |
| | |
| | | MyLog.i("item_score="+item_id); |
| | | } |
| | | //TODO 发送JKMessage0203 给平台,这儿有点复杂,看怎么处理 |
| | | sendJKMessage0203(failedProj_selects); |
| | | // sendJKMessage0203(failedProj_selects); |
| | | MyLog.i("没扣分之前得分:"+currTotalScore); |
| | | currTotalScore -=item_id; |
| | | MyLog.i("当前得分:"+currTotalScore); |
| | |
| | | return view; |
| | | } |
| | | |
| | | 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(); |
| | | // 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(); |
| | | // |
| | | // 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; |
| | | }else{ |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | } |
| | | return false; |
| | | |
| | | } |
| | | // 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; |
| | | // } |
| | | // } |
| | | // |
| | | // } |
| | | // return false; |
| | | // |
| | | // } |
| | | |
| | | |
| | | |
| | |
| | | public void changKao() { |
| | | exam_type = 2; |
| | | iv_head.getDrawable().setLevel(1); |
| | | ExamPlatformData.getInstance().setExamType(exam_type); |
| | | examStatusViewModel.updateStartExam(exam_type); |
| | | sendExamJson(1,exam_type); |
| | | ExamPlatformData.getInstance().getTTS().speak("开始训练"); |
| | |
| | | @Override |
| | | public void luKao() { |
| | | exam_type = 3; |
| | | ExamPlatformData.getInstance().setExamType(exam_type); |
| | | examStatusViewModel.updateStartExam(exam_type); |
| | | sendExamJson(1,exam_type); |
| | | if (simulateNightBean == null){ |
| | | simulateNightBean = new SimulateNightBean(); |
| | | } |
| | | iv_head.getDrawable().setLevel(1); |
| | | simulateNightBean.setExam(0); |
| | | ExamPlatformData.getInstance().getTTS().speak("开始训练"); |
| | | ExamPlatformData.getInstance().setTrainingMode(true);//设置为训练模式 |
| | | final List<SimulateNightBean.QuestionBean> list = ExamPlatformData.getInstance().getSimulate_light_tips(); |
| | | simulateNightBean.setQuestion(list.subList(list.size()-2,list.size()-1)); |
| | | AYSdk.getInstance().sendCmd(0x8012,gson.toJson(simulateNightBean)); |
| | | jkMessage0202.curr_exam = 1; |
| | | |
| | | MessageProcessor.getInstance().sendMessage(jkMessage0202); |
| | | |
| | | tempQs.add(list.get(0)); |
| | | int [] a =Utils.getRandomInts(4,12); |
| | | for (int i = 0; i < a.length; i++) { |
| | | tempQs.add(list.get(a[i])); |
| | | } |
| | | |
| | | simulateNightBean.setQuestion(tempQs); |
| | | mHandler.postDelayed(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | AYSdk.getInstance().sendCmd(0x8012,gson.toJson(simulateNightBean)); |
| | | tempQs.clear(); |
| | | } |
| | | },10*1000); |
| | | |
| | | } |
| | | }); |
New file |
| | |
| | | package safeluck.drive.evaluation.worker |
| | | |
| | | import android.content.Context |
| | | import android.text.TextUtils |
| | | import androidx.work.Worker |
| | | import androidx.work.WorkerParameters |
| | | import com.anyun.exam.lib.MyLog |
| | | import com.google.gson.Gson |
| | | import com.google.gson.JsonParser |
| | | import safeluck.drive.evaluation.Constant |
| | | import safeluck.drive.evaluation.DB.WorkRoomDataBase |
| | | import safeluck.drive.evaluation.DB.failitems.FailedProj |
| | | import safeluck.drive.evaluation.DB.failitems.LuKaoFailedProj |
| | | import safeluck.drive.evaluation.bean.ExamPlatformData |
| | | import safeluck.drive.evaluation.im.MessageProcessor |
| | | import safeluck.drive.evaluation.platformMessage.JKMessage0203 |
| | | |
| | | /** |
| | | * 一收到远程服务给的评判消息 |
| | | * 实现插入科二、科三失败项目表 |
| | | * 播放tts |
| | | * 发送0203评判消息给服务器 |
| | | */ |
| | | class TTSWorker(context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) { |
| | | var gson:Gson =Gson() |
| | | override fun doWork(): Result { |
| | | val jkMessage0203 = JKMessage0203() |
| | | jkMessage0203.phone = ExamPlatformData.getInstance().phone |
| | | jkMessage0203.ID = ExamPlatformData.getInstance().id |
| | | jkMessage0203.exam_id = ExamPlatformData.getInstance().exam_id |
| | | var ttsInput = inputData.getString(Constant.TTS); |
| | | |
| | | |
| | | val jsonArray = JsonParser.parseString(ttsInput).asJsonArray |
| | | |
| | | 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") |
| | | utc = utc.substring(2, utc.length - 3) |
| | | MyLog.i("评判消息解析之后的utc=$utc") |
| | | val sn = jsonObject["sn"].asInt |
| | | |
| | | if (emp_id>1000){ |
| | | var ttsStr=WorkRoomDataBase.getWorkRoomDataBase(applicationContext).criteriaIIIDao.queryItemForCriteriaIIINoLive(emp_id-1000) |
| | | ExamPlatformData.getInstance().tts.speak(ttsStr.getDeducting_reason() + if (ttsStr.getScore_deducting() == 100) "不合格" else "扣" + |
| | | ttsStr.getScore_deducting() + "分") |
| | | jkMessage0203.fail_item_id = ttsStr.item_id |
| | | jkMessage0203.fail_score = ttsStr.score_deducting |
| | | jkMessage0203.fail_reason = ttsStr.deducting_reason |
| | | }else{ |
| | | var ttsStr=WorkRoomDataBase.getWorkRoomDataBase(applicationContext).criteriaIDao.queryItemForCriteriaINoLive(emp_id) |
| | | ExamPlatformData.getInstance().tts.speak(ttsStr.getDeducting_reason() + if (ttsStr.getScore_deducting() == 100) "不合格" else "扣" + |
| | | ttsStr.getScore_deducting() + "分") |
| | | jkMessage0203.fail_item_id =ttsStr.item_id |
| | | jkMessage0203.fail_score = ttsStr.score_deducting |
| | | jkMessage0203.fail_reason = ttsStr.deducting_reason |
| | | } |
| | | |
| | | |
| | | if (!TextUtils.isEmpty(utc) && utc.length > 12) { |
| | | utc = utc.substring(0, 12) |
| | | } |
| | | jkMessage0203.timeBCD = utc |
| | | |
| | | |
| | | MessageProcessor.getInstance().sendMessage(jkMessage0203) |
| | | |
| | | |
| | | |
| | | 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("插入路考fail_projects表=$failedProj") |
| | | WorkRoomDataBase.getWorkRoomDataBase(applicationContext).luKaoFailProjDao.insert(failedProj) |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | return Result.success() |
| | | } |
| | | } |