From d531806172b4d45215cb0d312585ccdd68b1e7a5 Mon Sep 17 00:00:00 2001 From: itgaojian Date: Thu, 16 Nov 2023 18:06:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=BA=E5=8F=A3=E3=80=81=E6=88=BF=E5=B1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 + app/src/main/AndroidManifest.xml | 16 + .../activitys/base/MainActivity.java | 25 +- .../house/NewCommunityDetailActivity.java | 11 +- .../activitys/BuildingViewPageActivity.java | 34 +- .../HouseLivePersonBindActivity.java | 298 ++++- .../activitys/NewBuildingDetailActivity.java | 18 +- .../activitys/NewGroupHouseAddActivity.java | 1006 +++++++++++++++++ .../activitys/NewHouseAddActivity.java | 190 +++- .../activitys/NewHouseDetailActivity.java | 84 +- .../activitys/NewRuleHouseAddActivity.java | 511 +++++++++ .../fragments/BuildingManageFragment.java | 8 +- .../fragments/CommunityManageFragment.java | 11 +- .../fragments/HireHouseManageFragment.java | 2 +- .../fragments/HouseManageNewFragment.java | 8 +- .../normal/CensusClaimListActivity.java | 410 +++++++ .../normal/CensusRegisterAddActivity.java | 7 +- .../normal/CensusRegisterDetailActivity.java | 14 +- .../adapters/HouseFloorAdapter.java | 49 + .../adapters/HouseFloorInputAdapter.java | 69 ++ .../adapters/HouseLiveAddPersonAdapter.java | 65 ++ .../adapters/HouseLivePersonAdapter.java | 18 +- .../adapters/HouseRoomInputAdapter.java | 56 + .../adapters/HouseRoomItemAdapter.java | 48 + .../adapters/HouseUnitAdapter.java | 90 ++ .../adapters/PersonBaseClaimAdapter.java | 59 + .../PersonBaseHouseLiveSelAdapter.java | 11 + .../adapters/PersonTagAdapter.java | 13 +- .../adapters/SelectedHousePersonAdapter.java | 52 + .../holders/CensusPersonClaimHolder.java | 38 + .../adapters/holders/HouseFloorHolder.java | 18 + .../holders/HouseFloorInputHolder.java | 27 + .../adapters/holders/HousePersonHolder.java | 3 +- .../holders/HouseRoomInputHolder.java | 24 + .../adapters/holders/HouseRoomItemHolder.java | 21 + .../adapters/holders/HouseUnitHolder.java | 27 + .../beans/NewHouseDetailBean.java | 6 +- .../beans/ResultListBean.java | 57 + .../beans/SaveBindLiveHousePerson.java | 18 + .../beans/SaveGroupHouse.java | 224 ++++ .../beans/SaveNewHouseBean.java | 107 +- .../beans/person/PersonBaseListBean.java | 3 +- .../net/LocationApiService.java | 32 +- .../widget/BuildingPopup.java | 2 +- .../widget/CustomLinearLayout.java | 33 + .../widget/InputOriContent.java | 31 + .../realtimelocation/widget/InputView.java | 29 + .../widget/SecondContent.java | 33 + .../widget/SimpleTextWatch.java | 15 + .../realtimelocation/widget/TitleContent.java | 29 + .../widget/TitleTextView.java | 33 + .../res/drawable-xhdpi/ic_add_floor_icon.png | Bin 0 -> 2065 bytes .../main/res/drawable-xhdpi/ic_add_icon.png | Bin 0 -> 1177 bytes .../main/res/drawable-xhdpi/ic_del_icon.png | Bin 0 -> 590 bytes .../res/drawable-xhdpi/ic_floor_add_icon.png | Bin 0 -> 715 bytes .../res/drawable-xhdpi/ic_floor_del_icon.png | Bin 0 -> 624 bytes .../res/drawable-xhdpi/ic_house_add_icon.png | Bin 0 -> 610 bytes .../res/drawable-xhdpi/ic_house_del_icon.png | Bin 0 -> 1016 bytes .../res/drawable-xhdpi/ic_scroll_bar_line.png | Bin 0 -> 162 bytes app/src/main/res/drawable/sel_radio_white.xml | 5 + .../res/drawable/shape_btn_no_radius_blue.xml | 2 +- app/src/main/res/drawable/shp_scroll_bar.xml | 6 + .../res/layout/activity_add_new_community.xml | 4 +- .../layout/activity_add_new_group_house.xml | 366 ++++++ .../activity_add_new_group_rule_house.xml | 171 +++ .../res/layout/activity_add_new_house.xml | 146 ++- .../res/layout/activity_census_claim_list.xml | 63 ++ .../layout/activity_detail_new_building.xml | 1 - .../activity_house_live_person_bind.xml | 39 +- .../activity_house_live_person_bind_edit.xml | 12 +- app/src/main/res/layout/item_floor_input.xml | 62 + app/src/main/res/layout/item_floor_item.xml | 13 + .../layout/item_person_bind_live_house.xml | 7 +- app/src/main/res/layout/item_person_claim.xml | 95 ++ app/src/main/res/layout/item_person_tag.xml | 13 +- .../main/res/layout/item_person_tenement.xml | 50 +- app/src/main/res/layout/item_room_input.xml | 30 + app/src/main/res/layout/item_room_item.xml | 17 + app/src/main/res/layout/item_unit_item.xml | 64 ++ .../res/layout/popup_condition_layout.xml | 7 +- app/src/main/res/values/styles.xml | 10 + build.gradle | 4 +- .../core/retrofit_net/BaseUrlApi.java | 10 +- .../widget/views/CenterFuncDialogView.java | 10 +- .../cm_utils/utils/DesensitizationUtil.java | 197 ++++ .../drawable-xhdpi/ic_radio_circle_normal.png | Bin 0 -> 262 bytes .../drawable-xhdpi/ic_radio_circle_sel.png | Bin 0 -> 344 bytes .../src/main/res/drawable/shp_status_tag.xml | 9 + .../main/res/layout/dialog_choose_func.xml | 27 +- 89 files changed, 5206 insertions(+), 235 deletions(-) create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewGroupHouseAddActivity.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewRuleHouseAddActivity.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/normal/CensusClaimListActivity.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseFloorAdapter.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseFloorInputAdapter.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseLiveAddPersonAdapter.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseRoomInputAdapter.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseRoomItemAdapter.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseUnitAdapter.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/adapters/PersonBaseClaimAdapter.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/adapters/SelectedHousePersonAdapter.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/CensusPersonClaimHolder.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseFloorHolder.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseFloorInputHolder.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseRoomInputHolder.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseRoomItemHolder.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseUnitHolder.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/beans/ResultListBean.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/beans/SaveGroupHouse.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/widget/CustomLinearLayout.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/widget/InputOriContent.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/widget/InputView.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/widget/SecondContent.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/widget/SimpleTextWatch.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/widget/TitleContent.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/widget/TitleTextView.java create mode 100644 app/src/main/res/drawable-xhdpi/ic_add_floor_icon.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_add_icon.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_del_icon.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_floor_add_icon.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_floor_del_icon.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_house_add_icon.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_house_del_icon.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_scroll_bar_line.png create mode 100644 app/src/main/res/drawable/sel_radio_white.xml create mode 100644 app/src/main/res/drawable/shp_scroll_bar.xml create mode 100644 app/src/main/res/layout/activity_add_new_group_house.xml create mode 100644 app/src/main/res/layout/activity_add_new_group_rule_house.xml create mode 100644 app/src/main/res/layout/activity_census_claim_list.xml create mode 100644 app/src/main/res/layout/item_floor_input.xml create mode 100644 app/src/main/res/layout/item_floor_item.xml create mode 100644 app/src/main/res/layout/item_person_claim.xml create mode 100644 app/src/main/res/layout/item_room_input.xml create mode 100644 app/src/main/res/layout/item_room_item.xml create mode 100644 app/src/main/res/layout/item_unit_item.xml create mode 100644 cm_utils/src/main/java/com/sucstepsoft/cm_utils/utils/DesensitizationUtil.java create mode 100644 cm_utils/src/main/res/drawable-xhdpi/ic_radio_circle_normal.png create mode 100644 cm_utils/src/main/res/drawable-xhdpi/ic_radio_circle_sel.png create mode 100755 cm_utils/src/main/res/drawable/shp_status_tag.xml diff --git a/README.md b/README.md index 40a3b08..3fbcb03 100755 --- a/README.md +++ b/README.md @@ -49,3 +49,11 @@ 1.请假 类型跟换数据字典 添加上传假条 ``` + +## 2023-11-16 +``` +> 1.5.0 + +1.人口房屋录入 + +``` diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f8999ef..a8437e8 100755 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,6 +48,22 @@ android:theme="@style/AppTheme" android:usesCleartextTraffic="true" tools:ignore="GoogleAppIndexingWarning"> + + + + mFragments = new ArrayList<>(); @Override @@ -49,22 +50,41 @@ public class BuildingViewPageActivity extends BaseActivity { ButterKnife.bind(this); mTvBaseTitle.setText("房屋管理"); refreshView(STATE_LOAD_SUCCESS); - mTvPublish.setVisibility(ViewPager.VISIBLE); mTvPublish.setText("新增"); CommunityManageFragment communityFragment = new CommunityManageFragment(); BuildingManageFragment buildingManageFragment = new BuildingManageFragment(); HouseManageNewFragment houseManageNewFragment = new HouseManageNewFragment(); - HireHouseManageFragment hireHouseManageFragment = new HireHouseManageFragment(); +// HireHouseManageFragment hireHouseManageFragment = new HireHouseManageFragment(); mFragments.add(communityFragment); mFragments.add(buildingManageFragment); mFragments.add(houseManageNewFragment); - mFragments.add(hireHouseManageFragment); - +// mFragments.add(hireHouseManageFragment); + mTvPublish.setVisibility(View.GONE); VpNoticeAdapter adapter = new VpNoticeAdapter(getSupportFragmentManager()); mVpContent.setAdapter(adapter); - mTablayout.setxTabDisplayNum(4); + mTablayout.setxTabDisplayNum(3); mTablayout.setupWithViewPager(mVpContent); mTvPublish.setOnClickListener(v -> onAddPage()); + mVpContent.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int i, float v, int i1) { + + } + + @Override + public void onPageSelected(int i) { + if (i == 2 || i == 3) { + mTvPublish.setVisibility(View.VISIBLE); + } else { + mTvPublish.setVisibility(View.GONE); + } + } + + @Override + public void onPageScrollStateChanged(int i) { + + } + }); } /** diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/HouseLivePersonBindActivity.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/HouseLivePersonBindActivity.java index 873718a..8479023 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/HouseLivePersonBindActivity.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/HouseLivePersonBindActivity.java @@ -1,24 +1,34 @@ package com.sucstepsoft.realtimelocation.activitys.census.newhouse.activitys; +import android.app.AlertDialog; import android.app.ProgressDialog; +import android.content.Intent; +import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; import android.text.TextUtils; +import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; +import android.widget.TextView; +import com.google.android.flexbox.FlexDirection; +import com.google.android.flexbox.FlexWrap; +import com.google.android.flexbox.FlexboxLayoutManager; import com.google.gson.Gson; import com.jcodecraeer.xrecyclerview.ProgressStyle; import com.jcodecraeer.xrecyclerview.XRecyclerView; import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager; import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity; -import com.sucstepsoft.cm_utils.utils.TimeUtils; import com.sucstepsoft.cm_utils.utils.ToastUtils; import com.sucstepsoft.cm_utils.utils.UIUtil; import com.sucstepsoft.cm_utils.utils.UserLgUtils; import com.sucstepsoft.realtimelocation.R; +import com.sucstepsoft.realtimelocation.activitys.census.normal.CensusRegisterAddActivity; import com.sucstepsoft.realtimelocation.adapters.PersonBaseHouseLiveSelAdapter; +import com.sucstepsoft.realtimelocation.adapters.SelectedHousePersonAdapter; import com.sucstepsoft.realtimelocation.beans.SaveBindLiveHousePerson; import com.sucstepsoft.realtimelocation.beans.SuccessBean; import com.sucstepsoft.realtimelocation.beans.person.PersonBaseListBean; @@ -68,6 +78,14 @@ public class HouseLivePersonBindActivity extends BaseActivity { Button mBtnConfirm; @BindView(R.id.ll_content) LinearLayout mLlContent; + @BindView(R.id.rlv_select) + RecyclerView mRlvSelect; + @BindView(R.id.ll_person) + LinearLayout mLlPerson; + @BindView(R.id.ll_single) + LinearLayout mLlSingle; + @BindView(R.id.tv_hint) + TextView mTvHint; private Unbinder mBind; private String mId;//房屋ID private String mKeywords = ""; @@ -75,6 +93,8 @@ public class HouseLivePersonBindActivity extends BaseActivity { private PersonBaseHouseLiveSelAdapter mAdapter; private List mDatas = new ArrayList<>(); private PersonBaseListBean.RowsBean mSelBean; + private ArrayList mSelBeans; + private SelectedHousePersonAdapter mSelAdapter; @Override protected int setLayoutId() { @@ -88,11 +108,13 @@ public class HouseLivePersonBindActivity extends BaseActivity { refreshView(STATE_LOAD_SUCCESS); mId = getIntent().getStringExtra("id"); if (TextUtils.isEmpty(mId)) { - ToastUtils.showShort("数据有误"); - finish(); + mLlSingle.setVisibility(View.GONE); + mLlPerson.setVisibility(View.VISIBLE); } else { - initPersonList(); + mLlSingle.setVisibility(View.VISIBLE); + mLlPerson.setVisibility(View.GONE); } + initPersonList(); } /** @@ -105,12 +127,71 @@ public class HouseLivePersonBindActivity extends BaseActivity { mEtSearchIdCard.setText(""); refreshData(); }); + //选择 + FlexboxLayoutManager manage = new FlexboxLayoutManager(mActivity, FlexDirection.ROW, FlexWrap.WRAP) { + @Override + public boolean canScrollHorizontally() { + return false; + } + }; + mSelBeans = new ArrayList<>(); + mSelAdapter = new SelectedHousePersonAdapter(mActivity, mSelBeans); + mRlvSelect.setLayoutManager(manage); + mRlvSelect.setAdapter(mSelAdapter); + mSelAdapter.addOnDelListener((bean, pos) -> { + for (PersonBaseListBean.RowsBean p : mDatas) { + if (p.getPopulationInfoId().equals(bean.getPopulationInfoId())) { + p.setCheck(false); + } + } + mSelBeans.remove(bean); + mSelAdapter.setData(mSelBeans); + mAdapter.setData(mDatas); + if (mSelBeans.size() == 0) { + mTvHint.setVisibility(View.VISIBLE); + } else { + mTvHint.setVisibility(View.GONE); + } + }); + + mAdapter = new PersonBaseHouseLiveSelAdapter(mActivity, mDatas); LinearLayoutManager layoutManager = new LinearLayoutManager(mActivity); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); mXrlvContent.setLayoutManager(layoutManager); mXrlvContent.setAdapter(mAdapter); - mAdapter.addOnItemClickListener(bean -> doSetCheckBean(bean)); + mAdapter.addOnitemCheckChange((bean, isCheck, pos) -> { + if (TextUtils.isEmpty(mId)) { + if (isCheck) { + mSelBeans.add(bean); + } else { + mSelBeans.remove(bean); + } + mSelAdapter.setData(mSelBeans); + bean.setCheck(isCheck); + mAdapter.notifyDataSetChanged(); + if (mSelBeans.size() == 0) { + mTvHint.setVisibility(View.VISIBLE); + } else { + mTvHint.setVisibility(View.GONE); + } + } else { + //单选 + mSelBean = bean; + mEtName.setText(bean.getName()); + mEtIdCard.setText(bean.getIdcard()); + mEtPhone.setText(bean.getPhone()); + for (int i = 0; i < mDatas.size(); i++) { + if (mDatas.get(i).getPopulationInfoId().equals(bean.getPopulationInfoId())) { + mDatas.get(i).setCheck(true); + + } else { + mDatas.get(i).setCheck(false); + } + } + mAdapter.setData(mDatas); + } + }); mXrlvContent.setRefreshProgressStyle(ProgressStyle.BallGridBeat); mXrlvContent.setLoadingMoreProgressStyle(ProgressStyle.Pacman); mXrlvContent.setPullRefreshEnabled(true); @@ -126,10 +207,86 @@ public class HouseLivePersonBindActivity extends BaseActivity { getPersonList(mCurPage); } }); - mBtnConfirm.setOnClickListener(v -> doSubmit()); + mBtnConfirm.setOnClickListener(v -> doConfirm()); getPersonList(mCurPage); } + /** + * 提交 + */ + private void doConfirm() { + if (!TextUtils.isEmpty(mId)) { + if (mSelBean == null) { + ToastUtils.showShort("请选择人员"); + } else { + getPersonInfo(mSelBean.getPopulationInfoId()); + } + } else { + if (mSelBeans == null || mSelBeans.size() <= 0) { + ToastUtils.showShort("请选择人员"); + } else { + String ids = ""; + for (int i = 0; i < mSelBeans.size(); i++) { + ids += mSelBeans.get(i).getPopulationInfoId() + "_"; + } + if (ids.endsWith("_")) { + ids = ids.substring(0, ids.length() - 1); + } + getPersonInfo(ids); + } + } + } + + /** + * 获取未脱敏的信息 + */ + private void getPersonInfo(String id) { + ProgressDialog dialog = UIUtil.initDialog(mActivity, "获取中..."); + dialog.show(); + RetrofitManager.getInstance() + .create(LocationApiService.class) + .getListByIds(id, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(List rowsBeans) { + dialog.dismiss(); + if (rowsBeans != null && rowsBeans.size() > 0) { + if (!TextUtils.isEmpty(mId)) { + mSelBean = rowsBeans.get(0); + doSubmit(); + } else { + mSelBeans = new ArrayList<>(rowsBeans); + Intent intent = new Intent(); + intent.putExtra("beans", mSelBeans); + setResult(RESULT_OK, intent); + finish(); + } + + } else { + ToastUtils.showShort("未查询到人员信息"); + } + } + + @Override + public void onError(Throwable e) { + dialog.dismiss(); + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + /** * 设置选中的Bean @@ -137,18 +294,43 @@ public class HouseLivePersonBindActivity extends BaseActivity { * @param bean */ private void doSetCheckBean(PersonBaseListBean.RowsBean bean) { - mSelBean = bean; - mEtName.setText(bean.getName()); - mEtIdCard.setText(bean.getIdcard()); - mEtPhone.setText(bean.getPhone()); - for (int i = 0; i < mDatas.size(); i++) { - if (mDatas.get(i).getPopulationInfoId().equals(bean.getPopulationInfoId())) { - mDatas.get(i).setCheck(true); + if (!TextUtils.isEmpty(mId)) { + mSelBean = bean; + mEtName.setText(bean.getName()); + mEtIdCard.setText(bean.getIdcard()); + mEtPhone.setText(bean.getPhone()); + for (int i = 0; i < mDatas.size(); i++) { + if (mDatas.get(i).getPopulationInfoId().equals(bean.getPopulationInfoId())) { + mDatas.get(i).setCheck(true); + + } else { + mDatas.get(i).setCheck(false); + } + } + mAdapter.setData(mDatas); + } else { + //多选 + boolean isExist = false; + for (int i = 0; i < mSelBeans.size(); i++) { + if (mSelBeans.get(i).getPopulationInfoId().equals(bean.getPopulationInfoId())) { + isExist = true; + break; + } + } + if (isExist) { + mSelBeans.remove(bean); } else { - mDatas.get(i).setCheck(false); + mSelBeans.add(bean); + } + mSelAdapter.setData(mSelBeans); + for (int i = 0; i < mDatas.size(); i++) { + for (int j = 0; j < mSelBeans.size(); j++) { + if (mDatas.get(i).getPopulationInfoId().equals(mSelBeans.get(j).getPopulationInfoId())) { + mDatas.get(i).setCheck(true); + } + } } } - mAdapter.setData(mDatas); } private void refreshData() { @@ -189,6 +371,16 @@ public class HouseLivePersonBindActivity extends BaseActivity { public void onNext(PersonBaseListBean leaveListBean) { if (leaveListBean != null && leaveListBean.getRows() != null && leaveListBean.getRows().size() > 0) { ++mCurPage; + if (TextUtils.isEmpty(mId)) { + for (int i = 0; i < mSelBeans.size(); i++) { + PersonBaseListBean.RowsBean rowsBean = mSelBeans.get(i); + for (int j = 0; j < leaveListBean.getRows().size(); j++) { + if (rowsBean.getPopulationInfoId().equals(leaveListBean.getRows().get(j).getPopulationInfoId())) { + leaveListBean.getRows().get(j).setCheck(true); + } + } + } + } if (page == 1) { mDatas.clear(); mDatas.addAll(leaveListBean.getRows()); @@ -222,6 +414,7 @@ public class HouseLivePersonBindActivity extends BaseActivity { //无数据 } else { ToastUtils.showShort("未查询到相关内容"); + showAddAlter(); } } } @@ -239,6 +432,33 @@ public class HouseLivePersonBindActivity extends BaseActivity { }); } + /** + * 没有搜索到人员,提示新增 + */ + private void showAddAlter() { + AlertDialog.Builder builder = new AlertDialog.Builder(mActivity); + builder.setTitle("提示") + .setMessage("未搜索到该人员信息,现在要去新增吗?") + .setPositiveButton("确定", (dialog, which) -> { + dialog.dismiss(); + Intent intent = new Intent(mActivity, CensusRegisterAddActivity.class); + intent.putExtra("title", "基础信息录入"); + startActivityForResult(intent, 12345); + }) + .setNegativeButton("取消", (dialog, which) -> dialog.dismiss()) + .create() + .show(); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + if (resultCode == RESULT_OK) { + if (requestCode == 12345) { + doSearch(); + } + } + super.onActivityResult(requestCode, resultCode, data); + } /** * 提交参数 @@ -264,8 +484,8 @@ public class HouseLivePersonBindActivity extends BaseActivity { public void onNext(@NonNull SuccessBean successBean) { dialog.dismiss(); ToastUtils.showShort("保存成功"); - setResult(RESULT_OK); - finish(); + showConfirmDialog(); + } @Override @@ -282,19 +502,43 @@ public class HouseLivePersonBindActivity extends BaseActivity { } } + /** + * 继续绑定 + */ + private void showConfirmDialog() { + AlertDialog.Builder builder = new AlertDialog.Builder(mActivity); + builder.setTitle("提示") + .setMessage("需要继续添加入住人员吗?") + .setPositiveButton("确定", (dialog, which) -> { + dialog.dismiss(); + for (int i = 0; i < mDatas.size(); i++) { + if (mSelBean.getPopulationInfoId().equals(mDatas.get(i).getPopulationInfoId())) { + mDatas.get(i).setCheck(false); + } + } + mAdapter.setData(mDatas); + mSelBean = null; + mEtName.setText(""); + mEtPhone.setText(""); + mEtIdCard.setText(""); + }) + .setNegativeButton("取消", (dialog, which) -> { + dialog.dismiss(); + setResult(RESULT_OK); + finish(); + }) + .create() + .show(); + } + private RequestBody buildParams() { SaveBindLiveHousePerson bean = new SaveBindLiveHousePerson(); - String name = mEtName.getText().toString().trim(); - bean.setName(name); - String phone = mEtPhone.getText().toString().trim(); - bean.setPhone(phone); - String idCard = mEtIdCard.getText().toString().trim(); - bean.setCardNum(idCard); + bean.setName(mSelBean.getName()); + bean.setPhone(mSelBean.getPhone()); + bean.setCardNum(mSelBean.getIdcard()); bean.setHouseId(mId); - bean.setBindTime(TimeUtils.getNowTime()); - if (mSelBean != null) { - bean.setPopulationInfoId(mSelBean.getPopulationInfoId()); - } + bean.setOutHouse("0"); + bean.setPopulationInfoId(mSelBean.getPopulationInfoId()); Gson gson = new Gson(); String obj = gson.toJson(bean); RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), obj); diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewBuildingDetailActivity.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewBuildingDetailActivity.java index 1d3dbc4..e50509d 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewBuildingDetailActivity.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewBuildingDetailActivity.java @@ -180,11 +180,11 @@ public class NewBuildingDetailActivity extends BaseActivity { } mPhotoAdapter.setData(mPhotos); } - if (UserLgUtils.getUserId().equals(bean.getCreator())){ - mLlBtns.setVisibility(View.VISIBLE); - } else { - mLlBtns.setVisibility(View.GONE); - } +// if (UserLgUtils.getUserId().equals(bean.getCreator())){ +// mLlBtns.setVisibility(View.VISIBLE); +// } else { +// } + mLlBtns.setVisibility(View.GONE); refreshView(STATE_LOAD_SUCCESS); } @@ -271,10 +271,10 @@ public class NewBuildingDetailActivity extends BaseActivity { } mMpView.showZoomControls(false); mBaiduMap.animateMapStatus(u); - mTvLocLng.setOnClickListener(v -> { - Intent intent = new Intent(mActivity, TakePointActivity.class); - startActivityForResult(intent, 1234); - }); +// mTvLocLng.setOnClickListener(v -> { +// Intent intent = new Intent(mActivity, TakePointActivity.class); +// startActivityForResult(intent, 1234); +// }); } /** diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewGroupHouseAddActivity.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewGroupHouseAddActivity.java new file mode 100644 index 0000000..fa0960b --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewGroupHouseAddActivity.java @@ -0,0 +1,1006 @@ +package com.sucstepsoft.realtimelocation.activitys.census.newhouse.activitys; + +import android.app.ProgressDialog; +import android.content.Intent; +import android.database.Cursor; +import android.graphics.Color; +import android.net.Uri; +import android.os.Build; +import android.os.Environment; +import android.provider.MediaStore; +import android.support.annotation.Nullable; +import android.support.v4.content.FileProvider; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.text.TextUtils; +import android.view.Gravity; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.ZoomControls; + +import com.baidu.mapapi.map.BaiduMap; +import com.baidu.mapapi.map.BitmapDescriptor; +import com.baidu.mapapi.map.BitmapDescriptorFactory; +import com.baidu.mapapi.map.MapStatus; +import com.baidu.mapapi.map.MapStatusUpdate; +import com.baidu.mapapi.map.MapStatusUpdateFactory; +import com.baidu.mapapi.map.MarkerOptions; +import com.baidu.mapapi.map.OverlayOptions; +import com.baidu.mapapi.map.TextureMapView; +import com.baidu.mapapi.model.LatLng; +import com.bigkoo.pickerview.builder.OptionsPickerBuilder; +import com.bigkoo.pickerview.view.OptionsPickerView; +import com.google.gson.Gson; +import com.sucstepsoft.cm_utils.constant.PathConfig; +import com.sucstepsoft.cm_utils.core.beans.AddPhotoBean; +import com.sucstepsoft.cm_utils.core.retrofit_net.BaseUrlApi; +import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager; +import com.sucstepsoft.cm_utils.core.widget.base.AddPhotoAdapter; +import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity; +import com.sucstepsoft.cm_utils.core.widget.views.ButtomDialogView; +import com.sucstepsoft.cm_utils.utils.ProiderUtil; +import com.sucstepsoft.cm_utils.utils.ToastUtils; +import com.sucstepsoft.cm_utils.utils.UIUtil; +import com.sucstepsoft.cm_utils.utils.UserLgUtils; +import com.sucstepsoft.realtimelocation.R; +import com.sucstepsoft.realtimelocation.activitys.common.PhotoActivity; +import com.sucstepsoft.realtimelocation.activitys.issue.TakePointActivity; +import com.sucstepsoft.realtimelocation.adapters.HouseUnitAdapter; +import com.sucstepsoft.realtimelocation.beans.BaseUserBean; +import com.sucstepsoft.realtimelocation.beans.CommunityBean; +import com.sucstepsoft.realtimelocation.beans.DicBean; +import com.sucstepsoft.realtimelocation.beans.NewBuildingBean; +import com.sucstepsoft.realtimelocation.beans.NewCommunityDetailBean; +import com.sucstepsoft.realtimelocation.beans.SaveGroupHouse; +import com.sucstepsoft.realtimelocation.beans.StreetBean; +import com.sucstepsoft.realtimelocation.beans.SuccessBean; +import com.sucstepsoft.realtimelocation.net.LocationApiService; +import com.sucstepsoft.realtimelocation.utils.ExceptionHandler; + +import java.io.File; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.Unbinder; +import io.reactivex.Observer; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.annotations.NonNull; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; +import okhttp3.MediaType; +import okhttp3.MultipartBody; +import okhttp3.RequestBody; +import top.zibin.luban.Luban; +import top.zibin.luban.OnCompressListener; + +/** + * 房屋添加-批量添加 + */ +public class NewGroupHouseAddActivity extends BaseActivity { + + + @BindView(R.id.tv_street) + TextView mTvStreet; + @BindView(R.id.tv_community) + TextView mTvCommunity; + @BindView(R.id.tv_community_area) + TextView mTvCommunityArea; + @BindView(R.id.et_building_name) + EditText mEtBuildingName; + @BindView(R.id.et_building_num) + EditText mEtBuildingNum; + @BindView(R.id.et_floor_num) + EditText mEtFloorNum; + @BindView(R.id.et_unit_num) + EditText mEtUnitNum; + @BindView(R.id.tv_loc_lng) + TextView mTvLocLng; + @BindView(R.id.mp_view) + TextureMapView mMpView; + @BindView(R.id.tv_point) + TextView mTvPoint; + @BindView(R.id.et_address) + EditText mEtAddress; + @BindView(R.id.btn_add_unit) + ImageView mBtnAddUnit; + @BindView(R.id.rlv_units) + RecyclerView mRlvUnits; + @BindView(R.id.btn_confirm) + Button mBtnConfirm; + @BindView(R.id.rlv_photo) + RecyclerView mRlvPhoto; + @BindView(R.id.tv_building) + TextView mTvBuilding; + private Unbinder mBind; + + private OptionsPickerView mArea4Picker; + private OptionsPickerView mArea5Picker; + private List mArea4List; + private List mArea5List; + private StreetBean mSelArea4; + private CommunityBean mSelArea5; + private OptionsPickerView mDicPicker; + private List mDicBeanList; + + private List mCommunityList; + private OptionsPickerView mCommunityPicker; + private NewCommunityDetailBean mSelCommunity; + + private List mUnitList; + private List mFloorList; + private DicBean mSelUnit; + private DicBean mSelFloor; + private OptionsPickerView mUnitPicker; + private OptionsPickerView mFloorPicker; + private NewBuildingBean.RowsBean mSelBuilding; + private List mBuildingList; + private OptionsPickerView mBuildingPicker; + private SimpleDateFormat mDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + private String mId = ""; + private DicBean mSelHouseFrame; + private String mSelLat; + private String mSelLng; + + private BaiduMap mBaiduMap; + private LatLng mDefaultPoint; + private BitmapDescriptor mBitmapDescriptor; + private List mPhotos = new ArrayList<>(); + private AddPhotoBean mCurrentBean; + private String mPicPath; + private String mPhotoIds = "";//相片Id + private AddPhotoAdapter mPhotoAdapter; + + private HouseUnitAdapter mUnitAdapter; + private List mDatas = new ArrayList<>(); + + @Override + protected int setLayoutId() { + return R.layout.activity_add_new_group_house; + } + + @Override + public void initData() { + mBind = ButterKnife.bind(this); + mTvBaseTitle.setText("批量建房"); + refreshView(STATE_LOAD_SUCCESS); + initContentView(); + } + + private void doSubmit() { + if (checkParams()) { + doSave(); + } + + } + + /** + * 保存编辑 + */ + + + private void initContentView() { + mTvStreet.setOnClickListener(v -> onShowArea4()); + mTvCommunity.setOnClickListener(v -> onShowArea5()); + mTvCommunityArea.setOnClickListener(v -> onShowCommunity()); + mTvBuilding.setOnClickListener(v -> onShowBuildNum()); + addEmptyUnit(); + mUnitAdapter = new HouseUnitAdapter(mActivity, mDatas); + mRlvUnits.setLayoutManager(new LinearLayoutManager(mActivity)); + mRlvUnits.setAdapter(mUnitAdapter); + mUnitAdapter.setDelListener((bean, pos) -> { + if (mDatas.size() > 1) { + mDatas.remove(pos); + mUnitAdapter.notifyDataSetChanged(); + } else { + ToastUtils.showShort("必须存在一个单元信息"); + } + }); + mBtnAddUnit.setOnClickListener(v -> addEmptyUnit()); + mBtnConfirm.setOnClickListener(v -> doSubmit()); + + mPhotos.add(new AddPhotoBean()); + mPhotoAdapter = new AddPhotoAdapter(mActivity, mPhotos); + mRlvPhoto.setLayoutManager(new GridLayoutManager(mActivity, 4)); + mRlvPhoto.setAdapter(mPhotoAdapter); + //删除上传的相片 + mPhotoAdapter.addOnDeleteListener(((bean, i) -> { + mPhotoAdapter.removeItem(bean); + mPhotoIds = mPhotoIds.replace(bean.getId() + ",", ""); + })); + mPhotoAdapter.addOnItemClickListener(bean -> { + if (TextUtils.isEmpty(bean.getPath())) { + //空数据 + showSelectPhoto(bean); + } else { + //预览 + ArrayList list = new ArrayList<>(); + list.add(bean.getPath()); + Intent intent = new Intent(); + intent.putExtra(PhotoActivity.TAG_IMGURL, list); + intent.setClass(mActivity, PhotoActivity.class); + startActivity(intent); + } + }); + + initBaiduMap(); + } + + + /** + * 添加一个空的单元 + */ + private void addEmptyUnit() { + SaveGroupHouse.ResultListBean.FloorListBean.HouseListBean roomBean = new SaveGroupHouse.ResultListBean.FloorListBean.HouseListBean(); + SaveGroupHouse.ResultListBean.FloorListBean floorBean = new SaveGroupHouse.ResultListBean.FloorListBean(); + List roomBeans = new ArrayList<>(); + roomBeans.add(roomBean); + floorBean.setHouseList(roomBeans); + SaveGroupHouse.ResultListBean groupBean = new SaveGroupHouse.ResultListBean(); + List floorBeans = new ArrayList<>(); + floorBeans.add(floorBean); + groupBean.setFloorList(floorBeans); + mDatas.add(groupBean); + if (mUnitAdapter != null) { + mUnitAdapter.setData(mDatas); + } + } + + private void initBaiduMap() { + mDefaultPoint = new LatLng(PathConfig.LA, PathConfig.LO); + mBaiduMap = mMpView.getMap(); + MapStatus ms = new MapStatus.Builder().zoom(14).target(mDefaultPoint).build(); + MapStatusUpdate u = MapStatusUpdateFactory.newMapStatus(ms); + View child = mMpView.getChildAt(1); + if (child != null && (child instanceof ImageView || child instanceof ZoomControls)) { + child.setVisibility(View.GONE); + } + mMpView.showZoomControls(false); + mBaiduMap.animateMapStatus(u); + mTvLocLng.setOnClickListener(v -> { + Intent intent = new Intent(mActivity, TakePointActivity.class); + startActivityForResult(intent, 1234); + }); + } + + /** + * 添加marker + * + * @param latLng + */ + private void addMarker(LatLng latLng) { + mBaiduMap.clear(); + mBitmapDescriptor = BitmapDescriptorFactory.fromResource(R.drawable.ic_map_marker); + OverlayOptions option = new MarkerOptions() + .position(latLng) + .icon(mBitmapDescriptor) + .animateType(MarkerOptions.MarkerAnimateType.drop); + mBaiduMap.addOverlay(option); + MapStatus ms = new MapStatus.Builder().zoom(14).target(latLng).build(); + MapStatusUpdate u = MapStatusUpdateFactory.newMapStatus(ms); + mBaiduMap.animateMapStatus(u); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + if (resultCode == RESULT_OK) { + switch (requestCode) { + case BaseUrlApi.CAMERA_REQUEST://相机 + uploadImg(mPicPath, 1); + break; + case BaseUrlApi.PHOTO_REQUEST://相册 + try { + if (data == null) return; + Uri uri = data.getData(); + String[] proj = {MediaStore.Images.Media.DATA}; + Cursor cursor = managedQuery(uri, proj, null, null, null); + int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); + cursor.moveToFirst(); + String srcPath = cursor.getString(column_index); + uploadImg(srcPath, 2); + } catch (Exception e) { + e.printStackTrace(); + } + break; + case 1234: + String lo = data.getStringExtra("lo"); + String la = data.getStringExtra("la"); + String address = data.getStringExtra("address"); + mSelLat = la; + mSelLng = lo; + mTvPoint.setText("经纬度:" + mSelLat + "-" + mSelLng); + Double laD = Double.parseDouble(la); + Double loD = Double.parseDouble(lo); + addMarker(new LatLng(laD, loD)); + mEtAddress.setText(address); + break; + } + } + super.onActivityResult(requestCode, resultCode, data); + } + + /** + * 上传文件 + * + * @param picPath + */ + private void uploadImg(String picPath, int src) { + File file = new File(picPath); + if (!file.exists()) { + showToast("图片路径错误."); + return; + } + ProgressDialog progressDialog = UIUtil.initDialog(mActivity, "正在上传..."); + progressDialog.show(); + String pathStr = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + PathConfig.CATCH_PATH; + Luban.with(mActivity) + .load(picPath) + .ignoreBy(100) + .setTargetDir(pathStr) + .filter(path -> !(TextUtils.isEmpty(path) || path.toLowerCase().endsWith(".gif"))) + .setCompressListener(new OnCompressListener() { + @Override + public void onStart() { + + } + + @Override + public void onSuccess(File file) { + RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file); + MultipartBody.Part body = MultipartBody.Part.createFormData("image", file.getName(), requestFile); + RetrofitManager.getInstance() + .create(LocationApiService.class) + .uploadImage(body, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(BaseUserBean baseUserBean) { + if (progressDialog != null && progressDialog.isShowing()) { + progressDialog.dismiss(); + } + ToastUtils.showShort("上传成功"); + mPhotoIds += (baseUserBean.getData() + ","); + mCurrentBean.setId(baseUserBean.getData()); + mCurrentBean.setPath(picPath); + if (mPhotos.size() < 4) { + mPhotos.add(new AddPhotoBean()); + } + mPhotoAdapter.notifyDataSetChanged(); + mCurrentBean = null; + } + + @Override + public void onError(Throwable e) { + if (progressDialog != null && progressDialog.isShowing()) { + progressDialog.dismiss(); + } + ToastUtils.showShort("上传失败,请稍后重试."); + if (file.exists()) { + file.delete(); + } + } + + @Override + public void onComplete() { + + } + }); + } + + @Override + public void onError(Throwable e) { + if (progressDialog.isShowing()) { + progressDialog.dismiss(); + } + ToastUtils.showShort("图片上传失败,请稍后重试"); + } + }) + .launch(); + } + + /** + * 显示选择图片 + * + * @param bean + */ + private void showSelectPhoto(AddPhotoBean bean) { + hideSoftKeyboard(); + ButtomDialogView buttomDialogView = new ButtomDialogView.DialogBuilder(mActivity) + .setIsBackCancelable(true) + .setIscancelable(true) + .setShowLocation(Gravity.BOTTOM) + .setIsShowFile(false) + .build(); + buttomDialogView.addOnChoseListener(new ButtomDialogView.OnChoseListener() { + @Override + public void choseFile() { + } + + @Override + public void choseAlbum() { + mCurrentBean = bean; + Intent intent = new Intent(Intent.ACTION_PICK, null); + intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, + "image/*"); + startActivityForResult(intent, BaseUrlApi.PHOTO_REQUEST); + buttomDialogView.dismiss(); + } + + @Override + public void choseShoot() { + mCurrentBean = bean; + String pathStr = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + PathConfig.CATCH_PATH; + mPicPath = pathStr + System.currentTimeMillis() + ".jpg"; + File file = new File(mPicPath); + Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); + // 下面这句指定调用相机拍照后的照片存储的路径 + Uri uri; + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { + uri = Uri.fromFile(file); + } else { + uri = FileProvider.getUriForFile(mActivity, ProiderUtil.getFileProviderName(mActivity), file); + } + intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); + startActivityForResult(intent, BaseUrlApi.CAMERA_REQUEST); + } + + @Override + public void loginOut() { + + } + + @Override + public void changePwd() { + + } + }); + buttomDialogView.show(); + } + + /** + * 显示楼排选择 + */ + private void onShowBuildNum() { + if (mSelCommunity == null) { + ToastUtils.showShort("请选择所在小区"); + } else { + if (mBuildingList == null) { + getAllUnitNum(mSelCommunity.getResidentialId()); + } else { + mBuildingPicker = new OptionsPickerBuilder(mActivity, (options1, options2, options3, v) -> { + mSelBuilding = mBuildingList.get(options1); + mTvBuilding.setText(mSelBuilding.getName()); + + }) + .setTitleText("楼/排") + .isDialog(false) + .setCancelColor(Color.parseColor("#1189FF")) + .setSubmitColor(Color.parseColor("#1189FF")) + .setTitleColor(Color.parseColor("#1189FF")) + .build(); + mBuildingPicker.setPicker(mBuildingList); + mBuildingPicker.show(); + } + } + } + + + /** + * 根据小区获取楼 + * + * @param residentialId + */ + private void getAllUnitNum(String residentialId) { + ProgressDialog dialog = UIUtil.initDialog(mActivity, "获取中..."); + dialog.show(); + RetrofitManager.getInstance() + .create(LocationApiService.class) + .getAllBuilding(residentialId, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(List newCommunityDetailBeans) { + if (dialog != null && dialog.isShowing()) { + dialog.dismiss(); + } + if (newCommunityDetailBeans != null && newCommunityDetailBeans.size() > 0) { + mBuildingList = newCommunityDetailBeans; + onShowBuildNum(); + } else { + ToastUtils.showShort("所选小区下,暂无楼/排信息"); + } + } + + @Override + public void onError(Throwable e) { + if (dialog != null && dialog.isShowing()) { + dialog.dismiss(); + } + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + + + private boolean checkParams() { + if (mSelArea4 == null) { + ToastUtils.showShort("请选择所在街道"); + return false; + } + if (mSelArea5 == null) { + ToastUtils.showShort("请选择所在社区"); + return false; + } + if (mSelCommunity == null) { + ToastUtils.showShort("请选择所在小区"); + return false; + } + if (mSelBuilding == null) { + ToastUtils.showShort("请选择楼/排"); + return false; + } + List data = mUnitAdapter.getData(); + for (int i = 0; i < data.size(); i++) { + if (TextUtils.isEmpty(data.get(i).getUnitValue())) { + ToastUtils.showShort("请输入单元号"); + return false; + } + for (int j = 0; j < data.get(i).getFloorList().size(); j++) { + SaveGroupHouse.ResultListBean.FloorListBean floorBean = data.get(i).getFloorList().get(j); + if (TextUtils.isEmpty(floorBean.getFloorValue())) { + ToastUtils.showShort("请输入楼层"); + return false; + } + List roomList = data.get(i).getFloorList().get(j).getHouseList(); + for (int k = 0; k < roomList.size(); k++) { + if (TextUtils.isEmpty(roomList.get(k).getHouseValue())) { + ToastUtils.showShort("请输入门牌号"); + return false; + } + } + } + } + return true; + } + + + /** + * area4 + */ + private void onShowArea4() { + if (null == mArea4List || mArea4List.size() <= 0) { + getStreetList(); + } else { + mArea4Picker = new OptionsPickerBuilder(mActivity, (options1, options2, options3, v) -> { + StreetBean bean = mArea4List.get(options1); + mTvStreet.setText(bean.getName()); + mSelArea4 = bean; + + mSelArea5 = null; + mTvCommunity.setText(""); + mArea5List = null; + + mSelCommunity = null; + mCommunityList = null; + mTvCommunityArea.setText(""); + + mSelBuilding = null; + mBuildingList = null; + mTvBuilding.setText(""); + + }) + .setTitleText("请选择区域") + .isDialog(false) + .setCancelColor(Color.parseColor("#1189FF")) + .setSubmitColor(Color.parseColor("#1189FF")) + .setTitleColor(Color.parseColor("#1189FF")) + .build(); + mArea4Picker.setPicker(mArea4List); + mArea4Picker.show(); + } + } + + /** + * 获取街道 + */ + private void getStreetList() { + ProgressDialog dialog = UIUtil.initDialog(mActivity, "获取中..."); + dialog.show(); + RetrofitManager.getInstance() + .create(LocationApiService.class) + .getStreetList(UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(List streetBeans) { + if (dialog != null && dialog.isShowing()) { + dialog.dismiss(); + } + if (streetBeans != null && streetBeans.size() > 0) { + mArea4List = streetBeans; + onShowArea4(); + } else { + ToastUtils.showShort("暂无街道数据"); + } + } + + @Override + public void onError(Throwable e) { + if (dialog != null && dialog.isShowing()) { + dialog.dismiss(); + } + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + + /** + * area5 + */ + private void onShowArea5() { + if (null == mArea5List || mArea5List.size() <= 0) { + if (mSelArea4 == null) { + ToastUtils.showShort("请选择乡镇街道"); + } else { + getCommunity(mSelArea4.getId()); + } + } else { + mArea5Picker = new OptionsPickerBuilder(mActivity, (options1, options2, options3, v) -> { + CommunityBean bean = mArea5List.get(options1); + mTvCommunity.setText(bean.getCommunityName()); + mSelArea5 = bean; + + mSelCommunity = null; + mCommunityList = null; + mTvCommunityArea.setText(""); + + mSelBuilding = null; + mBuildingList = null; + mTvBuilding.setText(""); + + }) + .setTitleText("请选择社区") + .isDialog(false) + .setCancelColor(Color.parseColor("#1189FF")) + .setSubmitColor(Color.parseColor("#1189FF")) + .setTitleColor(Color.parseColor("#1189FF")) + .build(); + mArea5Picker.setPicker(mArea5List); + mArea5Picker.show(); + } + } + + private void getCommunity(String areaId) { + ProgressDialog dialog = UIUtil.initDialog(mActivity, "获取中..."); + dialog.show(); + RetrofitManager.getInstance() + .create(LocationApiService.class) + .getCommunityList(areaId, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(List communityBeans) { + dialog.dismiss(); + if (null != communityBeans && communityBeans.size() > 0) { + mArea5List = communityBeans; + onShowArea5(); + } else { + ToastUtils.showShort("暂无社区数据"); + } + + } + + @Override + public void onError(Throwable e) { + dialog.dismiss(); + ToastUtils.showShort("获取区域失败"); + } + + @Override + public void onComplete() { + + } + }); + } + + + /** + * 小区选择 + */ + private void onShowCommunity() { + if (mSelArea5 == null) { + ToastUtils.showShort("请选择所在社区"); + } else { + if (mCommunityList == null) { + getAllCommunity(mSelArea5.getCommunityId()); + } else { + mCommunityPicker = new OptionsPickerBuilder(mActivity, (options1, options2, options3, v) -> { + mSelCommunity = mCommunityList.get(options1); + mTvCommunityArea.setText(mSelCommunity.getName()); + + mSelBuilding = null; + mBuildingList = null; + mTvBuilding.setText(""); + + }) + .setTitleText("请选择小区") + .isDialog(false) + .setCancelColor(Color.parseColor("#1189FF")) + .setSubmitColor(Color.parseColor("#1189FF")) + .setTitleColor(Color.parseColor("#1189FF")) + .build(); + mCommunityPicker.setPicker(mCommunityList); + mCommunityPicker.show(); + } + } + + } + + /** + * 社区下全部小区 + * + * @param id + */ + private void getAllCommunity(String id) { + ProgressDialog dialog = UIUtil.initDialog(mActivity, "获取中..."); + dialog.show(); + RetrofitManager.getInstance() + .create(LocationApiService.class) + .getNewCommunityListAll(id, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(List newCommunityDetailBeans) { + if (dialog != null && dialog.isShowing()) { + dialog.dismiss(); + } + if (newCommunityDetailBeans != null && newCommunityDetailBeans.size() > 0) { + mCommunityList = newCommunityDetailBeans; + onShowCommunity(); + } else { + ToastUtils.showShort("所选社区下暂无小区"); + } + } + + @Override + public void onError(Throwable e) { + if (dialog != null && dialog.isShowing()) { + dialog.dismiss(); + } + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + + + private void onShowDicPicker(String id, int type, int source) { + hideSoftKeyboard(); + if (type == 1) { + mDicPicker = new OptionsPickerBuilder(mActivity, (o1, o2, o3, v) -> { + DicBean bean = mDicBeanList.get(o1); + chooseDic(bean, source); + }) + .setTitleText("请选择") + .setCancelColor(Color.parseColor("#1189FF")) + .setSubmitColor(Color.parseColor("#1189FF")) + .setTitleColor(Color.parseColor("#1189FF")) + .build(); + mDicPicker.setPicker(mDicBeanList); + mDicPicker.show(); + } else { + getDicListByType(id, type, source); + } + } + + private void chooseDic(DicBean bean, int source) { +// switch (source) { +// case 1://房屋类别 +// mSelHouseType = bean; +// mTvHouseType.setText(bean.getDictionaryName()); +// break; +// case 2://房屋性质 +// mHouseProperty = bean; +// mTvHouseProperty.setText(bean.getDictionaryName()); +// break; +// case 3://房屋种类 +// mSelHouseKind = bean; +// mTvHouseKind.setText(bean.getDictionaryName()); +// break; +// case 4: +// //房屋结构 +// mSelHouseFrame = bean; +// mTvHouseFrame.setText(bean.getDictionaryName()); +// break; +// case 5: +// //建筑用途 +// mSelBuildUse = bean; +// mTvBuildUse.setText(bean.getDictionaryName()); +// break; +// case 6: +// //房屋用途 +// mSelHouseUse = bean; +// mTvHouseUse.setText(bean.getDictionaryName()); +// break; +// case 7: +// //隐患类型 +// mSelTrouble = bean; +// mTvTrouble.setText(bean.getDictionaryName()); +// break; +// case 8: +// //租住类型 +// mSelRentingType = bean; +// mTvRentingType.setText(bean.getDictionaryName()); +// break; +// case 9://房主证件种类 +// mSelOwner = bean; +// mTvOwnerIdCardType.setText(bean.getDictionaryName()); +// break; +// case 10://托管人证件种类 +// mSelManage = bean; +// mTvManageIdCardType.setText(bean.getDictionaryName()); +// break; +// } + } + + + private void getDicListByType(String pId, int i, int source) { + ProgressDialog dialog = UIUtil.initDialog(mActivity, "获取中..."); + dialog.show(); + RetrofitManager.getInstance() + .create(LocationApiService.class) + .getDictListAllByPid(pId, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull List l) { + dialog.dismiss(); + if (l != null && l.size() > 0) { + mDicBeanList = l; + onShowDicPicker(pId, 1, source); + } else { + ToastUtils.showShort("暂无数据"); + } + } + + @Override + public void onError(@NonNull Throwable e) { + dialog.dismiss(); + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + + } + + + /** + * 提交数据 + */ + private void doSave() { + hideSoftKeyboard(); + RequestBody bean = buildParams(); + ProgressDialog progressDialog = UIUtil.initDialog(NewGroupHouseAddActivity.this, "添加中..."); + progressDialog.show(); + RetrofitManager.getInstance() + .create(LocationApiService.class) + .doSaveGroupHouse(bean, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(SuccessBean s) { + progressDialog.dismiss(); + ToastUtils.showShort("添加成功"); + setResult(RESULT_OK); + finish(); + } + + @Override + public void onError(Throwable e) { + progressDialog.dismiss(); + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + + + /** + * 构建提交参数 + * + * @return + */ + private RequestBody buildParams() { + SaveGroupHouse bean = new SaveGroupHouse(); + bean.setStreet(mSelArea4.getId()); + bean.setStreetName(mSelArea4.getName()); + + bean.setCommunity(mSelArea5.getCommunityId()); + bean.setCommunityName(mSelArea5.getCommunityName()); + + bean.setResidentialId(mSelCommunity.getResidentialId()); + bean.setResidentialName(mSelCommunity.getName()); + + bean.setBuildingId(mSelBuilding.getBuildingId()); + bean.setBuildingName(mSelBuilding.getName()); + + bean.setResultList(mDatas); + + Gson gson = new Gson(); + String obj = gson.toJson(bean); + RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), obj); + return requestBody; + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewHouseAddActivity.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewHouseAddActivity.java index bb8f1fa..f6139f0 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewHouseAddActivity.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewHouseAddActivity.java @@ -1,8 +1,13 @@ package com.sucstepsoft.realtimelocation.activitys.census.newhouse.activitys; import android.app.ProgressDialog; +import android.content.Intent; import android.graphics.Color; +import android.support.annotation.Nullable; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; import android.text.TextUtils; +import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; @@ -21,6 +26,7 @@ import com.sucstepsoft.cm_utils.utils.ToastUtils; import com.sucstepsoft.cm_utils.utils.UIUtil; import com.sucstepsoft.cm_utils.utils.UserLgUtils; import com.sucstepsoft.realtimelocation.R; +import com.sucstepsoft.realtimelocation.adapters.HouseLiveAddPersonAdapter; import com.sucstepsoft.realtimelocation.beans.CommunityBean; import com.sucstepsoft.realtimelocation.beans.DicBean; import com.sucstepsoft.realtimelocation.beans.NewBuildingBean; @@ -30,6 +36,7 @@ import com.sucstepsoft.realtimelocation.beans.NewHouseDetailBean; import com.sucstepsoft.realtimelocation.beans.SaveNewHouseBean; import com.sucstepsoft.realtimelocation.beans.StreetBean; import com.sucstepsoft.realtimelocation.beans.SuccessBean; +import com.sucstepsoft.realtimelocation.beans.person.PersonBaseListBean; import com.sucstepsoft.realtimelocation.net.LocationApiService; import com.sucstepsoft.realtimelocation.utils.ExceptionHandler; @@ -122,6 +129,14 @@ public class NewHouseAddActivity extends BaseActivity { Button mBtnConfirm; @BindView(R.id.ll_content) LinearLayout mLlContent; + @BindView(R.id.btn_add_person) + Button mBtnAddPerson; + @BindView(R.id.tv_hint) + TextView mTvHint; + @BindView(R.id.rlv_live_person) + RecyclerView mRlvLivePerson; + @BindView(R.id.ll_live_person) + LinearLayout mLlLivePerson; private Unbinder mBind; private OptionsPickerView mArea4Picker; @@ -158,6 +173,8 @@ public class NewHouseAddActivity extends BaseActivity { private DicBean mSelRentingType; private DicBean mSelOwner; private DicBean mSelManage; + private HouseLiveAddPersonAdapter mLiveAddPersonAdapter; + private List mSelLivePerson; @Override protected int setLayoutId() { @@ -172,8 +189,10 @@ public class NewHouseAddActivity extends BaseActivity { mId = getIntent().getStringExtra("id"); if (!TextUtils.isEmpty(mId)) { refreshView(STATE_LOAD_LOADING); + mLlLivePerson.setVisibility(View.GONE); getDetailById(); } else { + mLlLivePerson.setVisibility(View.VISIBLE); refreshView(STATE_LOAD_SUCCESS); } @@ -249,9 +268,55 @@ public class NewHouseAddActivity extends BaseActivity { mTvOwnerIdCardType.setOnClickListener(v -> onShowDicPicker(PathConfig.DIC_CARD_TYPE, 2, 9)); mTvManageIdCardType.setOnClickListener(v -> onShowDicPicker(PathConfig.DIC_CARD_TYPE, 2, 10)); mTvRegisterDate.setOnClickListener(v -> onShowDate(mTvRegisterDate)); + mSelLivePerson = new ArrayList<>(); + mLiveAddPersonAdapter = new HouseLiveAddPersonAdapter(mActivity, mSelLivePerson); + mRlvLivePerson.setLayoutManager(new LinearLayoutManager(mActivity)); + mRlvLivePerson.setAdapter(mLiveAddPersonAdapter); + mLiveAddPersonAdapter.setCanEdit(true); + if (mSelLivePerson.size() >= 1) { + mTvHint.setVisibility(View.GONE); + } else { + mTvHint.setVisibility(View.VISIBLE); + } + mLiveAddPersonAdapter.addOnEditListener(new HouseLiveAddPersonAdapter.OnEditListener() { + @Override + public void onDel(PersonBaseListBean.RowsBean bean, int pos) { + mSelLivePerson.remove(bean); + mLiveAddPersonAdapter.setData(mSelLivePerson); + if (mSelLivePerson.size() >= 1) { + mTvHint.setVisibility(View.GONE); + } else { + mTvHint.setVisibility(View.VISIBLE); + } + } + + @Override + public void onEdit(PersonBaseListBean.RowsBean b, int pos) { + + } + }); + mBtnAddPerson.setOnClickListener(v -> { + startActivityForResult(new Intent(mActivity, HouseLivePersonBindActivity.class), 12345); + }); mBtnConfirm.setOnClickListener(v -> doSubmit()); } + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + if (resultCode == RESULT_OK) { + if (requestCode == 12345) { + mSelLivePerson = (List) data.getSerializableExtra("beans"); + mLiveAddPersonAdapter.setData(mSelLivePerson); + if (mSelLivePerson != null && mSelLivePerson.size() > 0) { + mTvHint.setVisibility(View.GONE); + } else { + mTvHint.setVisibility(View.VISIBLE); + } + } + } + super.onActivityResult(requestCode, resultCode, data); + } + private void onShowDate(TextView tvItem) { hideSoftKeyboard(); TimePickerView mTimePickerView = new TimePickerBuilder(mActivity, (date, v) -> { @@ -278,7 +343,7 @@ public class NewHouseAddActivity extends BaseActivity { } else { mBuildingPicker = new OptionsPickerBuilder(mActivity, (options1, options2, options3, v) -> { mSelBuilding = mBuildingList.get(options1); - mTvBuildingNum.setText(mSelCommunity.getName()); + mTvBuildingNum.setText(mSelBuilding.getName()); mSelUnit = null; mUnitList = null; @@ -443,34 +508,34 @@ public class NewHouseAddActivity extends BaseActivity { ToastUtils.showShort("请选择所在楼/排"); return false; } - if (mSelHouseType == null) { - ToastUtils.showShort("请选择房屋类别"); - return false; - } - if (mHouseProperty == null) { - ToastUtils.showShort("请选择房屋性质"); - return false; - } - if (mSelHouseKind == null) { - ToastUtils.showShort("请选择房屋种类"); - return false; - } - if (mSelHouseFrame == null) { - ToastUtils.showShort("请选择房屋结构"); - return false; - } - if (mSelBuildUse == null) { - ToastUtils.showShort("请选择建筑用途"); - return false; - } - if (mSelHouseUse == null) { - ToastUtils.showShort("请选择房屋用途"); - return false; - } - if (mSelTrouble == null) { - ToastUtils.showShort("请选择隐患类型"); - return false; - } +// if (mSelHouseType == null) { +// ToastUtils.showShort("请选择房屋类别"); +// return false; +// } +// if (mHouseProperty == null) { +// ToastUtils.showShort("请选择房屋性质"); +// return false; +// } +// if (mSelHouseKind == null) { +// ToastUtils.showShort("请选择房屋种类"); +// return false; +// } +// if (mSelHouseFrame == null) { +// ToastUtils.showShort("请选择房屋结构"); +// return false; +// } +// if (mSelBuildUse == null) { +// ToastUtils.showShort("请选择建筑用途"); +// return false; +// } +// if (mSelHouseUse == null) { +// ToastUtils.showShort("请选择房屋用途"); +// return false; +// } +// if (mSelTrouble == null) { +// ToastUtils.showShort("请选择隐患类型"); +// return false; +// } return true; } @@ -1120,30 +1185,38 @@ public class NewHouseAddActivity extends BaseActivity { String unitNum = mTvUnitNum.getText().toString().trim(); bean.setAffiliationUnit(Integer.parseInt(unitNum)); String floorNum = mTvFloorNum.getText().toString().trim(); - bean.setAffiliationFloors(Integer.parseInt(floorNum)); + bean.setAffiliationFloors(floorNum); String door = mEtDoor.getText().toString().trim(); - bean.setHouseNum(Integer.parseInt(door)); + bean.setHouseNum(door); + if (mSelHouseType != null) { + bean.setCategoryId(mSelHouseType.getDictionaryId()); + bean.setCategoryName(mSelHouseType.getDictionaryName()); + } + if (mHouseProperty != null) { + bean.setNatureId(mHouseProperty.getDictionaryId()); + bean.setNatureName(mHouseProperty.getDictionaryName()); + } + if (mSelHouseFrame != null) { + bean.setStructureId(mSelHouseFrame.getDictionaryId()); + bean.setStructureName(mSelHouseFrame.getDictionaryName()); + } + if (mSelHouseKind != null) { + bean.setTypeId(mSelHouseKind.getDictionaryId()); + bean.setTypeName(mSelHouseKind.getDictionaryName()); + } + if (mSelBuildUse != null) { + bean.setBuildingPurposeId(mSelBuildUse.getDictionaryId()); + bean.setBuildingPurposeName(mSelBuildUse.getDictionaryName()); + } + if (mSelHouseUse != null) { + bean.setRoomUseId(mSelHouseUse.getDictionaryId()); + bean.setRoomUseName(mSelHouseUse.getDictionaryName()); + } - bean.setCategoryId(mSelHouseType.getDictionaryId()); - bean.setCategoryName(mSelHouseType.getDictionaryName()); - - bean.setNatureId(mHouseProperty.getDictionaryId()); - bean.setNatureName(mHouseProperty.getDictionaryName()); - - bean.setStructureId(mSelHouseFrame.getDictionaryId()); - bean.setStructureName(mSelHouseFrame.getDictionaryName()); - - bean.setTypeId(mSelHouseKind.getDictionaryId()); - bean.setTypeName(mSelHouseKind.getDictionaryName()); - - bean.setBuildingPurposeId(mSelBuildUse.getDictionaryId()); - bean.setBuildingPurposeName(mSelBuildUse.getDictionaryName()); - - bean.setRoomUseId(mSelHouseUse.getDictionaryId()); - bean.setRoomUseName(mSelHouseUse.getDictionaryName()); - - bean.setDangerId(mSelTrouble.getDictionaryId()); - bean.setDangerName(mSelTrouble.getDictionaryName()); + if (mSelTrouble != null) { + bean.setDangerId(mSelTrouble.getDictionaryId()); + bean.setDangerName(mSelTrouble.getDictionaryName()); + } String houseNumber = mEtHouseNumber.getText().toString().trim(); if (!TextUtils.isEmpty(houseNumber)) { bean.setRoomNum(Integer.parseInt(houseNumber)); @@ -1187,6 +1260,21 @@ public class NewHouseAddActivity extends BaseActivity { bean.setCustodianPhone(managePhone); String relation = mEtManageRelation.getText().toString().trim(); bean.setRelationshipHomeowner(relation); + + if (mSelLivePerson != null && mSelLivePerson.size() > 0) { + List list = new ArrayList<>(); + for (int i = 0; i < mSelLivePerson.size(); i++) { + PersonBaseListBean.RowsBean b1 = mSelLivePerson.get(i); + SaveNewHouseBean.PopulationVOListBean b = new SaveNewHouseBean.PopulationVOListBean(); + b.setName(b1.getName()); + b.setCardNum(b1.getIdcard()); + b.setPopulationInfoId(b1.getPopulationInfoId()); + b.setPhone(b1.getPhone()); + b.setOutHouse("0"); + list.add(b); + } + bean.setPopulationVOList(list); + } Gson gson = new Gson(); String obj = gson.toJson(bean); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), obj); diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewHouseDetailActivity.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewHouseDetailActivity.java index 32cde00..5de635e 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewHouseDetailActivity.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewHouseDetailActivity.java @@ -12,6 +12,7 @@ import android.widget.LinearLayout; import android.widget.Switch; import android.widget.TextView; +import com.google.gson.Gson; import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager; import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity; import com.sucstepsoft.cm_utils.utils.ToastUtils; @@ -21,6 +22,7 @@ import com.sucstepsoft.realtimelocation.R; import com.sucstepsoft.realtimelocation.adapters.HouseLivePersonAdapter; import com.sucstepsoft.realtimelocation.beans.HouseLivePersonBean; import com.sucstepsoft.realtimelocation.beans.NewHouseDetailBean; +import com.sucstepsoft.realtimelocation.beans.SaveBindLiveHousePerson; import com.sucstepsoft.realtimelocation.beans.SuccessBean; import com.sucstepsoft.realtimelocation.net.LocationApiService; import com.sucstepsoft.realtimelocation.utils.ExceptionHandler; @@ -36,6 +38,8 @@ import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.annotations.NonNull; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; +import okhttp3.MediaType; +import okhttp3.RequestBody; /** * 作者: Adam @@ -217,9 +221,11 @@ public class NewHouseDetailActivity extends BaseActivity { mLlBtns.setVisibility(View.VISIBLE); mBtnAddPerson.setVisibility(View.VISIBLE); mAdapter.setCanEdit(true); + mAdapter.setEncrypt(false); } else { mLlBtns.setVisibility(View.GONE); mBtnAddPerson.setVisibility(View.GONE); + mAdapter.setEncrypt(true); mAdapter.setCanEdit(false); } getBindPersonList(); @@ -238,7 +244,7 @@ public class NewHouseDetailActivity extends BaseActivity { mPersons = new ArrayList<>(); - mAdapter = new HouseLivePersonAdapter(mActivity, mPersons); + mAdapter = new HouseLivePersonAdapter(mActivity, mPersons, false); mRlvLivePerson.setLayoutManager(new LinearLayoutManager(mActivity)); mRlvLivePerson.setAdapter(mAdapter); mAdapter.addOnEditListener(new HouseLivePersonAdapter.OnEditListener() { @@ -249,14 +255,14 @@ public class NewHouseDetailActivity extends BaseActivity { @Override public void onEdit(HouseLivePersonBean b, int pos) { - + doLeavePerson(b, pos); } }); - mAdapter.addOnItemClickListener(bean -> { - Intent intent = new Intent(mActivity, EditHouseLivePersonBindActivity.class); - intent.putExtra("id", bean.getPopulationId()); - startActivityForResult(intent, 12); - }); +// mAdapter.addOnItemClickListener(bean -> { +// Intent intent = new Intent(mActivity, EditHouseLivePersonBindActivity.class); +// intent.putExtra("id", bean.getPopulationId()); +// startActivityForResult(intent, 12); +// }); mBtnAddPerson.setOnClickListener(v -> { Intent intent = new Intent(mActivity, HouseLivePersonBindActivity.class); intent.putExtra("id", mId); @@ -266,6 +272,70 @@ public class NewHouseDetailActivity extends BaseActivity { } + /** + * 人员离开 + * + * @param b outHouse 0正常 1离开 + * @param pos + */ + private void doLeavePerson(HouseLivePersonBean b, int pos) { + new AlertDialog.Builder(mActivity) + .setTitle("警告") + .setMessage("确定要将该人员移除该房屋吗?") + .setPositiveButton("确定", (dialog, which) -> { + dialog.dismiss(); + ProgressDialog s = UIUtil.initDialog(mActivity, "移除中..."); + s.dismiss(); + RequestBody body = buildLeaveBody(b); + RetrofitManager.getInstance() + .create(LocationApiService.class) + .doEditHouseLivePerson(b.getPopulationId(), body, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(SuccessBean successBean) { + s.dismiss(); + ToastUtils.showShort("移除成功"); + getBindPersonList(); + } + + @Override + public void onError(Throwable e) { + s.dismiss(); + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + }) + .setNegativeButton("取消", (dialog, which) -> dialog.dismiss()) + .create().show(); + } + + + private RequestBody buildLeaveBody(HouseLivePersonBean b) { + SaveBindLiveHousePerson bean = new SaveBindLiveHousePerson(); + bean.setName(b.getName()); + bean.setPhone(b.getPhone()); + bean.setCardNum(b.getCardNum()); + bean.setHouseId(b.getHouseId()); + bean.setOutHouse("1"); + bean.setPopulationInfoId(b.getPopulationInfoId()); + Gson gson = new Gson(); + String obj = gson.toJson(bean); + RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), obj); + return body; + } + /** * 删除居住人员 */ diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewRuleHouseAddActivity.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewRuleHouseAddActivity.java new file mode 100644 index 0000000..2d16dbf --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewRuleHouseAddActivity.java @@ -0,0 +1,511 @@ +package com.sucstepsoft.realtimelocation.activitys.census.newhouse.activitys; + +import android.app.ProgressDialog; +import android.graphics.Color; +import android.text.TextUtils; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; + +import com.bigkoo.pickerview.builder.OptionsPickerBuilder; +import com.bigkoo.pickerview.view.OptionsPickerView; +import com.google.gson.Gson; +import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager; +import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity; +import com.sucstepsoft.cm_utils.utils.ToastUtils; +import com.sucstepsoft.cm_utils.utils.UIUtil; +import com.sucstepsoft.cm_utils.utils.UserLgUtils; +import com.sucstepsoft.realtimelocation.R; +import com.sucstepsoft.realtimelocation.beans.CommunityBean; +import com.sucstepsoft.realtimelocation.beans.NewBuildingBean; +import com.sucstepsoft.realtimelocation.beans.NewCommunityDetailBean; +import com.sucstepsoft.realtimelocation.beans.SaveGroupHouse; +import com.sucstepsoft.realtimelocation.beans.StreetBean; +import com.sucstepsoft.realtimelocation.beans.SuccessBean; +import com.sucstepsoft.realtimelocation.net.LocationApiService; +import com.sucstepsoft.realtimelocation.utils.ExceptionHandler; + +import java.util.List; + +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.Unbinder; +import io.reactivex.Observer; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; +import okhttp3.MediaType; +import okhttp3.RequestBody; + +/** + * 房屋添加-批量添加-规则 + */ +public class NewRuleHouseAddActivity extends BaseActivity { + + + @BindView(R.id.tv_street) + TextView mTvStreet; + @BindView(R.id.tv_community) + TextView mTvCommunity; + @BindView(R.id.tv_community_area) + TextView mTvCommunityArea; + @BindView(R.id.tv_building_num) + TextView mTvBuildingNum; + + @BindView(R.id.btn_confirm) + Button mBtnConfirm; + @BindView(R.id.et_room) + EditText mEtRoom; + + private Unbinder mBind; + + private OptionsPickerView mArea4Picker; + private OptionsPickerView mArea5Picker; + private List mArea4List; + private List mArea5List; + private StreetBean mSelArea4; + private CommunityBean mSelArea5; + + private List mCommunityList; + private OptionsPickerView mCommunityPicker; + private NewCommunityDetailBean mSelCommunity; + + private NewBuildingBean.RowsBean mSelBuilding; + private List mBuildingList; + private OptionsPickerView mBuildingPicker; + + @Override + protected int setLayoutId() { + return R.layout.activity_add_new_group_rule_house; + } + + @Override + public void initData() { + mBind = ButterKnife.bind(this); + mTvBaseTitle.setText("快速建房"); + refreshView(STATE_LOAD_SUCCESS); + initContentView(); + } + + private void doSubmit() { + if (checkParams()) { + doSave(); + } + + } + + /** + * 保存编辑 + */ + + + private void initContentView() { + mTvStreet.setOnClickListener(v -> onShowArea4()); + mTvCommunity.setOnClickListener(v -> onShowArea5()); + mTvCommunityArea.setOnClickListener(v -> onShowCommunity()); + mTvBuildingNum.setOnClickListener(v -> onShowBuildNum());//楼排 + mBtnConfirm.setOnClickListener(v -> doSubmit()); + } + + + /** + * 显示楼排选择 + */ + private void onShowBuildNum() { + if (mSelCommunity == null) { + ToastUtils.showShort("请选择所在小区"); + } else { + if (mBuildingList == null) { + getAllUnitNum(mSelCommunity.getResidentialId()); + } else { + mBuildingPicker = new OptionsPickerBuilder(mActivity, (options1, options2, options3, v) -> { + mSelBuilding = mBuildingList.get(options1); + mTvBuildingNum.setText(mSelBuilding.getName()); + }) + .setTitleText("楼/排") + .isDialog(false) + .setCancelColor(Color.parseColor("#1189FF")) + .setSubmitColor(Color.parseColor("#1189FF")) + .setTitleColor(Color.parseColor("#1189FF")) + .build(); + mBuildingPicker.setPicker(mBuildingList); + mBuildingPicker.show(); + } + } + } + + + /** + * 根据小区获取楼 + * + * @param residentialId + */ + private void getAllUnitNum(String residentialId) { + ProgressDialog dialog = UIUtil.initDialog(mActivity, "获取中..."); + dialog.show(); + RetrofitManager.getInstance() + .create(LocationApiService.class) + .getAllBuilding(residentialId, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(List newCommunityDetailBeans) { + if (dialog != null && dialog.isShowing()) { + dialog.dismiss(); + } + if (newCommunityDetailBeans != null && newCommunityDetailBeans.size() > 0) { + mBuildingList = newCommunityDetailBeans; + onShowBuildNum(); + } else { + ToastUtils.showShort("所选小区下,暂无楼/排信息"); + } + } + + @Override + public void onError(Throwable e) { + if (dialog != null && dialog.isShowing()) { + dialog.dismiss(); + } + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + + + private boolean checkParams() { + if (mSelArea4 == null) { + ToastUtils.showShort("请选择所在街道"); + return false; + } + if (mSelArea5 == null) { + ToastUtils.showShort("请选择所在社区"); + return false; + } + if (mSelCommunity == null) { + ToastUtils.showShort("请选择所在小区"); + return false; + } + if (mSelBuilding == null) { + ToastUtils.showShort("请选择所在楼/排"); + return false; + } + String roomCount = mEtRoom.getText().toString().trim(); + if (TextUtils.isEmpty(roomCount)) { + ToastUtils.showShort("请输入每单元每层户数"); + return false; + } + return true; + } + + + /** + * area4 + */ + private void onShowArea4() { + if (null == mArea4List || mArea4List.size() <= 0) { + getStreetList(); + } else { + mArea4Picker = new OptionsPickerBuilder(mActivity, (options1, options2, options3, v) -> { + StreetBean bean = mArea4List.get(options1); + mTvStreet.setText(bean.getName()); + mSelArea4 = bean; + + mSelArea5 = null; + mTvCommunity.setText(""); + mArea5List = null; + + mSelCommunity = null; + mCommunityList = null; + mTvCommunityArea.setText(""); + + mSelBuilding = null; + mBuildingList = null; + mTvBuildingNum.setText(""); + + + }) + .setTitleText("请选择区域") + .isDialog(false) + .setCancelColor(Color.parseColor("#1189FF")) + .setSubmitColor(Color.parseColor("#1189FF")) + .setTitleColor(Color.parseColor("#1189FF")) + .build(); + mArea4Picker.setPicker(mArea4List); + mArea4Picker.show(); + } + } + + /** + * 获取街道 + */ + private void getStreetList() { + ProgressDialog dialog = UIUtil.initDialog(mActivity, "获取中..."); + dialog.show(); + RetrofitManager.getInstance() + .create(LocationApiService.class) + .getStreetList(UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(List streetBeans) { + if (dialog != null && dialog.isShowing()) { + dialog.dismiss(); + } + if (streetBeans != null && streetBeans.size() > 0) { + mArea4List = streetBeans; + onShowArea4(); + } else { + ToastUtils.showShort("暂无街道数据"); + } + } + + @Override + public void onError(Throwable e) { + if (dialog != null && dialog.isShowing()) { + dialog.dismiss(); + } + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + + /** + * area5 + */ + private void onShowArea5() { + if (null == mArea5List || mArea5List.size() <= 0) { + if (mSelArea4 == null) { + ToastUtils.showShort("请选择乡镇街道"); + } else { + getCommunity(mSelArea4.getId()); + } + } else { + mArea5Picker = new OptionsPickerBuilder(mActivity, (options1, options2, options3, v) -> { + CommunityBean bean = mArea5List.get(options1); + mTvCommunity.setText(bean.getCommunityName()); + mSelArea5 = bean; + + mSelCommunity = null; + mCommunityList = null; + mTvCommunityArea.setText(""); + + mSelBuilding = null; + mBuildingList = null; + mTvBuildingNum.setText(""); + + + }) + .setTitleText("请选择社区") + .isDialog(false) + .setCancelColor(Color.parseColor("#1189FF")) + .setSubmitColor(Color.parseColor("#1189FF")) + .setTitleColor(Color.parseColor("#1189FF")) + .build(); + mArea5Picker.setPicker(mArea5List); + mArea5Picker.show(); + } + } + + private void getCommunity(String areaId) { + ProgressDialog dialog = UIUtil.initDialog(mActivity, "获取中..."); + dialog.show(); + RetrofitManager.getInstance() + .create(LocationApiService.class) + .getCommunityList(areaId, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(List communityBeans) { + dialog.dismiss(); + if (null != communityBeans && communityBeans.size() > 0) { + mArea5List = communityBeans; + onShowArea5(); + } else { + ToastUtils.showShort("暂无社区数据"); + } + + } + + @Override + public void onError(Throwable e) { + dialog.dismiss(); + ToastUtils.showShort("获取区域失败"); + } + + @Override + public void onComplete() { + + } + }); + } + + + /** + * 小区选择 + */ + private void onShowCommunity() { + if (mSelArea5 == null) { + ToastUtils.showShort("请选择所在社区"); + } else { + if (mCommunityList == null) { + getAllCommunity(mSelArea5.getCommunityId()); + } else { + mCommunityPicker = new OptionsPickerBuilder(mActivity, (options1, options2, options3, v) -> { + mSelCommunity = mCommunityList.get(options1); + mTvCommunityArea.setText(mSelCommunity.getName()); + + mSelBuilding = null; + mBuildingList = null; + mTvBuildingNum.setText(""); + + + }) + .setTitleText("请选择小区") + .isDialog(false) + .setCancelColor(Color.parseColor("#1189FF")) + .setSubmitColor(Color.parseColor("#1189FF")) + .setTitleColor(Color.parseColor("#1189FF")) + .build(); + mCommunityPicker.setPicker(mCommunityList); + mCommunityPicker.show(); + } + } + + } + + /** + * 社区下全部小区 + * + * @param id + */ + private void getAllCommunity(String id) { + ProgressDialog dialog = UIUtil.initDialog(mActivity, "获取中..."); + dialog.show(); + RetrofitManager.getInstance() + .create(LocationApiService.class) + .getNewCommunityListAll(id, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(List newCommunityDetailBeans) { + if (dialog != null && dialog.isShowing()) { + dialog.dismiss(); + } + if (newCommunityDetailBeans != null && newCommunityDetailBeans.size() > 0) { + mCommunityList = newCommunityDetailBeans; + onShowCommunity(); + } else { + ToastUtils.showShort("所选社区下暂无小区"); + } + } + + @Override + public void onError(Throwable e) { + if (dialog != null && dialog.isShowing()) { + dialog.dismiss(); + } + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + + + /** + * 提交数据 + */ + private void doSave() { + hideSoftKeyboard(); + RequestBody bean = buildParams(); + ProgressDialog progressDialog = UIUtil.initDialog(NewRuleHouseAddActivity.this, "生成中..."); + progressDialog.show(); + RetrofitManager.getInstance() + .create(LocationApiService.class) + .doSaveNewHouseAuto(bean, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(SuccessBean s) { + progressDialog.dismiss(); + ToastUtils.showShort("生成成功"); + setResult(RESULT_OK); + finish(); + } + + @Override + public void onError(Throwable e) { + progressDialog.dismiss(); + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + + + /** + * 构建提交参数 + * + * @return + */ + private RequestBody buildParams() { + SaveGroupHouse bean = new SaveGroupHouse(); + bean.setBuildingId(mSelBuilding.getBuildingId()); + String roomCount = mEtRoom.getText().toString().trim(); + bean.setFloorUnitHouseCount(roomCount); + + Gson gson = new Gson(); + String obj = gson.toJson(bean); + RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), obj); + return requestBody; + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/fragments/BuildingManageFragment.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/fragments/BuildingManageFragment.java index b507cfc..71ae762 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/fragments/BuildingManageFragment.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/fragments/BuildingManageFragment.java @@ -104,7 +104,7 @@ public class BuildingManageFragment extends LazyFragment { layoutManager.setOrientation(LinearLayoutManager.VERTICAL); mRlvItems.setLayoutManager(layoutManager); mRlvItems.setAdapter(mAdapter); - mAdapter.addOnItemClickListener(bean -> showIssueDetail(bean)); + mAdapter.addOnItemClickListener(this::showIssueDetail); mRlvItems.setNoMore(true); mRlvItems.setRefreshProgressStyle(ProgressStyle.BallGridBeat); mRlvItems.setLoadingMoreProgressStyle(ProgressStyle.Pacman); @@ -119,6 +119,12 @@ public class BuildingManageFragment extends LazyFragment { loadMore(); } }); + mKeywords = ""; + mSelBuilding = null; + mSelCommunityArea = null; + mSelStreet = null; + mSelCommunity = null; + mEtSearchKey.setText(""); getBuildingList(1); initSearchView(); } diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/fragments/CommunityManageFragment.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/fragments/CommunityManageFragment.java index d0ee780..fd82586 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/fragments/CommunityManageFragment.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/fragments/CommunityManageFragment.java @@ -102,7 +102,7 @@ public class CommunityManageFragment extends LazyFragment { layoutManager.setOrientation(LinearLayoutManager.VERTICAL); mRlvItems.setLayoutManager(layoutManager); mRlvItems.setAdapter(mAdapter); - mAdapter.addOnItemClickListener(bean -> showIssueDetail(bean)); + mAdapter.addOnItemClickListener(this::showIssueDetail); mRlvItems.setNoMore(true); mRlvItems.setRefreshProgressStyle(ProgressStyle.BallGridBeat); mRlvItems.setLoadingMoreProgressStyle(ProgressStyle.Pacman); @@ -117,8 +117,15 @@ public class CommunityManageFragment extends LazyFragment { loadMore(); } }); + mKeywords = ""; + mSelBuilding = null; + mSelCommunityArea = null; + mSelStreet = null; + mSelCommunity = null; + mEtSearchKey.setText(""); getCommunityList(1); initSearchView(); + LogUtils.e("刷新页面"); } @@ -170,7 +177,7 @@ public class CommunityManageFragment extends LazyFragment { }); mEtSearchKey.setOnEditorActionListener((v, actionId, event) -> { if (actionId == EditorInfo.IME_ACTION_SEARCH) { - hideSoftKeyboard(mEtSearchKey,mActivity); + hideSoftKeyboard(mEtSearchKey, mActivity); mEtSearchKey.clearFocus(); mKeywords = v.getText().toString(); refresh(); diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/fragments/HireHouseManageFragment.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/fragments/HireHouseManageFragment.java index 5fe9d50..c92a9d7 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/fragments/HireHouseManageFragment.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/fragments/HireHouseManageFragment.java @@ -61,7 +61,7 @@ public class HireHouseManageFragment extends LazyFragment { layoutManager.setOrientation(LinearLayoutManager.VERTICAL); mRlvItems.setLayoutManager(layoutManager); mRlvItems.setAdapter(mAdapter); - mAdapter.addOnItemClickListener(bean -> showIssueDetail(bean)); + mAdapter.addOnItemClickListener(this::showIssueDetail); mRlvItems.setNoMore(true); mRlvItems.setRefreshProgressStyle(ProgressStyle.BallGridBeat); mRlvItems.setLoadingMoreProgressStyle(ProgressStyle.Pacman); diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/fragments/HouseManageNewFragment.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/fragments/HouseManageNewFragment.java index 716f7ac..6353eae 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/fragments/HouseManageNewFragment.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/fragments/HouseManageNewFragment.java @@ -106,7 +106,7 @@ public class HouseManageNewFragment extends LazyFragment { layoutManager.setOrientation(LinearLayoutManager.VERTICAL); mRlvItems.setLayoutManager(layoutManager); mRlvItems.setAdapter(mAdapter); - mAdapter.addOnItemClickListener(bean -> showIssueDetail(bean)); + mAdapter.addOnItemClickListener(this::showIssueDetail); mRlvItems.setNoMore(true); mRlvItems.setRefreshProgressStyle(ProgressStyle.BallGridBeat); mRlvItems.setLoadingMoreProgressStyle(ProgressStyle.Pacman); @@ -122,6 +122,12 @@ public class HouseManageNewFragment extends LazyFragment { } }); mCsvState.setState(CustomStateView.STATE_LOAD); + mKeywords = ""; + mSelBuilding = null; + mSelCommunityArea = null; + mSelStreet = null; + mSelCommunity = null; + mEtSearchKey.setText(""); getHouseList(1); initSearchView(); } diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/normal/CensusClaimListActivity.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/normal/CensusClaimListActivity.java new file mode 100644 index 0000000..bc79250 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/normal/CensusClaimListActivity.java @@ -0,0 +1,410 @@ +package com.sucstepsoft.realtimelocation.activitys.census.normal; + +import android.app.AlertDialog; +import android.app.ProgressDialog; +import android.content.Intent; +import android.support.v7.widget.LinearLayoutManager; +import android.text.TextUtils; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.RadioGroup; + +import com.jcodecraeer.xrecyclerview.ProgressStyle; +import com.jcodecraeer.xrecyclerview.XRecyclerView; +import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager; +import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity; +import com.sucstepsoft.cm_utils.core.widget.views.CustomStateView; +import com.sucstepsoft.cm_utils.utils.ToastUtils; +import com.sucstepsoft.cm_utils.utils.UIUtil; +import com.sucstepsoft.cm_utils.utils.UserLgUtils; +import com.sucstepsoft.realtimelocation.R; +import com.sucstepsoft.realtimelocation.adapters.PersonBaseClaimAdapter; +import com.sucstepsoft.realtimelocation.beans.SuccessBean; +import com.sucstepsoft.realtimelocation.beans.person.PersonBaseListBean; +import com.sucstepsoft.realtimelocation.net.LocationApiService; +import com.sucstepsoft.realtimelocation.utils.ExceptionHandler; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.Unbinder; +import io.reactivex.Observer; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.annotations.NonNull; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; + +/** + * 人口认领 + */ +public class CensusClaimListActivity extends BaseActivity { + @BindView(R.id.iv_clear) + ImageView mIvClear; + @BindView(R.id.et_search_centent) + EditText mEtSearchContent; + @BindView(R.id.btn_search) + Button mBtnSearch; + @BindView(R.id.xlv_content) + XRecyclerView mXlvItems; + @BindView(R.id.rg_type) + RadioGroup mRGType; + @BindView(R.id.csv_state) + CustomStateView mCsvState; + private Unbinder mBind; + private String mRows = "20"; + private int mCurPage = 1; + private boolean mIsSelf = true; + private PersonBaseClaimAdapter mAdapter; + private List mDatas = new ArrayList<>(); + private Disposable mDisposable; + + private String mKeywords = ""; + private Disposable mListDis; + + @Override + protected int setLayoutId() { + return R.layout.activity_census_claim_list; + } + + @Override + public void initData() { + mBind = ButterKnife.bind(this); + mTvBaseTitle.setText("人口认领"); + mCsvState.setState(CustomStateView.STATE_LOAD); + mBtnSearch.setOnClickListener(v -> doSearch()); + mIvClear.setOnClickListener(v -> { + mKeywords = ""; + mEtSearchContent.setText(""); + refreshData(); + }); + refreshView(STATE_LOAD_SUCCESS); + mAdapter = new PersonBaseClaimAdapter(mActivity, mDatas); + LinearLayoutManager layoutManager = new LinearLayoutManager(mActivity); + layoutManager.setOrientation(LinearLayoutManager.VERTICAL); + mXlvItems.setLayoutManager(layoutManager); + mXlvItems.setAdapter(mAdapter); + mAdapter.addOnItemClickListener(bean -> showDetail(bean)); + mXlvItems.setRefreshProgressStyle(ProgressStyle.BallGridBeat); + mXlvItems.setLoadingMoreProgressStyle(ProgressStyle.Pacman); + mXlvItems.setPullRefreshEnabled(true); + mXlvItems.setLoadingMoreEnabled(true); + mXlvItems.setLoadingListener(new XRecyclerView.LoadingListener() { + @Override + public void onRefresh() { + refreshData(); + } + + @Override + public void onLoadMore() { + if (mIsSelf) { + getMineList(mCurPage); + } else { + getUpcomingList(mCurPage); + } + } + }); + mAdapter.addOnEditListener(new PersonBaseClaimAdapter.OnEditListener() { + @Override + public void onDel(PersonBaseListBean.RowsBean bean, int pos) { + doDelBean(bean, pos); + } + + @Override + public void onEdit(PersonBaseListBean.RowsBean bean, int pos) { + doEditBean(bean, pos); + } + }); + mRGType.setOnCheckedChangeListener((group, checkedId) -> { + if (checkedId == R.id.rb_mine) { + mIsSelf = true; + } else { + mIsSelf = false; + } + refreshData(); + }); + } + + /** + * 搜索 + */ + private void doSearch() { + String searchContent = mEtSearchContent.getText().toString().trim(); + if (!TextUtils.isEmpty(searchContent)) { + hideSoftKeyboard(); + mKeywords = searchContent; + mCurPage = 1; + if (mIsSelf) { + getMineList(mCurPage); + } else { + getUpcomingList(mCurPage); + } + } else { + ToastUtils.showShort("请输入要查询的内容"); + } + } + + private void getMineList(int page) { + mCurPage = page; + RetrofitManager.getInstance() + .create(LocationApiService.class) + .getCensusRegisterList(page + "", mKeywords, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + mListDis = d; + } + + @Override + public void onNext(PersonBaseListBean leaveListBean) { + if (leaveListBean != null && leaveListBean.getRows() != null && leaveListBean.getRows().size() > 0) { + ++mCurPage; + if (page == 1) { + mDatas.clear(); + mDatas.addAll(leaveListBean.getRows()); + } else { + mDatas.addAll(leaveListBean.getRows()); + } + mAdapter.notifyDataSetChanged(); + mXlvItems.refreshComplete(); + if (mDatas.size() >= leaveListBean.getTotal()) { + mXlvItems.loadMoreComplete(); + mXlvItems.setNoMore(true); + } else { + mXlvItems.loadMoreComplete(); + mXlvItems.setNoMore(false); + } + mCsvState.setState(CustomStateView.STATE_SUCCESS); + } else { + mXlvItems.refreshComplete(); + if (page > 1) { + mXlvItems.loadMoreComplete(); + mXlvItems.setNoMore(true); + } else { + if (TextUtils.isEmpty(mKeywords)) { + mCsvState.setState(CustomStateView.STATE_EMPTY); + } else { + ToastUtils.showShort("未查询到相关内容"); + } + } + } + } + + @Override + public void onError(Throwable e) { + mCsvState.setState(CustomStateView.STATE_ERROR); + ToastUtils.showShort("数据加载失,请稍后重试"); + } + + @Override + public void onComplete() { + + } + }); + } + + /** + * 删除数据 + * + * @param bean + * @param pos + */ + private void doDelBean(PersonBaseListBean.RowsBean bean, int pos) { + AlertDialog.Builder builder = new AlertDialog.Builder(mActivity); + builder.setTitle("提示") + .setMessage("确定要删除该条信息吗?") + .setPositiveButton("确定", (dialog, which) -> { + dialog.dismiss(); + ProgressDialog dialog1 = UIUtil.initDialog(mActivity, "删除中..."); + dialog1.show(); + RetrofitManager.getInstance() + .create(LocationApiService.class) + .doDelBaseRegister(bean.getPopulationInfoId(), UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull SuccessBean successBean) { + ToastUtils.showShort("删除成功"); + mDatas.remove(bean); + mAdapter.notifyDataSetChanged(); + dialog1.dismiss(); + } + + @Override + public void onError(@NonNull Throwable e) { + dialog1.dismiss(); + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + }) + .setNegativeButton("取消", (dialog, which) -> dialog.dismiss()) + .create() + .show(); + } + + /** + * 人口认领 + * + * @param bean + * @param pos + */ + private void doEditBean(PersonBaseListBean.RowsBean bean, int pos) { + ProgressDialog dialog = UIUtil.initDialog(mActivity, "保存中..."); + dialog.show(); + RetrofitManager + .getInstance() + .create(LocationApiService.class) + .doClaimPerson(bean.getPopulationInfoId(), UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(SuccessBean successBean) { + dialog.dismiss(); + ToastUtils.showShort("认领成功"); + refreshData(); + } + + @Override + public void onError(Throwable e) { + dialog.dismiss(); + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + + /** + * 显示详情 + * + * @param bean + */ + private void showDetail(PersonBaseListBean.RowsBean bean) { + Intent intent = new Intent(mActivity, CensusRegisterDetailActivity.class); + intent.putExtra("id", bean.getPopulationInfoId()); + intent.putExtra("idCard", bean.getIdcard()); + startActivity(intent); + } + + private void refreshData() { + mDatas.clear(); + mAdapter.setData(mDatas); + mCsvState.setState(CustomStateView.STATE_LOAD); + if (mIsSelf) { + getMineList(1); + } else { + getUpcomingList(1); + } + } + + @Override + protected void onResume() { + super.onResume(); + refreshData(); + } + + /** + * 获取列表 + */ + private void getUpcomingList(int page) { + mCurPage = page; + RetrofitManager.getInstance() + .create(LocationApiService.class) + .getCensusRegisterListAll(page + "", mKeywords, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + mListDis = d; + } + + @Override + public void onNext(PersonBaseListBean leaveListBean) { + if (leaveListBean != null && leaveListBean.getRows() != null && leaveListBean.getRows().size() > 0) { + ++mCurPage; + if (page == 1) { + mDatas.clear(); + mDatas.addAll(leaveListBean.getRows()); + } else { + mDatas.addAll(leaveListBean.getRows()); + } + mCsvState.setState(CustomStateView.STATE_SUCCESS); + mAdapter.notifyDataSetChanged(); + mXlvItems.refreshComplete(); + if (mDatas.size() >= leaveListBean.getTotal()) { + mXlvItems.loadMoreComplete(); + mXlvItems.setNoMore(true); + } else { + mXlvItems.loadMoreComplete(); + mXlvItems.setNoMore(false); + } + } else { + if (page > 1) { + mXlvItems.loadMoreComplete(); + mXlvItems.setNoMore(true); + mCsvState.setState(CustomStateView.STATE_SUCCESS); + } else { + if (TextUtils.isEmpty(mKeywords)) { + //无数据 + mCsvState.setState(CustomStateView.STATE_EMPTY); + } else { + ToastUtils.showShort("未查询到相关内容"); + } + } + } + } + + @Override + public void onError(Throwable e) { + ToastUtils.showShort("数据加载失,请稍后重试"); + mCsvState.setState(CustomStateView.STATE_ERROR); + } + + @Override + public void onComplete() { + + } + }); + } + + @Override + protected void onDestroy() { + if (mListDis != null && !mListDis.isDisposed()) { + mListDis.dispose(); + } + if (mDisposable != null && !mDisposable.isDisposed()) { + mDisposable.dispose(); + } + mXlvItems.destroy(); + mXlvItems = null; + if (mBind != null) { + mBind.unbind(); + } + super.onDestroy(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/normal/CensusRegisterAddActivity.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/normal/CensusRegisterAddActivity.java index 0c05c83..28aa8af 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/normal/CensusRegisterAddActivity.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/normal/CensusRegisterAddActivity.java @@ -871,6 +871,7 @@ public class CensusRegisterAddActivity extends BaseActivity { public void onNext(@NonNull SuccessBean successBean) { dialog.dismiss(); ToastUtils.showShort("录入成功"); + setResult(RESULT_OK); finish(); } @@ -1129,9 +1130,9 @@ public class CensusRegisterAddActivity extends BaseActivity { LogUtils.e(data); String tags = ""; for (int i = 0; i < data.size(); i++) { - if(data.get(i).isCheck()){ - tags += data.get(i).getId() + ","; - } + if (data.get(i).isCheck()) { + tags += data.get(i).getId() + ","; + } } if (tags.endsWith(",")) { tags = tags.substring(0, tags.length() - 1); diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/normal/CensusRegisterDetailActivity.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/normal/CensusRegisterDetailActivity.java index d3bd507..dc06e3e 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/normal/CensusRegisterDetailActivity.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/normal/CensusRegisterDetailActivity.java @@ -11,6 +11,8 @@ import android.widget.TextView; import com.beloo.widget.chipslayoutmanager.ChipsLayoutManager; import com.sucstepsoft.cm_utils.core.retrofit_net.RetrofitManager; import com.sucstepsoft.cm_utils.core.widget.base.BaseActivity; +import com.sucstepsoft.cm_utils.utils.DesensitizationUtil; +import com.sucstepsoft.cm_utils.utils.LogUtils; import com.sucstepsoft.cm_utils.utils.UserLgUtils; import com.sucstepsoft.realtimelocation.R; import com.sucstepsoft.realtimelocation.activitys.census.special.CensusCorrctListActivity; @@ -241,7 +243,7 @@ public class CensusRegisterDetailActivity extends BaseActivity { ChipsLayoutManager chipsLayoutManager = ChipsLayoutManager.newBuilder(mActivity) .setOrientation(ChipsLayoutManager.HORIZONTAL) .build(); - mTagAdapter = new PersonTagAdapter(mActivity, mTags,false); + mTagAdapter = new PersonTagAdapter(mActivity, mTags, false); mRlvTags.setLayoutManager(chipsLayoutManager); mRlvTags.setAdapter(mTagAdapter); @@ -345,10 +347,12 @@ public class CensusRegisterDetailActivity extends BaseActivity { * 户籍信息 */ private void setRegisterInfo() { - mTvName.setText(mRegisterDetailBean.getName());//姓名 - mTvCardNumber.setText(mRegisterDetailBean.getIdcard());//证件号码 + boolean isSelf = UserLgUtils.getUserId().equals(mRegisterDetailBean.getCreator()); + LogUtils.e("是否自己录入:"+isSelf); + mTvName.setText(isSelf ? mRegisterDetailBean.getName() : DesensitizationUtil.chineseName(mRegisterDetailBean.getName()));//姓名 + mTvCardNumber.setText(isSelf?mRegisterDetailBean.getIdcard():DesensitizationUtil.idCardNum(mRegisterDetailBean.getIdcard()));//证件号码 mTvCardType.setText(mRegisterDetailBean.getIdcardType());//证件类型 - mTvBirth.setText(mRegisterDetailBean.getBirthday());//出生日期 + mTvBirth.setText(isSelf?mRegisterDetailBean.getBirthday():DesensitizationUtil.birthDate(mRegisterDetailBean.getBirthday()));//出生日期 mTvGender.setText(mRegisterDetailBean.getSex());//性别 mTvNation.setText(mRegisterDetailBean.getNation());//民族 mTvDegree.setText(mRegisterDetailBean.getEducation());//文化程度 @@ -357,7 +361,7 @@ public class CensusRegisterDetailActivity extends BaseActivity { mTvRelation.setText(mRegisterDetailBean.getRelationship()); // String phone = mEtPhone.getText().toString().trim(); // bean.setPhone(phone);//联系电话 - mTvPhone.setText(mRegisterDetailBean.getPhone()); + mTvPhone.setText(isSelf?mRegisterDetailBean.getPhone():DesensitizationUtil.mobilePhone(mRegisterDetailBean.getPhone())); // String academy = mEtAcademy.getText().toString().trim(); // bean.setDescription(academy);//就读院校及专业 mTvAcademy.setText(mRegisterDetailBean.getDescription()); diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseFloorAdapter.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseFloorAdapter.java new file mode 100644 index 0000000..84cd31b --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseFloorAdapter.java @@ -0,0 +1,49 @@ +package com.sucstepsoft.realtimelocation.adapters; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter; +import com.sucstepsoft.realtimelocation.R; +import com.sucstepsoft.realtimelocation.adapters.holders.HouseFloorHolder; +import com.sucstepsoft.realtimelocation.beans.ResultListBean; + +import java.util.List; + +/** + * 作者: adam + * 日期: 2020/11/24 - 9:16 AM + * 邮箱: itgaojian@163.com + * 描述: 楼层信息 + */ +public class HouseFloorAdapter extends BaseRecyclerAdapter { + public HouseFloorAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public HouseFloorHolder createHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_floor_item, parent, false); + return new HouseFloorHolder(itemView); + } + + @Override + public void bindHolder(HouseFloorHolder holder, int i) { + ResultListBean.FloorBean bean = mData.get(i); +// holder.mRlvItems.setLayoutManager(new LinearLayoutManager(mContext)); +// HouseFloorInputAdapter adapter = new HouseFloorInputAdapter(mContext, mData,this,i); +// holder.mRlvItems.setAdapter(adapter); +// holder.mBtnAdd.setOnClickListener(v -> { +// LogUtils.e("添加楼层"); + +// }); + + } + public void doDelBean(int pos){ + mData.remove(pos); + this.setData(mData); + } + +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseFloorInputAdapter.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseFloorInputAdapter.java new file mode 100644 index 0000000..fd8ae76 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseFloorInputAdapter.java @@ -0,0 +1,69 @@ +package com.sucstepsoft.realtimelocation.adapters; + +import android.content.Context; +import android.support.v7.widget.LinearLayoutManager; +import android.text.Editable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter; +import com.sucstepsoft.realtimelocation.R; +import com.sucstepsoft.realtimelocation.adapters.holders.HouseFloorInputHolder; +import com.sucstepsoft.realtimelocation.beans.ResultListBean; +import com.sucstepsoft.realtimelocation.beans.SaveGroupHouse; +import com.sucstepsoft.realtimelocation.widget.SimpleTextWatch; + +import java.util.List; + +/** + * 作者: adam + * 日期: 2020/11/24 - 9:16 AM + * 邮箱: itgaojian@163.com + * 描述: 楼层信息 + */ +public class HouseFloorInputAdapter extends BaseRecyclerAdapter { + + public HouseFloorInputAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public HouseFloorInputHolder createHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_floor_input, parent, false); + return new HouseFloorInputHolder(itemView); + } + + @Override + public void bindHolder(HouseFloorInputHolder holder, int i) { + SaveGroupHouse.ResultListBean.FloorListBean bean = mData.get(i); + holder.mEtNum.setTag(i); + holder.mEtNum.setText(bean.getFloorValue()); + holder.mRlvItems.setLayoutManager(new LinearLayoutManager(mContext)); + HouseRoomInputAdapter itemAdapter = new HouseRoomInputAdapter(mContext, bean.getHouseList()); + holder.mRlvItems.setAdapter(itemAdapter); + holder.mEtNum.addTextChangedListener(new SimpleTextWatch() { + @Override + public void afterTextChanged(Editable s) { + if ((int) holder.mEtNum.getTag() == i) { + bean.setFloorValue(s.toString()); + } + } + }); + holder.mBtnDel.setOnClickListener(v -> { + if (mData.size() > 1) { + mData.remove(i); + HouseFloorInputAdapter.this.setData(mData); + } + }); + holder.mBtnAdd.setOnClickListener(v -> { + //添加房屋 + List data = itemAdapter.getData(); + SaveGroupHouse.ResultListBean.FloorListBean.HouseListBean roomBean = new SaveGroupHouse.ResultListBean.FloorListBean.HouseListBean(); + data.add(roomBean); + itemAdapter.notifyDataSetChanged(); + }); + } + + +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseLiveAddPersonAdapter.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseLiveAddPersonAdapter.java new file mode 100644 index 0000000..f6f7c28 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseLiveAddPersonAdapter.java @@ -0,0 +1,65 @@ +package com.sucstepsoft.realtimelocation.adapters; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter; +import com.sucstepsoft.realtimelocation.R; +import com.sucstepsoft.realtimelocation.adapters.holders.HousePersonHolder; +import com.sucstepsoft.realtimelocation.beans.person.PersonBaseListBean; + +import java.util.List; + +/** + * 作者: adam + * 日期: 2020/11/17 - 1:22 PM + * 邮箱: itgaojian@163.com + * 描述: 人口adapter + */ +public class HouseLiveAddPersonAdapter extends BaseRecyclerAdapter { + private boolean canEdit = false; + + public HouseLiveAddPersonAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public HousePersonHolder createHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_person_tenement, parent, false); + return new HousePersonHolder(itemView); + } + + @Override + public void bindHolder(HousePersonHolder holder, int i) { + PersonBaseListBean.RowsBean bean = mData.get(i); + holder.mTvName.setText(bean.getName()); + holder.mTvPhone.setText("联系方式:" + bean.getPhone()); + holder.mTvShip.setText("证件号码:" + bean.getIdcard()); + holder.mBtnLeave.setVisibility(View.GONE); + if (canEdit) { + holder.mBtnUnbind.setVisibility(View.VISIBLE); + } else { + holder.mBtnUnbind.setVisibility(View.GONE); + } + holder.mBtnUnbind.setOnClickListener(v -> mEditListener.onDel(bean, i)); + } + + public void setCanEdit(boolean isCan) { + canEdit = isCan; + notifyDataSetChanged(); + } + + private OnEditListener mEditListener; + + public void addOnEditListener(OnEditListener mListener) { + this.mEditListener = mListener; + } + + public interface OnEditListener { + void onDel(PersonBaseListBean.RowsBean bean, int pos); + + void onEdit(PersonBaseListBean.RowsBean b, int pos); + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseLivePersonAdapter.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseLivePersonAdapter.java index f249b2f..abbffb8 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseLivePersonAdapter.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseLivePersonAdapter.java @@ -6,6 +6,7 @@ import android.view.View; import android.view.ViewGroup; import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter; +import com.sucstepsoft.cm_utils.utils.DesensitizationUtil; import com.sucstepsoft.realtimelocation.R; import com.sucstepsoft.realtimelocation.adapters.holders.HousePersonHolder; import com.sucstepsoft.realtimelocation.beans.HouseLivePersonBean; @@ -20,9 +21,12 @@ import java.util.List; */ public class HouseLivePersonAdapter extends BaseRecyclerAdapter { private boolean canEdit = false; + private boolean isEncrypt = false; - public HouseLivePersonAdapter(Context ctx, List list) { + public HouseLivePersonAdapter(Context ctx, List list, boolean isEncrypt) { super(ctx, list); + this.isEncrypt = isEncrypt; + } @Override @@ -35,14 +39,17 @@ public class HouseLivePersonAdapter extends BaseRecyclerAdapter mEditListener.onDel(bean, i)); + holder.mBtnLeave.setOnClickListener(v -> mEditListener.onEdit(bean, i)); } public void setCanEdit(boolean isCan) { @@ -50,6 +57,11 @@ public class HouseLivePersonAdapter extends BaseRecyclerAdapter { + public HouseRoomInputAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public HouseRoomInputHolder createHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_room_input, parent, false); + return new HouseRoomInputHolder(itemView); + } + + @Override + public void bindHolder(HouseRoomInputHolder holder, int i) { + SaveGroupHouse.ResultListBean.FloorListBean.HouseListBean bean = mData.get(i); + holder.mEtNum.setTag(i); + holder.mEtNum.setText(bean.getHouseValue()); + holder.mEtNum.addTextChangedListener(new SimpleTextWatch() { + @Override + public void afterTextChanged(Editable s) { + if ((int) holder.mEtNum.getTag() == i) { + bean.setHouseValue(s.toString()); + } + } + }); + holder.mBtnDel.setOnClickListener(v -> { + if (mData.size() > 1) { + mData.remove(i); + HouseRoomInputAdapter.this.setData(mData); + } + }); + } + + +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseRoomItemAdapter.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseRoomItemAdapter.java new file mode 100644 index 0000000..ada5b58 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseRoomItemAdapter.java @@ -0,0 +1,48 @@ +package com.sucstepsoft.realtimelocation.adapters; + +import android.content.Context; +import android.support.v7.widget.LinearLayoutManager; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter; +import com.sucstepsoft.realtimelocation.R; +import com.sucstepsoft.realtimelocation.adapters.holders.HouseRoomItemHolder; +import com.sucstepsoft.realtimelocation.beans.ResultListBean; + +import java.util.List; + +/** + * 作者: adam + * 日期: 2020/11/24 - 9:16 AM + * 邮箱: itgaojian@163.com + * 描述: 楼层信息 + */ +public class HouseRoomItemAdapter extends BaseRecyclerAdapter { + public HouseRoomItemAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public HouseRoomItemHolder createHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_room_item, parent, false); + return new HouseRoomItemHolder(itemView); + } + + @Override + public void bindHolder(HouseRoomItemHolder holder, int i) { + ResultListBean.RoomBean bean = mData.get(i); + holder.mRlvItems.setLayoutManager(new LinearLayoutManager(mContext)); +// holder.mBtnAdd.setOnClickListener(v -> { +// //添加楼层 +// AddGroupHouseBean.RoomBean roomBean = new AddGroupHouseBean.RoomBean(); +// List data = adapter.getData(); +// data.add(roomBean); +// adapter.setData(data); +// }); + + } + + +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseUnitAdapter.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseUnitAdapter.java new file mode 100644 index 0000000..a9a73e3 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/HouseUnitAdapter.java @@ -0,0 +1,90 @@ +package com.sucstepsoft.realtimelocation.adapters; + +import android.content.Context; +import android.support.v7.widget.LinearLayoutManager; +import android.text.Editable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter; +import com.sucstepsoft.realtimelocation.R; +import com.sucstepsoft.realtimelocation.adapters.holders.HouseUnitHolder; +import com.sucstepsoft.realtimelocation.beans.ResultListBean; +import com.sucstepsoft.realtimelocation.beans.SaveGroupHouse; +import com.sucstepsoft.realtimelocation.widget.SimpleTextWatch; + +import java.util.ArrayList; +import java.util.List; + +/** + * 作者: adam + * 日期: 2020/11/24 - 9:16 AM + * 邮箱: itgaojian@163.com + * 描述: 单元信息 + */ +public class HouseUnitAdapter extends BaseRecyclerAdapter { + public HouseUnitAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public HouseUnitHolder createHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_unit_item, parent, false); + return new HouseUnitHolder(itemView); + } + + @Override + public void bindHolder(HouseUnitHolder holder, int i) { + SaveGroupHouse.ResultListBean bean = mData.get(i); + holder.mEtNum.setTag(i); + holder.mEtNum.setText(bean.getUnitValue()); + holder.mBtnDel.setOnClickListener(v -> { + if (mOnDelListener != null) { + mOnDelListener.doDelUnit(bean, i); + } + }); + holder.mEtNum.addTextChangedListener(new SimpleTextWatch() { + @Override + public void afterTextChanged(Editable s) { + if ((int) holder.mEtNum.getTag() == i) { + bean.setUnitValue(s.toString()); + } + } + }); + holder.mRlvItems.setLayoutManager(new LinearLayoutManager(mContext)); + HouseFloorInputAdapter adapter = new HouseFloorInputAdapter(mContext, bean.getFloorList()); + holder.mRlvItems.setAdapter(adapter); + holder.mBtnAdd.setOnClickListener(v -> { + //添加楼层 + List data = adapter.getData(); + SaveGroupHouse.ResultListBean.FloorListBean floorBean = new SaveGroupHouse.ResultListBean.FloorListBean(); + List roomList = new ArrayList<>(); + floorBean.setHouseList(roomList); + SaveGroupHouse.ResultListBean.FloorListBean.HouseListBean roomBean = new SaveGroupHouse.ResultListBean.FloorListBean.HouseListBean(); + roomList.add(roomBean); + data.add(floorBean); + adapter.notifyDataSetChanged(); + }); + } + + private OnDelListener mOnDelListener; + + public void setDelListener(OnDelListener listener) { + this.mOnDelListener = listener; + } + + public interface OnDelListener { + void doDelUnit(SaveGroupHouse.ResultListBean bean, int pos); + } + + /** + * 删除楼层 + * + * @param pos + */ + public void doDelBean(int pos) { + mData.remove(pos); + this.setData(mData); + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/PersonBaseClaimAdapter.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/PersonBaseClaimAdapter.java new file mode 100644 index 0000000..44b4ac2 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/PersonBaseClaimAdapter.java @@ -0,0 +1,59 @@ +package com.sucstepsoft.realtimelocation.adapters; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter; +import com.sucstepsoft.cm_utils.utils.UserLgUtils; +import com.sucstepsoft.realtimelocation.R; +import com.sucstepsoft.realtimelocation.adapters.holders.CensusPersonClaimHolder; +import com.sucstepsoft.realtimelocation.beans.person.PersonBaseListBean; + +import java.util.List; + +/** + * 作者: adam + * 日期: 2020/11/17 - 1:22 PM + * 邮箱: itgaojian@163.com + * 描述: 人口认领 + */ +public class PersonBaseClaimAdapter extends BaseRecyclerAdapter { + public PersonBaseClaimAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public CensusPersonClaimHolder createHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_person_claim, parent, false); + return new CensusPersonClaimHolder(itemView); + } + + @Override + public void bindHolder(CensusPersonClaimHolder censusPersonHolder, int i) { + PersonBaseListBean.RowsBean bean = mData.get(i); + censusPersonHolder.mTvName.setText(bean.getName()); + censusPersonHolder.mTvLocation.setText("户籍地址:" + bean.getDomicileAreaName() + "/" + bean.getDomicileAddress());//现在住地 + censusPersonHolder.mTvNative.setText("性别:" + bean.getSex()); + censusPersonHolder.mTvPhone.setText("联系电话:" + bean.getPhone()); + if (!UserLgUtils.getUserId().equals(bean.getCreator())) { + censusPersonHolder.mLlBtns.setVisibility(View.VISIBLE); + } else { + censusPersonHolder.mLlBtns.setVisibility(View.GONE); + } + censusPersonHolder.mBtnClaim.setOnClickListener(v -> mEditListener.onEdit(bean, i)); + } + + private OnEditListener mEditListener; + + public void addOnEditListener(OnEditListener mListener) { + this.mEditListener = mListener; + } + + public interface OnEditListener { + void onDel(PersonBaseListBean.RowsBean bean, int pos); + + void onEdit(PersonBaseListBean.RowsBean bean, int pos); + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/PersonBaseHouseLiveSelAdapter.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/PersonBaseHouseLiveSelAdapter.java index 65d7e2e..c61a94e 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/PersonBaseHouseLiveSelAdapter.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/PersonBaseHouseLiveSelAdapter.java @@ -5,6 +5,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import com.sucstepsoft.cm_utils.core.retrofit_net.bean.BindPersonBean; import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter; import com.sucstepsoft.realtimelocation.R; import com.sucstepsoft.realtimelocation.adapters.holders.CensusPersonLiveHouseHolder; @@ -38,7 +39,17 @@ public class PersonBaseHouseLiveSelAdapter extends BaseRecyclerAdapter mLis.onItemCheckChange(bean, isChecked, i)); + censusPersonHolder.itemView.setOnClickListener(v -> mLis.onItemCheckChange(bean, !bean.isCheck(), i)); } + private OnItemCheckChange mLis; + public void addOnitemCheckChange(OnItemCheckChange lis) { + this.mLis = lis; + } + + public interface OnItemCheckChange { + void onItemCheckChange(PersonBaseListBean.RowsBean bean, boolean isCheck, int pos); + } } diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/PersonTagAdapter.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/PersonTagAdapter.java index c87dd49..d2df804 100755 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/PersonTagAdapter.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/PersonTagAdapter.java @@ -2,6 +2,8 @@ package com.sucstepsoft.realtimelocation.adapters; import android.content.Context; import android.graphics.Color; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.GradientDrawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -37,12 +39,21 @@ public class PersonTagAdapter extends BaseRecyclerAdapter { holder.mTvName.setChecked(isChecked); mData.get(i).setCheck(isChecked); }); + } else { + holder.mTvName.setCompoundDrawables(null, null, null, null); } } } diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/SelectedHousePersonAdapter.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/SelectedHousePersonAdapter.java new file mode 100644 index 0000000..675b076 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/SelectedHousePersonAdapter.java @@ -0,0 +1,52 @@ +package com.sucstepsoft.realtimelocation.adapters; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.sucstepsoft.cm_utils.core.retrofit_net.bean.BindPersonBean; +import com.sucstepsoft.cm_utils.core.widget.base.BaseRecyclerAdapter; +import com.sucstepsoft.realtimelocation.R; +import com.sucstepsoft.realtimelocation.adapters.holders.SelPersonHolder; +import com.sucstepsoft.realtimelocation.beans.person.PersonBaseListBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * 作者: adam + * 日期: 2020/11/24 - 9:16 AM + * 邮箱: itgaojian@163.com + * 描述: 选中的人员 + */ +public class SelectedHousePersonAdapter extends BaseRecyclerAdapter { + public List mSelBeans = new ArrayList<>(); + + public SelectedHousePersonAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public SelPersonHolder createHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_dept_selected, parent, false); + return new SelPersonHolder(itemView); + } + + @Override + public void bindHolder(SelPersonHolder holder, int i) { + PersonBaseListBean.RowsBean bean = mData.get(i); + holder.mTvName.setText(bean.getName()); + holder.mIvDel.setOnClickListener(v -> mOnDelListener.onDel(bean, i)); + } + + private OnDelListener mOnDelListener; + + public void addOnDelListener(OnDelListener listener) { + this.mOnDelListener = listener; + } + + public interface OnDelListener { + void onDel(PersonBaseListBean.RowsBean bean, int pos); + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/CensusPersonClaimHolder.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/CensusPersonClaimHolder.java new file mode 100644 index 0000000..ff7bf6a --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/CensusPersonClaimHolder.java @@ -0,0 +1,38 @@ +package com.sucstepsoft.realtimelocation.adapters.holders; + +import android.support.annotation.NonNull; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.Button; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.sucstepsoft.realtimelocation.R; + +/** + * 作者: adam + * 日期: 2020/11/17 - 1:19 PM + * 邮箱: itgaojian@163.com + * 描述: + */ +public class CensusPersonClaimHolder extends RecyclerView.ViewHolder { + public TextView mTvName; + public TextView mTvLocation; + public TextView mTvPhone; + public TextView mTvNative; + public View mLine; + + public Button mBtnClaim; + public LinearLayout mLlBtns; + + public CensusPersonClaimHolder(@NonNull View itemView) { + super(itemView); + mTvName = itemView.findViewById(R.id.tv_name); + mTvLocation = itemView.findViewById(R.id.tv_location); + mBtnClaim = itemView.findViewById(R.id.btn_claim); + mTvNative = itemView.findViewById(R.id.tv_native); + mTvPhone = itemView.findViewById(R.id.tv_phone); + mLine= itemView.findViewById(R.id.line); + mLlBtns= itemView.findViewById(R.id.ll_btns); + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseFloorHolder.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseFloorHolder.java new file mode 100644 index 0000000..e3b9e32 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseFloorHolder.java @@ -0,0 +1,18 @@ +package com.sucstepsoft.realtimelocation.adapters.holders; + +import android.support.annotation.NonNull; +import android.support.v7.widget.RecyclerView; +import android.view.View; + +/** + * 单元信息 + */ +public class HouseFloorHolder extends RecyclerView.ViewHolder { + // public ImageView mBtnAdd; +// public RecyclerView mRlvItems; + public HouseFloorHolder(@NonNull View itemView) { + super(itemView); +// mRlvItems = itemView.findViewById(R.id.rlv_items); +// mBtnAdd = itemView.findViewById(R.id.btn_add); + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseFloorInputHolder.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseFloorInputHolder.java new file mode 100644 index 0000000..11b6100 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseFloorInputHolder.java @@ -0,0 +1,27 @@ +package com.sucstepsoft.realtimelocation.adapters.holders; + +import android.support.annotation.NonNull; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; + +import com.sucstepsoft.realtimelocation.R; + +/** + * 单元信息 + */ +public class HouseFloorInputHolder extends RecyclerView.ViewHolder { + public EditText mEtNum; + public RecyclerView mRlvItems; + public ImageView mBtnDel; + public ImageView mBtnAdd; + + public HouseFloorInputHolder(@NonNull View itemView) { + super(itemView); + mEtNum = itemView.findViewById(R.id.et_num); + mRlvItems = itemView.findViewById(R.id.rlv_items); + mBtnDel = itemView.findViewById(R.id.btn_del); + mBtnAdd = itemView.findViewById(R.id.btn_add); + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HousePersonHolder.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HousePersonHolder.java index 98dc107..5145db3 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HousePersonHolder.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HousePersonHolder.java @@ -1,6 +1,5 @@ package com.sucstepsoft.realtimelocation.adapters.holders; -import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.Button; @@ -19,6 +18,7 @@ public class HousePersonHolder extends RecyclerView.ViewHolder { public TextView mTvPhone; public Button mBtnUnbind; public TextView mTvShip; + public Button mBtnLeave; public HousePersonHolder(View itemView) { super(itemView); @@ -26,5 +26,6 @@ public class HousePersonHolder extends RecyclerView.ViewHolder { mTvPhone = itemView.findViewById(R.id.tv_phone); mBtnUnbind = itemView.findViewById(R.id.btn_unbind); mTvShip = itemView.findViewById(R.id.tv_ship); + mBtnLeave = itemView.findViewById(R.id.btn_leave); } } diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseRoomInputHolder.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseRoomInputHolder.java new file mode 100644 index 0000000..aa4d15c --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseRoomInputHolder.java @@ -0,0 +1,24 @@ +package com.sucstepsoft.realtimelocation.adapters.holders; + +import android.support.annotation.NonNull; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; + +import com.sucstepsoft.realtimelocation.R; + +/** + * 房间信息 + */ +public class HouseRoomInputHolder extends RecyclerView.ViewHolder { + public EditText mEtNum; + public ImageView mBtnDel; + + public HouseRoomInputHolder(@NonNull View itemView) { + super(itemView); + mEtNum = itemView.findViewById(R.id.et_num); + mBtnDel = itemView.findViewById(R.id.btn_del); + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseRoomItemHolder.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseRoomItemHolder.java new file mode 100644 index 0000000..ed9da8a --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseRoomItemHolder.java @@ -0,0 +1,21 @@ +package com.sucstepsoft.realtimelocation.adapters.holders; + +import android.support.annotation.NonNull; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.Button; +import android.widget.ImageView; + +import com.sucstepsoft.realtimelocation.R; + +/** + * 房间信息 + */ +public class HouseRoomItemHolder extends RecyclerView.ViewHolder { + public RecyclerView mRlvItems; + + public HouseRoomItemHolder(@NonNull View itemView) { + super(itemView); + mRlvItems = itemView.findViewById(R.id.rlv_items); + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseUnitHolder.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseUnitHolder.java new file mode 100644 index 0000000..b68003d --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/HouseUnitHolder.java @@ -0,0 +1,27 @@ +package com.sucstepsoft.realtimelocation.adapters.holders; + +import android.support.annotation.NonNull; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; + +import com.sucstepsoft.realtimelocation.R; + +/** + * 单元信息 + */ +public class HouseUnitHolder extends RecyclerView.ViewHolder { + public EditText mEtNum; + public RecyclerView mRlvItems; + public ImageView mBtnDel; + public ImageView mBtnAdd; + + public HouseUnitHolder(@NonNull View itemView) { + super(itemView); + mEtNum = itemView.findViewById(R.id.et_num); + mRlvItems = itemView.findViewById(R.id.rlv_items); + mBtnDel = itemView.findViewById(R.id.btn_del); + mBtnAdd = itemView.findViewById(R.id.btn_add); + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/beans/NewHouseDetailBean.java b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/NewHouseDetailBean.java index b6ddf93..afd938b 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/beans/NewHouseDetailBean.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/NewHouseDetailBean.java @@ -30,7 +30,7 @@ public class NewHouseDetailBean { private String gmtModified; private String homeowner; private String houseId; - private int houseNum; + private String houseNum; private String houseType; private int isDelete; private int isRental; @@ -282,11 +282,11 @@ public class NewHouseDetailBean { this.houseId = houseId; } - public int getHouseNum() { + public String getHouseNum() { return houseNum; } - public void setHouseNum(int houseNum) { + public void setHouseNum(String houseNum) { this.houseNum = houseNum; } diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/beans/ResultListBean.java b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/ResultListBean.java new file mode 100644 index 0000000..cf766d4 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/ResultListBean.java @@ -0,0 +1,57 @@ +package com.sucstepsoft.realtimelocation.beans; + +import java.util.List; + +public class ResultListBean { + private List floorList; + private String unitValue; + + public List getFloorList() { + return floorList; + } + + public void setFloorList(List floorList) { + this.floorList = floorList; + } + + public String getUnitValue() { + return unitValue; + } + + public void setUnitValue(String unitValue) { + this.unitValue = unitValue; + } + + public static class FloorBean { + private String floorValue; + private List houseList; + + public String getFloorValue() { + return floorValue; + } + + public void setFloorValue(String floorValue) { + this.floorValue = floorValue; + } + + public List getHouseList() { + return houseList; + } + + public void setHouseList(List houseList) { + this.houseList = houseList; + } + } + + public static class RoomBean { + private String houseValue; + + public String getHouseValue() { + return houseValue; + } + + public void setHouseValue(String houseValue) { + this.houseValue = houseValue; + } + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/beans/SaveBindLiveHousePerson.java b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/SaveBindLiveHousePerson.java index 35a5b17..3613f4f 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/beans/SaveBindLiveHousePerson.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/SaveBindLiveHousePerson.java @@ -6,7 +6,9 @@ public class SaveBindLiveHousePerson { private String cardNum; private String houseId; private String name; + private String outHouse; private String phone; + private String populationId; private String populationInfoId; public String getBindTime() { @@ -41,6 +43,14 @@ public class SaveBindLiveHousePerson { this.name = name; } + public String getOutHouse() { + return outHouse; + } + + public void setOutHouse(String outHouse) { + this.outHouse = outHouse; + } + public String getPhone() { return phone; } @@ -49,6 +59,14 @@ public class SaveBindLiveHousePerson { this.phone = phone; } + public String getPopulationId() { + return populationId; + } + + public void setPopulationId(String populationId) { + this.populationId = populationId; + } + public String getPopulationInfoId() { return populationInfoId; } diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/beans/SaveGroupHouse.java b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/SaveGroupHouse.java new file mode 100644 index 0000000..e28b14b --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/SaveGroupHouse.java @@ -0,0 +1,224 @@ +package com.sucstepsoft.realtimelocation.beans; + +import java.util.List; + +public class SaveGroupHouse { + + private String address; + private int buildNum; + private String community; + private String communityName; + private int floorsNum; + private String image; + private String latitude; + private String longitude; + private String name; + private String residentialId; + private String residentialName; + private List resultList; + private String buildingId; + private String buildingName; + private String street; + private String streetName; + private int unitNum; + + private String floorUnitHouseCount; + + public String getFloorUnitHouseCount() { + return floorUnitHouseCount; + } + + public void setFloorUnitHouseCount(String floorUnitHouseCount) { + this.floorUnitHouseCount = floorUnitHouseCount; + } + + public String getBuildingName() { + return buildingName; + } + + public void setBuildingName(String buildingName) { + this.buildingName = buildingName; + } + + public String getBuildingId() { + return buildingId; + } + + public void setBuildingId(String buildingId) { + this.buildingId = buildingId; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public int getBuildNum() { + return buildNum; + } + + public void setBuildNum(int buildNum) { + this.buildNum = buildNum; + } + + public String getCommunity() { + return community; + } + + public void setCommunity(String community) { + this.community = community; + } + + public String getCommunityName() { + return communityName; + } + + public void setCommunityName(String communityName) { + this.communityName = communityName; + } + + public int getFloorsNum() { + return floorsNum; + } + + public void setFloorsNum(int floorsNum) { + this.floorsNum = floorsNum; + } + + public String getImage() { + return image; + } + + public void setImage(String image) { + this.image = image; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getResidentialId() { + return residentialId; + } + + public void setResidentialId(String residentialId) { + this.residentialId = residentialId; + } + + public String getResidentialName() { + return residentialName; + } + + public void setResidentialName(String residentialName) { + this.residentialName = residentialName; + } + + public List getResultList() { + return resultList; + } + + public void setResultList(List resultList) { + this.resultList = resultList; + } + + public String getStreet() { + return street; + } + + public void setStreet(String street) { + this.street = street; + } + + public String getStreetName() { + return streetName; + } + + public void setStreetName(String streetName) { + this.streetName = streetName; + } + + public int getUnitNum() { + return unitNum; + } + + public void setUnitNum(int unitNum) { + this.unitNum = unitNum; + } + + public static class ResultListBean { + private List floorList; + private String unitValue; + + public List getFloorList() { + return floorList; + } + + public void setFloorList(List floorList) { + this.floorList = floorList; + } + + public String getUnitValue() { + return unitValue; + } + + public void setUnitValue(String unitValue) { + this.unitValue = unitValue; + } + + public static class FloorListBean { + private String floorValue; + private List houseList; + + public String getFloorValue() { + return floorValue; + } + + public void setFloorValue(String floorValue) { + this.floorValue = floorValue; + } + + public List getHouseList() { + return houseList; + } + + public void setHouseList(List houseList) { + this.houseList = houseList; + } + + public static class HouseListBean { + private String houseValue; + + public String getHouseValue() { + return houseValue; + } + + public void setHouseValue(String houseValue) { + this.houseValue = houseValue; + } + } + } + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/beans/SaveNewHouseBean.java b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/SaveNewHouseBean.java index 6f034a6..09c96c7 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/beans/SaveNewHouseBean.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/SaveNewHouseBean.java @@ -1,9 +1,11 @@ package com.sucstepsoft.realtimelocation.beans; +import java.util.List; + public class SaveNewHouseBean { private String affiliatedUnit; - private int affiliationFloors; + private String affiliationFloors; private int affiliationUnit; private String buildingId; private String buildingName; @@ -25,7 +27,8 @@ public class SaveNewHouseBean { private String documentName; private String documentNum; private String homeowner; - private int houseNum; + private String houseNum; + private String houseValue; private int isRental; private int isVacant; private String lodgeTypeId; @@ -33,6 +36,7 @@ public class SaveNewHouseBean { private String natureId; private String natureName; private String phone; + private List populationVOList; private String registrationDate; private String relationshipHomeowner; private String rentalPurposes; @@ -57,11 +61,11 @@ public class SaveNewHouseBean { this.affiliatedUnit = affiliatedUnit; } - public int getAffiliationFloors() { + public String getAffiliationFloors() { return affiliationFloors; } - public void setAffiliationFloors(int affiliationFloors) { + public void setAffiliationFloors(String affiliationFloors) { this.affiliationFloors = affiliationFloors; } @@ -233,14 +237,22 @@ public class SaveNewHouseBean { this.homeowner = homeowner; } - public int getHouseNum() { + public String getHouseNum() { return houseNum; } - public void setHouseNum(int houseNum) { + public void setHouseNum(String houseNum) { this.houseNum = houseNum; } + public String getHouseValue() { + return houseValue; + } + + public void setHouseValue(String houseValue) { + this.houseValue = houseValue; + } + public int getIsRental() { return isRental; } @@ -297,6 +309,14 @@ public class SaveNewHouseBean { this.phone = phone; } + public List getPopulationVOList() { + return populationVOList; + } + + public void setPopulationVOList(List populationVOList) { + this.populationVOList = populationVOList; + } + public String getRegistrationDate() { return registrationDate; } @@ -416,4 +436,79 @@ public class SaveNewHouseBean { public void setTypeName(String typeName) { this.typeName = typeName; } + + public static class PopulationVOListBean { + private String bindTime; + private String cardNum; + private String houseId; + private String name; + private String outHouse; + private String phone; + private String populationId; + private String populationInfoId; + + public String getBindTime() { + return bindTime; + } + + public void setBindTime(String bindTime) { + this.bindTime = bindTime; + } + + public String getCardNum() { + return cardNum; + } + + public void setCardNum(String cardNum) { + this.cardNum = cardNum; + } + + public String getHouseId() { + return houseId; + } + + public void setHouseId(String houseId) { + this.houseId = houseId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getOutHouse() { + return outHouse; + } + + public void setOutHouse(String outHouse) { + this.outHouse = outHouse; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPopulationId() { + return populationId; + } + + public void setPopulationId(String populationId) { + this.populationId = populationId; + } + + public String getPopulationInfoId() { + return populationInfoId; + } + + public void setPopulationInfoId(String populationInfoId) { + this.populationInfoId = populationInfoId; + } + } } diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/PersonBaseListBean.java b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/PersonBaseListBean.java index 0384dc7..29039a3 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/PersonBaseListBean.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/PersonBaseListBean.java @@ -1,5 +1,6 @@ package com.sucstepsoft.realtimelocation.beans.person; +import java.io.Serializable; import java.util.List; public class PersonBaseListBean { @@ -32,7 +33,7 @@ public class PersonBaseListBean { this.total = total; } - public static class RowsBean { + public static class RowsBean implements Serializable { private String populationInfoId; private String name; private String idcard; diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/net/LocationApiService.java b/app/src/main/java/com/sucstepsoft/realtimelocation/net/LocationApiService.java index c98a396..617ee4f 100755 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/net/LocationApiService.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/net/LocationApiService.java @@ -825,6 +825,13 @@ public interface LocationApiService { @POST("app/populationinfo/save") Observable doSaveCensusRegister(@Body RequestBody body, @Header("token") String token); + /** + * 未脱敏的人员信息 + */ + @Headers({"base_url_name:person", "Content-Type: application/json", "Accept: application/json"}) + @GET("app/populationinfo/list") + Observable> getListByIds(@Query("populationInfoIds") String ids, @Header("token") String token); + /** * 基础信息人员列表-新 @@ -848,6 +855,8 @@ public interface LocationApiService { @DELETE("app/populationinfo/remove/{ids}") Observable doDelBaseRegister(@Path("ids") String id, @Header("token") String token); + + /** * 详情 */ @@ -1618,7 +1627,14 @@ public interface LocationApiService { /*==================================TODO=========房屋===========================================*/ /** - * 保存楼宇信息 + * 批量建房 + */ + @Headers({"base_url_name:person", "Content-Type: application/json", "Accept: application/json"}) + @POST("app/house/saveAuto") + Observable doSaveNewHouseAuto(@Body RequestBody body, @Header("token") String token); + + /** + * 保存房屋信息 */ @Headers({"base_url_name:person", "Content-Type: application/json", "Accept: application/json"}) @POST("app/house/save") @@ -1781,6 +1797,13 @@ public interface LocationApiService { @POST("app/buildinghouse/save") Observable doSaveHouse(@Body RequestBody body, @Header("token") String token); + /** + * 批量信息房屋 + */ + @Headers({"base_url_name:person", "Content-Type: application/json", "Accept: application/json"}) + @POST("app/house/saveBatch") + Observable doSaveGroupHouse(@Body RequestBody body, @Header("token") String token); + /** * 获取房屋详情 */ @@ -1816,6 +1839,13 @@ public interface LocationApiService { @POST("app/buildinghouseuser/save") Observable doBindPerson(@Body RequestBody body, @Header("token") String token); + /** + * 认领人员 + */ + @Headers({"base_url_name:person", "Content-Type: application/json", "Accept: application/json"}) + @POST("app/populationlog/save/{populationInfoIds}") + Observable doClaimPerson(@Path("populationInfoIds") String ids, @Header("token") String token); + /** * 绑定人员 */ diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/widget/BuildingPopup.java b/app/src/main/java/com/sucstepsoft/realtimelocation/widget/BuildingPopup.java index 4d64eb8..e73fa83 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/widget/BuildingPopup.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/widget/BuildingPopup.java @@ -45,7 +45,7 @@ public class BuildingPopup extends BasePopupWindow { if (isCheck) { if (true) { for (int i = 0; i < adapter.getData().size(); i++) { - if (!adapter.getData().get(i).getResidentialId().equals(bean.getResidentialId())) { + if (!adapter.getData().get(i).getBuildingId().equals(bean.getBuildingId())) { adapter.getData().get(i).setCheck(false); } } diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/widget/CustomLinearLayout.java b/app/src/main/java/com/sucstepsoft/realtimelocation/widget/CustomLinearLayout.java new file mode 100644 index 0000000..37f1559 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/widget/CustomLinearLayout.java @@ -0,0 +1,33 @@ +package com.sucstepsoft.realtimelocation.widget; + +import android.content.Context; +import android.support.annotation.Nullable; +import android.util.AttributeSet; +import android.widget.LinearLayout; + +import com.sucstepsoft.cm_utils.utils.ConvertUtils; +import com.sucstepsoft.realtimelocation.R; + +public class CustomLinearLayout extends LinearLayout { + public CustomLinearLayout(Context context) { + super(context); + initView(); + } + + private void initView() { + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); + this.setBackgroundResource(R.color.white); + this.setOrientation(VERTICAL); + this.setPadding(ConvertUtils.dp2px(20), 0, ConvertUtils.dp2px(20), ConvertUtils.dp2px(10)); + this.setLayoutParams(params); + } + + public CustomLinearLayout(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + } + + public CustomLinearLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/widget/InputOriContent.java b/app/src/main/java/com/sucstepsoft/realtimelocation/widget/InputOriContent.java new file mode 100644 index 0000000..a9c0908 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/widget/InputOriContent.java @@ -0,0 +1,31 @@ +package com.sucstepsoft.realtimelocation.widget; + +import android.content.Context; +import android.support.annotation.Nullable; +import android.util.AttributeSet; +import android.widget.LinearLayout; + +import com.sucstepsoft.cm_utils.utils.ConvertUtils; +import com.sucstepsoft.realtimelocation.R; + +public class InputOriContent extends LinearLayout { + public InputOriContent(Context context) { + super(context); + initView(context); + } + + private void initView(Context context) { + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); + this.setBackgroundResource(R.drawable.shp_rectangle_bottom_border); + this.setOrientation(HORIZONTAL); + this.setPadding(0, ConvertUtils.dp2px(5), 0, ConvertUtils.dp2px(5)); + } + + public InputOriContent(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + } + + public InputOriContent(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/widget/InputView.java b/app/src/main/java/com/sucstepsoft/realtimelocation/widget/InputView.java new file mode 100644 index 0000000..f0695c2 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/widget/InputView.java @@ -0,0 +1,29 @@ +package com.sucstepsoft.realtimelocation.widget; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.Gravity; +import android.widget.LinearLayout; + +import com.sucstepsoft.cm_utils.utils.ConvertUtils; + +public class InputView extends android.support.v7.widget.AppCompatEditText { + public InputView(Context context) { + super(context); + initView(context); + } + + private void initView(Context ctx) { + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f); + this.setBackground(null); + this.setGravity(Gravity.RIGHT); + int padding = ConvertUtils.dp2px(5); + this.setPadding(padding, padding, padding, padding); + this.setTextSize(14); + this.setLayoutParams(params); + } + + public InputView(Context context, AttributeSet attrs) { + super(context, attrs); + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/widget/SecondContent.java b/app/src/main/java/com/sucstepsoft/realtimelocation/widget/SecondContent.java new file mode 100644 index 0000000..e928cf6 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/widget/SecondContent.java @@ -0,0 +1,33 @@ +package com.sucstepsoft.realtimelocation.widget; + +import android.content.Context; +import android.support.annotation.Nullable; +import android.util.AttributeSet; +import android.widget.LinearLayout; + +import com.sucstepsoft.cm_utils.utils.ConvertUtils; +import com.sucstepsoft.realtimelocation.R; + +public class SecondContent extends LinearLayout { + public SecondContent(Context context) { + super(context); + initView(); + } + + private void initView() { + LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); + this.setBackgroundResource(R.color.white); + this.setOrientation(VERTICAL); + this.setPadding(ConvertUtils.dp2px(10), ConvertUtils.dp2px(5), 0, ConvertUtils.dp2px(5)); + this.setLayoutParams(params); + } + + public SecondContent(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + } + + public SecondContent(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/widget/SimpleTextWatch.java b/app/src/main/java/com/sucstepsoft/realtimelocation/widget/SimpleTextWatch.java new file mode 100644 index 0000000..b9fd980 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/widget/SimpleTextWatch.java @@ -0,0 +1,15 @@ +package com.sucstepsoft.realtimelocation.widget; + +import android.text.TextWatcher; + +public abstract class SimpleTextWatch implements TextWatcher { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/widget/TitleContent.java b/app/src/main/java/com/sucstepsoft/realtimelocation/widget/TitleContent.java new file mode 100644 index 0000000..08d3ba1 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/widget/TitleContent.java @@ -0,0 +1,29 @@ +package com.sucstepsoft.realtimelocation.widget; + +import android.content.Context; +import android.support.annotation.Nullable; +import android.util.AttributeSet; +import android.widget.RelativeLayout; + +import com.sucstepsoft.realtimelocation.R; + +public class TitleContent extends RelativeLayout { + public TitleContent(Context context) { + super(context); + initView(); + } + + private void initView() { + LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); + this.setLayoutParams(params); + } + + public TitleContent(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + } + + public TitleContent(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/widget/TitleTextView.java b/app/src/main/java/com/sucstepsoft/realtimelocation/widget/TitleTextView.java new file mode 100644 index 0000000..878e1b5 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/widget/TitleTextView.java @@ -0,0 +1,33 @@ +package com.sucstepsoft.realtimelocation.widget; + +import android.content.Context; +import android.graphics.Color; +import android.support.annotation.Nullable; +import android.util.AttributeSet; +import android.widget.LinearLayout; + +import com.sucstepsoft.cm_utils.utils.ConvertUtils; + +public class TitleTextView extends android.support.v7.widget.AppCompatTextView { + public TitleTextView(Context context) { + super(context); + initView(context); + } + + private void initView(Context context) { + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); + int padding = ConvertUtils.dp2px(2); + this.setPadding(padding, padding, padding, padding); + this.setTextColor(Color.BLACK); + this.setTextSize(14); + this.setLayoutParams(params); + } + + public TitleTextView(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + } + + public TitleTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } +} diff --git a/app/src/main/res/drawable-xhdpi/ic_add_floor_icon.png b/app/src/main/res/drawable-xhdpi/ic_add_floor_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..767da504700bd25632bfea08049fcc2acc783280 GIT binary patch literal 2065 zcmV+s2=4cZP)Px+%Sl8*RCr$Hn{8}cR~g6u&+$u~H`}qZBu&$FZPIp0w6LIl8uL|FsZt1@jsUpF@3c}U7K6SsIzacS z)OG}*b_bVSiX%cuTA}5W-U4r8=!WTeMtkT=;Ld3MuZ3vFmD17RB1$3O9*Pc z_!PY*8*det5kRnqgCIR(2#OGsd8L(-w=$OLdj{VoP<}VB6gt17LNHGne~b-?H7fc_00?O2I?ivZ z5HvOFDgb{m;PU{*UZBJa2OMoW+#GX&f12lvd>rZ2*h?o zoKJ+4KJ58u6J3}F5Y+TX8T6o&0p$DYCq3TMK)c%N;cW6IyccPsebWHSdwHE8e$@$p zHOqluiIdFvHgo6u8Wn0k~uYa|K}AT0-|n zrW`~^fJb(7Mmyz27}~y$o{;ft`4cb$f|{|Hfse}w<_f?=-Gt_p)x`v0f|#=rv34tV z7P~Pa<2ic;n49{VelLN(D2605jvn7Cv{_z&W@Eny9D--}VemeN6 z8}N*bXG;KPKtMB209bA%SSSFB+<3pggT7|vS85KJ0>Iw~_#P|4LIGg<>}sK}FAw9a zm1nsM=;du7-fbmTNB~w=(@!@w<9Ak`r2v$Do~v9FY)P|_00c|u*j;PzJtY7>oCo$N zj=8h6LIOZU@q5aW^yW8S<@BJ8K=nSwd zOy9nK369G^nDbURHL;>+vcnLrtUIrE0i@pH$(XbgGjajg^#bqvL>ujq$+HAtiUj+N z)67_uNzg8UpWUbUfFRA-uDv*YV;vq*2EecBKOxX|RRD5b0S`RO()R;W6%f#}?-JRq z025>`=YX>@jDI0QJJnS{53eA>L#ir3#+Vsn>tQHG)a%BDyE{nglv}C-63by9zXs+H zA5Lcu!AS+kKyV7c&K8+G08M`kp!?@CUT6SX>*~V0hIT~HwzLk6gmJq zgEz+_4Ip$E`}Ly4>2V+(LLpQ@wI7F?Yw3{PeL-me=Aiw3#&g8jS_l9HVchS-a78H% zU0sReb_bpugDn6-jlaa;S^IAJs({Cz$GMU7I93zDa8nJ2DoSDQTh6Q50+8t~l3W3J z^iGPes)ai_!oQ!v6Q|B1<8thTge?GxF0{;P~prh=xmWDXH!C!dG2^`eHA_ zBj@ne2jlZE`E($*0hH|EMeaEMMBwR{VeC|ZAWZmuG!*vZ?Z!$(8>?{I>MG^(d)ojK zt3g^7SOM^PFcL09v_3@9_IgaeoRrIf$!a?SkeCa4q`r2`GDe+uF6d2nLSK8vrxYfuralhDV*XJSn+xXx;!!tNV}eRu@p6C)>)p5qjEN zVosG09OfnnbU4jlkUYZqNE`i9Nd=e#IPe$#B)Aa&VKO(~IOFAw?Q~Kdfd8Q?Ai~Mc zHhS4aqYQv4cJR-96$ILuv2;Po+M-hiE{Y<&(%DRBlA%fgBt>62%B$jWRKbHXGEfde vISjd1Zd8I30%Kr|#Tl2}E{x6fe}Vr1290)63#|G900000NkvXXu0mjfO_aPx(Q%OWYRCr$Pn?Y|AM-<2ZZ*79`CYwO06uv?$wa4}t1RMeg!jS?!l^)we=>>08 zS6Oob4sZlckdPw*0X`Je9N|c%_A3ynG$fm>D}ueR8k2~Scs(<_>#?QDNxXv% zT*xwj9DMIZf%je7IH>`+n{3 z@F^G*-A*P|d_pan_KxfLY5^#f!^=dd>U3b*mKo)G)w`nFuQC8p+z{ioYT#blG2xJjJqySpwE$~nl zNT;39JiHd{{{+II|8|^F_(La-%$9-Eva(qUz@1usmUnG$3V`_U5KRvq?F6bLfNm{( z#sG+|2FZfh5rA7>c?_ZxvZAnhkmlU_duPnY~c}zwO^m1+DnV6WM&VZgdS!DQAC0bzJXZsd?hUXI z1>RxRB(m7Keke+2Jpc)Bg7!1O4}S)ryV=;^0DwzT;9Xan0oDVs{t>W!5w!j_Xni3h zR!Y|o|Is+k)_SY;pb&Z!1>R@MrLZs@^ut>WT-3@;(bzNq0&cGb-Va&;N`5#gL<)*I zX_=V@AjBE$-fS4@t{`Wf&)JZ4W{s77=C00000NkvXXu0mjfp)?<* literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_del_icon.png b/app/src/main/res/drawable-xhdpi/ic_del_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c1b2dd81bd1c1cc808054d6c5ae602404ad830a3 GIT binary patch literal 590 zcmV-U0Px%2uVaiRCr$PTD?*NF%aI|aM;+|I6$dK=Zs1#yoo-6K8ikpzKPoUGh@eT35<=c zjlf)->)^<7OOk~!d{^&&*?igkHkU+^@b}q_&$Uu7Hp3{bJIBMxtBo($M{x~p?A}f( z-v6oRlRvTXC!&wvgK_8VohFw4m2RR0^jr0NMRZvi#S#Ne^w1uRuUs&e`HB&cw)U=x z^sS%3)lD+^yYquJk0L@qzfrqTQS{_9V4Y>%_GtR-6EnwJARukVkFJAgQin>>kt@!u zzt;4nNPoLxCc{Z@7GsfsR$aRe60(0X7|+ca1Qb^*MF#A833w2}pf#XM1Vav9A~unI zfJC5Dm>@uk*=@l^25?uZ->7v}6gh8`x#PLm=`8EDM^o0n2s;Bn05Sk201YsSU@kZ= zg5~O47Sq~9u=s!NI-ynlO@FUz?E)a6aKf_c3cA`O0}KZ^L6tzhfikUfQKYzboD-~| z2;in@*-o=cW4QQbrRKa9_7xxqDA{WJA{ZG^!T?Hu+lQrVR2m;8fD$k>01bc!Fd2{* zDQSF&AVd%%Xk-9gfT@8bEmG3>5J89_L=YlqVgOwLU4Y4ebeodKM;k;NL>t^p8{}Sj zaqYJ5YK*C|)@H$9jako(=?DTszaD2Uq_x?`GhpW*Nm(zQpyOH}NC?iu8X5%Pu{2(b cv!BcV111onZd_WqH~;_u07*qoM6N<$g10^dKL7v# literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_floor_add_icon.png b/app/src/main/res/drawable-xhdpi/ic_floor_add_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4b5a828e24c39adf500bcafb4b85abc119ab423b GIT binary patch literal 715 zcmeAS@N?(olHy`uVBq!ia0vp^hd`Kv8A$5bzXef@#X;^)j5kl})B`!31s;*b3=G`D zAk4@xYmNj^&@aFz#P$9A_nJA+fjl6Caxmk@(>S16QYArt!TeiNQKOr z$B}P0vTDupA-}h{D&V02i?hniVuYVF@ zuO?&kKJxuZzIvf=E59%KzVvtDp|abDjzu~nUNPy3msuE^f+9hJY7p4^jucFOs&ZQ?q$ zl6%6>UO7DlGPPW4*2ShMz6yS*^9$%| zx6s3u^vnNbIaMY&Fd-8zb3SO@P1RS%rxn8jCWtc{T)Y0+T}|P<{z>ma(G%8~z`YIK zhr|nFt1njP&seVCH1(b`&~p*eUr$chvYf@b>ii7lt;J5VA74(pYR|dtlbq4rQ+k}! zs`O{RI=zl__SWyyGOx{!Zptmcm%Z#p?%R0@vpME3ElGada=9EBdP{RkW9z&(SoOZ> z@xF9RPWa3%qe=h0Yj5_Y^$VZr+VgUigBH8~6R6Jk8NTLQ6FI z)zOPT!*u>17TCOb;?^~1x=Xe^OTKBS`^jjxbZ*%C*w{?}KeJbr=?mYw%fA12|C@ES zeiA}&Bj0ykd_ZFHrdKw+uM|LLo4txa1m?6S#7|I){1dtU2hu5oGQi|ZNUI0T})`W9q? O9PH`p=d#Wzp$Py~`5p%V literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_house_add_icon.png b/app/src/main/res/drawable-xhdpi/ic_house_add_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5cb8a283b4612cb5ad02dff01ed94f45ee071471 GIT binary patch literal 610 zcmeAS@N?(olHy`uVBq!ia0vp^lR%h*8A#4tn!E={F%}28J2BoosZ$T+a29w(7Bet# z3xhBt!>l5TxaeD6-)iee(bO3oqTAbF1!AksrmKC`IDO0mtDR)*=~(@+FRX~ z@76k}W&WM}h-#1tC7Ti^~z~%;ma=_i4|aA_>o`cea+BZMbjf_!V(2f$4N~pte#wxL{J5~-cBxi z?<(Y}GSLM{>|I?s+5BH8HialU4wxi!Fa7t-GRLPl&9RKlf^l_dBcd&q?izp9`Ax2bc1({r&ZI w!F`kJ8;QBF?Q<*z=&h;boFyt=akR{01kZ$l>h($ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_house_del_icon.png b/app/src/main/res/drawable-xhdpi/ic_house_del_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0b06923aeaae1782ca10247a80222ea37e3aabe9 GIT binary patch literal 1016 zcmeAS@N?(olHy`uVBq!ia0vp^lR%h*8A#4tn!E={F%}28J2BoosZ$T+a29w(7Bet# z3xhBt!>l@ zTVFfZzSwl^?eVK`yVt&6edrBP(5B*rSJR90x8A|ceDVThMd`d(K=R&`cPkFOaj1Ur z>dpHtC*EdEd$s56Tg&nnX;WU_ef-X(__=S(i$~AiUAXnGe8H=f$uAFFczf*1TZ^(6 z`_I3vU{$>dbhlkekYDis{|x_s{-5!Nsl(!O)S5~W*;#M@gTNCo`F|UbV&h`{|M>rA zhyW_deS_1Nfq|*l)5S5QV$Rz;k;S(RL|79xN=Wmh-Dghp&vyF|bmA28pB-DI)(cGe6BRZ`_vWm4F0MEh#VO~f);zC~Fr8bIs=qSE z_VKG6_1W6*Cv~l}4UpKr!*$oWo2;!TV^=R(?R|Tm!SwJ+CVRK8jeJ`6%Wc)IZ8<@A zCvKJ1)W6ZqJz$n{a|%Mg|3+)qHFfkmikj;i~-o0C~oCO9y0 zF5&mM<$FF*zr3w~@eSo!3hBKTh>t33lofJIp(=WyJT4M?4 zO0hi6bX$oYMH@qluyY&vc%EIDyE^AjklR)swuy7?ay9xLvM!n_1kSxE8^5A>mzvV7 z$!GcxznC&l(DO?0la;eOk7yMCk^5*QEjj7PoLMI3q7&;&m&HfVcqY8`#Y#^Hq4V`G zTmdKI;Vst0Oz~(h5!Hn literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_scroll_bar_line.png b/app/src/main/res/drawable-xhdpi/ic_scroll_bar_line.png new file mode 100644 index 0000000000000000000000000000000000000000..088991ce956ee0cb1022c31983046e3a485336c0 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^AhsL}Gmv~9JqbiH76-XIG2T3>QxD{D7I;J!Gca%q zgD@k*tT_@uLH+=r5Legcf5<4`uBH$u#aa^N7c3LX_1}2c=~)6m0clSc$B>FS$q6Dr mkR)IR1d>cky1Ki&g&9swlKlD6m8k=$jKR~@&t;ucLK6V)K`Uqg literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/sel_radio_white.xml b/app/src/main/res/drawable/sel_radio_white.xml new file mode 100644 index 0000000..ab92328 --- /dev/null +++ b/app/src/main/res/drawable/sel_radio_white.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_btn_no_radius_blue.xml b/app/src/main/res/drawable/shape_btn_no_radius_blue.xml index e051630..27dd0c9 100755 --- a/app/src/main/res/drawable/shape_btn_no_radius_blue.xml +++ b/app/src/main/res/drawable/shape_btn_no_radius_blue.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/shp_scroll_bar.xml b/app/src/main/res/drawable/shp_scroll_bar.xml new file mode 100644 index 0000000..50092a0 --- /dev/null +++ b/app/src/main/res/drawable/shp_scroll_bar.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_new_community.xml b/app/src/main/res/layout/activity_add_new_community.xml index cc3ab27..9acba0e 100644 --- a/app/src/main/res/layout/activity_add_new_community.xml +++ b/app/src/main/res/layout/activity_add_new_community.xml @@ -141,7 +141,7 @@ android:drawableLeft="@drawable/ic_item_title_icon_rec" android:drawablePadding="5dp" android:padding="8dp" - android:text="基础信息" + android:text="地理信息" android:textStyle="bold" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +