endian11
2019-11-26 dd4274ea8917c3b207cd11c1c9bbf624b74cb7c7
科目二 I类考场录入数据库;""为什么会解析成double
1个文件已修改
8个文件已添加
542 ■■■■■ 已修改文件
app/src/main/assets/criteria_I.json 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/Constant.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriaForI.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriaForII.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriaForIWorker.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriaIDao.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriasRepository.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/criterias/viewmodel/CriteriaIViewModel.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/assets/criteria_I.json
New file
@@ -0,0 +1,202 @@
[
  {
    "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"
  }
]
app/src/main/java/safeluck/drive/evaluation/DB/Constant.java
New file
@@ -0,0 +1,11 @@
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";
}
app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java
@@ -14,6 +14,10 @@
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
@@ -21,17 +25,18 @@
 * 邮箱: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){
@@ -41,8 +46,10 @@
                                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();
app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriaForI.java
New file
@@ -0,0 +1,90 @@
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 + '\'' +
                '}';
    }
}
app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriaForII.java
New file
@@ -0,0 +1,39 @@
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;
}
app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriaForIWorker.java
New file
@@ -0,0 +1,57 @@
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();
    }
}
app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriaIDao.java
New file
@@ -0,0 +1,29 @@
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);
}
app/src/main/java/safeluck/drive/evaluation/DB/criterias/CriteriasRepository.java
New file
@@ -0,0 +1,59 @@
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();
    }
}
app/src/main/java/safeluck/drive/evaluation/DB/criterias/viewmodel/CriteriaIViewModel.java
New file
@@ -0,0 +1,42 @@
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);
    }
}