From 39d660f5cb754034f2763b736c4b7ae00af2f7d7 Mon Sep 17 00:00:00 2001 From: wds Date: Wed, 7 Jul 2021 19:16:03 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=9B=E9=80=89=E9=A1=B5=E9=9D=A2=E4=B8=8E?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E8=81=94=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- .../outdoor/adapter/FilterAdapter.java | 1 + .../com/navinfo/outdoor/api/Constant.java | 10 +- .../fragment/ChargingStationFragment.java | 7 +- .../outdoor/fragment/FilterFragment.java | 331 +++++++++++------- .../outdoor/fragment/GatherGetFragment.java | 23 +- .../outdoor/fragment/OtherFragment.java | 2 + .../navinfo/outdoor/fragment/PoiFragment.java | 2 + .../outdoor/fragment/PoiVideoFragment.java | 2 + .../outdoor/fragment/RoadFragment.java | 2 + .../outdoor/fragment/TreasureFragment.java | 111 ++++-- .../java/com/navinfo/outdoor/room/PoiDao.java | 16 +- .../com/navinfo/outdoor/room/PoiEntity.java | 11 +- 13 files changed, 333 insertions(+), 187 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 0559a03..3b14d7f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,7 +3,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 29 buildToolsVersion '29.0.2' - ndkVersion '23.0.7123448' + // ndkVersion '23.0.7123448' defaultConfig { applicationId "com.navinfo.outdoor" diff --git a/app/src/main/java/com/navinfo/outdoor/adapter/FilterAdapter.java b/app/src/main/java/com/navinfo/outdoor/adapter/FilterAdapter.java index 2748f84..585da84 100644 --- a/app/src/main/java/com/navinfo/outdoor/adapter/FilterAdapter.java +++ b/app/src/main/java/com/navinfo/outdoor/adapter/FilterAdapter.java @@ -30,6 +30,7 @@ public class FilterAdapter extends RecyclerView.Adapter allPoi) { + this.allPoi.clear(); this.allPoi.addAll(allPoi); notifyDataSetChanged(); } diff --git a/app/src/main/java/com/navinfo/outdoor/api/Constant.java b/app/src/main/java/com/navinfo/outdoor/api/Constant.java index 76a2146..dfc8373 100644 --- a/app/src/main/java/com/navinfo/outdoor/api/Constant.java +++ b/app/src/main/java/com/navinfo/outdoor/api/Constant.java @@ -64,16 +64,18 @@ public class Constant { public static final int OTHER_WORD = 25;//地图页面marker 的经纬都回传 public static final int CHARGING_STATION_PILE = 26;//跳转到充电桩 传给数据 public static final int CAPACITY_EVALUATION_PAGE = 1;//能力测评的页数 - public static final int JOB_SEARCH_WORD = 28;//任务搜索的数据 + public static final int JOB_SEARCH_WORD = 28;//任务搜索的网络数据 + public static final int JOB_SEARCH_POI_WORD = 29;//任务搜索的本地数据 public static final int GATHER_GET_MAP = 30;//地图点击marker 后弹窗点击开始采集 public static final int HOME_MINE = 32;//点击我的实时监听刷新 public static final int HOME_TREASURE = 33;//点击寻宝实时监听刷新 + public static final int JOB_WORD_MONITOR=34;//筛选条件的刷新 public static String USER_ATTESTATION_NAME; //实名认证姓名 银行卡 public static int NUMBER = 200; //任务个数 - public static String PHOTOGRAPH = "全部"; //任务类型 - public static String EXCLUSIVE = "全部"; - public static String TYPE = "全部"; + public static int LIMIT_TTPE = -1; //权限类型,普通任务-0,专属任务-1 + public static int TASK_TYPE = -1; // 任务类型 + public static int TASK_STASTUS = -1; // 任务状态 /** * 用户当前位置 */ diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java index 09050dc..83ced87 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/ChargingStationFragment.java @@ -590,6 +590,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. poiEntity.setCreateTime(format); poiEntity.setType(2); poiEntity.setTaskStatus(2); + poiEntity.setIsLocalData(1); new Thread(new Runnable() { @Override public void run() { @@ -715,6 +716,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. poiEntity.setCreateTime(format); poiEntity.setType(2); poiEntity.setTaskStatus(2); + poiEntity.setIsLocalData(1); /* new Thread(new Runnable() { @Override public void run() { @@ -805,7 +807,8 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. poiEntity.setCreateTime(format); poiEntity.setType(2); poiEntity.setTaskStatus(2); - new Thread(new Runnable() { + poiEntity.setIsLocalData(1); + /* new Thread(new Runnable() { @Override public void run() { List allPoi = poiDao.getAllPoi(); @@ -816,7 +819,7 @@ public class ChargingStationFragment extends BaseDrawerFragment implements View. } }); } - }).start(); + }).start();*/ String newPoiEntity = new Gson().toJson(poiEntity); //以键值对的形式添加新值。 edit.putString("poiEntity", newPoiEntity); diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/FilterFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/FilterFragment.java index 6b4cb9f..612b7ed 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/FilterFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/FilterFragment.java @@ -8,10 +8,12 @@ import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; + import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; + import com.jcodecraeer.xrecyclerview.ProgressStyle; import com.jcodecraeer.xrecyclerview.XRecyclerView; import com.kongzue.dialog.interfaces.OnMenuItemClickListener; @@ -38,12 +40,13 @@ import java.util.List; public class FilterFragment extends BaseDrawerFragment implements View.OnClickListener { private Button btnFilter; private XRecyclerView recyclerFilter; - private TextView tvType, tvExclusive, tvPhotograph,tvNumber; - private ConstraintLayout clPhotograph, clExclusive, clType,clNumber; + private TextView tvType, tvExclusive, tvPhotograph, tvNumber; + private ConstraintLayout clPhotograph, clExclusive, clType, clNumber; private PoiDatabase poiDatabase; private PoiDao poiDao; private FilterAdapter filterAdapter; private ArrayList poiEntities; + private List allPoi; public static FilterFragment newInstance(Bundle bundle) { @@ -65,20 +68,20 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi @Override public void onClick(View v) { Bundle arguments = getArguments(); - if (arguments!=null) { - isSliding= arguments.getBoolean("isSliding",true); - Log.d("TAG", "onCreatessss: "+isSliding); + if (arguments != null) { + isSliding = arguments.getBoolean("isSliding", true); + Log.d("TAG", "onCreatessss: " + isSliding); } if (isSliding) { // 监听到返回按钮点击事件 Message obtain = Message.obtain(); - obtain.what= Constant.TREASURE_FRAGMENT; - obtain.obj=isSliding; + obtain.what = Constant.TREASURE_FRAGMENT; + obtain.obj = isSliding; EventBus.getDefault().post(obtain); Message mainButtonVisiableMsg = Message.obtain(); - mainButtonVisiableMsg.what= Constant.MAIN_BUTTON_VISIABLE; - mainButtonVisiableMsg.obj= View.VISIBLE; + mainButtonVisiableMsg.what = Constant.MAIN_BUTTON_VISIABLE; + mainButtonVisiableMsg.obj = View.VISIBLE; EventBus.getDefault().post(mainButtonVisiableMsg); } onBackPressed(); @@ -86,6 +89,7 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi }); } } + @Override public void onStart() { super.onStart(); @@ -94,6 +98,7 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi } } + @Override public void onResume() { super.onResume(); @@ -106,20 +111,20 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi @Override public void onClick(View v) { Bundle arguments = getArguments(); - if (arguments!=null) { - isSliding= arguments.getBoolean("isSliding",true); - Log.d("TAG", "onCreatessss: "+isSliding); + if (arguments != null) { + isSliding = arguments.getBoolean("isSliding", true); + Log.d("TAG", "onCreatessss: " + isSliding); } if (isSliding) { // 监听到返回按钮点击事件 Message obtain = Message.obtain(); - obtain.what= Constant.TREASURE_FRAGMENT; - obtain.obj=isSliding; + obtain.what = Constant.TREASURE_FRAGMENT; + obtain.obj = isSliding; EventBus.getDefault().post(obtain); Message mainButtonVisiableMsg = Message.obtain(); - mainButtonVisiableMsg.what= Constant.MAIN_BUTTON_VISIABLE; - mainButtonVisiableMsg.obj= View.VISIBLE; + mainButtonVisiableMsg.what = Constant.MAIN_BUTTON_VISIABLE; + mainButtonVisiableMsg.obj = View.VISIBLE; EventBus.getDefault().post(mainButtonVisiableMsg); } onBackPressed(); @@ -136,6 +141,84 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi @Override protected void initView() { super.initView(); + poiEntities = new ArrayList<>(); + /* JobSearchBean jobSearchBean = (JobSearchBean) getArguments().getSerializable("body");//服务数据 + ArrayList showAllPoi = (ArrayList) getArguments().getSerializable("showAllPoi");//本地数据 + if (jobSearchBean != null) { + List list = jobSearchBean.getBody().getList(); + for (int i = 0; i < list.size(); i++) { + PoiEntity poiEntity = new PoiEntity(); + poiEntity.setTaskId(list.get(i).getId()); + poiEntity.setName(list.get(i).getName()); + poiEntity.setAddress(list.get(i).getAddress()); + poiEntity.setTelPhone(list.get(i).getTelephone() + ""); + poiEntity.setPrecision(list.get(i).getPrice()); + poiEntity.setDist(list.get(i).getDist()); + poiEntity.setType(Integer.valueOf(list.get(i).getType())); + String geo = list.get(i).getGeo(); + Geometry geometry = GeometryTools.createGeometry(geo); + if (geometry.getGeometryType().equals("Point")) {//点 + LatLng latLng = GeometryTools.createLatLng(geo); + poiEntity.setX(latLng.longitude + ""); + poiEntity.setY(latLng.altitude + ""); + } else if (geometry.getGeometryType().equals("LineString")) {//线 + } else if (geometry.getGeometryType().equals("Polygon")) {//面 + + } + poiEntities.add(poiEntity); + } + } + if (showAllPoi != null) { + poiEntities.addAll(showAllPoi); + } + filterAdapter.setAllPoi(poiEntities);*/ + } + + @Subscribe + public void onEvent(Message data) { + if (data.what == Constant.JOB_SEARCH_WORD) { + poiEntities.clear(); + JobSearchBean jobSearchBean = (JobSearchBean) data.obj; + if (jobSearchBean!=null){ + List list = jobSearchBean.getBody().getList(); + for (int i = 0; i < list.size(); i++) { + PoiEntity poiEntity = new PoiEntity(); + poiEntity.setTaskId(list.get(i).getId()); + poiEntity.setName(list.get(i).getName()); + poiEntity.setAddress(list.get(i).getAddress()); + poiEntity.setTelPhone(list.get(i).getTelephone() + ""); + poiEntity.setPrecision(list.get(i).getPrice()); + poiEntity.setDist(list.get(i).getDist()); + poiEntity.setType(Integer.valueOf(list.get(i).getType())); + String geo = list.get(i).getGeo(); + Geometry geometry = GeometryTools.createGeometry(geo); + if (geometry.getGeometryType().equals("Point")) {//点 + LatLng latLng = GeometryTools.createLatLng(geo); + poiEntity.setX(latLng.longitude + ""); + poiEntity.setY(latLng.altitude + ""); + } else if (geometry.getGeometryType().equals("LineString")) {//线 + } else if (geometry.getGeometryType().equals("Polygon")) {//面 + + } + poiEntities.add(poiEntity); + } + } + if (allPoi!=null){ + poiEntities.addAll(allPoi); + } + filterAdapter.setAllPoi(poiEntities); + + } else if (data.what == Constant.JOB_SEARCH_POI_WORD) { + allPoi = (List) data.obj; + } + } + + + @Override + protected void initData() { + super.initData(); + poiDatabase = PoiDatabase.getInstance(getContext()); + poiDao = poiDatabase.getPoiDao(); clNumber = findViewById(R.id.cl_number); clNumber.setOnClickListener(this::onClick); tvNumber = findViewById(R.id.tv_number); @@ -174,13 +257,13 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi }); filterAdapter.setItemCLick(new FilterAdapter.ItemCLick() { @Override - public void item(PoiEntity poiEntity,boolean aBoolean) { - if (aBoolean){ + public void item(PoiEntity poiEntity, boolean aBoolean) { + if (aBoolean) { Message obtain = Message.obtain(); obtain.what = Constant.GATHER_GET; obtain.obj = poiEntity; EventBus.getDefault().post(obtain); - }else { + } else { Message obtain = Message.obtain(); obtain.what = Constant.FILTER_LIST_ITEM; obtain.obj = poiEntity; @@ -191,155 +274,141 @@ public class FilterFragment extends BaseDrawerFragment implements View.OnClickLi }); } - @Subscribe - public void onEvent(Message data) { - if (data.what == Constant.JOB_SEARCH_WORD) { - /* - * id : 0 - * name : - * address : http://10.130.23.166:8080/cbt/img/blue.png - * telephone : 11 - * geo : 标题11 - * price : 通过 - * type : - * dist : - **/ - new Thread(new Runnable() { - @Override - public void run() { - List allPoi = poiDao.getAllPoi(); - - getActivity().runOnUiThread(new Runnable() { - @Override - public void run() { - Log.d("TAG", "run: " + allPoi.toString()); - poiEntities.clear(); - JobSearchBean jobSearchBean = (JobSearchBean) data.obj; - List list = jobSearchBean.getBody().getList(); - for (int i = 0; i < list.size(); i++) { - PoiEntity poiEntity = new PoiEntity(); - poiEntity.setTaskId(list.get(i).getId()); - poiEntity.setName(list.get(i).getName()); - poiEntity.setAddress(list.get(i).getAddress()); - poiEntity.setTelPhone(list.get(i).getTelephone()+""); - poiEntity.setPrecision(list.get(i).getPrice()); - poiEntity.setDist(list.get(i).getDist()); - poiEntity.setType(Integer.valueOf(list.get(i).getType())); - String geo = list.get(i).getGeo(); - Geometry geometry = GeometryTools.createGeometry(geo); - if ( geometry.getGeometryType().equals("Point")){//点 - LatLng latLng = GeometryTools.createLatLng(geo); - poiEntity.setX(latLng.longitude+""); - poiEntity.setY(latLng.altitude+""); - }else if ( geometry.getGeometryType().equals("LineString")){//线 - }else if ( geometry.getGeometryType().equals("Polygon")) {//面 - - } - poiEntities.add(poiEntity); - } - poiEntities.addAll(allPoi); - filterAdapter.setAllPoi(poiEntities); - } - }); - } - }).start(); - } - } - - - @Override - protected void initData() { - super.initData(); - poiDatabase = PoiDatabase.getInstance(getContext()); - poiDao = poiDatabase.getPoiDao(); - poiEntities = new ArrayList<>(); - new Thread(new Runnable() { - @Override - public void run() { - List allPoi = poiDao.getAllPoi(); - - getActivity().runOnUiThread(new Runnable() { - @Override - public void run() { - Log.d("TAG", "run: " + allPoi.toString()); - poiEntities.clear(); - JobSearchBean jobSearchBean = (JobSearchBean) getArguments().getSerializable("body"); - List list = jobSearchBean.getBody().getList(); - for (int i = 0; i < list.size(); i++) { - PoiEntity poiEntity = new PoiEntity(); - poiEntity.setTaskId(list.get(i).getId()); - poiEntity.setName(list.get(i).getName()); - poiEntity.setAddress(list.get(i).getAddress()); - poiEntity.setTelPhone(list.get(i).getTelephone()+""); - poiEntity.setPrecision(list.get(i).getPrice()); - poiEntity.setDist(list.get(i).getDist()); - poiEntity.setType(Integer.valueOf(list.get(i).getType())); - String geo = list.get(i).getGeo(); - Geometry geometry = GeometryTools.createGeometry(geo); - if ( geometry.getGeometryType().equals("Point")){//点 - LatLng latLng = GeometryTools.createLatLng(geo); - poiEntity.setX(latLng.longitude+""); - poiEntity.setY(latLng.altitude+""); - }else if ( geometry.getGeometryType().equals("LineString")){//线 - }else if ( geometry.getGeometryType().equals("Polygon")) {//面 - - } - poiEntities.add(poiEntity); - } - poiEntities.addAll(allPoi); - filterAdapter.setAllPoi(poiEntities); - } - }); - } - }).start(); - } @Override public void onClick(View v) { switch (v.getId()) { + case R.id.btn_filter: Message obtain = Message.obtain(); obtain.what = Constant.FILTER_LIST; obtain.obj = poiEntities; EventBus.getDefault().post(obtain); break; + case R.id.cl_number: - BottomMenu.show((AppCompatActivity) getContext(), new String[]{"200", "500","1000"}, new OnMenuItemClickListener() { + BottomMenu.show((AppCompatActivity) getContext(), new String[]{"200", "500", "1000"}, new OnMenuItemClickListener() { @Override public void onClick(String text, int index) { tvNumber.setText(text); - Constant.NUMBER=Integer.getInteger(text); + switch (index) { + case 0: + Constant.NUMBER = 200; + break; + case 1: + Constant.NUMBER = 500; + break; + case 2: + Constant.NUMBER = 1000; + break; + } + Message obtain = Message.obtain(); + obtain.what = Constant.JOB_WORD_MONITOR; + obtain.obj = true; + EventBus.getDefault().post(obtain); + } }); break; + case R.id.cl_photograph: - BottomMenu.show((AppCompatActivity) getContext(), new String[]{"全部","专属任务", "普通任务"}, new OnMenuItemClickListener() { + BottomMenu.show((AppCompatActivity) getContext(), new String[]{"全部", "普通任务", "专属任务"}, new OnMenuItemClickListener() { @Override public void onClick(String text, int index) { tvPhotograph.setText(text); - Constant.PHOTOGRAPH=text; + switch (index) { + case 0: + Constant.LIMIT_TTPE = -1; + break; + case 1: + Constant.LIMIT_TTPE = 0; + break; + case 2: + Constant.LIMIT_TTPE = 1; + break; + } + Message obtain = Message.obtain(); + obtain.what = Constant.JOB_WORD_MONITOR; + obtain.obj = true; + EventBus.getDefault().post(obtain); } }); break; + /** + * 1 "POI" + * 2 "充电站" + * 3 "POI录像" + * 4 "道路录像" + * 5 "其他" + * 6 "面状任务" + */ case R.id.cl_exclusive: - BottomMenu.show((AppCompatActivity) getContext(), new String[]{"全部","poi", "道路", "充电站", "其他"}, new OnMenuItemClickListener() { + BottomMenu.show((AppCompatActivity) getContext(), new String[]{"全部", "poi", "充电站", "POI录像", "道路录像", "其他", "面状任务"}, new OnMenuItemClickListener() { @Override public void onClick(String text, int index) { tvExclusive.setText(text); - Constant.EXCLUSIVE=text; + switch (index) { + case 0: + Constant.TASK_TYPE = -1; + break; + case 1: + Constant.TASK_TYPE = 1; + break; + case 2: + Constant.TASK_TYPE = 2; + break; + case 3: + Constant.TASK_TYPE = 3; + break; + case 4: + Constant.TASK_TYPE = 4; + break; + case 5: + Constant.TASK_TYPE = 5; + break; + case 6: + Constant.TASK_TYPE = 6; + break; + + } + Message obtain = Message.obtain(); + obtain.what = Constant.JOB_WORD_MONITOR; + obtain.obj = true; + EventBus.getDefault().post(obtain); } }); break; + case R.id.cl_type: - BottomMenu.show((AppCompatActivity) getContext(), new String[]{"全部","已领取", "待提交","未领取"}, new OnMenuItemClickListener() { + BottomMenu.show((AppCompatActivity) getContext(), new String[]{"全部", "已领取", "待提交", "未领取"}, new OnMenuItemClickListener() { @Override public void onClick(String text, int index) { tvType.setText(text); - Constant.TYPE=text; + switch (index) { + case 0: + Constant.TASK_STASTUS = -1; + break; + case 1: + Constant.TASK_STASTUS = 1; + break; + case 2: + Constant.TASK_STASTUS = 2; + break; + case 3: + Constant.TASK_STASTUS = 3; + break; + } + Message obtain = Message.obtain(); + obtain.what = Constant.JOB_WORD_MONITOR; + obtain.obj = true; + EventBus.getDefault().post(obtain); } }); - } - } + break; + + } + } + @Override public void onDestroy() { if (EventBus.getDefault().isRegistered(this))//加上判断 diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java index ebe0fb3..4d7720f 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java @@ -204,29 +204,19 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe //网络请求: if (poiEntity != null) { if (poiEntity.getType() == 1) {//poi的领取类型 - receivedTaskByNet(HttpInterface.RECEIVED_POI_TASK, poiEntity.getTaskId() + "", false); + receivedTaskByNet(HttpInterface.RECEIVED_POI_TASK+"/"+poiEntity.getTaskId() + "", false); } else if (poiEntity.getType() == 5) { - receivedTaskByNet(HttpInterface.RECEIVED_OTHER_TASK, poiEntity.getTaskId() + "", false); + receivedTaskByNet(HttpInterface.RECEIVED_OTHER_TASK+"/"+poiEntity.getTaskId() + "", false); } } break; case R.id.btn_gather://立即采集 - int aInt = getArguments().getInt("aInt", 0); - if (aInt == 1) { - if (poiEntity != null) { - Message obtain = Message.obtain(); - obtain.what = Constant.GATHER_GET; - obtain.obj = poiEntity; - EventBus.getDefault().post(obtain); - } - } else { if (poiEntity != null) { if (poiEntity.getType() == 1) {//poi的领取类型 - receivedTaskByNet(HttpInterface.RECEIVED_POI_TASK, poiEntity.getTaskId() + "", true); + receivedTaskByNet(HttpInterface.RECEIVED_POI_TASK+"/"+poiEntity.getTaskId() + "", true); } else if (poiEntity.getType() == 5) { - receivedTaskByNet(HttpInterface.RECEIVED_OTHER_TASK, poiEntity.getTaskId() + "", true); + receivedTaskByNet(HttpInterface.RECEIVED_OTHER_TASK+"/"+poiEntity.getTaskId() + "", true); } - } } break; case R.id.btn_finish_gather://结束采集 @@ -247,13 +237,12 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe } /** * @param url 不同任务类型对应的url - * @param id 任务id */ - private void receivedTaskByNet(String url, String id, boolean isSaver) { + private void receivedTaskByNet(String url, boolean isSaver) { showLoadingDialog(); OkGoBuilder.getInstance() .Builder(getActivity()) - .url(url + id) + .url(url) .method(OkGoBuilder.GET) .cls(ReceivedPoiBean.class) .callback(new Callback() { diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java index 70e6e5d..8f40c19 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/OtherFragment.java @@ -352,6 +352,7 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis poiEntity.setCreateTime(format); poiEntity.setType(5); poiEntity.setTaskStatus(2); + poiEntity.setIsLocalData(1); new Thread(new Runnable() { @Override public void run() { @@ -502,6 +503,7 @@ public class OtherFragment extends BaseDrawerFragment implements View.OnClickLis poiEntity.setCreateTime(format); poiEntity.setType(5); poiEntity.setTaskStatus(2); + poiEntity.setIsLocalData(1); String newPoiEntity = new Gson().toJson(poiEntity); //以键值对的形式添加新值。 edit.putString("poiEntity", newPoiEntity); diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java index b1a749d..96f6b3f 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/PoiFragment.java @@ -447,6 +447,7 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe poiEntity.setCreateTime(format); poiEntity.setType(1); poiEntity.setTaskStatus(2); + poiEntity.setIsLocalData(1); new Thread(new Runnable() { @Override public void run() { @@ -657,6 +658,7 @@ public class PoiFragment extends BaseDrawerFragment implements View.OnClickListe poiEntity.setCreateTime(format); poiEntity.setType(1); poiEntity.setTaskStatus(2); + poiEntity.setIsLocalData(1); String newPoiEntity = new Gson().toJson(poiEntity); //以键值对的形式添加新值。 edit.putString("poiEntity", newPoiEntity); diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java index 19012bc..131603f 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/PoiVideoFragment.java @@ -261,6 +261,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick poiEntity.setCreateTime(format); poiEntity.setType(3); poiEntity.setTaskStatus(2); + poiEntity.setIsLocalData(1); new Thread(new Runnable() { @Override public void run() { @@ -341,6 +342,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick poiEntity.setCreateTime(format); poiEntity.setType(3); poiEntity.setTaskStatus(2); + poiEntity.setIsLocalData(1); String newPoiEntity = new Gson().toJson(poiEntity); //以键值对的形式添加新值。 edit.putString("poiEntity", newPoiEntity); diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java index 6990895..ce40e01 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/RoadFragment.java @@ -268,6 +268,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList poiEntity.setCreateTime(format); poiEntity.setType(4); poiEntity.setTaskStatus(2); + poiEntity.setIsLocalData(1); new Thread(new Runnable() { @Override public void run() { @@ -349,6 +350,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList poiEntity.setCreateTime(format); poiEntity.setType(4); poiEntity.setTaskStatus(2); + poiEntity.setIsLocalData(1); String newPoiEntity = new Gson().toJson(poiEntity); //以键值对的形式添加新值。 edit.putString("poiEntity", newPoiEntity); diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java index 76c9357..588ed60 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/TreasureFragment.java @@ -87,6 +87,7 @@ import com.vividsolutions.jts.geom.Geometry; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; +import java.io.Serializable; import java.util.ArrayList; import java.util.List; @@ -123,8 +124,9 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen private ChargingPileEntity chargingPileEntity; private String userEncode; private String centerEncode; - private JobSearchBean body; - private ArrayList removables; + private List removables; + private List showAllPoi; + private List removablesLocality; public static TreasureFragment newInstance(Bundle bundle) { TreasureFragment fragment = new TreasureFragment(); @@ -200,12 +202,13 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen initSharePre(); //数据库 initThread(); - removables = new ArrayList<>(); - + removables = new ArrayList<>();//存储网络数据的marker + showAllPoi = new ArrayList<>();//存储本地数据的容器 + removablesLocality = new ArrayList<>(); //存储本地数据的marker tencentMap.addOnMapLoadedCallback(new TencentMap.OnMapLoadedCallback() { @Override public void onMapLoaded() { - if (Constant.currentLocation != null ) { + if (Constant.currentLocation != null) { initList(Constant.currentLocation); } tencentMap.setOnMarkerClickListener(new TencentMap.OnMarkerClickListener() { @@ -237,7 +240,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen showSlidingFragment(otherFragment); break; } - }else if(marker.getTitle().equals("面妆任务")) {//面妆任务 + } else if (marker.getTitle().equals("面妆任务")) {//面妆任务 JobSearchBean.BodyBean.ListBean listBean = (JobSearchBean.BodyBean.ListBean) marker.getTag(); PoiEntity poiListEntity = new PoiEntity(); poiListEntity.setTaskId(listBean.getId()); @@ -256,8 +259,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen } else if (geometry.getGeometryType().equals("LineString")) {//线 } else if (geometry.getGeometryType().equals("Polygon")) {//面 } - initMarker(poiListEntity,2); - }else { + initMarker(poiListEntity, 2); + } else { JobSearchBean.BodyBean.ListBean listBean = (JobSearchBean.BodyBean.ListBean) marker.getTag(); PoiEntity poiListEntity = new PoiEntity(); poiListEntity.setTaskId(listBean.getId()); @@ -276,7 +279,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen } else if (geometry.getGeometryType().equals("LineString")) {//线 } else if (geometry.getGeometryType().equals("Polygon")) {//面 } - initMarker(poiListEntity,1); + initMarker(poiListEntity, 1); } return false; } @@ -299,6 +302,16 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen }; private void initList(TencentLocation tencentLocation) { + int task_type=Constant.TASK_TYPE; + int limit_type=Constant.LIMIT_TTPE; + int taskStatus = Constant.TASK_STASTUS; + if (taskStatus == 1 || taskStatus == 2) { + Message obtain = Message.obtain(); + obtain.what = Constant.JOB_SEARCH_WORD; + obtain.obj = null; + EventBus.getDefault().post(obtain); + return; + } //获取中心点位置 LatLng mapCenterPoint = getMapCenterPoint(); if (mapCenterPoint != null) { @@ -316,6 +329,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen .params("date", date) .params("pageSize", Constant.NUMBER) .params("pageNum", "1") + .params("type",task_type) + .params("isExclusive",limit_type) // .client(new OkHttpClient()) .execute(new DialogCallback(JobSearchBean.class) { @Override @@ -325,7 +340,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen removables.get(i).remove(); } removables.clear(); - body = response.body(); + JobSearchBean body = response.body(); List list = response.body().getBody().getList(); for (int i = 0; i < list.size(); i++) { JobSearchBean.BodyBean.ListBean listBean = list.get(i); @@ -353,7 +368,7 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen // 绘制折线 Polyline polyline = tencentMap.addPolyline(polylineOptions); removables.add(polyline); - if (latLineString!=null&&latLineString.size()>0){ + if (latLineString != null && latLineString.size() > 0) { latLng = latLineString.get(0); } } else if (geometry.getGeometryType().equals("Polygon")) {//面 @@ -368,8 +383,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen //边线宽度15像素 strokeWidth(5)); removables.add(polygon); - if (latPolygon!=null&&latPolygon.size()>0){ - latLng = latPolygon.get(0); + if (latPolygon != null && latPolygon.size() > 0) { + latLng = latPolygon.get(0); } } switch (Integer.valueOf(list.get(i).getType())) { @@ -405,13 +420,12 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen Marker planarMarker = tencentMap.addMarker(new MarkerOptions(latLng).icon(Constant.PLANAR_TASK_ICON).alpha(0.7f) .flat(true) .clockwise(false)); - Log.d("面妆任务", "onSuccess: "+planarMarker); + Log.d("面妆任务", "onSuccess: " + planarMarker); planarMarker.setTag(listBean); removables.add(planarMarker); planarMarker.setTitle("面妆任务");//1:面妆任务 planarMarker.setClickable(true); break; - } } Message obtain = Message.obtain(); @@ -423,14 +437,13 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen @Override public void onError(Response response) { super.onError(response); - - Log.d("TAG", "onError: " + response.message() + "gggggggggggggggggg"); + Log.d("TAG", "onError: " + response.message() + ""); } }); } - public void initMarker( PoiEntity poiEntity,int aInt) { + public void initMarker(PoiEntity poiEntity, int aInt) { sliding_layout.setPanelHeight(0); sliding_layout.setPanelState(SlidingUpPanelLayout.PanelState.HIDDEN); frameLayout.setVisibility(View.VISIBLE); @@ -438,29 +451,54 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen fragmentTransaction = supportFragmentManager.beginTransaction(); Bundle bundle = new Bundle(); bundle.putSerializable("poiEntity", poiEntity); - bundle.putBoolean("boolean",false); - bundle.putInt("aSave",aInt); + bundle.putBoolean("boolean", false); + bundle.putInt("aSave", aInt); gatherGetFragment = GatherGetFragment.newInstance(bundle); fragmentTransaction.replace(R.id.frame_layout, gatherGetFragment); fragmentTransaction.commit(); } + private void initThread() { + int taskStatus = Constant.TASK_STASTUS; + int type = Constant.TASK_TYPE; + int limit = Constant.LIMIT_TTPE; + if (taskStatus == 3) { + showAllPoi.clear(); + Message obtain = Message.obtain(); + obtain.what = Constant.JOB_SEARCH_POI_WORD; + obtain.obj = showAllPoi; + EventBus.getDefault().post(obtain); + return; + } + + new Thread(new Runnable() { @Override public void run() { - List allPoi = poiDao.getAllPoi(); + List allTaskStatus = poiDao.getAllTaskStatus(taskStatus, taskStatus, type, type, limit, limit); + //List allTaskStatus = poiDao.getAllPoi(); getActivity().runOnUiThread(new Runnable() { @Override public void run() { - for (int i = 0; i < allPoi.size(); i++) { - LatLng position = new LatLng(Double.valueOf(allPoi.get(i).getY()), Double.valueOf(allPoi.get(i).getX())); + for (int i = 0; i < removables.size(); i++) { + removables.get(i).remove(); + } + removables.clear(); + showAllPoi.clear(); + showAllPoi.addAll(allTaskStatus); + for (int i = 0; i < allTaskStatus.size(); i++) { + LatLng position = new LatLng(Double.valueOf(allTaskStatus.get(i).getY()), Double.valueOf(allTaskStatus.get(i).getX())); Marker marker = tencentMap.addMarker(new MarkerOptions(position)); marker.setClickable(true); - PoiEntity poiEntity = allPoi.get(i); marker.setTitle("本地");//1:本地 - marker.setTag(poiEntity); + marker.setTag(allTaskStatus.get(i)); + removablesLocality.add(marker); } + Message obtain = Message.obtain(); + obtain.what = Constant.JOB_SEARCH_POI_WORD; + obtain.obj = showAllPoi; + EventBus.getDefault().post(obtain); } }); } @@ -691,10 +729,24 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen showSlidingFragment(chargingPileFragment); } else if (data.what == Constant.CHARGING_STATION_PILE) {//充电站的充电桩 chargingPileEntity = (ChargingPileEntity) data.obj; - }else if (data.what==Constant.HOME_TREASURE){//寻宝的刷新 - if ((boolean)data.obj){ + } else if (data.what == Constant.HOME_TREASURE) {//寻宝的刷新 + if ((boolean) data.obj) { initList(Constant.currentLocation); } + } else if (data.what == Constant.JOB_WORD_MONITOR) {//筛选条件界面的刷新 + // 移除网络数据 + for (int i = 0; i < removables.size(); i++) { + removables.get(i).remove(); + } + removables.clear(); + // 移除本地图层marker + for (int i = 0; i < removablesLocality.size(); i++) { + removablesLocality.get(i).remove(); + } + removablesLocality.clear(); + + initThread();// 查询本地数据库 + initList(Constant.currentLocation);//网络数据 } } @@ -921,10 +973,9 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen }).setTitle(title); break; case R.id.iv_filter: + initThread(); + initList(Constant.currentLocation); Bundle bundle = new Bundle(); - if (body != null) { - bundle.putSerializable("body", body); - } FilterFragment filterFragment = FilterFragment.newInstance(bundle); showSlidingFragment(filterFragment); break; diff --git a/app/src/main/java/com/navinfo/outdoor/room/PoiDao.java b/app/src/main/java/com/navinfo/outdoor/room/PoiDao.java index 66cfb08..e241333 100644 --- a/app/src/main/java/com/navinfo/outdoor/room/PoiDao.java +++ b/app/src/main/java/com/navinfo/outdoor/room/PoiDao.java @@ -16,13 +16,22 @@ import java.util.List; public interface PoiDao { /** * 查询 + * * @return */ @Query("SELECT * FROM poi") List getAllPoi(); + @Query("SELECT * FROM poi where type=:type") + List getAllPoiType(int type); + + @Query("SELECT * FROM poi WHERE (:taskStatus =-1 or taskStatus=:taskStatus1) and (:type=-1 or type=:type1) and (:isExclusive=-1 or isExclusive=:isExclusive1) ") +// @Query("SELECT * FROM poi WHERE taskStatus=:taskStatus and type=:type and (:isExclusive=-1 or isExclusive=:isExclusive) ") + List getAllTaskStatus(int taskStatus, int taskStatus1, int type, int type1, int isExclusive, int isExclusive1); + /** * 添加 + * * @param poiEntities */ @Insert(onConflict = OnConflictStrategy.REPLACE) @@ -30,6 +39,7 @@ public interface PoiDao { /** * 更新 + * * @param poiEntities */ @Update @@ -37,13 +47,15 @@ public interface PoiDao { /** * 删除 + * * @param poiEntities */ @Delete void deletePoiEntity(PoiEntity... poiEntities); /** - *删除 + * 删除 + * * @param poiEntities */ @Delete @@ -51,6 +63,7 @@ public interface PoiDao { /** * 根据条件删除 + * * @param taskStatus */ @Query("DELETE FROM poi where taskStatus=:taskStatus") @@ -65,6 +78,7 @@ public interface PoiDao { /** * 降序排列 + * * @return */ @Query("SELECT * FROM poi ORDER BY ID DESC") diff --git a/app/src/main/java/com/navinfo/outdoor/room/PoiEntity.java b/app/src/main/java/com/navinfo/outdoor/room/PoiEntity.java index 5822ce1..96f6f79 100644 --- a/app/src/main/java/com/navinfo/outdoor/room/PoiEntity.java +++ b/app/src/main/java/com/navinfo/outdoor/room/PoiEntity.java @@ -58,7 +58,16 @@ public class PoiEntity implements Serializable { private int taskStatus;//任务状态 0.未领取 1.已领取,2.未保存(保存到本地但未提交成功),3.已保存(保存到本地提交成功),4已上传(结束采集), private int type;//1 "POI"2 "充电站"3 "POI录像"4 "道路录像"5 "其他"6 "面状任务" private int station_type;//1."全部"2 "POI"3 "充电站"4 "POI录像"5 "道路录像", "门牌:6 公交:7 情报:8 - private int isLocalData;//是否是本地数据 0,服务 1,本地//现在没用 + private int isLocalData;//是否是本地数据 0,服务 1,本地 + private int isExclusive;//任务类型 0.普通任务,1.专属任务 + + public int getIsExclusive() { + return isExclusive; + } + + public void setIsExclusive(int isExclusive) { + this.isExclusive = isExclusive; + } public int getIsLocalData() { return isLocalData;