endian11
2019-11-27 f6db8471b64ad5c7a67df3a4f6224a193c11d5ad
提交失败项目相关数据库表;目前FailProj会导致崩溃
6个文件已修改
2个文件已添加
133 ■■■■ 已修改文件
app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjRepository.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjViewModel.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjWorker.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj_select.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailProjDao.java
@@ -19,9 +19,19 @@
    @Insert
    void insert(FailedProj proj);
    @Query("SELECT emp_id,deducting_reason,score_deducting,item_content from criteria_one INNER JOIN fail_projects ON  criteria_one.item_id=fail_projects.emp_id")
    /**
     * 查询 科目二 I类考场的失败项目 (多表查询)
     * 如果要添加 科目二II   III类考场失败项目,需要建立相应的评判标准表数据表
     * @return
     */
    @Query("SELECT emp_id,deducting_reason,score_deducting,item_content from criteria_one INNER JOIN fail_projects ON  criteria_one.item_id= fail_projects.emp_id")
    LiveData<List<FailedProj_select>> getFailedProjects();
    /**
     * 获取失败项目条数
     * @param subject_id
     * @return
     */
    @Query("SELECT COUNT(*)  from fail_projects where subject=:subject_id")
    LiveData<Integer> getSubject(int subject_id);
}
app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj.java
@@ -18,22 +18,27 @@
 * All Rights Saved! Chongqing AnYun Tech co. LTD
 */
@Entity(tableName = "fail_projects",foreignKeys = @ForeignKey(entity = CriteriaForI.class,
parentColumns = "item_id",childColumns = "emp_id",onDelete = CASCADE),indices=@Index(value="emp_id"))
parentColumns = "item_id",childColumns = "emp_id"))
public class FailedProj {
    @PrimaryKey(autoGenerate = true)
    private int id;
    @ColumnInfo(name = "subject")
    private int  subject;
    //作为外键,对应I类考场的item_id
    @ColumnInfo(name = "emp_id")
    private int emp_id;//作为外键,对应I类考场的item_id
    private int emp_id;
    public FailedProj(int subject, int emp_id) {
        this.subject = subject;
        this.emp_id = emp_id;
    }
    public int getId() {
        return id;
    }
app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjRepository.java
New file
@@ -0,0 +1,41 @@
package safeluck.drive.evaluation.DB.failitems;
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/27. 10:43:21
 * 邮箱:632393724@qq.com
 * All Rights Saved! Chongqing AnYun Tech co. LTD
 */
public class FailedProjRepository {
    private FailProjDao failProjDao;
    public FailedProjRepository(Application application) {
        WorkRoomDataBase dataBase = WorkRoomDataBase.getWorkRoomDataBase(application);
        failProjDao = dataBase.getFailProjDao();
    }
    public void insert(final FailedProj proj){
        WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() {
            @Override
            public void run() {
                failProjDao.insert(proj);
            }
        });
    }
    public LiveData<List<FailedProj_select>> getFailedProjects() {
        return failProjDao.getFailedProjects();
    }
}
app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjViewModel.java
New file
@@ -0,0 +1,32 @@
package safeluck.drive.evaluation.DB.failitems;
import android.app.Application;
import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import java.util.List;
/**
 * MyApplication2
 * Created by lzw on 2019/11/27. 10:42:32
 * 邮箱:632393724@qq.com
 * All Rights Saved! Chongqing AnYun Tech co. LTD
 */
public class FailedProjViewModel extends AndroidViewModel {
    FailedProjRepository failedProjRepository;
    public FailedProjViewModel(@NonNull Application application) {
        super(application);
        failedProjRepository = new FailedProjRepository(application);
    }
    public  LiveData<List<FailedProj_select>> getFailedProjects(){
           return failedProjRepository.getFailedProjects();
    }
    public void insert(FailedProj proj){
        failedProjRepository.insert(proj);
    }
}
app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProjWorker.java
@@ -6,6 +6,8 @@
import androidx.work.Worker;
import androidx.work.WorkerParameters;
import com.anyun.exam.lib.MyLog;
import safeluck.drive.evaluation.DB.WorkRoomDataBase;
/**
@@ -16,6 +18,9 @@
 */
public class FailedProjWorker extends Worker {
    private static final String TAG= "FailedProjWorker";
    public FailedProjWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
        super(context, workerParams);
    }
@@ -23,6 +28,7 @@
    @NonNull
    @Override
    public Result doWork() {
        MyLog.i(TAG,"预置一条失败项目");
        WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getFailProjDao().insert(new FailedProj(1,5));
        return Result.success();
    }
app/src/main/java/safeluck/drive/evaluation/DB/failitems/FailedProj_select.java
@@ -1,5 +1,7 @@
package safeluck.drive.evaluation.DB.failitems;
import androidx.room.ColumnInfo;
/**
 * MyApplication2
 * Created by lzw on 2019/11/26. 18:22:03
@@ -8,6 +10,7 @@
 */
public class FailedProj_select {
    @ColumnInfo(name = "emp_id")
    private int emp_id;
    private String item_content;
    private String deducting_reason;
app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
@@ -20,6 +20,7 @@
import com.google.android.material.textfield.TextInputEditText;
import java.util.List;
import java.util.Random;
import me.yokeyword.fragmentation.SupportFragment;
import safeluck.drive.evaluation.DB.Student;
@@ -91,7 +92,7 @@
                    @Override
                    public void run() {
                WorkRoomDataBase.getWorkRoomDataBase(getContext().getApplicationContext()).getFailProjDao().insert(new FailedProj(1,4));
                WorkRoomDataBase.getWorkRoomDataBase(getContext().getApplicationContext()).getFailProjDao().insert(new FailedProj(1, new Random(30).nextInt()+1));
                    }
                });
app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -21,6 +21,7 @@
import safeluck.drive.evaluation.DB.Student;
import safeluck.drive.evaluation.DB.WokViewModel;
import safeluck.drive.evaluation.DB.WorkRoomDataBase;
import safeluck.drive.evaluation.DB.failitems.FailedProjViewModel;
import safeluck.drive.evaluation.DB.failitems.FailedProj_select;
import safeluck.drive.evaluation.R;
import safeluck.drive.evaluation.adapter.ScoreAdapter;
@@ -49,7 +50,7 @@
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    public View onCreateView(@NonNull final LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.layout_train_fragment,container,false);
        initView(view);
@@ -65,25 +66,19 @@
        });
        WorkRoomDataBase.getWorkRoomDataBase(getContext().getApplicationContext()).getFailProjDao().getSubject(1).observe(this, new Observer<Integer>() {
        FailedProjViewModel failedProjViewModel =ViewModelProviders.of(this).get(FailedProjViewModel.class);
        failedProjViewModel.getFailedProjects().observe(this, new Observer<List<FailedProj_select>>() {
            @Override
            public void onChanged(Integer integers) {
            public void onChanged(List<FailedProj_select> failedProj_selects) {
                item_id = 0;
                WorkRoomDataBase.getWorkRoomDataBase(getContext().getApplicationContext()).getFailProjDao().getFailedProjects().observe(TrainFragment.this, new Observer<List<FailedProj_select>>() {
                    @Override
                    public void onChanged(List<FailedProj_select> failedProj_selects) {
                        for (FailedProj_select f :
                                failedProj_selects) {
                            item_id += f.getScore_deducting();
                            Log.i(TAG, "onChanged: "+f.toString());
                            Toast.makeText(getActivity().getApplicationContext(),"得分"+item_id,Toast.LENGTH_SHORT).show();
                        }
                    }
                });
                for (FailedProj_select f :
                        failedProj_selects) {
                    item_id += f.getScore_deducting();
                    Log.i(TAG, "onChanged: "+f.toString());
                    Toast.makeText(getActivity().getApplicationContext(),"得分"+item_id,Toast.LENGTH_SHORT).show();
                }
            }
        });
        Log.i(TAG, "总扣分:"+item_id);
        return view;
    }