diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 87b7376..22b83e8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -307,7 +307,7 @@ private void submitCase() { String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("请选择")) { + if (handleResult.equals("")) { ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); return; } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 87b7376..22b83e8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -307,7 +307,7 @@ private void submitCase() { String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("请选择")) { + if (handleResult.equals("")) { ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); return; } diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java index 570f9f6..7221e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.bean.CleanRecordBean; import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; import com.casic.dcms.mvp.view.ICleanToiletRecordView; +import com.casic.dcms.utils.CalendarUtil; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; @@ -31,7 +32,6 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; -import java.util.Calendar; import java.util.List; import butterknife.BindView; @@ -84,7 +84,7 @@ @Override public void onClick(View v) { new DatePopupWindow - .Builder(CleanResultListActivity.this, Calendar.getInstance().getTime(), v)//初始化 + .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 87b7376..22b83e8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -307,7 +307,7 @@ private void submitCase() { String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("请选择")) { + if (handleResult.equals("")) { ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); return; } diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java index 570f9f6..7221e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.bean.CleanRecordBean; import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; import com.casic.dcms.mvp.view.ICleanToiletRecordView; +import com.casic.dcms.utils.CalendarUtil; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; @@ -31,7 +32,6 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; -import java.util.Calendar; import java.util.List; import butterknife.BindView; @@ -84,7 +84,7 @@ @Override public void onClick(View v) { new DatePopupWindow - .Builder(CleanResultListActivity.this, Calendar.getInstance().getTime(), v)//初始化 + .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 diff --git a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java index 9977519..f971c57 100644 --- a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java @@ -7,6 +7,8 @@ import android.view.View; import android.widget.EditText; import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; import android.widget.TextView; import androidx.annotation.Nullable; @@ -19,10 +21,17 @@ import com.casic.dcms.base.BaseCaseActivity; import com.casic.dcms.bean.ActionResultBean; import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.bean.CaseNextNodeBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.ICaseHandleView; +import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -51,7 +60,7 @@ import butterknife.OnClick; public class PackageTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IUploadFileView { + ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { private static final String TAG = "PackageTodoDetail"; @BindView(R.id.caseNumberView) TextView caseNumberView; @@ -71,16 +80,32 @@ TextView caseSituationView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleResultView) + TextView caseHandleResultView; + @BindView(R.id.line1) + View line1; + @BindView(R.id.imageLayout) + RelativeLayout imageLayout; + @BindView(R.id.line2) + View line2; + @BindView(R.id.reasonLayout) + RelativeLayout reasonLayout; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; + @BindView(R.id.addHandleImageView) + ImageView addHandleImageView; + @BindView(R.id.caseReasonView) + EditText caseReasonView; + @BindView(R.id.punishLayout) + LinearLayout punishLayout; @BindView(R.id.punishTypeView) TextView punishTypeView; @BindView(R.id.punishOpinionView) EditText punishOpinionView; @BindView(R.id.punishRecyclerView) RecyclerView punishRecyclerView; - @BindView(R.id.addImageView) - ImageView addImageView; + @BindView(R.id.addPunishImageView) + ImageView addPunishImageView; @BindView(R.id.punishDateView) TextView punishDateView; @BindView(R.id.submitButton) @@ -91,9 +116,19 @@ private CaseDetailPresenterImpl caseDetailPresenter; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 - private List imageList = new ArrayList<>();//上传到服务器的数据集 - private ImageRecycleViewAdapter imageAdapter; + private ArrayList handleRealPaths = new ArrayList<>();//真实图片路径 + private ArrayList punishRealPaths = new ArrayList<>();//真实图片路径 + private List handleImageList = new ArrayList<>();//上传到服务器的数据集 + private List punishImageList = new ArrayList<>();//上传到服务器的数据集 + private ImageRecycleViewAdapter punishImageAdapter, handleImageAdapter; + private CaseNextNodePresenterImpl caseNextNodePresenter; + private String changeState; + private String approvalResult; + private String caseReason; + private boolean isAddHandleImage = false;//区分是添加处理图片还是添加处罚图片 + private String id;//案卷id + private CaseHandlePresenterImpl caseHandlePresenter; + private String handleResult; @Override public int initLayoutView() { @@ -102,12 +137,12 @@ @Override protected String setTitleName() { - return "已办案卷"; + return "待办案卷"; } @Override public void initData() { - String id = getIntent().getStringExtra("id"); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); submitDialog = new QMUITipDialog.Builder(this) @@ -115,10 +150,20 @@ .setTipWord("处理中,请稍后") .create(); uploadImagePresenter = new UploadImagePresenterImpl(this); - imageAdapter = new ImageRecycleViewAdapter(this); + //处罚adapter + punishImageAdapter = new ImageRecycleViewAdapter(this); punishRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); punishRecyclerView.addItemDecoration(new ItemDecorationSpace()); - punishRecyclerView.setAdapter(imageAdapter); + punishRecyclerView.setAdapter(punishImageAdapter); + //下级结点 + caseNextNodePresenter = new CaseNextNodePresenterImpl(this); + //案卷处理adapter + handleImageAdapter = new ImageRecycleViewAdapter(this); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(handleImageAdapter); + + caseHandlePresenter = new CaseHandlePresenterImpl(this); } @Override @@ -203,7 +248,8 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.punishHandleLayout, R.id.addImageView, R.id.handleLayout, R.id.submitButton}) + @OnClick({R.id.locationMapView, R.id.caseHandleResultLayout, R.id.addHandleImageView, R.id.punishHandleLayout, + R.id.addPunishImageView, R.id.handleLayout, R.id.submitButton}) @Override public void onClick(View v) { switch (v.getId()) { @@ -224,12 +270,36 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; + case R.id.caseHandleResultLayout: + caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + break; + case R.id.addHandleImageView: + isAddHandleImage = true; + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .create().show(); + break; case R.id.punishHandleLayout: new QMUIBottomSheet.BottomListSheetBuilder(this) .setTitle("处罚类型") - .addItem("劝导") - .addItem("警告") - .addItem("处罚") + .addItem("劝导")//1 + .addItem("警告")//2 + .addItem("处罚")//3 .setGravityCenter(true) .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { @Override @@ -240,7 +310,8 @@ } }).build().show(); break; - case R.id.addImageView: + case R.id.addPunishImageView: + isAddHandleImage = false; new QMUIDialog.MenuDialogBuilder(this) .addItem("相册中选取", new DialogInterface.OnClickListener() { @Override @@ -346,36 +417,73 @@ * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg */ //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - String url = resultBean.getData(); - int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - imageAdapter.setMediaList(realPaths); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, realPaths); + if (isAddHandleImage) { + //处理图片 + int sumItemCount = handleImageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + handleImageList.add(url); + handleRealPaths.add(StringHelper.appendCompleteURL(url)); + if (handleRealPaths.size() == 2) { + addHandleImageView.setVisibility(View.GONE); } - }); - //删除按钮点击事件 - imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - imageList.remove(position); - realPaths.remove(position); - imageAdapter.setMediaList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); + handleImageAdapter.setMediaList(handleRealPaths); + //九宫格点击事件 + handleImageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, handleRealPaths); } - } - }); + }); + //删除按钮点击事件 + handleImageAdapter.setDeleteView(true); + handleImageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + handleImageList.remove(position); + handleRealPaths.remove(position); + handleImageAdapter.setMediaList(handleRealPaths); + if (handleRealPaths.size() != 2) { + addHandleImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + //处罚图片 + int sumItemCount = punishImageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + punishImageList.add(url); + punishRealPaths.add(StringHelper.appendCompleteURL(url)); + if (punishRealPaths.size() == 2) { + addPunishImageView.setVisibility(View.GONE); + } + punishImageAdapter.setMediaList(punishRealPaths); + //九宫格点击事件 + punishImageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, punishRealPaths); + } + }); + //删除按钮点击事件 + punishImageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + punishImageList.remove(position); + punishRealPaths.remove(position); + punishImageAdapter.setMediaList(punishRealPaths); + if (punishRealPaths.size() != 2) { + addPunishImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } } } } @@ -385,26 +493,100 @@ } - /** - * 案卷提交 - */ - private void submitCase() { - String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(punishType)) { - ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); - return; - } - String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(punishType)) { - ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); - return; - } - if (imageAdapter.getItemCount() != 2) { - ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); - return; + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处理结果"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + String nextOperation = dataBean.getNextOperation(); + caseHandleResultView.setText(nextOperation); + if (nextOperation.equals("处理完成")) { + line1.setVisibility(View.VISIBLE); + line2.setVisibility(View.GONE); + imageLayout.setVisibility(View.VISIBLE); + reasonLayout.setVisibility(View.GONE); + punishLayout.setVisibility(View.VISIBLE); + } else { + line1.setVisibility(View.GONE); + line2.setVisibility(View.VISIBLE); + imageLayout.setVisibility(View.GONE); + reasonLayout.setVisibility(View.VISIBLE); + punishLayout.setVisibility(View.GONE); + } + changeState = String.valueOf(dataBean.getNextState()); + approvalResult = dataBean.getApprovalResult(); + } + }).build().show(); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); } } + /** + * 案卷提交。先提交普通案卷流程,成功后再自动提交三包处罚 + */ + private void submitCase() { + handleResult = caseHandleResultView.getText().toString(); + if (TextUtils.isEmpty(handleResult)) { + ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); + return; + } + if (handleResult.equals("处理完成")) { + //选择处理完成时,处理图片必传。至少一张,最多两张 + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); + return; + } + //只有选择处理完成才需要判断处罚条件 + String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); + return; + } + String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); + return; + } + } + if (handleResult.equals("申请延期") || handleResult.equals("申请调整")) { + caseReason = caseReasonView.getText().toString(); + if (TextUtils.isEmpty(caseReason)) { + ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING); + return; + } + } + caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), + changeState, caseReason, StringHelper.reformatURL(handleImageList), approvalResult); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + if (handleResult.equals("处理完成")) { + //只有选择处理完成才需要操作处罚流程 +// casePunishPresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), +// changeState, caseReason, StringHelper.reformatURL(punishImageList), approvalResult); + } else { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + PackageTodoFragment.sendEmptyMessage(Constant.PACKAGE_DONE); + PackageHandledFragment.sendEmptyMessage(Constant.PACKAGE_DONE); + finish(); + } + } + } + + @Override protected void onDestroy() { super.onDestroy(); @@ -414,5 +596,11 @@ if (uploadImagePresenter != null) { uploadImagePresenter.disposeRetrofitRequest(); } + if (caseNextNodePresenter != null) { + caseNextNodePresenter.disposeRetrofitRequest(); + } + if (caseHandlePresenter != null) { + caseHandlePresenter.disposeRetrofitRequest(); + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 87b7376..22b83e8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -307,7 +307,7 @@ private void submitCase() { String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("请选择")) { + if (handleResult.equals("")) { ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); return; } diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java index 570f9f6..7221e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.bean.CleanRecordBean; import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; import com.casic.dcms.mvp.view.ICleanToiletRecordView; +import com.casic.dcms.utils.CalendarUtil; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; @@ -31,7 +32,6 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; -import java.util.Calendar; import java.util.List; import butterknife.BindView; @@ -84,7 +84,7 @@ @Override public void onClick(View v) { new DatePopupWindow - .Builder(CleanResultListActivity.this, Calendar.getInstance().getTime(), v)//初始化 + .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 diff --git a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java index 9977519..f971c57 100644 --- a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java @@ -7,6 +7,8 @@ import android.view.View; import android.widget.EditText; import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; import android.widget.TextView; import androidx.annotation.Nullable; @@ -19,10 +21,17 @@ import com.casic.dcms.base.BaseCaseActivity; import com.casic.dcms.bean.ActionResultBean; import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.bean.CaseNextNodeBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.ICaseHandleView; +import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -51,7 +60,7 @@ import butterknife.OnClick; public class PackageTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IUploadFileView { + ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { private static final String TAG = "PackageTodoDetail"; @BindView(R.id.caseNumberView) TextView caseNumberView; @@ -71,16 +80,32 @@ TextView caseSituationView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleResultView) + TextView caseHandleResultView; + @BindView(R.id.line1) + View line1; + @BindView(R.id.imageLayout) + RelativeLayout imageLayout; + @BindView(R.id.line2) + View line2; + @BindView(R.id.reasonLayout) + RelativeLayout reasonLayout; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; + @BindView(R.id.addHandleImageView) + ImageView addHandleImageView; + @BindView(R.id.caseReasonView) + EditText caseReasonView; + @BindView(R.id.punishLayout) + LinearLayout punishLayout; @BindView(R.id.punishTypeView) TextView punishTypeView; @BindView(R.id.punishOpinionView) EditText punishOpinionView; @BindView(R.id.punishRecyclerView) RecyclerView punishRecyclerView; - @BindView(R.id.addImageView) - ImageView addImageView; + @BindView(R.id.addPunishImageView) + ImageView addPunishImageView; @BindView(R.id.punishDateView) TextView punishDateView; @BindView(R.id.submitButton) @@ -91,9 +116,19 @@ private CaseDetailPresenterImpl caseDetailPresenter; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 - private List imageList = new ArrayList<>();//上传到服务器的数据集 - private ImageRecycleViewAdapter imageAdapter; + private ArrayList handleRealPaths = new ArrayList<>();//真实图片路径 + private ArrayList punishRealPaths = new ArrayList<>();//真实图片路径 + private List handleImageList = new ArrayList<>();//上传到服务器的数据集 + private List punishImageList = new ArrayList<>();//上传到服务器的数据集 + private ImageRecycleViewAdapter punishImageAdapter, handleImageAdapter; + private CaseNextNodePresenterImpl caseNextNodePresenter; + private String changeState; + private String approvalResult; + private String caseReason; + private boolean isAddHandleImage = false;//区分是添加处理图片还是添加处罚图片 + private String id;//案卷id + private CaseHandlePresenterImpl caseHandlePresenter; + private String handleResult; @Override public int initLayoutView() { @@ -102,12 +137,12 @@ @Override protected String setTitleName() { - return "已办案卷"; + return "待办案卷"; } @Override public void initData() { - String id = getIntent().getStringExtra("id"); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); submitDialog = new QMUITipDialog.Builder(this) @@ -115,10 +150,20 @@ .setTipWord("处理中,请稍后") .create(); uploadImagePresenter = new UploadImagePresenterImpl(this); - imageAdapter = new ImageRecycleViewAdapter(this); + //处罚adapter + punishImageAdapter = new ImageRecycleViewAdapter(this); punishRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); punishRecyclerView.addItemDecoration(new ItemDecorationSpace()); - punishRecyclerView.setAdapter(imageAdapter); + punishRecyclerView.setAdapter(punishImageAdapter); + //下级结点 + caseNextNodePresenter = new CaseNextNodePresenterImpl(this); + //案卷处理adapter + handleImageAdapter = new ImageRecycleViewAdapter(this); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(handleImageAdapter); + + caseHandlePresenter = new CaseHandlePresenterImpl(this); } @Override @@ -203,7 +248,8 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.punishHandleLayout, R.id.addImageView, R.id.handleLayout, R.id.submitButton}) + @OnClick({R.id.locationMapView, R.id.caseHandleResultLayout, R.id.addHandleImageView, R.id.punishHandleLayout, + R.id.addPunishImageView, R.id.handleLayout, R.id.submitButton}) @Override public void onClick(View v) { switch (v.getId()) { @@ -224,12 +270,36 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; + case R.id.caseHandleResultLayout: + caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + break; + case R.id.addHandleImageView: + isAddHandleImage = true; + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .create().show(); + break; case R.id.punishHandleLayout: new QMUIBottomSheet.BottomListSheetBuilder(this) .setTitle("处罚类型") - .addItem("劝导") - .addItem("警告") - .addItem("处罚") + .addItem("劝导")//1 + .addItem("警告")//2 + .addItem("处罚")//3 .setGravityCenter(true) .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { @Override @@ -240,7 +310,8 @@ } }).build().show(); break; - case R.id.addImageView: + case R.id.addPunishImageView: + isAddHandleImage = false; new QMUIDialog.MenuDialogBuilder(this) .addItem("相册中选取", new DialogInterface.OnClickListener() { @Override @@ -346,36 +417,73 @@ * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg */ //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - String url = resultBean.getData(); - int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - imageAdapter.setMediaList(realPaths); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, realPaths); + if (isAddHandleImage) { + //处理图片 + int sumItemCount = handleImageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + handleImageList.add(url); + handleRealPaths.add(StringHelper.appendCompleteURL(url)); + if (handleRealPaths.size() == 2) { + addHandleImageView.setVisibility(View.GONE); } - }); - //删除按钮点击事件 - imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - imageList.remove(position); - realPaths.remove(position); - imageAdapter.setMediaList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); + handleImageAdapter.setMediaList(handleRealPaths); + //九宫格点击事件 + handleImageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, handleRealPaths); } - } - }); + }); + //删除按钮点击事件 + handleImageAdapter.setDeleteView(true); + handleImageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + handleImageList.remove(position); + handleRealPaths.remove(position); + handleImageAdapter.setMediaList(handleRealPaths); + if (handleRealPaths.size() != 2) { + addHandleImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + //处罚图片 + int sumItemCount = punishImageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + punishImageList.add(url); + punishRealPaths.add(StringHelper.appendCompleteURL(url)); + if (punishRealPaths.size() == 2) { + addPunishImageView.setVisibility(View.GONE); + } + punishImageAdapter.setMediaList(punishRealPaths); + //九宫格点击事件 + punishImageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, punishRealPaths); + } + }); + //删除按钮点击事件 + punishImageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + punishImageList.remove(position); + punishRealPaths.remove(position); + punishImageAdapter.setMediaList(punishRealPaths); + if (punishRealPaths.size() != 2) { + addPunishImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } } } } @@ -385,26 +493,100 @@ } - /** - * 案卷提交 - */ - private void submitCase() { - String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(punishType)) { - ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); - return; - } - String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(punishType)) { - ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); - return; - } - if (imageAdapter.getItemCount() != 2) { - ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); - return; + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处理结果"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + String nextOperation = dataBean.getNextOperation(); + caseHandleResultView.setText(nextOperation); + if (nextOperation.equals("处理完成")) { + line1.setVisibility(View.VISIBLE); + line2.setVisibility(View.GONE); + imageLayout.setVisibility(View.VISIBLE); + reasonLayout.setVisibility(View.GONE); + punishLayout.setVisibility(View.VISIBLE); + } else { + line1.setVisibility(View.GONE); + line2.setVisibility(View.VISIBLE); + imageLayout.setVisibility(View.GONE); + reasonLayout.setVisibility(View.VISIBLE); + punishLayout.setVisibility(View.GONE); + } + changeState = String.valueOf(dataBean.getNextState()); + approvalResult = dataBean.getApprovalResult(); + } + }).build().show(); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); } } + /** + * 案卷提交。先提交普通案卷流程,成功后再自动提交三包处罚 + */ + private void submitCase() { + handleResult = caseHandleResultView.getText().toString(); + if (TextUtils.isEmpty(handleResult)) { + ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); + return; + } + if (handleResult.equals("处理完成")) { + //选择处理完成时,处理图片必传。至少一张,最多两张 + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); + return; + } + //只有选择处理完成才需要判断处罚条件 + String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); + return; + } + String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); + return; + } + } + if (handleResult.equals("申请延期") || handleResult.equals("申请调整")) { + caseReason = caseReasonView.getText().toString(); + if (TextUtils.isEmpty(caseReason)) { + ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING); + return; + } + } + caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), + changeState, caseReason, StringHelper.reformatURL(handleImageList), approvalResult); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + if (handleResult.equals("处理完成")) { + //只有选择处理完成才需要操作处罚流程 +// casePunishPresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), +// changeState, caseReason, StringHelper.reformatURL(punishImageList), approvalResult); + } else { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + PackageTodoFragment.sendEmptyMessage(Constant.PACKAGE_DONE); + PackageHandledFragment.sendEmptyMessage(Constant.PACKAGE_DONE); + finish(); + } + } + } + + @Override protected void onDestroy() { super.onDestroy(); @@ -414,5 +596,11 @@ if (uploadImagePresenter != null) { uploadImagePresenter.disposeRetrofitRequest(); } + if (caseNextNodePresenter != null) { + caseNextNodePresenter.disposeRetrofitRequest(); + } + if (caseHandlePresenter != null) { + caseHandlePresenter.disposeRetrofitRequest(); + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 3b9759b..17b866e 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -3,9 +3,6 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.util.Log; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; @@ -35,24 +32,17 @@ import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; -import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.google.gson.Gson; import com.qmuiteam.qmui.widget.QMUIRadiusImageView; -import org.jetbrains.annotations.NotNull; - -import java.lang.ref.WeakReference; - import butterknife.BindView; /** - * TODO 此页面后期可能需要添加滑动吸顶效果 + * 此页面后期可能需要添加滑动吸顶效果 */ public class HomePageFragment extends BaseFragment implements IUserDataView, IHomePageView { - private static final String TAG = "HomePageFragment"; @BindView(R.id.userIconView) QMUIRadiusImageView userIconView; @BindView(R.id.userNameView) @@ -66,8 +56,6 @@ private Context context; private UserDataPresenterImpl userDataPresenter; private HomePagePresenterImpl homePagePresenter; - private Gson gson; - private WeakReferenceHandler weakReferenceHandler; @Override protected int initLayoutView() { @@ -81,146 +69,33 @@ @Override protected void initData() { - gson = new Gson(); userDataPresenter = new UserDataPresenterImpl(this); homePagePresenter = new HomePagePresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); } @Override protected void initEvent() { - /** - * 根据登录账号判断是否是同一个人登录,如果是,从缓存读取数据,否则请求后台数据,获取最新登录者的部门等信息 - * */ - String userBeanJson = (String) SaveKeyValues.getValue("userBean", ""); - if (userBeanJson.equals("")) { - Log.d(TAG, "initData: 从没有人登录过,需要从新获取数据"); - userDataPresenter.onReadyRetrofitRequest(); - homePagePresenter.onReadyRetrofitRequest("05"); - } else { - UserBean userBean = gson.fromJson(userBeanJson, UserBean.class); - if (userBean.getData().getAccount().equals(StringHelper.getUserAccount())) { - Log.d(TAG, "initData: 同一人重复登录,加载缓存"); - Message userInfoMessage = weakReferenceHandler.obtainMessage(); - userInfoMessage.what = 2021061101; - userInfoMessage.obj = userBean; - weakReferenceHandler.sendMessage(userInfoMessage); - - String homePageBeanJson = (String) SaveKeyValues.getValue("homePageBean", ""); - HomePageBean homePageBean = gson.fromJson(homePageBeanJson, HomePageBean.class); - Message homePageMessage = weakReferenceHandler.obtainMessage(); - homePageMessage.what = 2021061102; - homePageMessage.obj = homePageBean; - weakReferenceHandler.sendMessage(homePageMessage); - } else { - Log.d(TAG, "initData: 有人登录过,但是上次和这次登录者不是同一人,需要从新获取数据"); - userDataPresenter.onReadyRetrofitRequest(); - homePagePresenter.onReadyRetrofitRequest("05"); - } - } + userDataPresenter.onReadyRetrofitRequest(); + homePagePresenter.onReadyRetrofitRequest("05"); } - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(HomePageFragment fragment) { - reference = new WeakReference<>(fragment); - } - - @SuppressLint("SetTextI18n") - @Override - public void handleMessage(@NotNull Message msg) { - HomePageFragment homePageFragment = reference.get(); - Context context = homePageFragment.context; - switch (msg.what) { - case 2021061101: - UserBean userBean = (UserBean) msg.obj; - //QMUIRadiusImageView无法动态设置圆形头像,借助Glide实现圆形头像 -// Glide.with(homePageFragment).load(R.mipmap.app_logo).apply(RequestOptions.circleCropTransform()).into(userIconView); - Glide.with(homePageFragment).load(R.mipmap.app_logo).into(homePageFragment.userIconView); - - UserBean.DataBean data = userBean.getData(); - homePageFragment.userNameView.setText(data.getName()); - homePageFragment.userDeptView.setText(data.getDeptName() + data.getRoleNames()); - - //把常用的几个属性单独存起来 - StringHelper.saveUserName(data.getName()); - StringHelper.saveUserPhone(data.getPhone()); - StringHelper.saveUserDept(data.getDeptName()); - StringHelper.saveUserDeptId(data.getDeptId()); - StringHelper.saveUserId(data.getId()); - break; - case 2021061102: - HomePageBean resultBean = (HomePageBean) msg.obj; - HomeRecycleAdapter adapter = new HomeRecycleAdapter(context, resultBean.getData().getMenus()); - homePageFragment.homeRecyclerView.setLayoutManager(new GridLayoutManager(context, 3)); - homePageFragment.homeRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new HomeRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(String itemName) { - Intent intent = new Intent(); - switch (itemName) { - case "案卷上报": - intent.setClass(context, CaseUploadActivity.class); - break; - case "快速上报": - intent.setClass(context, CaseUploadQuicklyActivity.class); - break; - case "三包上报": - intent.setClass(context, CaseUploadPackageActivity.class); - break; - case "案卷核实": - intent.setClass(context, CaseVerifyActivity.class); - break; - case "案卷核查": - intent.setClass(context, CaseCheckActivity.class); - break; - case "案卷处理": - intent.setClass(context, CaseHandleActivity.class); - break; - case "紧急要件": - intent.setClass(context, UrgentCaseActivity.class); - break; - case "超时督办": - intent.setClass(context, OvertimeCaseActivity.class); - break; - case "统计分析": - intent.setClass(context, DataAnalysisActivity.class); - break; - case "在岗人员": - intent.setClass(context, PersonOnlineActivity.class); - break; - case "案卷查询": - intent.setClass(context, CaseSearchActivity.class); - break; - case "案卷分布": - intent.setClass(context, CaseOnMapActivity.class); - break; - case "公厕保洁": - intent.setClass(context, PublicToiletActivity.class); - break; - case "三包处置": - intent.setClass(context, PackageHandleActivity.class); - break; - default: - break; - } - context.startActivity(intent); - } - }); - break; - } - } - } - + @SuppressLint("SetTextI18n") @Override public void obtainUserData(UserBean userBean) { if (userBean.isSuccess()) { - SaveKeyValues.putValue("userBean", gson.toJson(userBean)); - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021061101; - message.obj = userBean; - weakReferenceHandler.sendMessage(message); + //QMUIRadiusImageView无法动态设置圆形头像,借助Glide实现圆形头像 +// Glide.with(this).load(R.mipmap.app_logo).apply(RequestOptions.circleCropTransform()).into(userIconView); + Glide.with(this).load(R.mipmap.app_logo).into(userIconView); + + UserBean.DataBean data = userBean.getData(); + userNameView.setText(data.getName()); + userDeptView.setText(data.getDeptName() + data.getRoleNames()); + + StringHelper.saveUserName(data.getName()); + StringHelper.saveUserPhone(data.getPhone()); + StringHelper.saveUserDept(data.getDeptName()); + StringHelper.saveUserDeptId(data.getDeptId()); + StringHelper.saveUserId(data.getId()); } } @@ -228,11 +103,62 @@ @Override public void obtainHomePageResult(HomePageBean resultBean) { if (resultBean.isSuccess()) { - SaveKeyValues.putValue("homePageBean", gson.toJson(resultBean)); - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021061102; - message.obj = resultBean; - weakReferenceHandler.sendMessage(message); + HomeRecycleAdapter adapter = new HomeRecycleAdapter(context, resultBean.getData().getMenus()); + homeRecyclerView.setLayoutManager(new GridLayoutManager(context, 3)); + homeRecyclerView.setAdapter(adapter); + adapter.setOnGridItemClickListener(new HomeRecycleAdapter.OnGridItemClickListener() { + @Override + public void onClick(String itemName) { + Intent intent = new Intent(); + switch (itemName) { + case "案卷上报": + intent.setClass(context, CaseUploadActivity.class); + break; + case "快速上报": + intent.setClass(context, CaseUploadQuicklyActivity.class); + break; + case "三包上报": + intent.setClass(context, CaseUploadPackageActivity.class); + break; + case "案卷核实": + intent.setClass(context, CaseVerifyActivity.class); + break; + case "案卷核查": + intent.setClass(context, CaseCheckActivity.class); + break; + case "案卷处理": + intent.setClass(context, CaseHandleActivity.class); + break; + case "紧急要件": + intent.setClass(context, UrgentCaseActivity.class); + break; + case "超时督办": + intent.setClass(context, OvertimeCaseActivity.class); + break; + case "统计分析": + intent.setClass(context, DataAnalysisActivity.class); + break; + case "在岗人员": + intent.setClass(context, PersonOnlineActivity.class); + break; + case "案卷查询": + intent.setClass(context, CaseSearchActivity.class); + break; + case "案卷分布": + intent.setClass(context, CaseOnMapActivity.class); + break; + case "公厕保洁": + intent.setClass(context, PublicToiletActivity.class); + break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; + default: + break; + } + startActivity(intent); + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 87b7376..22b83e8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -307,7 +307,7 @@ private void submitCase() { String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("请选择")) { + if (handleResult.equals("")) { ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); return; } diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java index 570f9f6..7221e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.bean.CleanRecordBean; import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; import com.casic.dcms.mvp.view.ICleanToiletRecordView; +import com.casic.dcms.utils.CalendarUtil; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; @@ -31,7 +32,6 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; -import java.util.Calendar; import java.util.List; import butterknife.BindView; @@ -84,7 +84,7 @@ @Override public void onClick(View v) { new DatePopupWindow - .Builder(CleanResultListActivity.this, Calendar.getInstance().getTime(), v)//初始化 + .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 diff --git a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java index 9977519..f971c57 100644 --- a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java @@ -7,6 +7,8 @@ import android.view.View; import android.widget.EditText; import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; import android.widget.TextView; import androidx.annotation.Nullable; @@ -19,10 +21,17 @@ import com.casic.dcms.base.BaseCaseActivity; import com.casic.dcms.bean.ActionResultBean; import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.bean.CaseNextNodeBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.ICaseHandleView; +import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -51,7 +60,7 @@ import butterknife.OnClick; public class PackageTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IUploadFileView { + ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { private static final String TAG = "PackageTodoDetail"; @BindView(R.id.caseNumberView) TextView caseNumberView; @@ -71,16 +80,32 @@ TextView caseSituationView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleResultView) + TextView caseHandleResultView; + @BindView(R.id.line1) + View line1; + @BindView(R.id.imageLayout) + RelativeLayout imageLayout; + @BindView(R.id.line2) + View line2; + @BindView(R.id.reasonLayout) + RelativeLayout reasonLayout; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; + @BindView(R.id.addHandleImageView) + ImageView addHandleImageView; + @BindView(R.id.caseReasonView) + EditText caseReasonView; + @BindView(R.id.punishLayout) + LinearLayout punishLayout; @BindView(R.id.punishTypeView) TextView punishTypeView; @BindView(R.id.punishOpinionView) EditText punishOpinionView; @BindView(R.id.punishRecyclerView) RecyclerView punishRecyclerView; - @BindView(R.id.addImageView) - ImageView addImageView; + @BindView(R.id.addPunishImageView) + ImageView addPunishImageView; @BindView(R.id.punishDateView) TextView punishDateView; @BindView(R.id.submitButton) @@ -91,9 +116,19 @@ private CaseDetailPresenterImpl caseDetailPresenter; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 - private List imageList = new ArrayList<>();//上传到服务器的数据集 - private ImageRecycleViewAdapter imageAdapter; + private ArrayList handleRealPaths = new ArrayList<>();//真实图片路径 + private ArrayList punishRealPaths = new ArrayList<>();//真实图片路径 + private List handleImageList = new ArrayList<>();//上传到服务器的数据集 + private List punishImageList = new ArrayList<>();//上传到服务器的数据集 + private ImageRecycleViewAdapter punishImageAdapter, handleImageAdapter; + private CaseNextNodePresenterImpl caseNextNodePresenter; + private String changeState; + private String approvalResult; + private String caseReason; + private boolean isAddHandleImage = false;//区分是添加处理图片还是添加处罚图片 + private String id;//案卷id + private CaseHandlePresenterImpl caseHandlePresenter; + private String handleResult; @Override public int initLayoutView() { @@ -102,12 +137,12 @@ @Override protected String setTitleName() { - return "已办案卷"; + return "待办案卷"; } @Override public void initData() { - String id = getIntent().getStringExtra("id"); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); submitDialog = new QMUITipDialog.Builder(this) @@ -115,10 +150,20 @@ .setTipWord("处理中,请稍后") .create(); uploadImagePresenter = new UploadImagePresenterImpl(this); - imageAdapter = new ImageRecycleViewAdapter(this); + //处罚adapter + punishImageAdapter = new ImageRecycleViewAdapter(this); punishRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); punishRecyclerView.addItemDecoration(new ItemDecorationSpace()); - punishRecyclerView.setAdapter(imageAdapter); + punishRecyclerView.setAdapter(punishImageAdapter); + //下级结点 + caseNextNodePresenter = new CaseNextNodePresenterImpl(this); + //案卷处理adapter + handleImageAdapter = new ImageRecycleViewAdapter(this); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(handleImageAdapter); + + caseHandlePresenter = new CaseHandlePresenterImpl(this); } @Override @@ -203,7 +248,8 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.punishHandleLayout, R.id.addImageView, R.id.handleLayout, R.id.submitButton}) + @OnClick({R.id.locationMapView, R.id.caseHandleResultLayout, R.id.addHandleImageView, R.id.punishHandleLayout, + R.id.addPunishImageView, R.id.handleLayout, R.id.submitButton}) @Override public void onClick(View v) { switch (v.getId()) { @@ -224,12 +270,36 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; + case R.id.caseHandleResultLayout: + caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + break; + case R.id.addHandleImageView: + isAddHandleImage = true; + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .create().show(); + break; case R.id.punishHandleLayout: new QMUIBottomSheet.BottomListSheetBuilder(this) .setTitle("处罚类型") - .addItem("劝导") - .addItem("警告") - .addItem("处罚") + .addItem("劝导")//1 + .addItem("警告")//2 + .addItem("处罚")//3 .setGravityCenter(true) .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { @Override @@ -240,7 +310,8 @@ } }).build().show(); break; - case R.id.addImageView: + case R.id.addPunishImageView: + isAddHandleImage = false; new QMUIDialog.MenuDialogBuilder(this) .addItem("相册中选取", new DialogInterface.OnClickListener() { @Override @@ -346,36 +417,73 @@ * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg */ //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - String url = resultBean.getData(); - int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - imageAdapter.setMediaList(realPaths); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, realPaths); + if (isAddHandleImage) { + //处理图片 + int sumItemCount = handleImageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + handleImageList.add(url); + handleRealPaths.add(StringHelper.appendCompleteURL(url)); + if (handleRealPaths.size() == 2) { + addHandleImageView.setVisibility(View.GONE); } - }); - //删除按钮点击事件 - imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - imageList.remove(position); - realPaths.remove(position); - imageAdapter.setMediaList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); + handleImageAdapter.setMediaList(handleRealPaths); + //九宫格点击事件 + handleImageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, handleRealPaths); } - } - }); + }); + //删除按钮点击事件 + handleImageAdapter.setDeleteView(true); + handleImageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + handleImageList.remove(position); + handleRealPaths.remove(position); + handleImageAdapter.setMediaList(handleRealPaths); + if (handleRealPaths.size() != 2) { + addHandleImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + //处罚图片 + int sumItemCount = punishImageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + punishImageList.add(url); + punishRealPaths.add(StringHelper.appendCompleteURL(url)); + if (punishRealPaths.size() == 2) { + addPunishImageView.setVisibility(View.GONE); + } + punishImageAdapter.setMediaList(punishRealPaths); + //九宫格点击事件 + punishImageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, punishRealPaths); + } + }); + //删除按钮点击事件 + punishImageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + punishImageList.remove(position); + punishRealPaths.remove(position); + punishImageAdapter.setMediaList(punishRealPaths); + if (punishRealPaths.size() != 2) { + addPunishImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } } } } @@ -385,26 +493,100 @@ } - /** - * 案卷提交 - */ - private void submitCase() { - String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(punishType)) { - ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); - return; - } - String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(punishType)) { - ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); - return; - } - if (imageAdapter.getItemCount() != 2) { - ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); - return; + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处理结果"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + String nextOperation = dataBean.getNextOperation(); + caseHandleResultView.setText(nextOperation); + if (nextOperation.equals("处理完成")) { + line1.setVisibility(View.VISIBLE); + line2.setVisibility(View.GONE); + imageLayout.setVisibility(View.VISIBLE); + reasonLayout.setVisibility(View.GONE); + punishLayout.setVisibility(View.VISIBLE); + } else { + line1.setVisibility(View.GONE); + line2.setVisibility(View.VISIBLE); + imageLayout.setVisibility(View.GONE); + reasonLayout.setVisibility(View.VISIBLE); + punishLayout.setVisibility(View.GONE); + } + changeState = String.valueOf(dataBean.getNextState()); + approvalResult = dataBean.getApprovalResult(); + } + }).build().show(); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); } } + /** + * 案卷提交。先提交普通案卷流程,成功后再自动提交三包处罚 + */ + private void submitCase() { + handleResult = caseHandleResultView.getText().toString(); + if (TextUtils.isEmpty(handleResult)) { + ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); + return; + } + if (handleResult.equals("处理完成")) { + //选择处理完成时,处理图片必传。至少一张,最多两张 + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); + return; + } + //只有选择处理完成才需要判断处罚条件 + String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); + return; + } + String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); + return; + } + } + if (handleResult.equals("申请延期") || handleResult.equals("申请调整")) { + caseReason = caseReasonView.getText().toString(); + if (TextUtils.isEmpty(caseReason)) { + ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING); + return; + } + } + caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), + changeState, caseReason, StringHelper.reformatURL(handleImageList), approvalResult); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + if (handleResult.equals("处理完成")) { + //只有选择处理完成才需要操作处罚流程 +// casePunishPresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), +// changeState, caseReason, StringHelper.reformatURL(punishImageList), approvalResult); + } else { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + PackageTodoFragment.sendEmptyMessage(Constant.PACKAGE_DONE); + PackageHandledFragment.sendEmptyMessage(Constant.PACKAGE_DONE); + finish(); + } + } + } + + @Override protected void onDestroy() { super.onDestroy(); @@ -414,5 +596,11 @@ if (uploadImagePresenter != null) { uploadImagePresenter.disposeRetrofitRequest(); } + if (caseNextNodePresenter != null) { + caseNextNodePresenter.disposeRetrofitRequest(); + } + if (caseHandlePresenter != null) { + caseHandlePresenter.disposeRetrofitRequest(); + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 3b9759b..17b866e 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -3,9 +3,6 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.util.Log; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; @@ -35,24 +32,17 @@ import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; -import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.google.gson.Gson; import com.qmuiteam.qmui.widget.QMUIRadiusImageView; -import org.jetbrains.annotations.NotNull; - -import java.lang.ref.WeakReference; - import butterknife.BindView; /** - * TODO 此页面后期可能需要添加滑动吸顶效果 + * 此页面后期可能需要添加滑动吸顶效果 */ public class HomePageFragment extends BaseFragment implements IUserDataView, IHomePageView { - private static final String TAG = "HomePageFragment"; @BindView(R.id.userIconView) QMUIRadiusImageView userIconView; @BindView(R.id.userNameView) @@ -66,8 +56,6 @@ private Context context; private UserDataPresenterImpl userDataPresenter; private HomePagePresenterImpl homePagePresenter; - private Gson gson; - private WeakReferenceHandler weakReferenceHandler; @Override protected int initLayoutView() { @@ -81,146 +69,33 @@ @Override protected void initData() { - gson = new Gson(); userDataPresenter = new UserDataPresenterImpl(this); homePagePresenter = new HomePagePresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); } @Override protected void initEvent() { - /** - * 根据登录账号判断是否是同一个人登录,如果是,从缓存读取数据,否则请求后台数据,获取最新登录者的部门等信息 - * */ - String userBeanJson = (String) SaveKeyValues.getValue("userBean", ""); - if (userBeanJson.equals("")) { - Log.d(TAG, "initData: 从没有人登录过,需要从新获取数据"); - userDataPresenter.onReadyRetrofitRequest(); - homePagePresenter.onReadyRetrofitRequest("05"); - } else { - UserBean userBean = gson.fromJson(userBeanJson, UserBean.class); - if (userBean.getData().getAccount().equals(StringHelper.getUserAccount())) { - Log.d(TAG, "initData: 同一人重复登录,加载缓存"); - Message userInfoMessage = weakReferenceHandler.obtainMessage(); - userInfoMessage.what = 2021061101; - userInfoMessage.obj = userBean; - weakReferenceHandler.sendMessage(userInfoMessage); - - String homePageBeanJson = (String) SaveKeyValues.getValue("homePageBean", ""); - HomePageBean homePageBean = gson.fromJson(homePageBeanJson, HomePageBean.class); - Message homePageMessage = weakReferenceHandler.obtainMessage(); - homePageMessage.what = 2021061102; - homePageMessage.obj = homePageBean; - weakReferenceHandler.sendMessage(homePageMessage); - } else { - Log.d(TAG, "initData: 有人登录过,但是上次和这次登录者不是同一人,需要从新获取数据"); - userDataPresenter.onReadyRetrofitRequest(); - homePagePresenter.onReadyRetrofitRequest("05"); - } - } + userDataPresenter.onReadyRetrofitRequest(); + homePagePresenter.onReadyRetrofitRequest("05"); } - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(HomePageFragment fragment) { - reference = new WeakReference<>(fragment); - } - - @SuppressLint("SetTextI18n") - @Override - public void handleMessage(@NotNull Message msg) { - HomePageFragment homePageFragment = reference.get(); - Context context = homePageFragment.context; - switch (msg.what) { - case 2021061101: - UserBean userBean = (UserBean) msg.obj; - //QMUIRadiusImageView无法动态设置圆形头像,借助Glide实现圆形头像 -// Glide.with(homePageFragment).load(R.mipmap.app_logo).apply(RequestOptions.circleCropTransform()).into(userIconView); - Glide.with(homePageFragment).load(R.mipmap.app_logo).into(homePageFragment.userIconView); - - UserBean.DataBean data = userBean.getData(); - homePageFragment.userNameView.setText(data.getName()); - homePageFragment.userDeptView.setText(data.getDeptName() + data.getRoleNames()); - - //把常用的几个属性单独存起来 - StringHelper.saveUserName(data.getName()); - StringHelper.saveUserPhone(data.getPhone()); - StringHelper.saveUserDept(data.getDeptName()); - StringHelper.saveUserDeptId(data.getDeptId()); - StringHelper.saveUserId(data.getId()); - break; - case 2021061102: - HomePageBean resultBean = (HomePageBean) msg.obj; - HomeRecycleAdapter adapter = new HomeRecycleAdapter(context, resultBean.getData().getMenus()); - homePageFragment.homeRecyclerView.setLayoutManager(new GridLayoutManager(context, 3)); - homePageFragment.homeRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new HomeRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(String itemName) { - Intent intent = new Intent(); - switch (itemName) { - case "案卷上报": - intent.setClass(context, CaseUploadActivity.class); - break; - case "快速上报": - intent.setClass(context, CaseUploadQuicklyActivity.class); - break; - case "三包上报": - intent.setClass(context, CaseUploadPackageActivity.class); - break; - case "案卷核实": - intent.setClass(context, CaseVerifyActivity.class); - break; - case "案卷核查": - intent.setClass(context, CaseCheckActivity.class); - break; - case "案卷处理": - intent.setClass(context, CaseHandleActivity.class); - break; - case "紧急要件": - intent.setClass(context, UrgentCaseActivity.class); - break; - case "超时督办": - intent.setClass(context, OvertimeCaseActivity.class); - break; - case "统计分析": - intent.setClass(context, DataAnalysisActivity.class); - break; - case "在岗人员": - intent.setClass(context, PersonOnlineActivity.class); - break; - case "案卷查询": - intent.setClass(context, CaseSearchActivity.class); - break; - case "案卷分布": - intent.setClass(context, CaseOnMapActivity.class); - break; - case "公厕保洁": - intent.setClass(context, PublicToiletActivity.class); - break; - case "三包处置": - intent.setClass(context, PackageHandleActivity.class); - break; - default: - break; - } - context.startActivity(intent); - } - }); - break; - } - } - } - + @SuppressLint("SetTextI18n") @Override public void obtainUserData(UserBean userBean) { if (userBean.isSuccess()) { - SaveKeyValues.putValue("userBean", gson.toJson(userBean)); - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021061101; - message.obj = userBean; - weakReferenceHandler.sendMessage(message); + //QMUIRadiusImageView无法动态设置圆形头像,借助Glide实现圆形头像 +// Glide.with(this).load(R.mipmap.app_logo).apply(RequestOptions.circleCropTransform()).into(userIconView); + Glide.with(this).load(R.mipmap.app_logo).into(userIconView); + + UserBean.DataBean data = userBean.getData(); + userNameView.setText(data.getName()); + userDeptView.setText(data.getDeptName() + data.getRoleNames()); + + StringHelper.saveUserName(data.getName()); + StringHelper.saveUserPhone(data.getPhone()); + StringHelper.saveUserDept(data.getDeptName()); + StringHelper.saveUserDeptId(data.getDeptId()); + StringHelper.saveUserId(data.getId()); } } @@ -228,11 +103,62 @@ @Override public void obtainHomePageResult(HomePageBean resultBean) { if (resultBean.isSuccess()) { - SaveKeyValues.putValue("homePageBean", gson.toJson(resultBean)); - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021061102; - message.obj = resultBean; - weakReferenceHandler.sendMessage(message); + HomeRecycleAdapter adapter = new HomeRecycleAdapter(context, resultBean.getData().getMenus()); + homeRecyclerView.setLayoutManager(new GridLayoutManager(context, 3)); + homeRecyclerView.setAdapter(adapter); + adapter.setOnGridItemClickListener(new HomeRecycleAdapter.OnGridItemClickListener() { + @Override + public void onClick(String itemName) { + Intent intent = new Intent(); + switch (itemName) { + case "案卷上报": + intent.setClass(context, CaseUploadActivity.class); + break; + case "快速上报": + intent.setClass(context, CaseUploadQuicklyActivity.class); + break; + case "三包上报": + intent.setClass(context, CaseUploadPackageActivity.class); + break; + case "案卷核实": + intent.setClass(context, CaseVerifyActivity.class); + break; + case "案卷核查": + intent.setClass(context, CaseCheckActivity.class); + break; + case "案卷处理": + intent.setClass(context, CaseHandleActivity.class); + break; + case "紧急要件": + intent.setClass(context, UrgentCaseActivity.class); + break; + case "超时督办": + intent.setClass(context, OvertimeCaseActivity.class); + break; + case "统计分析": + intent.setClass(context, DataAnalysisActivity.class); + break; + case "在岗人员": + intent.setClass(context, PersonOnlineActivity.class); + break; + case "案卷查询": + intent.setClass(context, CaseSearchActivity.class); + break; + case "案卷分布": + intent.setClass(context, CaseOnMapActivity.class); + break; + case "公厕保洁": + intent.setClass(context, PublicToiletActivity.class); + break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; + default: + break; + } + startActivity(intent); + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java b/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java index 21db61c..aa2f97b 100755 --- a/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java +++ b/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java @@ -109,4 +109,11 @@ return week; } + //获取前两个月的此时 + public static Date obtainLastTwoMonth() { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.add(Calendar.MONTH, -2); //设置为前2月 + return calendar.getTime();//获取2个月前的时间 + } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 87b7376..22b83e8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -307,7 +307,7 @@ private void submitCase() { String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("请选择")) { + if (handleResult.equals("")) { ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); return; } diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java index 570f9f6..7221e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.bean.CleanRecordBean; import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; import com.casic.dcms.mvp.view.ICleanToiletRecordView; +import com.casic.dcms.utils.CalendarUtil; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; @@ -31,7 +32,6 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; -import java.util.Calendar; import java.util.List; import butterknife.BindView; @@ -84,7 +84,7 @@ @Override public void onClick(View v) { new DatePopupWindow - .Builder(CleanResultListActivity.this, Calendar.getInstance().getTime(), v)//初始化 + .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 diff --git a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java index 9977519..f971c57 100644 --- a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java @@ -7,6 +7,8 @@ import android.view.View; import android.widget.EditText; import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; import android.widget.TextView; import androidx.annotation.Nullable; @@ -19,10 +21,17 @@ import com.casic.dcms.base.BaseCaseActivity; import com.casic.dcms.bean.ActionResultBean; import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.bean.CaseNextNodeBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.ICaseHandleView; +import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -51,7 +60,7 @@ import butterknife.OnClick; public class PackageTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IUploadFileView { + ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { private static final String TAG = "PackageTodoDetail"; @BindView(R.id.caseNumberView) TextView caseNumberView; @@ -71,16 +80,32 @@ TextView caseSituationView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleResultView) + TextView caseHandleResultView; + @BindView(R.id.line1) + View line1; + @BindView(R.id.imageLayout) + RelativeLayout imageLayout; + @BindView(R.id.line2) + View line2; + @BindView(R.id.reasonLayout) + RelativeLayout reasonLayout; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; + @BindView(R.id.addHandleImageView) + ImageView addHandleImageView; + @BindView(R.id.caseReasonView) + EditText caseReasonView; + @BindView(R.id.punishLayout) + LinearLayout punishLayout; @BindView(R.id.punishTypeView) TextView punishTypeView; @BindView(R.id.punishOpinionView) EditText punishOpinionView; @BindView(R.id.punishRecyclerView) RecyclerView punishRecyclerView; - @BindView(R.id.addImageView) - ImageView addImageView; + @BindView(R.id.addPunishImageView) + ImageView addPunishImageView; @BindView(R.id.punishDateView) TextView punishDateView; @BindView(R.id.submitButton) @@ -91,9 +116,19 @@ private CaseDetailPresenterImpl caseDetailPresenter; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 - private List imageList = new ArrayList<>();//上传到服务器的数据集 - private ImageRecycleViewAdapter imageAdapter; + private ArrayList handleRealPaths = new ArrayList<>();//真实图片路径 + private ArrayList punishRealPaths = new ArrayList<>();//真实图片路径 + private List handleImageList = new ArrayList<>();//上传到服务器的数据集 + private List punishImageList = new ArrayList<>();//上传到服务器的数据集 + private ImageRecycleViewAdapter punishImageAdapter, handleImageAdapter; + private CaseNextNodePresenterImpl caseNextNodePresenter; + private String changeState; + private String approvalResult; + private String caseReason; + private boolean isAddHandleImage = false;//区分是添加处理图片还是添加处罚图片 + private String id;//案卷id + private CaseHandlePresenterImpl caseHandlePresenter; + private String handleResult; @Override public int initLayoutView() { @@ -102,12 +137,12 @@ @Override protected String setTitleName() { - return "已办案卷"; + return "待办案卷"; } @Override public void initData() { - String id = getIntent().getStringExtra("id"); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); submitDialog = new QMUITipDialog.Builder(this) @@ -115,10 +150,20 @@ .setTipWord("处理中,请稍后") .create(); uploadImagePresenter = new UploadImagePresenterImpl(this); - imageAdapter = new ImageRecycleViewAdapter(this); + //处罚adapter + punishImageAdapter = new ImageRecycleViewAdapter(this); punishRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); punishRecyclerView.addItemDecoration(new ItemDecorationSpace()); - punishRecyclerView.setAdapter(imageAdapter); + punishRecyclerView.setAdapter(punishImageAdapter); + //下级结点 + caseNextNodePresenter = new CaseNextNodePresenterImpl(this); + //案卷处理adapter + handleImageAdapter = new ImageRecycleViewAdapter(this); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(handleImageAdapter); + + caseHandlePresenter = new CaseHandlePresenterImpl(this); } @Override @@ -203,7 +248,8 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.punishHandleLayout, R.id.addImageView, R.id.handleLayout, R.id.submitButton}) + @OnClick({R.id.locationMapView, R.id.caseHandleResultLayout, R.id.addHandleImageView, R.id.punishHandleLayout, + R.id.addPunishImageView, R.id.handleLayout, R.id.submitButton}) @Override public void onClick(View v) { switch (v.getId()) { @@ -224,12 +270,36 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; + case R.id.caseHandleResultLayout: + caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + break; + case R.id.addHandleImageView: + isAddHandleImage = true; + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .create().show(); + break; case R.id.punishHandleLayout: new QMUIBottomSheet.BottomListSheetBuilder(this) .setTitle("处罚类型") - .addItem("劝导") - .addItem("警告") - .addItem("处罚") + .addItem("劝导")//1 + .addItem("警告")//2 + .addItem("处罚")//3 .setGravityCenter(true) .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { @Override @@ -240,7 +310,8 @@ } }).build().show(); break; - case R.id.addImageView: + case R.id.addPunishImageView: + isAddHandleImage = false; new QMUIDialog.MenuDialogBuilder(this) .addItem("相册中选取", new DialogInterface.OnClickListener() { @Override @@ -346,36 +417,73 @@ * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg */ //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - String url = resultBean.getData(); - int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - imageAdapter.setMediaList(realPaths); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, realPaths); + if (isAddHandleImage) { + //处理图片 + int sumItemCount = handleImageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + handleImageList.add(url); + handleRealPaths.add(StringHelper.appendCompleteURL(url)); + if (handleRealPaths.size() == 2) { + addHandleImageView.setVisibility(View.GONE); } - }); - //删除按钮点击事件 - imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - imageList.remove(position); - realPaths.remove(position); - imageAdapter.setMediaList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); + handleImageAdapter.setMediaList(handleRealPaths); + //九宫格点击事件 + handleImageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, handleRealPaths); } - } - }); + }); + //删除按钮点击事件 + handleImageAdapter.setDeleteView(true); + handleImageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + handleImageList.remove(position); + handleRealPaths.remove(position); + handleImageAdapter.setMediaList(handleRealPaths); + if (handleRealPaths.size() != 2) { + addHandleImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + //处罚图片 + int sumItemCount = punishImageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + punishImageList.add(url); + punishRealPaths.add(StringHelper.appendCompleteURL(url)); + if (punishRealPaths.size() == 2) { + addPunishImageView.setVisibility(View.GONE); + } + punishImageAdapter.setMediaList(punishRealPaths); + //九宫格点击事件 + punishImageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, punishRealPaths); + } + }); + //删除按钮点击事件 + punishImageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + punishImageList.remove(position); + punishRealPaths.remove(position); + punishImageAdapter.setMediaList(punishRealPaths); + if (punishRealPaths.size() != 2) { + addPunishImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } } } } @@ -385,26 +493,100 @@ } - /** - * 案卷提交 - */ - private void submitCase() { - String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(punishType)) { - ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); - return; - } - String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(punishType)) { - ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); - return; - } - if (imageAdapter.getItemCount() != 2) { - ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); - return; + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处理结果"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + String nextOperation = dataBean.getNextOperation(); + caseHandleResultView.setText(nextOperation); + if (nextOperation.equals("处理完成")) { + line1.setVisibility(View.VISIBLE); + line2.setVisibility(View.GONE); + imageLayout.setVisibility(View.VISIBLE); + reasonLayout.setVisibility(View.GONE); + punishLayout.setVisibility(View.VISIBLE); + } else { + line1.setVisibility(View.GONE); + line2.setVisibility(View.VISIBLE); + imageLayout.setVisibility(View.GONE); + reasonLayout.setVisibility(View.VISIBLE); + punishLayout.setVisibility(View.GONE); + } + changeState = String.valueOf(dataBean.getNextState()); + approvalResult = dataBean.getApprovalResult(); + } + }).build().show(); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); } } + /** + * 案卷提交。先提交普通案卷流程,成功后再自动提交三包处罚 + */ + private void submitCase() { + handleResult = caseHandleResultView.getText().toString(); + if (TextUtils.isEmpty(handleResult)) { + ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); + return; + } + if (handleResult.equals("处理完成")) { + //选择处理完成时,处理图片必传。至少一张,最多两张 + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); + return; + } + //只有选择处理完成才需要判断处罚条件 + String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); + return; + } + String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); + return; + } + } + if (handleResult.equals("申请延期") || handleResult.equals("申请调整")) { + caseReason = caseReasonView.getText().toString(); + if (TextUtils.isEmpty(caseReason)) { + ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING); + return; + } + } + caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), + changeState, caseReason, StringHelper.reformatURL(handleImageList), approvalResult); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + if (handleResult.equals("处理完成")) { + //只有选择处理完成才需要操作处罚流程 +// casePunishPresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), +// changeState, caseReason, StringHelper.reformatURL(punishImageList), approvalResult); + } else { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + PackageTodoFragment.sendEmptyMessage(Constant.PACKAGE_DONE); + PackageHandledFragment.sendEmptyMessage(Constant.PACKAGE_DONE); + finish(); + } + } + } + + @Override protected void onDestroy() { super.onDestroy(); @@ -414,5 +596,11 @@ if (uploadImagePresenter != null) { uploadImagePresenter.disposeRetrofitRequest(); } + if (caseNextNodePresenter != null) { + caseNextNodePresenter.disposeRetrofitRequest(); + } + if (caseHandlePresenter != null) { + caseHandlePresenter.disposeRetrofitRequest(); + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 3b9759b..17b866e 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -3,9 +3,6 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.util.Log; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; @@ -35,24 +32,17 @@ import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; -import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.google.gson.Gson; import com.qmuiteam.qmui.widget.QMUIRadiusImageView; -import org.jetbrains.annotations.NotNull; - -import java.lang.ref.WeakReference; - import butterknife.BindView; /** - * TODO 此页面后期可能需要添加滑动吸顶效果 + * 此页面后期可能需要添加滑动吸顶效果 */ public class HomePageFragment extends BaseFragment implements IUserDataView, IHomePageView { - private static final String TAG = "HomePageFragment"; @BindView(R.id.userIconView) QMUIRadiusImageView userIconView; @BindView(R.id.userNameView) @@ -66,8 +56,6 @@ private Context context; private UserDataPresenterImpl userDataPresenter; private HomePagePresenterImpl homePagePresenter; - private Gson gson; - private WeakReferenceHandler weakReferenceHandler; @Override protected int initLayoutView() { @@ -81,146 +69,33 @@ @Override protected void initData() { - gson = new Gson(); userDataPresenter = new UserDataPresenterImpl(this); homePagePresenter = new HomePagePresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); } @Override protected void initEvent() { - /** - * 根据登录账号判断是否是同一个人登录,如果是,从缓存读取数据,否则请求后台数据,获取最新登录者的部门等信息 - * */ - String userBeanJson = (String) SaveKeyValues.getValue("userBean", ""); - if (userBeanJson.equals("")) { - Log.d(TAG, "initData: 从没有人登录过,需要从新获取数据"); - userDataPresenter.onReadyRetrofitRequest(); - homePagePresenter.onReadyRetrofitRequest("05"); - } else { - UserBean userBean = gson.fromJson(userBeanJson, UserBean.class); - if (userBean.getData().getAccount().equals(StringHelper.getUserAccount())) { - Log.d(TAG, "initData: 同一人重复登录,加载缓存"); - Message userInfoMessage = weakReferenceHandler.obtainMessage(); - userInfoMessage.what = 2021061101; - userInfoMessage.obj = userBean; - weakReferenceHandler.sendMessage(userInfoMessage); - - String homePageBeanJson = (String) SaveKeyValues.getValue("homePageBean", ""); - HomePageBean homePageBean = gson.fromJson(homePageBeanJson, HomePageBean.class); - Message homePageMessage = weakReferenceHandler.obtainMessage(); - homePageMessage.what = 2021061102; - homePageMessage.obj = homePageBean; - weakReferenceHandler.sendMessage(homePageMessage); - } else { - Log.d(TAG, "initData: 有人登录过,但是上次和这次登录者不是同一人,需要从新获取数据"); - userDataPresenter.onReadyRetrofitRequest(); - homePagePresenter.onReadyRetrofitRequest("05"); - } - } + userDataPresenter.onReadyRetrofitRequest(); + homePagePresenter.onReadyRetrofitRequest("05"); } - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(HomePageFragment fragment) { - reference = new WeakReference<>(fragment); - } - - @SuppressLint("SetTextI18n") - @Override - public void handleMessage(@NotNull Message msg) { - HomePageFragment homePageFragment = reference.get(); - Context context = homePageFragment.context; - switch (msg.what) { - case 2021061101: - UserBean userBean = (UserBean) msg.obj; - //QMUIRadiusImageView无法动态设置圆形头像,借助Glide实现圆形头像 -// Glide.with(homePageFragment).load(R.mipmap.app_logo).apply(RequestOptions.circleCropTransform()).into(userIconView); - Glide.with(homePageFragment).load(R.mipmap.app_logo).into(homePageFragment.userIconView); - - UserBean.DataBean data = userBean.getData(); - homePageFragment.userNameView.setText(data.getName()); - homePageFragment.userDeptView.setText(data.getDeptName() + data.getRoleNames()); - - //把常用的几个属性单独存起来 - StringHelper.saveUserName(data.getName()); - StringHelper.saveUserPhone(data.getPhone()); - StringHelper.saveUserDept(data.getDeptName()); - StringHelper.saveUserDeptId(data.getDeptId()); - StringHelper.saveUserId(data.getId()); - break; - case 2021061102: - HomePageBean resultBean = (HomePageBean) msg.obj; - HomeRecycleAdapter adapter = new HomeRecycleAdapter(context, resultBean.getData().getMenus()); - homePageFragment.homeRecyclerView.setLayoutManager(new GridLayoutManager(context, 3)); - homePageFragment.homeRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new HomeRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(String itemName) { - Intent intent = new Intent(); - switch (itemName) { - case "案卷上报": - intent.setClass(context, CaseUploadActivity.class); - break; - case "快速上报": - intent.setClass(context, CaseUploadQuicklyActivity.class); - break; - case "三包上报": - intent.setClass(context, CaseUploadPackageActivity.class); - break; - case "案卷核实": - intent.setClass(context, CaseVerifyActivity.class); - break; - case "案卷核查": - intent.setClass(context, CaseCheckActivity.class); - break; - case "案卷处理": - intent.setClass(context, CaseHandleActivity.class); - break; - case "紧急要件": - intent.setClass(context, UrgentCaseActivity.class); - break; - case "超时督办": - intent.setClass(context, OvertimeCaseActivity.class); - break; - case "统计分析": - intent.setClass(context, DataAnalysisActivity.class); - break; - case "在岗人员": - intent.setClass(context, PersonOnlineActivity.class); - break; - case "案卷查询": - intent.setClass(context, CaseSearchActivity.class); - break; - case "案卷分布": - intent.setClass(context, CaseOnMapActivity.class); - break; - case "公厕保洁": - intent.setClass(context, PublicToiletActivity.class); - break; - case "三包处置": - intent.setClass(context, PackageHandleActivity.class); - break; - default: - break; - } - context.startActivity(intent); - } - }); - break; - } - } - } - + @SuppressLint("SetTextI18n") @Override public void obtainUserData(UserBean userBean) { if (userBean.isSuccess()) { - SaveKeyValues.putValue("userBean", gson.toJson(userBean)); - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021061101; - message.obj = userBean; - weakReferenceHandler.sendMessage(message); + //QMUIRadiusImageView无法动态设置圆形头像,借助Glide实现圆形头像 +// Glide.with(this).load(R.mipmap.app_logo).apply(RequestOptions.circleCropTransform()).into(userIconView); + Glide.with(this).load(R.mipmap.app_logo).into(userIconView); + + UserBean.DataBean data = userBean.getData(); + userNameView.setText(data.getName()); + userDeptView.setText(data.getDeptName() + data.getRoleNames()); + + StringHelper.saveUserName(data.getName()); + StringHelper.saveUserPhone(data.getPhone()); + StringHelper.saveUserDept(data.getDeptName()); + StringHelper.saveUserDeptId(data.getDeptId()); + StringHelper.saveUserId(data.getId()); } } @@ -228,11 +103,62 @@ @Override public void obtainHomePageResult(HomePageBean resultBean) { if (resultBean.isSuccess()) { - SaveKeyValues.putValue("homePageBean", gson.toJson(resultBean)); - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021061102; - message.obj = resultBean; - weakReferenceHandler.sendMessage(message); + HomeRecycleAdapter adapter = new HomeRecycleAdapter(context, resultBean.getData().getMenus()); + homeRecyclerView.setLayoutManager(new GridLayoutManager(context, 3)); + homeRecyclerView.setAdapter(adapter); + adapter.setOnGridItemClickListener(new HomeRecycleAdapter.OnGridItemClickListener() { + @Override + public void onClick(String itemName) { + Intent intent = new Intent(); + switch (itemName) { + case "案卷上报": + intent.setClass(context, CaseUploadActivity.class); + break; + case "快速上报": + intent.setClass(context, CaseUploadQuicklyActivity.class); + break; + case "三包上报": + intent.setClass(context, CaseUploadPackageActivity.class); + break; + case "案卷核实": + intent.setClass(context, CaseVerifyActivity.class); + break; + case "案卷核查": + intent.setClass(context, CaseCheckActivity.class); + break; + case "案卷处理": + intent.setClass(context, CaseHandleActivity.class); + break; + case "紧急要件": + intent.setClass(context, UrgentCaseActivity.class); + break; + case "超时督办": + intent.setClass(context, OvertimeCaseActivity.class); + break; + case "统计分析": + intent.setClass(context, DataAnalysisActivity.class); + break; + case "在岗人员": + intent.setClass(context, PersonOnlineActivity.class); + break; + case "案卷查询": + intent.setClass(context, CaseSearchActivity.class); + break; + case "案卷分布": + intent.setClass(context, CaseOnMapActivity.class); + break; + case "公厕保洁": + intent.setClass(context, PublicToiletActivity.class); + break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; + default: + break; + } + startActivity(intent); + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java b/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java index 21db61c..aa2f97b 100755 --- a/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java +++ b/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java @@ -109,4 +109,11 @@ return week; } + //获取前两个月的此时 + public static Date obtainLastTwoMonth() { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.add(Calendar.MONTH, -2); //设置为前2月 + return calendar.getTime();//获取2个月前的时间 + } } diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java index a169a6c..c6e18d4 100755 --- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java +++ b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java @@ -64,7 +64,7 @@ private DateOnClickListener mOnClickListener; private DatePopupWindow(Builder builder) { - this.activity = builder.context; + this.activity = builder.activity; this.currentDate = builder.date; this.startDesc = builder.startDesc; this.endDesc = builder.endDesc; @@ -166,36 +166,6 @@ int week = c.get(Calendar.DAY_OF_WEEK);//周几 //获取当前这个月最大天数 int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH); - -// 获取上2个月的数据 -// for (int i = 0; i <= 1; i++) { -// //当前月份循环减1 -// c.add(Calendar.MONTH, -1);//倒序,+1正序 -// DateInfo lastMonth = new DateInfo(); -// List lastDayList = new ArrayList<>(); -// int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH); -// lastMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月"); -// //周几 -// int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1; -// //根据该月的第一天,星期几,填充上个月的空白日期 -// for (int t = 0; t < weeks; t++) { -// DayInfo dayInfo = new DayInfo(); -// dayInfo.setName(""); -// dayInfo.setEnable(false); -// dayInfo.setDate(""); -// lastDayList.add(dayInfo); -// } -// //该月的所有日期 -// for (int j = 0; j < maxDays; j++) { -// DayInfo dayInfo = new DayInfo(); -// dayInfo.setName((j + 1) + ""); -// dayInfo.setEnable(true); -// dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1)); -// lastDayList.add(dayInfo); -// } -// lastMonth.setList(lastDayList); -// mList.add(i, lastMonth); -// } DateInfo month = new DateInfo(); List dayList = new ArrayList<>(); month.setDate(c.get(Calendar.YEAR) + "年" + firstM + "月"); @@ -220,16 +190,49 @@ if (c_year == c.get(Calendar.YEAR) && c_month == (c.get(Calendar.MONTH) + 1) && c_day == i) { childPosition = dayList.size(); } - //设置日期是否可选择,当大于当前日期时,是不可选,setEnable(false) - if (i <= days) { - dayInfo.setEnable(true); - } else { + //设置日期是否可选择 + if (i < days) { dayInfo.setEnable(false); + } else { + dayInfo.setEnable(true); } dayList.add(dayInfo); } month.setList(dayList); - mList.add(mList.size(), month); + mList.add(month); + //获取下2个月的数据 + for (int i = 1; i <= 2; i++) { + //当前月份循环减1 + c.add(Calendar.MONTH, 1); + DateInfo nextMonth = new DateInfo(); + List nextDayList = new ArrayList<>(); + int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH); + nextMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月"); + //周几 + int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1; + //根据该月的第一天,星期几,填充上个月的空白日期 + for (int t = 0; t < weeks; t++) { + DayInfo dayInfo = new DayInfo(); + dayInfo.setName(""); + dayInfo.setEnable(false); + dayInfo.setDate(""); + nextDayList.add(dayInfo); + } + //该月的所有日期 + for (int j = 0; j < maxDays; j++) { + DayInfo dayInfo = new DayInfo(); + dayInfo.setName((j + 1) + ""); + dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1)); + if ((j + 1) > days && i == 2) { + dayInfo.setEnable(false); + } else { + dayInfo.setEnable(true); + } + nextDayList.add(dayInfo); + } + nextMonth.setList(nextDayList); + mList.add(nextMonth); + } mDateAdapter.updateData(); } @@ -391,7 +394,7 @@ public static class Builder { private String date; - private Activity context; + private Activity activity; private View parentView; private String startDesc; private String endDesc; @@ -402,9 +405,9 @@ private int endChildPosition = -1; private DateOnClickListener mOnClickListener = null; - public Builder(Activity context, Date date, View parentView) { + public Builder(Activity activity, Date date, View parentView) { this.date = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(date); - this.context = context; + this.activity = activity; this.parentView = parentView; this.startDesc = "开始"; this.endDesc = "结束"; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 87b7376..22b83e8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -307,7 +307,7 @@ private void submitCase() { String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("请选择")) { + if (handleResult.equals("")) { ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); return; } diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java index 570f9f6..7221e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.bean.CleanRecordBean; import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; import com.casic.dcms.mvp.view.ICleanToiletRecordView; +import com.casic.dcms.utils.CalendarUtil; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; @@ -31,7 +32,6 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; -import java.util.Calendar; import java.util.List; import butterknife.BindView; @@ -84,7 +84,7 @@ @Override public void onClick(View v) { new DatePopupWindow - .Builder(CleanResultListActivity.this, Calendar.getInstance().getTime(), v)//初始化 + .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 diff --git a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java index 9977519..f971c57 100644 --- a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java @@ -7,6 +7,8 @@ import android.view.View; import android.widget.EditText; import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; import android.widget.TextView; import androidx.annotation.Nullable; @@ -19,10 +21,17 @@ import com.casic.dcms.base.BaseCaseActivity; import com.casic.dcms.bean.ActionResultBean; import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.bean.CaseNextNodeBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.ICaseHandleView; +import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -51,7 +60,7 @@ import butterknife.OnClick; public class PackageTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IUploadFileView { + ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { private static final String TAG = "PackageTodoDetail"; @BindView(R.id.caseNumberView) TextView caseNumberView; @@ -71,16 +80,32 @@ TextView caseSituationView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleResultView) + TextView caseHandleResultView; + @BindView(R.id.line1) + View line1; + @BindView(R.id.imageLayout) + RelativeLayout imageLayout; + @BindView(R.id.line2) + View line2; + @BindView(R.id.reasonLayout) + RelativeLayout reasonLayout; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; + @BindView(R.id.addHandleImageView) + ImageView addHandleImageView; + @BindView(R.id.caseReasonView) + EditText caseReasonView; + @BindView(R.id.punishLayout) + LinearLayout punishLayout; @BindView(R.id.punishTypeView) TextView punishTypeView; @BindView(R.id.punishOpinionView) EditText punishOpinionView; @BindView(R.id.punishRecyclerView) RecyclerView punishRecyclerView; - @BindView(R.id.addImageView) - ImageView addImageView; + @BindView(R.id.addPunishImageView) + ImageView addPunishImageView; @BindView(R.id.punishDateView) TextView punishDateView; @BindView(R.id.submitButton) @@ -91,9 +116,19 @@ private CaseDetailPresenterImpl caseDetailPresenter; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 - private List imageList = new ArrayList<>();//上传到服务器的数据集 - private ImageRecycleViewAdapter imageAdapter; + private ArrayList handleRealPaths = new ArrayList<>();//真实图片路径 + private ArrayList punishRealPaths = new ArrayList<>();//真实图片路径 + private List handleImageList = new ArrayList<>();//上传到服务器的数据集 + private List punishImageList = new ArrayList<>();//上传到服务器的数据集 + private ImageRecycleViewAdapter punishImageAdapter, handleImageAdapter; + private CaseNextNodePresenterImpl caseNextNodePresenter; + private String changeState; + private String approvalResult; + private String caseReason; + private boolean isAddHandleImage = false;//区分是添加处理图片还是添加处罚图片 + private String id;//案卷id + private CaseHandlePresenterImpl caseHandlePresenter; + private String handleResult; @Override public int initLayoutView() { @@ -102,12 +137,12 @@ @Override protected String setTitleName() { - return "已办案卷"; + return "待办案卷"; } @Override public void initData() { - String id = getIntent().getStringExtra("id"); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); submitDialog = new QMUITipDialog.Builder(this) @@ -115,10 +150,20 @@ .setTipWord("处理中,请稍后") .create(); uploadImagePresenter = new UploadImagePresenterImpl(this); - imageAdapter = new ImageRecycleViewAdapter(this); + //处罚adapter + punishImageAdapter = new ImageRecycleViewAdapter(this); punishRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); punishRecyclerView.addItemDecoration(new ItemDecorationSpace()); - punishRecyclerView.setAdapter(imageAdapter); + punishRecyclerView.setAdapter(punishImageAdapter); + //下级结点 + caseNextNodePresenter = new CaseNextNodePresenterImpl(this); + //案卷处理adapter + handleImageAdapter = new ImageRecycleViewAdapter(this); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(handleImageAdapter); + + caseHandlePresenter = new CaseHandlePresenterImpl(this); } @Override @@ -203,7 +248,8 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.punishHandleLayout, R.id.addImageView, R.id.handleLayout, R.id.submitButton}) + @OnClick({R.id.locationMapView, R.id.caseHandleResultLayout, R.id.addHandleImageView, R.id.punishHandleLayout, + R.id.addPunishImageView, R.id.handleLayout, R.id.submitButton}) @Override public void onClick(View v) { switch (v.getId()) { @@ -224,12 +270,36 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; + case R.id.caseHandleResultLayout: + caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + break; + case R.id.addHandleImageView: + isAddHandleImage = true; + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .create().show(); + break; case R.id.punishHandleLayout: new QMUIBottomSheet.BottomListSheetBuilder(this) .setTitle("处罚类型") - .addItem("劝导") - .addItem("警告") - .addItem("处罚") + .addItem("劝导")//1 + .addItem("警告")//2 + .addItem("处罚")//3 .setGravityCenter(true) .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { @Override @@ -240,7 +310,8 @@ } }).build().show(); break; - case R.id.addImageView: + case R.id.addPunishImageView: + isAddHandleImage = false; new QMUIDialog.MenuDialogBuilder(this) .addItem("相册中选取", new DialogInterface.OnClickListener() { @Override @@ -346,36 +417,73 @@ * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg */ //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - String url = resultBean.getData(); - int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - imageAdapter.setMediaList(realPaths); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, realPaths); + if (isAddHandleImage) { + //处理图片 + int sumItemCount = handleImageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + handleImageList.add(url); + handleRealPaths.add(StringHelper.appendCompleteURL(url)); + if (handleRealPaths.size() == 2) { + addHandleImageView.setVisibility(View.GONE); } - }); - //删除按钮点击事件 - imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - imageList.remove(position); - realPaths.remove(position); - imageAdapter.setMediaList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); + handleImageAdapter.setMediaList(handleRealPaths); + //九宫格点击事件 + handleImageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, handleRealPaths); } - } - }); + }); + //删除按钮点击事件 + handleImageAdapter.setDeleteView(true); + handleImageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + handleImageList.remove(position); + handleRealPaths.remove(position); + handleImageAdapter.setMediaList(handleRealPaths); + if (handleRealPaths.size() != 2) { + addHandleImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + //处罚图片 + int sumItemCount = punishImageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + punishImageList.add(url); + punishRealPaths.add(StringHelper.appendCompleteURL(url)); + if (punishRealPaths.size() == 2) { + addPunishImageView.setVisibility(View.GONE); + } + punishImageAdapter.setMediaList(punishRealPaths); + //九宫格点击事件 + punishImageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, punishRealPaths); + } + }); + //删除按钮点击事件 + punishImageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + punishImageList.remove(position); + punishRealPaths.remove(position); + punishImageAdapter.setMediaList(punishRealPaths); + if (punishRealPaths.size() != 2) { + addPunishImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } } } } @@ -385,26 +493,100 @@ } - /** - * 案卷提交 - */ - private void submitCase() { - String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(punishType)) { - ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); - return; - } - String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(punishType)) { - ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); - return; - } - if (imageAdapter.getItemCount() != 2) { - ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); - return; + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处理结果"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + String nextOperation = dataBean.getNextOperation(); + caseHandleResultView.setText(nextOperation); + if (nextOperation.equals("处理完成")) { + line1.setVisibility(View.VISIBLE); + line2.setVisibility(View.GONE); + imageLayout.setVisibility(View.VISIBLE); + reasonLayout.setVisibility(View.GONE); + punishLayout.setVisibility(View.VISIBLE); + } else { + line1.setVisibility(View.GONE); + line2.setVisibility(View.VISIBLE); + imageLayout.setVisibility(View.GONE); + reasonLayout.setVisibility(View.VISIBLE); + punishLayout.setVisibility(View.GONE); + } + changeState = String.valueOf(dataBean.getNextState()); + approvalResult = dataBean.getApprovalResult(); + } + }).build().show(); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); } } + /** + * 案卷提交。先提交普通案卷流程,成功后再自动提交三包处罚 + */ + private void submitCase() { + handleResult = caseHandleResultView.getText().toString(); + if (TextUtils.isEmpty(handleResult)) { + ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); + return; + } + if (handleResult.equals("处理完成")) { + //选择处理完成时,处理图片必传。至少一张,最多两张 + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); + return; + } + //只有选择处理完成才需要判断处罚条件 + String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); + return; + } + String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); + return; + } + } + if (handleResult.equals("申请延期") || handleResult.equals("申请调整")) { + caseReason = caseReasonView.getText().toString(); + if (TextUtils.isEmpty(caseReason)) { + ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING); + return; + } + } + caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), + changeState, caseReason, StringHelper.reformatURL(handleImageList), approvalResult); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + if (handleResult.equals("处理完成")) { + //只有选择处理完成才需要操作处罚流程 +// casePunishPresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), +// changeState, caseReason, StringHelper.reformatURL(punishImageList), approvalResult); + } else { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + PackageTodoFragment.sendEmptyMessage(Constant.PACKAGE_DONE); + PackageHandledFragment.sendEmptyMessage(Constant.PACKAGE_DONE); + finish(); + } + } + } + + @Override protected void onDestroy() { super.onDestroy(); @@ -414,5 +596,11 @@ if (uploadImagePresenter != null) { uploadImagePresenter.disposeRetrofitRequest(); } + if (caseNextNodePresenter != null) { + caseNextNodePresenter.disposeRetrofitRequest(); + } + if (caseHandlePresenter != null) { + caseHandlePresenter.disposeRetrofitRequest(); + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 3b9759b..17b866e 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -3,9 +3,6 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.util.Log; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; @@ -35,24 +32,17 @@ import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; -import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.google.gson.Gson; import com.qmuiteam.qmui.widget.QMUIRadiusImageView; -import org.jetbrains.annotations.NotNull; - -import java.lang.ref.WeakReference; - import butterknife.BindView; /** - * TODO 此页面后期可能需要添加滑动吸顶效果 + * 此页面后期可能需要添加滑动吸顶效果 */ public class HomePageFragment extends BaseFragment implements IUserDataView, IHomePageView { - private static final String TAG = "HomePageFragment"; @BindView(R.id.userIconView) QMUIRadiusImageView userIconView; @BindView(R.id.userNameView) @@ -66,8 +56,6 @@ private Context context; private UserDataPresenterImpl userDataPresenter; private HomePagePresenterImpl homePagePresenter; - private Gson gson; - private WeakReferenceHandler weakReferenceHandler; @Override protected int initLayoutView() { @@ -81,146 +69,33 @@ @Override protected void initData() { - gson = new Gson(); userDataPresenter = new UserDataPresenterImpl(this); homePagePresenter = new HomePagePresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); } @Override protected void initEvent() { - /** - * 根据登录账号判断是否是同一个人登录,如果是,从缓存读取数据,否则请求后台数据,获取最新登录者的部门等信息 - * */ - String userBeanJson = (String) SaveKeyValues.getValue("userBean", ""); - if (userBeanJson.equals("")) { - Log.d(TAG, "initData: 从没有人登录过,需要从新获取数据"); - userDataPresenter.onReadyRetrofitRequest(); - homePagePresenter.onReadyRetrofitRequest("05"); - } else { - UserBean userBean = gson.fromJson(userBeanJson, UserBean.class); - if (userBean.getData().getAccount().equals(StringHelper.getUserAccount())) { - Log.d(TAG, "initData: 同一人重复登录,加载缓存"); - Message userInfoMessage = weakReferenceHandler.obtainMessage(); - userInfoMessage.what = 2021061101; - userInfoMessage.obj = userBean; - weakReferenceHandler.sendMessage(userInfoMessage); - - String homePageBeanJson = (String) SaveKeyValues.getValue("homePageBean", ""); - HomePageBean homePageBean = gson.fromJson(homePageBeanJson, HomePageBean.class); - Message homePageMessage = weakReferenceHandler.obtainMessage(); - homePageMessage.what = 2021061102; - homePageMessage.obj = homePageBean; - weakReferenceHandler.sendMessage(homePageMessage); - } else { - Log.d(TAG, "initData: 有人登录过,但是上次和这次登录者不是同一人,需要从新获取数据"); - userDataPresenter.onReadyRetrofitRequest(); - homePagePresenter.onReadyRetrofitRequest("05"); - } - } + userDataPresenter.onReadyRetrofitRequest(); + homePagePresenter.onReadyRetrofitRequest("05"); } - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(HomePageFragment fragment) { - reference = new WeakReference<>(fragment); - } - - @SuppressLint("SetTextI18n") - @Override - public void handleMessage(@NotNull Message msg) { - HomePageFragment homePageFragment = reference.get(); - Context context = homePageFragment.context; - switch (msg.what) { - case 2021061101: - UserBean userBean = (UserBean) msg.obj; - //QMUIRadiusImageView无法动态设置圆形头像,借助Glide实现圆形头像 -// Glide.with(homePageFragment).load(R.mipmap.app_logo).apply(RequestOptions.circleCropTransform()).into(userIconView); - Glide.with(homePageFragment).load(R.mipmap.app_logo).into(homePageFragment.userIconView); - - UserBean.DataBean data = userBean.getData(); - homePageFragment.userNameView.setText(data.getName()); - homePageFragment.userDeptView.setText(data.getDeptName() + data.getRoleNames()); - - //把常用的几个属性单独存起来 - StringHelper.saveUserName(data.getName()); - StringHelper.saveUserPhone(data.getPhone()); - StringHelper.saveUserDept(data.getDeptName()); - StringHelper.saveUserDeptId(data.getDeptId()); - StringHelper.saveUserId(data.getId()); - break; - case 2021061102: - HomePageBean resultBean = (HomePageBean) msg.obj; - HomeRecycleAdapter adapter = new HomeRecycleAdapter(context, resultBean.getData().getMenus()); - homePageFragment.homeRecyclerView.setLayoutManager(new GridLayoutManager(context, 3)); - homePageFragment.homeRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new HomeRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(String itemName) { - Intent intent = new Intent(); - switch (itemName) { - case "案卷上报": - intent.setClass(context, CaseUploadActivity.class); - break; - case "快速上报": - intent.setClass(context, CaseUploadQuicklyActivity.class); - break; - case "三包上报": - intent.setClass(context, CaseUploadPackageActivity.class); - break; - case "案卷核实": - intent.setClass(context, CaseVerifyActivity.class); - break; - case "案卷核查": - intent.setClass(context, CaseCheckActivity.class); - break; - case "案卷处理": - intent.setClass(context, CaseHandleActivity.class); - break; - case "紧急要件": - intent.setClass(context, UrgentCaseActivity.class); - break; - case "超时督办": - intent.setClass(context, OvertimeCaseActivity.class); - break; - case "统计分析": - intent.setClass(context, DataAnalysisActivity.class); - break; - case "在岗人员": - intent.setClass(context, PersonOnlineActivity.class); - break; - case "案卷查询": - intent.setClass(context, CaseSearchActivity.class); - break; - case "案卷分布": - intent.setClass(context, CaseOnMapActivity.class); - break; - case "公厕保洁": - intent.setClass(context, PublicToiletActivity.class); - break; - case "三包处置": - intent.setClass(context, PackageHandleActivity.class); - break; - default: - break; - } - context.startActivity(intent); - } - }); - break; - } - } - } - + @SuppressLint("SetTextI18n") @Override public void obtainUserData(UserBean userBean) { if (userBean.isSuccess()) { - SaveKeyValues.putValue("userBean", gson.toJson(userBean)); - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021061101; - message.obj = userBean; - weakReferenceHandler.sendMessage(message); + //QMUIRadiusImageView无法动态设置圆形头像,借助Glide实现圆形头像 +// Glide.with(this).load(R.mipmap.app_logo).apply(RequestOptions.circleCropTransform()).into(userIconView); + Glide.with(this).load(R.mipmap.app_logo).into(userIconView); + + UserBean.DataBean data = userBean.getData(); + userNameView.setText(data.getName()); + userDeptView.setText(data.getDeptName() + data.getRoleNames()); + + StringHelper.saveUserName(data.getName()); + StringHelper.saveUserPhone(data.getPhone()); + StringHelper.saveUserDept(data.getDeptName()); + StringHelper.saveUserDeptId(data.getDeptId()); + StringHelper.saveUserId(data.getId()); } } @@ -228,11 +103,62 @@ @Override public void obtainHomePageResult(HomePageBean resultBean) { if (resultBean.isSuccess()) { - SaveKeyValues.putValue("homePageBean", gson.toJson(resultBean)); - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021061102; - message.obj = resultBean; - weakReferenceHandler.sendMessage(message); + HomeRecycleAdapter adapter = new HomeRecycleAdapter(context, resultBean.getData().getMenus()); + homeRecyclerView.setLayoutManager(new GridLayoutManager(context, 3)); + homeRecyclerView.setAdapter(adapter); + adapter.setOnGridItemClickListener(new HomeRecycleAdapter.OnGridItemClickListener() { + @Override + public void onClick(String itemName) { + Intent intent = new Intent(); + switch (itemName) { + case "案卷上报": + intent.setClass(context, CaseUploadActivity.class); + break; + case "快速上报": + intent.setClass(context, CaseUploadQuicklyActivity.class); + break; + case "三包上报": + intent.setClass(context, CaseUploadPackageActivity.class); + break; + case "案卷核实": + intent.setClass(context, CaseVerifyActivity.class); + break; + case "案卷核查": + intent.setClass(context, CaseCheckActivity.class); + break; + case "案卷处理": + intent.setClass(context, CaseHandleActivity.class); + break; + case "紧急要件": + intent.setClass(context, UrgentCaseActivity.class); + break; + case "超时督办": + intent.setClass(context, OvertimeCaseActivity.class); + break; + case "统计分析": + intent.setClass(context, DataAnalysisActivity.class); + break; + case "在岗人员": + intent.setClass(context, PersonOnlineActivity.class); + break; + case "案卷查询": + intent.setClass(context, CaseSearchActivity.class); + break; + case "案卷分布": + intent.setClass(context, CaseOnMapActivity.class); + break; + case "公厕保洁": + intent.setClass(context, PublicToiletActivity.class); + break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; + default: + break; + } + startActivity(intent); + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java b/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java index 21db61c..aa2f97b 100755 --- a/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java +++ b/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java @@ -109,4 +109,11 @@ return week; } + //获取前两个月的此时 + public static Date obtainLastTwoMonth() { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.add(Calendar.MONTH, -2); //设置为前2月 + return calendar.getTime();//获取2个月前的时间 + } } diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java index a169a6c..c6e18d4 100755 --- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java +++ b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java @@ -64,7 +64,7 @@ private DateOnClickListener mOnClickListener; private DatePopupWindow(Builder builder) { - this.activity = builder.context; + this.activity = builder.activity; this.currentDate = builder.date; this.startDesc = builder.startDesc; this.endDesc = builder.endDesc; @@ -166,36 +166,6 @@ int week = c.get(Calendar.DAY_OF_WEEK);//周几 //获取当前这个月最大天数 int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH); - -// 获取上2个月的数据 -// for (int i = 0; i <= 1; i++) { -// //当前月份循环减1 -// c.add(Calendar.MONTH, -1);//倒序,+1正序 -// DateInfo lastMonth = new DateInfo(); -// List lastDayList = new ArrayList<>(); -// int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH); -// lastMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月"); -// //周几 -// int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1; -// //根据该月的第一天,星期几,填充上个月的空白日期 -// for (int t = 0; t < weeks; t++) { -// DayInfo dayInfo = new DayInfo(); -// dayInfo.setName(""); -// dayInfo.setEnable(false); -// dayInfo.setDate(""); -// lastDayList.add(dayInfo); -// } -// //该月的所有日期 -// for (int j = 0; j < maxDays; j++) { -// DayInfo dayInfo = new DayInfo(); -// dayInfo.setName((j + 1) + ""); -// dayInfo.setEnable(true); -// dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1)); -// lastDayList.add(dayInfo); -// } -// lastMonth.setList(lastDayList); -// mList.add(i, lastMonth); -// } DateInfo month = new DateInfo(); List dayList = new ArrayList<>(); month.setDate(c.get(Calendar.YEAR) + "年" + firstM + "月"); @@ -220,16 +190,49 @@ if (c_year == c.get(Calendar.YEAR) && c_month == (c.get(Calendar.MONTH) + 1) && c_day == i) { childPosition = dayList.size(); } - //设置日期是否可选择,当大于当前日期时,是不可选,setEnable(false) - if (i <= days) { - dayInfo.setEnable(true); - } else { + //设置日期是否可选择 + if (i < days) { dayInfo.setEnable(false); + } else { + dayInfo.setEnable(true); } dayList.add(dayInfo); } month.setList(dayList); - mList.add(mList.size(), month); + mList.add(month); + //获取下2个月的数据 + for (int i = 1; i <= 2; i++) { + //当前月份循环减1 + c.add(Calendar.MONTH, 1); + DateInfo nextMonth = new DateInfo(); + List nextDayList = new ArrayList<>(); + int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH); + nextMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月"); + //周几 + int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1; + //根据该月的第一天,星期几,填充上个月的空白日期 + for (int t = 0; t < weeks; t++) { + DayInfo dayInfo = new DayInfo(); + dayInfo.setName(""); + dayInfo.setEnable(false); + dayInfo.setDate(""); + nextDayList.add(dayInfo); + } + //该月的所有日期 + for (int j = 0; j < maxDays; j++) { + DayInfo dayInfo = new DayInfo(); + dayInfo.setName((j + 1) + ""); + dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1)); + if ((j + 1) > days && i == 2) { + dayInfo.setEnable(false); + } else { + dayInfo.setEnable(true); + } + nextDayList.add(dayInfo); + } + nextMonth.setList(nextDayList); + mList.add(nextMonth); + } mDateAdapter.updateData(); } @@ -391,7 +394,7 @@ public static class Builder { private String date; - private Activity context; + private Activity activity; private View parentView; private String startDesc; private String endDesc; @@ -402,9 +405,9 @@ private int endChildPosition = -1; private DateOnClickListener mOnClickListener = null; - public Builder(Activity context, Date date, View parentView) { + public Builder(Activity activity, Date date, View parentView) { this.date = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(date); - this.context = context; + this.activity = activity; this.parentView = parentView; this.startDesc = "开始"; this.endDesc = "结束"; diff --git a/app/src/main/res/layout/activity_package_handled.xml b/app/src/main/res/layout/activity_package_handled.xml index 3df6df6..5298ba1 100644 --- a/app/src/main/res/layout/activity_package_handled.xml +++ b/app/src/main/res/layout/activity_package_handled.xml @@ -17,6 +17,21 @@ + + + + + + + + + diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 87b7376..22b83e8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -307,7 +307,7 @@ private void submitCase() { String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("请选择")) { + if (handleResult.equals("")) { ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); return; } diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java index 570f9f6..7221e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.bean.CleanRecordBean; import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; import com.casic.dcms.mvp.view.ICleanToiletRecordView; +import com.casic.dcms.utils.CalendarUtil; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; @@ -31,7 +32,6 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; -import java.util.Calendar; import java.util.List; import butterknife.BindView; @@ -84,7 +84,7 @@ @Override public void onClick(View v) { new DatePopupWindow - .Builder(CleanResultListActivity.this, Calendar.getInstance().getTime(), v)//初始化 + .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 diff --git a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java index 9977519..f971c57 100644 --- a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java @@ -7,6 +7,8 @@ import android.view.View; import android.widget.EditText; import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; import android.widget.TextView; import androidx.annotation.Nullable; @@ -19,10 +21,17 @@ import com.casic.dcms.base.BaseCaseActivity; import com.casic.dcms.bean.ActionResultBean; import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.bean.CaseNextNodeBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.ICaseHandleView; +import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -51,7 +60,7 @@ import butterknife.OnClick; public class PackageTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IUploadFileView { + ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { private static final String TAG = "PackageTodoDetail"; @BindView(R.id.caseNumberView) TextView caseNumberView; @@ -71,16 +80,32 @@ TextView caseSituationView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleResultView) + TextView caseHandleResultView; + @BindView(R.id.line1) + View line1; + @BindView(R.id.imageLayout) + RelativeLayout imageLayout; + @BindView(R.id.line2) + View line2; + @BindView(R.id.reasonLayout) + RelativeLayout reasonLayout; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; + @BindView(R.id.addHandleImageView) + ImageView addHandleImageView; + @BindView(R.id.caseReasonView) + EditText caseReasonView; + @BindView(R.id.punishLayout) + LinearLayout punishLayout; @BindView(R.id.punishTypeView) TextView punishTypeView; @BindView(R.id.punishOpinionView) EditText punishOpinionView; @BindView(R.id.punishRecyclerView) RecyclerView punishRecyclerView; - @BindView(R.id.addImageView) - ImageView addImageView; + @BindView(R.id.addPunishImageView) + ImageView addPunishImageView; @BindView(R.id.punishDateView) TextView punishDateView; @BindView(R.id.submitButton) @@ -91,9 +116,19 @@ private CaseDetailPresenterImpl caseDetailPresenter; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 - private List imageList = new ArrayList<>();//上传到服务器的数据集 - private ImageRecycleViewAdapter imageAdapter; + private ArrayList handleRealPaths = new ArrayList<>();//真实图片路径 + private ArrayList punishRealPaths = new ArrayList<>();//真实图片路径 + private List handleImageList = new ArrayList<>();//上传到服务器的数据集 + private List punishImageList = new ArrayList<>();//上传到服务器的数据集 + private ImageRecycleViewAdapter punishImageAdapter, handleImageAdapter; + private CaseNextNodePresenterImpl caseNextNodePresenter; + private String changeState; + private String approvalResult; + private String caseReason; + private boolean isAddHandleImage = false;//区分是添加处理图片还是添加处罚图片 + private String id;//案卷id + private CaseHandlePresenterImpl caseHandlePresenter; + private String handleResult; @Override public int initLayoutView() { @@ -102,12 +137,12 @@ @Override protected String setTitleName() { - return "已办案卷"; + return "待办案卷"; } @Override public void initData() { - String id = getIntent().getStringExtra("id"); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); submitDialog = new QMUITipDialog.Builder(this) @@ -115,10 +150,20 @@ .setTipWord("处理中,请稍后") .create(); uploadImagePresenter = new UploadImagePresenterImpl(this); - imageAdapter = new ImageRecycleViewAdapter(this); + //处罚adapter + punishImageAdapter = new ImageRecycleViewAdapter(this); punishRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); punishRecyclerView.addItemDecoration(new ItemDecorationSpace()); - punishRecyclerView.setAdapter(imageAdapter); + punishRecyclerView.setAdapter(punishImageAdapter); + //下级结点 + caseNextNodePresenter = new CaseNextNodePresenterImpl(this); + //案卷处理adapter + handleImageAdapter = new ImageRecycleViewAdapter(this); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(handleImageAdapter); + + caseHandlePresenter = new CaseHandlePresenterImpl(this); } @Override @@ -203,7 +248,8 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.punishHandleLayout, R.id.addImageView, R.id.handleLayout, R.id.submitButton}) + @OnClick({R.id.locationMapView, R.id.caseHandleResultLayout, R.id.addHandleImageView, R.id.punishHandleLayout, + R.id.addPunishImageView, R.id.handleLayout, R.id.submitButton}) @Override public void onClick(View v) { switch (v.getId()) { @@ -224,12 +270,36 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; + case R.id.caseHandleResultLayout: + caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + break; + case R.id.addHandleImageView: + isAddHandleImage = true; + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .create().show(); + break; case R.id.punishHandleLayout: new QMUIBottomSheet.BottomListSheetBuilder(this) .setTitle("处罚类型") - .addItem("劝导") - .addItem("警告") - .addItem("处罚") + .addItem("劝导")//1 + .addItem("警告")//2 + .addItem("处罚")//3 .setGravityCenter(true) .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { @Override @@ -240,7 +310,8 @@ } }).build().show(); break; - case R.id.addImageView: + case R.id.addPunishImageView: + isAddHandleImage = false; new QMUIDialog.MenuDialogBuilder(this) .addItem("相册中选取", new DialogInterface.OnClickListener() { @Override @@ -346,36 +417,73 @@ * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg */ //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - String url = resultBean.getData(); - int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - imageAdapter.setMediaList(realPaths); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, realPaths); + if (isAddHandleImage) { + //处理图片 + int sumItemCount = handleImageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + handleImageList.add(url); + handleRealPaths.add(StringHelper.appendCompleteURL(url)); + if (handleRealPaths.size() == 2) { + addHandleImageView.setVisibility(View.GONE); } - }); - //删除按钮点击事件 - imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - imageList.remove(position); - realPaths.remove(position); - imageAdapter.setMediaList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); + handleImageAdapter.setMediaList(handleRealPaths); + //九宫格点击事件 + handleImageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, handleRealPaths); } - } - }); + }); + //删除按钮点击事件 + handleImageAdapter.setDeleteView(true); + handleImageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + handleImageList.remove(position); + handleRealPaths.remove(position); + handleImageAdapter.setMediaList(handleRealPaths); + if (handleRealPaths.size() != 2) { + addHandleImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + //处罚图片 + int sumItemCount = punishImageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + punishImageList.add(url); + punishRealPaths.add(StringHelper.appendCompleteURL(url)); + if (punishRealPaths.size() == 2) { + addPunishImageView.setVisibility(View.GONE); + } + punishImageAdapter.setMediaList(punishRealPaths); + //九宫格点击事件 + punishImageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, punishRealPaths); + } + }); + //删除按钮点击事件 + punishImageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + punishImageList.remove(position); + punishRealPaths.remove(position); + punishImageAdapter.setMediaList(punishRealPaths); + if (punishRealPaths.size() != 2) { + addPunishImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } } } } @@ -385,26 +493,100 @@ } - /** - * 案卷提交 - */ - private void submitCase() { - String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(punishType)) { - ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); - return; - } - String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(punishType)) { - ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); - return; - } - if (imageAdapter.getItemCount() != 2) { - ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); - return; + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处理结果"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + String nextOperation = dataBean.getNextOperation(); + caseHandleResultView.setText(nextOperation); + if (nextOperation.equals("处理完成")) { + line1.setVisibility(View.VISIBLE); + line2.setVisibility(View.GONE); + imageLayout.setVisibility(View.VISIBLE); + reasonLayout.setVisibility(View.GONE); + punishLayout.setVisibility(View.VISIBLE); + } else { + line1.setVisibility(View.GONE); + line2.setVisibility(View.VISIBLE); + imageLayout.setVisibility(View.GONE); + reasonLayout.setVisibility(View.VISIBLE); + punishLayout.setVisibility(View.GONE); + } + changeState = String.valueOf(dataBean.getNextState()); + approvalResult = dataBean.getApprovalResult(); + } + }).build().show(); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); } } + /** + * 案卷提交。先提交普通案卷流程,成功后再自动提交三包处罚 + */ + private void submitCase() { + handleResult = caseHandleResultView.getText().toString(); + if (TextUtils.isEmpty(handleResult)) { + ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); + return; + } + if (handleResult.equals("处理完成")) { + //选择处理完成时,处理图片必传。至少一张,最多两张 + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); + return; + } + //只有选择处理完成才需要判断处罚条件 + String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); + return; + } + String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); + return; + } + } + if (handleResult.equals("申请延期") || handleResult.equals("申请调整")) { + caseReason = caseReasonView.getText().toString(); + if (TextUtils.isEmpty(caseReason)) { + ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING); + return; + } + } + caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), + changeState, caseReason, StringHelper.reformatURL(handleImageList), approvalResult); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + if (handleResult.equals("处理完成")) { + //只有选择处理完成才需要操作处罚流程 +// casePunishPresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), +// changeState, caseReason, StringHelper.reformatURL(punishImageList), approvalResult); + } else { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + PackageTodoFragment.sendEmptyMessage(Constant.PACKAGE_DONE); + PackageHandledFragment.sendEmptyMessage(Constant.PACKAGE_DONE); + finish(); + } + } + } + + @Override protected void onDestroy() { super.onDestroy(); @@ -414,5 +596,11 @@ if (uploadImagePresenter != null) { uploadImagePresenter.disposeRetrofitRequest(); } + if (caseNextNodePresenter != null) { + caseNextNodePresenter.disposeRetrofitRequest(); + } + if (caseHandlePresenter != null) { + caseHandlePresenter.disposeRetrofitRequest(); + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 3b9759b..17b866e 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -3,9 +3,6 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.util.Log; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; @@ -35,24 +32,17 @@ import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; -import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.google.gson.Gson; import com.qmuiteam.qmui.widget.QMUIRadiusImageView; -import org.jetbrains.annotations.NotNull; - -import java.lang.ref.WeakReference; - import butterknife.BindView; /** - * TODO 此页面后期可能需要添加滑动吸顶效果 + * 此页面后期可能需要添加滑动吸顶效果 */ public class HomePageFragment extends BaseFragment implements IUserDataView, IHomePageView { - private static final String TAG = "HomePageFragment"; @BindView(R.id.userIconView) QMUIRadiusImageView userIconView; @BindView(R.id.userNameView) @@ -66,8 +56,6 @@ private Context context; private UserDataPresenterImpl userDataPresenter; private HomePagePresenterImpl homePagePresenter; - private Gson gson; - private WeakReferenceHandler weakReferenceHandler; @Override protected int initLayoutView() { @@ -81,146 +69,33 @@ @Override protected void initData() { - gson = new Gson(); userDataPresenter = new UserDataPresenterImpl(this); homePagePresenter = new HomePagePresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); } @Override protected void initEvent() { - /** - * 根据登录账号判断是否是同一个人登录,如果是,从缓存读取数据,否则请求后台数据,获取最新登录者的部门等信息 - * */ - String userBeanJson = (String) SaveKeyValues.getValue("userBean", ""); - if (userBeanJson.equals("")) { - Log.d(TAG, "initData: 从没有人登录过,需要从新获取数据"); - userDataPresenter.onReadyRetrofitRequest(); - homePagePresenter.onReadyRetrofitRequest("05"); - } else { - UserBean userBean = gson.fromJson(userBeanJson, UserBean.class); - if (userBean.getData().getAccount().equals(StringHelper.getUserAccount())) { - Log.d(TAG, "initData: 同一人重复登录,加载缓存"); - Message userInfoMessage = weakReferenceHandler.obtainMessage(); - userInfoMessage.what = 2021061101; - userInfoMessage.obj = userBean; - weakReferenceHandler.sendMessage(userInfoMessage); - - String homePageBeanJson = (String) SaveKeyValues.getValue("homePageBean", ""); - HomePageBean homePageBean = gson.fromJson(homePageBeanJson, HomePageBean.class); - Message homePageMessage = weakReferenceHandler.obtainMessage(); - homePageMessage.what = 2021061102; - homePageMessage.obj = homePageBean; - weakReferenceHandler.sendMessage(homePageMessage); - } else { - Log.d(TAG, "initData: 有人登录过,但是上次和这次登录者不是同一人,需要从新获取数据"); - userDataPresenter.onReadyRetrofitRequest(); - homePagePresenter.onReadyRetrofitRequest("05"); - } - } + userDataPresenter.onReadyRetrofitRequest(); + homePagePresenter.onReadyRetrofitRequest("05"); } - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(HomePageFragment fragment) { - reference = new WeakReference<>(fragment); - } - - @SuppressLint("SetTextI18n") - @Override - public void handleMessage(@NotNull Message msg) { - HomePageFragment homePageFragment = reference.get(); - Context context = homePageFragment.context; - switch (msg.what) { - case 2021061101: - UserBean userBean = (UserBean) msg.obj; - //QMUIRadiusImageView无法动态设置圆形头像,借助Glide实现圆形头像 -// Glide.with(homePageFragment).load(R.mipmap.app_logo).apply(RequestOptions.circleCropTransform()).into(userIconView); - Glide.with(homePageFragment).load(R.mipmap.app_logo).into(homePageFragment.userIconView); - - UserBean.DataBean data = userBean.getData(); - homePageFragment.userNameView.setText(data.getName()); - homePageFragment.userDeptView.setText(data.getDeptName() + data.getRoleNames()); - - //把常用的几个属性单独存起来 - StringHelper.saveUserName(data.getName()); - StringHelper.saveUserPhone(data.getPhone()); - StringHelper.saveUserDept(data.getDeptName()); - StringHelper.saveUserDeptId(data.getDeptId()); - StringHelper.saveUserId(data.getId()); - break; - case 2021061102: - HomePageBean resultBean = (HomePageBean) msg.obj; - HomeRecycleAdapter adapter = new HomeRecycleAdapter(context, resultBean.getData().getMenus()); - homePageFragment.homeRecyclerView.setLayoutManager(new GridLayoutManager(context, 3)); - homePageFragment.homeRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new HomeRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(String itemName) { - Intent intent = new Intent(); - switch (itemName) { - case "案卷上报": - intent.setClass(context, CaseUploadActivity.class); - break; - case "快速上报": - intent.setClass(context, CaseUploadQuicklyActivity.class); - break; - case "三包上报": - intent.setClass(context, CaseUploadPackageActivity.class); - break; - case "案卷核实": - intent.setClass(context, CaseVerifyActivity.class); - break; - case "案卷核查": - intent.setClass(context, CaseCheckActivity.class); - break; - case "案卷处理": - intent.setClass(context, CaseHandleActivity.class); - break; - case "紧急要件": - intent.setClass(context, UrgentCaseActivity.class); - break; - case "超时督办": - intent.setClass(context, OvertimeCaseActivity.class); - break; - case "统计分析": - intent.setClass(context, DataAnalysisActivity.class); - break; - case "在岗人员": - intent.setClass(context, PersonOnlineActivity.class); - break; - case "案卷查询": - intent.setClass(context, CaseSearchActivity.class); - break; - case "案卷分布": - intent.setClass(context, CaseOnMapActivity.class); - break; - case "公厕保洁": - intent.setClass(context, PublicToiletActivity.class); - break; - case "三包处置": - intent.setClass(context, PackageHandleActivity.class); - break; - default: - break; - } - context.startActivity(intent); - } - }); - break; - } - } - } - + @SuppressLint("SetTextI18n") @Override public void obtainUserData(UserBean userBean) { if (userBean.isSuccess()) { - SaveKeyValues.putValue("userBean", gson.toJson(userBean)); - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021061101; - message.obj = userBean; - weakReferenceHandler.sendMessage(message); + //QMUIRadiusImageView无法动态设置圆形头像,借助Glide实现圆形头像 +// Glide.with(this).load(R.mipmap.app_logo).apply(RequestOptions.circleCropTransform()).into(userIconView); + Glide.with(this).load(R.mipmap.app_logo).into(userIconView); + + UserBean.DataBean data = userBean.getData(); + userNameView.setText(data.getName()); + userDeptView.setText(data.getDeptName() + data.getRoleNames()); + + StringHelper.saveUserName(data.getName()); + StringHelper.saveUserPhone(data.getPhone()); + StringHelper.saveUserDept(data.getDeptName()); + StringHelper.saveUserDeptId(data.getDeptId()); + StringHelper.saveUserId(data.getId()); } } @@ -228,11 +103,62 @@ @Override public void obtainHomePageResult(HomePageBean resultBean) { if (resultBean.isSuccess()) { - SaveKeyValues.putValue("homePageBean", gson.toJson(resultBean)); - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021061102; - message.obj = resultBean; - weakReferenceHandler.sendMessage(message); + HomeRecycleAdapter adapter = new HomeRecycleAdapter(context, resultBean.getData().getMenus()); + homeRecyclerView.setLayoutManager(new GridLayoutManager(context, 3)); + homeRecyclerView.setAdapter(adapter); + adapter.setOnGridItemClickListener(new HomeRecycleAdapter.OnGridItemClickListener() { + @Override + public void onClick(String itemName) { + Intent intent = new Intent(); + switch (itemName) { + case "案卷上报": + intent.setClass(context, CaseUploadActivity.class); + break; + case "快速上报": + intent.setClass(context, CaseUploadQuicklyActivity.class); + break; + case "三包上报": + intent.setClass(context, CaseUploadPackageActivity.class); + break; + case "案卷核实": + intent.setClass(context, CaseVerifyActivity.class); + break; + case "案卷核查": + intent.setClass(context, CaseCheckActivity.class); + break; + case "案卷处理": + intent.setClass(context, CaseHandleActivity.class); + break; + case "紧急要件": + intent.setClass(context, UrgentCaseActivity.class); + break; + case "超时督办": + intent.setClass(context, OvertimeCaseActivity.class); + break; + case "统计分析": + intent.setClass(context, DataAnalysisActivity.class); + break; + case "在岗人员": + intent.setClass(context, PersonOnlineActivity.class); + break; + case "案卷查询": + intent.setClass(context, CaseSearchActivity.class); + break; + case "案卷分布": + intent.setClass(context, CaseOnMapActivity.class); + break; + case "公厕保洁": + intent.setClass(context, PublicToiletActivity.class); + break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; + default: + break; + } + startActivity(intent); + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java b/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java index 21db61c..aa2f97b 100755 --- a/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java +++ b/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java @@ -109,4 +109,11 @@ return week; } + //获取前两个月的此时 + public static Date obtainLastTwoMonth() { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.add(Calendar.MONTH, -2); //设置为前2月 + return calendar.getTime();//获取2个月前的时间 + } } diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java index a169a6c..c6e18d4 100755 --- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java +++ b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java @@ -64,7 +64,7 @@ private DateOnClickListener mOnClickListener; private DatePopupWindow(Builder builder) { - this.activity = builder.context; + this.activity = builder.activity; this.currentDate = builder.date; this.startDesc = builder.startDesc; this.endDesc = builder.endDesc; @@ -166,36 +166,6 @@ int week = c.get(Calendar.DAY_OF_WEEK);//周几 //获取当前这个月最大天数 int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH); - -// 获取上2个月的数据 -// for (int i = 0; i <= 1; i++) { -// //当前月份循环减1 -// c.add(Calendar.MONTH, -1);//倒序,+1正序 -// DateInfo lastMonth = new DateInfo(); -// List lastDayList = new ArrayList<>(); -// int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH); -// lastMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月"); -// //周几 -// int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1; -// //根据该月的第一天,星期几,填充上个月的空白日期 -// for (int t = 0; t < weeks; t++) { -// DayInfo dayInfo = new DayInfo(); -// dayInfo.setName(""); -// dayInfo.setEnable(false); -// dayInfo.setDate(""); -// lastDayList.add(dayInfo); -// } -// //该月的所有日期 -// for (int j = 0; j < maxDays; j++) { -// DayInfo dayInfo = new DayInfo(); -// dayInfo.setName((j + 1) + ""); -// dayInfo.setEnable(true); -// dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1)); -// lastDayList.add(dayInfo); -// } -// lastMonth.setList(lastDayList); -// mList.add(i, lastMonth); -// } DateInfo month = new DateInfo(); List dayList = new ArrayList<>(); month.setDate(c.get(Calendar.YEAR) + "年" + firstM + "月"); @@ -220,16 +190,49 @@ if (c_year == c.get(Calendar.YEAR) && c_month == (c.get(Calendar.MONTH) + 1) && c_day == i) { childPosition = dayList.size(); } - //设置日期是否可选择,当大于当前日期时,是不可选,setEnable(false) - if (i <= days) { - dayInfo.setEnable(true); - } else { + //设置日期是否可选择 + if (i < days) { dayInfo.setEnable(false); + } else { + dayInfo.setEnable(true); } dayList.add(dayInfo); } month.setList(dayList); - mList.add(mList.size(), month); + mList.add(month); + //获取下2个月的数据 + for (int i = 1; i <= 2; i++) { + //当前月份循环减1 + c.add(Calendar.MONTH, 1); + DateInfo nextMonth = new DateInfo(); + List nextDayList = new ArrayList<>(); + int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH); + nextMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月"); + //周几 + int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1; + //根据该月的第一天,星期几,填充上个月的空白日期 + for (int t = 0; t < weeks; t++) { + DayInfo dayInfo = new DayInfo(); + dayInfo.setName(""); + dayInfo.setEnable(false); + dayInfo.setDate(""); + nextDayList.add(dayInfo); + } + //该月的所有日期 + for (int j = 0; j < maxDays; j++) { + DayInfo dayInfo = new DayInfo(); + dayInfo.setName((j + 1) + ""); + dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1)); + if ((j + 1) > days && i == 2) { + dayInfo.setEnable(false); + } else { + dayInfo.setEnable(true); + } + nextDayList.add(dayInfo); + } + nextMonth.setList(nextDayList); + mList.add(nextMonth); + } mDateAdapter.updateData(); } @@ -391,7 +394,7 @@ public static class Builder { private String date; - private Activity context; + private Activity activity; private View parentView; private String startDesc; private String endDesc; @@ -402,9 +405,9 @@ private int endChildPosition = -1; private DateOnClickListener mOnClickListener = null; - public Builder(Activity context, Date date, View parentView) { + public Builder(Activity activity, Date date, View parentView) { this.date = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(date); - this.context = context; + this.activity = activity; this.parentView = parentView; this.startDesc = "开始"; this.endDesc = "结束"; diff --git a/app/src/main/res/layout/activity_package_handled.xml b/app/src/main/res/layout/activity_package_handled.xml index 3df6df6..5298ba1 100644 --- a/app/src/main/res/layout/activity_package_handled.xml +++ b/app/src/main/res/layout/activity_package_handled.xml @@ -17,6 +17,21 @@ + + + + + + + + + diff --git a/app/src/main/res/layout/activity_package_todo.xml b/app/src/main/res/layout/activity_package_todo.xml index daccb58..c20b869 100644 --- a/app/src/main/res/layout/activity_package_todo.xml +++ b/app/src/main/res/layout/activity_package_todo.xml @@ -19,15 +19,15 @@ + android:text="处理结果" /> @@ -38,73 +38,69 @@ android:src="@drawable/ic_right" /> - + - - - - - - - - - + android:text="处理图片" /> + android:layout_height="wrap_content" /> - + - + + style="@style/noPointTextViewStyle" + android:text="申请理由" /> - + + + diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 87b7376..22b83e8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -307,7 +307,7 @@ private void submitCase() { String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("请选择")) { + if (handleResult.equals("")) { ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); return; } diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java index 570f9f6..7221e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.bean.CleanRecordBean; import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; import com.casic.dcms.mvp.view.ICleanToiletRecordView; +import com.casic.dcms.utils.CalendarUtil; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; @@ -31,7 +32,6 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; -import java.util.Calendar; import java.util.List; import butterknife.BindView; @@ -84,7 +84,7 @@ @Override public void onClick(View v) { new DatePopupWindow - .Builder(CleanResultListActivity.this, Calendar.getInstance().getTime(), v)//初始化 + .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 diff --git a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java index 9977519..f971c57 100644 --- a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java @@ -7,6 +7,8 @@ import android.view.View; import android.widget.EditText; import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; import android.widget.TextView; import androidx.annotation.Nullable; @@ -19,10 +21,17 @@ import com.casic.dcms.base.BaseCaseActivity; import com.casic.dcms.bean.ActionResultBean; import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.bean.CaseNextNodeBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.ICaseHandleView; +import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -51,7 +60,7 @@ import butterknife.OnClick; public class PackageTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IUploadFileView { + ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { private static final String TAG = "PackageTodoDetail"; @BindView(R.id.caseNumberView) TextView caseNumberView; @@ -71,16 +80,32 @@ TextView caseSituationView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleResultView) + TextView caseHandleResultView; + @BindView(R.id.line1) + View line1; + @BindView(R.id.imageLayout) + RelativeLayout imageLayout; + @BindView(R.id.line2) + View line2; + @BindView(R.id.reasonLayout) + RelativeLayout reasonLayout; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; + @BindView(R.id.addHandleImageView) + ImageView addHandleImageView; + @BindView(R.id.caseReasonView) + EditText caseReasonView; + @BindView(R.id.punishLayout) + LinearLayout punishLayout; @BindView(R.id.punishTypeView) TextView punishTypeView; @BindView(R.id.punishOpinionView) EditText punishOpinionView; @BindView(R.id.punishRecyclerView) RecyclerView punishRecyclerView; - @BindView(R.id.addImageView) - ImageView addImageView; + @BindView(R.id.addPunishImageView) + ImageView addPunishImageView; @BindView(R.id.punishDateView) TextView punishDateView; @BindView(R.id.submitButton) @@ -91,9 +116,19 @@ private CaseDetailPresenterImpl caseDetailPresenter; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 - private List imageList = new ArrayList<>();//上传到服务器的数据集 - private ImageRecycleViewAdapter imageAdapter; + private ArrayList handleRealPaths = new ArrayList<>();//真实图片路径 + private ArrayList punishRealPaths = new ArrayList<>();//真实图片路径 + private List handleImageList = new ArrayList<>();//上传到服务器的数据集 + private List punishImageList = new ArrayList<>();//上传到服务器的数据集 + private ImageRecycleViewAdapter punishImageAdapter, handleImageAdapter; + private CaseNextNodePresenterImpl caseNextNodePresenter; + private String changeState; + private String approvalResult; + private String caseReason; + private boolean isAddHandleImage = false;//区分是添加处理图片还是添加处罚图片 + private String id;//案卷id + private CaseHandlePresenterImpl caseHandlePresenter; + private String handleResult; @Override public int initLayoutView() { @@ -102,12 +137,12 @@ @Override protected String setTitleName() { - return "已办案卷"; + return "待办案卷"; } @Override public void initData() { - String id = getIntent().getStringExtra("id"); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); submitDialog = new QMUITipDialog.Builder(this) @@ -115,10 +150,20 @@ .setTipWord("处理中,请稍后") .create(); uploadImagePresenter = new UploadImagePresenterImpl(this); - imageAdapter = new ImageRecycleViewAdapter(this); + //处罚adapter + punishImageAdapter = new ImageRecycleViewAdapter(this); punishRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); punishRecyclerView.addItemDecoration(new ItemDecorationSpace()); - punishRecyclerView.setAdapter(imageAdapter); + punishRecyclerView.setAdapter(punishImageAdapter); + //下级结点 + caseNextNodePresenter = new CaseNextNodePresenterImpl(this); + //案卷处理adapter + handleImageAdapter = new ImageRecycleViewAdapter(this); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(handleImageAdapter); + + caseHandlePresenter = new CaseHandlePresenterImpl(this); } @Override @@ -203,7 +248,8 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.punishHandleLayout, R.id.addImageView, R.id.handleLayout, R.id.submitButton}) + @OnClick({R.id.locationMapView, R.id.caseHandleResultLayout, R.id.addHandleImageView, R.id.punishHandleLayout, + R.id.addPunishImageView, R.id.handleLayout, R.id.submitButton}) @Override public void onClick(View v) { switch (v.getId()) { @@ -224,12 +270,36 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; + case R.id.caseHandleResultLayout: + caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + break; + case R.id.addHandleImageView: + isAddHandleImage = true; + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .create().show(); + break; case R.id.punishHandleLayout: new QMUIBottomSheet.BottomListSheetBuilder(this) .setTitle("处罚类型") - .addItem("劝导") - .addItem("警告") - .addItem("处罚") + .addItem("劝导")//1 + .addItem("警告")//2 + .addItem("处罚")//3 .setGravityCenter(true) .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { @Override @@ -240,7 +310,8 @@ } }).build().show(); break; - case R.id.addImageView: + case R.id.addPunishImageView: + isAddHandleImage = false; new QMUIDialog.MenuDialogBuilder(this) .addItem("相册中选取", new DialogInterface.OnClickListener() { @Override @@ -346,36 +417,73 @@ * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg */ //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - String url = resultBean.getData(); - int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - imageAdapter.setMediaList(realPaths); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, realPaths); + if (isAddHandleImage) { + //处理图片 + int sumItemCount = handleImageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + handleImageList.add(url); + handleRealPaths.add(StringHelper.appendCompleteURL(url)); + if (handleRealPaths.size() == 2) { + addHandleImageView.setVisibility(View.GONE); } - }); - //删除按钮点击事件 - imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - imageList.remove(position); - realPaths.remove(position); - imageAdapter.setMediaList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); + handleImageAdapter.setMediaList(handleRealPaths); + //九宫格点击事件 + handleImageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, handleRealPaths); } - } - }); + }); + //删除按钮点击事件 + handleImageAdapter.setDeleteView(true); + handleImageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + handleImageList.remove(position); + handleRealPaths.remove(position); + handleImageAdapter.setMediaList(handleRealPaths); + if (handleRealPaths.size() != 2) { + addHandleImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + //处罚图片 + int sumItemCount = punishImageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + punishImageList.add(url); + punishRealPaths.add(StringHelper.appendCompleteURL(url)); + if (punishRealPaths.size() == 2) { + addPunishImageView.setVisibility(View.GONE); + } + punishImageAdapter.setMediaList(punishRealPaths); + //九宫格点击事件 + punishImageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, punishRealPaths); + } + }); + //删除按钮点击事件 + punishImageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + punishImageList.remove(position); + punishRealPaths.remove(position); + punishImageAdapter.setMediaList(punishRealPaths); + if (punishRealPaths.size() != 2) { + addPunishImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } } } } @@ -385,26 +493,100 @@ } - /** - * 案卷提交 - */ - private void submitCase() { - String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(punishType)) { - ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); - return; - } - String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(punishType)) { - ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); - return; - } - if (imageAdapter.getItemCount() != 2) { - ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); - return; + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处理结果"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + String nextOperation = dataBean.getNextOperation(); + caseHandleResultView.setText(nextOperation); + if (nextOperation.equals("处理完成")) { + line1.setVisibility(View.VISIBLE); + line2.setVisibility(View.GONE); + imageLayout.setVisibility(View.VISIBLE); + reasonLayout.setVisibility(View.GONE); + punishLayout.setVisibility(View.VISIBLE); + } else { + line1.setVisibility(View.GONE); + line2.setVisibility(View.VISIBLE); + imageLayout.setVisibility(View.GONE); + reasonLayout.setVisibility(View.VISIBLE); + punishLayout.setVisibility(View.GONE); + } + changeState = String.valueOf(dataBean.getNextState()); + approvalResult = dataBean.getApprovalResult(); + } + }).build().show(); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); } } + /** + * 案卷提交。先提交普通案卷流程,成功后再自动提交三包处罚 + */ + private void submitCase() { + handleResult = caseHandleResultView.getText().toString(); + if (TextUtils.isEmpty(handleResult)) { + ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); + return; + } + if (handleResult.equals("处理完成")) { + //选择处理完成时,处理图片必传。至少一张,最多两张 + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); + return; + } + //只有选择处理完成才需要判断处罚条件 + String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); + return; + } + String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); + return; + } + } + if (handleResult.equals("申请延期") || handleResult.equals("申请调整")) { + caseReason = caseReasonView.getText().toString(); + if (TextUtils.isEmpty(caseReason)) { + ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING); + return; + } + } + caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), + changeState, caseReason, StringHelper.reformatURL(handleImageList), approvalResult); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + if (handleResult.equals("处理完成")) { + //只有选择处理完成才需要操作处罚流程 +// casePunishPresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), +// changeState, caseReason, StringHelper.reformatURL(punishImageList), approvalResult); + } else { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + PackageTodoFragment.sendEmptyMessage(Constant.PACKAGE_DONE); + PackageHandledFragment.sendEmptyMessage(Constant.PACKAGE_DONE); + finish(); + } + } + } + + @Override protected void onDestroy() { super.onDestroy(); @@ -414,5 +596,11 @@ if (uploadImagePresenter != null) { uploadImagePresenter.disposeRetrofitRequest(); } + if (caseNextNodePresenter != null) { + caseNextNodePresenter.disposeRetrofitRequest(); + } + if (caseHandlePresenter != null) { + caseHandlePresenter.disposeRetrofitRequest(); + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 3b9759b..17b866e 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -3,9 +3,6 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.util.Log; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; @@ -35,24 +32,17 @@ import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; -import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.google.gson.Gson; import com.qmuiteam.qmui.widget.QMUIRadiusImageView; -import org.jetbrains.annotations.NotNull; - -import java.lang.ref.WeakReference; - import butterknife.BindView; /** - * TODO 此页面后期可能需要添加滑动吸顶效果 + * 此页面后期可能需要添加滑动吸顶效果 */ public class HomePageFragment extends BaseFragment implements IUserDataView, IHomePageView { - private static final String TAG = "HomePageFragment"; @BindView(R.id.userIconView) QMUIRadiusImageView userIconView; @BindView(R.id.userNameView) @@ -66,8 +56,6 @@ private Context context; private UserDataPresenterImpl userDataPresenter; private HomePagePresenterImpl homePagePresenter; - private Gson gson; - private WeakReferenceHandler weakReferenceHandler; @Override protected int initLayoutView() { @@ -81,146 +69,33 @@ @Override protected void initData() { - gson = new Gson(); userDataPresenter = new UserDataPresenterImpl(this); homePagePresenter = new HomePagePresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); } @Override protected void initEvent() { - /** - * 根据登录账号判断是否是同一个人登录,如果是,从缓存读取数据,否则请求后台数据,获取最新登录者的部门等信息 - * */ - String userBeanJson = (String) SaveKeyValues.getValue("userBean", ""); - if (userBeanJson.equals("")) { - Log.d(TAG, "initData: 从没有人登录过,需要从新获取数据"); - userDataPresenter.onReadyRetrofitRequest(); - homePagePresenter.onReadyRetrofitRequest("05"); - } else { - UserBean userBean = gson.fromJson(userBeanJson, UserBean.class); - if (userBean.getData().getAccount().equals(StringHelper.getUserAccount())) { - Log.d(TAG, "initData: 同一人重复登录,加载缓存"); - Message userInfoMessage = weakReferenceHandler.obtainMessage(); - userInfoMessage.what = 2021061101; - userInfoMessage.obj = userBean; - weakReferenceHandler.sendMessage(userInfoMessage); - - String homePageBeanJson = (String) SaveKeyValues.getValue("homePageBean", ""); - HomePageBean homePageBean = gson.fromJson(homePageBeanJson, HomePageBean.class); - Message homePageMessage = weakReferenceHandler.obtainMessage(); - homePageMessage.what = 2021061102; - homePageMessage.obj = homePageBean; - weakReferenceHandler.sendMessage(homePageMessage); - } else { - Log.d(TAG, "initData: 有人登录过,但是上次和这次登录者不是同一人,需要从新获取数据"); - userDataPresenter.onReadyRetrofitRequest(); - homePagePresenter.onReadyRetrofitRequest("05"); - } - } + userDataPresenter.onReadyRetrofitRequest(); + homePagePresenter.onReadyRetrofitRequest("05"); } - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(HomePageFragment fragment) { - reference = new WeakReference<>(fragment); - } - - @SuppressLint("SetTextI18n") - @Override - public void handleMessage(@NotNull Message msg) { - HomePageFragment homePageFragment = reference.get(); - Context context = homePageFragment.context; - switch (msg.what) { - case 2021061101: - UserBean userBean = (UserBean) msg.obj; - //QMUIRadiusImageView无法动态设置圆形头像,借助Glide实现圆形头像 -// Glide.with(homePageFragment).load(R.mipmap.app_logo).apply(RequestOptions.circleCropTransform()).into(userIconView); - Glide.with(homePageFragment).load(R.mipmap.app_logo).into(homePageFragment.userIconView); - - UserBean.DataBean data = userBean.getData(); - homePageFragment.userNameView.setText(data.getName()); - homePageFragment.userDeptView.setText(data.getDeptName() + data.getRoleNames()); - - //把常用的几个属性单独存起来 - StringHelper.saveUserName(data.getName()); - StringHelper.saveUserPhone(data.getPhone()); - StringHelper.saveUserDept(data.getDeptName()); - StringHelper.saveUserDeptId(data.getDeptId()); - StringHelper.saveUserId(data.getId()); - break; - case 2021061102: - HomePageBean resultBean = (HomePageBean) msg.obj; - HomeRecycleAdapter adapter = new HomeRecycleAdapter(context, resultBean.getData().getMenus()); - homePageFragment.homeRecyclerView.setLayoutManager(new GridLayoutManager(context, 3)); - homePageFragment.homeRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new HomeRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(String itemName) { - Intent intent = new Intent(); - switch (itemName) { - case "案卷上报": - intent.setClass(context, CaseUploadActivity.class); - break; - case "快速上报": - intent.setClass(context, CaseUploadQuicklyActivity.class); - break; - case "三包上报": - intent.setClass(context, CaseUploadPackageActivity.class); - break; - case "案卷核实": - intent.setClass(context, CaseVerifyActivity.class); - break; - case "案卷核查": - intent.setClass(context, CaseCheckActivity.class); - break; - case "案卷处理": - intent.setClass(context, CaseHandleActivity.class); - break; - case "紧急要件": - intent.setClass(context, UrgentCaseActivity.class); - break; - case "超时督办": - intent.setClass(context, OvertimeCaseActivity.class); - break; - case "统计分析": - intent.setClass(context, DataAnalysisActivity.class); - break; - case "在岗人员": - intent.setClass(context, PersonOnlineActivity.class); - break; - case "案卷查询": - intent.setClass(context, CaseSearchActivity.class); - break; - case "案卷分布": - intent.setClass(context, CaseOnMapActivity.class); - break; - case "公厕保洁": - intent.setClass(context, PublicToiletActivity.class); - break; - case "三包处置": - intent.setClass(context, PackageHandleActivity.class); - break; - default: - break; - } - context.startActivity(intent); - } - }); - break; - } - } - } - + @SuppressLint("SetTextI18n") @Override public void obtainUserData(UserBean userBean) { if (userBean.isSuccess()) { - SaveKeyValues.putValue("userBean", gson.toJson(userBean)); - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021061101; - message.obj = userBean; - weakReferenceHandler.sendMessage(message); + //QMUIRadiusImageView无法动态设置圆形头像,借助Glide实现圆形头像 +// Glide.with(this).load(R.mipmap.app_logo).apply(RequestOptions.circleCropTransform()).into(userIconView); + Glide.with(this).load(R.mipmap.app_logo).into(userIconView); + + UserBean.DataBean data = userBean.getData(); + userNameView.setText(data.getName()); + userDeptView.setText(data.getDeptName() + data.getRoleNames()); + + StringHelper.saveUserName(data.getName()); + StringHelper.saveUserPhone(data.getPhone()); + StringHelper.saveUserDept(data.getDeptName()); + StringHelper.saveUserDeptId(data.getDeptId()); + StringHelper.saveUserId(data.getId()); } } @@ -228,11 +103,62 @@ @Override public void obtainHomePageResult(HomePageBean resultBean) { if (resultBean.isSuccess()) { - SaveKeyValues.putValue("homePageBean", gson.toJson(resultBean)); - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021061102; - message.obj = resultBean; - weakReferenceHandler.sendMessage(message); + HomeRecycleAdapter adapter = new HomeRecycleAdapter(context, resultBean.getData().getMenus()); + homeRecyclerView.setLayoutManager(new GridLayoutManager(context, 3)); + homeRecyclerView.setAdapter(adapter); + adapter.setOnGridItemClickListener(new HomeRecycleAdapter.OnGridItemClickListener() { + @Override + public void onClick(String itemName) { + Intent intent = new Intent(); + switch (itemName) { + case "案卷上报": + intent.setClass(context, CaseUploadActivity.class); + break; + case "快速上报": + intent.setClass(context, CaseUploadQuicklyActivity.class); + break; + case "三包上报": + intent.setClass(context, CaseUploadPackageActivity.class); + break; + case "案卷核实": + intent.setClass(context, CaseVerifyActivity.class); + break; + case "案卷核查": + intent.setClass(context, CaseCheckActivity.class); + break; + case "案卷处理": + intent.setClass(context, CaseHandleActivity.class); + break; + case "紧急要件": + intent.setClass(context, UrgentCaseActivity.class); + break; + case "超时督办": + intent.setClass(context, OvertimeCaseActivity.class); + break; + case "统计分析": + intent.setClass(context, DataAnalysisActivity.class); + break; + case "在岗人员": + intent.setClass(context, PersonOnlineActivity.class); + break; + case "案卷查询": + intent.setClass(context, CaseSearchActivity.class); + break; + case "案卷分布": + intent.setClass(context, CaseOnMapActivity.class); + break; + case "公厕保洁": + intent.setClass(context, PublicToiletActivity.class); + break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; + default: + break; + } + startActivity(intent); + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java b/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java index 21db61c..aa2f97b 100755 --- a/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java +++ b/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java @@ -109,4 +109,11 @@ return week; } + //获取前两个月的此时 + public static Date obtainLastTwoMonth() { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.add(Calendar.MONTH, -2); //设置为前2月 + return calendar.getTime();//获取2个月前的时间 + } } diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java index a169a6c..c6e18d4 100755 --- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java +++ b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java @@ -64,7 +64,7 @@ private DateOnClickListener mOnClickListener; private DatePopupWindow(Builder builder) { - this.activity = builder.context; + this.activity = builder.activity; this.currentDate = builder.date; this.startDesc = builder.startDesc; this.endDesc = builder.endDesc; @@ -166,36 +166,6 @@ int week = c.get(Calendar.DAY_OF_WEEK);//周几 //获取当前这个月最大天数 int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH); - -// 获取上2个月的数据 -// for (int i = 0; i <= 1; i++) { -// //当前月份循环减1 -// c.add(Calendar.MONTH, -1);//倒序,+1正序 -// DateInfo lastMonth = new DateInfo(); -// List lastDayList = new ArrayList<>(); -// int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH); -// lastMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月"); -// //周几 -// int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1; -// //根据该月的第一天,星期几,填充上个月的空白日期 -// for (int t = 0; t < weeks; t++) { -// DayInfo dayInfo = new DayInfo(); -// dayInfo.setName(""); -// dayInfo.setEnable(false); -// dayInfo.setDate(""); -// lastDayList.add(dayInfo); -// } -// //该月的所有日期 -// for (int j = 0; j < maxDays; j++) { -// DayInfo dayInfo = new DayInfo(); -// dayInfo.setName((j + 1) + ""); -// dayInfo.setEnable(true); -// dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1)); -// lastDayList.add(dayInfo); -// } -// lastMonth.setList(lastDayList); -// mList.add(i, lastMonth); -// } DateInfo month = new DateInfo(); List dayList = new ArrayList<>(); month.setDate(c.get(Calendar.YEAR) + "年" + firstM + "月"); @@ -220,16 +190,49 @@ if (c_year == c.get(Calendar.YEAR) && c_month == (c.get(Calendar.MONTH) + 1) && c_day == i) { childPosition = dayList.size(); } - //设置日期是否可选择,当大于当前日期时,是不可选,setEnable(false) - if (i <= days) { - dayInfo.setEnable(true); - } else { + //设置日期是否可选择 + if (i < days) { dayInfo.setEnable(false); + } else { + dayInfo.setEnable(true); } dayList.add(dayInfo); } month.setList(dayList); - mList.add(mList.size(), month); + mList.add(month); + //获取下2个月的数据 + for (int i = 1; i <= 2; i++) { + //当前月份循环减1 + c.add(Calendar.MONTH, 1); + DateInfo nextMonth = new DateInfo(); + List nextDayList = new ArrayList<>(); + int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH); + nextMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月"); + //周几 + int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1; + //根据该月的第一天,星期几,填充上个月的空白日期 + for (int t = 0; t < weeks; t++) { + DayInfo dayInfo = new DayInfo(); + dayInfo.setName(""); + dayInfo.setEnable(false); + dayInfo.setDate(""); + nextDayList.add(dayInfo); + } + //该月的所有日期 + for (int j = 0; j < maxDays; j++) { + DayInfo dayInfo = new DayInfo(); + dayInfo.setName((j + 1) + ""); + dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1)); + if ((j + 1) > days && i == 2) { + dayInfo.setEnable(false); + } else { + dayInfo.setEnable(true); + } + nextDayList.add(dayInfo); + } + nextMonth.setList(nextDayList); + mList.add(nextMonth); + } mDateAdapter.updateData(); } @@ -391,7 +394,7 @@ public static class Builder { private String date; - private Activity context; + private Activity activity; private View parentView; private String startDesc; private String endDesc; @@ -402,9 +405,9 @@ private int endChildPosition = -1; private DateOnClickListener mOnClickListener = null; - public Builder(Activity context, Date date, View parentView) { + public Builder(Activity activity, Date date, View parentView) { this.date = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(date); - this.context = context; + this.activity = activity; this.parentView = parentView; this.startDesc = "开始"; this.endDesc = "结束"; diff --git a/app/src/main/res/layout/activity_package_handled.xml b/app/src/main/res/layout/activity_package_handled.xml index 3df6df6..5298ba1 100644 --- a/app/src/main/res/layout/activity_package_handled.xml +++ b/app/src/main/res/layout/activity_package_handled.xml @@ -17,6 +17,21 @@ + + + + + + + + + diff --git a/app/src/main/res/layout/activity_package_todo.xml b/app/src/main/res/layout/activity_package_todo.xml index daccb58..c20b869 100644 --- a/app/src/main/res/layout/activity_package_todo.xml +++ b/app/src/main/res/layout/activity_package_todo.xml @@ -19,15 +19,15 @@ + android:text="处理结果" /> @@ -38,73 +38,69 @@ android:src="@drawable/ic_right" /> - + - - - - - - - - - + android:text="处理图片" /> + android:layout_height="wrap_content" /> - + - + + style="@style/noPointTextViewStyle" + android:text="申请理由" /> - + + + diff --git a/app/src/main/res/layout/include_package_base.xml b/app/src/main/res/layout/include_package_base.xml index 45f8c15..62c75a1 100644 --- a/app/src/main/res/layout/include_package_base.xml +++ b/app/src/main/res/layout/include_package_base.xml @@ -132,19 +132,4 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 87b7376..22b83e8 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -307,7 +307,7 @@ private void submitCase() { String handleResult = caseHandleResultView.getText().toString(); - if (handleResult.equals("请选择")) { + if (handleResult.equals("")) { ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); return; } diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java index 570f9f6..7221e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java @@ -20,6 +20,7 @@ import com.casic.dcms.bean.CleanRecordBean; import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; import com.casic.dcms.mvp.view.ICleanToiletRecordView; +import com.casic.dcms.utils.CalendarUtil; import com.casic.dcms.utils.OtherUtils; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; @@ -31,7 +32,6 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; -import java.util.Calendar; import java.util.List; import butterknife.BindView; @@ -84,7 +84,7 @@ @Override public void onClick(View v) { new DatePopupWindow - .Builder(CleanResultListActivity.this, Calendar.getInstance().getTime(), v)//初始化 + .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 diff --git a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java index 9977519..f971c57 100644 --- a/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PackageTodoDetailActivity.java @@ -7,6 +7,8 @@ import android.view.View; import android.widget.EditText; import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; import android.widget.TextView; import androidx.annotation.Nullable; @@ -19,10 +21,17 @@ import com.casic.dcms.base.BaseCaseActivity; import com.casic.dcms.bean.ActionResultBean; import com.casic.dcms.bean.CaseDetailBean; +import com.casic.dcms.bean.CaseNextNodeBean; import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; +import com.casic.dcms.mvp.presenter.CaseHandlePresenterImpl; +import com.casic.dcms.mvp.presenter.CaseNextNodePresenterImpl; import com.casic.dcms.mvp.presenter.UploadImagePresenterImpl; import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.ICaseHandleView; +import com.casic.dcms.mvp.view.ICaseNextNodeView; import com.casic.dcms.mvp.view.IUploadFileView; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.FileUtils; import com.casic.dcms.utils.GlideLoadEngine; @@ -51,7 +60,7 @@ import butterknife.OnClick; public class PackageTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IUploadFileView { + ICaseDetailView, IUploadFileView, ICaseNextNodeView, ICaseHandleView { private static final String TAG = "PackageTodoDetail"; @BindView(R.id.caseNumberView) TextView caseNumberView; @@ -71,16 +80,32 @@ TextView caseSituationView; @BindView(R.id.casePicRecyclerView) RecyclerView casePicRecyclerView; + @BindView(R.id.caseHandleResultView) + TextView caseHandleResultView; + @BindView(R.id.line1) + View line1; + @BindView(R.id.imageLayout) + RelativeLayout imageLayout; + @BindView(R.id.line2) + View line2; + @BindView(R.id.reasonLayout) + RelativeLayout reasonLayout; @BindView(R.id.caseHandleRecyclerView) RecyclerView caseHandleRecyclerView; + @BindView(R.id.addHandleImageView) + ImageView addHandleImageView; + @BindView(R.id.caseReasonView) + EditText caseReasonView; + @BindView(R.id.punishLayout) + LinearLayout punishLayout; @BindView(R.id.punishTypeView) TextView punishTypeView; @BindView(R.id.punishOpinionView) EditText punishOpinionView; @BindView(R.id.punishRecyclerView) RecyclerView punishRecyclerView; - @BindView(R.id.addImageView) - ImageView addImageView; + @BindView(R.id.addPunishImageView) + ImageView addPunishImageView; @BindView(R.id.punishDateView) TextView punishDateView; @BindView(R.id.submitButton) @@ -91,9 +116,19 @@ private CaseDetailPresenterImpl caseDetailPresenter; private QMUITipDialog submitDialog; private UploadImagePresenterImpl uploadImagePresenter; - private ArrayList realPaths = new ArrayList<>();//真是图片路径 - private List imageList = new ArrayList<>();//上传到服务器的数据集 - private ImageRecycleViewAdapter imageAdapter; + private ArrayList handleRealPaths = new ArrayList<>();//真实图片路径 + private ArrayList punishRealPaths = new ArrayList<>();//真实图片路径 + private List handleImageList = new ArrayList<>();//上传到服务器的数据集 + private List punishImageList = new ArrayList<>();//上传到服务器的数据集 + private ImageRecycleViewAdapter punishImageAdapter, handleImageAdapter; + private CaseNextNodePresenterImpl caseNextNodePresenter; + private String changeState; + private String approvalResult; + private String caseReason; + private boolean isAddHandleImage = false;//区分是添加处理图片还是添加处罚图片 + private String id;//案卷id + private CaseHandlePresenterImpl caseHandlePresenter; + private String handleResult; @Override public int initLayoutView() { @@ -102,12 +137,12 @@ @Override protected String setTitleName() { - return "已办案卷"; + return "待办案卷"; } @Override public void initData() { - String id = getIntent().getStringExtra("id"); + id = getIntent().getStringExtra("id"); caseDetailPresenter = new CaseDetailPresenterImpl(this); caseDetailPresenter.onReadyRetrofitRequest(id); submitDialog = new QMUITipDialog.Builder(this) @@ -115,10 +150,20 @@ .setTipWord("处理中,请稍后") .create(); uploadImagePresenter = new UploadImagePresenterImpl(this); - imageAdapter = new ImageRecycleViewAdapter(this); + //处罚adapter + punishImageAdapter = new ImageRecycleViewAdapter(this); punishRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); punishRecyclerView.addItemDecoration(new ItemDecorationSpace()); - punishRecyclerView.setAdapter(imageAdapter); + punishRecyclerView.setAdapter(punishImageAdapter); + //下级结点 + caseNextNodePresenter = new CaseNextNodePresenterImpl(this); + //案卷处理adapter + handleImageAdapter = new ImageRecycleViewAdapter(this); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(handleImageAdapter); + + caseHandlePresenter = new CaseHandlePresenterImpl(this); } @Override @@ -203,7 +248,8 @@ ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); } - @OnClick({R.id.locationMapView, R.id.punishHandleLayout, R.id.addImageView, R.id.handleLayout, R.id.submitButton}) + @OnClick({R.id.locationMapView, R.id.caseHandleResultLayout, R.id.addHandleImageView, R.id.punishHandleLayout, + R.id.addPunishImageView, R.id.handleLayout, R.id.submitButton}) @Override public void onClick(View v) { switch (v.getId()) { @@ -224,12 +270,36 @@ intent.putExtra("lat", Double.parseDouble(dataLat)); startActivity(intent); break; + case R.id.caseHandleResultLayout: + caseNextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + break; + case R.id.addHandleImageView: + isAddHandleImage = true; + new QMUIDialog.MenuDialogBuilder(this) + .addItem("相册中选取", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //选图 + selectPicture(); + } + }) + .addItem("相机拍照", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + //拍照 + takePicture(); + } + }) + .create().show(); + break; case R.id.punishHandleLayout: new QMUIBottomSheet.BottomListSheetBuilder(this) .setTitle("处罚类型") - .addItem("劝导") - .addItem("警告") - .addItem("处罚") + .addItem("劝导")//1 + .addItem("警告")//2 + .addItem("处罚")//3 .setGravityCenter(true) .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { @Override @@ -240,7 +310,8 @@ } }).build().show(); break; - case R.id.addImageView: + case R.id.addPunishImageView: + isAddHandleImage = false; new QMUIDialog.MenuDialogBuilder(this) .addItem("相册中选取", new DialogInterface.OnClickListener() { @Override @@ -346,36 +417,73 @@ * http://111.198.10.15:11409/static/2021-04/000bcf78345f4c1c86484efa3f9d68a2.jpeg */ //2021-04\\000bcf78345f4c1c86484efa3f9d68a2.jpeg - String url = resultBean.getData(); - int sumItemCount = imageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 - if (sumItemCount <= 2) { - imageList.add(url); - realPaths.add(StringHelper.appendCompleteURL(url)); - if (realPaths.size() == 2) { - addImageView.setVisibility(View.GONE); - } - imageAdapter.setMediaList(realPaths); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, realPaths); + if (isAddHandleImage) { + //处理图片 + int sumItemCount = handleImageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + handleImageList.add(url); + handleRealPaths.add(StringHelper.appendCompleteURL(url)); + if (handleRealPaths.size() == 2) { + addHandleImageView.setVisibility(View.GONE); } - }); - //删除按钮点击事件 - imageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { - @Override - public void onClick(int position) { - imageList.remove(position); - realPaths.remove(position); - imageAdapter.setMediaList(realPaths); - if (realPaths.size() != 2) { - addImageView.setVisibility(View.VISIBLE); + handleImageAdapter.setMediaList(handleRealPaths); + //九宫格点击事件 + handleImageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, handleRealPaths); } - } - }); + }); + //删除按钮点击事件 + handleImageAdapter.setDeleteView(true); + handleImageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + handleImageList.remove(position); + handleRealPaths.remove(position); + handleImageAdapter.setMediaList(handleRealPaths); + if (handleRealPaths.size() != 2) { + addHandleImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } } else { - ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + //处罚图片 + int sumItemCount = punishImageAdapter.getItemCount() + 1;//每上传一张图片,图片总数都是在原有的基础上+1 + if (sumItemCount <= 2) { + String url = resultBean.getData(); + punishImageList.add(url); + punishRealPaths.add(StringHelper.appendCompleteURL(url)); + if (punishRealPaths.size() == 2) { + addPunishImageView.setVisibility(View.GONE); + } + punishImageAdapter.setMediaList(punishRealPaths); + //九宫格点击事件 + punishImageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, punishRealPaths); + } + }); + //删除按钮点击事件 + punishImageAdapter.setOnDeleteClickListener(new ImageRecycleViewAdapter.OnDeleteItemClickListener() { + @Override + public void onClick(int position) { + punishImageList.remove(position); + punishRealPaths.remove(position); + punishImageAdapter.setMediaList(punishRealPaths); + if (punishRealPaths.size() != 2) { + addPunishImageView.setVisibility(View.VISIBLE); + } + } + }); + } else { + ToastHelper.showToast("最多只能上传2张图片", ToastHelper.WARING); + } } } } @@ -385,26 +493,100 @@ } - /** - * 案卷提交 - */ - private void submitCase() { - String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(punishType)) { - ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); - return; - } - String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); - if (TextUtils.isEmpty(punishType)) { - ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); - return; - } - if (imageAdapter.getItemCount() != 2) { - ToastHelper.showToast("必须选择两张图片", ToastHelper.WARING); - return; + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + List dataBeans = resultBean.getData(); + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处理结果"); + for (CaseNextNodeBean.DataBean dataBean : dataBeans) { + sheetBuilder.addItem(dataBean.getNextOperation()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + + CaseNextNodeBean.DataBean dataBean = dataBeans.get(position); + String nextOperation = dataBean.getNextOperation(); + caseHandleResultView.setText(nextOperation); + if (nextOperation.equals("处理完成")) { + line1.setVisibility(View.VISIBLE); + line2.setVisibility(View.GONE); + imageLayout.setVisibility(View.VISIBLE); + reasonLayout.setVisibility(View.GONE); + punishLayout.setVisibility(View.VISIBLE); + } else { + line1.setVisibility(View.GONE); + line2.setVisibility(View.VISIBLE); + imageLayout.setVisibility(View.GONE); + reasonLayout.setVisibility(View.VISIBLE); + punishLayout.setVisibility(View.GONE); + } + changeState = String.valueOf(dataBean.getNextState()); + approvalResult = dataBean.getApprovalResult(); + } + }).build().show(); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); } } + /** + * 案卷提交。先提交普通案卷流程,成功后再自动提交三包处罚 + */ + private void submitCase() { + handleResult = caseHandleResultView.getText().toString(); + if (TextUtils.isEmpty(handleResult)) { + ToastHelper.showToast("还未选择处理结果", ToastHelper.WARING); + return; + } + if (handleResult.equals("处理完成")) { + //选择处理完成时,处理图片必传。至少一张,最多两张 + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); + return; + } + //只有选择处理完成才需要判断处罚条件 + String punishType = punishTypeView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚类型还未选择", ToastHelper.WARING); + return; + } + String punishOpinion = punishOpinionView.getText().toString().trim().replace(" ", ""); + if (TextUtils.isEmpty(punishType)) { + ToastHelper.showToast("处罚意见还未填写", ToastHelper.WARING); + return; + } + } + if (handleResult.equals("申请延期") || handleResult.equals("申请调整")) { + caseReason = caseReasonView.getText().toString(); + if (TextUtils.isEmpty(caseReason)) { + ToastHelper.showToast("延期/调整的原因必须填写", ToastHelper.WARING); + return; + } + } + caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), + changeState, caseReason, StringHelper.reformatURL(handleImageList), approvalResult); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + if (handleResult.equals("处理完成")) { + //只有选择处理完成才需要操作处罚流程 +// casePunishPresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), +// changeState, caseReason, StringHelper.reformatURL(punishImageList), approvalResult); + } else { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + PackageTodoFragment.sendEmptyMessage(Constant.PACKAGE_DONE); + PackageHandledFragment.sendEmptyMessage(Constant.PACKAGE_DONE); + finish(); + } + } + } + + @Override protected void onDestroy() { super.onDestroy(); @@ -414,5 +596,11 @@ if (uploadImagePresenter != null) { uploadImagePresenter.disposeRetrofitRequest(); } + if (caseNextNodePresenter != null) { + caseNextNodePresenter.disposeRetrofitRequest(); + } + if (caseHandlePresenter != null) { + caseHandlePresenter.disposeRetrofitRequest(); + } } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 3b9759b..17b866e 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -3,9 +3,6 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.util.Log; import android.widget.TextView; import androidx.recyclerview.widget.GridLayoutManager; @@ -35,24 +32,17 @@ import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; -import com.casic.dcms.utils.SaveKeyValues; import com.casic.dcms.utils.StringHelper; import com.casic.dcms.utils.ToastHelper; -import com.google.gson.Gson; import com.qmuiteam.qmui.widget.QMUIRadiusImageView; -import org.jetbrains.annotations.NotNull; - -import java.lang.ref.WeakReference; - import butterknife.BindView; /** - * TODO 此页面后期可能需要添加滑动吸顶效果 + * 此页面后期可能需要添加滑动吸顶效果 */ public class HomePageFragment extends BaseFragment implements IUserDataView, IHomePageView { - private static final String TAG = "HomePageFragment"; @BindView(R.id.userIconView) QMUIRadiusImageView userIconView; @BindView(R.id.userNameView) @@ -66,8 +56,6 @@ private Context context; private UserDataPresenterImpl userDataPresenter; private HomePagePresenterImpl homePagePresenter; - private Gson gson; - private WeakReferenceHandler weakReferenceHandler; @Override protected int initLayoutView() { @@ -81,146 +69,33 @@ @Override protected void initData() { - gson = new Gson(); userDataPresenter = new UserDataPresenterImpl(this); homePagePresenter = new HomePagePresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); } @Override protected void initEvent() { - /** - * 根据登录账号判断是否是同一个人登录,如果是,从缓存读取数据,否则请求后台数据,获取最新登录者的部门等信息 - * */ - String userBeanJson = (String) SaveKeyValues.getValue("userBean", ""); - if (userBeanJson.equals("")) { - Log.d(TAG, "initData: 从没有人登录过,需要从新获取数据"); - userDataPresenter.onReadyRetrofitRequest(); - homePagePresenter.onReadyRetrofitRequest("05"); - } else { - UserBean userBean = gson.fromJson(userBeanJson, UserBean.class); - if (userBean.getData().getAccount().equals(StringHelper.getUserAccount())) { - Log.d(TAG, "initData: 同一人重复登录,加载缓存"); - Message userInfoMessage = weakReferenceHandler.obtainMessage(); - userInfoMessage.what = 2021061101; - userInfoMessage.obj = userBean; - weakReferenceHandler.sendMessage(userInfoMessage); - - String homePageBeanJson = (String) SaveKeyValues.getValue("homePageBean", ""); - HomePageBean homePageBean = gson.fromJson(homePageBeanJson, HomePageBean.class); - Message homePageMessage = weakReferenceHandler.obtainMessage(); - homePageMessage.what = 2021061102; - homePageMessage.obj = homePageBean; - weakReferenceHandler.sendMessage(homePageMessage); - } else { - Log.d(TAG, "initData: 有人登录过,但是上次和这次登录者不是同一人,需要从新获取数据"); - userDataPresenter.onReadyRetrofitRequest(); - homePagePresenter.onReadyRetrofitRequest("05"); - } - } + userDataPresenter.onReadyRetrofitRequest(); + homePagePresenter.onReadyRetrofitRequest("05"); } - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(HomePageFragment fragment) { - reference = new WeakReference<>(fragment); - } - - @SuppressLint("SetTextI18n") - @Override - public void handleMessage(@NotNull Message msg) { - HomePageFragment homePageFragment = reference.get(); - Context context = homePageFragment.context; - switch (msg.what) { - case 2021061101: - UserBean userBean = (UserBean) msg.obj; - //QMUIRadiusImageView无法动态设置圆形头像,借助Glide实现圆形头像 -// Glide.with(homePageFragment).load(R.mipmap.app_logo).apply(RequestOptions.circleCropTransform()).into(userIconView); - Glide.with(homePageFragment).load(R.mipmap.app_logo).into(homePageFragment.userIconView); - - UserBean.DataBean data = userBean.getData(); - homePageFragment.userNameView.setText(data.getName()); - homePageFragment.userDeptView.setText(data.getDeptName() + data.getRoleNames()); - - //把常用的几个属性单独存起来 - StringHelper.saveUserName(data.getName()); - StringHelper.saveUserPhone(data.getPhone()); - StringHelper.saveUserDept(data.getDeptName()); - StringHelper.saveUserDeptId(data.getDeptId()); - StringHelper.saveUserId(data.getId()); - break; - case 2021061102: - HomePageBean resultBean = (HomePageBean) msg.obj; - HomeRecycleAdapter adapter = new HomeRecycleAdapter(context, resultBean.getData().getMenus()); - homePageFragment.homeRecyclerView.setLayoutManager(new GridLayoutManager(context, 3)); - homePageFragment.homeRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new HomeRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(String itemName) { - Intent intent = new Intent(); - switch (itemName) { - case "案卷上报": - intent.setClass(context, CaseUploadActivity.class); - break; - case "快速上报": - intent.setClass(context, CaseUploadQuicklyActivity.class); - break; - case "三包上报": - intent.setClass(context, CaseUploadPackageActivity.class); - break; - case "案卷核实": - intent.setClass(context, CaseVerifyActivity.class); - break; - case "案卷核查": - intent.setClass(context, CaseCheckActivity.class); - break; - case "案卷处理": - intent.setClass(context, CaseHandleActivity.class); - break; - case "紧急要件": - intent.setClass(context, UrgentCaseActivity.class); - break; - case "超时督办": - intent.setClass(context, OvertimeCaseActivity.class); - break; - case "统计分析": - intent.setClass(context, DataAnalysisActivity.class); - break; - case "在岗人员": - intent.setClass(context, PersonOnlineActivity.class); - break; - case "案卷查询": - intent.setClass(context, CaseSearchActivity.class); - break; - case "案卷分布": - intent.setClass(context, CaseOnMapActivity.class); - break; - case "公厕保洁": - intent.setClass(context, PublicToiletActivity.class); - break; - case "三包处置": - intent.setClass(context, PackageHandleActivity.class); - break; - default: - break; - } - context.startActivity(intent); - } - }); - break; - } - } - } - + @SuppressLint("SetTextI18n") @Override public void obtainUserData(UserBean userBean) { if (userBean.isSuccess()) { - SaveKeyValues.putValue("userBean", gson.toJson(userBean)); - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021061101; - message.obj = userBean; - weakReferenceHandler.sendMessage(message); + //QMUIRadiusImageView无法动态设置圆形头像,借助Glide实现圆形头像 +// Glide.with(this).load(R.mipmap.app_logo).apply(RequestOptions.circleCropTransform()).into(userIconView); + Glide.with(this).load(R.mipmap.app_logo).into(userIconView); + + UserBean.DataBean data = userBean.getData(); + userNameView.setText(data.getName()); + userDeptView.setText(data.getDeptName() + data.getRoleNames()); + + StringHelper.saveUserName(data.getName()); + StringHelper.saveUserPhone(data.getPhone()); + StringHelper.saveUserDept(data.getDeptName()); + StringHelper.saveUserDeptId(data.getDeptId()); + StringHelper.saveUserId(data.getId()); } } @@ -228,11 +103,62 @@ @Override public void obtainHomePageResult(HomePageBean resultBean) { if (resultBean.isSuccess()) { - SaveKeyValues.putValue("homePageBean", gson.toJson(resultBean)); - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021061102; - message.obj = resultBean; - weakReferenceHandler.sendMessage(message); + HomeRecycleAdapter adapter = new HomeRecycleAdapter(context, resultBean.getData().getMenus()); + homeRecyclerView.setLayoutManager(new GridLayoutManager(context, 3)); + homeRecyclerView.setAdapter(adapter); + adapter.setOnGridItemClickListener(new HomeRecycleAdapter.OnGridItemClickListener() { + @Override + public void onClick(String itemName) { + Intent intent = new Intent(); + switch (itemName) { + case "案卷上报": + intent.setClass(context, CaseUploadActivity.class); + break; + case "快速上报": + intent.setClass(context, CaseUploadQuicklyActivity.class); + break; + case "三包上报": + intent.setClass(context, CaseUploadPackageActivity.class); + break; + case "案卷核实": + intent.setClass(context, CaseVerifyActivity.class); + break; + case "案卷核查": + intent.setClass(context, CaseCheckActivity.class); + break; + case "案卷处理": + intent.setClass(context, CaseHandleActivity.class); + break; + case "紧急要件": + intent.setClass(context, UrgentCaseActivity.class); + break; + case "超时督办": + intent.setClass(context, OvertimeCaseActivity.class); + break; + case "统计分析": + intent.setClass(context, DataAnalysisActivity.class); + break; + case "在岗人员": + intent.setClass(context, PersonOnlineActivity.class); + break; + case "案卷查询": + intent.setClass(context, CaseSearchActivity.class); + break; + case "案卷分布": + intent.setClass(context, CaseOnMapActivity.class); + break; + case "公厕保洁": + intent.setClass(context, PublicToiletActivity.class); + break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; + default: + break; + } + startActivity(intent); + } + }); } } diff --git a/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java b/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java index 21db61c..aa2f97b 100755 --- a/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java +++ b/app/src/main/java/com/casic/dcms/utils/CalendarUtil.java @@ -109,4 +109,11 @@ return week; } + //获取前两个月的此时 + public static Date obtainLastTwoMonth() { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.add(Calendar.MONTH, -2); //设置为前2月 + return calendar.getTime();//获取2个月前的时间 + } } diff --git a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java index a169a6c..c6e18d4 100755 --- a/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java +++ b/app/src/main/java/com/casic/dcms/widgets/datepicker/DatePopupWindow.java @@ -64,7 +64,7 @@ private DateOnClickListener mOnClickListener; private DatePopupWindow(Builder builder) { - this.activity = builder.context; + this.activity = builder.activity; this.currentDate = builder.date; this.startDesc = builder.startDesc; this.endDesc = builder.endDesc; @@ -166,36 +166,6 @@ int week = c.get(Calendar.DAY_OF_WEEK);//周几 //获取当前这个月最大天数 int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH); - -// 获取上2个月的数据 -// for (int i = 0; i <= 1; i++) { -// //当前月份循环减1 -// c.add(Calendar.MONTH, -1);//倒序,+1正序 -// DateInfo lastMonth = new DateInfo(); -// List lastDayList = new ArrayList<>(); -// int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH); -// lastMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月"); -// //周几 -// int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1; -// //根据该月的第一天,星期几,填充上个月的空白日期 -// for (int t = 0; t < weeks; t++) { -// DayInfo dayInfo = new DayInfo(); -// dayInfo.setName(""); -// dayInfo.setEnable(false); -// dayInfo.setDate(""); -// lastDayList.add(dayInfo); -// } -// //该月的所有日期 -// for (int j = 0; j < maxDays; j++) { -// DayInfo dayInfo = new DayInfo(); -// dayInfo.setName((j + 1) + ""); -// dayInfo.setEnable(true); -// dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1)); -// lastDayList.add(dayInfo); -// } -// lastMonth.setList(lastDayList); -// mList.add(i, lastMonth); -// } DateInfo month = new DateInfo(); List dayList = new ArrayList<>(); month.setDate(c.get(Calendar.YEAR) + "年" + firstM + "月"); @@ -220,16 +190,49 @@ if (c_year == c.get(Calendar.YEAR) && c_month == (c.get(Calendar.MONTH) + 1) && c_day == i) { childPosition = dayList.size(); } - //设置日期是否可选择,当大于当前日期时,是不可选,setEnable(false) - if (i <= days) { - dayInfo.setEnable(true); - } else { + //设置日期是否可选择 + if (i < days) { dayInfo.setEnable(false); + } else { + dayInfo.setEnable(true); } dayList.add(dayInfo); } month.setList(dayList); - mList.add(mList.size(), month); + mList.add(month); + //获取下2个月的数据 + for (int i = 1; i <= 2; i++) { + //当前月份循环减1 + c.add(Calendar.MONTH, 1); + DateInfo nextMonth = new DateInfo(); + List nextDayList = new ArrayList<>(); + int maxDays = c.getActualMaximum(Calendar.DAY_OF_MONTH); + nextMonth.setDate(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月"); + //周几 + int weeks = CalendarUtil.getWeekNoFormat(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-01") - 1; + //根据该月的第一天,星期几,填充上个月的空白日期 + for (int t = 0; t < weeks; t++) { + DayInfo dayInfo = new DayInfo(); + dayInfo.setName(""); + dayInfo.setEnable(false); + dayInfo.setDate(""); + nextDayList.add(dayInfo); + } + //该月的所有日期 + for (int j = 0; j < maxDays; j++) { + DayInfo dayInfo = new DayInfo(); + dayInfo.setName((j + 1) + ""); + dayInfo.setDate(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + (j + 1)); + if ((j + 1) > days && i == 2) { + dayInfo.setEnable(false); + } else { + dayInfo.setEnable(true); + } + nextDayList.add(dayInfo); + } + nextMonth.setList(nextDayList); + mList.add(nextMonth); + } mDateAdapter.updateData(); } @@ -391,7 +394,7 @@ public static class Builder { private String date; - private Activity context; + private Activity activity; private View parentView; private String startDesc; private String endDesc; @@ -402,9 +405,9 @@ private int endChildPosition = -1; private DateOnClickListener mOnClickListener = null; - public Builder(Activity context, Date date, View parentView) { + public Builder(Activity activity, Date date, View parentView) { this.date = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA).format(date); - this.context = context; + this.activity = activity; this.parentView = parentView; this.startDesc = "开始"; this.endDesc = "结束"; diff --git a/app/src/main/res/layout/activity_package_handled.xml b/app/src/main/res/layout/activity_package_handled.xml index 3df6df6..5298ba1 100644 --- a/app/src/main/res/layout/activity_package_handled.xml +++ b/app/src/main/res/layout/activity_package_handled.xml @@ -17,6 +17,21 @@ + + + + + + + + + diff --git a/app/src/main/res/layout/activity_package_todo.xml b/app/src/main/res/layout/activity_package_todo.xml index daccb58..c20b869 100644 --- a/app/src/main/res/layout/activity_package_todo.xml +++ b/app/src/main/res/layout/activity_package_todo.xml @@ -19,15 +19,15 @@ + android:text="处理结果" /> @@ -38,73 +38,69 @@ android:src="@drawable/ic_right" /> - + - - - - - - - - - + android:text="处理图片" /> + android:layout_height="wrap_content" /> - + - + + style="@style/noPointTextViewStyle" + android:text="申请理由" /> - + + + diff --git a/app/src/main/res/layout/include_package_base.xml b/app/src/main/res/layout/include_package_base.xml index 45f8c15..62c75a1 100644 --- a/app/src/main/res/layout/include_package_base.xml +++ b/app/src/main/res/layout/include_package_base.xml @@ -132,19 +132,4 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/include_package_punish.xml b/app/src/main/res/layout/include_package_punish.xml new file mode 100644 index 0000000..0713bb1 --- /dev/null +++ b/app/src/main/res/layout/include_package_punish.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file