diff --git a/app/build.gradle b/app/build.gradle index ced5e53..baf917d 100755 --- a/app/build.gradle +++ b/app/build.gradle @@ -107,5 +107,7 @@ dependencies { releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.1' testImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.1' + //流布局 + implementation "com.beloo.widget:ChipsLayoutManager:0.3.7@aar" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5ad702b..f8999ef 100755 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,16 @@ android:theme="@style/AppTheme" android:usesCleartextTraffic="true" tools:ignore="GoogleAppIndexingWarning"> - + + mFragments = new ArrayList<>(); @Override @@ -53,20 +54,17 @@ public class BuildingViewPageActivity extends BaseActivity { 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); VpNoticeAdapter adapter = new VpNoticeAdapter(getSupportFragmentManager()); mVpContent.setAdapter(adapter); mTablayout.setxTabDisplayNum(4); mTablayout.setupWithViewPager(mVpContent); mTvPublish.setOnClickListener(v -> onAddPage()); -// if (!TextUtils.isEmpty("type")) { -// mVpContent.setCurrentItem(2); -// } } /** diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewHireHouseAddActivity.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewHireHouseAddActivity.java new file mode 100644 index 0000000..556c240 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewHireHouseAddActivity.java @@ -0,0 +1,760 @@ +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.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.LinearLayout; +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.builder.TimePickerBuilder; +import com.bigkoo.pickerview.view.OptionsPickerView; +import com.bigkoo.pickerview.view.TimePickerView; +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.beans.BaseUserBean; +import com.sucstepsoft.realtimelocation.beans.DicBean; +import com.sucstepsoft.realtimelocation.beans.HireHouseDetailBean; +import com.sucstepsoft.realtimelocation.beans.SaveHireHouseBean; +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 NewHireHouseAddActivity extends BaseActivity { + + + @BindView(R.id.et_owner_name) + EditText mEtOwnerName; + @BindView(R.id.et_owner_phone) + EditText mEtOwnerPhone; + @BindView(R.id.et_house_count) + EditText mEtHouseCount; + @BindView(R.id.tv_house_frame) + TextView mTvHouseFrame; + @BindView(R.id.tv_register_date) + TextView mTvRegisterDate; + @BindView(R.id.tv_hire_type) + TextView mTvHireType; + @BindView(R.id.tv_manage_level) + TextView mTvManageLevel; + @BindView(R.id.et_hire_area) + EditText mEtHireArea; + @BindView(R.id.tv_lend_date) + TextView mTvLendDate; + @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.rlv_photo) + RecyclerView mRlvPhoto; + @BindView(R.id.ll_content) + LinearLayout mLlContent; + @BindView(R.id.btn_confirm) + Button mBtnConfirm; + @BindView(R.id.et_address) + EditText mEtAddress; + private Unbinder mBind; + + private OptionsPickerView mDicPicker; + private List mDicBeanList; + + + private SimpleDateFormat mDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + private String mId = ""; + 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 String mSelLat; + private String mSelLng; + private DicBean mSelFrame; + private DicBean mSelType; + private DicBean mSelLevel; + + @Override + protected int setLayoutId() { + return R.layout.activity_add_new_hire_house; + } + + @Override + public void initData() { + mBind = ButterKnife.bind(this); + String title = getIntent().getStringExtra("title"); + mTvBaseTitle.setText(title); + mId = getIntent().getStringExtra("id"); + if (!TextUtils.isEmpty(mId)) { + refreshView(STATE_LOAD_LOADING); + getDetailById(); + } else { + refreshView(STATE_LOAD_SUCCESS); + } + initContentView(); + initPhoto(); + initBaiduMap(); + } + + private void doSubmit() { + if (checkParams()) { + if (!TextUtils.isEmpty(mId)) { + doEdit(); + } else { + doSave(); + } + } + + } + + /** + * 保存编辑 + */ + private void doEdit() { + hideSoftKeyboard(); + ProgressDialog dialog = UIUtil.initDialog(mActivity, "修改中..."); + dialog.show(); + RequestBody body = buildParams(); + RetrofitManager.getInstance() + .create(LocationApiService.class) + .doEditHireHouse(mId, body, 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) { + dialog.dismiss(); + ToastUtils.showShort("修改成功"); + setResult(RESULT_OK); + finish(); + } + + @Override + public void onError(@NonNull Throwable e) { + dialog.dismiss(); + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + + private void initContentView() { + mTvHouseFrame.setOnClickListener(v -> onShowDicPicker(PathConfig.DIC_BUILDING_HOUSE_FRAME, 2, 1));//结构类型 + mTvRegisterDate.setOnClickListener(v -> onShowDate(mTvRegisterDate));//登记日期 + mTvHireType.setOnClickListener(v -> onShowDicPicker(PathConfig.DIC_HIRE_TYPE, 2, 2));//群租房类型 + mTvManageLevel.setOnClickListener(v -> onShowDicPicker(PathConfig.DIC_MANAGE_TYPE, 2, 3));//管理级别 + mTvLendDate.setOnClickListener(v -> onShowDate(mTvLendDate));//出租日期 + mBtnConfirm.setOnClickListener(v -> doSubmit()); + } + + private void onShowDate(TextView tvItem) { + hideSoftKeyboard(); + TimePickerView mTimePickerView = new TimePickerBuilder(mActivity, (date, v) -> { + tvItem.setText(mDateFormat.format(date)); + }) + .setTitleText("请选日期") + .setCancelColor(Color.parseColor("#1189FF")) + .setSubmitColor(Color.parseColor("#1189FF")) + .setType(new boolean[]{true, true, true, false, false, false}) + .setTitleColor(Color.parseColor("#1189FF")) + .build(); + mTimePickerView.show(); + } + + + 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); + } + + + private void initPhoto() { + 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); + } + }); + } + + /** + * 显示选择图片 + * + * @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(); + } + + /** + * 上传文件 + * + * @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(); + } + + + private boolean checkParams() { + String name = mEtOwnerName.getText().toString().trim(); + if (TextUtils.isEmpty(name)) { + ToastUtils.showShort("请输入房主姓名"); + return false; + } + String phone = mEtOwnerPhone.getText().toString().trim(); + if (TextUtils.isEmpty(phone)) { + ToastUtils.showShort("请输入房主联系方式"); + return false; + } + if (mSelFrame == null) { + ToastUtils.showShort("请选择房屋结构"); + return false; + } + if (mSelType == null) { + ToastUtils.showShort("请选择群租房类型"); + return false; + } + if (mSelLevel == null) { + ToastUtils.showShort("请选择管理级别"); + return false; + } + + return true; + } + + + @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); + } + + + 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://房屋结构 + mSelFrame = bean; + mTvHouseFrame.setText(bean.getDictionaryName()); + break; + case 2://类型 + mSelType = bean; + mTvHireType.setText(bean.getDictionaryName()); + break; + case 3://级别 + mSelLevel = bean; + mTvManageLevel.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(NewHireHouseAddActivity.this, "添加中..."); + progressDialog.show(); + RetrofitManager.getInstance() + .create(LocationApiService.class) + .doSaveHireHouse(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() { + + } + }); + } + + + private void getDetailById() { + RetrofitManager.getInstance() + .create(LocationApiService.class) + .getHireHouseDetail(mId, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(HireHouseDetailBean newCommunityDetailBean) { + setDataToView(newCommunityDetailBean); + } + + @Override + public void onError(Throwable e) { + refreshView(STATE_LOAD_ERROR); + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + + private void setDataToView(HireHouseDetailBean bean) { + mEtOwnerName.setText(bean.getHomeowner()); + mEtOwnerPhone.setText(bean.getPhone()); + mEtHouseCount.setText(bean.getRoomCount() + ""); + if (!TextUtils.isEmpty(bean.getStructureId())) { + mSelFrame = new DicBean(); + mSelFrame.setDictionaryId(bean.getStructureId()); + mSelFrame.setDictionaryName(bean.getStructureName()); + mTvHouseFrame.setText(bean.getStructureName()); + } + mTvRegisterDate.setText(bean.getRegistrationDate()); + if (!TextUtils.isEmpty(bean.getManageLevelId())) { + mSelLevel = new DicBean(); + mSelLevel.setDictionaryId(bean.getManageLevelId()); + mSelLevel.setDictionaryName(bean.getManageLevelName()); + mTvManageLevel.setText(bean.getManageLevelName()); + } + if (!TextUtils.isEmpty(bean.getGroupTypeId())) { + mSelType = new DicBean(); + mSelType.setDictionaryId(bean.getGroupTypeId()); + mSelType.setDictionaryName(bean.getGroupTypeName()); + mTvHireType.setText(bean.getGroupTypeName()); + } + mEtHireArea.setText(bean.getRentalArea()); + mTvLendDate.setText(bean.getRentalDate()); + mEtAddress.setText(bean.getAddress()); + if (!TextUtils.isEmpty(bean.getLatitude()) && !TextUtils.isEmpty(bean.getLongitude())) { + mSelLat = bean.getLatitude(); + mSelLng = bean.getLongitude(); + Double lat = Double.parseDouble(bean.getLatitude()); + Double lng = Double.parseDouble(bean.getLongitude()); + mTvPoint.setText("经纬度:" + mSelLat + "-" + mSelLng); + addMarker(new LatLng(lat, lng)); + } + if (!TextUtils.isEmpty(bean.getImage())) { + String[] photos = bean.getImage().split(","); + mPhotos.clear(); + for (int i = 0; i < photos.length; i++) { + AddPhotoBean pBean = new AddPhotoBean(); + pBean.setId(photos[i]); + pBean.setPath(BaseUrlApi.BASE_IMG_URL + photos[i]); + mPhotos.add(pBean); + } + if (mPhotos.size() < 9) { + mPhotos.add(new AddPhotoBean()); + } + mPhotoAdapter.setData(mPhotos); + } + + refreshView(STATE_LOAD_SUCCESS); + } + + + /** + * 构建提交参数 + * + * @return + */ + private RequestBody buildParams() { + SaveHireHouseBean bean = new SaveHireHouseBean(); + String name = mEtOwnerName.getText().toString().trim(); + bean.setHomeowner(name); + String phone = mEtOwnerPhone.getText().toString().trim(); + bean.setPhone(phone); + String count = mEtHouseCount.getText().toString().trim(); + bean.setRoomCount(TextUtils.isEmpty(count) ? 0 : Integer.parseInt(count)); + + bean.setStructureId(mSelFrame.getDictionaryId()); + bean.setStructureName(mSelFrame.getDictionaryName()); + String registerDate = mTvRegisterDate.getText().toString().trim(); + bean.setRegistrationDate(registerDate); + bean.setManageLevelId(mSelLevel.getDictionaryId()); + bean.setManageLevelName(mSelLevel.getDictionaryName()); + bean.setGroupTypeId(mSelType.getDictionaryId()); + bean.setGroupTypeName(mSelType.getDictionaryName()); + String hireArea = mEtHireArea.getText().toString().trim(); + bean.setRentalArea(hireArea); + String lendDate = mTvLendDate.getText().toString().trim(); + bean.setRentalDate(lendDate); + String addres = mEtAddress.getText().toString().trim(); + bean.setAddress(addres); + bean.setLatitude(mSelLat); + bean.setLongitude(mSelLng); + String ids = ""; + for (int i = 0; i < mPhotoAdapter.getData().size(); i++) { + if (!TextUtils.isEmpty(mPhotoAdapter.getData().get(i).getId())) { + ids += mPhotoAdapter.getData().get(i).getId() + ","; + } + } + if (ids.endsWith(",")) { + ids = ids.substring(0, ids.length() - 1); + } + bean.setImage(ids); + 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/NewHireHouseDetailActivity.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewHireHouseDetailActivity.java new file mode 100644 index 0000000..5caaf0d --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/newhouse/activitys/NewHireHouseDetailActivity.java @@ -0,0 +1,309 @@ +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.GridLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.text.TextUtils; +import android.view.View; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.LinearLayout; +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.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.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.beans.HireHouseDetailBean; +import com.sucstepsoft.realtimelocation.beans.SuccessBean; +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 NewHireHouseDetailActivity extends BaseActivity { + + + @BindView(R.id.tv_owner_name) + TextView mTvOwnerName; + @BindView(R.id.tv_owner_phone) + TextView mTvOwnerPhone; + @BindView(R.id.tv_house_count) + TextView mTvHouseCount; + @BindView(R.id.tv_house_frame) + TextView mTvHouseFrame; + @BindView(R.id.tv_register_date) + TextView mTvRegisterDate; + @BindView(R.id.tv_hire_type) + TextView mTvHireType; + @BindView(R.id.tv_manage_level) + TextView mTvManageLevel; + + @BindView(R.id.tv_lend_date) + TextView mTvLendDate; + @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.rlv_photo) + RecyclerView mRlvPhoto; + @BindView(R.id.btn_del) + Button mBtnDel; + @BindView(R.id.btn_edit) + Button mBtnEdit; + @BindView(R.id.ll_btns) + LinearLayout mLlBtns; + @BindView(R.id.tv_hire_area) + TextView mTvHireArea; + @BindView(R.id.tv_address) + TextView mTvAddress; + + private Unbinder mBind; + + + private BaiduMap mBaiduMap; + private LatLng mDefaultPoint; + private BitmapDescriptor mBitmapDescriptor; + private List mPhotos = new ArrayList<>(); + private AddPhotoAdapter mPhotoAdapter; + + private String mId; + + @Override + protected int setLayoutId() { + return R.layout.activity_detail_new_hire_house; + } + + @Override + public void initData() { + mBind = ButterKnife.bind(this); + mTvBaseTitle.setText("详情"); + refreshView(STATE_LOAD_LOADING); + mId = getIntent().getStringExtra("id"); + initContentView(); + initBaiduMap(); + getDetailById(); + } + + /** + * 获取详情 + */ + private void getDetailById() { + RetrofitManager.getInstance() + .create(LocationApiService.class) + .getHireHouseDetail(mId, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(HireHouseDetailBean newCommunityDetailBean) { + setDataToView(newCommunityDetailBean); + } + + @Override + public void onError(Throwable e) { + refreshView(STATE_LOAD_ERROR); + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + + /** + * 显示内容 + */ + private void setDataToView(HireHouseDetailBean bean) { + mTvOwnerName.setText(bean.getHomeowner()); + mTvOwnerPhone.setText(bean.getPhone()); + mTvHouseCount.setText(bean.getRoomCount() + ""); + mTvHouseFrame.setText(bean.getStructureName()); + mTvRegisterDate.setText(bean.getRegistrationDate()); + mTvManageLevel.setText(bean.getManageLevelName()); + mTvHireType.setText(bean.getGroupTypeName()); + mTvHireArea.setText(bean.getRentalArea()); + mTvLendDate.setText(bean.getRentalDate()); + mTvAddress.setText(bean.getAddress()); + + if (!TextUtils.isEmpty(bean.getLatitude())) { + Double lat = Double.parseDouble(bean.getLatitude()); + Double lng = Double.parseDouble(bean.getLongitude()); + mTvPoint.setText("经纬度:" + bean.getLatitude() + "-" + bean.getLongitude()); + addMarker(new LatLng(lat, lng)); + } + if (!TextUtils.isEmpty(bean.getImage())) { + String[] photos = bean.getImage().split(","); + mPhotos.clear(); + for (int i = 0; i < photos.length; i++) { + AddPhotoBean pBean = new AddPhotoBean(); + pBean.setId(photos[i]); + pBean.setPath(BaseUrlApi.BASE_IMG_URL + photos[i]); + mPhotos.add(pBean); + } + mPhotoAdapter.setData(mPhotos); + } + if (UserLgUtils.getUserId().equals(bean.getCreator())) { + mLlBtns.setVisibility(View.VISIBLE); + } else { + mLlBtns.setVisibility(View.GONE); + } + refreshView(STATE_LOAD_SUCCESS); + } + + private void initContentView() { + mPhotoAdapter = new AddPhotoAdapter(mActivity, mPhotos); + mRlvPhoto.setLayoutManager(new GridLayoutManager(mActivity, 4)); + mRlvPhoto.setAdapter(mPhotoAdapter); + + mPhotoAdapter.addOnItemClickListener(bean -> { + if (TextUtils.isEmpty(bean.getPath())) { + //空数据 + } 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); + } + }); + mBtnEdit.setOnClickListener(v -> { + Intent intent = new Intent(mActivity, NewHireHouseAddActivity.class); + intent.putExtra("id", mId); + intent.putExtra("title", "出租房信息编辑"); + startActivityForResult(intent, 1234); + }); + mBtnDel.setOnClickListener(v -> doDel()); + } + + private void doDel() { + 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) + .doDelHireHouse(mId, 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("删除成功"); + dialog1.dismiss(); + setResult(RESULT_OK); + finish(); + } + + @Override + public void onError(@NonNull Throwable e) { + dialog1.dismiss(); + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + }) + .setNegativeButton("取消", (dialog, which) -> dialog.dismiss()) + .create() + .show(); + } + + + 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); + + } + + /** + * 添加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) { + refreshView(STATE_LOAD_LOADING); + getDetailById(); + } + super.onActivityResult(requestCode, resultCode, data); + } +} \ No newline at end of file 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 b1e231d..5fe9d50 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 @@ -1,7 +1,6 @@ package com.sucstepsoft.realtimelocation.activitys.census.newhouse.fragments; import android.app.Activity; -import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; @@ -15,12 +14,11 @@ import com.sucstepsoft.cm_utils.core.widget.base.LazyFragment; import com.sucstepsoft.cm_utils.utils.ToastUtils; import com.sucstepsoft.cm_utils.utils.UserLgUtils; import com.sucstepsoft.realtimelocation.R; -import com.sucstepsoft.realtimelocation.activitys.census.newhouse.activitys.NewHouseAddActivity; +import com.sucstepsoft.realtimelocation.activitys.census.newhouse.activitys.NewHireHouseAddActivity; +import com.sucstepsoft.realtimelocation.activitys.census.newhouse.activitys.NewHireHouseDetailActivity; import com.sucstepsoft.realtimelocation.activitys.census.newhouse.activitys.NewHouseDetailActivity; import com.sucstepsoft.realtimelocation.adapters.HireHouseAdapter; -import com.sucstepsoft.realtimelocation.adapters.NewHouseAdapter; import com.sucstepsoft.realtimelocation.beans.HireHouseBean; -import com.sucstepsoft.realtimelocation.beans.NewHouseBean; import com.sucstepsoft.realtimelocation.net.LocationApiService; import java.util.ArrayList; @@ -89,7 +87,7 @@ public class HireHouseManageFragment extends LazyFragment { private void showIssueDetail(HireHouseBean.RowsBean bean) { Intent intent = new Intent(); intent.putExtra("id", bean.getRentalId()); - intent.setClass(mActivity, NewHouseDetailActivity.class); + intent.setClass(mActivity, NewHireHouseDetailActivity.class); startActivityForResult(intent, 1234); } @@ -129,8 +127,8 @@ public class HireHouseManageFragment extends LazyFragment { @Override public void startAddActivity(String id) { - Intent intent = new Intent(mActivity, NewHouseAddActivity.class); - intent.putExtra("title", "房屋信息录入"); + Intent intent = new Intent(mActivity, NewHireHouseAddActivity.class); + intent.putExtra("title", "出租房信息录入"); startActivityForResult(intent, 1234); } 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 398f41b..0c05c83 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 @@ -2,6 +2,7 @@ package com.sucstepsoft.realtimelocation.activitys.census.normal; import android.app.ProgressDialog; import android.graphics.Color; +import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.widget.Button; import android.widget.EditText; @@ -10,6 +11,7 @@ import android.widget.RadioGroup; import android.widget.Switch; import android.widget.TextView; +import com.beloo.widget.chipslayoutmanager.ChipsLayoutManager; import com.bigkoo.pickerview.builder.OptionsPickerBuilder; import com.bigkoo.pickerview.builder.TimePickerBuilder; import com.bigkoo.pickerview.view.OptionsPickerView; @@ -19,12 +21,15 @@ import com.sucstepsoft.cm_utils.constant.PathConfig; 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.AreaChooseDialog; +import com.sucstepsoft.cm_utils.utils.LogUtils; import com.sucstepsoft.cm_utils.utils.RegexUtils; 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.PersonTagAdapter; import com.sucstepsoft.realtimelocation.beans.DicBean; +import com.sucstepsoft.realtimelocation.beans.PersonTag; import com.sucstepsoft.realtimelocation.beans.SuccessBean; import com.sucstepsoft.realtimelocation.beans.person.BaseRegisterDetailBean; import com.sucstepsoft.realtimelocation.beans.person.CensusmsgBean; @@ -32,6 +37,7 @@ import com.sucstepsoft.realtimelocation.net.LocationApiService; import com.sucstepsoft.realtimelocation.utils.ExceptionHandler; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.List; import butterknife.BindView; @@ -189,6 +195,10 @@ public class CensusRegisterAddActivity extends BaseActivity { EditText mEtDangqitashuoming; @BindView(R.id.btn_confirm) Button mBtnConfirm; + @BindView(R.id.rlv_tags) + RecyclerView mRlvTags; + @BindView(R.id.rb_retire) + RadioButton mRbRetire; private Unbinder mBind; private SimpleDateFormat mDateFormat = new SimpleDateFormat("yyyy-MM-dd"); private int mCurrentHealthType = -1;//当前选择的那个健康状况 @@ -288,6 +298,7 @@ public class CensusRegisterAddActivity extends BaseActivity { private String mSelAreaName = ""; private String mSelAreaCode = ""; private String mId; + private PersonTagAdapter mTagAdapter; @Override protected int setLayoutId() { @@ -299,6 +310,7 @@ public class CensusRegisterAddActivity extends BaseActivity { mBind = ButterKnife.bind(this); mId = getIntent().getStringExtra("id"); String title = getIntent().getStringExtra("title"); + getPersonTags(); if (!TextUtils.isEmpty(mId)) { //编辑 refreshView(STATE_LOAD_LOADING); @@ -311,6 +323,43 @@ public class CensusRegisterAddActivity extends BaseActivity { initContentView(); } + /** + * 获取人员信息标签 + */ + private void getPersonTags() { + RetrofitManager.getInstance() + .create(LocationApiService.class) + .getPersonTags(UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer>() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(List tags) { + if (tags != null && tags.size() > 0) { + mTags = tags; + mTagAdapter.setData(mTags); + } else { + + } + } + + @Override + public void onError(Throwable e) { + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + private String mSelGetJob = "已就业"; /** @@ -358,11 +407,21 @@ public class CensusRegisterAddActivity extends BaseActivity { } else if (checkedId == R.id.rb_so) { //灵活就业 mSelGetJob = "灵活就业"; + } else if (checkedId == R.id.rb_retire) { + mSelGetJob = "退休"; } }); mBtnConfirm.setOnClickListener(v -> doSubmit()); + ChipsLayoutManager chipsLayoutManager = ChipsLayoutManager.newBuilder(mActivity) + .setOrientation(ChipsLayoutManager.HORIZONTAL) + .build(); + mTagAdapter = new PersonTagAdapter(mActivity, mTags, true); + mRlvTags.setLayoutManager(chipsLayoutManager); + mRlvTags.setAdapter(mTagAdapter); } + private List mTags = new ArrayList<>(); + /** * 显示字典选项 */ @@ -631,6 +690,8 @@ public class CensusRegisterAddActivity extends BaseActivity { mRbDiss2.setChecked(true); } else if ("灵活就业".equals(bean.getDepartmentType())) { mRbSo.setChecked(true); + } else if ("退休".equals(bean.getDepartmentType())) { + mRbRetire.setChecked(true); } // String workplace = mEtWorkplace.getText().toString().trim(); // bean.setDepartment(workplace);//工作单位 @@ -768,6 +829,12 @@ public class CensusRegisterAddActivity extends BaseActivity { // String qitashuoming = mEtDangqitashuoming.getText().toString().trim(); // bean.setOthertext(qitashuoming);//其他说明 mEtDangqitashuoming.setText(bean.getOthertext()); + for (int i = 0; i < mTags.size(); i++) { + if (bean.getLabel().contains(mTags.get(i).getId())) { + mTags.get(i).setCheck(true); + } + } + mTagAdapter.setData(mTags); refreshView(STATE_LOAD_SUCCESS); } @@ -1058,6 +1125,18 @@ public class CensusRegisterAddActivity extends BaseActivity { bean.setPartyTime(rudangshijian);//入党时间 String qitashuoming = mEtDangqitashuoming.getText().toString().trim(); bean.setOthertext(qitashuoming);//其他说明 + List data = mTagAdapter.getData(); + LogUtils.e(data); + String tags = ""; + for (int i = 0; i < data.size(); i++) { + if(data.get(i).isCheck()){ + tags += data.get(i).getId() + ","; + } + } + if (tags.endsWith(",")) { + tags = tags.substring(0, tags.length() - 1); + } + bean.setLabel(tags); 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/normal/CensusRegisterDetailActivity.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/normal/CensusRegisterDetailActivity.java index 123a944..d3bd507 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 @@ -1,13 +1,14 @@ package com.sucstepsoft.realtimelocation.activitys.census.normal; import android.content.Intent; +import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.LinearLayout; import android.widget.RadioButton; -import android.widget.RadioGroup; import android.widget.Switch; 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.UserLgUtils; @@ -19,7 +20,9 @@ import com.sucstepsoft.realtimelocation.activitys.census.special.CensusHeresyLis import com.sucstepsoft.realtimelocation.activitys.census.special.CensusPetitionListActivity; import com.sucstepsoft.realtimelocation.activitys.census.special.CensusSecurityListActivity; import com.sucstepsoft.realtimelocation.activitys.census.special.CensusSpecialCriminalListActivity; +import com.sucstepsoft.realtimelocation.adapters.PersonTagAdapter; import com.sucstepsoft.realtimelocation.beans.OperateBean; +import com.sucstepsoft.realtimelocation.beans.PersonTag; import com.sucstepsoft.realtimelocation.beans.person.BaseRegisterDetailBean; import com.sucstepsoft.realtimelocation.net.LocationApiService; import com.sucstepsoft.realtimelocation.utils.ExceptionHandler; @@ -81,8 +84,8 @@ public class CensusRegisterDetailActivity extends BaseActivity { RadioButton mRbDiss2; @BindView(R.id.rb_so) RadioButton mRbSo; - @BindView(R.id.rg_gtv_job) - RadioGroup mRgGtvJob; + @BindView(R.id.rb_retire) + RadioButton mRbRetire; @BindView(R.id.tv_workplace) TextView mTvWorkplace; @BindView(R.id.tv_job_title) @@ -177,6 +180,8 @@ public class CensusRegisterDetailActivity extends BaseActivity { TextView mTvRudangshijian; @BindView(R.id.tv_dangqitashuoming) TextView mTvDangqitashuoming; + @BindView(R.id.rlv_tags) + RecyclerView mRlvTags; @BindView(R.id.ll_into_content) LinearLayout mLlIntoContent; private Unbinder mBind; @@ -233,9 +238,20 @@ public class CensusRegisterDetailActivity extends BaseActivity { mControls.add(b5); mControls.add(b6); mControls.add(b7); + ChipsLayoutManager chipsLayoutManager = ChipsLayoutManager.newBuilder(mActivity) + .setOrientation(ChipsLayoutManager.HORIZONTAL) + .build(); + mTagAdapter = new PersonTagAdapter(mActivity, mTags,false); + mRlvTags.setLayoutManager(chipsLayoutManager); + mRlvTags.setAdapter(mTagAdapter); + getDetailData(id); + } + private PersonTagAdapter mTagAdapter; + private List mTags = new ArrayList<>(); + /** * 操作 */ @@ -373,6 +389,8 @@ public class CensusRegisterDetailActivity extends BaseActivity { mRbDiss2.setChecked(true); } else if ("灵活就业".equals(mRegisterDetailBean.getDepartmentType())) { mRbSo.setChecked(true); + } else if ("退休".equals(mRegisterDetailBean.getDepartmentType())) { + mRbRetire.setChecked(true); } // String workplace = mEtWorkplace.getText().toString().trim(); // bean.setDepartment(workplace);//工作单位 @@ -501,6 +519,13 @@ public class CensusRegisterDetailActivity extends BaseActivity { mTvRudangshijian.setText(mRegisterDetailBean.getPartyTime()); // bean.setOthertext(qitashuoming);//其他说明 mTvDangqitashuoming.setText(mRegisterDetailBean.getOthertext()); + mTags = mRegisterDetailBean.getLabelList(); + if (mTags != null && mTags.size() > 0) { + for (int i = 0; i < mTags.size(); i++) { + mTags.get(i).setCheck(true); + } + } + mTagAdapter.setData(mTags); refreshView(STATE_LOAD_SUCCESS); } diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/PersonTagAdapter.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/PersonTagAdapter.java new file mode 100755 index 0000000..c87dd49 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/PersonTagAdapter.java @@ -0,0 +1,48 @@ +package com.sucstepsoft.realtimelocation.adapters; + +import android.content.Context; +import android.graphics.Color; +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.PersonTagHolder; +import com.sucstepsoft.realtimelocation.beans.PersonTag; + +import java.util.List; + +/** + * 作者: Adam + * 日期: 2019/8/14 - 16:01 + * 邮箱: itgaojian@163.com + * 描述: + */ +public class PersonTagAdapter extends BaseRecyclerAdapter { + private boolean isEdit = false; + + public PersonTagAdapter(Context ctx, List list, boolean edit) { + super(ctx, list); + this.isEdit = edit; + } + + @Override + public PersonTagHolder createHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_person_tag, parent, false); + return new PersonTagHolder(itemView); + } + + @Override + public void bindHolder(PersonTagHolder holder, int i) { + holder.mTvName.setText(mData.get(i).getName()); + holder.mTvName.setChecked(mData.get(i).isCheck()); + holder.mTvName.setTextColor(Color.parseColor(mData.get(i).getColor())); + if (isEdit) { + holder.mTvName.setOnCheckedChangeListener((buttonView, isChecked) -> { + holder.mTvName.setChecked(isChecked); + mData.get(i).setCheck(isChecked); + }); + } + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/PersonTagHolder.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/PersonTagHolder.java new file mode 100644 index 0000000..5ed4205 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/holders/PersonTagHolder.java @@ -0,0 +1,25 @@ +package com.sucstepsoft.realtimelocation.adapters.holders; + +import android.support.annotation.NonNull; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.CheckBox; +import android.widget.TextView; + +import com.sucstepsoft.realtimelocation.R; + +/** + * 作者: adam + * 日期: 2022/8/11 - 10:54 + * 邮箱: itgaojian@163.com + * 描述: + */ +public class PersonTagHolder extends RecyclerView.ViewHolder { + public CheckBox mTvName; + + + public PersonTagHolder(@NonNull View itemView) { + super(itemView); + mTvName = itemView.findViewById(R.id.tv_type_name); + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/beans/PersonTag.java b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/PersonTag.java new file mode 100644 index 0000000..63bb71c --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/PersonTag.java @@ -0,0 +1,61 @@ +package com.sucstepsoft.realtimelocation.beans; + +public class PersonTag { + + private String id; + private String name; + private String color; + private String order; + private boolean isCheck; + + public boolean isCheck() { + return isCheck; + } + + public void setCheck(boolean check) { + isCheck = check; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public String getOrder() { + return order; + } + + public void setOrder(String order) { + this.order = order; + } + + @Override + public String toString() { + return "PersonTag{" + + "id='" + id + '\'' + + ", name='" + name + '\'' + + ", color='" + color + '\'' + + ", order='" + order + '\'' + + ", isCheck=" + isCheck + + '}'; + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/BaseRegisterDetailBean.java b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/BaseRegisterDetailBean.java index 6dddad9..0c887ff 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/BaseRegisterDetailBean.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/BaseRegisterDetailBean.java @@ -1,5 +1,9 @@ package com.sucstepsoft.realtimelocation.beans.person; +import com.sucstepsoft.realtimelocation.beans.PersonTag; + +import java.util.List; + /** * 作者: adam * 日期: 2020/11/25 - 9:34 AM @@ -8,9 +12,10 @@ package com.sucstepsoft.realtimelocation.beans.person; */ public class BaseRegisterDetailBean { - private String populationInfoId; private String name; + private String label; + private List labelList; private String idcard; private String idcardType; private String birthday; @@ -102,6 +107,22 @@ public class BaseRegisterDetailBean { this.name = name; } + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public List getLabelList() { + return labelList; + } + + public void setLabelList(List labelList) { + this.labelList = labelList; + } + public String getIdcard() { return idcard; } @@ -693,4 +714,6 @@ public class BaseRegisterDetailBean { public void setCreator(String creator) { this.creator = creator; } + + } diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/CensusmsgBean.java b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/CensusmsgBean.java index 9ab926c..9de1ec8 100644 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/CensusmsgBean.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/CensusmsgBean.java @@ -83,6 +83,15 @@ public class CensusmsgBean { private String succourDifficulty; private String succourHelp; private String succourSubsidy; + private String label; + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } public String getBirthday() { return birthday; 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 e429812..c98a396 100755 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/net/LocationApiService.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/net/LocationApiService.java @@ -37,6 +37,7 @@ import com.sucstepsoft.realtimelocation.beans.PenLineBean; import com.sucstepsoft.realtimelocation.beans.PenNewLineBean; import com.sucstepsoft.realtimelocation.beans.PersonBaseInfoBean; import com.sucstepsoft.realtimelocation.beans.PersonBean; +import com.sucstepsoft.realtimelocation.beans.PersonTag; import com.sucstepsoft.realtimelocation.beans.SearchBaseInfoBean; import com.sucstepsoft.realtimelocation.beans.SearchHouseBean; import com.sucstepsoft.realtimelocation.beans.SignDataBean; @@ -325,6 +326,14 @@ public interface LocationApiService { @POST("app/file/uploadimage") Observable uploadImage(@Part MultipartBody.Part file, @Header("token") String token); + /** + * 上传图片 到 人口系统 + */ + @Headers({"base_url_name:person"}) + @Multipart + @POST("app/file/uploadimage") + Observable uploadImageToPerson(@Part MultipartBody.Part file, @Header("token") String token); + /** * 修改个人信息 * @@ -800,6 +809,13 @@ public interface LocationApiService { @GET("app/populationinfo/query/{idcard}") Observable getBaseInfoByIdCard(@Path("idcard") String idCard, @Header("token") String token); /*===========================================户籍信息===========================================*/ + + /** + * 获取人口标签 + */ + @Headers({"base_url_name:person", "Content-Type: application/json", "Accept: application/json"}) + @GET("app/populationinfo/labelrelease") + Observable> getPersonTags(@Header("token") String token); //================新版基础人员信息==================== /** @@ -1509,7 +1525,7 @@ public interface LocationApiService { @Headers({"base_url_name:person", "Content-Type: application/json", "Accept: application/json"}) @GET("app/residential/listpage") Observable getNewCommunityList( - @Query("street")String streetId, + @Query("street") String streetId, @Query("community") String community, @Query("page") String page, @Query("keywords") String keywords, @@ -1625,7 +1641,7 @@ public interface LocationApiService { @Query("street") String street, @Query("community") String community, @Query("residentialId") String rId, - @Query("buildingId")String bId, + @Query("buildingId") String bId, @Query("page") String page, @Query("keywords") String keywords, @Header("token") String token); @@ -1677,9 +1693,9 @@ public interface LocationApiService { @Headers({"base_url_name:person", "Content-Type: application/json", "Accept: application/json"}) @GET("app/building/listpage") Observable getNewBuildingList( - @Query("street")String streetId, - @Query("community")String community, - @Query("residentialId")String rId, + @Query("street") String streetId, + @Query("community") String community, + @Query("residentialId") String rId, @Query("page") String page, @Query("keywords") String keywords, @Header("token") String token); diff --git a/app/src/main/res/color/col_red_yellow.xml b/app/src/main/res/color/col_red_yellow.xml new file mode 100755 index 0000000..318cbce --- /dev/null +++ b/app/src/main/res/color/col_red_yellow.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sel_service_type.xml b/app/src/main/res/drawable/sel_service_type.xml new file mode 100755 index 0000000..a06614c --- /dev/null +++ b/app/src/main/res/drawable/sel_service_type.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_service_type_selected.xml b/app/src/main/res/drawable/shape_service_type_selected.xml new file mode 100755 index 0000000..b6648ca --- /dev/null +++ b/app/src/main/res/drawable/shape_service_type_selected.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_service_type_unselected.xml b/app/src/main/res/drawable/shape_service_type_unselected.xml new file mode 100755 index 0000000..116f8b5 --- /dev/null +++ b/app/src/main/res/drawable/shape_service_type_unselected.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_new_hire_house.xml b/app/src/main/res/layout/activity_add_new_hire_house.xml new file mode 100644 index 0000000..70760fa --- /dev/null +++ b/app/src/main/res/layout/activity_add_new_hire_house.xml @@ -0,0 +1,340 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +