科目二 I类考场录入数据库;""为什么会解析成double
New file |
| | |
| | | [ |
| | | { |
| | | "item_id":1, |
| | | "item_content": "通用要求", |
| | | "deducting_reason": "不按规定使用安全带", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, |
| | | { |
| | | "item_id":2, |
| | | "item_content": "通用要求", |
| | | "deducting_reason": "不按考试员指令驾驶", |
| | | "score_deducting":100, |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":3, |
| | | "item_content": "通用要求", |
| | | "deducting_reason": "启动发动机时档位未置于空挡(驻车档)", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, |
| | | { |
| | | "item_id":4, |
| | | "item_content": "通用要求", |
| | | "deducting_reason": "发动机启动后,不及时松开启动开关", |
| | | "score_deducting":10, |
| | | "required_precision":"时间大于2s,时间检测误差:0s~0.5s" |
| | | }, |
| | | { |
| | | "item_id":5, |
| | | "item_content": "通用要求", |
| | | "deducting_reason": "因操作不当造成发动机熄火一次", |
| | | "score_deducting":10, |
| | | "required_precision":"5" |
| | | }, |
| | | { |
| | | "item_id":6, |
| | | "item_content": "倒车入库", |
| | | "deducting_reason": "不按规定路线、顺序行驶", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, |
| | | { |
| | | "item_id":7, |
| | | "item_content": "倒车入库", |
| | | "deducting_reason": "车身出线", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, |
| | | { |
| | | "item_id":8, |
| | | "item_content": "倒车入库", |
| | | "deducting_reason": "倒库不入", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, |
| | | { |
| | | "item_id":9, |
| | | "item_content": "倒车入库", |
| | | "deducting_reason": "在倒车前,未将两个前轮触地点均驶过控制线", |
| | | "score_deducting":100, |
| | | "required_precision":"" |
| | | }, |
| | | { |
| | | "item_id":10, |
| | | "item_content": "倒车入库", |
| | | "deducting_reason": "项目完成时间超过210s", |
| | | "score_deducting":100, |
| | | "required_precision":"5f" |
| | | }, |
| | | { |
| | | "item_id":11, |
| | | "item_content": "倒车入库", |
| | | "deducting_reason": "中途停车时间超过2s", |
| | | "score_deducting":100, |
| | | "score_deducting":"5" |
| | | }, |
| | | { |
| | | "item_id":12, |
| | | "item_content": "坡道定点停车和起步", |
| | | "deducting_reason": "车辆停止后,汽车前保险杠未定于桩杆线上,且前后超出50cm", |
| | | "score_deducting":100, |
| | | "required_precision":"df" |
| | | }, |
| | | { |
| | | "item_id":13, |
| | | "item_content": "坡道定点停车和起步", |
| | | "deducting_reason": "行驶中车轮轧道路边缘线", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, |
| | | { |
| | | "item_id":14, |
| | | "item_content": "坡道定点停车和起步", |
| | | "deducting_reason": "车辆停止后,车身距离路边缘线超出50cm", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | } , { |
| | | "item_id":15, |
| | | "item_content": "坡道定点停车和起步", |
| | | "deducting_reason": "车辆停止后,起步时间超过30s", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, { |
| | | "item_id":16, |
| | | "item_content": "坡道定点停车和起步", |
| | | "deducting_reason": "起步时车辆后溜距离大于30cm", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, { |
| | | "item_id":17, |
| | | "item_content": "坡道定点停车和起步", |
| | | "deducting_reason": "车辆停止后,汽车前保险杠未定于桩杆线上,且前后不超出50cm", |
| | | "score_deducting":10, |
| | | "required_precision":"5" |
| | | }, { |
| | | "item_id":18, |
| | | "item_content": "坡道定点停车和起步", |
| | | "deducting_reason": "车辆停止后,车身距离路边缘线超出30cm,未超出50cm", |
| | | "score_deducting":10, |
| | | "required_precision":"5" |
| | | }, { |
| | | "item_id":19, |
| | | "item_content": "坡道定点停车和起步", |
| | | "deducting_reason": "停车后未拉紧驻车制动器", |
| | | "score_deducting":10, |
| | | "required_precision":"5" |
| | | }, { |
| | | "item_id":20, |
| | | "item_content": "坡道定点停车和起步", |
| | | "deducting_reason": "起步时车辆后溜距离10cm~30cm", |
| | | "score_deducting":10, |
| | | "required_precision":"5" |
| | | }, { |
| | | "item_id":21, |
| | | "item_content": "侧方停车", |
| | | "deducting_reason": "车辆入库停止后,车身出线", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, { |
| | | "item_id":22, |
| | | "item_content": "侧方停车", |
| | | "deducting_reason": "项目完成时间超过90s", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, { |
| | | "item_id":23, |
| | | "item_content": "侧方停车", |
| | | "deducting_reason": "行驶中车轮触轧车道边线", |
| | | "score_deducting":10, |
| | | "required_precision":"5" |
| | | }, { |
| | | "item_id":24, |
| | | "item_content": "侧方停车", |
| | | "deducting_reason": "行驶中车身触碰库位边线", |
| | | "score_deducting":10, |
| | | "required_precision":"5" |
| | | }, { |
| | | "item_id":25, |
| | | "item_content": "侧方停车", |
| | | "deducting_reason": "出库时不使用或错误使用转向灯", |
| | | "score_deducting":10, |
| | | "required_precision":"5" |
| | | }, { |
| | | "item_id":26, |
| | | "item_content": "侧方停车", |
| | | "deducting_reason": "中途停车时间超过2s", |
| | | "score_deducting":5, |
| | | "required_precision":"trew" |
| | | }, { |
| | | "item_id":27, |
| | | "item_content": "曲线行驶", |
| | | "deducting_reason": "车轮轧道路边缘线", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, { |
| | | "item_id":28, |
| | | "item_content": "曲线行驶", |
| | | "deducting_reason": "中途停车时间超过2s", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, { |
| | | "item_id":29, |
| | | "item_content": "直线转弯", |
| | | "deducting_reason": "车轮轧道路边缘线", |
| | | "score_deducting":100, |
| | | "required_precision":"5" |
| | | }, { |
| | | "item_id":30, |
| | | "item_content": "直线转弯", |
| | | "deducting_reason": "转弯时不使用或错误使用转向灯,转完后不关闭转向灯", |
| | | "score_deducting":10, |
| | | "required_precision":"5" |
| | | }, { |
| | | "item_id":31, |
| | | "item_content": "直线转弯", |
| | | "deducting_reason": "中途停车时间超过2s", |
| | | "score_deducting":5, |
| | | "required_precision":"5" |
| | | } |
| | | ] |
New file |
| | |
| | | package safeluck.drive.evaluation.DB; |
| | | |
| | | /** |
| | | * MyApplication2 |
| | | * Created by lzw on 2019/11/26. 12:01:53 |
| | | * 邮箱:632393724@qq.com |
| | | * All Rights Saved! Chongqing AnYun Tech co. LTD |
| | | */ |
| | | public class Constant { |
| | | public static final String CRITERIAFOR_I_JSON = "criteria_I.json"; |
| | | } |
| | |
| | | import java.util.concurrent.ExecutorService; |
| | | import java.util.concurrent.Executors; |
| | | |
| | | import safeluck.drive.evaluation.DB.criterias.CriteriaForI; |
| | | import safeluck.drive.evaluation.DB.criterias.CriteriaForIWorker; |
| | | import safeluck.drive.evaluation.DB.criterias.CriteriaIDao; |
| | | |
| | | |
| | | /** |
| | | * MyApplication2 |
| | |
| | | * 邮箱:632393724@qq.com |
| | | * All Rights Saved! Chongqing AnYun Tech co. LTD |
| | | */ |
| | | @Database(entities = {Student.class},version = 1,exportSchema = false) |
| | | @Database(entities = {Student.class, CriteriaForI.class},version = 1,exportSchema = false) |
| | | public abstract class WorkRoomDataBase extends RoomDatabase { |
| | | private static final String TAG = "WorkRoomDataBase"; |
| | | public abstract StudentDao getstudentDao(); |
| | | public abstract CriteriaIDao getCriteriaIDao(); |
| | | private static volatile WorkRoomDataBase workRoomDataBase; |
| | | |
| | | private static final int NUMBER_OF_THREADS = 4; |
| | | |
| | | static final ExecutorService dataBaseWriteExecutor = Executors.newFixedThreadPool(NUMBER_OF_THREADS); |
| | | public static final ExecutorService dataBaseWriteExecutor = Executors.newFixedThreadPool(NUMBER_OF_THREADS); |
| | | |
| | | static WorkRoomDataBase getWorkRoomDataBase(final Context mContext){ |
| | | public static WorkRoomDataBase getWorkRoomDataBase(final Context mContext){ |
| | | if (workRoomDataBase == null){ |
| | | synchronized (WorkRoomDataBase.class){ |
| | | if (workRoomDataBase == null){ |
| | |
| | | public void onCreate(@NonNull SupportSQLiteDatabase db) { |
| | | super.onCreate(db); |
| | | OneTimeWorkRequest oneTimeWorkRequest = OneTimeWorkRequest.from(SeedDatabaseWorker.class); |
| | | OneTimeWorkRequest oneTimeWorkRequest1 = OneTimeWorkRequest.from(CriteriaForIWorker.class); |
| | | Log.i(TAG, "onCreate: 创建数据库后建立数据表插入数据"); |
| | | WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest); |
| | | WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest1); |
| | | } |
| | | }) |
| | | .build(); |
New file |
| | |
| | | package safeluck.drive.evaluation.DB.criterias; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.room.ColumnInfo; |
| | | import androidx.room.Entity; |
| | | import androidx.room.PrimaryKey; |
| | | |
| | | /** |
| | | * MyApplication2 |
| | | * Created by lzw on 2019/11/26. 10:15:55 |
| | | * 邮箱:632393724@qq.com |
| | | * All Rights Saved! Chongqing AnYun Tech co. LTD |
| | | * |
| | | * 科目二 I类考场评判标准表 |
| | | */ |
| | | @Entity(tableName = "criteria_one") |
| | | public class CriteriaForI { |
| | | /************** |
| | | * item_id item_content deducting_reason score_deducting required _precision |
| | | 23 起步 车门未完全关闭起步 不合格 行驶距离大于1m 时 |
| | | **************/ |
| | | @PrimaryKey |
| | | @ColumnInfo(name = "item_id") |
| | | @NonNull |
| | | private int item_id; |
| | | |
| | | @ColumnInfo(name = "item_content") |
| | | private String item_content; |
| | | |
| | | @ColumnInfo(name = "deducting_reason") |
| | | private String deducting_reason; |
| | | |
| | | |
| | | @NonNull @ColumnInfo(name = "score_deducting") |
| | | private int score_deducting; |
| | | |
| | | @ColumnInfo(name = "required_precision") |
| | | private String required_precision; |
| | | |
| | | public int getItem_id() { |
| | | return item_id; |
| | | } |
| | | |
| | | public void setItem_id(int item_id) { |
| | | this.item_id = item_id; |
| | | } |
| | | |
| | | public String getItem_content() { |
| | | return item_content; |
| | | } |
| | | |
| | | public void setItem_content(String item_content) { |
| | | this.item_content = item_content; |
| | | } |
| | | |
| | | public String getDeducting_reason() { |
| | | return deducting_reason; |
| | | } |
| | | |
| | | public void setDeducting_reason(String deducting_reason) { |
| | | this.deducting_reason = deducting_reason; |
| | | } |
| | | |
| | | public int getScore_deducting() { |
| | | return score_deducting; |
| | | } |
| | | |
| | | public void setScore_deducting(int score_deducting) { |
| | | this.score_deducting = score_deducting; |
| | | } |
| | | |
| | | public String getRequired_precision() { |
| | | return required_precision; |
| | | } |
| | | |
| | | public void setRequired_precision(String required_precision) { |
| | | this.required_precision = required_precision; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "CriteriaForI{" + |
| | | "item_id=" + item_id + |
| | | ", item_content='" + item_content + '\'' + |
| | | ", deducting_reason='" + deducting_reason + '\'' + |
| | | ", score_deducting=" + score_deducting + |
| | | ", required_precision='" + required_precision + '\'' + |
| | | '}'; |
| | | } |
| | | } |
New file |
| | |
| | | package safeluck.drive.evaluation.DB.criterias; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.room.ColumnInfo; |
| | | import androidx.room.Entity; |
| | | import androidx.room.PrimaryKey; |
| | | |
| | | /** |
| | | * MyApplication2 |
| | | * Created by lzw on 2019/11/26. 10:15:55 |
| | | * 邮箱:632393724@qq.com |
| | | * All Rights Saved! Chongqing AnYun Tech co. LTD |
| | | * |
| | | * 科目二 II类考场评判标准表 |
| | | */ |
| | | @Entity(tableName = "criteria_two") |
| | | public class CriteriaForII { |
| | | /************** |
| | | * item_id item_content deducting_reason score_deducting required _precision |
| | | 23 起步 车门未完全关闭起步 不合格 行驶距离大于1m 时 |
| | | **************/ |
| | | @PrimaryKey |
| | | @ColumnInfo(name = "item_id") |
| | | @NonNull |
| | | private int item_id; |
| | | |
| | | @ColumnInfo(name = "item_content") |
| | | private String item_content; |
| | | |
| | | @ColumnInfo(name = "deducting_reason") |
| | | private String deducting_reason; |
| | | |
| | | |
| | | @NonNull @ColumnInfo(name = "score_deducting") |
| | | private int score_deducting; |
| | | |
| | | @ColumnInfo(name = "required_precision") |
| | | private String required_precision; |
| | | } |
New file |
| | |
| | | package safeluck.drive.evaluation.DB.criterias; |
| | | |
| | | import android.content.Context; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.work.Worker; |
| | | import androidx.work.WorkerParameters; |
| | | |
| | | import com.anyun.exam.lib.MyLog; |
| | | import com.google.gson.Gson; |
| | | import com.google.gson.reflect.TypeToken; |
| | | import com.google.gson.stream.JsonReader; |
| | | |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.io.InputStreamReader; |
| | | import java.lang.reflect.Type; |
| | | import java.util.List; |
| | | |
| | | import safeluck.drive.evaluation.DB.Constant; |
| | | import safeluck.drive.evaluation.DB.WorkRoomDataBase; |
| | | |
| | | /** |
| | | * MyApplication2 |
| | | * Created by lzw on 2019/11/26. 11:59:25 |
| | | * 邮箱:632393724@qq.com |
| | | * All Rights Saved! Chongqing AnYun Tech co. LTD |
| | | */ |
| | | public class CriteriaForIWorker extends Worker { |
| | | |
| | | private static final String TAG = "CriteriaForIWorker"; |
| | | |
| | | public CriteriaForIWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) { |
| | | super(context, workerParams); |
| | | } |
| | | |
| | | @NonNull |
| | | @Override |
| | | public Result doWork() { |
| | | InputStream inputStream = null; |
| | | try { |
| | | inputStream = getApplicationContext().getAssets() |
| | | .open(Constant.CRITERIAFOR_I_JSON); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | InputStreamReader inputStreamReader = new InputStreamReader(inputStream); |
| | | JsonReader jsonReader = new JsonReader(inputStreamReader); |
| | | Gson gson = new Gson(); |
| | | Type type = new TypeToken<List<CriteriaForI>>(){}.getType(); |
| | | |
| | | List<CriteriaForI> criteriaForIS = gson.fromJson(jsonReader,type); |
| | | MyLog.i(TAG,"插入科目二,I类考场评判表"); |
| | | WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getCriteriaIDao().insertAllCriteriaI(criteriaForIS); |
| | | return Result.success(); |
| | | } |
| | | } |
New file |
| | |
| | | package safeluck.drive.evaluation.DB.criterias; |
| | | |
| | | 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. 11:12:18 |
| | | * 邮箱:632393724@qq.com |
| | | * All Rights Saved! Chongqing AnYun Tech co. LTD |
| | | */ |
| | | @Dao |
| | | public interface CriteriaIDao { |
| | | @Insert(onConflict = OnConflictStrategy.IGNORE) |
| | | void insertCriteriaI(CriteriaForI criteriaForI); |
| | | |
| | | @Insert(onConflict = OnConflictStrategy.REPLACE) |
| | | void insertAllCriteriaI(List<CriteriaForI> criteriaForI); |
| | | |
| | | @Query( "SELECT * FROM criteria_one WHERE item_id =:item_id") |
| | | LiveData<CriteriaForI > queryItemForCriteriaI(int item_id); |
| | | } |
New file |
| | |
| | | package safeluck.drive.evaluation.DB.criterias; |
| | | |
| | | import android.app.Application; |
| | | |
| | | import androidx.lifecycle.LiveData; |
| | | |
| | | import java.util.List; |
| | | |
| | | import safeluck.drive.evaluation.DB.WorkRoomDataBase; |
| | | |
| | | /** |
| | | * MyApplication2 |
| | | * Created by lzw on 2019/11/26. 11:22:09 |
| | | * 邮箱:632393724@qq.com |
| | | * All Rights Saved! Chongqing AnYun Tech co. LTD |
| | | */ |
| | | public class CriteriasRepository { |
| | | |
| | | |
| | | CriteriaIDao mCriteriaIDao; |
| | | |
| | | public void insertCriteriaI(final CriteriaForI criteriaForI){ |
| | | WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | mCriteriaIDao.insertCriteriaI(criteriaForI); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | public void insertCriteriaIs(final List<CriteriaForI> criteriaForIs){ |
| | | WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | mCriteriaIDao.insertAllCriteriaI(criteriaForIs); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 查询某项评判标准 |
| | | * @param item_id |
| | | * @return |
| | | */ |
| | | public LiveData<CriteriaForI> queryItemForCriteriaI(final int item_id){ |
| | | return mCriteriaIDao.queryItemForCriteriaI(item_id); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * CriteriasRepository构造函数 |
| | | * @param application |
| | | */ |
| | | public CriteriasRepository(Application application) { |
| | | this.mCriteriaIDao = WorkRoomDataBase.getWorkRoomDataBase(application).getCriteriaIDao(); |
| | | } |
| | | } |
New file |
| | |
| | | package safeluck.drive.evaluation.DB.criterias.viewmodel; |
| | | |
| | | import android.app.Application; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.lifecycle.AndroidViewModel; |
| | | import androidx.lifecycle.LiveData; |
| | | |
| | | import java.util.List; |
| | | |
| | | import safeluck.drive.evaluation.DB.criterias.CriteriaForI; |
| | | import safeluck.drive.evaluation.DB.criterias.CriteriasRepository; |
| | | |
| | | /** |
| | | * MyApplication2 |
| | | * Created by lzw on 2019/11/26. 11:48:42 |
| | | * 邮箱:632393724@qq.com |
| | | * All Rights Saved! Chongqing AnYun Tech co. LTD |
| | | */ |
| | | public class CriteriaIViewModel extends AndroidViewModel { |
| | | |
| | | CriteriasRepository mCriteriasRep; |
| | | LiveData<CriteriaForI> criteriaI; |
| | | |
| | | public CriteriaIViewModel(@NonNull Application application) { |
| | | super(application); |
| | | mCriteriasRep = new CriteriasRepository(application); |
| | | } |
| | | |
| | | public LiveData<CriteriaForI> getItemForCriteriaI(int item_id){ |
| | | criteriaI = mCriteriasRep.queryItemForCriteriaI(item_id); |
| | | return criteriaI; |
| | | } |
| | | |
| | | public void insertCriteriaIs(List<CriteriaForI> cs){ |
| | | mCriteriasRep.insertCriteriaIs(cs); |
| | | } |
| | | |
| | | public void insertCriteriaI(CriteriaForI c){ |
| | | mCriteriasRep.insertCriteriaI(c); |
| | | } |
| | | } |