diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f105e36..51e7255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:usesCleartextTraffic="true"> + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + { private Context mContext; - private List mList; + private List mProcessList; - public ProcessLineAdapter(Context context) { + public ProcessLineAdapter(Context context, List list) { mContext = context; + this.mProcessList = list; } - public void setList(List list) { - mList = list; - } - + @NotNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_case_process, parent, false); @@ -36,37 +35,35 @@ @Override public void onBindViewHolder(ViewHolder holder, int position) { - holder.bindData(mList.get(position)); + holder.bindData(mProcessList.get(position)); } @Override public int getItemCount() { - return mList.size(); + return mProcessList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - private TextView handlePersonTag; + private TextView operationTypeName; private TextView handlePersonView; - private TextView handleTimeTag; private TextView handleTimeView; - private TextView handleResultTag; private TextView handleResultView; private RelativeLayout handlePicLayout; - private GridView handlePicView; + private RecyclerView handlePicView; public ViewHolder(View view) { super(view); - handlePersonTag = view.findViewById(R.id.handlePersonTag); + operationTypeName = view.findViewById(R.id.operationTypeName); handlePersonView = view.findViewById(R.id.handlePersonView); - handleTimeTag = view.findViewById(R.id.handleTimeTag); handleTimeView = view.findViewById(R.id.handleTimeView); - handleResultTag = view.findViewById(R.id.handleResultTag); handleResultView = view.findViewById(R.id.handleResultView); handlePicLayout = view.findViewById(R.id.handlePicLayout); handlePicView = view.findViewById(R.id.handlePicView); } public void bindData(CaseProcessBean.DataBean dataBean) { + String typeName = dataBean.getOperationTypeName(); + operationTypeName.setText(typeName); handlePersonView.setText(dataBean.getUserName()); handleTimeView.setText(dataBean.getTime()); handleResultView.setText(dataBean.getRemarks()); diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f105e36..51e7255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:usesCleartextTraffic="true"> + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + { private Context mContext; - private List mList; + private List mProcessList; - public ProcessLineAdapter(Context context) { + public ProcessLineAdapter(Context context, List list) { mContext = context; + this.mProcessList = list; } - public void setList(List list) { - mList = list; - } - + @NotNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_case_process, parent, false); @@ -36,37 +35,35 @@ @Override public void onBindViewHolder(ViewHolder holder, int position) { - holder.bindData(mList.get(position)); + holder.bindData(mProcessList.get(position)); } @Override public int getItemCount() { - return mList.size(); + return mProcessList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - private TextView handlePersonTag; + private TextView operationTypeName; private TextView handlePersonView; - private TextView handleTimeTag; private TextView handleTimeView; - private TextView handleResultTag; private TextView handleResultView; private RelativeLayout handlePicLayout; - private GridView handlePicView; + private RecyclerView handlePicView; public ViewHolder(View view) { super(view); - handlePersonTag = view.findViewById(R.id.handlePersonTag); + operationTypeName = view.findViewById(R.id.operationTypeName); handlePersonView = view.findViewById(R.id.handlePersonView); - handleTimeTag = view.findViewById(R.id.handleTimeTag); handleTimeView = view.findViewById(R.id.handleTimeView); - handleResultTag = view.findViewById(R.id.handleResultTag); handleResultView = view.findViewById(R.id.handleResultView); handlePicLayout = view.findViewById(R.id.handlePicLayout); handlePicView = view.findViewById(R.id.handlePicView); } public void bindData(CaseProcessBean.DataBean dataBean) { + String typeName = dataBean.getOperationTypeName(); + operationTypeName.setText(typeName); handlePersonView.setText(dataBean.getUserName()); handleTimeView.setText(dataBean.getTime()); handleResultView.setText(dataBean.getRemarks()); diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index 8f24f23..9c323dd 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,6 +18,7 @@ @Override public void onReadyRetrofitRequest(String casetypeCode, String casetypeDetailCode, String caseStateId, String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { + view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(casetypeCode, casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, offset)); } @@ -29,11 +30,12 @@ @Override public void onSuccess(CaseListResultBean resultBean) { + view.hideProgress(); view.obtainCaseListData(resultBean); } @Override public void onFailure(Throwable throwable) { - + view.hideProgress(); } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f105e36..51e7255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:usesCleartextTraffic="true"> + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + { private Context mContext; - private List mList; + private List mProcessList; - public ProcessLineAdapter(Context context) { + public ProcessLineAdapter(Context context, List list) { mContext = context; + this.mProcessList = list; } - public void setList(List list) { - mList = list; - } - + @NotNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_case_process, parent, false); @@ -36,37 +35,35 @@ @Override public void onBindViewHolder(ViewHolder holder, int position) { - holder.bindData(mList.get(position)); + holder.bindData(mProcessList.get(position)); } @Override public int getItemCount() { - return mList.size(); + return mProcessList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - private TextView handlePersonTag; + private TextView operationTypeName; private TextView handlePersonView; - private TextView handleTimeTag; private TextView handleTimeView; - private TextView handleResultTag; private TextView handleResultView; private RelativeLayout handlePicLayout; - private GridView handlePicView; + private RecyclerView handlePicView; public ViewHolder(View view) { super(view); - handlePersonTag = view.findViewById(R.id.handlePersonTag); + operationTypeName = view.findViewById(R.id.operationTypeName); handlePersonView = view.findViewById(R.id.handlePersonView); - handleTimeTag = view.findViewById(R.id.handleTimeTag); handleTimeView = view.findViewById(R.id.handleTimeView); - handleResultTag = view.findViewById(R.id.handleResultTag); handleResultView = view.findViewById(R.id.handleResultView); handlePicLayout = view.findViewById(R.id.handlePicLayout); handlePicView = view.findViewById(R.id.handlePicView); } public void bindData(CaseProcessBean.DataBean dataBean) { + String typeName = dataBean.getOperationTypeName(); + operationTypeName.setText(typeName); handlePersonView.setText(dataBean.getUserName()); handleTimeView.setText(dataBean.getTime()); handleResultView.setText(dataBean.getRemarks()); diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index 8f24f23..9c323dd 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,6 +18,7 @@ @Override public void onReadyRetrofitRequest(String casetypeCode, String casetypeDetailCode, String caseStateId, String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { + view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(casetypeCode, casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, offset)); } @@ -29,11 +30,12 @@ @Override public void onSuccess(CaseListResultBean resultBean) { + view.hideProgress(); view.obtainCaseListData(resultBean); } @Override public void onFailure(Throwable throwable) { - + view.hideProgress(); } } diff --git a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java index 4d22718..60ec154 100644 --- a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java +++ b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java @@ -3,5 +3,9 @@ import com.casic.dcms.bean.CaseListResultBean; public interface ICaseListView { + void showProgress(); + + void hideProgress(); + void obtainCaseListData(CaseListResultBean resultBean); } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f105e36..51e7255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:usesCleartextTraffic="true"> + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + { private Context mContext; - private List mList; + private List mProcessList; - public ProcessLineAdapter(Context context) { + public ProcessLineAdapter(Context context, List list) { mContext = context; + this.mProcessList = list; } - public void setList(List list) { - mList = list; - } - + @NotNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_case_process, parent, false); @@ -36,37 +35,35 @@ @Override public void onBindViewHolder(ViewHolder holder, int position) { - holder.bindData(mList.get(position)); + holder.bindData(mProcessList.get(position)); } @Override public int getItemCount() { - return mList.size(); + return mProcessList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - private TextView handlePersonTag; + private TextView operationTypeName; private TextView handlePersonView; - private TextView handleTimeTag; private TextView handleTimeView; - private TextView handleResultTag; private TextView handleResultView; private RelativeLayout handlePicLayout; - private GridView handlePicView; + private RecyclerView handlePicView; public ViewHolder(View view) { super(view); - handlePersonTag = view.findViewById(R.id.handlePersonTag); + operationTypeName = view.findViewById(R.id.operationTypeName); handlePersonView = view.findViewById(R.id.handlePersonView); - handleTimeTag = view.findViewById(R.id.handleTimeTag); handleTimeView = view.findViewById(R.id.handleTimeView); - handleResultTag = view.findViewById(R.id.handleResultTag); handleResultView = view.findViewById(R.id.handleResultView); handlePicLayout = view.findViewById(R.id.handlePicLayout); handlePicView = view.findViewById(R.id.handlePicView); } public void bindData(CaseProcessBean.DataBean dataBean) { + String typeName = dataBean.getOperationTypeName(); + operationTypeName.setText(typeName); handlePersonView.setText(dataBean.getUserName()); handleTimeView.setText(dataBean.getTime()); handleResultView.setText(dataBean.getRemarks()); diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index 8f24f23..9c323dd 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,6 +18,7 @@ @Override public void onReadyRetrofitRequest(String casetypeCode, String casetypeDetailCode, String caseStateId, String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { + view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(casetypeCode, casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, offset)); } @@ -29,11 +30,12 @@ @Override public void onSuccess(CaseListResultBean resultBean) { + view.hideProgress(); view.obtainCaseListData(resultBean); } @Override public void onFailure(Throwable throwable) { - + view.hideProgress(); } } diff --git a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java index 4d22718..60ec154 100644 --- a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java +++ b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java @@ -3,5 +3,9 @@ import com.casic.dcms.bean.CaseListResultBean; public interface ICaseListView { + void showProgress(); + + void hideProgress(); + void obtainCaseListData(CaseListResultBean resultBean); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java new file mode 100644 index 0000000..630670a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -0,0 +1,52 @@ +package com.casic.dcms.ui; + +import android.view.View; +import android.widget.ImageView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.utils.StatusBarColorUtil; +import com.gyf.immersionbar.ImmersionBar; + +import butterknife.BindView; + +public class CaseCheckDetailActivity extends BaseActivity implements View.OnClickListener { + + private static final String TAG = "CaseCheckDetailActivity"; + @BindView(R.id.leftBackView) + ImageView leftBackView; + + @Override + public int initLayoutView() { + return R.layout.activity_case_check_detail; + } + + @Override + protected void setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + leftBackView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + + } + + @Override + public void initEvent() { + + } + + @Override + public void onClick(View v) { + + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f105e36..51e7255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:usesCleartextTraffic="true"> + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + { private Context mContext; - private List mList; + private List mProcessList; - public ProcessLineAdapter(Context context) { + public ProcessLineAdapter(Context context, List list) { mContext = context; + this.mProcessList = list; } - public void setList(List list) { - mList = list; - } - + @NotNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_case_process, parent, false); @@ -36,37 +35,35 @@ @Override public void onBindViewHolder(ViewHolder holder, int position) { - holder.bindData(mList.get(position)); + holder.bindData(mProcessList.get(position)); } @Override public int getItemCount() { - return mList.size(); + return mProcessList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - private TextView handlePersonTag; + private TextView operationTypeName; private TextView handlePersonView; - private TextView handleTimeTag; private TextView handleTimeView; - private TextView handleResultTag; private TextView handleResultView; private RelativeLayout handlePicLayout; - private GridView handlePicView; + private RecyclerView handlePicView; public ViewHolder(View view) { super(view); - handlePersonTag = view.findViewById(R.id.handlePersonTag); + operationTypeName = view.findViewById(R.id.operationTypeName); handlePersonView = view.findViewById(R.id.handlePersonView); - handleTimeTag = view.findViewById(R.id.handleTimeTag); handleTimeView = view.findViewById(R.id.handleTimeView); - handleResultTag = view.findViewById(R.id.handleResultTag); handleResultView = view.findViewById(R.id.handleResultView); handlePicLayout = view.findViewById(R.id.handlePicLayout); handlePicView = view.findViewById(R.id.handlePicView); } public void bindData(CaseProcessBean.DataBean dataBean) { + String typeName = dataBean.getOperationTypeName(); + operationTypeName.setText(typeName); handlePersonView.setText(dataBean.getUserName()); handleTimeView.setText(dataBean.getTime()); handleResultView.setText(dataBean.getRemarks()); diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index 8f24f23..9c323dd 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,6 +18,7 @@ @Override public void onReadyRetrofitRequest(String casetypeCode, String casetypeDetailCode, String caseStateId, String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { + view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(casetypeCode, casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, offset)); } @@ -29,11 +30,12 @@ @Override public void onSuccess(CaseListResultBean resultBean) { + view.hideProgress(); view.obtainCaseListData(resultBean); } @Override public void onFailure(Throwable throwable) { - + view.hideProgress(); } } diff --git a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java index 4d22718..60ec154 100644 --- a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java +++ b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java @@ -3,5 +3,9 @@ import com.casic.dcms.bean.CaseListResultBean; public interface ICaseListView { + void showProgress(); + + void hideProgress(); + void obtainCaseListData(CaseListResultBean resultBean); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java new file mode 100644 index 0000000..630670a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -0,0 +1,52 @@ +package com.casic.dcms.ui; + +import android.view.View; +import android.widget.ImageView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.utils.StatusBarColorUtil; +import com.gyf.immersionbar.ImmersionBar; + +import butterknife.BindView; + +public class CaseCheckDetailActivity extends BaseActivity implements View.OnClickListener { + + private static final String TAG = "CaseCheckDetailActivity"; + @BindView(R.id.leftBackView) + ImageView leftBackView; + + @Override + public int initLayoutView() { + return R.layout.activity_case_check_detail; + } + + @Override + protected void setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + leftBackView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + + } + + @Override + public void initEvent() { + + } + + @Override + public void onClick(View v) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java new file mode 100644 index 0000000..a061d3c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -0,0 +1,163 @@ +package com.casic.dcms.ui; + +import android.content.Intent; +import android.media.MediaPlayer; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { + + private static final String TAG = "CheckedDetailActivity"; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.caseHandleView) + TextView caseHandleView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; + + private MediaPlayer mediaPlayer; + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + public int initLayoutView() { + return R.layout.activity_case_checked_detail; + } + + @Override + protected void setupTopBarLayout() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mediaPlayer = new MediaPlayer(); + + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @OnClick(R.id.handleLayout) + @Override + public void onClick(View v) { + if (v.getId() == R.id.handleLayout) { + Intent intent = new Intent(this, CaseProcessActivity.class); + intent.putExtra("processId", data.getProcessId()); + startActivity(intent); + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { +// Log.d(TAG, "obtainCaseDetailData: "+new Gson().toJson(resultBean)); + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseHandleView.setText(data.getUrgeRemarks()); + caseSituationView.setText(data.getDescription()); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + List urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + urls.add(StringHelper.appendCompleteURL(s)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setVisibility(View.VISIBLE); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f105e36..51e7255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:usesCleartextTraffic="true"> + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + { private Context mContext; - private List mList; + private List mProcessList; - public ProcessLineAdapter(Context context) { + public ProcessLineAdapter(Context context, List list) { mContext = context; + this.mProcessList = list; } - public void setList(List list) { - mList = list; - } - + @NotNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_case_process, parent, false); @@ -36,37 +35,35 @@ @Override public void onBindViewHolder(ViewHolder holder, int position) { - holder.bindData(mList.get(position)); + holder.bindData(mProcessList.get(position)); } @Override public int getItemCount() { - return mList.size(); + return mProcessList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - private TextView handlePersonTag; + private TextView operationTypeName; private TextView handlePersonView; - private TextView handleTimeTag; private TextView handleTimeView; - private TextView handleResultTag; private TextView handleResultView; private RelativeLayout handlePicLayout; - private GridView handlePicView; + private RecyclerView handlePicView; public ViewHolder(View view) { super(view); - handlePersonTag = view.findViewById(R.id.handlePersonTag); + operationTypeName = view.findViewById(R.id.operationTypeName); handlePersonView = view.findViewById(R.id.handlePersonView); - handleTimeTag = view.findViewById(R.id.handleTimeTag); handleTimeView = view.findViewById(R.id.handleTimeView); - handleResultTag = view.findViewById(R.id.handleResultTag); handleResultView = view.findViewById(R.id.handleResultView); handlePicLayout = view.findViewById(R.id.handlePicLayout); handlePicView = view.findViewById(R.id.handlePicView); } public void bindData(CaseProcessBean.DataBean dataBean) { + String typeName = dataBean.getOperationTypeName(); + operationTypeName.setText(typeName); handlePersonView.setText(dataBean.getUserName()); handleTimeView.setText(dataBean.getTime()); handleResultView.setText(dataBean.getRemarks()); diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index 8f24f23..9c323dd 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,6 +18,7 @@ @Override public void onReadyRetrofitRequest(String casetypeCode, String casetypeDetailCode, String caseStateId, String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { + view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(casetypeCode, casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, offset)); } @@ -29,11 +30,12 @@ @Override public void onSuccess(CaseListResultBean resultBean) { + view.hideProgress(); view.obtainCaseListData(resultBean); } @Override public void onFailure(Throwable throwable) { - + view.hideProgress(); } } diff --git a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java index 4d22718..60ec154 100644 --- a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java +++ b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java @@ -3,5 +3,9 @@ import com.casic.dcms.bean.CaseListResultBean; public interface ICaseListView { + void showProgress(); + + void hideProgress(); + void obtainCaseListData(CaseListResultBean resultBean); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java new file mode 100644 index 0000000..630670a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -0,0 +1,52 @@ +package com.casic.dcms.ui; + +import android.view.View; +import android.widget.ImageView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.utils.StatusBarColorUtil; +import com.gyf.immersionbar.ImmersionBar; + +import butterknife.BindView; + +public class CaseCheckDetailActivity extends BaseActivity implements View.OnClickListener { + + private static final String TAG = "CaseCheckDetailActivity"; + @BindView(R.id.leftBackView) + ImageView leftBackView; + + @Override + public int initLayoutView() { + return R.layout.activity_case_check_detail; + } + + @Override + protected void setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + leftBackView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + + } + + @Override + public void initEvent() { + + } + + @Override + public void onClick(View v) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java new file mode 100644 index 0000000..a061d3c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -0,0 +1,163 @@ +package com.casic.dcms.ui; + +import android.content.Intent; +import android.media.MediaPlayer; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { + + private static final String TAG = "CheckedDetailActivity"; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.caseHandleView) + TextView caseHandleView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; + + private MediaPlayer mediaPlayer; + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + public int initLayoutView() { + return R.layout.activity_case_checked_detail; + } + + @Override + protected void setupTopBarLayout() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mediaPlayer = new MediaPlayer(); + + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @OnClick(R.id.handleLayout) + @Override + public void onClick(View v) { + if (v.getId() == R.id.handleLayout) { + Intent intent = new Intent(this, CaseProcessActivity.class); + intent.putExtra("processId", data.getProcessId()); + startActivity(intent); + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { +// Log.d(TAG, "obtainCaseDetailData: "+new Gson().toJson(resultBean)); + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseHandleView.setText(data.getUrgeRemarks()); + caseSituationView.setText(data.getDescription()); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + List urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + urls.add(StringHelper.appendCompleteURL(s)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setVisibility(View.VISIBLE); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 1fd547e..77c7b01 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -3,17 +3,24 @@ import android.content.Intent; import android.util.Log; import android.view.View; -import android.widget.GridView; import android.widget.RelativeLayout; import android.widget.TextView; import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.util.ArrayList; @@ -45,11 +52,16 @@ @BindView(R.id.caseSituationView) TextView caseSituationView; @BindView(R.id.casePicGridView) - GridView casePicGridView; + RecyclerView casePicGridView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; + private CaseDetailPresenterImpl caseDetailPresenter; - private List dataBeans = new ArrayList<>(); + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private Gson gson; + private List urls = new ArrayList<>(); @Override public int initLayoutView() { @@ -73,6 +85,8 @@ String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); + + gson = new Gson(); } @Override @@ -84,23 +98,58 @@ public void obtainCaseDetailData(CaseDetailBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - this.dataBeans = resultBean.getData(); - CaseDetailBean.DataBean dataBean = resultBean.getData().get(0);//有且之后一个 - caseNumberView.setText(dataBean.getCaseid()); - caseStatusView.setText(dataBean.getCaseStateName()); - caseTypeView.setText(dataBean.getEorcName()); - caseLargeTypeView.setText(dataBean.getCasetypeName()); - caseSmallTypeView.setText(dataBean.getCasetypeDetailName()); - caseCommunityView.setText(dataBean.getCommunityName()); - casePlaceView.setText(dataBean.getFieldintro()); - caseSituationView.setText(dataBean.getDescription()); - int caseState = dataBean.getCaseState(); - if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { - handleRecordLayout.setVisibility(View.GONE); - } else { - handleRecordLayout.setVisibility(View.VISIBLE); + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseSituationView.setText(data.getDescription()); + List mediaList = gson.fromJson(data.getFileIdVerify(), new TypeToken>() { + }.getType()); + for (String media : mediaList) { + if (media.endsWith("jpeg") || media.endsWith("jpg") || media.endsWith("png")) { + if (media.startsWith("http")) { + urls.add(media); + } else { + urls.add(StringHelper.appendCompleteURL(media)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicGridView.setVisibility(View.VISIBLE); + casePicGridView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicGridView.addItemDecoration(new ItemDecorationSpace()); + casePicGridView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } } } + int caseState = data.getCaseState(); + if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { + handleRecordLayout.setVisibility(View.GONE); + } else { + handleRecordLayout.setVisibility(View.VISIBLE); + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); } @OnClick({R.id.caseAudioView, R.id.handleRecordLayout}) @@ -108,16 +157,14 @@ public void onClick(View v) { switch (v.getId()) { case R.id.caseAudioView: - if (dataBeans.size() > 0) { - String audioIdVerify = dataBeans.get(0).getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - } + String audioIdVerify = data.getAudioIdVerify(); + String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); + String[] split = fileIdVerify.split(","); + Log.d(TAG, Arrays.toString(split)); break; case R.id.handleRecordLayout: Intent intent = new Intent(this, CaseProcessActivity.class); - intent.putExtra("processId", dataBeans.get(0).getProcessId()); + intent.putExtra("processId", data.getProcessId()); startActivity(intent); break; } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f105e36..51e7255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:usesCleartextTraffic="true"> + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + { private Context mContext; - private List mList; + private List mProcessList; - public ProcessLineAdapter(Context context) { + public ProcessLineAdapter(Context context, List list) { mContext = context; + this.mProcessList = list; } - public void setList(List list) { - mList = list; - } - + @NotNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_case_process, parent, false); @@ -36,37 +35,35 @@ @Override public void onBindViewHolder(ViewHolder holder, int position) { - holder.bindData(mList.get(position)); + holder.bindData(mProcessList.get(position)); } @Override public int getItemCount() { - return mList.size(); + return mProcessList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - private TextView handlePersonTag; + private TextView operationTypeName; private TextView handlePersonView; - private TextView handleTimeTag; private TextView handleTimeView; - private TextView handleResultTag; private TextView handleResultView; private RelativeLayout handlePicLayout; - private GridView handlePicView; + private RecyclerView handlePicView; public ViewHolder(View view) { super(view); - handlePersonTag = view.findViewById(R.id.handlePersonTag); + operationTypeName = view.findViewById(R.id.operationTypeName); handlePersonView = view.findViewById(R.id.handlePersonView); - handleTimeTag = view.findViewById(R.id.handleTimeTag); handleTimeView = view.findViewById(R.id.handleTimeView); - handleResultTag = view.findViewById(R.id.handleResultTag); handleResultView = view.findViewById(R.id.handleResultView); handlePicLayout = view.findViewById(R.id.handlePicLayout); handlePicView = view.findViewById(R.id.handlePicView); } public void bindData(CaseProcessBean.DataBean dataBean) { + String typeName = dataBean.getOperationTypeName(); + operationTypeName.setText(typeName); handlePersonView.setText(dataBean.getUserName()); handleTimeView.setText(dataBean.getTime()); handleResultView.setText(dataBean.getRemarks()); diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index 8f24f23..9c323dd 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,6 +18,7 @@ @Override public void onReadyRetrofitRequest(String casetypeCode, String casetypeDetailCode, String caseStateId, String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { + view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(casetypeCode, casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, offset)); } @@ -29,11 +30,12 @@ @Override public void onSuccess(CaseListResultBean resultBean) { + view.hideProgress(); view.obtainCaseListData(resultBean); } @Override public void onFailure(Throwable throwable) { - + view.hideProgress(); } } diff --git a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java index 4d22718..60ec154 100644 --- a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java +++ b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java @@ -3,5 +3,9 @@ import com.casic.dcms.bean.CaseListResultBean; public interface ICaseListView { + void showProgress(); + + void hideProgress(); + void obtainCaseListData(CaseListResultBean resultBean); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java new file mode 100644 index 0000000..630670a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -0,0 +1,52 @@ +package com.casic.dcms.ui; + +import android.view.View; +import android.widget.ImageView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.utils.StatusBarColorUtil; +import com.gyf.immersionbar.ImmersionBar; + +import butterknife.BindView; + +public class CaseCheckDetailActivity extends BaseActivity implements View.OnClickListener { + + private static final String TAG = "CaseCheckDetailActivity"; + @BindView(R.id.leftBackView) + ImageView leftBackView; + + @Override + public int initLayoutView() { + return R.layout.activity_case_check_detail; + } + + @Override + protected void setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + leftBackView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + + } + + @Override + public void initEvent() { + + } + + @Override + public void onClick(View v) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java new file mode 100644 index 0000000..a061d3c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -0,0 +1,163 @@ +package com.casic.dcms.ui; + +import android.content.Intent; +import android.media.MediaPlayer; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { + + private static final String TAG = "CheckedDetailActivity"; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.caseHandleView) + TextView caseHandleView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; + + private MediaPlayer mediaPlayer; + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + public int initLayoutView() { + return R.layout.activity_case_checked_detail; + } + + @Override + protected void setupTopBarLayout() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mediaPlayer = new MediaPlayer(); + + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @OnClick(R.id.handleLayout) + @Override + public void onClick(View v) { + if (v.getId() == R.id.handleLayout) { + Intent intent = new Intent(this, CaseProcessActivity.class); + intent.putExtra("processId", data.getProcessId()); + startActivity(intent); + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { +// Log.d(TAG, "obtainCaseDetailData: "+new Gson().toJson(resultBean)); + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseHandleView.setText(data.getUrgeRemarks()); + caseSituationView.setText(data.getDescription()); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + List urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + urls.add(StringHelper.appendCompleteURL(s)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setVisibility(View.VISIBLE); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 1fd547e..77c7b01 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -3,17 +3,24 @@ import android.content.Intent; import android.util.Log; import android.view.View; -import android.widget.GridView; import android.widget.RelativeLayout; import android.widget.TextView; import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.util.ArrayList; @@ -45,11 +52,16 @@ @BindView(R.id.caseSituationView) TextView caseSituationView; @BindView(R.id.casePicGridView) - GridView casePicGridView; + RecyclerView casePicGridView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; + private CaseDetailPresenterImpl caseDetailPresenter; - private List dataBeans = new ArrayList<>(); + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private Gson gson; + private List urls = new ArrayList<>(); @Override public int initLayoutView() { @@ -73,6 +85,8 @@ String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); + + gson = new Gson(); } @Override @@ -84,23 +98,58 @@ public void obtainCaseDetailData(CaseDetailBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - this.dataBeans = resultBean.getData(); - CaseDetailBean.DataBean dataBean = resultBean.getData().get(0);//有且之后一个 - caseNumberView.setText(dataBean.getCaseid()); - caseStatusView.setText(dataBean.getCaseStateName()); - caseTypeView.setText(dataBean.getEorcName()); - caseLargeTypeView.setText(dataBean.getCasetypeName()); - caseSmallTypeView.setText(dataBean.getCasetypeDetailName()); - caseCommunityView.setText(dataBean.getCommunityName()); - casePlaceView.setText(dataBean.getFieldintro()); - caseSituationView.setText(dataBean.getDescription()); - int caseState = dataBean.getCaseState(); - if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { - handleRecordLayout.setVisibility(View.GONE); - } else { - handleRecordLayout.setVisibility(View.VISIBLE); + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseSituationView.setText(data.getDescription()); + List mediaList = gson.fromJson(data.getFileIdVerify(), new TypeToken>() { + }.getType()); + for (String media : mediaList) { + if (media.endsWith("jpeg") || media.endsWith("jpg") || media.endsWith("png")) { + if (media.startsWith("http")) { + urls.add(media); + } else { + urls.add(StringHelper.appendCompleteURL(media)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicGridView.setVisibility(View.VISIBLE); + casePicGridView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicGridView.addItemDecoration(new ItemDecorationSpace()); + casePicGridView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } } } + int caseState = data.getCaseState(); + if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { + handleRecordLayout.setVisibility(View.GONE); + } else { + handleRecordLayout.setVisibility(View.VISIBLE); + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); } @OnClick({R.id.caseAudioView, R.id.handleRecordLayout}) @@ -108,16 +157,14 @@ public void onClick(View v) { switch (v.getId()) { case R.id.caseAudioView: - if (dataBeans.size() > 0) { - String audioIdVerify = dataBeans.get(0).getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - } + String audioIdVerify = data.getAudioIdVerify(); + String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); + String[] split = fileIdVerify.split(","); + Log.d(TAG, Arrays.toString(split)); break; case R.id.handleRecordLayout: Intent intent = new Intent(this, CaseProcessActivity.class); - intent.putExtra("processId", dataBeans.get(0).getProcessId()); + intent.putExtra("processId", data.getProcessId()); startActivity(intent); break; } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index f365d3d..4dd5e6a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; @@ -58,6 +59,7 @@ private List dataBeans = new ArrayList<>(); private boolean isRefresh, isLoadMore = false; private WeakReferenceHandler weakReferenceHandler; + private QMUITipDialog searchDialog; @Override public int initLayoutView() { @@ -78,6 +80,10 @@ @Override public void initData() { + searchDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("查询中,请稍后") + .create(); caseListPresenter = new CaseListPresenterImpl(this); weakReferenceHandler = new WeakReferenceHandler(this); typeCode = getIntent().getStringExtra("typeCode"); @@ -156,6 +162,16 @@ } @Override + public void showProgress() { + searchDialog.show(); + } + + @Override + public void hideProgress() { + searchDialog.hide(); + } + + @Override public void obtainCaseListData(CaseListResultBean resultBean) { if (resultBean.isSuccess()) { List dataRows = resultBean.getData().getRows(); diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f105e36..51e7255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:usesCleartextTraffic="true"> + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + { private Context mContext; - private List mList; + private List mProcessList; - public ProcessLineAdapter(Context context) { + public ProcessLineAdapter(Context context, List list) { mContext = context; + this.mProcessList = list; } - public void setList(List list) { - mList = list; - } - + @NotNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_case_process, parent, false); @@ -36,37 +35,35 @@ @Override public void onBindViewHolder(ViewHolder holder, int position) { - holder.bindData(mList.get(position)); + holder.bindData(mProcessList.get(position)); } @Override public int getItemCount() { - return mList.size(); + return mProcessList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - private TextView handlePersonTag; + private TextView operationTypeName; private TextView handlePersonView; - private TextView handleTimeTag; private TextView handleTimeView; - private TextView handleResultTag; private TextView handleResultView; private RelativeLayout handlePicLayout; - private GridView handlePicView; + private RecyclerView handlePicView; public ViewHolder(View view) { super(view); - handlePersonTag = view.findViewById(R.id.handlePersonTag); + operationTypeName = view.findViewById(R.id.operationTypeName); handlePersonView = view.findViewById(R.id.handlePersonView); - handleTimeTag = view.findViewById(R.id.handleTimeTag); handleTimeView = view.findViewById(R.id.handleTimeView); - handleResultTag = view.findViewById(R.id.handleResultTag); handleResultView = view.findViewById(R.id.handleResultView); handlePicLayout = view.findViewById(R.id.handlePicLayout); handlePicView = view.findViewById(R.id.handlePicView); } public void bindData(CaseProcessBean.DataBean dataBean) { + String typeName = dataBean.getOperationTypeName(); + operationTypeName.setText(typeName); handlePersonView.setText(dataBean.getUserName()); handleTimeView.setText(dataBean.getTime()); handleResultView.setText(dataBean.getRemarks()); diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index 8f24f23..9c323dd 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,6 +18,7 @@ @Override public void onReadyRetrofitRequest(String casetypeCode, String casetypeDetailCode, String caseStateId, String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { + view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(casetypeCode, casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, offset)); } @@ -29,11 +30,12 @@ @Override public void onSuccess(CaseListResultBean resultBean) { + view.hideProgress(); view.obtainCaseListData(resultBean); } @Override public void onFailure(Throwable throwable) { - + view.hideProgress(); } } diff --git a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java index 4d22718..60ec154 100644 --- a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java +++ b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java @@ -3,5 +3,9 @@ import com.casic.dcms.bean.CaseListResultBean; public interface ICaseListView { + void showProgress(); + + void hideProgress(); + void obtainCaseListData(CaseListResultBean resultBean); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java new file mode 100644 index 0000000..630670a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -0,0 +1,52 @@ +package com.casic.dcms.ui; + +import android.view.View; +import android.widget.ImageView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.utils.StatusBarColorUtil; +import com.gyf.immersionbar.ImmersionBar; + +import butterknife.BindView; + +public class CaseCheckDetailActivity extends BaseActivity implements View.OnClickListener { + + private static final String TAG = "CaseCheckDetailActivity"; + @BindView(R.id.leftBackView) + ImageView leftBackView; + + @Override + public int initLayoutView() { + return R.layout.activity_case_check_detail; + } + + @Override + protected void setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + leftBackView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + + } + + @Override + public void initEvent() { + + } + + @Override + public void onClick(View v) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java new file mode 100644 index 0000000..a061d3c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -0,0 +1,163 @@ +package com.casic.dcms.ui; + +import android.content.Intent; +import android.media.MediaPlayer; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { + + private static final String TAG = "CheckedDetailActivity"; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.caseHandleView) + TextView caseHandleView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; + + private MediaPlayer mediaPlayer; + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + public int initLayoutView() { + return R.layout.activity_case_checked_detail; + } + + @Override + protected void setupTopBarLayout() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mediaPlayer = new MediaPlayer(); + + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @OnClick(R.id.handleLayout) + @Override + public void onClick(View v) { + if (v.getId() == R.id.handleLayout) { + Intent intent = new Intent(this, CaseProcessActivity.class); + intent.putExtra("processId", data.getProcessId()); + startActivity(intent); + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { +// Log.d(TAG, "obtainCaseDetailData: "+new Gson().toJson(resultBean)); + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseHandleView.setText(data.getUrgeRemarks()); + caseSituationView.setText(data.getDescription()); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + List urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + urls.add(StringHelper.appendCompleteURL(s)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setVisibility(View.VISIBLE); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 1fd547e..77c7b01 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -3,17 +3,24 @@ import android.content.Intent; import android.util.Log; import android.view.View; -import android.widget.GridView; import android.widget.RelativeLayout; import android.widget.TextView; import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.util.ArrayList; @@ -45,11 +52,16 @@ @BindView(R.id.caseSituationView) TextView caseSituationView; @BindView(R.id.casePicGridView) - GridView casePicGridView; + RecyclerView casePicGridView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; + private CaseDetailPresenterImpl caseDetailPresenter; - private List dataBeans = new ArrayList<>(); + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private Gson gson; + private List urls = new ArrayList<>(); @Override public int initLayoutView() { @@ -73,6 +85,8 @@ String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); + + gson = new Gson(); } @Override @@ -84,23 +98,58 @@ public void obtainCaseDetailData(CaseDetailBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - this.dataBeans = resultBean.getData(); - CaseDetailBean.DataBean dataBean = resultBean.getData().get(0);//有且之后一个 - caseNumberView.setText(dataBean.getCaseid()); - caseStatusView.setText(dataBean.getCaseStateName()); - caseTypeView.setText(dataBean.getEorcName()); - caseLargeTypeView.setText(dataBean.getCasetypeName()); - caseSmallTypeView.setText(dataBean.getCasetypeDetailName()); - caseCommunityView.setText(dataBean.getCommunityName()); - casePlaceView.setText(dataBean.getFieldintro()); - caseSituationView.setText(dataBean.getDescription()); - int caseState = dataBean.getCaseState(); - if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { - handleRecordLayout.setVisibility(View.GONE); - } else { - handleRecordLayout.setVisibility(View.VISIBLE); + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseSituationView.setText(data.getDescription()); + List mediaList = gson.fromJson(data.getFileIdVerify(), new TypeToken>() { + }.getType()); + for (String media : mediaList) { + if (media.endsWith("jpeg") || media.endsWith("jpg") || media.endsWith("png")) { + if (media.startsWith("http")) { + urls.add(media); + } else { + urls.add(StringHelper.appendCompleteURL(media)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicGridView.setVisibility(View.VISIBLE); + casePicGridView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicGridView.addItemDecoration(new ItemDecorationSpace()); + casePicGridView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } } } + int caseState = data.getCaseState(); + if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { + handleRecordLayout.setVisibility(View.GONE); + } else { + handleRecordLayout.setVisibility(View.VISIBLE); + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); } @OnClick({R.id.caseAudioView, R.id.handleRecordLayout}) @@ -108,16 +157,14 @@ public void onClick(View v) { switch (v.getId()) { case R.id.caseAudioView: - if (dataBeans.size() > 0) { - String audioIdVerify = dataBeans.get(0).getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - } + String audioIdVerify = data.getAudioIdVerify(); + String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); + String[] split = fileIdVerify.split(","); + Log.d(TAG, Arrays.toString(split)); break; case R.id.handleRecordLayout: Intent intent = new Intent(this, CaseProcessActivity.class); - intent.putExtra("processId", dataBeans.get(0).getProcessId()); + intent.putExtra("processId", data.getProcessId()); startActivity(intent); break; } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index f365d3d..4dd5e6a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; @@ -58,6 +59,7 @@ private List dataBeans = new ArrayList<>(); private boolean isRefresh, isLoadMore = false; private WeakReferenceHandler weakReferenceHandler; + private QMUITipDialog searchDialog; @Override public int initLayoutView() { @@ -78,6 +80,10 @@ @Override public void initData() { + searchDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("查询中,请稍后") + .create(); caseListPresenter = new CaseListPresenterImpl(this); weakReferenceHandler = new WeakReferenceHandler(this); typeCode = getIntent().getStringExtra("typeCode"); @@ -156,6 +162,16 @@ } @Override + public void showProgress() { + searchDialog.show(); + } + + @Override + public void hideProgress() { + searchDialog.hide(); + } + + @Override public void obtainCaseListData(CaseListResultBean resultBean) { if (resultBean.isSuccess()) { List dataRows = resultBean.getData().getRows(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java index a5f4723..c12f41a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java @@ -21,14 +21,8 @@ import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import java.util.List; - import butterknife.BindView; -import static com.casic.dcms.utils.TimeLineDecoration.BEGIN; -import static com.casic.dcms.utils.TimeLineDecoration.END_FULL; -import static com.casic.dcms.utils.TimeLineDecoration.NORMAL; - public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { private static final String TAG = "CaseProcessActivity"; @@ -39,7 +33,6 @@ RecyclerView processRecyclerView; private CaseProcessPresenterImpl caseProcessPresenter; private QMUITipDialog loadingDialog; - private ProcessLineAdapter adapter; @Override public int initLayoutView() { @@ -64,7 +57,6 @@ .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) .setTipWord("获取记录中,请稍后") .create(); - adapter = new ProcessLineAdapter(this); } @Override @@ -83,19 +75,15 @@ public void obtainCaseProcessData(CaseProcessBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); + ProcessLineAdapter adapter = new ProcessLineAdapter(this, resultBean.getData()); processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); processRecyclerView.setHasFixedSize(true); processRecyclerView.setNestedScrollingEnabled(false); processRecyclerView.setItemAnimator(new DefaultItemAnimator()); TimeLineDecoration decoration = new TimeLineDecoration(this) - .setDividerHeight(1) - .setDividerColor(R.color.lightGray) - .setDividerPaddingLeft(QMUIDisplayHelper.dp2px(this, 10)) - .setDividerPaddingRight(QMUIDisplayHelper.dp2px(this, 10)) .setLineColor(R.color.colorPrimary) - .setLineWidth(QMUIDisplayHelper.dp2px(this, 1)) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 10)) + .setLineWidth(1) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) .setMarkerColor(R.color.colorAccent) .setMarkerRadius(10) .setBeginMarker(R.drawable.ic_warning) @@ -109,20 +97,19 @@ @Nullable @Override public Rect getRect(int position) { - //item之间的间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 40), QMUIDisplayHelper.dp2px(context, 10), + //item内间距 + return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 20), 0, 0); } @Override public int getTimeLineType(int position) { - if (position == 0) return BEGIN; - else if (position == adapter.getItemCount() - 1) return END_FULL; - else return NORMAL; + if (position == 0) return TimeLineDecoration.BEGIN; + else if (position == adapter.getItemCount() - 1) return TimeLineDecoration.END_FULL; + else return TimeLineDecoration.NORMAL; } }); processRecyclerView.addItemDecoration(decoration); - adapter.setList(dataBeans); processRecyclerView.setAdapter(adapter); } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f105e36..51e7255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:usesCleartextTraffic="true"> + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + { private Context mContext; - private List mList; + private List mProcessList; - public ProcessLineAdapter(Context context) { + public ProcessLineAdapter(Context context, List list) { mContext = context; + this.mProcessList = list; } - public void setList(List list) { - mList = list; - } - + @NotNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_case_process, parent, false); @@ -36,37 +35,35 @@ @Override public void onBindViewHolder(ViewHolder holder, int position) { - holder.bindData(mList.get(position)); + holder.bindData(mProcessList.get(position)); } @Override public int getItemCount() { - return mList.size(); + return mProcessList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - private TextView handlePersonTag; + private TextView operationTypeName; private TextView handlePersonView; - private TextView handleTimeTag; private TextView handleTimeView; - private TextView handleResultTag; private TextView handleResultView; private RelativeLayout handlePicLayout; - private GridView handlePicView; + private RecyclerView handlePicView; public ViewHolder(View view) { super(view); - handlePersonTag = view.findViewById(R.id.handlePersonTag); + operationTypeName = view.findViewById(R.id.operationTypeName); handlePersonView = view.findViewById(R.id.handlePersonView); - handleTimeTag = view.findViewById(R.id.handleTimeTag); handleTimeView = view.findViewById(R.id.handleTimeView); - handleResultTag = view.findViewById(R.id.handleResultTag); handleResultView = view.findViewById(R.id.handleResultView); handlePicLayout = view.findViewById(R.id.handlePicLayout); handlePicView = view.findViewById(R.id.handlePicView); } public void bindData(CaseProcessBean.DataBean dataBean) { + String typeName = dataBean.getOperationTypeName(); + operationTypeName.setText(typeName); handlePersonView.setText(dataBean.getUserName()); handleTimeView.setText(dataBean.getTime()); handleResultView.setText(dataBean.getRemarks()); diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index 8f24f23..9c323dd 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,6 +18,7 @@ @Override public void onReadyRetrofitRequest(String casetypeCode, String casetypeDetailCode, String caseStateId, String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { + view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(casetypeCode, casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, offset)); } @@ -29,11 +30,12 @@ @Override public void onSuccess(CaseListResultBean resultBean) { + view.hideProgress(); view.obtainCaseListData(resultBean); } @Override public void onFailure(Throwable throwable) { - + view.hideProgress(); } } diff --git a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java index 4d22718..60ec154 100644 --- a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java +++ b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java @@ -3,5 +3,9 @@ import com.casic.dcms.bean.CaseListResultBean; public interface ICaseListView { + void showProgress(); + + void hideProgress(); + void obtainCaseListData(CaseListResultBean resultBean); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java new file mode 100644 index 0000000..630670a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -0,0 +1,52 @@ +package com.casic.dcms.ui; + +import android.view.View; +import android.widget.ImageView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.utils.StatusBarColorUtil; +import com.gyf.immersionbar.ImmersionBar; + +import butterknife.BindView; + +public class CaseCheckDetailActivity extends BaseActivity implements View.OnClickListener { + + private static final String TAG = "CaseCheckDetailActivity"; + @BindView(R.id.leftBackView) + ImageView leftBackView; + + @Override + public int initLayoutView() { + return R.layout.activity_case_check_detail; + } + + @Override + protected void setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + leftBackView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + + } + + @Override + public void initEvent() { + + } + + @Override + public void onClick(View v) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java new file mode 100644 index 0000000..a061d3c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -0,0 +1,163 @@ +package com.casic.dcms.ui; + +import android.content.Intent; +import android.media.MediaPlayer; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { + + private static final String TAG = "CheckedDetailActivity"; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.caseHandleView) + TextView caseHandleView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; + + private MediaPlayer mediaPlayer; + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + public int initLayoutView() { + return R.layout.activity_case_checked_detail; + } + + @Override + protected void setupTopBarLayout() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mediaPlayer = new MediaPlayer(); + + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @OnClick(R.id.handleLayout) + @Override + public void onClick(View v) { + if (v.getId() == R.id.handleLayout) { + Intent intent = new Intent(this, CaseProcessActivity.class); + intent.putExtra("processId", data.getProcessId()); + startActivity(intent); + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { +// Log.d(TAG, "obtainCaseDetailData: "+new Gson().toJson(resultBean)); + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseHandleView.setText(data.getUrgeRemarks()); + caseSituationView.setText(data.getDescription()); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + List urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + urls.add(StringHelper.appendCompleteURL(s)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setVisibility(View.VISIBLE); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 1fd547e..77c7b01 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -3,17 +3,24 @@ import android.content.Intent; import android.util.Log; import android.view.View; -import android.widget.GridView; import android.widget.RelativeLayout; import android.widget.TextView; import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.util.ArrayList; @@ -45,11 +52,16 @@ @BindView(R.id.caseSituationView) TextView caseSituationView; @BindView(R.id.casePicGridView) - GridView casePicGridView; + RecyclerView casePicGridView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; + private CaseDetailPresenterImpl caseDetailPresenter; - private List dataBeans = new ArrayList<>(); + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private Gson gson; + private List urls = new ArrayList<>(); @Override public int initLayoutView() { @@ -73,6 +85,8 @@ String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); + + gson = new Gson(); } @Override @@ -84,23 +98,58 @@ public void obtainCaseDetailData(CaseDetailBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - this.dataBeans = resultBean.getData(); - CaseDetailBean.DataBean dataBean = resultBean.getData().get(0);//有且之后一个 - caseNumberView.setText(dataBean.getCaseid()); - caseStatusView.setText(dataBean.getCaseStateName()); - caseTypeView.setText(dataBean.getEorcName()); - caseLargeTypeView.setText(dataBean.getCasetypeName()); - caseSmallTypeView.setText(dataBean.getCasetypeDetailName()); - caseCommunityView.setText(dataBean.getCommunityName()); - casePlaceView.setText(dataBean.getFieldintro()); - caseSituationView.setText(dataBean.getDescription()); - int caseState = dataBean.getCaseState(); - if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { - handleRecordLayout.setVisibility(View.GONE); - } else { - handleRecordLayout.setVisibility(View.VISIBLE); + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseSituationView.setText(data.getDescription()); + List mediaList = gson.fromJson(data.getFileIdVerify(), new TypeToken>() { + }.getType()); + for (String media : mediaList) { + if (media.endsWith("jpeg") || media.endsWith("jpg") || media.endsWith("png")) { + if (media.startsWith("http")) { + urls.add(media); + } else { + urls.add(StringHelper.appendCompleteURL(media)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicGridView.setVisibility(View.VISIBLE); + casePicGridView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicGridView.addItemDecoration(new ItemDecorationSpace()); + casePicGridView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } } } + int caseState = data.getCaseState(); + if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { + handleRecordLayout.setVisibility(View.GONE); + } else { + handleRecordLayout.setVisibility(View.VISIBLE); + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); } @OnClick({R.id.caseAudioView, R.id.handleRecordLayout}) @@ -108,16 +157,14 @@ public void onClick(View v) { switch (v.getId()) { case R.id.caseAudioView: - if (dataBeans.size() > 0) { - String audioIdVerify = dataBeans.get(0).getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - } + String audioIdVerify = data.getAudioIdVerify(); + String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); + String[] split = fileIdVerify.split(","); + Log.d(TAG, Arrays.toString(split)); break; case R.id.handleRecordLayout: Intent intent = new Intent(this, CaseProcessActivity.class); - intent.putExtra("processId", dataBeans.get(0).getProcessId()); + intent.putExtra("processId", data.getProcessId()); startActivity(intent); break; } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index f365d3d..4dd5e6a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; @@ -58,6 +59,7 @@ private List dataBeans = new ArrayList<>(); private boolean isRefresh, isLoadMore = false; private WeakReferenceHandler weakReferenceHandler; + private QMUITipDialog searchDialog; @Override public int initLayoutView() { @@ -78,6 +80,10 @@ @Override public void initData() { + searchDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("查询中,请稍后") + .create(); caseListPresenter = new CaseListPresenterImpl(this); weakReferenceHandler = new WeakReferenceHandler(this); typeCode = getIntent().getStringExtra("typeCode"); @@ -156,6 +162,16 @@ } @Override + public void showProgress() { + searchDialog.show(); + } + + @Override + public void hideProgress() { + searchDialog.hide(); + } + + @Override public void obtainCaseListData(CaseListResultBean resultBean) { if (resultBean.isSuccess()) { List dataRows = resultBean.getData().getRows(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java index a5f4723..c12f41a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java @@ -21,14 +21,8 @@ import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import java.util.List; - import butterknife.BindView; -import static com.casic.dcms.utils.TimeLineDecoration.BEGIN; -import static com.casic.dcms.utils.TimeLineDecoration.END_FULL; -import static com.casic.dcms.utils.TimeLineDecoration.NORMAL; - public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { private static final String TAG = "CaseProcessActivity"; @@ -39,7 +33,6 @@ RecyclerView processRecyclerView; private CaseProcessPresenterImpl caseProcessPresenter; private QMUITipDialog loadingDialog; - private ProcessLineAdapter adapter; @Override public int initLayoutView() { @@ -64,7 +57,6 @@ .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) .setTipWord("获取记录中,请稍后") .create(); - adapter = new ProcessLineAdapter(this); } @Override @@ -83,19 +75,15 @@ public void obtainCaseProcessData(CaseProcessBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); + ProcessLineAdapter adapter = new ProcessLineAdapter(this, resultBean.getData()); processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); processRecyclerView.setHasFixedSize(true); processRecyclerView.setNestedScrollingEnabled(false); processRecyclerView.setItemAnimator(new DefaultItemAnimator()); TimeLineDecoration decoration = new TimeLineDecoration(this) - .setDividerHeight(1) - .setDividerColor(R.color.lightGray) - .setDividerPaddingLeft(QMUIDisplayHelper.dp2px(this, 10)) - .setDividerPaddingRight(QMUIDisplayHelper.dp2px(this, 10)) .setLineColor(R.color.colorPrimary) - .setLineWidth(QMUIDisplayHelper.dp2px(this, 1)) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 10)) + .setLineWidth(1) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) .setMarkerColor(R.color.colorAccent) .setMarkerRadius(10) .setBeginMarker(R.drawable.ic_warning) @@ -109,20 +97,19 @@ @Nullable @Override public Rect getRect(int position) { - //item之间的间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 40), QMUIDisplayHelper.dp2px(context, 10), + //item内间距 + return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 20), 0, 0); } @Override public int getTimeLineType(int position) { - if (position == 0) return BEGIN; - else if (position == adapter.getItemCount() - 1) return END_FULL; - else return NORMAL; + if (position == 0) return TimeLineDecoration.BEGIN; + else if (position == adapter.getItemCount() - 1) return TimeLineDecoration.END_FULL; + else return TimeLineDecoration.NORMAL; } }); processRecyclerView.addItemDecoration(decoration); - adapter.setList(dataBeans); processRecyclerView.setAdapter(adapter); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 452726c..14e360c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -5,10 +5,8 @@ import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.ImageView; import android.widget.TextView; -import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -22,13 +20,10 @@ import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; import com.casic.dcms.utils.ColorHelper; -import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.gyf.immersionbar.ImmersionBar; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.io.IOException; import java.util.ArrayList; @@ -40,9 +35,8 @@ public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - private static final String TAG = "VerifiedDetailActivity"; - @BindView(R.id.leftBackView) - ImageView leftBackView; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; @BindView(R.id.caseNumberView) TextView caseNumberView; @BindView(R.id.caseTypeView) @@ -85,9 +79,9 @@ @Override protected void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(new View.OnClickListener() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); @@ -111,7 +105,6 @@ @Override public void obtainCaseDetailData(CaseDetailBean resultBean) { -// Log.d(TAG, "obtainCaseDetailData: " + gson.toJson(resultBean)); if (resultBean.isSuccess()) { this.data = resultBean.getData().get(0); caseNumberView.setText(data.getCaseid()); @@ -220,43 +213,21 @@ @Override public void onClick(View v) { if (v.getId() == R.id.locationMapView) { - String type = caseTypeView.getText().toString(); - if (type.equals("请选择")) { - ToastHelper.showToast("请先选择案卷类型", ToastHelper.WARING); + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); return; } - int source = data.getSource(); - if (source == 11 || source == 12) { - Intent intent = new Intent(this, ArcGISMapActivity.class); - intent.putExtra("type", type); - startActivityForResult(intent, Constant.REQUEST_MAP_CODE); - } else { - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("lng", Double.parseDouble(data.getLng())); - intent.putExtra("lat", Double.parseDouble(data.getLat())); - startActivity(intent); + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; } - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - if (requestCode == Constant.REQUEST_MAP_CODE) { - if (data == null) { - return; - } - String community = data.getStringExtra("community"); - String casePlace = data.getStringExtra("pos"); - caseCommunityView.setText(community); - if (TextUtils.isEmpty(casePlace)) { - casePlaceView.setText(community); - } else { - casePlaceView.setText(casePlace); - } - SaveKeyValues.removeKey("CommunityName"); - } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f105e36..51e7255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:usesCleartextTraffic="true"> + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + { private Context mContext; - private List mList; + private List mProcessList; - public ProcessLineAdapter(Context context) { + public ProcessLineAdapter(Context context, List list) { mContext = context; + this.mProcessList = list; } - public void setList(List list) { - mList = list; - } - + @NotNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_case_process, parent, false); @@ -36,37 +35,35 @@ @Override public void onBindViewHolder(ViewHolder holder, int position) { - holder.bindData(mList.get(position)); + holder.bindData(mProcessList.get(position)); } @Override public int getItemCount() { - return mList.size(); + return mProcessList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - private TextView handlePersonTag; + private TextView operationTypeName; private TextView handlePersonView; - private TextView handleTimeTag; private TextView handleTimeView; - private TextView handleResultTag; private TextView handleResultView; private RelativeLayout handlePicLayout; - private GridView handlePicView; + private RecyclerView handlePicView; public ViewHolder(View view) { super(view); - handlePersonTag = view.findViewById(R.id.handlePersonTag); + operationTypeName = view.findViewById(R.id.operationTypeName); handlePersonView = view.findViewById(R.id.handlePersonView); - handleTimeTag = view.findViewById(R.id.handleTimeTag); handleTimeView = view.findViewById(R.id.handleTimeView); - handleResultTag = view.findViewById(R.id.handleResultTag); handleResultView = view.findViewById(R.id.handleResultView); handlePicLayout = view.findViewById(R.id.handlePicLayout); handlePicView = view.findViewById(R.id.handlePicView); } public void bindData(CaseProcessBean.DataBean dataBean) { + String typeName = dataBean.getOperationTypeName(); + operationTypeName.setText(typeName); handlePersonView.setText(dataBean.getUserName()); handleTimeView.setText(dataBean.getTime()); handleResultView.setText(dataBean.getRemarks()); diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index 8f24f23..9c323dd 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,6 +18,7 @@ @Override public void onReadyRetrofitRequest(String casetypeCode, String casetypeDetailCode, String caseStateId, String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { + view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(casetypeCode, casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, offset)); } @@ -29,11 +30,12 @@ @Override public void onSuccess(CaseListResultBean resultBean) { + view.hideProgress(); view.obtainCaseListData(resultBean); } @Override public void onFailure(Throwable throwable) { - + view.hideProgress(); } } diff --git a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java index 4d22718..60ec154 100644 --- a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java +++ b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java @@ -3,5 +3,9 @@ import com.casic.dcms.bean.CaseListResultBean; public interface ICaseListView { + void showProgress(); + + void hideProgress(); + void obtainCaseListData(CaseListResultBean resultBean); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java new file mode 100644 index 0000000..630670a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -0,0 +1,52 @@ +package com.casic.dcms.ui; + +import android.view.View; +import android.widget.ImageView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.utils.StatusBarColorUtil; +import com.gyf.immersionbar.ImmersionBar; + +import butterknife.BindView; + +public class CaseCheckDetailActivity extends BaseActivity implements View.OnClickListener { + + private static final String TAG = "CaseCheckDetailActivity"; + @BindView(R.id.leftBackView) + ImageView leftBackView; + + @Override + public int initLayoutView() { + return R.layout.activity_case_check_detail; + } + + @Override + protected void setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + leftBackView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + + } + + @Override + public void initEvent() { + + } + + @Override + public void onClick(View v) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java new file mode 100644 index 0000000..a061d3c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -0,0 +1,163 @@ +package com.casic.dcms.ui; + +import android.content.Intent; +import android.media.MediaPlayer; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { + + private static final String TAG = "CheckedDetailActivity"; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.caseHandleView) + TextView caseHandleView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; + + private MediaPlayer mediaPlayer; + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + public int initLayoutView() { + return R.layout.activity_case_checked_detail; + } + + @Override + protected void setupTopBarLayout() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mediaPlayer = new MediaPlayer(); + + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @OnClick(R.id.handleLayout) + @Override + public void onClick(View v) { + if (v.getId() == R.id.handleLayout) { + Intent intent = new Intent(this, CaseProcessActivity.class); + intent.putExtra("processId", data.getProcessId()); + startActivity(intent); + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { +// Log.d(TAG, "obtainCaseDetailData: "+new Gson().toJson(resultBean)); + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseHandleView.setText(data.getUrgeRemarks()); + caseSituationView.setText(data.getDescription()); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + List urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + urls.add(StringHelper.appendCompleteURL(s)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setVisibility(View.VISIBLE); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 1fd547e..77c7b01 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -3,17 +3,24 @@ import android.content.Intent; import android.util.Log; import android.view.View; -import android.widget.GridView; import android.widget.RelativeLayout; import android.widget.TextView; import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.util.ArrayList; @@ -45,11 +52,16 @@ @BindView(R.id.caseSituationView) TextView caseSituationView; @BindView(R.id.casePicGridView) - GridView casePicGridView; + RecyclerView casePicGridView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; + private CaseDetailPresenterImpl caseDetailPresenter; - private List dataBeans = new ArrayList<>(); + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private Gson gson; + private List urls = new ArrayList<>(); @Override public int initLayoutView() { @@ -73,6 +85,8 @@ String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); + + gson = new Gson(); } @Override @@ -84,23 +98,58 @@ public void obtainCaseDetailData(CaseDetailBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - this.dataBeans = resultBean.getData(); - CaseDetailBean.DataBean dataBean = resultBean.getData().get(0);//有且之后一个 - caseNumberView.setText(dataBean.getCaseid()); - caseStatusView.setText(dataBean.getCaseStateName()); - caseTypeView.setText(dataBean.getEorcName()); - caseLargeTypeView.setText(dataBean.getCasetypeName()); - caseSmallTypeView.setText(dataBean.getCasetypeDetailName()); - caseCommunityView.setText(dataBean.getCommunityName()); - casePlaceView.setText(dataBean.getFieldintro()); - caseSituationView.setText(dataBean.getDescription()); - int caseState = dataBean.getCaseState(); - if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { - handleRecordLayout.setVisibility(View.GONE); - } else { - handleRecordLayout.setVisibility(View.VISIBLE); + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseSituationView.setText(data.getDescription()); + List mediaList = gson.fromJson(data.getFileIdVerify(), new TypeToken>() { + }.getType()); + for (String media : mediaList) { + if (media.endsWith("jpeg") || media.endsWith("jpg") || media.endsWith("png")) { + if (media.startsWith("http")) { + urls.add(media); + } else { + urls.add(StringHelper.appendCompleteURL(media)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicGridView.setVisibility(View.VISIBLE); + casePicGridView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicGridView.addItemDecoration(new ItemDecorationSpace()); + casePicGridView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } } } + int caseState = data.getCaseState(); + if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { + handleRecordLayout.setVisibility(View.GONE); + } else { + handleRecordLayout.setVisibility(View.VISIBLE); + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); } @OnClick({R.id.caseAudioView, R.id.handleRecordLayout}) @@ -108,16 +157,14 @@ public void onClick(View v) { switch (v.getId()) { case R.id.caseAudioView: - if (dataBeans.size() > 0) { - String audioIdVerify = dataBeans.get(0).getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - } + String audioIdVerify = data.getAudioIdVerify(); + String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); + String[] split = fileIdVerify.split(","); + Log.d(TAG, Arrays.toString(split)); break; case R.id.handleRecordLayout: Intent intent = new Intent(this, CaseProcessActivity.class); - intent.putExtra("processId", dataBeans.get(0).getProcessId()); + intent.putExtra("processId", data.getProcessId()); startActivity(intent); break; } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index f365d3d..4dd5e6a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; @@ -58,6 +59,7 @@ private List dataBeans = new ArrayList<>(); private boolean isRefresh, isLoadMore = false; private WeakReferenceHandler weakReferenceHandler; + private QMUITipDialog searchDialog; @Override public int initLayoutView() { @@ -78,6 +80,10 @@ @Override public void initData() { + searchDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("查询中,请稍后") + .create(); caseListPresenter = new CaseListPresenterImpl(this); weakReferenceHandler = new WeakReferenceHandler(this); typeCode = getIntent().getStringExtra("typeCode"); @@ -156,6 +162,16 @@ } @Override + public void showProgress() { + searchDialog.show(); + } + + @Override + public void hideProgress() { + searchDialog.hide(); + } + + @Override public void obtainCaseListData(CaseListResultBean resultBean) { if (resultBean.isSuccess()) { List dataRows = resultBean.getData().getRows(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java index a5f4723..c12f41a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java @@ -21,14 +21,8 @@ import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import java.util.List; - import butterknife.BindView; -import static com.casic.dcms.utils.TimeLineDecoration.BEGIN; -import static com.casic.dcms.utils.TimeLineDecoration.END_FULL; -import static com.casic.dcms.utils.TimeLineDecoration.NORMAL; - public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { private static final String TAG = "CaseProcessActivity"; @@ -39,7 +33,6 @@ RecyclerView processRecyclerView; private CaseProcessPresenterImpl caseProcessPresenter; private QMUITipDialog loadingDialog; - private ProcessLineAdapter adapter; @Override public int initLayoutView() { @@ -64,7 +57,6 @@ .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) .setTipWord("获取记录中,请稍后") .create(); - adapter = new ProcessLineAdapter(this); } @Override @@ -83,19 +75,15 @@ public void obtainCaseProcessData(CaseProcessBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); + ProcessLineAdapter adapter = new ProcessLineAdapter(this, resultBean.getData()); processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); processRecyclerView.setHasFixedSize(true); processRecyclerView.setNestedScrollingEnabled(false); processRecyclerView.setItemAnimator(new DefaultItemAnimator()); TimeLineDecoration decoration = new TimeLineDecoration(this) - .setDividerHeight(1) - .setDividerColor(R.color.lightGray) - .setDividerPaddingLeft(QMUIDisplayHelper.dp2px(this, 10)) - .setDividerPaddingRight(QMUIDisplayHelper.dp2px(this, 10)) .setLineColor(R.color.colorPrimary) - .setLineWidth(QMUIDisplayHelper.dp2px(this, 1)) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 10)) + .setLineWidth(1) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) .setMarkerColor(R.color.colorAccent) .setMarkerRadius(10) .setBeginMarker(R.drawable.ic_warning) @@ -109,20 +97,19 @@ @Nullable @Override public Rect getRect(int position) { - //item之间的间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 40), QMUIDisplayHelper.dp2px(context, 10), + //item内间距 + return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 20), 0, 0); } @Override public int getTimeLineType(int position) { - if (position == 0) return BEGIN; - else if (position == adapter.getItemCount() - 1) return END_FULL; - else return NORMAL; + if (position == 0) return TimeLineDecoration.BEGIN; + else if (position == adapter.getItemCount() - 1) return TimeLineDecoration.END_FULL; + else return TimeLineDecoration.NORMAL; } }); processRecyclerView.addItemDecoration(decoration); - adapter.setList(dataBeans); processRecyclerView.setAdapter(adapter); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 452726c..14e360c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -5,10 +5,8 @@ import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.ImageView; import android.widget.TextView; -import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -22,13 +20,10 @@ import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; import com.casic.dcms.utils.ColorHelper; -import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.gyf.immersionbar.ImmersionBar; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.io.IOException; import java.util.ArrayList; @@ -40,9 +35,8 @@ public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - private static final String TAG = "VerifiedDetailActivity"; - @BindView(R.id.leftBackView) - ImageView leftBackView; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; @BindView(R.id.caseNumberView) TextView caseNumberView; @BindView(R.id.caseTypeView) @@ -85,9 +79,9 @@ @Override protected void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(new View.OnClickListener() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); @@ -111,7 +105,6 @@ @Override public void obtainCaseDetailData(CaseDetailBean resultBean) { -// Log.d(TAG, "obtainCaseDetailData: " + gson.toJson(resultBean)); if (resultBean.isSuccess()) { this.data = resultBean.getData().get(0); caseNumberView.setText(data.getCaseid()); @@ -220,43 +213,21 @@ @Override public void onClick(View v) { if (v.getId() == R.id.locationMapView) { - String type = caseTypeView.getText().toString(); - if (type.equals("请选择")) { - ToastHelper.showToast("请先选择案卷类型", ToastHelper.WARING); + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); return; } - int source = data.getSource(); - if (source == 11 || source == 12) { - Intent intent = new Intent(this, ArcGISMapActivity.class); - intent.putExtra("type", type); - startActivityForResult(intent, Constant.REQUEST_MAP_CODE); - } else { - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("lng", Double.parseDouble(data.getLng())); - intent.putExtra("lat", Double.parseDouble(data.getLat())); - startActivity(intent); + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; } - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - if (requestCode == Constant.REQUEST_MAP_CODE) { - if (data == null) { - return; - } - String community = data.getStringExtra("community"); - String casePlace = data.getStringExtra("pos"); - caseCommunityView.setText(community); - if (TextUtils.isEmpty(casePlace)) { - casePlaceView.setText(community); - } else { - casePlaceView.setText(casePlace); - } - SaveKeyValues.removeKey("CommunityName"); - } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 8203d37..d824e9b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -47,7 +47,6 @@ import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.google.gson.Gson; import com.gyf.immersionbar.ImmersionBar; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; @@ -132,7 +131,6 @@ RelativeLayout caseSmallClassLayout; private CaseDetailPresenterImpl caseDetailPresenter; - private Gson gson; private CaseLargeClassPresenterImpl caseLargeClassPresenter; private List largeClassBeans; private CaseSmallClassPresenterImpl caseSmallClassPresenter; @@ -172,7 +170,6 @@ @Override public void initData() { - gson = new Gson(); mediaPlayer = new MediaPlayer(); largeClassBeans = new ArrayList<>(); smallClassBeans = new ArrayList<>(); diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f105e36..51e7255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:usesCleartextTraffic="true"> + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + { private Context mContext; - private List mList; + private List mProcessList; - public ProcessLineAdapter(Context context) { + public ProcessLineAdapter(Context context, List list) { mContext = context; + this.mProcessList = list; } - public void setList(List list) { - mList = list; - } - + @NotNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_case_process, parent, false); @@ -36,37 +35,35 @@ @Override public void onBindViewHolder(ViewHolder holder, int position) { - holder.bindData(mList.get(position)); + holder.bindData(mProcessList.get(position)); } @Override public int getItemCount() { - return mList.size(); + return mProcessList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - private TextView handlePersonTag; + private TextView operationTypeName; private TextView handlePersonView; - private TextView handleTimeTag; private TextView handleTimeView; - private TextView handleResultTag; private TextView handleResultView; private RelativeLayout handlePicLayout; - private GridView handlePicView; + private RecyclerView handlePicView; public ViewHolder(View view) { super(view); - handlePersonTag = view.findViewById(R.id.handlePersonTag); + operationTypeName = view.findViewById(R.id.operationTypeName); handlePersonView = view.findViewById(R.id.handlePersonView); - handleTimeTag = view.findViewById(R.id.handleTimeTag); handleTimeView = view.findViewById(R.id.handleTimeView); - handleResultTag = view.findViewById(R.id.handleResultTag); handleResultView = view.findViewById(R.id.handleResultView); handlePicLayout = view.findViewById(R.id.handlePicLayout); handlePicView = view.findViewById(R.id.handlePicView); } public void bindData(CaseProcessBean.DataBean dataBean) { + String typeName = dataBean.getOperationTypeName(); + operationTypeName.setText(typeName); handlePersonView.setText(dataBean.getUserName()); handleTimeView.setText(dataBean.getTime()); handleResultView.setText(dataBean.getRemarks()); diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index 8f24f23..9c323dd 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,6 +18,7 @@ @Override public void onReadyRetrofitRequest(String casetypeCode, String casetypeDetailCode, String caseStateId, String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { + view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(casetypeCode, casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, offset)); } @@ -29,11 +30,12 @@ @Override public void onSuccess(CaseListResultBean resultBean) { + view.hideProgress(); view.obtainCaseListData(resultBean); } @Override public void onFailure(Throwable throwable) { - + view.hideProgress(); } } diff --git a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java index 4d22718..60ec154 100644 --- a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java +++ b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java @@ -3,5 +3,9 @@ import com.casic.dcms.bean.CaseListResultBean; public interface ICaseListView { + void showProgress(); + + void hideProgress(); + void obtainCaseListData(CaseListResultBean resultBean); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java new file mode 100644 index 0000000..630670a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -0,0 +1,52 @@ +package com.casic.dcms.ui; + +import android.view.View; +import android.widget.ImageView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.utils.StatusBarColorUtil; +import com.gyf.immersionbar.ImmersionBar; + +import butterknife.BindView; + +public class CaseCheckDetailActivity extends BaseActivity implements View.OnClickListener { + + private static final String TAG = "CaseCheckDetailActivity"; + @BindView(R.id.leftBackView) + ImageView leftBackView; + + @Override + public int initLayoutView() { + return R.layout.activity_case_check_detail; + } + + @Override + protected void setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + leftBackView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + + } + + @Override + public void initEvent() { + + } + + @Override + public void onClick(View v) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java new file mode 100644 index 0000000..a061d3c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -0,0 +1,163 @@ +package com.casic.dcms.ui; + +import android.content.Intent; +import android.media.MediaPlayer; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { + + private static final String TAG = "CheckedDetailActivity"; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.caseHandleView) + TextView caseHandleView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; + + private MediaPlayer mediaPlayer; + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + public int initLayoutView() { + return R.layout.activity_case_checked_detail; + } + + @Override + protected void setupTopBarLayout() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mediaPlayer = new MediaPlayer(); + + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @OnClick(R.id.handleLayout) + @Override + public void onClick(View v) { + if (v.getId() == R.id.handleLayout) { + Intent intent = new Intent(this, CaseProcessActivity.class); + intent.putExtra("processId", data.getProcessId()); + startActivity(intent); + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { +// Log.d(TAG, "obtainCaseDetailData: "+new Gson().toJson(resultBean)); + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseHandleView.setText(data.getUrgeRemarks()); + caseSituationView.setText(data.getDescription()); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + List urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + urls.add(StringHelper.appendCompleteURL(s)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setVisibility(View.VISIBLE); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 1fd547e..77c7b01 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -3,17 +3,24 @@ import android.content.Intent; import android.util.Log; import android.view.View; -import android.widget.GridView; import android.widget.RelativeLayout; import android.widget.TextView; import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.util.ArrayList; @@ -45,11 +52,16 @@ @BindView(R.id.caseSituationView) TextView caseSituationView; @BindView(R.id.casePicGridView) - GridView casePicGridView; + RecyclerView casePicGridView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; + private CaseDetailPresenterImpl caseDetailPresenter; - private List dataBeans = new ArrayList<>(); + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private Gson gson; + private List urls = new ArrayList<>(); @Override public int initLayoutView() { @@ -73,6 +85,8 @@ String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); + + gson = new Gson(); } @Override @@ -84,23 +98,58 @@ public void obtainCaseDetailData(CaseDetailBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - this.dataBeans = resultBean.getData(); - CaseDetailBean.DataBean dataBean = resultBean.getData().get(0);//有且之后一个 - caseNumberView.setText(dataBean.getCaseid()); - caseStatusView.setText(dataBean.getCaseStateName()); - caseTypeView.setText(dataBean.getEorcName()); - caseLargeTypeView.setText(dataBean.getCasetypeName()); - caseSmallTypeView.setText(dataBean.getCasetypeDetailName()); - caseCommunityView.setText(dataBean.getCommunityName()); - casePlaceView.setText(dataBean.getFieldintro()); - caseSituationView.setText(dataBean.getDescription()); - int caseState = dataBean.getCaseState(); - if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { - handleRecordLayout.setVisibility(View.GONE); - } else { - handleRecordLayout.setVisibility(View.VISIBLE); + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseSituationView.setText(data.getDescription()); + List mediaList = gson.fromJson(data.getFileIdVerify(), new TypeToken>() { + }.getType()); + for (String media : mediaList) { + if (media.endsWith("jpeg") || media.endsWith("jpg") || media.endsWith("png")) { + if (media.startsWith("http")) { + urls.add(media); + } else { + urls.add(StringHelper.appendCompleteURL(media)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicGridView.setVisibility(View.VISIBLE); + casePicGridView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicGridView.addItemDecoration(new ItemDecorationSpace()); + casePicGridView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } } } + int caseState = data.getCaseState(); + if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { + handleRecordLayout.setVisibility(View.GONE); + } else { + handleRecordLayout.setVisibility(View.VISIBLE); + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); } @OnClick({R.id.caseAudioView, R.id.handleRecordLayout}) @@ -108,16 +157,14 @@ public void onClick(View v) { switch (v.getId()) { case R.id.caseAudioView: - if (dataBeans.size() > 0) { - String audioIdVerify = dataBeans.get(0).getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - } + String audioIdVerify = data.getAudioIdVerify(); + String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); + String[] split = fileIdVerify.split(","); + Log.d(TAG, Arrays.toString(split)); break; case R.id.handleRecordLayout: Intent intent = new Intent(this, CaseProcessActivity.class); - intent.putExtra("processId", dataBeans.get(0).getProcessId()); + intent.putExtra("processId", data.getProcessId()); startActivity(intent); break; } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index f365d3d..4dd5e6a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; @@ -58,6 +59,7 @@ private List dataBeans = new ArrayList<>(); private boolean isRefresh, isLoadMore = false; private WeakReferenceHandler weakReferenceHandler; + private QMUITipDialog searchDialog; @Override public int initLayoutView() { @@ -78,6 +80,10 @@ @Override public void initData() { + searchDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("查询中,请稍后") + .create(); caseListPresenter = new CaseListPresenterImpl(this); weakReferenceHandler = new WeakReferenceHandler(this); typeCode = getIntent().getStringExtra("typeCode"); @@ -156,6 +162,16 @@ } @Override + public void showProgress() { + searchDialog.show(); + } + + @Override + public void hideProgress() { + searchDialog.hide(); + } + + @Override public void obtainCaseListData(CaseListResultBean resultBean) { if (resultBean.isSuccess()) { List dataRows = resultBean.getData().getRows(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java index a5f4723..c12f41a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java @@ -21,14 +21,8 @@ import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import java.util.List; - import butterknife.BindView; -import static com.casic.dcms.utils.TimeLineDecoration.BEGIN; -import static com.casic.dcms.utils.TimeLineDecoration.END_FULL; -import static com.casic.dcms.utils.TimeLineDecoration.NORMAL; - public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { private static final String TAG = "CaseProcessActivity"; @@ -39,7 +33,6 @@ RecyclerView processRecyclerView; private CaseProcessPresenterImpl caseProcessPresenter; private QMUITipDialog loadingDialog; - private ProcessLineAdapter adapter; @Override public int initLayoutView() { @@ -64,7 +57,6 @@ .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) .setTipWord("获取记录中,请稍后") .create(); - adapter = new ProcessLineAdapter(this); } @Override @@ -83,19 +75,15 @@ public void obtainCaseProcessData(CaseProcessBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); + ProcessLineAdapter adapter = new ProcessLineAdapter(this, resultBean.getData()); processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); processRecyclerView.setHasFixedSize(true); processRecyclerView.setNestedScrollingEnabled(false); processRecyclerView.setItemAnimator(new DefaultItemAnimator()); TimeLineDecoration decoration = new TimeLineDecoration(this) - .setDividerHeight(1) - .setDividerColor(R.color.lightGray) - .setDividerPaddingLeft(QMUIDisplayHelper.dp2px(this, 10)) - .setDividerPaddingRight(QMUIDisplayHelper.dp2px(this, 10)) .setLineColor(R.color.colorPrimary) - .setLineWidth(QMUIDisplayHelper.dp2px(this, 1)) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 10)) + .setLineWidth(1) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) .setMarkerColor(R.color.colorAccent) .setMarkerRadius(10) .setBeginMarker(R.drawable.ic_warning) @@ -109,20 +97,19 @@ @Nullable @Override public Rect getRect(int position) { - //item之间的间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 40), QMUIDisplayHelper.dp2px(context, 10), + //item内间距 + return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 20), 0, 0); } @Override public int getTimeLineType(int position) { - if (position == 0) return BEGIN; - else if (position == adapter.getItemCount() - 1) return END_FULL; - else return NORMAL; + if (position == 0) return TimeLineDecoration.BEGIN; + else if (position == adapter.getItemCount() - 1) return TimeLineDecoration.END_FULL; + else return TimeLineDecoration.NORMAL; } }); processRecyclerView.addItemDecoration(decoration); - adapter.setList(dataBeans); processRecyclerView.setAdapter(adapter); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 452726c..14e360c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -5,10 +5,8 @@ import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.ImageView; import android.widget.TextView; -import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -22,13 +20,10 @@ import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; import com.casic.dcms.utils.ColorHelper; -import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.gyf.immersionbar.ImmersionBar; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.io.IOException; import java.util.ArrayList; @@ -40,9 +35,8 @@ public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - private static final String TAG = "VerifiedDetailActivity"; - @BindView(R.id.leftBackView) - ImageView leftBackView; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; @BindView(R.id.caseNumberView) TextView caseNumberView; @BindView(R.id.caseTypeView) @@ -85,9 +79,9 @@ @Override protected void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(new View.OnClickListener() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); @@ -111,7 +105,6 @@ @Override public void obtainCaseDetailData(CaseDetailBean resultBean) { -// Log.d(TAG, "obtainCaseDetailData: " + gson.toJson(resultBean)); if (resultBean.isSuccess()) { this.data = resultBean.getData().get(0); caseNumberView.setText(data.getCaseid()); @@ -220,43 +213,21 @@ @Override public void onClick(View v) { if (v.getId() == R.id.locationMapView) { - String type = caseTypeView.getText().toString(); - if (type.equals("请选择")) { - ToastHelper.showToast("请先选择案卷类型", ToastHelper.WARING); + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); return; } - int source = data.getSource(); - if (source == 11 || source == 12) { - Intent intent = new Intent(this, ArcGISMapActivity.class); - intent.putExtra("type", type); - startActivityForResult(intent, Constant.REQUEST_MAP_CODE); - } else { - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("lng", Double.parseDouble(data.getLng())); - intent.putExtra("lat", Double.parseDouble(data.getLat())); - startActivity(intent); + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; } - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - if (requestCode == Constant.REQUEST_MAP_CODE) { - if (data == null) { - return; - } - String community = data.getStringExtra("community"); - String casePlace = data.getStringExtra("pos"); - caseCommunityView.setText(community); - if (TextUtils.isEmpty(casePlace)) { - casePlaceView.setText(community); - } else { - casePlaceView.setText(casePlace); - } - SaveKeyValues.removeKey("CommunityName"); - } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 8203d37..d824e9b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -47,7 +47,6 @@ import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.google.gson.Gson; import com.gyf.immersionbar.ImmersionBar; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; @@ -132,7 +131,6 @@ RelativeLayout caseSmallClassLayout; private CaseDetailPresenterImpl caseDetailPresenter; - private Gson gson; private CaseLargeClassPresenterImpl caseLargeClassPresenter; private List largeClassBeans; private CaseSmallClassPresenterImpl caseSmallClassPresenter; @@ -172,7 +170,6 @@ @Override public void initData() { - gson = new Gson(); mediaPlayer = new MediaPlayer(); largeClassBeans = new ArrayList<>(); smallClassBeans = new ArrayList<>(); diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index 820510b..2b72d2c 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -13,7 +13,6 @@ import com.casic.dcms.utils.callback.ILocationListener; import com.esri.arcgisruntime.data.ServiceFeatureTable; import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReferences; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; import com.esri.arcgisruntime.layers.FeatureLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -39,6 +38,8 @@ @BindView(R.id.mapView) MapView mapView; + private double lng, lat; + @Override public int initLayoutView() { return R.layout.activity_gis; @@ -46,7 +47,7 @@ @Override protected void setupTopBarLayout() { - gisTopLayout.setTitle("查看地图").setTextColor(ContextCompat.getColor(this, R.color.white)); + gisTopLayout.setTitle("查看案卷位置").setTextColor(ContextCompat.getColor(this, R.color.white)); gisTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); gisTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { @Override @@ -58,8 +59,10 @@ @Override public void initData() { - double lng = getIntent().getDoubleExtra("lng", 0); - double lat = getIntent().getDoubleExtra("lat", 0); + String caseType = getIntent().getStringExtra("caseType"); + lng = getIntent().getDoubleExtra("lng", 0); + lat = getIntent().getDoubleExtra("lat", 0); +// Log.d(TAG, "[" + lng + "," + lat + "]"); mapView.setAttributionTextVisible(false);//去掉左下角属性标识 mapView.setViewpointScaleAsync(500);//数字越大,放大比例越小 @@ -76,27 +79,46 @@ ServiceFeatureTable communityFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/4"); communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - - //单元网格 (ID: 6) - ServiceFeatureTable unitFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/6"); - unitFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer unitLayer = new FeatureLayer(unitFeatureTable); - - //部件点图层 (ID: 0) - ServiceFeatureTable pointFeatureTable = new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL + "/0"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, unitLayer, pointLayer)); - - //移到案卷定位点 - addMarker(new Point(lng, lat, SpatialReferences.getWgs84())); - + assert caseType != null; + switch (caseType) { + case "事件": + //单元网格 (ID: 6) + ServiceFeatureTable unitFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/6"); + unitFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); + FeatureLayer unitLayer = new FeatureLayer(unitFeatureTable); + arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, unitLayer)); + break; + case "部件": + //部件点图层 (ID: 0) + ServiceFeatureTable pointFeatureTable = new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL + "/0"); + pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); + FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); + arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); + break; + } mapView.setMap(arcGISMap); + mapView.setViewpointCenterAsync(new Point(lng, lat)); } +// @SuppressLint("ClickableViewAccessibility") @Override public void initEvent() { - +// mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { +// @Override +// public boolean onSingleTapConfirmed(MotionEvent e) { +// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); +// Point clickPoint = mapView.screenToLocation(screenPoint); +// Log.d(TAG, "clickPoint: " + clickPoint); +// //[116.591999, 28.241346, 0.000000, NaN] SR: 4326 +// +// Point point = new Point(lng, lat, SpatialReference.create(4326)); +// Log.d(TAG, "point: " + point); +// //[116.650769, 28.216684, 0.000000, NaN] SR: 4326 +// +// addMarker(clickPoint); +// return super.onSingleTapConfirmed(e); +// } +// }); } /** diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f105e36..51e7255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:usesCleartextTraffic="true"> + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + { private Context mContext; - private List mList; + private List mProcessList; - public ProcessLineAdapter(Context context) { + public ProcessLineAdapter(Context context, List list) { mContext = context; + this.mProcessList = list; } - public void setList(List list) { - mList = list; - } - + @NotNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_case_process, parent, false); @@ -36,37 +35,35 @@ @Override public void onBindViewHolder(ViewHolder holder, int position) { - holder.bindData(mList.get(position)); + holder.bindData(mProcessList.get(position)); } @Override public int getItemCount() { - return mList.size(); + return mProcessList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - private TextView handlePersonTag; + private TextView operationTypeName; private TextView handlePersonView; - private TextView handleTimeTag; private TextView handleTimeView; - private TextView handleResultTag; private TextView handleResultView; private RelativeLayout handlePicLayout; - private GridView handlePicView; + private RecyclerView handlePicView; public ViewHolder(View view) { super(view); - handlePersonTag = view.findViewById(R.id.handlePersonTag); + operationTypeName = view.findViewById(R.id.operationTypeName); handlePersonView = view.findViewById(R.id.handlePersonView); - handleTimeTag = view.findViewById(R.id.handleTimeTag); handleTimeView = view.findViewById(R.id.handleTimeView); - handleResultTag = view.findViewById(R.id.handleResultTag); handleResultView = view.findViewById(R.id.handleResultView); handlePicLayout = view.findViewById(R.id.handlePicLayout); handlePicView = view.findViewById(R.id.handlePicView); } public void bindData(CaseProcessBean.DataBean dataBean) { + String typeName = dataBean.getOperationTypeName(); + operationTypeName.setText(typeName); handlePersonView.setText(dataBean.getUserName()); handleTimeView.setText(dataBean.getTime()); handleResultView.setText(dataBean.getRemarks()); diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index 8f24f23..9c323dd 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,6 +18,7 @@ @Override public void onReadyRetrofitRequest(String casetypeCode, String casetypeDetailCode, String caseStateId, String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { + view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(casetypeCode, casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, offset)); } @@ -29,11 +30,12 @@ @Override public void onSuccess(CaseListResultBean resultBean) { + view.hideProgress(); view.obtainCaseListData(resultBean); } @Override public void onFailure(Throwable throwable) { - + view.hideProgress(); } } diff --git a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java index 4d22718..60ec154 100644 --- a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java +++ b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java @@ -3,5 +3,9 @@ import com.casic.dcms.bean.CaseListResultBean; public interface ICaseListView { + void showProgress(); + + void hideProgress(); + void obtainCaseListData(CaseListResultBean resultBean); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java new file mode 100644 index 0000000..630670a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -0,0 +1,52 @@ +package com.casic.dcms.ui; + +import android.view.View; +import android.widget.ImageView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.utils.StatusBarColorUtil; +import com.gyf.immersionbar.ImmersionBar; + +import butterknife.BindView; + +public class CaseCheckDetailActivity extends BaseActivity implements View.OnClickListener { + + private static final String TAG = "CaseCheckDetailActivity"; + @BindView(R.id.leftBackView) + ImageView leftBackView; + + @Override + public int initLayoutView() { + return R.layout.activity_case_check_detail; + } + + @Override + protected void setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + leftBackView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + + } + + @Override + public void initEvent() { + + } + + @Override + public void onClick(View v) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java new file mode 100644 index 0000000..a061d3c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -0,0 +1,163 @@ +package com.casic.dcms.ui; + +import android.content.Intent; +import android.media.MediaPlayer; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { + + private static final String TAG = "CheckedDetailActivity"; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.caseHandleView) + TextView caseHandleView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; + + private MediaPlayer mediaPlayer; + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + public int initLayoutView() { + return R.layout.activity_case_checked_detail; + } + + @Override + protected void setupTopBarLayout() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mediaPlayer = new MediaPlayer(); + + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @OnClick(R.id.handleLayout) + @Override + public void onClick(View v) { + if (v.getId() == R.id.handleLayout) { + Intent intent = new Intent(this, CaseProcessActivity.class); + intent.putExtra("processId", data.getProcessId()); + startActivity(intent); + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { +// Log.d(TAG, "obtainCaseDetailData: "+new Gson().toJson(resultBean)); + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseHandleView.setText(data.getUrgeRemarks()); + caseSituationView.setText(data.getDescription()); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + List urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + urls.add(StringHelper.appendCompleteURL(s)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setVisibility(View.VISIBLE); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 1fd547e..77c7b01 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -3,17 +3,24 @@ import android.content.Intent; import android.util.Log; import android.view.View; -import android.widget.GridView; import android.widget.RelativeLayout; import android.widget.TextView; import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.util.ArrayList; @@ -45,11 +52,16 @@ @BindView(R.id.caseSituationView) TextView caseSituationView; @BindView(R.id.casePicGridView) - GridView casePicGridView; + RecyclerView casePicGridView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; + private CaseDetailPresenterImpl caseDetailPresenter; - private List dataBeans = new ArrayList<>(); + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private Gson gson; + private List urls = new ArrayList<>(); @Override public int initLayoutView() { @@ -73,6 +85,8 @@ String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); + + gson = new Gson(); } @Override @@ -84,23 +98,58 @@ public void obtainCaseDetailData(CaseDetailBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - this.dataBeans = resultBean.getData(); - CaseDetailBean.DataBean dataBean = resultBean.getData().get(0);//有且之后一个 - caseNumberView.setText(dataBean.getCaseid()); - caseStatusView.setText(dataBean.getCaseStateName()); - caseTypeView.setText(dataBean.getEorcName()); - caseLargeTypeView.setText(dataBean.getCasetypeName()); - caseSmallTypeView.setText(dataBean.getCasetypeDetailName()); - caseCommunityView.setText(dataBean.getCommunityName()); - casePlaceView.setText(dataBean.getFieldintro()); - caseSituationView.setText(dataBean.getDescription()); - int caseState = dataBean.getCaseState(); - if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { - handleRecordLayout.setVisibility(View.GONE); - } else { - handleRecordLayout.setVisibility(View.VISIBLE); + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseSituationView.setText(data.getDescription()); + List mediaList = gson.fromJson(data.getFileIdVerify(), new TypeToken>() { + }.getType()); + for (String media : mediaList) { + if (media.endsWith("jpeg") || media.endsWith("jpg") || media.endsWith("png")) { + if (media.startsWith("http")) { + urls.add(media); + } else { + urls.add(StringHelper.appendCompleteURL(media)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicGridView.setVisibility(View.VISIBLE); + casePicGridView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicGridView.addItemDecoration(new ItemDecorationSpace()); + casePicGridView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } } } + int caseState = data.getCaseState(); + if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { + handleRecordLayout.setVisibility(View.GONE); + } else { + handleRecordLayout.setVisibility(View.VISIBLE); + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); } @OnClick({R.id.caseAudioView, R.id.handleRecordLayout}) @@ -108,16 +157,14 @@ public void onClick(View v) { switch (v.getId()) { case R.id.caseAudioView: - if (dataBeans.size() > 0) { - String audioIdVerify = dataBeans.get(0).getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - } + String audioIdVerify = data.getAudioIdVerify(); + String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); + String[] split = fileIdVerify.split(","); + Log.d(TAG, Arrays.toString(split)); break; case R.id.handleRecordLayout: Intent intent = new Intent(this, CaseProcessActivity.class); - intent.putExtra("processId", dataBeans.get(0).getProcessId()); + intent.putExtra("processId", data.getProcessId()); startActivity(intent); break; } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index f365d3d..4dd5e6a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; @@ -58,6 +59,7 @@ private List dataBeans = new ArrayList<>(); private boolean isRefresh, isLoadMore = false; private WeakReferenceHandler weakReferenceHandler; + private QMUITipDialog searchDialog; @Override public int initLayoutView() { @@ -78,6 +80,10 @@ @Override public void initData() { + searchDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("查询中,请稍后") + .create(); caseListPresenter = new CaseListPresenterImpl(this); weakReferenceHandler = new WeakReferenceHandler(this); typeCode = getIntent().getStringExtra("typeCode"); @@ -156,6 +162,16 @@ } @Override + public void showProgress() { + searchDialog.show(); + } + + @Override + public void hideProgress() { + searchDialog.hide(); + } + + @Override public void obtainCaseListData(CaseListResultBean resultBean) { if (resultBean.isSuccess()) { List dataRows = resultBean.getData().getRows(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java index a5f4723..c12f41a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java @@ -21,14 +21,8 @@ import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import java.util.List; - import butterknife.BindView; -import static com.casic.dcms.utils.TimeLineDecoration.BEGIN; -import static com.casic.dcms.utils.TimeLineDecoration.END_FULL; -import static com.casic.dcms.utils.TimeLineDecoration.NORMAL; - public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { private static final String TAG = "CaseProcessActivity"; @@ -39,7 +33,6 @@ RecyclerView processRecyclerView; private CaseProcessPresenterImpl caseProcessPresenter; private QMUITipDialog loadingDialog; - private ProcessLineAdapter adapter; @Override public int initLayoutView() { @@ -64,7 +57,6 @@ .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) .setTipWord("获取记录中,请稍后") .create(); - adapter = new ProcessLineAdapter(this); } @Override @@ -83,19 +75,15 @@ public void obtainCaseProcessData(CaseProcessBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); + ProcessLineAdapter adapter = new ProcessLineAdapter(this, resultBean.getData()); processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); processRecyclerView.setHasFixedSize(true); processRecyclerView.setNestedScrollingEnabled(false); processRecyclerView.setItemAnimator(new DefaultItemAnimator()); TimeLineDecoration decoration = new TimeLineDecoration(this) - .setDividerHeight(1) - .setDividerColor(R.color.lightGray) - .setDividerPaddingLeft(QMUIDisplayHelper.dp2px(this, 10)) - .setDividerPaddingRight(QMUIDisplayHelper.dp2px(this, 10)) .setLineColor(R.color.colorPrimary) - .setLineWidth(QMUIDisplayHelper.dp2px(this, 1)) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 10)) + .setLineWidth(1) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) .setMarkerColor(R.color.colorAccent) .setMarkerRadius(10) .setBeginMarker(R.drawable.ic_warning) @@ -109,20 +97,19 @@ @Nullable @Override public Rect getRect(int position) { - //item之间的间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 40), QMUIDisplayHelper.dp2px(context, 10), + //item内间距 + return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 20), 0, 0); } @Override public int getTimeLineType(int position) { - if (position == 0) return BEGIN; - else if (position == adapter.getItemCount() - 1) return END_FULL; - else return NORMAL; + if (position == 0) return TimeLineDecoration.BEGIN; + else if (position == adapter.getItemCount() - 1) return TimeLineDecoration.END_FULL; + else return TimeLineDecoration.NORMAL; } }); processRecyclerView.addItemDecoration(decoration); - adapter.setList(dataBeans); processRecyclerView.setAdapter(adapter); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 452726c..14e360c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -5,10 +5,8 @@ import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.ImageView; import android.widget.TextView; -import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -22,13 +20,10 @@ import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; import com.casic.dcms.utils.ColorHelper; -import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.gyf.immersionbar.ImmersionBar; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.io.IOException; import java.util.ArrayList; @@ -40,9 +35,8 @@ public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - private static final String TAG = "VerifiedDetailActivity"; - @BindView(R.id.leftBackView) - ImageView leftBackView; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; @BindView(R.id.caseNumberView) TextView caseNumberView; @BindView(R.id.caseTypeView) @@ -85,9 +79,9 @@ @Override protected void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(new View.OnClickListener() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); @@ -111,7 +105,6 @@ @Override public void obtainCaseDetailData(CaseDetailBean resultBean) { -// Log.d(TAG, "obtainCaseDetailData: " + gson.toJson(resultBean)); if (resultBean.isSuccess()) { this.data = resultBean.getData().get(0); caseNumberView.setText(data.getCaseid()); @@ -220,43 +213,21 @@ @Override public void onClick(View v) { if (v.getId() == R.id.locationMapView) { - String type = caseTypeView.getText().toString(); - if (type.equals("请选择")) { - ToastHelper.showToast("请先选择案卷类型", ToastHelper.WARING); + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); return; } - int source = data.getSource(); - if (source == 11 || source == 12) { - Intent intent = new Intent(this, ArcGISMapActivity.class); - intent.putExtra("type", type); - startActivityForResult(intent, Constant.REQUEST_MAP_CODE); - } else { - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("lng", Double.parseDouble(data.getLng())); - intent.putExtra("lat", Double.parseDouble(data.getLat())); - startActivity(intent); + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; } - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - if (requestCode == Constant.REQUEST_MAP_CODE) { - if (data == null) { - return; - } - String community = data.getStringExtra("community"); - String casePlace = data.getStringExtra("pos"); - caseCommunityView.setText(community); - if (TextUtils.isEmpty(casePlace)) { - casePlaceView.setText(community); - } else { - casePlaceView.setText(casePlace); - } - SaveKeyValues.removeKey("CommunityName"); - } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 8203d37..d824e9b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -47,7 +47,6 @@ import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.google.gson.Gson; import com.gyf.immersionbar.ImmersionBar; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; @@ -132,7 +131,6 @@ RelativeLayout caseSmallClassLayout; private CaseDetailPresenterImpl caseDetailPresenter; - private Gson gson; private CaseLargeClassPresenterImpl caseLargeClassPresenter; private List largeClassBeans; private CaseSmallClassPresenterImpl caseSmallClassPresenter; @@ -172,7 +170,6 @@ @Override public void initData() { - gson = new Gson(); mediaPlayer = new MediaPlayer(); largeClassBeans = new ArrayList<>(); smallClassBeans = new ArrayList<>(); diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index 820510b..2b72d2c 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -13,7 +13,6 @@ import com.casic.dcms.utils.callback.ILocationListener; import com.esri.arcgisruntime.data.ServiceFeatureTable; import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReferences; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; import com.esri.arcgisruntime.layers.FeatureLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -39,6 +38,8 @@ @BindView(R.id.mapView) MapView mapView; + private double lng, lat; + @Override public int initLayoutView() { return R.layout.activity_gis; @@ -46,7 +47,7 @@ @Override protected void setupTopBarLayout() { - gisTopLayout.setTitle("查看地图").setTextColor(ContextCompat.getColor(this, R.color.white)); + gisTopLayout.setTitle("查看案卷位置").setTextColor(ContextCompat.getColor(this, R.color.white)); gisTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); gisTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { @Override @@ -58,8 +59,10 @@ @Override public void initData() { - double lng = getIntent().getDoubleExtra("lng", 0); - double lat = getIntent().getDoubleExtra("lat", 0); + String caseType = getIntent().getStringExtra("caseType"); + lng = getIntent().getDoubleExtra("lng", 0); + lat = getIntent().getDoubleExtra("lat", 0); +// Log.d(TAG, "[" + lng + "," + lat + "]"); mapView.setAttributionTextVisible(false);//去掉左下角属性标识 mapView.setViewpointScaleAsync(500);//数字越大,放大比例越小 @@ -76,27 +79,46 @@ ServiceFeatureTable communityFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/4"); communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - - //单元网格 (ID: 6) - ServiceFeatureTable unitFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/6"); - unitFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer unitLayer = new FeatureLayer(unitFeatureTable); - - //部件点图层 (ID: 0) - ServiceFeatureTable pointFeatureTable = new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL + "/0"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, unitLayer, pointLayer)); - - //移到案卷定位点 - addMarker(new Point(lng, lat, SpatialReferences.getWgs84())); - + assert caseType != null; + switch (caseType) { + case "事件": + //单元网格 (ID: 6) + ServiceFeatureTable unitFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/6"); + unitFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); + FeatureLayer unitLayer = new FeatureLayer(unitFeatureTable); + arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, unitLayer)); + break; + case "部件": + //部件点图层 (ID: 0) + ServiceFeatureTable pointFeatureTable = new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL + "/0"); + pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); + FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); + arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); + break; + } mapView.setMap(arcGISMap); + mapView.setViewpointCenterAsync(new Point(lng, lat)); } +// @SuppressLint("ClickableViewAccessibility") @Override public void initEvent() { - +// mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { +// @Override +// public boolean onSingleTapConfirmed(MotionEvent e) { +// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); +// Point clickPoint = mapView.screenToLocation(screenPoint); +// Log.d(TAG, "clickPoint: " + clickPoint); +// //[116.591999, 28.241346, 0.000000, NaN] SR: 4326 +// +// Point point = new Point(lng, lat, SpatialReference.create(4326)); +// Log.d(TAG, "point: " + point); +// //[116.650769, 28.216684, 0.000000, NaN] SR: 4326 +// +// addMarker(clickPoint); +// return super.onSingleTapConfirmed(e); +// } +// }); } /** diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java index 960dcbf..5d977b5 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -16,6 +17,7 @@ import com.casic.dcms.bean.CaseCheckBean; import com.casic.dcms.mvp.presenter.CaseCheckPresenterImpl; import com.casic.dcms.mvp.view.ICaseCheckView; +import com.casic.dcms.ui.CaseCheckDetailActivity; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.scwang.smartrefresh.layout.SmartRefreshLayout; @@ -130,10 +132,9 @@ adapter.setOnItemClickListener(new CaseCheckResultAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(context, CaseDetailActivity.class); -// intent.putExtra("id", dataRows.get(position).getId()); -// startActivity( intent); - ToastHelper.showToast("详情页正在完善中", ToastHelper.ERROR); + Intent intent = new Intent(context, CaseCheckDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); } }); } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f105e36..51e7255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:usesCleartextTraffic="true"> + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + { private Context mContext; - private List mList; + private List mProcessList; - public ProcessLineAdapter(Context context) { + public ProcessLineAdapter(Context context, List list) { mContext = context; + this.mProcessList = list; } - public void setList(List list) { - mList = list; - } - + @NotNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_case_process, parent, false); @@ -36,37 +35,35 @@ @Override public void onBindViewHolder(ViewHolder holder, int position) { - holder.bindData(mList.get(position)); + holder.bindData(mProcessList.get(position)); } @Override public int getItemCount() { - return mList.size(); + return mProcessList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - private TextView handlePersonTag; + private TextView operationTypeName; private TextView handlePersonView; - private TextView handleTimeTag; private TextView handleTimeView; - private TextView handleResultTag; private TextView handleResultView; private RelativeLayout handlePicLayout; - private GridView handlePicView; + private RecyclerView handlePicView; public ViewHolder(View view) { super(view); - handlePersonTag = view.findViewById(R.id.handlePersonTag); + operationTypeName = view.findViewById(R.id.operationTypeName); handlePersonView = view.findViewById(R.id.handlePersonView); - handleTimeTag = view.findViewById(R.id.handleTimeTag); handleTimeView = view.findViewById(R.id.handleTimeView); - handleResultTag = view.findViewById(R.id.handleResultTag); handleResultView = view.findViewById(R.id.handleResultView); handlePicLayout = view.findViewById(R.id.handlePicLayout); handlePicView = view.findViewById(R.id.handlePicView); } public void bindData(CaseProcessBean.DataBean dataBean) { + String typeName = dataBean.getOperationTypeName(); + operationTypeName.setText(typeName); handlePersonView.setText(dataBean.getUserName()); handleTimeView.setText(dataBean.getTime()); handleResultView.setText(dataBean.getRemarks()); diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index 8f24f23..9c323dd 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,6 +18,7 @@ @Override public void onReadyRetrofitRequest(String casetypeCode, String casetypeDetailCode, String caseStateId, String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { + view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(casetypeCode, casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, offset)); } @@ -29,11 +30,12 @@ @Override public void onSuccess(CaseListResultBean resultBean) { + view.hideProgress(); view.obtainCaseListData(resultBean); } @Override public void onFailure(Throwable throwable) { - + view.hideProgress(); } } diff --git a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java index 4d22718..60ec154 100644 --- a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java +++ b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java @@ -3,5 +3,9 @@ import com.casic.dcms.bean.CaseListResultBean; public interface ICaseListView { + void showProgress(); + + void hideProgress(); + void obtainCaseListData(CaseListResultBean resultBean); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java new file mode 100644 index 0000000..630670a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -0,0 +1,52 @@ +package com.casic.dcms.ui; + +import android.view.View; +import android.widget.ImageView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.utils.StatusBarColorUtil; +import com.gyf.immersionbar.ImmersionBar; + +import butterknife.BindView; + +public class CaseCheckDetailActivity extends BaseActivity implements View.OnClickListener { + + private static final String TAG = "CaseCheckDetailActivity"; + @BindView(R.id.leftBackView) + ImageView leftBackView; + + @Override + public int initLayoutView() { + return R.layout.activity_case_check_detail; + } + + @Override + protected void setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + leftBackView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + + } + + @Override + public void initEvent() { + + } + + @Override + public void onClick(View v) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java new file mode 100644 index 0000000..a061d3c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -0,0 +1,163 @@ +package com.casic.dcms.ui; + +import android.content.Intent; +import android.media.MediaPlayer; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { + + private static final String TAG = "CheckedDetailActivity"; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.caseHandleView) + TextView caseHandleView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; + + private MediaPlayer mediaPlayer; + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + public int initLayoutView() { + return R.layout.activity_case_checked_detail; + } + + @Override + protected void setupTopBarLayout() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mediaPlayer = new MediaPlayer(); + + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @OnClick(R.id.handleLayout) + @Override + public void onClick(View v) { + if (v.getId() == R.id.handleLayout) { + Intent intent = new Intent(this, CaseProcessActivity.class); + intent.putExtra("processId", data.getProcessId()); + startActivity(intent); + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { +// Log.d(TAG, "obtainCaseDetailData: "+new Gson().toJson(resultBean)); + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseHandleView.setText(data.getUrgeRemarks()); + caseSituationView.setText(data.getDescription()); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + List urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + urls.add(StringHelper.appendCompleteURL(s)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setVisibility(View.VISIBLE); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 1fd547e..77c7b01 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -3,17 +3,24 @@ import android.content.Intent; import android.util.Log; import android.view.View; -import android.widget.GridView; import android.widget.RelativeLayout; import android.widget.TextView; import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.util.ArrayList; @@ -45,11 +52,16 @@ @BindView(R.id.caseSituationView) TextView caseSituationView; @BindView(R.id.casePicGridView) - GridView casePicGridView; + RecyclerView casePicGridView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; + private CaseDetailPresenterImpl caseDetailPresenter; - private List dataBeans = new ArrayList<>(); + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private Gson gson; + private List urls = new ArrayList<>(); @Override public int initLayoutView() { @@ -73,6 +85,8 @@ String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); + + gson = new Gson(); } @Override @@ -84,23 +98,58 @@ public void obtainCaseDetailData(CaseDetailBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - this.dataBeans = resultBean.getData(); - CaseDetailBean.DataBean dataBean = resultBean.getData().get(0);//有且之后一个 - caseNumberView.setText(dataBean.getCaseid()); - caseStatusView.setText(dataBean.getCaseStateName()); - caseTypeView.setText(dataBean.getEorcName()); - caseLargeTypeView.setText(dataBean.getCasetypeName()); - caseSmallTypeView.setText(dataBean.getCasetypeDetailName()); - caseCommunityView.setText(dataBean.getCommunityName()); - casePlaceView.setText(dataBean.getFieldintro()); - caseSituationView.setText(dataBean.getDescription()); - int caseState = dataBean.getCaseState(); - if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { - handleRecordLayout.setVisibility(View.GONE); - } else { - handleRecordLayout.setVisibility(View.VISIBLE); + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseSituationView.setText(data.getDescription()); + List mediaList = gson.fromJson(data.getFileIdVerify(), new TypeToken>() { + }.getType()); + for (String media : mediaList) { + if (media.endsWith("jpeg") || media.endsWith("jpg") || media.endsWith("png")) { + if (media.startsWith("http")) { + urls.add(media); + } else { + urls.add(StringHelper.appendCompleteURL(media)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicGridView.setVisibility(View.VISIBLE); + casePicGridView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicGridView.addItemDecoration(new ItemDecorationSpace()); + casePicGridView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } } } + int caseState = data.getCaseState(); + if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { + handleRecordLayout.setVisibility(View.GONE); + } else { + handleRecordLayout.setVisibility(View.VISIBLE); + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); } @OnClick({R.id.caseAudioView, R.id.handleRecordLayout}) @@ -108,16 +157,14 @@ public void onClick(View v) { switch (v.getId()) { case R.id.caseAudioView: - if (dataBeans.size() > 0) { - String audioIdVerify = dataBeans.get(0).getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - } + String audioIdVerify = data.getAudioIdVerify(); + String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); + String[] split = fileIdVerify.split(","); + Log.d(TAG, Arrays.toString(split)); break; case R.id.handleRecordLayout: Intent intent = new Intent(this, CaseProcessActivity.class); - intent.putExtra("processId", dataBeans.get(0).getProcessId()); + intent.putExtra("processId", data.getProcessId()); startActivity(intent); break; } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index f365d3d..4dd5e6a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; @@ -58,6 +59,7 @@ private List dataBeans = new ArrayList<>(); private boolean isRefresh, isLoadMore = false; private WeakReferenceHandler weakReferenceHandler; + private QMUITipDialog searchDialog; @Override public int initLayoutView() { @@ -78,6 +80,10 @@ @Override public void initData() { + searchDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("查询中,请稍后") + .create(); caseListPresenter = new CaseListPresenterImpl(this); weakReferenceHandler = new WeakReferenceHandler(this); typeCode = getIntent().getStringExtra("typeCode"); @@ -156,6 +162,16 @@ } @Override + public void showProgress() { + searchDialog.show(); + } + + @Override + public void hideProgress() { + searchDialog.hide(); + } + + @Override public void obtainCaseListData(CaseListResultBean resultBean) { if (resultBean.isSuccess()) { List dataRows = resultBean.getData().getRows(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java index a5f4723..c12f41a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java @@ -21,14 +21,8 @@ import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import java.util.List; - import butterknife.BindView; -import static com.casic.dcms.utils.TimeLineDecoration.BEGIN; -import static com.casic.dcms.utils.TimeLineDecoration.END_FULL; -import static com.casic.dcms.utils.TimeLineDecoration.NORMAL; - public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { private static final String TAG = "CaseProcessActivity"; @@ -39,7 +33,6 @@ RecyclerView processRecyclerView; private CaseProcessPresenterImpl caseProcessPresenter; private QMUITipDialog loadingDialog; - private ProcessLineAdapter adapter; @Override public int initLayoutView() { @@ -64,7 +57,6 @@ .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) .setTipWord("获取记录中,请稍后") .create(); - adapter = new ProcessLineAdapter(this); } @Override @@ -83,19 +75,15 @@ public void obtainCaseProcessData(CaseProcessBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); + ProcessLineAdapter adapter = new ProcessLineAdapter(this, resultBean.getData()); processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); processRecyclerView.setHasFixedSize(true); processRecyclerView.setNestedScrollingEnabled(false); processRecyclerView.setItemAnimator(new DefaultItemAnimator()); TimeLineDecoration decoration = new TimeLineDecoration(this) - .setDividerHeight(1) - .setDividerColor(R.color.lightGray) - .setDividerPaddingLeft(QMUIDisplayHelper.dp2px(this, 10)) - .setDividerPaddingRight(QMUIDisplayHelper.dp2px(this, 10)) .setLineColor(R.color.colorPrimary) - .setLineWidth(QMUIDisplayHelper.dp2px(this, 1)) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 10)) + .setLineWidth(1) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) .setMarkerColor(R.color.colorAccent) .setMarkerRadius(10) .setBeginMarker(R.drawable.ic_warning) @@ -109,20 +97,19 @@ @Nullable @Override public Rect getRect(int position) { - //item之间的间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 40), QMUIDisplayHelper.dp2px(context, 10), + //item内间距 + return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 20), 0, 0); } @Override public int getTimeLineType(int position) { - if (position == 0) return BEGIN; - else if (position == adapter.getItemCount() - 1) return END_FULL; - else return NORMAL; + if (position == 0) return TimeLineDecoration.BEGIN; + else if (position == adapter.getItemCount() - 1) return TimeLineDecoration.END_FULL; + else return TimeLineDecoration.NORMAL; } }); processRecyclerView.addItemDecoration(decoration); - adapter.setList(dataBeans); processRecyclerView.setAdapter(adapter); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 452726c..14e360c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -5,10 +5,8 @@ import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.ImageView; import android.widget.TextView; -import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -22,13 +20,10 @@ import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; import com.casic.dcms.utils.ColorHelper; -import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.gyf.immersionbar.ImmersionBar; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.io.IOException; import java.util.ArrayList; @@ -40,9 +35,8 @@ public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - private static final String TAG = "VerifiedDetailActivity"; - @BindView(R.id.leftBackView) - ImageView leftBackView; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; @BindView(R.id.caseNumberView) TextView caseNumberView; @BindView(R.id.caseTypeView) @@ -85,9 +79,9 @@ @Override protected void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(new View.OnClickListener() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); @@ -111,7 +105,6 @@ @Override public void obtainCaseDetailData(CaseDetailBean resultBean) { -// Log.d(TAG, "obtainCaseDetailData: " + gson.toJson(resultBean)); if (resultBean.isSuccess()) { this.data = resultBean.getData().get(0); caseNumberView.setText(data.getCaseid()); @@ -220,43 +213,21 @@ @Override public void onClick(View v) { if (v.getId() == R.id.locationMapView) { - String type = caseTypeView.getText().toString(); - if (type.equals("请选择")) { - ToastHelper.showToast("请先选择案卷类型", ToastHelper.WARING); + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); return; } - int source = data.getSource(); - if (source == 11 || source == 12) { - Intent intent = new Intent(this, ArcGISMapActivity.class); - intent.putExtra("type", type); - startActivityForResult(intent, Constant.REQUEST_MAP_CODE); - } else { - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("lng", Double.parseDouble(data.getLng())); - intent.putExtra("lat", Double.parseDouble(data.getLat())); - startActivity(intent); + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; } - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - if (requestCode == Constant.REQUEST_MAP_CODE) { - if (data == null) { - return; - } - String community = data.getStringExtra("community"); - String casePlace = data.getStringExtra("pos"); - caseCommunityView.setText(community); - if (TextUtils.isEmpty(casePlace)) { - casePlaceView.setText(community); - } else { - casePlaceView.setText(casePlace); - } - SaveKeyValues.removeKey("CommunityName"); - } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 8203d37..d824e9b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -47,7 +47,6 @@ import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.google.gson.Gson; import com.gyf.immersionbar.ImmersionBar; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; @@ -132,7 +131,6 @@ RelativeLayout caseSmallClassLayout; private CaseDetailPresenterImpl caseDetailPresenter; - private Gson gson; private CaseLargeClassPresenterImpl caseLargeClassPresenter; private List largeClassBeans; private CaseSmallClassPresenterImpl caseSmallClassPresenter; @@ -172,7 +170,6 @@ @Override public void initData() { - gson = new Gson(); mediaPlayer = new MediaPlayer(); largeClassBeans = new ArrayList<>(); smallClassBeans = new ArrayList<>(); diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index 820510b..2b72d2c 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -13,7 +13,6 @@ import com.casic.dcms.utils.callback.ILocationListener; import com.esri.arcgisruntime.data.ServiceFeatureTable; import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReferences; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; import com.esri.arcgisruntime.layers.FeatureLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -39,6 +38,8 @@ @BindView(R.id.mapView) MapView mapView; + private double lng, lat; + @Override public int initLayoutView() { return R.layout.activity_gis; @@ -46,7 +47,7 @@ @Override protected void setupTopBarLayout() { - gisTopLayout.setTitle("查看地图").setTextColor(ContextCompat.getColor(this, R.color.white)); + gisTopLayout.setTitle("查看案卷位置").setTextColor(ContextCompat.getColor(this, R.color.white)); gisTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); gisTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { @Override @@ -58,8 +59,10 @@ @Override public void initData() { - double lng = getIntent().getDoubleExtra("lng", 0); - double lat = getIntent().getDoubleExtra("lat", 0); + String caseType = getIntent().getStringExtra("caseType"); + lng = getIntent().getDoubleExtra("lng", 0); + lat = getIntent().getDoubleExtra("lat", 0); +// Log.d(TAG, "[" + lng + "," + lat + "]"); mapView.setAttributionTextVisible(false);//去掉左下角属性标识 mapView.setViewpointScaleAsync(500);//数字越大,放大比例越小 @@ -76,27 +79,46 @@ ServiceFeatureTable communityFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/4"); communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - - //单元网格 (ID: 6) - ServiceFeatureTable unitFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/6"); - unitFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer unitLayer = new FeatureLayer(unitFeatureTable); - - //部件点图层 (ID: 0) - ServiceFeatureTable pointFeatureTable = new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL + "/0"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, unitLayer, pointLayer)); - - //移到案卷定位点 - addMarker(new Point(lng, lat, SpatialReferences.getWgs84())); - + assert caseType != null; + switch (caseType) { + case "事件": + //单元网格 (ID: 6) + ServiceFeatureTable unitFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/6"); + unitFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); + FeatureLayer unitLayer = new FeatureLayer(unitFeatureTable); + arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, unitLayer)); + break; + case "部件": + //部件点图层 (ID: 0) + ServiceFeatureTable pointFeatureTable = new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL + "/0"); + pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); + FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); + arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); + break; + } mapView.setMap(arcGISMap); + mapView.setViewpointCenterAsync(new Point(lng, lat)); } +// @SuppressLint("ClickableViewAccessibility") @Override public void initEvent() { - +// mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { +// @Override +// public boolean onSingleTapConfirmed(MotionEvent e) { +// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); +// Point clickPoint = mapView.screenToLocation(screenPoint); +// Log.d(TAG, "clickPoint: " + clickPoint); +// //[116.591999, 28.241346, 0.000000, NaN] SR: 4326 +// +// Point point = new Point(lng, lat, SpatialReference.create(4326)); +// Log.d(TAG, "point: " + point); +// //[116.650769, 28.216684, 0.000000, NaN] SR: 4326 +// +// addMarker(clickPoint); +// return super.onSingleTapConfirmed(e); +// } +// }); } /** diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java index 960dcbf..5d977b5 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -16,6 +17,7 @@ import com.casic.dcms.bean.CaseCheckBean; import com.casic.dcms.mvp.presenter.CaseCheckPresenterImpl; import com.casic.dcms.mvp.view.ICaseCheckView; +import com.casic.dcms.ui.CaseCheckDetailActivity; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.scwang.smartrefresh.layout.SmartRefreshLayout; @@ -130,10 +132,9 @@ adapter.setOnItemClickListener(new CaseCheckResultAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(context, CaseDetailActivity.class); -// intent.putExtra("id", dataRows.get(position).getId()); -// startActivity( intent); - ToastHelper.showToast("详情页正在完善中", ToastHelper.ERROR); + Intent intent = new Intent(context, CaseCheckDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java index f701096..c312ca3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -16,6 +17,7 @@ import com.casic.dcms.bean.CaseCheckedBean; import com.casic.dcms.mvp.presenter.CaseCheckedPresenterImpl; import com.casic.dcms.mvp.view.ICaseCheckedView; +import com.casic.dcms.ui.CaseCheckedDetailActivity; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.scwang.smartrefresh.layout.SmartRefreshLayout; @@ -131,10 +133,9 @@ adapter.setOnItemClickListener(new CaseCheckedResultAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(context, CaseDetailActivity.class); -// intent.putExtra("id", dataRows.get(position).getId()); -// startActivity( intent); - ToastHelper.showToast("详情页正在完善中", ToastHelper.ERROR); + Intent intent = new Intent(context, CaseCheckedDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); } }); } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f105e36..51e7255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:usesCleartextTraffic="true"> + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + { private Context mContext; - private List mList; + private List mProcessList; - public ProcessLineAdapter(Context context) { + public ProcessLineAdapter(Context context, List list) { mContext = context; + this.mProcessList = list; } - public void setList(List list) { - mList = list; - } - + @NotNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_case_process, parent, false); @@ -36,37 +35,35 @@ @Override public void onBindViewHolder(ViewHolder holder, int position) { - holder.bindData(mList.get(position)); + holder.bindData(mProcessList.get(position)); } @Override public int getItemCount() { - return mList.size(); + return mProcessList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - private TextView handlePersonTag; + private TextView operationTypeName; private TextView handlePersonView; - private TextView handleTimeTag; private TextView handleTimeView; - private TextView handleResultTag; private TextView handleResultView; private RelativeLayout handlePicLayout; - private GridView handlePicView; + private RecyclerView handlePicView; public ViewHolder(View view) { super(view); - handlePersonTag = view.findViewById(R.id.handlePersonTag); + operationTypeName = view.findViewById(R.id.operationTypeName); handlePersonView = view.findViewById(R.id.handlePersonView); - handleTimeTag = view.findViewById(R.id.handleTimeTag); handleTimeView = view.findViewById(R.id.handleTimeView); - handleResultTag = view.findViewById(R.id.handleResultTag); handleResultView = view.findViewById(R.id.handleResultView); handlePicLayout = view.findViewById(R.id.handlePicLayout); handlePicView = view.findViewById(R.id.handlePicView); } public void bindData(CaseProcessBean.DataBean dataBean) { + String typeName = dataBean.getOperationTypeName(); + operationTypeName.setText(typeName); handlePersonView.setText(dataBean.getUserName()); handleTimeView.setText(dataBean.getTime()); handleResultView.setText(dataBean.getRemarks()); diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index 8f24f23..9c323dd 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,6 +18,7 @@ @Override public void onReadyRetrofitRequest(String casetypeCode, String casetypeDetailCode, String caseStateId, String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { + view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(casetypeCode, casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, offset)); } @@ -29,11 +30,12 @@ @Override public void onSuccess(CaseListResultBean resultBean) { + view.hideProgress(); view.obtainCaseListData(resultBean); } @Override public void onFailure(Throwable throwable) { - + view.hideProgress(); } } diff --git a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java index 4d22718..60ec154 100644 --- a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java +++ b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java @@ -3,5 +3,9 @@ import com.casic.dcms.bean.CaseListResultBean; public interface ICaseListView { + void showProgress(); + + void hideProgress(); + void obtainCaseListData(CaseListResultBean resultBean); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java new file mode 100644 index 0000000..630670a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -0,0 +1,52 @@ +package com.casic.dcms.ui; + +import android.view.View; +import android.widget.ImageView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.utils.StatusBarColorUtil; +import com.gyf.immersionbar.ImmersionBar; + +import butterknife.BindView; + +public class CaseCheckDetailActivity extends BaseActivity implements View.OnClickListener { + + private static final String TAG = "CaseCheckDetailActivity"; + @BindView(R.id.leftBackView) + ImageView leftBackView; + + @Override + public int initLayoutView() { + return R.layout.activity_case_check_detail; + } + + @Override + protected void setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + leftBackView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + + } + + @Override + public void initEvent() { + + } + + @Override + public void onClick(View v) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java new file mode 100644 index 0000000..a061d3c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -0,0 +1,163 @@ +package com.casic.dcms.ui; + +import android.content.Intent; +import android.media.MediaPlayer; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { + + private static final String TAG = "CheckedDetailActivity"; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.caseHandleView) + TextView caseHandleView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; + + private MediaPlayer mediaPlayer; + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + public int initLayoutView() { + return R.layout.activity_case_checked_detail; + } + + @Override + protected void setupTopBarLayout() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mediaPlayer = new MediaPlayer(); + + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @OnClick(R.id.handleLayout) + @Override + public void onClick(View v) { + if (v.getId() == R.id.handleLayout) { + Intent intent = new Intent(this, CaseProcessActivity.class); + intent.putExtra("processId", data.getProcessId()); + startActivity(intent); + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { +// Log.d(TAG, "obtainCaseDetailData: "+new Gson().toJson(resultBean)); + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseHandleView.setText(data.getUrgeRemarks()); + caseSituationView.setText(data.getDescription()); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + List urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + urls.add(StringHelper.appendCompleteURL(s)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setVisibility(View.VISIBLE); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 1fd547e..77c7b01 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -3,17 +3,24 @@ import android.content.Intent; import android.util.Log; import android.view.View; -import android.widget.GridView; import android.widget.RelativeLayout; import android.widget.TextView; import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.util.ArrayList; @@ -45,11 +52,16 @@ @BindView(R.id.caseSituationView) TextView caseSituationView; @BindView(R.id.casePicGridView) - GridView casePicGridView; + RecyclerView casePicGridView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; + private CaseDetailPresenterImpl caseDetailPresenter; - private List dataBeans = new ArrayList<>(); + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private Gson gson; + private List urls = new ArrayList<>(); @Override public int initLayoutView() { @@ -73,6 +85,8 @@ String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); + + gson = new Gson(); } @Override @@ -84,23 +98,58 @@ public void obtainCaseDetailData(CaseDetailBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - this.dataBeans = resultBean.getData(); - CaseDetailBean.DataBean dataBean = resultBean.getData().get(0);//有且之后一个 - caseNumberView.setText(dataBean.getCaseid()); - caseStatusView.setText(dataBean.getCaseStateName()); - caseTypeView.setText(dataBean.getEorcName()); - caseLargeTypeView.setText(dataBean.getCasetypeName()); - caseSmallTypeView.setText(dataBean.getCasetypeDetailName()); - caseCommunityView.setText(dataBean.getCommunityName()); - casePlaceView.setText(dataBean.getFieldintro()); - caseSituationView.setText(dataBean.getDescription()); - int caseState = dataBean.getCaseState(); - if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { - handleRecordLayout.setVisibility(View.GONE); - } else { - handleRecordLayout.setVisibility(View.VISIBLE); + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseSituationView.setText(data.getDescription()); + List mediaList = gson.fromJson(data.getFileIdVerify(), new TypeToken>() { + }.getType()); + for (String media : mediaList) { + if (media.endsWith("jpeg") || media.endsWith("jpg") || media.endsWith("png")) { + if (media.startsWith("http")) { + urls.add(media); + } else { + urls.add(StringHelper.appendCompleteURL(media)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicGridView.setVisibility(View.VISIBLE); + casePicGridView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicGridView.addItemDecoration(new ItemDecorationSpace()); + casePicGridView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } } } + int caseState = data.getCaseState(); + if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { + handleRecordLayout.setVisibility(View.GONE); + } else { + handleRecordLayout.setVisibility(View.VISIBLE); + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); } @OnClick({R.id.caseAudioView, R.id.handleRecordLayout}) @@ -108,16 +157,14 @@ public void onClick(View v) { switch (v.getId()) { case R.id.caseAudioView: - if (dataBeans.size() > 0) { - String audioIdVerify = dataBeans.get(0).getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - } + String audioIdVerify = data.getAudioIdVerify(); + String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); + String[] split = fileIdVerify.split(","); + Log.d(TAG, Arrays.toString(split)); break; case R.id.handleRecordLayout: Intent intent = new Intent(this, CaseProcessActivity.class); - intent.putExtra("processId", dataBeans.get(0).getProcessId()); + intent.putExtra("processId", data.getProcessId()); startActivity(intent); break; } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index f365d3d..4dd5e6a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; @@ -58,6 +59,7 @@ private List dataBeans = new ArrayList<>(); private boolean isRefresh, isLoadMore = false; private WeakReferenceHandler weakReferenceHandler; + private QMUITipDialog searchDialog; @Override public int initLayoutView() { @@ -78,6 +80,10 @@ @Override public void initData() { + searchDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("查询中,请稍后") + .create(); caseListPresenter = new CaseListPresenterImpl(this); weakReferenceHandler = new WeakReferenceHandler(this); typeCode = getIntent().getStringExtra("typeCode"); @@ -156,6 +162,16 @@ } @Override + public void showProgress() { + searchDialog.show(); + } + + @Override + public void hideProgress() { + searchDialog.hide(); + } + + @Override public void obtainCaseListData(CaseListResultBean resultBean) { if (resultBean.isSuccess()) { List dataRows = resultBean.getData().getRows(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java index a5f4723..c12f41a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java @@ -21,14 +21,8 @@ import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import java.util.List; - import butterknife.BindView; -import static com.casic.dcms.utils.TimeLineDecoration.BEGIN; -import static com.casic.dcms.utils.TimeLineDecoration.END_FULL; -import static com.casic.dcms.utils.TimeLineDecoration.NORMAL; - public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { private static final String TAG = "CaseProcessActivity"; @@ -39,7 +33,6 @@ RecyclerView processRecyclerView; private CaseProcessPresenterImpl caseProcessPresenter; private QMUITipDialog loadingDialog; - private ProcessLineAdapter adapter; @Override public int initLayoutView() { @@ -64,7 +57,6 @@ .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) .setTipWord("获取记录中,请稍后") .create(); - adapter = new ProcessLineAdapter(this); } @Override @@ -83,19 +75,15 @@ public void obtainCaseProcessData(CaseProcessBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); + ProcessLineAdapter adapter = new ProcessLineAdapter(this, resultBean.getData()); processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); processRecyclerView.setHasFixedSize(true); processRecyclerView.setNestedScrollingEnabled(false); processRecyclerView.setItemAnimator(new DefaultItemAnimator()); TimeLineDecoration decoration = new TimeLineDecoration(this) - .setDividerHeight(1) - .setDividerColor(R.color.lightGray) - .setDividerPaddingLeft(QMUIDisplayHelper.dp2px(this, 10)) - .setDividerPaddingRight(QMUIDisplayHelper.dp2px(this, 10)) .setLineColor(R.color.colorPrimary) - .setLineWidth(QMUIDisplayHelper.dp2px(this, 1)) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 10)) + .setLineWidth(1) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) .setMarkerColor(R.color.colorAccent) .setMarkerRadius(10) .setBeginMarker(R.drawable.ic_warning) @@ -109,20 +97,19 @@ @Nullable @Override public Rect getRect(int position) { - //item之间的间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 40), QMUIDisplayHelper.dp2px(context, 10), + //item内间距 + return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 20), 0, 0); } @Override public int getTimeLineType(int position) { - if (position == 0) return BEGIN; - else if (position == adapter.getItemCount() - 1) return END_FULL; - else return NORMAL; + if (position == 0) return TimeLineDecoration.BEGIN; + else if (position == adapter.getItemCount() - 1) return TimeLineDecoration.END_FULL; + else return TimeLineDecoration.NORMAL; } }); processRecyclerView.addItemDecoration(decoration); - adapter.setList(dataBeans); processRecyclerView.setAdapter(adapter); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 452726c..14e360c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -5,10 +5,8 @@ import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.ImageView; import android.widget.TextView; -import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -22,13 +20,10 @@ import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; import com.casic.dcms.utils.ColorHelper; -import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.gyf.immersionbar.ImmersionBar; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.io.IOException; import java.util.ArrayList; @@ -40,9 +35,8 @@ public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - private static final String TAG = "VerifiedDetailActivity"; - @BindView(R.id.leftBackView) - ImageView leftBackView; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; @BindView(R.id.caseNumberView) TextView caseNumberView; @BindView(R.id.caseTypeView) @@ -85,9 +79,9 @@ @Override protected void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(new View.OnClickListener() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); @@ -111,7 +105,6 @@ @Override public void obtainCaseDetailData(CaseDetailBean resultBean) { -// Log.d(TAG, "obtainCaseDetailData: " + gson.toJson(resultBean)); if (resultBean.isSuccess()) { this.data = resultBean.getData().get(0); caseNumberView.setText(data.getCaseid()); @@ -220,43 +213,21 @@ @Override public void onClick(View v) { if (v.getId() == R.id.locationMapView) { - String type = caseTypeView.getText().toString(); - if (type.equals("请选择")) { - ToastHelper.showToast("请先选择案卷类型", ToastHelper.WARING); + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); return; } - int source = data.getSource(); - if (source == 11 || source == 12) { - Intent intent = new Intent(this, ArcGISMapActivity.class); - intent.putExtra("type", type); - startActivityForResult(intent, Constant.REQUEST_MAP_CODE); - } else { - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("lng", Double.parseDouble(data.getLng())); - intent.putExtra("lat", Double.parseDouble(data.getLat())); - startActivity(intent); + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; } - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - if (requestCode == Constant.REQUEST_MAP_CODE) { - if (data == null) { - return; - } - String community = data.getStringExtra("community"); - String casePlace = data.getStringExtra("pos"); - caseCommunityView.setText(community); - if (TextUtils.isEmpty(casePlace)) { - casePlaceView.setText(community); - } else { - casePlaceView.setText(casePlace); - } - SaveKeyValues.removeKey("CommunityName"); - } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 8203d37..d824e9b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -47,7 +47,6 @@ import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.google.gson.Gson; import com.gyf.immersionbar.ImmersionBar; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; @@ -132,7 +131,6 @@ RelativeLayout caseSmallClassLayout; private CaseDetailPresenterImpl caseDetailPresenter; - private Gson gson; private CaseLargeClassPresenterImpl caseLargeClassPresenter; private List largeClassBeans; private CaseSmallClassPresenterImpl caseSmallClassPresenter; @@ -172,7 +170,6 @@ @Override public void initData() { - gson = new Gson(); mediaPlayer = new MediaPlayer(); largeClassBeans = new ArrayList<>(); smallClassBeans = new ArrayList<>(); diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index 820510b..2b72d2c 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -13,7 +13,6 @@ import com.casic.dcms.utils.callback.ILocationListener; import com.esri.arcgisruntime.data.ServiceFeatureTable; import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReferences; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; import com.esri.arcgisruntime.layers.FeatureLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -39,6 +38,8 @@ @BindView(R.id.mapView) MapView mapView; + private double lng, lat; + @Override public int initLayoutView() { return R.layout.activity_gis; @@ -46,7 +47,7 @@ @Override protected void setupTopBarLayout() { - gisTopLayout.setTitle("查看地图").setTextColor(ContextCompat.getColor(this, R.color.white)); + gisTopLayout.setTitle("查看案卷位置").setTextColor(ContextCompat.getColor(this, R.color.white)); gisTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); gisTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { @Override @@ -58,8 +59,10 @@ @Override public void initData() { - double lng = getIntent().getDoubleExtra("lng", 0); - double lat = getIntent().getDoubleExtra("lat", 0); + String caseType = getIntent().getStringExtra("caseType"); + lng = getIntent().getDoubleExtra("lng", 0); + lat = getIntent().getDoubleExtra("lat", 0); +// Log.d(TAG, "[" + lng + "," + lat + "]"); mapView.setAttributionTextVisible(false);//去掉左下角属性标识 mapView.setViewpointScaleAsync(500);//数字越大,放大比例越小 @@ -76,27 +79,46 @@ ServiceFeatureTable communityFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/4"); communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - - //单元网格 (ID: 6) - ServiceFeatureTable unitFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/6"); - unitFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer unitLayer = new FeatureLayer(unitFeatureTable); - - //部件点图层 (ID: 0) - ServiceFeatureTable pointFeatureTable = new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL + "/0"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, unitLayer, pointLayer)); - - //移到案卷定位点 - addMarker(new Point(lng, lat, SpatialReferences.getWgs84())); - + assert caseType != null; + switch (caseType) { + case "事件": + //单元网格 (ID: 6) + ServiceFeatureTable unitFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/6"); + unitFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); + FeatureLayer unitLayer = new FeatureLayer(unitFeatureTable); + arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, unitLayer)); + break; + case "部件": + //部件点图层 (ID: 0) + ServiceFeatureTable pointFeatureTable = new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL + "/0"); + pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); + FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); + arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); + break; + } mapView.setMap(arcGISMap); + mapView.setViewpointCenterAsync(new Point(lng, lat)); } +// @SuppressLint("ClickableViewAccessibility") @Override public void initEvent() { - +// mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { +// @Override +// public boolean onSingleTapConfirmed(MotionEvent e) { +// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); +// Point clickPoint = mapView.screenToLocation(screenPoint); +// Log.d(TAG, "clickPoint: " + clickPoint); +// //[116.591999, 28.241346, 0.000000, NaN] SR: 4326 +// +// Point point = new Point(lng, lat, SpatialReference.create(4326)); +// Log.d(TAG, "point: " + point); +// //[116.650769, 28.216684, 0.000000, NaN] SR: 4326 +// +// addMarker(clickPoint); +// return super.onSingleTapConfirmed(e); +// } +// }); } /** diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java index 960dcbf..5d977b5 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -16,6 +17,7 @@ import com.casic.dcms.bean.CaseCheckBean; import com.casic.dcms.mvp.presenter.CaseCheckPresenterImpl; import com.casic.dcms.mvp.view.ICaseCheckView; +import com.casic.dcms.ui.CaseCheckDetailActivity; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.scwang.smartrefresh.layout.SmartRefreshLayout; @@ -130,10 +132,9 @@ adapter.setOnItemClickListener(new CaseCheckResultAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(context, CaseDetailActivity.class); -// intent.putExtra("id", dataRows.get(position).getId()); -// startActivity( intent); - ToastHelper.showToast("详情页正在完善中", ToastHelper.ERROR); + Intent intent = new Intent(context, CaseCheckDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java index f701096..c312ca3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -16,6 +17,7 @@ import com.casic.dcms.bean.CaseCheckedBean; import com.casic.dcms.mvp.presenter.CaseCheckedPresenterImpl; import com.casic.dcms.mvp.view.ICaseCheckedView; +import com.casic.dcms.ui.CaseCheckedDetailActivity; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.scwang.smartrefresh.layout.SmartRefreshLayout; @@ -131,10 +133,9 @@ adapter.setOnItemClickListener(new CaseCheckedResultAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(context, CaseDetailActivity.class); -// intent.putExtra("id", dataRows.get(position).getId()); -// startActivity( intent); - ToastHelper.showToast("详情页正在完善中", ToastHelper.ERROR); + Intent intent = new Intent(context, CaseCheckedDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); } }); } diff --git a/app/src/main/res/layout/activity_case_check_detail.xml b/app/src/main/res/layout/activity_case_check_detail.xml new file mode 100644 index 0000000..26a1a9b --- /dev/null +++ b/app/src/main/res/layout/activity_case_check_detail.xml @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f105e36..51e7255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:usesCleartextTraffic="true"> + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + { private Context mContext; - private List mList; + private List mProcessList; - public ProcessLineAdapter(Context context) { + public ProcessLineAdapter(Context context, List list) { mContext = context; + this.mProcessList = list; } - public void setList(List list) { - mList = list; - } - + @NotNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_case_process, parent, false); @@ -36,37 +35,35 @@ @Override public void onBindViewHolder(ViewHolder holder, int position) { - holder.bindData(mList.get(position)); + holder.bindData(mProcessList.get(position)); } @Override public int getItemCount() { - return mList.size(); + return mProcessList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - private TextView handlePersonTag; + private TextView operationTypeName; private TextView handlePersonView; - private TextView handleTimeTag; private TextView handleTimeView; - private TextView handleResultTag; private TextView handleResultView; private RelativeLayout handlePicLayout; - private GridView handlePicView; + private RecyclerView handlePicView; public ViewHolder(View view) { super(view); - handlePersonTag = view.findViewById(R.id.handlePersonTag); + operationTypeName = view.findViewById(R.id.operationTypeName); handlePersonView = view.findViewById(R.id.handlePersonView); - handleTimeTag = view.findViewById(R.id.handleTimeTag); handleTimeView = view.findViewById(R.id.handleTimeView); - handleResultTag = view.findViewById(R.id.handleResultTag); handleResultView = view.findViewById(R.id.handleResultView); handlePicLayout = view.findViewById(R.id.handlePicLayout); handlePicView = view.findViewById(R.id.handlePicView); } public void bindData(CaseProcessBean.DataBean dataBean) { + String typeName = dataBean.getOperationTypeName(); + operationTypeName.setText(typeName); handlePersonView.setText(dataBean.getUserName()); handleTimeView.setText(dataBean.getTime()); handleResultView.setText(dataBean.getRemarks()); diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index 8f24f23..9c323dd 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,6 +18,7 @@ @Override public void onReadyRetrofitRequest(String casetypeCode, String casetypeDetailCode, String caseStateId, String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { + view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(casetypeCode, casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, offset)); } @@ -29,11 +30,12 @@ @Override public void onSuccess(CaseListResultBean resultBean) { + view.hideProgress(); view.obtainCaseListData(resultBean); } @Override public void onFailure(Throwable throwable) { - + view.hideProgress(); } } diff --git a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java index 4d22718..60ec154 100644 --- a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java +++ b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java @@ -3,5 +3,9 @@ import com.casic.dcms.bean.CaseListResultBean; public interface ICaseListView { + void showProgress(); + + void hideProgress(); + void obtainCaseListData(CaseListResultBean resultBean); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java new file mode 100644 index 0000000..630670a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -0,0 +1,52 @@ +package com.casic.dcms.ui; + +import android.view.View; +import android.widget.ImageView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.utils.StatusBarColorUtil; +import com.gyf.immersionbar.ImmersionBar; + +import butterknife.BindView; + +public class CaseCheckDetailActivity extends BaseActivity implements View.OnClickListener { + + private static final String TAG = "CaseCheckDetailActivity"; + @BindView(R.id.leftBackView) + ImageView leftBackView; + + @Override + public int initLayoutView() { + return R.layout.activity_case_check_detail; + } + + @Override + protected void setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + leftBackView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + + } + + @Override + public void initEvent() { + + } + + @Override + public void onClick(View v) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java new file mode 100644 index 0000000..a061d3c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -0,0 +1,163 @@ +package com.casic.dcms.ui; + +import android.content.Intent; +import android.media.MediaPlayer; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { + + private static final String TAG = "CheckedDetailActivity"; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.caseHandleView) + TextView caseHandleView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; + + private MediaPlayer mediaPlayer; + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + public int initLayoutView() { + return R.layout.activity_case_checked_detail; + } + + @Override + protected void setupTopBarLayout() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mediaPlayer = new MediaPlayer(); + + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @OnClick(R.id.handleLayout) + @Override + public void onClick(View v) { + if (v.getId() == R.id.handleLayout) { + Intent intent = new Intent(this, CaseProcessActivity.class); + intent.putExtra("processId", data.getProcessId()); + startActivity(intent); + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { +// Log.d(TAG, "obtainCaseDetailData: "+new Gson().toJson(resultBean)); + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseHandleView.setText(data.getUrgeRemarks()); + caseSituationView.setText(data.getDescription()); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + List urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + urls.add(StringHelper.appendCompleteURL(s)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setVisibility(View.VISIBLE); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 1fd547e..77c7b01 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -3,17 +3,24 @@ import android.content.Intent; import android.util.Log; import android.view.View; -import android.widget.GridView; import android.widget.RelativeLayout; import android.widget.TextView; import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.util.ArrayList; @@ -45,11 +52,16 @@ @BindView(R.id.caseSituationView) TextView caseSituationView; @BindView(R.id.casePicGridView) - GridView casePicGridView; + RecyclerView casePicGridView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; + private CaseDetailPresenterImpl caseDetailPresenter; - private List dataBeans = new ArrayList<>(); + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private Gson gson; + private List urls = new ArrayList<>(); @Override public int initLayoutView() { @@ -73,6 +85,8 @@ String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); + + gson = new Gson(); } @Override @@ -84,23 +98,58 @@ public void obtainCaseDetailData(CaseDetailBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - this.dataBeans = resultBean.getData(); - CaseDetailBean.DataBean dataBean = resultBean.getData().get(0);//有且之后一个 - caseNumberView.setText(dataBean.getCaseid()); - caseStatusView.setText(dataBean.getCaseStateName()); - caseTypeView.setText(dataBean.getEorcName()); - caseLargeTypeView.setText(dataBean.getCasetypeName()); - caseSmallTypeView.setText(dataBean.getCasetypeDetailName()); - caseCommunityView.setText(dataBean.getCommunityName()); - casePlaceView.setText(dataBean.getFieldintro()); - caseSituationView.setText(dataBean.getDescription()); - int caseState = dataBean.getCaseState(); - if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { - handleRecordLayout.setVisibility(View.GONE); - } else { - handleRecordLayout.setVisibility(View.VISIBLE); + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseSituationView.setText(data.getDescription()); + List mediaList = gson.fromJson(data.getFileIdVerify(), new TypeToken>() { + }.getType()); + for (String media : mediaList) { + if (media.endsWith("jpeg") || media.endsWith("jpg") || media.endsWith("png")) { + if (media.startsWith("http")) { + urls.add(media); + } else { + urls.add(StringHelper.appendCompleteURL(media)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicGridView.setVisibility(View.VISIBLE); + casePicGridView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicGridView.addItemDecoration(new ItemDecorationSpace()); + casePicGridView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } } } + int caseState = data.getCaseState(); + if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { + handleRecordLayout.setVisibility(View.GONE); + } else { + handleRecordLayout.setVisibility(View.VISIBLE); + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); } @OnClick({R.id.caseAudioView, R.id.handleRecordLayout}) @@ -108,16 +157,14 @@ public void onClick(View v) { switch (v.getId()) { case R.id.caseAudioView: - if (dataBeans.size() > 0) { - String audioIdVerify = dataBeans.get(0).getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - } + String audioIdVerify = data.getAudioIdVerify(); + String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); + String[] split = fileIdVerify.split(","); + Log.d(TAG, Arrays.toString(split)); break; case R.id.handleRecordLayout: Intent intent = new Intent(this, CaseProcessActivity.class); - intent.putExtra("processId", dataBeans.get(0).getProcessId()); + intent.putExtra("processId", data.getProcessId()); startActivity(intent); break; } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index f365d3d..4dd5e6a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; @@ -58,6 +59,7 @@ private List dataBeans = new ArrayList<>(); private boolean isRefresh, isLoadMore = false; private WeakReferenceHandler weakReferenceHandler; + private QMUITipDialog searchDialog; @Override public int initLayoutView() { @@ -78,6 +80,10 @@ @Override public void initData() { + searchDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("查询中,请稍后") + .create(); caseListPresenter = new CaseListPresenterImpl(this); weakReferenceHandler = new WeakReferenceHandler(this); typeCode = getIntent().getStringExtra("typeCode"); @@ -156,6 +162,16 @@ } @Override + public void showProgress() { + searchDialog.show(); + } + + @Override + public void hideProgress() { + searchDialog.hide(); + } + + @Override public void obtainCaseListData(CaseListResultBean resultBean) { if (resultBean.isSuccess()) { List dataRows = resultBean.getData().getRows(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java index a5f4723..c12f41a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java @@ -21,14 +21,8 @@ import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import java.util.List; - import butterknife.BindView; -import static com.casic.dcms.utils.TimeLineDecoration.BEGIN; -import static com.casic.dcms.utils.TimeLineDecoration.END_FULL; -import static com.casic.dcms.utils.TimeLineDecoration.NORMAL; - public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { private static final String TAG = "CaseProcessActivity"; @@ -39,7 +33,6 @@ RecyclerView processRecyclerView; private CaseProcessPresenterImpl caseProcessPresenter; private QMUITipDialog loadingDialog; - private ProcessLineAdapter adapter; @Override public int initLayoutView() { @@ -64,7 +57,6 @@ .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) .setTipWord("获取记录中,请稍后") .create(); - adapter = new ProcessLineAdapter(this); } @Override @@ -83,19 +75,15 @@ public void obtainCaseProcessData(CaseProcessBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); + ProcessLineAdapter adapter = new ProcessLineAdapter(this, resultBean.getData()); processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); processRecyclerView.setHasFixedSize(true); processRecyclerView.setNestedScrollingEnabled(false); processRecyclerView.setItemAnimator(new DefaultItemAnimator()); TimeLineDecoration decoration = new TimeLineDecoration(this) - .setDividerHeight(1) - .setDividerColor(R.color.lightGray) - .setDividerPaddingLeft(QMUIDisplayHelper.dp2px(this, 10)) - .setDividerPaddingRight(QMUIDisplayHelper.dp2px(this, 10)) .setLineColor(R.color.colorPrimary) - .setLineWidth(QMUIDisplayHelper.dp2px(this, 1)) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 10)) + .setLineWidth(1) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) .setMarkerColor(R.color.colorAccent) .setMarkerRadius(10) .setBeginMarker(R.drawable.ic_warning) @@ -109,20 +97,19 @@ @Nullable @Override public Rect getRect(int position) { - //item之间的间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 40), QMUIDisplayHelper.dp2px(context, 10), + //item内间距 + return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 20), 0, 0); } @Override public int getTimeLineType(int position) { - if (position == 0) return BEGIN; - else if (position == adapter.getItemCount() - 1) return END_FULL; - else return NORMAL; + if (position == 0) return TimeLineDecoration.BEGIN; + else if (position == adapter.getItemCount() - 1) return TimeLineDecoration.END_FULL; + else return TimeLineDecoration.NORMAL; } }); processRecyclerView.addItemDecoration(decoration); - adapter.setList(dataBeans); processRecyclerView.setAdapter(adapter); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 452726c..14e360c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -5,10 +5,8 @@ import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.ImageView; import android.widget.TextView; -import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -22,13 +20,10 @@ import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; import com.casic.dcms.utils.ColorHelper; -import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.gyf.immersionbar.ImmersionBar; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.io.IOException; import java.util.ArrayList; @@ -40,9 +35,8 @@ public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - private static final String TAG = "VerifiedDetailActivity"; - @BindView(R.id.leftBackView) - ImageView leftBackView; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; @BindView(R.id.caseNumberView) TextView caseNumberView; @BindView(R.id.caseTypeView) @@ -85,9 +79,9 @@ @Override protected void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(new View.OnClickListener() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); @@ -111,7 +105,6 @@ @Override public void obtainCaseDetailData(CaseDetailBean resultBean) { -// Log.d(TAG, "obtainCaseDetailData: " + gson.toJson(resultBean)); if (resultBean.isSuccess()) { this.data = resultBean.getData().get(0); caseNumberView.setText(data.getCaseid()); @@ -220,43 +213,21 @@ @Override public void onClick(View v) { if (v.getId() == R.id.locationMapView) { - String type = caseTypeView.getText().toString(); - if (type.equals("请选择")) { - ToastHelper.showToast("请先选择案卷类型", ToastHelper.WARING); + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); return; } - int source = data.getSource(); - if (source == 11 || source == 12) { - Intent intent = new Intent(this, ArcGISMapActivity.class); - intent.putExtra("type", type); - startActivityForResult(intent, Constant.REQUEST_MAP_CODE); - } else { - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("lng", Double.parseDouble(data.getLng())); - intent.putExtra("lat", Double.parseDouble(data.getLat())); - startActivity(intent); + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; } - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - if (requestCode == Constant.REQUEST_MAP_CODE) { - if (data == null) { - return; - } - String community = data.getStringExtra("community"); - String casePlace = data.getStringExtra("pos"); - caseCommunityView.setText(community); - if (TextUtils.isEmpty(casePlace)) { - casePlaceView.setText(community); - } else { - casePlaceView.setText(casePlace); - } - SaveKeyValues.removeKey("CommunityName"); - } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 8203d37..d824e9b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -47,7 +47,6 @@ import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.google.gson.Gson; import com.gyf.immersionbar.ImmersionBar; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; @@ -132,7 +131,6 @@ RelativeLayout caseSmallClassLayout; private CaseDetailPresenterImpl caseDetailPresenter; - private Gson gson; private CaseLargeClassPresenterImpl caseLargeClassPresenter; private List largeClassBeans; private CaseSmallClassPresenterImpl caseSmallClassPresenter; @@ -172,7 +170,6 @@ @Override public void initData() { - gson = new Gson(); mediaPlayer = new MediaPlayer(); largeClassBeans = new ArrayList<>(); smallClassBeans = new ArrayList<>(); diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index 820510b..2b72d2c 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -13,7 +13,6 @@ import com.casic.dcms.utils.callback.ILocationListener; import com.esri.arcgisruntime.data.ServiceFeatureTable; import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReferences; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; import com.esri.arcgisruntime.layers.FeatureLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -39,6 +38,8 @@ @BindView(R.id.mapView) MapView mapView; + private double lng, lat; + @Override public int initLayoutView() { return R.layout.activity_gis; @@ -46,7 +47,7 @@ @Override protected void setupTopBarLayout() { - gisTopLayout.setTitle("查看地图").setTextColor(ContextCompat.getColor(this, R.color.white)); + gisTopLayout.setTitle("查看案卷位置").setTextColor(ContextCompat.getColor(this, R.color.white)); gisTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); gisTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { @Override @@ -58,8 +59,10 @@ @Override public void initData() { - double lng = getIntent().getDoubleExtra("lng", 0); - double lat = getIntent().getDoubleExtra("lat", 0); + String caseType = getIntent().getStringExtra("caseType"); + lng = getIntent().getDoubleExtra("lng", 0); + lat = getIntent().getDoubleExtra("lat", 0); +// Log.d(TAG, "[" + lng + "," + lat + "]"); mapView.setAttributionTextVisible(false);//去掉左下角属性标识 mapView.setViewpointScaleAsync(500);//数字越大,放大比例越小 @@ -76,27 +79,46 @@ ServiceFeatureTable communityFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/4"); communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - - //单元网格 (ID: 6) - ServiceFeatureTable unitFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/6"); - unitFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer unitLayer = new FeatureLayer(unitFeatureTable); - - //部件点图层 (ID: 0) - ServiceFeatureTable pointFeatureTable = new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL + "/0"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, unitLayer, pointLayer)); - - //移到案卷定位点 - addMarker(new Point(lng, lat, SpatialReferences.getWgs84())); - + assert caseType != null; + switch (caseType) { + case "事件": + //单元网格 (ID: 6) + ServiceFeatureTable unitFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/6"); + unitFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); + FeatureLayer unitLayer = new FeatureLayer(unitFeatureTable); + arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, unitLayer)); + break; + case "部件": + //部件点图层 (ID: 0) + ServiceFeatureTable pointFeatureTable = new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL + "/0"); + pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); + FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); + arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); + break; + } mapView.setMap(arcGISMap); + mapView.setViewpointCenterAsync(new Point(lng, lat)); } +// @SuppressLint("ClickableViewAccessibility") @Override public void initEvent() { - +// mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { +// @Override +// public boolean onSingleTapConfirmed(MotionEvent e) { +// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); +// Point clickPoint = mapView.screenToLocation(screenPoint); +// Log.d(TAG, "clickPoint: " + clickPoint); +// //[116.591999, 28.241346, 0.000000, NaN] SR: 4326 +// +// Point point = new Point(lng, lat, SpatialReference.create(4326)); +// Log.d(TAG, "point: " + point); +// //[116.650769, 28.216684, 0.000000, NaN] SR: 4326 +// +// addMarker(clickPoint); +// return super.onSingleTapConfirmed(e); +// } +// }); } /** diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java index 960dcbf..5d977b5 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -16,6 +17,7 @@ import com.casic.dcms.bean.CaseCheckBean; import com.casic.dcms.mvp.presenter.CaseCheckPresenterImpl; import com.casic.dcms.mvp.view.ICaseCheckView; +import com.casic.dcms.ui.CaseCheckDetailActivity; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.scwang.smartrefresh.layout.SmartRefreshLayout; @@ -130,10 +132,9 @@ adapter.setOnItemClickListener(new CaseCheckResultAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(context, CaseDetailActivity.class); -// intent.putExtra("id", dataRows.get(position).getId()); -// startActivity( intent); - ToastHelper.showToast("详情页正在完善中", ToastHelper.ERROR); + Intent intent = new Intent(context, CaseCheckDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java index f701096..c312ca3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -16,6 +17,7 @@ import com.casic.dcms.bean.CaseCheckedBean; import com.casic.dcms.mvp.presenter.CaseCheckedPresenterImpl; import com.casic.dcms.mvp.view.ICaseCheckedView; +import com.casic.dcms.ui.CaseCheckedDetailActivity; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.scwang.smartrefresh.layout.SmartRefreshLayout; @@ -131,10 +133,9 @@ adapter.setOnItemClickListener(new CaseCheckedResultAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(context, CaseDetailActivity.class); -// intent.putExtra("id", dataRows.get(position).getId()); -// startActivity( intent); - ToastHelper.showToast("详情页正在完善中", ToastHelper.ERROR); + Intent intent = new Intent(context, CaseCheckedDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); } }); } diff --git a/app/src/main/res/layout/activity_case_check_detail.xml b/app/src/main/res/layout/activity_case_check_detail.xml new file mode 100644 index 0000000..26a1a9b --- /dev/null +++ b/app/src/main/res/layout/activity_case_check_detail.xml @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_case_checked_detail.xml b/app/src/main/res/layout/activity_case_checked_detail.xml new file mode 100644 index 0000000..284d368 --- /dev/null +++ b/app/src/main/res/layout/activity_case_checked_detail.xml @@ -0,0 +1,321 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f105e36..51e7255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:usesCleartextTraffic="true"> + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + { private Context mContext; - private List mList; + private List mProcessList; - public ProcessLineAdapter(Context context) { + public ProcessLineAdapter(Context context, List list) { mContext = context; + this.mProcessList = list; } - public void setList(List list) { - mList = list; - } - + @NotNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_case_process, parent, false); @@ -36,37 +35,35 @@ @Override public void onBindViewHolder(ViewHolder holder, int position) { - holder.bindData(mList.get(position)); + holder.bindData(mProcessList.get(position)); } @Override public int getItemCount() { - return mList.size(); + return mProcessList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - private TextView handlePersonTag; + private TextView operationTypeName; private TextView handlePersonView; - private TextView handleTimeTag; private TextView handleTimeView; - private TextView handleResultTag; private TextView handleResultView; private RelativeLayout handlePicLayout; - private GridView handlePicView; + private RecyclerView handlePicView; public ViewHolder(View view) { super(view); - handlePersonTag = view.findViewById(R.id.handlePersonTag); + operationTypeName = view.findViewById(R.id.operationTypeName); handlePersonView = view.findViewById(R.id.handlePersonView); - handleTimeTag = view.findViewById(R.id.handleTimeTag); handleTimeView = view.findViewById(R.id.handleTimeView); - handleResultTag = view.findViewById(R.id.handleResultTag); handleResultView = view.findViewById(R.id.handleResultView); handlePicLayout = view.findViewById(R.id.handlePicLayout); handlePicView = view.findViewById(R.id.handlePicView); } public void bindData(CaseProcessBean.DataBean dataBean) { + String typeName = dataBean.getOperationTypeName(); + operationTypeName.setText(typeName); handlePersonView.setText(dataBean.getUserName()); handleTimeView.setText(dataBean.getTime()); handleResultView.setText(dataBean.getRemarks()); diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index 8f24f23..9c323dd 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,6 +18,7 @@ @Override public void onReadyRetrofitRequest(String casetypeCode, String casetypeDetailCode, String caseStateId, String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { + view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(casetypeCode, casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, offset)); } @@ -29,11 +30,12 @@ @Override public void onSuccess(CaseListResultBean resultBean) { + view.hideProgress(); view.obtainCaseListData(resultBean); } @Override public void onFailure(Throwable throwable) { - + view.hideProgress(); } } diff --git a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java index 4d22718..60ec154 100644 --- a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java +++ b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java @@ -3,5 +3,9 @@ import com.casic.dcms.bean.CaseListResultBean; public interface ICaseListView { + void showProgress(); + + void hideProgress(); + void obtainCaseListData(CaseListResultBean resultBean); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java new file mode 100644 index 0000000..630670a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -0,0 +1,52 @@ +package com.casic.dcms.ui; + +import android.view.View; +import android.widget.ImageView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.utils.StatusBarColorUtil; +import com.gyf.immersionbar.ImmersionBar; + +import butterknife.BindView; + +public class CaseCheckDetailActivity extends BaseActivity implements View.OnClickListener { + + private static final String TAG = "CaseCheckDetailActivity"; + @BindView(R.id.leftBackView) + ImageView leftBackView; + + @Override + public int initLayoutView() { + return R.layout.activity_case_check_detail; + } + + @Override + protected void setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + leftBackView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + + } + + @Override + public void initEvent() { + + } + + @Override + public void onClick(View v) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java new file mode 100644 index 0000000..a061d3c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -0,0 +1,163 @@ +package com.casic.dcms.ui; + +import android.content.Intent; +import android.media.MediaPlayer; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { + + private static final String TAG = "CheckedDetailActivity"; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.caseHandleView) + TextView caseHandleView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; + + private MediaPlayer mediaPlayer; + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + public int initLayoutView() { + return R.layout.activity_case_checked_detail; + } + + @Override + protected void setupTopBarLayout() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mediaPlayer = new MediaPlayer(); + + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @OnClick(R.id.handleLayout) + @Override + public void onClick(View v) { + if (v.getId() == R.id.handleLayout) { + Intent intent = new Intent(this, CaseProcessActivity.class); + intent.putExtra("processId", data.getProcessId()); + startActivity(intent); + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { +// Log.d(TAG, "obtainCaseDetailData: "+new Gson().toJson(resultBean)); + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseHandleView.setText(data.getUrgeRemarks()); + caseSituationView.setText(data.getDescription()); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + List urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + urls.add(StringHelper.appendCompleteURL(s)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setVisibility(View.VISIBLE); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 1fd547e..77c7b01 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -3,17 +3,24 @@ import android.content.Intent; import android.util.Log; import android.view.View; -import android.widget.GridView; import android.widget.RelativeLayout; import android.widget.TextView; import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.util.ArrayList; @@ -45,11 +52,16 @@ @BindView(R.id.caseSituationView) TextView caseSituationView; @BindView(R.id.casePicGridView) - GridView casePicGridView; + RecyclerView casePicGridView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; + private CaseDetailPresenterImpl caseDetailPresenter; - private List dataBeans = new ArrayList<>(); + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private Gson gson; + private List urls = new ArrayList<>(); @Override public int initLayoutView() { @@ -73,6 +85,8 @@ String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); + + gson = new Gson(); } @Override @@ -84,23 +98,58 @@ public void obtainCaseDetailData(CaseDetailBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - this.dataBeans = resultBean.getData(); - CaseDetailBean.DataBean dataBean = resultBean.getData().get(0);//有且之后一个 - caseNumberView.setText(dataBean.getCaseid()); - caseStatusView.setText(dataBean.getCaseStateName()); - caseTypeView.setText(dataBean.getEorcName()); - caseLargeTypeView.setText(dataBean.getCasetypeName()); - caseSmallTypeView.setText(dataBean.getCasetypeDetailName()); - caseCommunityView.setText(dataBean.getCommunityName()); - casePlaceView.setText(dataBean.getFieldintro()); - caseSituationView.setText(dataBean.getDescription()); - int caseState = dataBean.getCaseState(); - if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { - handleRecordLayout.setVisibility(View.GONE); - } else { - handleRecordLayout.setVisibility(View.VISIBLE); + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseSituationView.setText(data.getDescription()); + List mediaList = gson.fromJson(data.getFileIdVerify(), new TypeToken>() { + }.getType()); + for (String media : mediaList) { + if (media.endsWith("jpeg") || media.endsWith("jpg") || media.endsWith("png")) { + if (media.startsWith("http")) { + urls.add(media); + } else { + urls.add(StringHelper.appendCompleteURL(media)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicGridView.setVisibility(View.VISIBLE); + casePicGridView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicGridView.addItemDecoration(new ItemDecorationSpace()); + casePicGridView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } } } + int caseState = data.getCaseState(); + if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { + handleRecordLayout.setVisibility(View.GONE); + } else { + handleRecordLayout.setVisibility(View.VISIBLE); + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); } @OnClick({R.id.caseAudioView, R.id.handleRecordLayout}) @@ -108,16 +157,14 @@ public void onClick(View v) { switch (v.getId()) { case R.id.caseAudioView: - if (dataBeans.size() > 0) { - String audioIdVerify = dataBeans.get(0).getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - } + String audioIdVerify = data.getAudioIdVerify(); + String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); + String[] split = fileIdVerify.split(","); + Log.d(TAG, Arrays.toString(split)); break; case R.id.handleRecordLayout: Intent intent = new Intent(this, CaseProcessActivity.class); - intent.putExtra("processId", dataBeans.get(0).getProcessId()); + intent.putExtra("processId", data.getProcessId()); startActivity(intent); break; } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index f365d3d..4dd5e6a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; @@ -58,6 +59,7 @@ private List dataBeans = new ArrayList<>(); private boolean isRefresh, isLoadMore = false; private WeakReferenceHandler weakReferenceHandler; + private QMUITipDialog searchDialog; @Override public int initLayoutView() { @@ -78,6 +80,10 @@ @Override public void initData() { + searchDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("查询中,请稍后") + .create(); caseListPresenter = new CaseListPresenterImpl(this); weakReferenceHandler = new WeakReferenceHandler(this); typeCode = getIntent().getStringExtra("typeCode"); @@ -156,6 +162,16 @@ } @Override + public void showProgress() { + searchDialog.show(); + } + + @Override + public void hideProgress() { + searchDialog.hide(); + } + + @Override public void obtainCaseListData(CaseListResultBean resultBean) { if (resultBean.isSuccess()) { List dataRows = resultBean.getData().getRows(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java index a5f4723..c12f41a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java @@ -21,14 +21,8 @@ import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import java.util.List; - import butterknife.BindView; -import static com.casic.dcms.utils.TimeLineDecoration.BEGIN; -import static com.casic.dcms.utils.TimeLineDecoration.END_FULL; -import static com.casic.dcms.utils.TimeLineDecoration.NORMAL; - public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { private static final String TAG = "CaseProcessActivity"; @@ -39,7 +33,6 @@ RecyclerView processRecyclerView; private CaseProcessPresenterImpl caseProcessPresenter; private QMUITipDialog loadingDialog; - private ProcessLineAdapter adapter; @Override public int initLayoutView() { @@ -64,7 +57,6 @@ .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) .setTipWord("获取记录中,请稍后") .create(); - adapter = new ProcessLineAdapter(this); } @Override @@ -83,19 +75,15 @@ public void obtainCaseProcessData(CaseProcessBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); + ProcessLineAdapter adapter = new ProcessLineAdapter(this, resultBean.getData()); processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); processRecyclerView.setHasFixedSize(true); processRecyclerView.setNestedScrollingEnabled(false); processRecyclerView.setItemAnimator(new DefaultItemAnimator()); TimeLineDecoration decoration = new TimeLineDecoration(this) - .setDividerHeight(1) - .setDividerColor(R.color.lightGray) - .setDividerPaddingLeft(QMUIDisplayHelper.dp2px(this, 10)) - .setDividerPaddingRight(QMUIDisplayHelper.dp2px(this, 10)) .setLineColor(R.color.colorPrimary) - .setLineWidth(QMUIDisplayHelper.dp2px(this, 1)) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 10)) + .setLineWidth(1) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) .setMarkerColor(R.color.colorAccent) .setMarkerRadius(10) .setBeginMarker(R.drawable.ic_warning) @@ -109,20 +97,19 @@ @Nullable @Override public Rect getRect(int position) { - //item之间的间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 40), QMUIDisplayHelper.dp2px(context, 10), + //item内间距 + return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 20), 0, 0); } @Override public int getTimeLineType(int position) { - if (position == 0) return BEGIN; - else if (position == adapter.getItemCount() - 1) return END_FULL; - else return NORMAL; + if (position == 0) return TimeLineDecoration.BEGIN; + else if (position == adapter.getItemCount() - 1) return TimeLineDecoration.END_FULL; + else return TimeLineDecoration.NORMAL; } }); processRecyclerView.addItemDecoration(decoration); - adapter.setList(dataBeans); processRecyclerView.setAdapter(adapter); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 452726c..14e360c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -5,10 +5,8 @@ import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.ImageView; import android.widget.TextView; -import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -22,13 +20,10 @@ import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; import com.casic.dcms.utils.ColorHelper; -import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.gyf.immersionbar.ImmersionBar; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.io.IOException; import java.util.ArrayList; @@ -40,9 +35,8 @@ public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - private static final String TAG = "VerifiedDetailActivity"; - @BindView(R.id.leftBackView) - ImageView leftBackView; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; @BindView(R.id.caseNumberView) TextView caseNumberView; @BindView(R.id.caseTypeView) @@ -85,9 +79,9 @@ @Override protected void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(new View.OnClickListener() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); @@ -111,7 +105,6 @@ @Override public void obtainCaseDetailData(CaseDetailBean resultBean) { -// Log.d(TAG, "obtainCaseDetailData: " + gson.toJson(resultBean)); if (resultBean.isSuccess()) { this.data = resultBean.getData().get(0); caseNumberView.setText(data.getCaseid()); @@ -220,43 +213,21 @@ @Override public void onClick(View v) { if (v.getId() == R.id.locationMapView) { - String type = caseTypeView.getText().toString(); - if (type.equals("请选择")) { - ToastHelper.showToast("请先选择案卷类型", ToastHelper.WARING); + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); return; } - int source = data.getSource(); - if (source == 11 || source == 12) { - Intent intent = new Intent(this, ArcGISMapActivity.class); - intent.putExtra("type", type); - startActivityForResult(intent, Constant.REQUEST_MAP_CODE); - } else { - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("lng", Double.parseDouble(data.getLng())); - intent.putExtra("lat", Double.parseDouble(data.getLat())); - startActivity(intent); + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; } - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - if (requestCode == Constant.REQUEST_MAP_CODE) { - if (data == null) { - return; - } - String community = data.getStringExtra("community"); - String casePlace = data.getStringExtra("pos"); - caseCommunityView.setText(community); - if (TextUtils.isEmpty(casePlace)) { - casePlaceView.setText(community); - } else { - casePlaceView.setText(casePlace); - } - SaveKeyValues.removeKey("CommunityName"); - } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 8203d37..d824e9b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -47,7 +47,6 @@ import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.google.gson.Gson; import com.gyf.immersionbar.ImmersionBar; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; @@ -132,7 +131,6 @@ RelativeLayout caseSmallClassLayout; private CaseDetailPresenterImpl caseDetailPresenter; - private Gson gson; private CaseLargeClassPresenterImpl caseLargeClassPresenter; private List largeClassBeans; private CaseSmallClassPresenterImpl caseSmallClassPresenter; @@ -172,7 +170,6 @@ @Override public void initData() { - gson = new Gson(); mediaPlayer = new MediaPlayer(); largeClassBeans = new ArrayList<>(); smallClassBeans = new ArrayList<>(); diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index 820510b..2b72d2c 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -13,7 +13,6 @@ import com.casic.dcms.utils.callback.ILocationListener; import com.esri.arcgisruntime.data.ServiceFeatureTable; import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReferences; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; import com.esri.arcgisruntime.layers.FeatureLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -39,6 +38,8 @@ @BindView(R.id.mapView) MapView mapView; + private double lng, lat; + @Override public int initLayoutView() { return R.layout.activity_gis; @@ -46,7 +47,7 @@ @Override protected void setupTopBarLayout() { - gisTopLayout.setTitle("查看地图").setTextColor(ContextCompat.getColor(this, R.color.white)); + gisTopLayout.setTitle("查看案卷位置").setTextColor(ContextCompat.getColor(this, R.color.white)); gisTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); gisTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { @Override @@ -58,8 +59,10 @@ @Override public void initData() { - double lng = getIntent().getDoubleExtra("lng", 0); - double lat = getIntent().getDoubleExtra("lat", 0); + String caseType = getIntent().getStringExtra("caseType"); + lng = getIntent().getDoubleExtra("lng", 0); + lat = getIntent().getDoubleExtra("lat", 0); +// Log.d(TAG, "[" + lng + "," + lat + "]"); mapView.setAttributionTextVisible(false);//去掉左下角属性标识 mapView.setViewpointScaleAsync(500);//数字越大,放大比例越小 @@ -76,27 +79,46 @@ ServiceFeatureTable communityFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/4"); communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - - //单元网格 (ID: 6) - ServiceFeatureTable unitFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/6"); - unitFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer unitLayer = new FeatureLayer(unitFeatureTable); - - //部件点图层 (ID: 0) - ServiceFeatureTable pointFeatureTable = new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL + "/0"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, unitLayer, pointLayer)); - - //移到案卷定位点 - addMarker(new Point(lng, lat, SpatialReferences.getWgs84())); - + assert caseType != null; + switch (caseType) { + case "事件": + //单元网格 (ID: 6) + ServiceFeatureTable unitFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/6"); + unitFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); + FeatureLayer unitLayer = new FeatureLayer(unitFeatureTable); + arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, unitLayer)); + break; + case "部件": + //部件点图层 (ID: 0) + ServiceFeatureTable pointFeatureTable = new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL + "/0"); + pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); + FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); + arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); + break; + } mapView.setMap(arcGISMap); + mapView.setViewpointCenterAsync(new Point(lng, lat)); } +// @SuppressLint("ClickableViewAccessibility") @Override public void initEvent() { - +// mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { +// @Override +// public boolean onSingleTapConfirmed(MotionEvent e) { +// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); +// Point clickPoint = mapView.screenToLocation(screenPoint); +// Log.d(TAG, "clickPoint: " + clickPoint); +// //[116.591999, 28.241346, 0.000000, NaN] SR: 4326 +// +// Point point = new Point(lng, lat, SpatialReference.create(4326)); +// Log.d(TAG, "point: " + point); +// //[116.650769, 28.216684, 0.000000, NaN] SR: 4326 +// +// addMarker(clickPoint); +// return super.onSingleTapConfirmed(e); +// } +// }); } /** diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java index 960dcbf..5d977b5 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -16,6 +17,7 @@ import com.casic.dcms.bean.CaseCheckBean; import com.casic.dcms.mvp.presenter.CaseCheckPresenterImpl; import com.casic.dcms.mvp.view.ICaseCheckView; +import com.casic.dcms.ui.CaseCheckDetailActivity; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.scwang.smartrefresh.layout.SmartRefreshLayout; @@ -130,10 +132,9 @@ adapter.setOnItemClickListener(new CaseCheckResultAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(context, CaseDetailActivity.class); -// intent.putExtra("id", dataRows.get(position).getId()); -// startActivity( intent); - ToastHelper.showToast("详情页正在完善中", ToastHelper.ERROR); + Intent intent = new Intent(context, CaseCheckDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java index f701096..c312ca3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -16,6 +17,7 @@ import com.casic.dcms.bean.CaseCheckedBean; import com.casic.dcms.mvp.presenter.CaseCheckedPresenterImpl; import com.casic.dcms.mvp.view.ICaseCheckedView; +import com.casic.dcms.ui.CaseCheckedDetailActivity; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.scwang.smartrefresh.layout.SmartRefreshLayout; @@ -131,10 +133,9 @@ adapter.setOnItemClickListener(new CaseCheckedResultAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(context, CaseDetailActivity.class); -// intent.putExtra("id", dataRows.get(position).getId()); -// startActivity( intent); - ToastHelper.showToast("详情页正在完善中", ToastHelper.ERROR); + Intent intent = new Intent(context, CaseCheckedDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); } }); } diff --git a/app/src/main/res/layout/activity_case_check_detail.xml b/app/src/main/res/layout/activity_case_check_detail.xml new file mode 100644 index 0000000..26a1a9b --- /dev/null +++ b/app/src/main/res/layout/activity_case_check_detail.xml @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_case_checked_detail.xml b/app/src/main/res/layout/activity_case_checked_detail.xml new file mode 100644 index 0000000..284d368 --- /dev/null +++ b/app/src/main/res/layout/activity_case_checked_detail.xml @@ -0,0 +1,321 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_case_detail.xml b/app/src/main/res/layout/activity_case_detail.xml index 4c967db..104eb8d 100644 --- a/app/src/main/res/layout/activity_case_detail.xml +++ b/app/src/main/res/layout/activity_case_detail.xml @@ -36,8 +36,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="202103160001" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -59,8 +57,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="现场核查" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -82,8 +78,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="事件" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -105,8 +99,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="宣传广告" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -128,8 +120,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="违法小广告" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -151,8 +141,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="富力城" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -173,8 +161,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" - android:text="如家超市前花坛内" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -198,8 +184,6 @@ android:layout_alignParentEnd="true" android:layout_toEndOf="@id/v" android:gravity="end" - android:text="家超市前花坛内超市前花坛内" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -216,15 +200,23 @@ android:text="案卷图片" android:textSize="@dimen/textFontSize" /> - + android:visibility="gone" /> + + @@ -246,9 +238,8 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:background="@drawable/bg_layout" - android:paddingHorizontal="50dp" - android:paddingVertical="3dp" - android:text="33''" /> + android:paddingHorizontal="20dp" + android:paddingVertical="3dp" /> diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f105e36..51e7255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:usesCleartextTraffic="true"> + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + { private Context mContext; - private List mList; + private List mProcessList; - public ProcessLineAdapter(Context context) { + public ProcessLineAdapter(Context context, List list) { mContext = context; + this.mProcessList = list; } - public void setList(List list) { - mList = list; - } - + @NotNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_case_process, parent, false); @@ -36,37 +35,35 @@ @Override public void onBindViewHolder(ViewHolder holder, int position) { - holder.bindData(mList.get(position)); + holder.bindData(mProcessList.get(position)); } @Override public int getItemCount() { - return mList.size(); + return mProcessList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - private TextView handlePersonTag; + private TextView operationTypeName; private TextView handlePersonView; - private TextView handleTimeTag; private TextView handleTimeView; - private TextView handleResultTag; private TextView handleResultView; private RelativeLayout handlePicLayout; - private GridView handlePicView; + private RecyclerView handlePicView; public ViewHolder(View view) { super(view); - handlePersonTag = view.findViewById(R.id.handlePersonTag); + operationTypeName = view.findViewById(R.id.operationTypeName); handlePersonView = view.findViewById(R.id.handlePersonView); - handleTimeTag = view.findViewById(R.id.handleTimeTag); handleTimeView = view.findViewById(R.id.handleTimeView); - handleResultTag = view.findViewById(R.id.handleResultTag); handleResultView = view.findViewById(R.id.handleResultView); handlePicLayout = view.findViewById(R.id.handlePicLayout); handlePicView = view.findViewById(R.id.handlePicView); } public void bindData(CaseProcessBean.DataBean dataBean) { + String typeName = dataBean.getOperationTypeName(); + operationTypeName.setText(typeName); handlePersonView.setText(dataBean.getUserName()); handleTimeView.setText(dataBean.getTime()); handleResultView.setText(dataBean.getRemarks()); diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index 8f24f23..9c323dd 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,6 +18,7 @@ @Override public void onReadyRetrofitRequest(String casetypeCode, String casetypeDetailCode, String caseStateId, String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { + view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(casetypeCode, casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, offset)); } @@ -29,11 +30,12 @@ @Override public void onSuccess(CaseListResultBean resultBean) { + view.hideProgress(); view.obtainCaseListData(resultBean); } @Override public void onFailure(Throwable throwable) { - + view.hideProgress(); } } diff --git a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java index 4d22718..60ec154 100644 --- a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java +++ b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java @@ -3,5 +3,9 @@ import com.casic.dcms.bean.CaseListResultBean; public interface ICaseListView { + void showProgress(); + + void hideProgress(); + void obtainCaseListData(CaseListResultBean resultBean); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java new file mode 100644 index 0000000..630670a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -0,0 +1,52 @@ +package com.casic.dcms.ui; + +import android.view.View; +import android.widget.ImageView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.utils.StatusBarColorUtil; +import com.gyf.immersionbar.ImmersionBar; + +import butterknife.BindView; + +public class CaseCheckDetailActivity extends BaseActivity implements View.OnClickListener { + + private static final String TAG = "CaseCheckDetailActivity"; + @BindView(R.id.leftBackView) + ImageView leftBackView; + + @Override + public int initLayoutView() { + return R.layout.activity_case_check_detail; + } + + @Override + protected void setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + leftBackView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + + } + + @Override + public void initEvent() { + + } + + @Override + public void onClick(View v) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java new file mode 100644 index 0000000..a061d3c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -0,0 +1,163 @@ +package com.casic.dcms.ui; + +import android.content.Intent; +import android.media.MediaPlayer; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { + + private static final String TAG = "CheckedDetailActivity"; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.caseHandleView) + TextView caseHandleView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; + + private MediaPlayer mediaPlayer; + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + public int initLayoutView() { + return R.layout.activity_case_checked_detail; + } + + @Override + protected void setupTopBarLayout() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mediaPlayer = new MediaPlayer(); + + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @OnClick(R.id.handleLayout) + @Override + public void onClick(View v) { + if (v.getId() == R.id.handleLayout) { + Intent intent = new Intent(this, CaseProcessActivity.class); + intent.putExtra("processId", data.getProcessId()); + startActivity(intent); + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { +// Log.d(TAG, "obtainCaseDetailData: "+new Gson().toJson(resultBean)); + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseHandleView.setText(data.getUrgeRemarks()); + caseSituationView.setText(data.getDescription()); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + List urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + urls.add(StringHelper.appendCompleteURL(s)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setVisibility(View.VISIBLE); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 1fd547e..77c7b01 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -3,17 +3,24 @@ import android.content.Intent; import android.util.Log; import android.view.View; -import android.widget.GridView; import android.widget.RelativeLayout; import android.widget.TextView; import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.util.ArrayList; @@ -45,11 +52,16 @@ @BindView(R.id.caseSituationView) TextView caseSituationView; @BindView(R.id.casePicGridView) - GridView casePicGridView; + RecyclerView casePicGridView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; + private CaseDetailPresenterImpl caseDetailPresenter; - private List dataBeans = new ArrayList<>(); + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private Gson gson; + private List urls = new ArrayList<>(); @Override public int initLayoutView() { @@ -73,6 +85,8 @@ String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); + + gson = new Gson(); } @Override @@ -84,23 +98,58 @@ public void obtainCaseDetailData(CaseDetailBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - this.dataBeans = resultBean.getData(); - CaseDetailBean.DataBean dataBean = resultBean.getData().get(0);//有且之后一个 - caseNumberView.setText(dataBean.getCaseid()); - caseStatusView.setText(dataBean.getCaseStateName()); - caseTypeView.setText(dataBean.getEorcName()); - caseLargeTypeView.setText(dataBean.getCasetypeName()); - caseSmallTypeView.setText(dataBean.getCasetypeDetailName()); - caseCommunityView.setText(dataBean.getCommunityName()); - casePlaceView.setText(dataBean.getFieldintro()); - caseSituationView.setText(dataBean.getDescription()); - int caseState = dataBean.getCaseState(); - if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { - handleRecordLayout.setVisibility(View.GONE); - } else { - handleRecordLayout.setVisibility(View.VISIBLE); + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseSituationView.setText(data.getDescription()); + List mediaList = gson.fromJson(data.getFileIdVerify(), new TypeToken>() { + }.getType()); + for (String media : mediaList) { + if (media.endsWith("jpeg") || media.endsWith("jpg") || media.endsWith("png")) { + if (media.startsWith("http")) { + urls.add(media); + } else { + urls.add(StringHelper.appendCompleteURL(media)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicGridView.setVisibility(View.VISIBLE); + casePicGridView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicGridView.addItemDecoration(new ItemDecorationSpace()); + casePicGridView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } } } + int caseState = data.getCaseState(); + if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { + handleRecordLayout.setVisibility(View.GONE); + } else { + handleRecordLayout.setVisibility(View.VISIBLE); + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); } @OnClick({R.id.caseAudioView, R.id.handleRecordLayout}) @@ -108,16 +157,14 @@ public void onClick(View v) { switch (v.getId()) { case R.id.caseAudioView: - if (dataBeans.size() > 0) { - String audioIdVerify = dataBeans.get(0).getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - } + String audioIdVerify = data.getAudioIdVerify(); + String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); + String[] split = fileIdVerify.split(","); + Log.d(TAG, Arrays.toString(split)); break; case R.id.handleRecordLayout: Intent intent = new Intent(this, CaseProcessActivity.class); - intent.putExtra("processId", dataBeans.get(0).getProcessId()); + intent.putExtra("processId", data.getProcessId()); startActivity(intent); break; } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index f365d3d..4dd5e6a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; @@ -58,6 +59,7 @@ private List dataBeans = new ArrayList<>(); private boolean isRefresh, isLoadMore = false; private WeakReferenceHandler weakReferenceHandler; + private QMUITipDialog searchDialog; @Override public int initLayoutView() { @@ -78,6 +80,10 @@ @Override public void initData() { + searchDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("查询中,请稍后") + .create(); caseListPresenter = new CaseListPresenterImpl(this); weakReferenceHandler = new WeakReferenceHandler(this); typeCode = getIntent().getStringExtra("typeCode"); @@ -156,6 +162,16 @@ } @Override + public void showProgress() { + searchDialog.show(); + } + + @Override + public void hideProgress() { + searchDialog.hide(); + } + + @Override public void obtainCaseListData(CaseListResultBean resultBean) { if (resultBean.isSuccess()) { List dataRows = resultBean.getData().getRows(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java index a5f4723..c12f41a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java @@ -21,14 +21,8 @@ import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import java.util.List; - import butterknife.BindView; -import static com.casic.dcms.utils.TimeLineDecoration.BEGIN; -import static com.casic.dcms.utils.TimeLineDecoration.END_FULL; -import static com.casic.dcms.utils.TimeLineDecoration.NORMAL; - public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { private static final String TAG = "CaseProcessActivity"; @@ -39,7 +33,6 @@ RecyclerView processRecyclerView; private CaseProcessPresenterImpl caseProcessPresenter; private QMUITipDialog loadingDialog; - private ProcessLineAdapter adapter; @Override public int initLayoutView() { @@ -64,7 +57,6 @@ .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) .setTipWord("获取记录中,请稍后") .create(); - adapter = new ProcessLineAdapter(this); } @Override @@ -83,19 +75,15 @@ public void obtainCaseProcessData(CaseProcessBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); + ProcessLineAdapter adapter = new ProcessLineAdapter(this, resultBean.getData()); processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); processRecyclerView.setHasFixedSize(true); processRecyclerView.setNestedScrollingEnabled(false); processRecyclerView.setItemAnimator(new DefaultItemAnimator()); TimeLineDecoration decoration = new TimeLineDecoration(this) - .setDividerHeight(1) - .setDividerColor(R.color.lightGray) - .setDividerPaddingLeft(QMUIDisplayHelper.dp2px(this, 10)) - .setDividerPaddingRight(QMUIDisplayHelper.dp2px(this, 10)) .setLineColor(R.color.colorPrimary) - .setLineWidth(QMUIDisplayHelper.dp2px(this, 1)) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 10)) + .setLineWidth(1) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) .setMarkerColor(R.color.colorAccent) .setMarkerRadius(10) .setBeginMarker(R.drawable.ic_warning) @@ -109,20 +97,19 @@ @Nullable @Override public Rect getRect(int position) { - //item之间的间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 40), QMUIDisplayHelper.dp2px(context, 10), + //item内间距 + return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 20), 0, 0); } @Override public int getTimeLineType(int position) { - if (position == 0) return BEGIN; - else if (position == adapter.getItemCount() - 1) return END_FULL; - else return NORMAL; + if (position == 0) return TimeLineDecoration.BEGIN; + else if (position == adapter.getItemCount() - 1) return TimeLineDecoration.END_FULL; + else return TimeLineDecoration.NORMAL; } }); processRecyclerView.addItemDecoration(decoration); - adapter.setList(dataBeans); processRecyclerView.setAdapter(adapter); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 452726c..14e360c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -5,10 +5,8 @@ import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.ImageView; import android.widget.TextView; -import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -22,13 +20,10 @@ import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; import com.casic.dcms.utils.ColorHelper; -import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.gyf.immersionbar.ImmersionBar; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.io.IOException; import java.util.ArrayList; @@ -40,9 +35,8 @@ public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - private static final String TAG = "VerifiedDetailActivity"; - @BindView(R.id.leftBackView) - ImageView leftBackView; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; @BindView(R.id.caseNumberView) TextView caseNumberView; @BindView(R.id.caseTypeView) @@ -85,9 +79,9 @@ @Override protected void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(new View.OnClickListener() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); @@ -111,7 +105,6 @@ @Override public void obtainCaseDetailData(CaseDetailBean resultBean) { -// Log.d(TAG, "obtainCaseDetailData: " + gson.toJson(resultBean)); if (resultBean.isSuccess()) { this.data = resultBean.getData().get(0); caseNumberView.setText(data.getCaseid()); @@ -220,43 +213,21 @@ @Override public void onClick(View v) { if (v.getId() == R.id.locationMapView) { - String type = caseTypeView.getText().toString(); - if (type.equals("请选择")) { - ToastHelper.showToast("请先选择案卷类型", ToastHelper.WARING); + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); return; } - int source = data.getSource(); - if (source == 11 || source == 12) { - Intent intent = new Intent(this, ArcGISMapActivity.class); - intent.putExtra("type", type); - startActivityForResult(intent, Constant.REQUEST_MAP_CODE); - } else { - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("lng", Double.parseDouble(data.getLng())); - intent.putExtra("lat", Double.parseDouble(data.getLat())); - startActivity(intent); + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; } - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - if (requestCode == Constant.REQUEST_MAP_CODE) { - if (data == null) { - return; - } - String community = data.getStringExtra("community"); - String casePlace = data.getStringExtra("pos"); - caseCommunityView.setText(community); - if (TextUtils.isEmpty(casePlace)) { - casePlaceView.setText(community); - } else { - casePlaceView.setText(casePlace); - } - SaveKeyValues.removeKey("CommunityName"); - } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 8203d37..d824e9b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -47,7 +47,6 @@ import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.google.gson.Gson; import com.gyf.immersionbar.ImmersionBar; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; @@ -132,7 +131,6 @@ RelativeLayout caseSmallClassLayout; private CaseDetailPresenterImpl caseDetailPresenter; - private Gson gson; private CaseLargeClassPresenterImpl caseLargeClassPresenter; private List largeClassBeans; private CaseSmallClassPresenterImpl caseSmallClassPresenter; @@ -172,7 +170,6 @@ @Override public void initData() { - gson = new Gson(); mediaPlayer = new MediaPlayer(); largeClassBeans = new ArrayList<>(); smallClassBeans = new ArrayList<>(); diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index 820510b..2b72d2c 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -13,7 +13,6 @@ import com.casic.dcms.utils.callback.ILocationListener; import com.esri.arcgisruntime.data.ServiceFeatureTable; import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReferences; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; import com.esri.arcgisruntime.layers.FeatureLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -39,6 +38,8 @@ @BindView(R.id.mapView) MapView mapView; + private double lng, lat; + @Override public int initLayoutView() { return R.layout.activity_gis; @@ -46,7 +47,7 @@ @Override protected void setupTopBarLayout() { - gisTopLayout.setTitle("查看地图").setTextColor(ContextCompat.getColor(this, R.color.white)); + gisTopLayout.setTitle("查看案卷位置").setTextColor(ContextCompat.getColor(this, R.color.white)); gisTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); gisTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { @Override @@ -58,8 +59,10 @@ @Override public void initData() { - double lng = getIntent().getDoubleExtra("lng", 0); - double lat = getIntent().getDoubleExtra("lat", 0); + String caseType = getIntent().getStringExtra("caseType"); + lng = getIntent().getDoubleExtra("lng", 0); + lat = getIntent().getDoubleExtra("lat", 0); +// Log.d(TAG, "[" + lng + "," + lat + "]"); mapView.setAttributionTextVisible(false);//去掉左下角属性标识 mapView.setViewpointScaleAsync(500);//数字越大,放大比例越小 @@ -76,27 +79,46 @@ ServiceFeatureTable communityFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/4"); communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - - //单元网格 (ID: 6) - ServiceFeatureTable unitFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/6"); - unitFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer unitLayer = new FeatureLayer(unitFeatureTable); - - //部件点图层 (ID: 0) - ServiceFeatureTable pointFeatureTable = new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL + "/0"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, unitLayer, pointLayer)); - - //移到案卷定位点 - addMarker(new Point(lng, lat, SpatialReferences.getWgs84())); - + assert caseType != null; + switch (caseType) { + case "事件": + //单元网格 (ID: 6) + ServiceFeatureTable unitFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/6"); + unitFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); + FeatureLayer unitLayer = new FeatureLayer(unitFeatureTable); + arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, unitLayer)); + break; + case "部件": + //部件点图层 (ID: 0) + ServiceFeatureTable pointFeatureTable = new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL + "/0"); + pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); + FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); + arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); + break; + } mapView.setMap(arcGISMap); + mapView.setViewpointCenterAsync(new Point(lng, lat)); } +// @SuppressLint("ClickableViewAccessibility") @Override public void initEvent() { - +// mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { +// @Override +// public boolean onSingleTapConfirmed(MotionEvent e) { +// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); +// Point clickPoint = mapView.screenToLocation(screenPoint); +// Log.d(TAG, "clickPoint: " + clickPoint); +// //[116.591999, 28.241346, 0.000000, NaN] SR: 4326 +// +// Point point = new Point(lng, lat, SpatialReference.create(4326)); +// Log.d(TAG, "point: " + point); +// //[116.650769, 28.216684, 0.000000, NaN] SR: 4326 +// +// addMarker(clickPoint); +// return super.onSingleTapConfirmed(e); +// } +// }); } /** diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java index 960dcbf..5d977b5 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -16,6 +17,7 @@ import com.casic.dcms.bean.CaseCheckBean; import com.casic.dcms.mvp.presenter.CaseCheckPresenterImpl; import com.casic.dcms.mvp.view.ICaseCheckView; +import com.casic.dcms.ui.CaseCheckDetailActivity; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.scwang.smartrefresh.layout.SmartRefreshLayout; @@ -130,10 +132,9 @@ adapter.setOnItemClickListener(new CaseCheckResultAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(context, CaseDetailActivity.class); -// intent.putExtra("id", dataRows.get(position).getId()); -// startActivity( intent); - ToastHelper.showToast("详情页正在完善中", ToastHelper.ERROR); + Intent intent = new Intent(context, CaseCheckDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java index f701096..c312ca3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -16,6 +17,7 @@ import com.casic.dcms.bean.CaseCheckedBean; import com.casic.dcms.mvp.presenter.CaseCheckedPresenterImpl; import com.casic.dcms.mvp.view.ICaseCheckedView; +import com.casic.dcms.ui.CaseCheckedDetailActivity; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.scwang.smartrefresh.layout.SmartRefreshLayout; @@ -131,10 +133,9 @@ adapter.setOnItemClickListener(new CaseCheckedResultAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(context, CaseDetailActivity.class); -// intent.putExtra("id", dataRows.get(position).getId()); -// startActivity( intent); - ToastHelper.showToast("详情页正在完善中", ToastHelper.ERROR); + Intent intent = new Intent(context, CaseCheckedDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); } }); } diff --git a/app/src/main/res/layout/activity_case_check_detail.xml b/app/src/main/res/layout/activity_case_check_detail.xml new file mode 100644 index 0000000..26a1a9b --- /dev/null +++ b/app/src/main/res/layout/activity_case_check_detail.xml @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_case_checked_detail.xml b/app/src/main/res/layout/activity_case_checked_detail.xml new file mode 100644 index 0000000..284d368 --- /dev/null +++ b/app/src/main/res/layout/activity_case_checked_detail.xml @@ -0,0 +1,321 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_case_detail.xml b/app/src/main/res/layout/activity_case_detail.xml index 4c967db..104eb8d 100644 --- a/app/src/main/res/layout/activity_case_detail.xml +++ b/app/src/main/res/layout/activity_case_detail.xml @@ -36,8 +36,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="202103160001" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -59,8 +57,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="现场核查" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -82,8 +78,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="事件" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -105,8 +99,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="宣传广告" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -128,8 +120,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="违法小广告" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -151,8 +141,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="富力城" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -173,8 +161,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" - android:text="如家超市前花坛内" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -198,8 +184,6 @@ android:layout_alignParentEnd="true" android:layout_toEndOf="@id/v" android:gravity="end" - android:text="家超市前花坛内超市前花坛内" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -216,15 +200,23 @@ android:text="案卷图片" android:textSize="@dimen/textFontSize" /> - + android:visibility="gone" /> + + @@ -246,9 +238,8 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:background="@drawable/bg_layout" - android:paddingHorizontal="50dp" - android:paddingVertical="3dp" - android:text="33''" /> + android:paddingHorizontal="20dp" + android:paddingVertical="3dp" /> diff --git a/app/src/main/res/layout/activity_case_verified_detail.xml b/app/src/main/res/layout/activity_case_verified_detail.xml index c9f00d6..6b6c2c4 100644 --- a/app/src/main/res/layout/activity_case_verified_detail.xml +++ b/app/src/main/res/layout/activity_case_verified_detail.xml @@ -4,29 +4,11 @@ android:layout_height="match_parent" android:orientation="vertical"> - - - - - - + android:fitsSystemWindows="true" /> @@ -104,7 +85,6 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:gravity="end" - android:text="请选择" android:textSize="@dimen/textFontSize" /> @@ -129,7 +109,6 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:gravity="end" - android:text="请选择" android:textSize="@dimen/textFontSize" /> @@ -305,7 +284,9 @@ - + - + - + + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + { private Context mContext; - private List mList; + private List mProcessList; - public ProcessLineAdapter(Context context) { + public ProcessLineAdapter(Context context, List list) { mContext = context; + this.mProcessList = list; } - public void setList(List list) { - mList = list; - } - + @NotNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_case_process, parent, false); @@ -36,37 +35,35 @@ @Override public void onBindViewHolder(ViewHolder holder, int position) { - holder.bindData(mList.get(position)); + holder.bindData(mProcessList.get(position)); } @Override public int getItemCount() { - return mList.size(); + return mProcessList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - private TextView handlePersonTag; + private TextView operationTypeName; private TextView handlePersonView; - private TextView handleTimeTag; private TextView handleTimeView; - private TextView handleResultTag; private TextView handleResultView; private RelativeLayout handlePicLayout; - private GridView handlePicView; + private RecyclerView handlePicView; public ViewHolder(View view) { super(view); - handlePersonTag = view.findViewById(R.id.handlePersonTag); + operationTypeName = view.findViewById(R.id.operationTypeName); handlePersonView = view.findViewById(R.id.handlePersonView); - handleTimeTag = view.findViewById(R.id.handleTimeTag); handleTimeView = view.findViewById(R.id.handleTimeView); - handleResultTag = view.findViewById(R.id.handleResultTag); handleResultView = view.findViewById(R.id.handleResultView); handlePicLayout = view.findViewById(R.id.handlePicLayout); handlePicView = view.findViewById(R.id.handlePicView); } public void bindData(CaseProcessBean.DataBean dataBean) { + String typeName = dataBean.getOperationTypeName(); + operationTypeName.setText(typeName); handlePersonView.setText(dataBean.getUserName()); handleTimeView.setText(dataBean.getTime()); handleResultView.setText(dataBean.getRemarks()); diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index 8f24f23..9c323dd 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,6 +18,7 @@ @Override public void onReadyRetrofitRequest(String casetypeCode, String casetypeDetailCode, String caseStateId, String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { + view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(casetypeCode, casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, offset)); } @@ -29,11 +30,12 @@ @Override public void onSuccess(CaseListResultBean resultBean) { + view.hideProgress(); view.obtainCaseListData(resultBean); } @Override public void onFailure(Throwable throwable) { - + view.hideProgress(); } } diff --git a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java index 4d22718..60ec154 100644 --- a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java +++ b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java @@ -3,5 +3,9 @@ import com.casic.dcms.bean.CaseListResultBean; public interface ICaseListView { + void showProgress(); + + void hideProgress(); + void obtainCaseListData(CaseListResultBean resultBean); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java new file mode 100644 index 0000000..630670a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -0,0 +1,52 @@ +package com.casic.dcms.ui; + +import android.view.View; +import android.widget.ImageView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.utils.StatusBarColorUtil; +import com.gyf.immersionbar.ImmersionBar; + +import butterknife.BindView; + +public class CaseCheckDetailActivity extends BaseActivity implements View.OnClickListener { + + private static final String TAG = "CaseCheckDetailActivity"; + @BindView(R.id.leftBackView) + ImageView leftBackView; + + @Override + public int initLayoutView() { + return R.layout.activity_case_check_detail; + } + + @Override + protected void setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + leftBackView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + + } + + @Override + public void initEvent() { + + } + + @Override + public void onClick(View v) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java new file mode 100644 index 0000000..a061d3c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -0,0 +1,163 @@ +package com.casic.dcms.ui; + +import android.content.Intent; +import android.media.MediaPlayer; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { + + private static final String TAG = "CheckedDetailActivity"; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.caseHandleView) + TextView caseHandleView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; + + private MediaPlayer mediaPlayer; + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + public int initLayoutView() { + return R.layout.activity_case_checked_detail; + } + + @Override + protected void setupTopBarLayout() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mediaPlayer = new MediaPlayer(); + + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @OnClick(R.id.handleLayout) + @Override + public void onClick(View v) { + if (v.getId() == R.id.handleLayout) { + Intent intent = new Intent(this, CaseProcessActivity.class); + intent.putExtra("processId", data.getProcessId()); + startActivity(intent); + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { +// Log.d(TAG, "obtainCaseDetailData: "+new Gson().toJson(resultBean)); + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseHandleView.setText(data.getUrgeRemarks()); + caseSituationView.setText(data.getDescription()); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + List urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + urls.add(StringHelper.appendCompleteURL(s)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setVisibility(View.VISIBLE); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 1fd547e..77c7b01 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -3,17 +3,24 @@ import android.content.Intent; import android.util.Log; import android.view.View; -import android.widget.GridView; import android.widget.RelativeLayout; import android.widget.TextView; import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.util.ArrayList; @@ -45,11 +52,16 @@ @BindView(R.id.caseSituationView) TextView caseSituationView; @BindView(R.id.casePicGridView) - GridView casePicGridView; + RecyclerView casePicGridView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; + private CaseDetailPresenterImpl caseDetailPresenter; - private List dataBeans = new ArrayList<>(); + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private Gson gson; + private List urls = new ArrayList<>(); @Override public int initLayoutView() { @@ -73,6 +85,8 @@ String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); + + gson = new Gson(); } @Override @@ -84,23 +98,58 @@ public void obtainCaseDetailData(CaseDetailBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - this.dataBeans = resultBean.getData(); - CaseDetailBean.DataBean dataBean = resultBean.getData().get(0);//有且之后一个 - caseNumberView.setText(dataBean.getCaseid()); - caseStatusView.setText(dataBean.getCaseStateName()); - caseTypeView.setText(dataBean.getEorcName()); - caseLargeTypeView.setText(dataBean.getCasetypeName()); - caseSmallTypeView.setText(dataBean.getCasetypeDetailName()); - caseCommunityView.setText(dataBean.getCommunityName()); - casePlaceView.setText(dataBean.getFieldintro()); - caseSituationView.setText(dataBean.getDescription()); - int caseState = dataBean.getCaseState(); - if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { - handleRecordLayout.setVisibility(View.GONE); - } else { - handleRecordLayout.setVisibility(View.VISIBLE); + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseSituationView.setText(data.getDescription()); + List mediaList = gson.fromJson(data.getFileIdVerify(), new TypeToken>() { + }.getType()); + for (String media : mediaList) { + if (media.endsWith("jpeg") || media.endsWith("jpg") || media.endsWith("png")) { + if (media.startsWith("http")) { + urls.add(media); + } else { + urls.add(StringHelper.appendCompleteURL(media)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicGridView.setVisibility(View.VISIBLE); + casePicGridView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicGridView.addItemDecoration(new ItemDecorationSpace()); + casePicGridView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } } } + int caseState = data.getCaseState(); + if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { + handleRecordLayout.setVisibility(View.GONE); + } else { + handleRecordLayout.setVisibility(View.VISIBLE); + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); } @OnClick({R.id.caseAudioView, R.id.handleRecordLayout}) @@ -108,16 +157,14 @@ public void onClick(View v) { switch (v.getId()) { case R.id.caseAudioView: - if (dataBeans.size() > 0) { - String audioIdVerify = dataBeans.get(0).getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - } + String audioIdVerify = data.getAudioIdVerify(); + String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); + String[] split = fileIdVerify.split(","); + Log.d(TAG, Arrays.toString(split)); break; case R.id.handleRecordLayout: Intent intent = new Intent(this, CaseProcessActivity.class); - intent.putExtra("processId", dataBeans.get(0).getProcessId()); + intent.putExtra("processId", data.getProcessId()); startActivity(intent); break; } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index f365d3d..4dd5e6a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; @@ -58,6 +59,7 @@ private List dataBeans = new ArrayList<>(); private boolean isRefresh, isLoadMore = false; private WeakReferenceHandler weakReferenceHandler; + private QMUITipDialog searchDialog; @Override public int initLayoutView() { @@ -78,6 +80,10 @@ @Override public void initData() { + searchDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("查询中,请稍后") + .create(); caseListPresenter = new CaseListPresenterImpl(this); weakReferenceHandler = new WeakReferenceHandler(this); typeCode = getIntent().getStringExtra("typeCode"); @@ -156,6 +162,16 @@ } @Override + public void showProgress() { + searchDialog.show(); + } + + @Override + public void hideProgress() { + searchDialog.hide(); + } + + @Override public void obtainCaseListData(CaseListResultBean resultBean) { if (resultBean.isSuccess()) { List dataRows = resultBean.getData().getRows(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java index a5f4723..c12f41a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java @@ -21,14 +21,8 @@ import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import java.util.List; - import butterknife.BindView; -import static com.casic.dcms.utils.TimeLineDecoration.BEGIN; -import static com.casic.dcms.utils.TimeLineDecoration.END_FULL; -import static com.casic.dcms.utils.TimeLineDecoration.NORMAL; - public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { private static final String TAG = "CaseProcessActivity"; @@ -39,7 +33,6 @@ RecyclerView processRecyclerView; private CaseProcessPresenterImpl caseProcessPresenter; private QMUITipDialog loadingDialog; - private ProcessLineAdapter adapter; @Override public int initLayoutView() { @@ -64,7 +57,6 @@ .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) .setTipWord("获取记录中,请稍后") .create(); - adapter = new ProcessLineAdapter(this); } @Override @@ -83,19 +75,15 @@ public void obtainCaseProcessData(CaseProcessBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); + ProcessLineAdapter adapter = new ProcessLineAdapter(this, resultBean.getData()); processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); processRecyclerView.setHasFixedSize(true); processRecyclerView.setNestedScrollingEnabled(false); processRecyclerView.setItemAnimator(new DefaultItemAnimator()); TimeLineDecoration decoration = new TimeLineDecoration(this) - .setDividerHeight(1) - .setDividerColor(R.color.lightGray) - .setDividerPaddingLeft(QMUIDisplayHelper.dp2px(this, 10)) - .setDividerPaddingRight(QMUIDisplayHelper.dp2px(this, 10)) .setLineColor(R.color.colorPrimary) - .setLineWidth(QMUIDisplayHelper.dp2px(this, 1)) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 10)) + .setLineWidth(1) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) .setMarkerColor(R.color.colorAccent) .setMarkerRadius(10) .setBeginMarker(R.drawable.ic_warning) @@ -109,20 +97,19 @@ @Nullable @Override public Rect getRect(int position) { - //item之间的间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 40), QMUIDisplayHelper.dp2px(context, 10), + //item内间距 + return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 20), 0, 0); } @Override public int getTimeLineType(int position) { - if (position == 0) return BEGIN; - else if (position == adapter.getItemCount() - 1) return END_FULL; - else return NORMAL; + if (position == 0) return TimeLineDecoration.BEGIN; + else if (position == adapter.getItemCount() - 1) return TimeLineDecoration.END_FULL; + else return TimeLineDecoration.NORMAL; } }); processRecyclerView.addItemDecoration(decoration); - adapter.setList(dataBeans); processRecyclerView.setAdapter(adapter); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 452726c..14e360c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -5,10 +5,8 @@ import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.ImageView; import android.widget.TextView; -import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -22,13 +20,10 @@ import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; import com.casic.dcms.utils.ColorHelper; -import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.gyf.immersionbar.ImmersionBar; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.io.IOException; import java.util.ArrayList; @@ -40,9 +35,8 @@ public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - private static final String TAG = "VerifiedDetailActivity"; - @BindView(R.id.leftBackView) - ImageView leftBackView; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; @BindView(R.id.caseNumberView) TextView caseNumberView; @BindView(R.id.caseTypeView) @@ -85,9 +79,9 @@ @Override protected void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(new View.OnClickListener() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); @@ -111,7 +105,6 @@ @Override public void obtainCaseDetailData(CaseDetailBean resultBean) { -// Log.d(TAG, "obtainCaseDetailData: " + gson.toJson(resultBean)); if (resultBean.isSuccess()) { this.data = resultBean.getData().get(0); caseNumberView.setText(data.getCaseid()); @@ -220,43 +213,21 @@ @Override public void onClick(View v) { if (v.getId() == R.id.locationMapView) { - String type = caseTypeView.getText().toString(); - if (type.equals("请选择")) { - ToastHelper.showToast("请先选择案卷类型", ToastHelper.WARING); + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); return; } - int source = data.getSource(); - if (source == 11 || source == 12) { - Intent intent = new Intent(this, ArcGISMapActivity.class); - intent.putExtra("type", type); - startActivityForResult(intent, Constant.REQUEST_MAP_CODE); - } else { - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("lng", Double.parseDouble(data.getLng())); - intent.putExtra("lat", Double.parseDouble(data.getLat())); - startActivity(intent); + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; } - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - if (requestCode == Constant.REQUEST_MAP_CODE) { - if (data == null) { - return; - } - String community = data.getStringExtra("community"); - String casePlace = data.getStringExtra("pos"); - caseCommunityView.setText(community); - if (TextUtils.isEmpty(casePlace)) { - casePlaceView.setText(community); - } else { - casePlaceView.setText(casePlace); - } - SaveKeyValues.removeKey("CommunityName"); - } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 8203d37..d824e9b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -47,7 +47,6 @@ import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.google.gson.Gson; import com.gyf.immersionbar.ImmersionBar; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; @@ -132,7 +131,6 @@ RelativeLayout caseSmallClassLayout; private CaseDetailPresenterImpl caseDetailPresenter; - private Gson gson; private CaseLargeClassPresenterImpl caseLargeClassPresenter; private List largeClassBeans; private CaseSmallClassPresenterImpl caseSmallClassPresenter; @@ -172,7 +170,6 @@ @Override public void initData() { - gson = new Gson(); mediaPlayer = new MediaPlayer(); largeClassBeans = new ArrayList<>(); smallClassBeans = new ArrayList<>(); diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index 820510b..2b72d2c 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -13,7 +13,6 @@ import com.casic.dcms.utils.callback.ILocationListener; import com.esri.arcgisruntime.data.ServiceFeatureTable; import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReferences; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; import com.esri.arcgisruntime.layers.FeatureLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -39,6 +38,8 @@ @BindView(R.id.mapView) MapView mapView; + private double lng, lat; + @Override public int initLayoutView() { return R.layout.activity_gis; @@ -46,7 +47,7 @@ @Override protected void setupTopBarLayout() { - gisTopLayout.setTitle("查看地图").setTextColor(ContextCompat.getColor(this, R.color.white)); + gisTopLayout.setTitle("查看案卷位置").setTextColor(ContextCompat.getColor(this, R.color.white)); gisTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); gisTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { @Override @@ -58,8 +59,10 @@ @Override public void initData() { - double lng = getIntent().getDoubleExtra("lng", 0); - double lat = getIntent().getDoubleExtra("lat", 0); + String caseType = getIntent().getStringExtra("caseType"); + lng = getIntent().getDoubleExtra("lng", 0); + lat = getIntent().getDoubleExtra("lat", 0); +// Log.d(TAG, "[" + lng + "," + lat + "]"); mapView.setAttributionTextVisible(false);//去掉左下角属性标识 mapView.setViewpointScaleAsync(500);//数字越大,放大比例越小 @@ -76,27 +79,46 @@ ServiceFeatureTable communityFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/4"); communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - - //单元网格 (ID: 6) - ServiceFeatureTable unitFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/6"); - unitFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer unitLayer = new FeatureLayer(unitFeatureTable); - - //部件点图层 (ID: 0) - ServiceFeatureTable pointFeatureTable = new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL + "/0"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, unitLayer, pointLayer)); - - //移到案卷定位点 - addMarker(new Point(lng, lat, SpatialReferences.getWgs84())); - + assert caseType != null; + switch (caseType) { + case "事件": + //单元网格 (ID: 6) + ServiceFeatureTable unitFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/6"); + unitFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); + FeatureLayer unitLayer = new FeatureLayer(unitFeatureTable); + arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, unitLayer)); + break; + case "部件": + //部件点图层 (ID: 0) + ServiceFeatureTable pointFeatureTable = new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL + "/0"); + pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); + FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); + arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); + break; + } mapView.setMap(arcGISMap); + mapView.setViewpointCenterAsync(new Point(lng, lat)); } +// @SuppressLint("ClickableViewAccessibility") @Override public void initEvent() { - +// mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { +// @Override +// public boolean onSingleTapConfirmed(MotionEvent e) { +// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); +// Point clickPoint = mapView.screenToLocation(screenPoint); +// Log.d(TAG, "clickPoint: " + clickPoint); +// //[116.591999, 28.241346, 0.000000, NaN] SR: 4326 +// +// Point point = new Point(lng, lat, SpatialReference.create(4326)); +// Log.d(TAG, "point: " + point); +// //[116.650769, 28.216684, 0.000000, NaN] SR: 4326 +// +// addMarker(clickPoint); +// return super.onSingleTapConfirmed(e); +// } +// }); } /** diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java index 960dcbf..5d977b5 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -16,6 +17,7 @@ import com.casic.dcms.bean.CaseCheckBean; import com.casic.dcms.mvp.presenter.CaseCheckPresenterImpl; import com.casic.dcms.mvp.view.ICaseCheckView; +import com.casic.dcms.ui.CaseCheckDetailActivity; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.scwang.smartrefresh.layout.SmartRefreshLayout; @@ -130,10 +132,9 @@ adapter.setOnItemClickListener(new CaseCheckResultAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(context, CaseDetailActivity.class); -// intent.putExtra("id", dataRows.get(position).getId()); -// startActivity( intent); - ToastHelper.showToast("详情页正在完善中", ToastHelper.ERROR); + Intent intent = new Intent(context, CaseCheckDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java index f701096..c312ca3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -16,6 +17,7 @@ import com.casic.dcms.bean.CaseCheckedBean; import com.casic.dcms.mvp.presenter.CaseCheckedPresenterImpl; import com.casic.dcms.mvp.view.ICaseCheckedView; +import com.casic.dcms.ui.CaseCheckedDetailActivity; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.scwang.smartrefresh.layout.SmartRefreshLayout; @@ -131,10 +133,9 @@ adapter.setOnItemClickListener(new CaseCheckedResultAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(context, CaseDetailActivity.class); -// intent.putExtra("id", dataRows.get(position).getId()); -// startActivity( intent); - ToastHelper.showToast("详情页正在完善中", ToastHelper.ERROR); + Intent intent = new Intent(context, CaseCheckedDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); } }); } diff --git a/app/src/main/res/layout/activity_case_check_detail.xml b/app/src/main/res/layout/activity_case_check_detail.xml new file mode 100644 index 0000000..26a1a9b --- /dev/null +++ b/app/src/main/res/layout/activity_case_check_detail.xml @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_case_checked_detail.xml b/app/src/main/res/layout/activity_case_checked_detail.xml new file mode 100644 index 0000000..284d368 --- /dev/null +++ b/app/src/main/res/layout/activity_case_checked_detail.xml @@ -0,0 +1,321 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_case_detail.xml b/app/src/main/res/layout/activity_case_detail.xml index 4c967db..104eb8d 100644 --- a/app/src/main/res/layout/activity_case_detail.xml +++ b/app/src/main/res/layout/activity_case_detail.xml @@ -36,8 +36,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="202103160001" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -59,8 +57,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="现场核查" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -82,8 +78,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="事件" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -105,8 +99,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="宣传广告" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -128,8 +120,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="违法小广告" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -151,8 +141,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="富力城" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -173,8 +161,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" - android:text="如家超市前花坛内" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -198,8 +184,6 @@ android:layout_alignParentEnd="true" android:layout_toEndOf="@id/v" android:gravity="end" - android:text="家超市前花坛内超市前花坛内" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -216,15 +200,23 @@ android:text="案卷图片" android:textSize="@dimen/textFontSize" /> - + android:visibility="gone" /> + + @@ -246,9 +238,8 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:background="@drawable/bg_layout" - android:paddingHorizontal="50dp" - android:paddingVertical="3dp" - android:text="33''" /> + android:paddingHorizontal="20dp" + android:paddingVertical="3dp" /> diff --git a/app/src/main/res/layout/activity_case_verified_detail.xml b/app/src/main/res/layout/activity_case_verified_detail.xml index c9f00d6..6b6c2c4 100644 --- a/app/src/main/res/layout/activity_case_verified_detail.xml +++ b/app/src/main/res/layout/activity_case_verified_detail.xml @@ -4,29 +4,11 @@ android:layout_height="match_parent" android:orientation="vertical"> - - - - - - + android:fitsSystemWindows="true" /> @@ -104,7 +85,6 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:gravity="end" - android:text="请选择" android:textSize="@dimen/textFontSize" /> @@ -129,7 +109,6 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:gravity="end" - android:text="请选择" android:textSize="@dimen/textFontSize" /> @@ -305,7 +284,9 @@ - + - + - + - + - + - + - + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f105e36..51e7255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ android:usesCleartextTraffic="true"> + android:excludeFromRecents="false"> @@ -71,6 +71,8 @@ + + { private Context mContext; - private List mList; + private List mProcessList; - public ProcessLineAdapter(Context context) { + public ProcessLineAdapter(Context context, List list) { mContext = context; + this.mProcessList = list; } - public void setList(List list) { - mList = list; - } - + @NotNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_case_process, parent, false); @@ -36,37 +35,35 @@ @Override public void onBindViewHolder(ViewHolder holder, int position) { - holder.bindData(mList.get(position)); + holder.bindData(mProcessList.get(position)); } @Override public int getItemCount() { - return mList.size(); + return mProcessList.size(); } static class ViewHolder extends RecyclerView.ViewHolder { - private TextView handlePersonTag; + private TextView operationTypeName; private TextView handlePersonView; - private TextView handleTimeTag; private TextView handleTimeView; - private TextView handleResultTag; private TextView handleResultView; private RelativeLayout handlePicLayout; - private GridView handlePicView; + private RecyclerView handlePicView; public ViewHolder(View view) { super(view); - handlePersonTag = view.findViewById(R.id.handlePersonTag); + operationTypeName = view.findViewById(R.id.operationTypeName); handlePersonView = view.findViewById(R.id.handlePersonView); - handleTimeTag = view.findViewById(R.id.handleTimeTag); handleTimeView = view.findViewById(R.id.handleTimeView); - handleResultTag = view.findViewById(R.id.handleResultTag); handleResultView = view.findViewById(R.id.handleResultView); handlePicLayout = view.findViewById(R.id.handlePicLayout); handlePicView = view.findViewById(R.id.handlePicView); } public void bindData(CaseProcessBean.DataBean dataBean) { + String typeName = dataBean.getOperationTypeName(); + operationTypeName.setText(typeName); handlePersonView.setText(dataBean.getUserName()); handleTimeView.setText(dataBean.getTime()); handleResultView.setText(dataBean.getRemarks()); diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index 8f24f23..9c323dd 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,6 +18,7 @@ @Override public void onReadyRetrofitRequest(String casetypeCode, String casetypeDetailCode, String caseStateId, String registerTimeBegin, String registerTimeEnd, String eorc, int offset) { + view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(casetypeCode, casetypeDetailCode, caseStateId, registerTimeBegin, registerTimeEnd, eorc, offset)); } @@ -29,11 +30,12 @@ @Override public void onSuccess(CaseListResultBean resultBean) { + view.hideProgress(); view.obtainCaseListData(resultBean); } @Override public void onFailure(Throwable throwable) { - + view.hideProgress(); } } diff --git a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java index 4d22718..60ec154 100644 --- a/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java +++ b/app/src/main/java/com/casic/dcms/mvp/view/ICaseListView.java @@ -3,5 +3,9 @@ import com.casic.dcms.bean.CaseListResultBean; public interface ICaseListView { + void showProgress(); + + void hideProgress(); + void obtainCaseListData(CaseListResultBean resultBean); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java new file mode 100644 index 0000000..630670a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -0,0 +1,52 @@ +package com.casic.dcms.ui; + +import android.view.View; +import android.widget.ImageView; + +import androidx.core.content.ContextCompat; + +import com.casic.dcms.R; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.utils.StatusBarColorUtil; +import com.gyf.immersionbar.ImmersionBar; + +import butterknife.BindView; + +public class CaseCheckDetailActivity extends BaseActivity implements View.OnClickListener { + + private static final String TAG = "CaseCheckDetailActivity"; + @BindView(R.id.leftBackView) + ImageView leftBackView; + + @Override + public int initLayoutView() { + return R.layout.activity_case_check_detail; + } + + @Override + protected void setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); + ImmersionBar.with(this).statusBarDarkFont(false).init(); + leftBackView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + + } + + @Override + public void initEvent() { + + } + + @Override + public void onClick(View v) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java new file mode 100644 index 0000000..a061d3c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java @@ -0,0 +1,163 @@ +package com.casic.dcms.ui; + +import android.content.Intent; +import android.media.MediaPlayer; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { + + private static final String TAG = "CheckedDetailActivity"; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.caseHandleView) + TextView caseHandleView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; + + private MediaPlayer mediaPlayer; + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + + @Override + public int initLayoutView() { + return R.layout.activity_case_checked_detail; + } + + @Override + protected void setupTopBarLayout() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + mediaPlayer = new MediaPlayer(); + + String id = getIntent().getStringExtra("id"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + } + + @Override + public void initEvent() { + + } + + @OnClick(R.id.handleLayout) + @Override + public void onClick(View v) { + if (v.getId() == R.id.handleLayout) { + Intent intent = new Intent(this, CaseProcessActivity.class); + intent.putExtra("processId", data.getProcessId()); + startActivity(intent); + } + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { +// Log.d(TAG, "obtainCaseDetailData: "+new Gson().toJson(resultBean)); + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseHandleView.setText(data.getUrgeRemarks()); + caseSituationView.setText(data.getDescription()); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + List urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + urls.add(StringHelper.appendCompleteURL(s)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setVisibility(View.VISIBLE); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (mediaPlayer != null) { + mediaPlayer.reset(); + mediaPlayer.release(); + mediaPlayer = null; + } + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java index 1fd547e..77c7b01 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java @@ -3,17 +3,24 @@ import android.content.Intent; import android.util.Log; import android.view.View; -import android.widget.GridView; import android.widget.RelativeLayout; import android.widget.TextView; import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; import com.casic.dcms.base.BaseActivity; import com.casic.dcms.bean.CaseDetailBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.utils.ColorHelper; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.StringHelper; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.util.ArrayList; @@ -45,11 +52,16 @@ @BindView(R.id.caseSituationView) TextView caseSituationView; @BindView(R.id.casePicGridView) - GridView casePicGridView; + RecyclerView casePicGridView; + @BindView(R.id.emptyImageView) + TextView emptyImageView; @BindView(R.id.handleRecordLayout) RelativeLayout handleRecordLayout; + private CaseDetailPresenterImpl caseDetailPresenter; - private List dataBeans = new ArrayList<>(); + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private Gson gson; + private List urls = new ArrayList<>(); @Override public int initLayoutView() { @@ -73,6 +85,8 @@ String id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); + + gson = new Gson(); } @Override @@ -84,23 +98,58 @@ public void obtainCaseDetailData(CaseDetailBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - this.dataBeans = resultBean.getData(); - CaseDetailBean.DataBean dataBean = resultBean.getData().get(0);//有且之后一个 - caseNumberView.setText(dataBean.getCaseid()); - caseStatusView.setText(dataBean.getCaseStateName()); - caseTypeView.setText(dataBean.getEorcName()); - caseLargeTypeView.setText(dataBean.getCasetypeName()); - caseSmallTypeView.setText(dataBean.getCasetypeDetailName()); - caseCommunityView.setText(dataBean.getCommunityName()); - casePlaceView.setText(dataBean.getFieldintro()); - caseSituationView.setText(dataBean.getDescription()); - int caseState = dataBean.getCaseState(); - if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { - handleRecordLayout.setVisibility(View.GONE); - } else { - handleRecordLayout.setVisibility(View.VISIBLE); + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseStatusView.setText(data.getCaseStateName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(data.getFieldintro()); + caseSituationView.setText(data.getDescription()); + List mediaList = gson.fromJson(data.getFileIdVerify(), new TypeToken>() { + }.getType()); + for (String media : mediaList) { + if (media.endsWith("jpeg") || media.endsWith("jpg") || media.endsWith("png")) { + if (media.startsWith("http")) { + urls.add(media); + } else { + urls.add(StringHelper.appendCompleteURL(media)); + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicGridView.setVisibility(View.VISIBLE); + casePicGridView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicGridView.addItemDecoration(new ItemDecorationSpace()); + casePicGridView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + //查看大图 + showBigImage(urls.get(position)); + } + }); + imageAdapter.setDeleteView(false); + } else { + emptyImageView.setVisibility(View.VISIBLE); + emptyImageView.setText("该案卷无图片材料"); + emptyImageView.setText(ColorHelper.getResourcesColor(this, R.color.darkGray)); + } } } + int caseState = data.getCaseState(); + if (caseState == 22 || caseState == 60 || caseState == 70 || caseState == 75 || caseState == 76 || caseState == 77 || caseState == 301) { + handleRecordLayout.setVisibility(View.GONE); + } else { + handleRecordLayout.setVisibility(View.VISIBLE); + } + } + + private void showBigImage(String path) { + Intent intent = new Intent(this, BigPictureActivity.class); + intent.putExtra("path", path); + startActivity(intent); } @OnClick({R.id.caseAudioView, R.id.handleRecordLayout}) @@ -108,16 +157,14 @@ public void onClick(View v) { switch (v.getId()) { case R.id.caseAudioView: - if (dataBeans.size() > 0) { - String audioIdVerify = dataBeans.get(0).getAudioIdVerify(); - String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); - String[] split = fileIdVerify.split(","); - Log.d(TAG, Arrays.toString(split)); - } + String audioIdVerify = data.getAudioIdVerify(); + String fileIdVerify = audioIdVerify.replace(" ", "").replace("\\", "/"); + String[] split = fileIdVerify.split(","); + Log.d(TAG, Arrays.toString(split)); break; case R.id.handleRecordLayout: Intent intent = new Intent(this, CaseProcessActivity.class); - intent.putExtra("processId", dataBeans.get(0).getProcessId()); + intent.putExtra("processId", data.getProcessId()); startActivity(intent); break; } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index f365d3d..4dd5e6a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.qmuiteam.qmui.widget.QMUITopBarLayout; +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; @@ -58,6 +59,7 @@ private List dataBeans = new ArrayList<>(); private boolean isRefresh, isLoadMore = false; private WeakReferenceHandler weakReferenceHandler; + private QMUITipDialog searchDialog; @Override public int initLayoutView() { @@ -78,6 +80,10 @@ @Override public void initData() { + searchDialog = new QMUITipDialog.Builder(this) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord("查询中,请稍后") + .create(); caseListPresenter = new CaseListPresenterImpl(this); weakReferenceHandler = new WeakReferenceHandler(this); typeCode = getIntent().getStringExtra("typeCode"); @@ -156,6 +162,16 @@ } @Override + public void showProgress() { + searchDialog.show(); + } + + @Override + public void hideProgress() { + searchDialog.hide(); + } + + @Override public void obtainCaseListData(CaseListResultBean resultBean) { if (resultBean.isSuccess()) { List dataRows = resultBean.getData().getRows(); diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java index a5f4723..c12f41a 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java @@ -21,14 +21,8 @@ import com.qmuiteam.qmui.widget.QMUITopBarLayout; import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; -import java.util.List; - import butterknife.BindView; -import static com.casic.dcms.utils.TimeLineDecoration.BEGIN; -import static com.casic.dcms.utils.TimeLineDecoration.END_FULL; -import static com.casic.dcms.utils.TimeLineDecoration.NORMAL; - public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { private static final String TAG = "CaseProcessActivity"; @@ -39,7 +33,6 @@ RecyclerView processRecyclerView; private CaseProcessPresenterImpl caseProcessPresenter; private QMUITipDialog loadingDialog; - private ProcessLineAdapter adapter; @Override public int initLayoutView() { @@ -64,7 +57,6 @@ .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) .setTipWord("获取记录中,请稍后") .create(); - adapter = new ProcessLineAdapter(this); } @Override @@ -83,19 +75,15 @@ public void obtainCaseProcessData(CaseProcessBean resultBean) { // Log.d(TAG, "obtainCaseDetailData: " + new Gson().toJson(resultBean)); if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); + ProcessLineAdapter adapter = new ProcessLineAdapter(this, resultBean.getData()); processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); processRecyclerView.setHasFixedSize(true); processRecyclerView.setNestedScrollingEnabled(false); processRecyclerView.setItemAnimator(new DefaultItemAnimator()); TimeLineDecoration decoration = new TimeLineDecoration(this) - .setDividerHeight(1) - .setDividerColor(R.color.lightGray) - .setDividerPaddingLeft(QMUIDisplayHelper.dp2px(this, 10)) - .setDividerPaddingRight(QMUIDisplayHelper.dp2px(this, 10)) .setLineColor(R.color.colorPrimary) - .setLineWidth(QMUIDisplayHelper.dp2px(this, 1)) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 10)) + .setLineWidth(1) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) .setMarkerColor(R.color.colorAccent) .setMarkerRadius(10) .setBeginMarker(R.drawable.ic_warning) @@ -109,20 +97,19 @@ @Nullable @Override public Rect getRect(int position) { - //item之间的间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 40), QMUIDisplayHelper.dp2px(context, 10), + //item内间距 + return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 20), 0, 0); } @Override public int getTimeLineType(int position) { - if (position == 0) return BEGIN; - else if (position == adapter.getItemCount() - 1) return END_FULL; - else return NORMAL; + if (position == 0) return TimeLineDecoration.BEGIN; + else if (position == adapter.getItemCount() - 1) return TimeLineDecoration.END_FULL; + else return TimeLineDecoration.NORMAL; } }); processRecyclerView.addItemDecoration(decoration); - adapter.setList(dataBeans); processRecyclerView.setAdapter(adapter); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java index 452726c..14e360c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java @@ -5,10 +5,8 @@ import android.media.MediaPlayer; import android.text.TextUtils; import android.view.View; -import android.widget.ImageView; import android.widget.TextView; -import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -22,13 +20,10 @@ import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; import com.casic.dcms.utils.ColorHelper; -import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.gyf.immersionbar.ImmersionBar; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; import java.io.IOException; import java.util.ArrayList; @@ -40,9 +35,8 @@ public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - private static final String TAG = "VerifiedDetailActivity"; - @BindView(R.id.leftBackView) - ImageView leftBackView; + @BindView(R.id.detailTopLayout) + QMUITopBarLayout detailTopLayout; @BindView(R.id.caseNumberView) TextView caseNumberView; @BindView(R.id.caseTypeView) @@ -85,9 +79,9 @@ @Override protected void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(new View.OnClickListener() { + detailTopLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); + detailTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + detailTopLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); @@ -111,7 +105,6 @@ @Override public void obtainCaseDetailData(CaseDetailBean resultBean) { -// Log.d(TAG, "obtainCaseDetailData: " + gson.toJson(resultBean)); if (resultBean.isSuccess()) { this.data = resultBean.getData().get(0); caseNumberView.setText(data.getCaseid()); @@ -220,43 +213,21 @@ @Override public void onClick(View v) { if (v.getId() == R.id.locationMapView) { - String type = caseTypeView.getText().toString(); - if (type.equals("请选择")) { - ToastHelper.showToast("请先选择案卷类型", ToastHelper.WARING); + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); return; } - int source = data.getSource(); - if (source == 11 || source == 12) { - Intent intent = new Intent(this, ArcGISMapActivity.class); - intent.putExtra("type", type); - startActivityForResult(intent, Constant.REQUEST_MAP_CODE); - } else { - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("lng", Double.parseDouble(data.getLng())); - intent.putExtra("lat", Double.parseDouble(data.getLat())); - startActivity(intent); + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; } - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - if (requestCode == Constant.REQUEST_MAP_CODE) { - if (data == null) { - return; - } - String community = data.getStringExtra("community"); - String casePlace = data.getStringExtra("pos"); - caseCommunityView.setText(community); - if (TextUtils.isEmpty(casePlace)) { - casePlaceView.setText(community); - } else { - casePlaceView.setText(casePlace); - } - SaveKeyValues.removeKey("CommunityName"); - } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index 8203d37..d824e9b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -47,7 +47,6 @@ import com.casic.dcms.utils.StatusBarColorUtil; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.google.gson.Gson; import com.gyf.immersionbar.ImmersionBar; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; @@ -132,7 +131,6 @@ RelativeLayout caseSmallClassLayout; private CaseDetailPresenterImpl caseDetailPresenter; - private Gson gson; private CaseLargeClassPresenterImpl caseLargeClassPresenter; private List largeClassBeans; private CaseSmallClassPresenterImpl caseSmallClassPresenter; @@ -172,7 +170,6 @@ @Override public void initData() { - gson = new Gson(); mediaPlayer = new MediaPlayer(); largeClassBeans = new ArrayList<>(); smallClassBeans = new ArrayList<>(); diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index 820510b..2b72d2c 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -13,7 +13,6 @@ import com.casic.dcms.utils.callback.ILocationListener; import com.esri.arcgisruntime.data.ServiceFeatureTable; import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReferences; import com.esri.arcgisruntime.layers.ArcGISTiledLayer; import com.esri.arcgisruntime.layers.FeatureLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; @@ -39,6 +38,8 @@ @BindView(R.id.mapView) MapView mapView; + private double lng, lat; + @Override public int initLayoutView() { return R.layout.activity_gis; @@ -46,7 +47,7 @@ @Override protected void setupTopBarLayout() { - gisTopLayout.setTitle("查看地图").setTextColor(ContextCompat.getColor(this, R.color.white)); + gisTopLayout.setTitle("查看案卷位置").setTextColor(ContextCompat.getColor(this, R.color.white)); gisTopLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); gisTopLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { @Override @@ -58,8 +59,10 @@ @Override public void initData() { - double lng = getIntent().getDoubleExtra("lng", 0); - double lat = getIntent().getDoubleExtra("lat", 0); + String caseType = getIntent().getStringExtra("caseType"); + lng = getIntent().getDoubleExtra("lng", 0); + lat = getIntent().getDoubleExtra("lat", 0); +// Log.d(TAG, "[" + lng + "," + lat + "]"); mapView.setAttributionTextVisible(false);//去掉左下角属性标识 mapView.setViewpointScaleAsync(500);//数字越大,放大比例越小 @@ -76,27 +79,46 @@ ServiceFeatureTable communityFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/4"); communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - - //单元网格 (ID: 6) - ServiceFeatureTable unitFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/6"); - unitFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer unitLayer = new FeatureLayer(unitFeatureTable); - - //部件点图层 (ID: 0) - ServiceFeatureTable pointFeatureTable = new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL + "/0"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, unitLayer, pointLayer)); - - //移到案卷定位点 - addMarker(new Point(lng, lat, SpatialReferences.getWgs84())); - + assert caseType != null; + switch (caseType) { + case "事件": + //单元网格 (ID: 6) + ServiceFeatureTable unitFeatureTable = new ServiceFeatureTable(Constant.BASE_SERVICE_URL + "/6"); + unitFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); + FeatureLayer unitLayer = new FeatureLayer(unitFeatureTable); + arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, unitLayer)); + break; + case "部件": + //部件点图层 (ID: 0) + ServiceFeatureTable pointFeatureTable = new ServiceFeatureTable(Constant.COMPONENT_SERVICE_URL + "/0"); + pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); + FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); + arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); + break; + } mapView.setMap(arcGISMap); + mapView.setViewpointCenterAsync(new Point(lng, lat)); } +// @SuppressLint("ClickableViewAccessibility") @Override public void initEvent() { - +// mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { +// @Override +// public boolean onSingleTapConfirmed(MotionEvent e) { +// android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); +// Point clickPoint = mapView.screenToLocation(screenPoint); +// Log.d(TAG, "clickPoint: " + clickPoint); +// //[116.591999, 28.241346, 0.000000, NaN] SR: 4326 +// +// Point point = new Point(lng, lat, SpatialReference.create(4326)); +// Log.d(TAG, "point: " + point); +// //[116.650769, 28.216684, 0.000000, NaN] SR: 4326 +// +// addMarker(clickPoint); +// return super.onSingleTapConfirmed(e); +// } +// }); } /** diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java index 960dcbf..5d977b5 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckFragment.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -16,6 +17,7 @@ import com.casic.dcms.bean.CaseCheckBean; import com.casic.dcms.mvp.presenter.CaseCheckPresenterImpl; import com.casic.dcms.mvp.view.ICaseCheckView; +import com.casic.dcms.ui.CaseCheckDetailActivity; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.scwang.smartrefresh.layout.SmartRefreshLayout; @@ -130,10 +132,9 @@ adapter.setOnItemClickListener(new CaseCheckResultAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(context, CaseDetailActivity.class); -// intent.putExtra("id", dataRows.get(position).getId()); -// startActivity( intent); - ToastHelper.showToast("详情页正在完善中", ToastHelper.ERROR); + Intent intent = new Intent(context, CaseCheckDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java index f701096..c312ca3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/check/CaseCheckedFragment.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.content.Intent; import android.os.Handler; import android.os.Message; @@ -16,6 +17,7 @@ import com.casic.dcms.bean.CaseCheckedBean; import com.casic.dcms.mvp.presenter.CaseCheckedPresenterImpl; import com.casic.dcms.mvp.view.ICaseCheckedView; +import com.casic.dcms.ui.CaseCheckedDetailActivity; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; import com.scwang.smartrefresh.layout.SmartRefreshLayout; @@ -131,10 +133,9 @@ adapter.setOnItemClickListener(new CaseCheckedResultAdapter.OnItemClickListener() { @Override public void onClick(int position) { -// Intent intent = new Intent(context, CaseDetailActivity.class); -// intent.putExtra("id", dataRows.get(position).getId()); -// startActivity( intent); - ToastHelper.showToast("详情页正在完善中", ToastHelper.ERROR); + Intent intent = new Intent(context, CaseCheckedDetailActivity.class); + intent.putExtra("id", dataBeans.get(position).getId()); + startActivity(intent); } }); } diff --git a/app/src/main/res/layout/activity_case_check_detail.xml b/app/src/main/res/layout/activity_case_check_detail.xml new file mode 100644 index 0000000..26a1a9b --- /dev/null +++ b/app/src/main/res/layout/activity_case_check_detail.xml @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_case_checked_detail.xml b/app/src/main/res/layout/activity_case_checked_detail.xml new file mode 100644 index 0000000..284d368 --- /dev/null +++ b/app/src/main/res/layout/activity_case_checked_detail.xml @@ -0,0 +1,321 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_case_detail.xml b/app/src/main/res/layout/activity_case_detail.xml index 4c967db..104eb8d 100644 --- a/app/src/main/res/layout/activity_case_detail.xml +++ b/app/src/main/res/layout/activity_case_detail.xml @@ -36,8 +36,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="202103160001" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -59,8 +57,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="现场核查" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -82,8 +78,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="事件" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -105,8 +99,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="宣传广告" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -128,8 +120,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="违法小广告" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -151,8 +141,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:text="富力城" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -173,8 +161,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" - android:text="如家超市前花坛内" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -198,8 +184,6 @@ android:layout_alignParentEnd="true" android:layout_toEndOf="@id/v" android:gravity="end" - android:text="家超市前花坛内超市前花坛内" - android:textColor="@color/darkGray" android:textSize="@dimen/textFontSize" /> @@ -216,15 +200,23 @@ android:text="案卷图片" android:textSize="@dimen/textFontSize" /> - + android:visibility="gone" /> + + @@ -246,9 +238,8 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:background="@drawable/bg_layout" - android:paddingHorizontal="50dp" - android:paddingVertical="3dp" - android:text="33''" /> + android:paddingHorizontal="20dp" + android:paddingVertical="3dp" /> diff --git a/app/src/main/res/layout/activity_case_verified_detail.xml b/app/src/main/res/layout/activity_case_verified_detail.xml index c9f00d6..6b6c2c4 100644 --- a/app/src/main/res/layout/activity_case_verified_detail.xml +++ b/app/src/main/res/layout/activity_case_verified_detail.xml @@ -4,29 +4,11 @@ android:layout_height="match_parent" android:orientation="vertical"> - - - - - - + android:fitsSystemWindows="true" /> @@ -104,7 +85,6 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:gravity="end" - android:text="请选择" android:textSize="@dimen/textFontSize" /> @@ -129,7 +109,6 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:gravity="end" - android:text="请选择" android:textSize="@dimen/textFontSize" /> @@ -305,7 +284,9 @@ - + - + - + - + - + - + - + diff --git a/app/src/main/res/layout/item_case_process.xml b/app/src/main/res/layout/item_case_process.xml index 004b25e..5145731 100644 --- a/app/src/main/res/layout/item_case_process.xml +++ b/app/src/main/res/layout/item_case_process.xml @@ -1,13 +1,24 @@ + + + + @@ -28,20 +39,20 @@ @@ -49,7 +60,7 @@ @@ -72,22 +83,21 @@ style="@style/itemLayoutStyle"> - + android:layout_marginStart="20dp" + android:layout_marginEnd="5dp" + android:layout_toEndOf="@id/tttt" + android:text="尽快处理" + android:textSize="@dimen/titleFontSize" /> \ No newline at end of file