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