endian11
2020-09-21 8eef2d05a5e785ec0728e9ccbf8f9c4f672409cb
路口选择情况下,不断的重复路口采集的话给出提示是否覆盖以前
4个文件已修改
96 ■■■■ 已修改文件
app/src/main/java/safeluck/drive/evaluation/DB/route/RouteCrossDao.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/route/RouteLineRepository.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/route/RouteLineViewModel.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/route/RouteCrossDao.java
@@ -23,4 +23,7 @@
    @Query("DELETE FROM RouteCross where routeline_id=:id")
    void deleteRouteCross(int id);
    @Query("UPDATE RouteCross SET active =:active where routeline_id=:id and road =:road and idx=:idx ")
    void updateRouteCrossActive(int id, int road, int idx,int active);
}
app/src/main/java/safeluck/drive/evaluation/DB/route/RouteLineRepository.java
@@ -84,4 +84,10 @@
            }
        });
    }
    public void updateRouteCrossActive(int id, int road, int idx,int active) {
        WorkRoomDataBase.dataBaseWriteExecutor.execute(()->{
            routeCrossDao.updateRouteCrossActive(id,road,idx,active);
        });
    }
}
app/src/main/java/safeluck/drive/evaluation/DB/route/RouteLineViewModel.java
@@ -10,6 +10,7 @@
import safeluck.drive.evaluation.DB.Student;
import safeluck.drive.evaluation.DB.WorkRepository;
import safeluck.drive.evaluation.routecollect.bean.RoadCrossInfo;
/**
 * MyApplication2
@@ -52,4 +53,12 @@
    public void updateCurrCollectFlag(String name) {
        workRepository.updateCurrCollectFlag(name);
    }
    public List<RouteCross> getRoadCrosses(int id) {
        return workRepository.getAllRouteCross(id);
    }
    public void updateRouteCrossActive(int id, int road, int idx,int active) {
        workRepository.updateRouteCrossActive(id,road,idx,active);
    }
}
app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -73,6 +73,7 @@
import safeluck.drive.evaluation.cEventCenter.CEventCenter;
import safeluck.drive.evaluation.cEventCenter.ICEventListener;
import safeluck.drive.evaluation.customview.MyDialog;
import safeluck.drive.evaluation.customview.MyInputDialog;
import safeluck.drive.evaluation.customview.QRCodeDialog;
import safeluck.drive.evaluation.customview.SelectDialog;
@@ -1165,27 +1166,77 @@
            //道路信息是没有进行本地保存的,如果崩溃的话,就有问题
            stringBuilder.append(String.format("道路信息%s",roadInfo.toString()));
            stringBuilder.append("\n");
        ExamPlatformData.getInstance().getTTS().speak(String.format("%s%d路",roadInfo.getStatus()==1?"进入":"退出",
                roadInfo.getRoad_id()));
            showRouteCollectInfoText();
    }
    SelectDialogThree roadCrossDialog;
    //标记是否已经插入了该路口方向 已经插入=true
    private boolean hasInsertRoadCrossDirect = false;
    @Override
    public void roadcrossInfo(RoadCrossInfo roadCrossInfo) {
        Log.i(TAG,String.format("道路路口信息%s",roadCrossInfo.toString()));
        stringBuilder.append(String.format("道路路口信息%s",roadCrossInfo.toString()));
        stringBuilder.append("\n");
        showRouteCollectInfoText();
        CThreadPoolExecutor.runInBackground(new Runnable() {
            @Override
            public void run() {
                ExamPlatformData.getInstance().getTTS().speak(String.format("%s%d号路第%d个路口",roadCrossInfo.getStatus()==1?"进入":"退出",
                        roadCrossInfo.getRoad_id(),roadCrossInfo.getCrossing_index()+1));
                if (roadCrossInfo.getStatus() == 1){
                    List<RouteCross> roadCrosses = routeLineViewModel.getRoadCrosses(currRouteBean.getId());
                routeCross = new RouteCross();
                routeCross.setRouteline_id(currRouteBean.getId());
                routeCross.setRoad(roadCrossInfo.getRoad_id());
                routeCross.setIdx(roadCrossInfo.getCrossing_index());
                if (roadCrossInfo.getStatus() == 1){
                    CThreadPoolExecutor.runOnMainThread(new Runnable() {
                        @Override
                        public void run() {
                            for (RouteCross routeCross:roadCrosses){
                                if (routeCross.getIdx()==roadCrossInfo.getCrossing_index()&&routeCross.getRoad()==roadCrossInfo.getRoad_id()){
                                    Log.i(TAG,"该路口已经选择了行驶方向,确定要覆盖以前?");
                                    MyDialog myDialog = MyDialog.Companion.newInstance("该路口已经选择了行驶方向,确定要覆盖以前?");
                                    hasInsertRoadCrossDirect = true;
                                    myDialog.setOnClick(new MyDialog.MyOnClickListener() {
                                        @Override
                                        public void onSure() {
                                            selectRoadCrossDirect(routeCross);
                                        }
                                        @Override
                                        public void onCancle() {
                                            hasInsertRoadCrossDirect = false;
                                        }
                                    });
                                    myDialog.show(getFragmentManager(),"tarindialog");
                                    break;
                                }
                            }
                            if (!hasInsertRoadCrossDirect){
                                selectRoadCrossDirect(routeCross);
                            }
                        }
                    });
                }else{
                    if (roadCrossDialog != null)
                    roadCrossDialog.dismiss();
                }
            }
        });
    }
    private void selectRoadCrossDirect(RouteCross routeCross) {
                            roadCrossDialog = SelectDialogThree.newInstance("路口直行","路口左转弯","路口右转弯","路口掉头");
                            roadCrossDialog.show(getFragmentManager(),"aaa");
                            roadCrossDialog.setSelectedListener(new SelectDialogThree.OnSelectedListener() {
@@ -1211,35 +1262,20 @@
                                            break;
                                    }
                                    if (res != SelectDialogThree.SELECT_NONE){
                    if (!hasInsertRoadCrossDirect){
                                        routeLineViewModel.insertRouteCross(routeCross);
                    }else{
                        hasInsertRoadCrossDirect = false;
                        routeLineViewModel.updateRouteCrossActive(currRouteBean.getId(),routeCross.getRoad(),routeCross.getIdx(),routeCross.getActive());
                    }
                                    }else{
                                        Log.i(TAG,"在路口没有做出选择");
                                    }
                                }
                            });
                        }
                    });
                }else{
                    roadCrossDialog.dismiss();
                }
            }
        });
    }
    private int getRouteLine_id() {
        for (int i = 0; i < mRouteBeans.size(); i++){
            if (mRouteBeans.get(i).getRouteName().equalsIgnoreCase(ExamPlatformData.getInstance().getRouteLineName())){
                return mRouteBeans.get(i).getId();
            }
        }
        return -1;
    }
}