From 861c7a27bc9f822c64c402e32dbb28c66fd453ae Mon Sep 17 00:00:00 2001 From: itgaojian Date: Thu, 2 Nov 2023 11:06:41 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E7=82=B9=E4=B8=8A=E8=AE=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 16 +- .../normal/CensusRegisterDetailActivity.java | 3 + .../special/CensusPetitionAddActivity.java | 544 ++++++++++++++++++ .../special/CensusPetitionDetailActivity.java | 175 ++++++ .../special/CensusPetitionListActivity.java | 270 +++++++++ .../adapters/CorrectPetitionAdapter.java | 56 ++ .../beans/person/PetitionBean.java | 208 +++++++ .../beans/person/PetitionDetailBean.java | 194 +++++++ .../beans/person/SavePetitionBean.java | 122 ++++ .../net/LocationApiService.java | 47 +- .../layout/activity_census_petition_add.xml | 270 +++++++++ .../activity_census_petition_detail.xml | 238 ++++++++ .../layout/activity_census_petition_list.xml | 14 + .../cm_utils/constant/PathConfig.java | 14 + 14 files changed, 2167 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/special/CensusPetitionAddActivity.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/special/CensusPetitionDetailActivity.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/special/CensusPetitionListActivity.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/adapters/CorrectPetitionAdapter.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/PetitionBean.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/PetitionDetailBean.java create mode 100644 app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/SavePetitionBean.java create mode 100644 app/src/main/res/layout/activity_census_petition_add.xml create mode 100644 app/src/main/res/layout/activity_census_petition_detail.xml create mode 100644 app/src/main/res/layout/activity_census_petition_list.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4fb7fce..a9ba253 100755 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,21 @@ android:theme="@style/AppTheme" android:usesCleartextTraffic="true" tools:ignore="GoogleAppIndexingWarning"> - + + + mDicPicker; + private List mDicBeanList; + + private DicBean mSelTalk; + private DicBean mSelCoordinate; + + private String mSelAreaName = ""; + private String mSelAreaCode = ""; + private String mIdCard; + private BaseRegisterDetailBean mBaseInfoBean; + + @Override + protected int setLayoutId() { + return R.layout.activity_census_petition_add; + } + + @Override + public void initData() { + mBind = ButterKnife.bind(this); + //主键 + mId = getIntent().getStringExtra("id"); + mIdCard = getIntent().getStringExtra("idCard"); + String title = getIntent().getStringExtra("title"); + if (!TextUtils.isEmpty(mId)) { + //编辑 + refreshView(STATE_LOAD_LOADING); + getDetailById(mId); + } else { + //新增 + refreshView(STATE_LOAD_SUCCESS); + } + mTvBaseTitle.setText(title); + initContentView(); + getPersonDetail(); + } + + /** + * 获取人员详情 + */ + private void getPersonDetail() { + RetrofitManager.getInstance() + .create(LocationApiService.class) + .getBaseRegisterDetail(mIdCard, UserLgUtils.getToken()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeOn(Schedulers.io()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(BaseRegisterDetailBean baseRegisterDetailBean) { + //设置基础信息 + setBaseInfo(baseRegisterDetailBean); + refreshView(STATE_LOAD_SUCCESS); + } + + @Override + public void onError(Throwable e) { + refreshView(STATE_LOAD_ERROR); + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + + /** + * 初始化 + */ + private void initContentView() { + mTvActivation.setOnClickListener(v -> onShowDicPicker(PathConfig.DIC_ACTIVATION, 2, 1)); + mTvMeasure.setOnClickListener(v -> onShowDicPicker(PathConfig.DIC_MEASURE, 2, 2)); + mTvEconomy.setOnClickListener(v -> onShowDicPicker(PathConfig.DIC_ECONOMY_SOURCE, 2, 3)); + mTvStabilizeStatus.setOnClickListener(v -> onShowDicPicker(PathConfig.DIC_STABILIZE_STATUS, 2, 4)); + mTvStabilizeLevel.setOnClickListener(v -> onShowDicPicker(PathConfig.DIC_STABILIZE_LEVEL, 2, 5)); + mTvType.setOnClickListener(v -> onShowDicPicker(PathConfig.DIC_UP_TYPE, 2, 6)); + mTvReason.setOnClickListener(v -> onShowDicPicker(PathConfig.DIC_UP_REASON, 2, 7)); + mTvOnduty.setOnClickListener(v -> onShowDicPicker(PathConfig.DIC_ONDUTY, 2, 8)); + mTvHandle.setOnClickListener(v -> onShowDicPicker(PathConfig.DIC_HANDLE, 2, 9)); + mTvCoordinate.setOnClickListener(v -> onShowDicPicker(PathConfig.DIC_COORD, 2, 10)); + mTvTalk.setOnClickListener(v -> onShowDicPicker(PathConfig.DIC_TALK, 2, 11)); + + mBtnConfirm.setOnClickListener(v -> doSubmit()); + } + + + private void onShowDicPicker(String id, int type, int source) { + hideSoftKeyboard(); + if (type == 1) { + mDicPicker = new OptionsPickerBuilder(mActivity, (o1, o2, o3, v) -> { + DicBean dicBean = mDicBeanList.get(o1); + chooseDic(dicBean, 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); + } + } + + /** + * 确认字典 + * + * @param source + */ + private void chooseDic(DicBean dicBean, int source) { + switch (source) { + case 1://活跃度 + mTvActivation.setText(dicBean.getDictionaryName()); + break; + case 2://措施手段 + mTvMeasure.setText(dicBean.getDictionaryName()); + break; + case 3://经济来源 + mTvEconomy.setText(dicBean.getDictionaryName()); + break; + case 4://装填 + mTvStabilizeStatus.setText(dicBean.getDictionaryName()); + break; + case 5://等级 + mTvStabilizeLevel.setText(dicBean.getDictionaryName()); + break; + case 6://类型 + mTvType.setText(dicBean.getDictionaryName()); + break; + case 7://原因 + mTvReason.setText(dicBean.getDictionaryName()); + break; + case 8://在位情况 + mTvOnduty.setText(dicBean.getDictionaryName()); + break; + case 9://处理情况 + mTvHandle.setText(dicBean.getDictionaryName()); + break; + case 10://工作协调 + mSelCoordinate = dicBean; + mTvCoordinate.setText(dicBean.getDictionaryName()); + break; + case 11://谈话 + mSelTalk = dicBean; + mTvTalk.setText(dicBean.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 onShowDate(TextView i) { + hideSoftKeyboard(); + TimePickerView mTimePickerView = new TimePickerBuilder(mActivity, (date, v) -> { + i.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 doAdd() { + ProgressDialog dialog = UIUtil.initDialog(mActivity, "保存中..."); + dialog.show(); + RequestBody body = buildParams(); + RetrofitManager.getInstance() + .create(LocationApiService.class) + .doSavePetition(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("新增成功"); + finish(); + } + + @Override + public void onError(@NonNull Throwable e) { + dialog.dismiss(); + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + + } + + private void doSubmit() { + if (checkParams()) { + if (!TextUtils.isEmpty(mId)) { + doEdit(); + } else { + doAdd(); + } + } + } + + /** + * 编辑 + */ + private void doEdit() { + ProgressDialog dialog = UIUtil.initDialog(mActivity, "修改中..."); + dialog.show(); + RequestBody body = buildParams(); + RetrofitManager.getInstance() + .create(LocationApiService.class) + .doEditPetition(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("修改成功"); + finish(); + } + + @Override + public void onError(@NonNull Throwable e) { + dialog.dismiss(); + ExceptionHandler.handleException(e); + } + + @Override + public void onComplete() { + + } + }); + } + + private RequestBody buildParams() { + SavePetitionBean bean = new SavePetitionBean(); + bean.setPopulationInfoId(mBaseInfoBean.getPopulationInfoId()); + String activation = mTvActivation.getText().toString().trim(); + bean.setActivation(activation); + String measure = mTvMeasure.getText().toString().trim(); + bean.setMeasure(measure); + String economy = mTvEconomy.getText().toString().trim(); + bean.setEconomy(economy); + String status = mTvStabilizeStatus.getText().toString().trim(); + bean.setStabilizeStatus(status); + String levle = mTvStabilizeLevel.getText().toString().trim(); + bean.setStabilizeLevel(levle); + String type = mTvType.getText().toString().trim(); + bean.setType(type); + String reason = mTvReason.getText().toString().trim(); + bean.setReason(reason); + String reasonOther = mEtReasonOther.getText().toString().trim(); + bean.setReasonOther(reasonOther); + String onduty = mTvOnduty.getText().toString().trim(); + bean.setOnduty(onduty); + String handleStatus = mTvHandle.getText().toString().trim(); + bean.setHandle(handleStatus); + if (mSelCoordinate != null) { + bean.setCoordinate(mSelCoordinate.getDictionaryId()); + } + if (mSelTalk != null) { + bean.setTalk(mSelTalk.getDictionaryId()); + } + Gson gson = new Gson(); + String obj = gson.toJson(bean); + RequestBody requestBody = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), obj); + return requestBody; + } + + /** + * 校验参数 + */ + private boolean checkParams() { + String crimeName = mTvActivation.getText().toString().trim(); + if (TextUtils.isEmpty(crimeName)) { + ToastUtils.showShort("请选择活跃度"); + return false; + } + + String crimeName1 = mTvMeasure.getText().toString().trim(); + if (TextUtils.isEmpty(crimeName1)) { + ToastUtils.showShort("请选择措施手段"); + return false; + } + + String type = mTvType.getText().toString().trim(); + if (TextUtils.isEmpty(type)) { + ToastUtils.showShort("请选择上访类型"); + return false; + } + + return true; + } + + /** + * 获取详情 + */ + private void getDetailById(String id) { + RetrofitManager.getInstance() + .create(LocationApiService.class) + .getPetitionDetailById(id, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull PetitionDetailBean censusCrimeDetailBean) { + setDataToView(censusCrimeDetailBean, 0); + } + + @Override + public void onError(@NonNull Throwable e) { + ExceptionHandler.handleException(e); + refreshView(STATE_LOAD_ERROR); + } + + @Override + public void onComplete() { + + } + }); + } + + /** + * 回填数据 + */ + private void setDataToView(PetitionDetailBean bean, int type) { + mId = bean.getPetitionId(); + mTvActivation.setText(bean.getActivation()); + mTvMeasure.setText(bean.getMeasure()); + mTvEconomy.setText(bean.getEconomy()); + mTvStabilizeStatus.setText(bean.getStabilizeStatus()); + mTvStabilizeLevel.setText(bean.getStabilizeLevel()); + mTvType.setText(bean.getType()); + mTvReason.setText(bean.getReason()); + mEtReasonOther.setText(bean.getReasonOther()); + mTvOnduty.setText(bean.getOnduty()); + mTvHandle.setText(bean.getHandle()); + if (!TextUtils.isEmpty(bean.getCoordinate())) { + mSelCoordinate = new DicBean(); + mSelCoordinate.setDictionaryId(bean.getCoordinate()); + mSelCoordinate.setDictionaryName(bean.getCoordinateName()); + mTvCoordinate.setText(bean.getCoordinateName()); + } + if (!TextUtils.isEmpty(bean.getTalk())) { + mSelTalk = new DicBean(); + mSelTalk.setDictionaryId(bean.getCoordinate()); + mSelTalk.setDictionaryName(bean.getTalkName()); + mTvTalk.setText(bean.getTalkName()); + } + refreshView(STATE_LOAD_SUCCESS); + } + + /** + * 设置基础信息 + */ + private void setBaseInfo(BaseRegisterDetailBean o) { + mBaseInfoBean = o; + mLlContent.setVisibility(View.VISIBLE); + mTvBaseName.setText(o.getName()); + mTvBaseGender.setText(o.getSex()); + mTvBasePhone.setText(o.getPhone()); + mTvBaseNative.setText(o.getOriginAddress()); + mTvBaseCurLoc.setText(o.getDomicileAreaName() + "/" + o.getDomicileAddress()); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (mBind != null) { + mBind.unbind(); + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/special/CensusPetitionDetailActivity.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/special/CensusPetitionDetailActivity.java new file mode 100644 index 0000000..87dbaef --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/special/CensusPetitionDetailActivity.java @@ -0,0 +1,175 @@ +package com.sucstepsoft.realtimelocation.activitys.census.special; + +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +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; +import com.sucstepsoft.realtimelocation.R; +import com.sucstepsoft.realtimelocation.beans.person.BaseRegisterDetailBean; +import com.sucstepsoft.realtimelocation.beans.person.PetitionDetailBean; +import com.sucstepsoft.realtimelocation.net.LocationApiService; +import com.sucstepsoft.realtimelocation.utils.ExceptionHandler; + +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.Unbinder; +import io.reactivex.Observable; +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 CensusPetitionDetailActivity extends BaseActivity { + + @BindView(R.id.et_search_id_card) + EditText mEtSearchIdCard; + @BindView(R.id.iv_clear) + ImageView mIvClear; + @BindView(R.id.btn_search) + Button mBtnSearch; + @BindView(R.id.ll_search_content) + LinearLayout mLlSearchContent; + @BindView(R.id.tv_base_name) + TextView mTvBaseName; + @BindView(R.id.tv_base_gender) + TextView mTvBaseGender; + @BindView(R.id.tv_base_phone) + TextView mTvBasePhone; + @BindView(R.id.tv_base_native) + TextView mTvBaseNative; + @BindView(R.id.tv_base_cur_loc) + TextView mTvBaseCurLoc; + @BindView(R.id.cv_base_info) + LinearLayout mCvBaseInfo; + @BindView(R.id.tv_activation) + TextView mTvActivation; + @BindView(R.id.tv_measure) + TextView mTvMeasure; + @BindView(R.id.tv_economy) + TextView mTvEconomy; + @BindView(R.id.tv_stabilize_status) + TextView mTvStabilizeStatus; + @BindView(R.id.tv_stabilize_level) + TextView mTvStabilizeLevel; + @BindView(R.id.tv_type) + TextView mTvType; + @BindView(R.id.tv_reason) + TextView mTvReason; + @BindView(R.id.tv_reason_other) + TextView mTvReasonOther; + @BindView(R.id.tv_onduty) + TextView mTvOnduty; + @BindView(R.id.tv_handle) + TextView mTvHandle; + @BindView(R.id.tv_coordinate) + TextView mTvCoordinate; + @BindView(R.id.tv_talk) + TextView mTvTalk; + @BindView(R.id.ll_content) + LinearLayout mLlContent; + private Unbinder mBind; + private BaseRegisterDetailBean mBaseInfo; + private PetitionDetailBean mDetailBean; + + + @Override + protected int setLayoutId() { + return R.layout.activity_census_petition_detail; + } + + @Override + public void initData() { + mBind = ButterKnife.bind(this); + mTvBaseTitle.setText("详情"); + refreshView(STATE_LOAD_LOADING); + String id = getIntent().getStringExtra("id"); + String idCard = getIntent().getStringExtra("idCard"); + getDetailData(id, idCard); + } + + /** + * 获取详细信息 + * + * @param id + * @param idCard + */ + private void getDetailData(String id, String idCard) { + Observable baseRegisterDetail = RetrofitManager.getInstance().create(LocationApiService.class).getBaseRegisterDetail(idCard, UserLgUtils.getToken()); + Observable securityDetailById = RetrofitManager.getInstance().create(LocationApiService.class).getPetitionDetailById(id, UserLgUtils.getToken()); + Observable.merge(baseRegisterDetail, securityDetailById) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull Object o) { + if (o instanceof BaseRegisterDetailBean) { + mBaseInfo = (BaseRegisterDetailBean) o; + setBaseInfo(); + } else if (o instanceof PetitionDetailBean) { + mDetailBean = (PetitionDetailBean) o; + setDataToView(); + } + refreshView(STATE_LOAD_SUCCESS); + } + + @Override + public void onError(@NonNull Throwable e) { + ExceptionHandler.handleException(e); + refreshView(STATE_LOAD_ERROR); + } + + @Override + public void onComplete() { + + } + }); + + } + + /** + * 基础信息 + */ + private void setBaseInfo() { + mTvBaseName.setText(mBaseInfo.getName()); + mTvBaseGender.setText(mBaseInfo.getSex()); + mTvBasePhone.setText(mBaseInfo.getPhone()); + mTvBaseNative.setText(mBaseInfo.getOriginAddress()); + mTvBaseCurLoc.setText(mBaseInfo.getDomicileAreaName() + "/" + mBaseInfo.getDomicileAddress()); + } + + + /** + * 详细信息 + */ + private void setDataToView() { + mTvActivation.setText(mDetailBean.getActivation()); + mTvMeasure.setText(mDetailBean.getMeasure()); + mTvEconomy.setText(mDetailBean.getEconomy()); + mTvStabilizeStatus.setText(mDetailBean.getStabilizeStatus()); + mTvStabilizeLevel.setText(mDetailBean.getStabilizeLevel()); + mTvType.setText(mDetailBean.getType()); + mTvReason.setText(mDetailBean.getReason()); + mTvReasonOther.setText(mDetailBean.getReasonOther()); + mTvOnduty.setText(mDetailBean.getOnduty()); + mTvHandle.setText(mDetailBean.getHandle()); + mTvCoordinate.setText(mDetailBean.getCoordinateName()); + mTvTalk.setText(mDetailBean.getTalkName()); + refreshView(STATE_LOAD_SUCCESS); + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/special/CensusPetitionListActivity.java b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/special/CensusPetitionListActivity.java new file mode 100644 index 0000000..e829800 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/activitys/census/special/CensusPetitionListActivity.java @@ -0,0 +1,270 @@ +package com.sucstepsoft.realtimelocation.activitys.census.special; + +import android.app.AlertDialog; +import android.app.ProgressDialog; +import android.content.Intent; +import android.support.v7.widget.LinearLayoutManager; +import android.text.TextUtils; +import android.view.View; + +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.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.CorrectPetitionAdapter; +import com.sucstepsoft.realtimelocation.beans.SuccessBean; +import com.sucstepsoft.realtimelocation.beans.person.PetitionBean; +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 CensusPetitionListActivity extends BaseActivity { + @BindView(R.id.xlv_content) + XRecyclerView mXlvItems; + private Unbinder mBind; + private String mRows = "20"; + private int mCurPage = 1; + private CorrectPetitionAdapter mAdapter; + private List mDatas = new ArrayList<>(); + private Disposable mDisposable; + + + private String mKeywords = ""; + private String mId; + + @Override + protected int setLayoutId() { + return R.layout.activity_census_petition_list; + } + + @Override + public void initData() { + mBind = ButterKnife.bind(this); + mTvBaseTitle.setText("重点上访"); + mTvPublish.setVisibility(View.VISIBLE); + mTvPublish.setText("新增"); + mId = getIntent().getStringExtra("idCard"); + mTvPublish.setOnClickListener(v -> { + Intent intent = new Intent(mActivity, CensusPetitionAddActivity.class); + intent.putExtra("title", "重点上访信息录入"); + intent.putExtra("idCard", mId); + startActivity(intent); + }); + + mAdapter = new CorrectPetitionAdapter(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() { + getUpcomingList(mCurPage); + } + }); + mAdapter.addOnEditListener(new CorrectPetitionAdapter.OnEditListener() { + @Override + public void onDel(PetitionBean.RowsBean bean, int pos) { + doDelBean(bean, pos); + } + + @Override + public void onEdit(PetitionBean.RowsBean bean, int pos) { + doEditBean(bean, pos); + } + }); + } + + + /** + * 删除数据 + * + * @param bean + * @param pos + */ + private void doDelBean(PetitionBean.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) + .doDelSecurity(bean.getPetitionId(), 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(PetitionBean.RowsBean bean, int pos) { + Intent intent = new Intent(mActivity, CensusPetitionAddActivity.class); + intent.putExtra("title", "重点上访信息编辑"); + intent.putExtra("id", bean.getPetitionId()); + intent.putExtra("idCard", bean.getPopulationInfoId()); + startActivity(intent); + } + + /** + * 显示详情 + * + * @param bean + */ + private void showDetail(PetitionBean.RowsBean bean) { + Intent intent = new Intent(mActivity, CensusPetitionDetailActivity.class); + intent.putExtra("id", bean.getPetitionId()); + intent.putExtra("idCard", bean.getPopulationInfoId()); + startActivity(intent); + } + + private void refreshData() { + getUpcomingList(1); + } + + @Override + protected void onResume() { + super.onResume(); + refreshData(); + } + + /** + * 获取列表 + */ + private void getUpcomingList(int page) { + mCurPage = page; + RetrofitManager.getInstance() + .create(LocationApiService.class) + .getPetitionList(mId, page + "", mKeywords, UserLgUtils.getToken()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(PetitionBean 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()); + } + refreshView(STATE_LOAD_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); + refreshView(STATE_LOAD_SUCCESS); + } else { + if (TextUtils.isEmpty(mKeywords)) { + //无数据 + refreshView(STATE_LOAD_EMPTY); + } else { + ToastUtils.showShort("未查询到相关内容"); + } + } + } + } + + @Override + public void onError(Throwable e) { + ToastUtils.showShort("数据加载失,请稍后重试"); + refreshView(STATE_LOAD_ERROR); + } + + @Override + public void onComplete() { + + } + }); + } + + @Override + protected void onDestroy() { + 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/adapters/CorrectPetitionAdapter.java b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/CorrectPetitionAdapter.java new file mode 100644 index 0000000..9282838 --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/adapters/CorrectPetitionAdapter.java @@ -0,0 +1,56 @@ +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.CensusPersonHolder; +import com.sucstepsoft.realtimelocation.beans.CensusSecurityBean; +import com.sucstepsoft.realtimelocation.beans.person.PetitionBean; + +import java.util.List; + +/** + * 作者: adam + * 日期: 2020/11/17 - 1:22 PM + * 邮箱: itgaojian@163.com + * 描述: 人口adapter + */ +public class CorrectPetitionAdapter extends BaseRecyclerAdapter { + public CorrectPetitionAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public CensusPersonHolder createHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_person, parent, false); + return new CensusPersonHolder(itemView); + } + + @Override + public void bindHolder(CensusPersonHolder censusPersonHolder, int i) { + PetitionBean.RowsBean bean = mData.get(i); + censusPersonHolder.mTvName.setText(bean.getActivation()); + censusPersonHolder.mTvNative.setText("措施手段:" + bean.getMeasure()); + censusPersonHolder.mTvPhone.setText("上访类型:" + bean.getType()); + censusPersonHolder.mTvLocation.setVisibility(View.GONE); + censusPersonHolder.mLine.setVisibility(View.GONE); + censusPersonHolder.mBtnEdit.setOnClickListener(v -> mEditListener.onEdit(bean, i)); + censusPersonHolder.mBtnDel.setOnClickListener(v -> mEditListener.onDel(bean, i)); + } + + private OnEditListener mEditListener; + + public void addOnEditListener(OnEditListener mListener) { + this.mEditListener = mListener; + } + + public interface OnEditListener { + void onDel(PetitionBean.RowsBean bean, int pos); + + void onEdit(PetitionBean.RowsBean bean, int pos); + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/PetitionBean.java b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/PetitionBean.java new file mode 100644 index 0000000..96a9d1f --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/PetitionBean.java @@ -0,0 +1,208 @@ +package com.sucstepsoft.realtimelocation.beans.person; + +import java.util.List; + +public class PetitionBean { + + private int page; + private List rows; + private int total; + + public int getPage() { + return page; + } + + public void setPage(int page) { + this.page = page; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsBean { + private String activation; + private String coordinate; + private String creator; + private String economy; + private String gmtCreate; + private String gmtModified; + private String handle; + private String isDelete; + private String measure; + private String modifier; + private String onduty; + private String petitionId; + private String populationInfoId; + private String reason; + private String reasonOther; + private String stabilizeLevel; + private String stabilizeStatus; + private String talk; + private String type; + + public String getActivation() { + return activation; + } + + public void setActivation(String activation) { + this.activation = activation; + } + + public String getCoordinate() { + return coordinate; + } + + public void setCoordinate(String coordinate) { + this.coordinate = coordinate; + } + + public String getCreator() { + return creator; + } + + public void setCreator(String creator) { + this.creator = creator; + } + + public String getEconomy() { + return economy; + } + + public void setEconomy(String economy) { + this.economy = economy; + } + + public String getGmtCreate() { + return gmtCreate; + } + + public void setGmtCreate(String gmtCreate) { + this.gmtCreate = gmtCreate; + } + + public String getGmtModified() { + return gmtModified; + } + + public void setGmtModified(String gmtModified) { + this.gmtModified = gmtModified; + } + + public String getHandle() { + return handle; + } + + public void setHandle(String handle) { + this.handle = handle; + } + + public String getIsDelete() { + return isDelete; + } + + public void setIsDelete(String isDelete) { + this.isDelete = isDelete; + } + + public String getMeasure() { + return measure; + } + + public void setMeasure(String measure) { + this.measure = measure; + } + + public String getModifier() { + return modifier; + } + + public void setModifier(String modifier) { + this.modifier = modifier; + } + + public String getOnduty() { + return onduty; + } + + public void setOnduty(String onduty) { + this.onduty = onduty; + } + + public String getPetitionId() { + return petitionId; + } + + public void setPetitionId(String petitionId) { + this.petitionId = petitionId; + } + + public String getPopulationInfoId() { + return populationInfoId; + } + + public void setPopulationInfoId(String populationInfoId) { + this.populationInfoId = populationInfoId; + } + + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } + + public String getReasonOther() { + return reasonOther; + } + + public void setReasonOther(String reasonOther) { + this.reasonOther = reasonOther; + } + + public String getStabilizeLevel() { + return stabilizeLevel; + } + + public void setStabilizeLevel(String stabilizeLevel) { + this.stabilizeLevel = stabilizeLevel; + } + + public String getStabilizeStatus() { + return stabilizeStatus; + } + + public void setStabilizeStatus(String stabilizeStatus) { + this.stabilizeStatus = stabilizeStatus; + } + + public String getTalk() { + return talk; + } + + public void setTalk(String talk) { + this.talk = talk; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/PetitionDetailBean.java b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/PetitionDetailBean.java new file mode 100644 index 0000000..725c15e --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/PetitionDetailBean.java @@ -0,0 +1,194 @@ +package com.sucstepsoft.realtimelocation.beans.person; + +public class PetitionDetailBean { + + private String activation; + private String coordinate; + private String coordinateName; + private String creator; + private String economy; + private String gmtCreate; + private String gmtModified; + private String handle; + private String isDelete; + private String measure; + private String modifier; + private String onduty; + private String petitionId; + private String populationInfoId; + private String reason; + private String reasonOther; + private String stabilizeLevel; + private String stabilizeStatus; + private String talk; + private String talkName; + private String type; + + public String getCoordinateName() { + return coordinateName; + } + + public void setCoordinateName(String coordinateName) { + this.coordinateName = coordinateName; + } + + public String getTalkName() { + return talkName; + } + + public void setTalkName(String talkName) { + this.talkName = talkName; + } + + public String getActivation() { + return activation; + } + + public void setActivation(String activation) { + this.activation = activation; + } + + public String getCoordinate() { + return coordinate; + } + + public void setCoordinate(String coordinate) { + this.coordinate = coordinate; + } + + public String getCreator() { + return creator; + } + + public void setCreator(String creator) { + this.creator = creator; + } + + public String getEconomy() { + return economy; + } + + public void setEconomy(String economy) { + this.economy = economy; + } + + public String getGmtCreate() { + return gmtCreate; + } + + public void setGmtCreate(String gmtCreate) { + this.gmtCreate = gmtCreate; + } + + public String getGmtModified() { + return gmtModified; + } + + public void setGmtModified(String gmtModified) { + this.gmtModified = gmtModified; + } + + public String getHandle() { + return handle; + } + + public void setHandle(String handle) { + this.handle = handle; + } + + public String getIsDelete() { + return isDelete; + } + + public void setIsDelete(String isDelete) { + this.isDelete = isDelete; + } + + public String getMeasure() { + return measure; + } + + public void setMeasure(String measure) { + this.measure = measure; + } + + public String getModifier() { + return modifier; + } + + public void setModifier(String modifier) { + this.modifier = modifier; + } + + public String getOnduty() { + return onduty; + } + + public void setOnduty(String onduty) { + this.onduty = onduty; + } + + public String getPetitionId() { + return petitionId; + } + + public void setPetitionId(String petitionId) { + this.petitionId = petitionId; + } + + public String getPopulationInfoId() { + return populationInfoId; + } + + public void setPopulationInfoId(String populationInfoId) { + this.populationInfoId = populationInfoId; + } + + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } + + public String getReasonOther() { + return reasonOther; + } + + public void setReasonOther(String reasonOther) { + this.reasonOther = reasonOther; + } + + public String getStabilizeLevel() { + return stabilizeLevel; + } + + public void setStabilizeLevel(String stabilizeLevel) { + this.stabilizeLevel = stabilizeLevel; + } + + public String getStabilizeStatus() { + return stabilizeStatus; + } + + public void setStabilizeStatus(String stabilizeStatus) { + this.stabilizeStatus = stabilizeStatus; + } + + public String getTalk() { + return talk; + } + + public void setTalk(String talk) { + this.talk = talk; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } +} diff --git a/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/SavePetitionBean.java b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/SavePetitionBean.java new file mode 100644 index 0000000..6701c4c --- /dev/null +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/beans/person/SavePetitionBean.java @@ -0,0 +1,122 @@ +package com.sucstepsoft.realtimelocation.beans.person; + +public class SavePetitionBean { + + private String activation; + private String coordinate; + private String economy; + private String handle; + private String measure; + private String onduty; + private String populationInfoId; + private String reason; + private String reasonOther; + private String stabilizeLevel; + private String stabilizeStatus; + private String talk; + private String type; + + public String getActivation() { + return activation; + } + + public void setActivation(String activation) { + this.activation = activation; + } + + public String getCoordinate() { + return coordinate; + } + + public void setCoordinate(String coordinate) { + this.coordinate = coordinate; + } + + public String getEconomy() { + return economy; + } + + public void setEconomy(String economy) { + this.economy = economy; + } + + public String getHandle() { + return handle; + } + + public void setHandle(String handle) { + this.handle = handle; + } + + public String getMeasure() { + return measure; + } + + public void setMeasure(String measure) { + this.measure = measure; + } + + public String getOnduty() { + return onduty; + } + + public void setOnduty(String onduty) { + this.onduty = onduty; + } + + public String getPopulationInfoId() { + return populationInfoId; + } + + public void setPopulationInfoId(String populationInfoId) { + this.populationInfoId = populationInfoId; + } + + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } + + public String getReasonOther() { + return reasonOther; + } + + public void setReasonOther(String reasonOther) { + this.reasonOther = reasonOther; + } + + public String getStabilizeLevel() { + return stabilizeLevel; + } + + public void setStabilizeLevel(String stabilizeLevel) { + this.stabilizeLevel = stabilizeLevel; + } + + public String getStabilizeStatus() { + return stabilizeStatus; + } + + public void setStabilizeStatus(String stabilizeStatus) { + this.stabilizeStatus = stabilizeStatus; + } + + public String getTalk() { + return talk; + } + + public void setTalk(String talk) { + this.talk = talk; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } +} 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 2b0b1ca..b3d9e28 100755 --- a/app/src/main/java/com/sucstepsoft/realtimelocation/net/LocationApiService.java +++ b/app/src/main/java/com/sucstepsoft/realtimelocation/net/LocationApiService.java @@ -62,6 +62,8 @@ import com.sucstepsoft.realtimelocation.beans.person.OutboundDetailBean; import com.sucstepsoft.realtimelocation.beans.person.OutboundListBean; import com.sucstepsoft.realtimelocation.beans.person.PersonBaseListBean; import com.sucstepsoft.realtimelocation.beans.person.PersonCorrectBean; +import com.sucstepsoft.realtimelocation.beans.person.PetitionBean; +import com.sucstepsoft.realtimelocation.beans.person.PetitionDetailBean; import com.sucstepsoft.realtimelocation.beans.person.SearchHouseByPersonBean; import com.sucstepsoft.realtimelocation.beans.person.SecurityDetailBean; import com.sucstepsoft.realtimelocation.beans.person.TroubleDetailBean; @@ -1286,21 +1288,21 @@ public interface LocationApiService { /*===========================================涉邪人员===========================================*/ /** - * 保存吸毒人员 + * 保存涉邪人员 */ @Headers({"base_url_name:person", "Content-Type: application/json", "Accept: application/json"}) @POST("app/cult/save") Observable doSaveHeresy(@Body RequestBody body, @Header("token") String token); /** - * 编辑吸毒人员 + * 编辑涉邪人员 */ @Headers({"base_url_name:person", "Content-Type: application/json", "Accept: application/json"}) @PUT("app/cult/updatecult/{cultId}") Observable doEditHeresy(@Path("cultId") String id, @Body RequestBody body, @Header("token") String token); /** - * 删除吸毒 + * 删除涉邪人员 */ @Headers({"base_url_name:person", "Content-Type: application/json", "Accept: application/json"}) @DELETE("app/cult/remove/{ids}") @@ -1321,6 +1323,45 @@ public interface LocationApiService { @GET("app/cult/listpagecult") Observable getHeresyList(@Query("populationInfoId") String id, @Query("page") String page, @Query("keywords") String key, @Header("token") String token); + + /*===========================================重点上访===========================================*/ + + /** + * 保存重点上访 + */ + @Headers({"base_url_name:person", "Content-Type: application/json", "Accept: application/json"}) + @POST("app/petition/save") + Observable doSavePetition(@Body RequestBody body, @Header("token") String token); + + /** + * 编辑重点上访 + */ + @Headers({"base_url_name:person", "Content-Type: application/json", "Accept: application/json"}) + @PUT("app/petition/updatepetition/{petitionId}") + Observable doEditPetition(@Path("petitionId") String id, @Body RequestBody body, @Header("token") String token); + + /** + * 删除重点上访 + */ + @Headers({"base_url_name:person", "Content-Type: application/json", "Accept: application/json"}) + @DELETE("app/petition/remove/{ids}") + Observable doDelPetition(@Path("ids") String id, @Header("token") String token); + + /** + * 根据ID获取详情 + */ + @Headers({"base_url_name:person", "Content-Type: application/json", "Accept: application/json"}) + @GET("app/petition/get/{petitionId}") + Observable getPetitionDetailById(@Path("petitionId") String id, @Header("token") String token); + + + /** + * 涉邪重点上访 + */ + @Headers({"base_url_name:person", "Content-Type: application/json", "Accept: application/json"}) + @GET("app/petition/listpagepetition") + Observable getPetitionList(@Query("populationInfoId") String id, @Query("page") String page, @Query("keywords") String key, @Header("token") String token); + /*===========================================艾滋===========================================*/ /** diff --git a/app/src/main/res/layout/activity_census_petition_add.xml b/app/src/main/res/layout/activity_census_petition_add.xml new file mode 100644 index 0000000..db206da --- /dev/null +++ b/app/src/main/res/layout/activity_census_petition_add.xml @@ -0,0 +1,270 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +