diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f845c47..33ad3a1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,9 +87,9 @@ - + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f845c47..33ad3a1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,9 +87,9 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java new file mode 100644 index 0000000..a5f4a1e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class DeptTodoModelImpl implements IDeptCaseModel { + + private OnGetCaseListListener listener; + + public DeptTodoModelImpl(OnGetCaseListListener caseListListener) { + this.listener = caseListListener; + } + + public interface OnGetCaseListListener { + void onSuccess(PackageOrDeptBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageOrDeptBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f845c47..33ad3a1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,9 +87,9 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java new file mode 100644 index 0000000..a5f4a1e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class DeptTodoModelImpl implements IDeptCaseModel { + + private OnGetCaseListListener listener; + + public DeptTodoModelImpl(OnGetCaseListListener caseListListener) { + this.listener = caseListListener; + } + + public interface OnGetCaseListListener { + void onSuccess(PackageOrDeptBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageOrDeptBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java index 4cafc10..e8c76b9 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -25,7 +25,7 @@ @Override public Subscription sendRetrofitRequest(String isShop, int offset) { - Observable observable = RetrofitServiceManager.getWorkListResult(isShop, offset); + Observable observable = RetrofitServiceManager.getPackageWorkListResult(isShop, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f845c47..33ad3a1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,9 +87,9 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java new file mode 100644 index 0000000..a5f4a1e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class DeptTodoModelImpl implements IDeptCaseModel { + + private OnGetCaseListListener listener; + + public DeptTodoModelImpl(OnGetCaseListListener caseListListener) { + this.listener = caseListListener; + } + + public interface OnGetCaseListListener { + void onSuccess(PackageOrDeptBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageOrDeptBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java index 4cafc10..e8c76b9 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -25,7 +25,7 @@ @Override public Subscription sendRetrofitRequest(String isShop, int offset) { - Observable observable = RetrofitServiceManager.getWorkListResult(isShop, offset); + Observable observable = RetrofitServiceManager.getPackageWorkListResult(isShop, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java new file mode 100644 index 0000000..eca4ff8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.DeptTodoModelImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; + +public class DeptTodoPresenterImpl extends BasePresenter implements IDeptCasePresenter, DeptTodoModelImpl.OnGetCaseListListener { + + private IDeptTodoOrHandledView view; + private DeptTodoModelImpl actionModel; + + public DeptTodoPresenterImpl(IDeptTodoOrHandledView deptCaseView) { + this.view = deptCaseView; + actionModel = new DeptTodoModelImpl(this); + } + + //二级待办待处理 + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageOrDeptBean resultBean) { + view.obtainResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f845c47..33ad3a1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,9 +87,9 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java new file mode 100644 index 0000000..a5f4a1e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class DeptTodoModelImpl implements IDeptCaseModel { + + private OnGetCaseListListener listener; + + public DeptTodoModelImpl(OnGetCaseListListener caseListListener) { + this.listener = caseListListener; + } + + public interface OnGetCaseListListener { + void onSuccess(PackageOrDeptBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageOrDeptBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java index 4cafc10..e8c76b9 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -25,7 +25,7 @@ @Override public Subscription sendRetrofitRequest(String isShop, int offset) { - Observable observable = RetrofitServiceManager.getWorkListResult(isShop, offset); + Observable observable = RetrofitServiceManager.getPackageWorkListResult(isShop, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java new file mode 100644 index 0000000..eca4ff8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.DeptTodoModelImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; + +public class DeptTodoPresenterImpl extends BasePresenter implements IDeptCasePresenter, DeptTodoModelImpl.OnGetCaseListListener { + + private IDeptTodoOrHandledView view; + private DeptTodoModelImpl actionModel; + + public DeptTodoPresenterImpl(IDeptTodoOrHandledView deptCaseView) { + this.view = deptCaseView; + actionModel = new DeptTodoModelImpl(this); + } + + //二级待办待处理 + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageOrDeptBean resultBean) { + view.obtainResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java index 5e6fd9c..b11a51a 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java @@ -96,7 +96,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[1]; + return Constant.DEPT_PAGE_TITLES[3]; } @Override diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f845c47..33ad3a1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,9 +87,9 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java new file mode 100644 index 0000000..a5f4a1e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class DeptTodoModelImpl implements IDeptCaseModel { + + private OnGetCaseListListener listener; + + public DeptTodoModelImpl(OnGetCaseListListener caseListListener) { + this.listener = caseListListener; + } + + public interface OnGetCaseListListener { + void onSuccess(PackageOrDeptBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageOrDeptBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java index 4cafc10..e8c76b9 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -25,7 +25,7 @@ @Override public Subscription sendRetrofitRequest(String isShop, int offset) { - Observable observable = RetrofitServiceManager.getWorkListResult(isShop, offset); + Observable observable = RetrofitServiceManager.getPackageWorkListResult(isShop, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java new file mode 100644 index 0000000..eca4ff8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.DeptTodoModelImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; + +public class DeptTodoPresenterImpl extends BasePresenter implements IDeptCasePresenter, DeptTodoModelImpl.OnGetCaseListListener { + + private IDeptTodoOrHandledView view; + private DeptTodoModelImpl actionModel; + + public DeptTodoPresenterImpl(IDeptTodoOrHandledView deptCaseView) { + this.view = deptCaseView; + actionModel = new DeptTodoModelImpl(this); + } + + //二级待办待处理 + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageOrDeptBean resultBean) { + view.obtainResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java index 5e6fd9c..b11a51a 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java @@ -96,7 +96,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[1]; + return Constant.DEPT_PAGE_TITLES[3]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java index de47420..030843e 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[2]; + return Constant.DEPT_PAGE_TITLES[4]; } @Override diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f845c47..33ad3a1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,9 +87,9 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java new file mode 100644 index 0000000..a5f4a1e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class DeptTodoModelImpl implements IDeptCaseModel { + + private OnGetCaseListListener listener; + + public DeptTodoModelImpl(OnGetCaseListListener caseListListener) { + this.listener = caseListListener; + } + + public interface OnGetCaseListListener { + void onSuccess(PackageOrDeptBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageOrDeptBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java index 4cafc10..e8c76b9 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -25,7 +25,7 @@ @Override public Subscription sendRetrofitRequest(String isShop, int offset) { - Observable observable = RetrofitServiceManager.getWorkListResult(isShop, offset); + Observable observable = RetrofitServiceManager.getPackageWorkListResult(isShop, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java new file mode 100644 index 0000000..eca4ff8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.DeptTodoModelImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; + +public class DeptTodoPresenterImpl extends BasePresenter implements IDeptCasePresenter, DeptTodoModelImpl.OnGetCaseListListener { + + private IDeptTodoOrHandledView view; + private DeptTodoModelImpl actionModel; + + public DeptTodoPresenterImpl(IDeptTodoOrHandledView deptCaseView) { + this.view = deptCaseView; + actionModel = new DeptTodoModelImpl(this); + } + + //二级待办待处理 + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageOrDeptBean resultBean) { + view.obtainResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java index 5e6fd9c..b11a51a 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java @@ -96,7 +96,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[1]; + return Constant.DEPT_PAGE_TITLES[3]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java index de47420..030843e 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[2]; + return Constant.DEPT_PAGE_TITLES[4]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index 3de76c2..d47aa72 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -17,6 +17,7 @@ import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; import com.casic.dcms.ui.fragment.dept.DeptCasePostponeFragment; import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -57,10 +58,11 @@ @Override public void initData() { List fragmentList = new ArrayList<>(); + fragmentList.add(new DeptCaseTodoFragment());//待办任务 fragmentList.add(new DeptCaseProcessFragment());//待处理 + fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 - fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f845c47..33ad3a1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,9 +87,9 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java new file mode 100644 index 0000000..a5f4a1e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class DeptTodoModelImpl implements IDeptCaseModel { + + private OnGetCaseListListener listener; + + public DeptTodoModelImpl(OnGetCaseListListener caseListListener) { + this.listener = caseListListener; + } + + public interface OnGetCaseListListener { + void onSuccess(PackageOrDeptBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageOrDeptBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java index 4cafc10..e8c76b9 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -25,7 +25,7 @@ @Override public Subscription sendRetrofitRequest(String isShop, int offset) { - Observable observable = RetrofitServiceManager.getWorkListResult(isShop, offset); + Observable observable = RetrofitServiceManager.getPackageWorkListResult(isShop, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java new file mode 100644 index 0000000..eca4ff8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.DeptTodoModelImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; + +public class DeptTodoPresenterImpl extends BasePresenter implements IDeptCasePresenter, DeptTodoModelImpl.OnGetCaseListListener { + + private IDeptTodoOrHandledView view; + private DeptTodoModelImpl actionModel; + + public DeptTodoPresenterImpl(IDeptTodoOrHandledView deptCaseView) { + this.view = deptCaseView; + actionModel = new DeptTodoModelImpl(this); + } + + //二级待办待处理 + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageOrDeptBean resultBean) { + view.obtainResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java index 5e6fd9c..b11a51a 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java @@ -96,7 +96,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[1]; + return Constant.DEPT_PAGE_TITLES[3]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java index de47420..030843e 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[2]; + return Constant.DEPT_PAGE_TITLES[4]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index 3de76c2..d47aa72 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -17,6 +17,7 @@ import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; import com.casic.dcms.ui.fragment.dept.DeptCasePostponeFragment; import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -57,10 +58,11 @@ @Override public void initData() { List fragmentList = new ArrayList<>(); + fragmentList.add(new DeptCaseTodoFragment());//待办任务 fragmentList.add(new DeptCaseProcessFragment());//待处理 + fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 - fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); diff --git a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java deleted file mode 100644 index c751109..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java +++ /dev/null @@ -1,440 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageRecycleViewAdapter; -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.bean.ProcessPersonBean; -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.ProcessPersonPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IHandleProcessView; -import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; -import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class DeptProcessDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { - - private Context context = DeptProcessDetailActivity.this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseResourceView) - TextView caseResourceView; - @BindView(R.id.caseCreatorView) - TextView caseCreatorView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicRecyclerView) - RecyclerView casePicRecyclerView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseHandleRecyclerView) - RecyclerView caseHandleRecyclerView; - @BindView(R.id.optTypeView) - TextView optTypeView; - @BindView(R.id.casePersonLayout) - RelativeLayout casePersonLayout; - @BindView(R.id.personLine) - View personLine; - @BindView(R.id.caseHandlePersonView) - TextView caseHandlePersonView; - @BindView(R.id.optionEditView) - EditText optionEditView; - @BindView(R.id.commonTipsView) - TextView commonTipsView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ProcessPersonPresenterImpl handleProcessPresenter; - private List personBeans; - private CaseHandlePresenterImpl caseHandlePresenter; - private CaseNextNodePresenterImpl nextNodePresenter; - private String id; - private String changeState; - private String taskUserId; - private String operationKey; - private List nodeDataBeans; - - @Override - protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[0]; - } - - @Override - public int initLayoutView() { - return R.layout.activity_dept_process; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - nextNodePresenter = new CaseNextNodePresenterImpl(this); - handleProcessPresenter = new ProcessPersonPresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseResourceView.setText(data.getSourceName()); - caseCreatorView.setText(data.getCreateUserName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); - casePicRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); - caseHandleRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - //获取处置类型 - nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "处理中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); - DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("caseType", data.getEorcName()); - String dataLng = data.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = data.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - startActivity(intent); - break; - case R.id.caseOptTypeLayout: - if (nodeDataBeans != null) { - if (nodeDataBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("操作类型"); - for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { - 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(); - optTypeView.setText(tag); - optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); - changeState = String.valueOf(nodeBean.getNextState()); - operationKey = nodeBean.getOperationKey(); - - if (tag.equals("处置人员")) { - casePersonLayout.setVisibility(View.VISIBLE); - personLine.setVisibility(View.VISIBLE); - - //获取下级处置人员名单 - handleProcessPresenter.onReadyRetrofitRequest(); - } else { - casePersonLayout.setVisibility(View.GONE); - personLine.setVisibility(View.GONE); - } - } - }).build().show(); - } - } - break; - case R.id.casePersonLayout: - if (personBeans != null) { - if (personBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处置人员"); - for (ProcessPersonBean.DataBean dataBean : personBeans) { - sheetBuilder.addItem(dataBean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - caseHandlePersonView.setText(tag); - caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - taskUserId = personBeans.get(position).getId(); - } - }).build().show(); - } - } - break; - case R.id.commonTipsLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("常见用语") - .addItem("请及时处理") - .addItem("调查后及时回复") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - commonTipsView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - optionEditView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String optType = optTypeView.getText().toString(); - if (optType.equals("")) { - ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); - return; - } - if (optType.equals("处置人员")) { - //选择处理人员时,必选一个处置人员 - String handlePerson = caseHandlePersonView.getText().toString(); - if (handlePerson.equals("")) { - ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); - return; - } - } - String optionInput = StringHelper.filterString(optionEditView.getText().toString()); - if (optType.equals("申请调整") || optType.equals("申请延期") || optType.equals("申请缓办")) { - if (TextUtils.isEmpty(optionInput)) { - ToastHelper.showToast("调整/延期/缓办的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); - } - - @Override - public void obtainResultData(ProcessPersonBean resultBean) { - if (resultBean.isSuccess()) { - this.personBeans = resultBean.getData(); - if (personBeans.size() == 0) { - caseHandlePersonView.setText("无处置人员"); - } else { - ProcessPersonBean.DataBean dataBean = personBeans.get(0); - taskUserId = dataBean.getId(); - caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 - } - caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - this.nodeDataBeans = resultBean.getData(); - if (nodeDataBeans.size() == 0) { - optTypeView.setText("无下级流转节点"); - } else { - CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); - - operationKey = dataBean.getOperationKey(); - changeState = String.valueOf(dataBean.getNextState()); - optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 - } - optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (handleProcessPresenter != null) { - handleProcessPresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (nextNodePresenter != null) { - nextNodePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f845c47..33ad3a1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,9 +87,9 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java new file mode 100644 index 0000000..a5f4a1e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class DeptTodoModelImpl implements IDeptCaseModel { + + private OnGetCaseListListener listener; + + public DeptTodoModelImpl(OnGetCaseListListener caseListListener) { + this.listener = caseListListener; + } + + public interface OnGetCaseListListener { + void onSuccess(PackageOrDeptBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageOrDeptBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java index 4cafc10..e8c76b9 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -25,7 +25,7 @@ @Override public Subscription sendRetrofitRequest(String isShop, int offset) { - Observable observable = RetrofitServiceManager.getWorkListResult(isShop, offset); + Observable observable = RetrofitServiceManager.getPackageWorkListResult(isShop, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java new file mode 100644 index 0000000..eca4ff8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.DeptTodoModelImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; + +public class DeptTodoPresenterImpl extends BasePresenter implements IDeptCasePresenter, DeptTodoModelImpl.OnGetCaseListListener { + + private IDeptTodoOrHandledView view; + private DeptTodoModelImpl actionModel; + + public DeptTodoPresenterImpl(IDeptTodoOrHandledView deptCaseView) { + this.view = deptCaseView; + actionModel = new DeptTodoModelImpl(this); + } + + //二级待办待处理 + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageOrDeptBean resultBean) { + view.obtainResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java index 5e6fd9c..b11a51a 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java @@ -96,7 +96,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[1]; + return Constant.DEPT_PAGE_TITLES[3]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java index de47420..030843e 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[2]; + return Constant.DEPT_PAGE_TITLES[4]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index 3de76c2..d47aa72 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -17,6 +17,7 @@ import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; import com.casic.dcms.ui.fragment.dept.DeptCasePostponeFragment; import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -57,10 +58,11 @@ @Override public void initData() { List fragmentList = new ArrayList<>(); + fragmentList.add(new DeptCaseTodoFragment());//待办任务 fragmentList.add(new DeptCaseProcessFragment());//待处理 + fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 - fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); diff --git a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java deleted file mode 100644 index c751109..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java +++ /dev/null @@ -1,440 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageRecycleViewAdapter; -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.bean.ProcessPersonBean; -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.ProcessPersonPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IHandleProcessView; -import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; -import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class DeptProcessDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { - - private Context context = DeptProcessDetailActivity.this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseResourceView) - TextView caseResourceView; - @BindView(R.id.caseCreatorView) - TextView caseCreatorView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicRecyclerView) - RecyclerView casePicRecyclerView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseHandleRecyclerView) - RecyclerView caseHandleRecyclerView; - @BindView(R.id.optTypeView) - TextView optTypeView; - @BindView(R.id.casePersonLayout) - RelativeLayout casePersonLayout; - @BindView(R.id.personLine) - View personLine; - @BindView(R.id.caseHandlePersonView) - TextView caseHandlePersonView; - @BindView(R.id.optionEditView) - EditText optionEditView; - @BindView(R.id.commonTipsView) - TextView commonTipsView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ProcessPersonPresenterImpl handleProcessPresenter; - private List personBeans; - private CaseHandlePresenterImpl caseHandlePresenter; - private CaseNextNodePresenterImpl nextNodePresenter; - private String id; - private String changeState; - private String taskUserId; - private String operationKey; - private List nodeDataBeans; - - @Override - protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[0]; - } - - @Override - public int initLayoutView() { - return R.layout.activity_dept_process; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - nextNodePresenter = new CaseNextNodePresenterImpl(this); - handleProcessPresenter = new ProcessPersonPresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseResourceView.setText(data.getSourceName()); - caseCreatorView.setText(data.getCreateUserName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); - casePicRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); - caseHandleRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - //获取处置类型 - nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "处理中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); - DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("caseType", data.getEorcName()); - String dataLng = data.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = data.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - startActivity(intent); - break; - case R.id.caseOptTypeLayout: - if (nodeDataBeans != null) { - if (nodeDataBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("操作类型"); - for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { - 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(); - optTypeView.setText(tag); - optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); - changeState = String.valueOf(nodeBean.getNextState()); - operationKey = nodeBean.getOperationKey(); - - if (tag.equals("处置人员")) { - casePersonLayout.setVisibility(View.VISIBLE); - personLine.setVisibility(View.VISIBLE); - - //获取下级处置人员名单 - handleProcessPresenter.onReadyRetrofitRequest(); - } else { - casePersonLayout.setVisibility(View.GONE); - personLine.setVisibility(View.GONE); - } - } - }).build().show(); - } - } - break; - case R.id.casePersonLayout: - if (personBeans != null) { - if (personBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处置人员"); - for (ProcessPersonBean.DataBean dataBean : personBeans) { - sheetBuilder.addItem(dataBean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - caseHandlePersonView.setText(tag); - caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - taskUserId = personBeans.get(position).getId(); - } - }).build().show(); - } - } - break; - case R.id.commonTipsLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("常见用语") - .addItem("请及时处理") - .addItem("调查后及时回复") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - commonTipsView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - optionEditView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String optType = optTypeView.getText().toString(); - if (optType.equals("")) { - ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); - return; - } - if (optType.equals("处置人员")) { - //选择处理人员时,必选一个处置人员 - String handlePerson = caseHandlePersonView.getText().toString(); - if (handlePerson.equals("")) { - ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); - return; - } - } - String optionInput = StringHelper.filterString(optionEditView.getText().toString()); - if (optType.equals("申请调整") || optType.equals("申请延期") || optType.equals("申请缓办")) { - if (TextUtils.isEmpty(optionInput)) { - ToastHelper.showToast("调整/延期/缓办的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); - } - - @Override - public void obtainResultData(ProcessPersonBean resultBean) { - if (resultBean.isSuccess()) { - this.personBeans = resultBean.getData(); - if (personBeans.size() == 0) { - caseHandlePersonView.setText("无处置人员"); - } else { - ProcessPersonBean.DataBean dataBean = personBeans.get(0); - taskUserId = dataBean.getId(); - caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 - } - caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - this.nodeDataBeans = resultBean.getData(); - if (nodeDataBeans.size() == 0) { - optTypeView.setText("无下级流转节点"); - } else { - CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); - - operationKey = dataBean.getOperationKey(); - changeState = String.valueOf(dataBean.getNextState()); - optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 - } - optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (handleProcessPresenter != null) { - handleProcessPresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (nextNodePresenter != null) { - nextNodePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java new file mode 100644 index 0000000..e4df2b6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java @@ -0,0 +1,438 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +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.bean.ProcessPersonBean; +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.ProcessPersonPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailHandleView; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.ICaseNextNodeView; +import com.casic.dcms.mvp.view.IHandleProcessView; +import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.JzExoMedia; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.widgets.AudioPlayerView; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +public class DeptTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { + + private Context context = this; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseResourceView) + TextView caseResourceView; + @BindView(R.id.caseCreatorView) + TextView caseCreatorView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.audioPlayerView) + AudioPlayerView audioPlayerView; + @BindView(R.id.videoPlayerView) + JzvdStd videoPlayerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.optTypeView) + TextView optTypeView; + @BindView(R.id.casePersonLayout) + RelativeLayout casePersonLayout; + @BindView(R.id.personLine) + View personLine; + @BindView(R.id.caseHandlePersonView) + TextView caseHandlePersonView; + @BindView(R.id.optionEditView) + EditText optionEditView; + @BindView(R.id.commonTipsView) + TextView commonTipsView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private ProcessPersonPresenterImpl handleProcessPresenter; + private List personBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private CaseNextNodePresenterImpl nextNodePresenter; + private String id; + private String title; + private String changeState; + private String taskUserId; + private String operationKey; + private List nodeDataBeans; + + @Override + protected String setTitleName() { + return title; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_todo; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + title = getIntent().getStringExtra("title"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + handleProcessPresenter = new ProcessPersonPresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.setVisibility(View.VISIBLE); + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView); + } + + //处理图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseTodoFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + + if (tag.equals("返回处理") || tag.equals("处置人员")) { + casePersonLayout.setVisibility(View.VISIBLE); + personLine.setVisibility(View.VISIBLE); + + //获取下级处置人员名单 + handleProcessPresenter.onReadyRetrofitRequest(); + } else { + casePersonLayout.setVisibility(View.GONE); + personLine.setVisibility(View.GONE); + } + } + }).build().show(); + } + } + break; + case R.id.casePersonLayout: + if (personBeans != null) { + if (personBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处置人员"); + for (ProcessPersonBean.DataBean dataBean : personBeans) { + sheetBuilder.addItem(dataBean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + caseHandlePersonView.setText(tag); + caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + taskUserId = personBeans.get(position).getId(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + if (optType.equals("处置人员") || optType.equals("返回处理")) { + //选择处理人员时,必选一个处置人员 + String handlePerson = caseHandlePersonView.getText().toString(); + if (handlePerson.equals("")) { + ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); + return; + } + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("处理意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); + break; + } + } + + @Override + public void obtainResultData(ProcessPersonBean resultBean) { + if (resultBean.isSuccess()) { + this.personBeans = resultBean.getData(); + if (personBeans.size() == 0) { + caseHandlePersonView.setText("无处置人员"); + } else { + ProcessPersonBean.DataBean dataBean = personBeans.get(0); + taskUserId = dataBean.getId(); + caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 + } + caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (handleProcessPresenter != null) { + handleProcessPresenter.disposeRetrofitRequest(); + } + if (caseHandlePresenter != null) { + caseHandlePresenter.disposeRetrofitRequest(); + } + if (nextNodePresenter != null) { + nextNodePresenter.disposeRetrofitRequest(); + } + if (audioPlayerView != null) { + audioPlayerView.release(); + } + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f845c47..33ad3a1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,9 +87,9 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java new file mode 100644 index 0000000..a5f4a1e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class DeptTodoModelImpl implements IDeptCaseModel { + + private OnGetCaseListListener listener; + + public DeptTodoModelImpl(OnGetCaseListListener caseListListener) { + this.listener = caseListListener; + } + + public interface OnGetCaseListListener { + void onSuccess(PackageOrDeptBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageOrDeptBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java index 4cafc10..e8c76b9 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -25,7 +25,7 @@ @Override public Subscription sendRetrofitRequest(String isShop, int offset) { - Observable observable = RetrofitServiceManager.getWorkListResult(isShop, offset); + Observable observable = RetrofitServiceManager.getPackageWorkListResult(isShop, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java new file mode 100644 index 0000000..eca4ff8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.DeptTodoModelImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; + +public class DeptTodoPresenterImpl extends BasePresenter implements IDeptCasePresenter, DeptTodoModelImpl.OnGetCaseListListener { + + private IDeptTodoOrHandledView view; + private DeptTodoModelImpl actionModel; + + public DeptTodoPresenterImpl(IDeptTodoOrHandledView deptCaseView) { + this.view = deptCaseView; + actionModel = new DeptTodoModelImpl(this); + } + + //二级待办待处理 + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageOrDeptBean resultBean) { + view.obtainResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java index 5e6fd9c..b11a51a 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java @@ -96,7 +96,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[1]; + return Constant.DEPT_PAGE_TITLES[3]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java index de47420..030843e 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[2]; + return Constant.DEPT_PAGE_TITLES[4]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index 3de76c2..d47aa72 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -17,6 +17,7 @@ import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; import com.casic.dcms.ui.fragment.dept.DeptCasePostponeFragment; import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -57,10 +58,11 @@ @Override public void initData() { List fragmentList = new ArrayList<>(); + fragmentList.add(new DeptCaseTodoFragment());//待办任务 fragmentList.add(new DeptCaseProcessFragment());//待处理 + fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 - fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); diff --git a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java deleted file mode 100644 index c751109..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java +++ /dev/null @@ -1,440 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageRecycleViewAdapter; -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.bean.ProcessPersonBean; -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.ProcessPersonPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IHandleProcessView; -import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; -import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class DeptProcessDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { - - private Context context = DeptProcessDetailActivity.this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseResourceView) - TextView caseResourceView; - @BindView(R.id.caseCreatorView) - TextView caseCreatorView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicRecyclerView) - RecyclerView casePicRecyclerView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseHandleRecyclerView) - RecyclerView caseHandleRecyclerView; - @BindView(R.id.optTypeView) - TextView optTypeView; - @BindView(R.id.casePersonLayout) - RelativeLayout casePersonLayout; - @BindView(R.id.personLine) - View personLine; - @BindView(R.id.caseHandlePersonView) - TextView caseHandlePersonView; - @BindView(R.id.optionEditView) - EditText optionEditView; - @BindView(R.id.commonTipsView) - TextView commonTipsView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ProcessPersonPresenterImpl handleProcessPresenter; - private List personBeans; - private CaseHandlePresenterImpl caseHandlePresenter; - private CaseNextNodePresenterImpl nextNodePresenter; - private String id; - private String changeState; - private String taskUserId; - private String operationKey; - private List nodeDataBeans; - - @Override - protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[0]; - } - - @Override - public int initLayoutView() { - return R.layout.activity_dept_process; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - nextNodePresenter = new CaseNextNodePresenterImpl(this); - handleProcessPresenter = new ProcessPersonPresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseResourceView.setText(data.getSourceName()); - caseCreatorView.setText(data.getCreateUserName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); - casePicRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); - caseHandleRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - //获取处置类型 - nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "处理中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); - DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("caseType", data.getEorcName()); - String dataLng = data.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = data.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - startActivity(intent); - break; - case R.id.caseOptTypeLayout: - if (nodeDataBeans != null) { - if (nodeDataBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("操作类型"); - for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { - 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(); - optTypeView.setText(tag); - optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); - changeState = String.valueOf(nodeBean.getNextState()); - operationKey = nodeBean.getOperationKey(); - - if (tag.equals("处置人员")) { - casePersonLayout.setVisibility(View.VISIBLE); - personLine.setVisibility(View.VISIBLE); - - //获取下级处置人员名单 - handleProcessPresenter.onReadyRetrofitRequest(); - } else { - casePersonLayout.setVisibility(View.GONE); - personLine.setVisibility(View.GONE); - } - } - }).build().show(); - } - } - break; - case R.id.casePersonLayout: - if (personBeans != null) { - if (personBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处置人员"); - for (ProcessPersonBean.DataBean dataBean : personBeans) { - sheetBuilder.addItem(dataBean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - caseHandlePersonView.setText(tag); - caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - taskUserId = personBeans.get(position).getId(); - } - }).build().show(); - } - } - break; - case R.id.commonTipsLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("常见用语") - .addItem("请及时处理") - .addItem("调查后及时回复") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - commonTipsView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - optionEditView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String optType = optTypeView.getText().toString(); - if (optType.equals("")) { - ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); - return; - } - if (optType.equals("处置人员")) { - //选择处理人员时,必选一个处置人员 - String handlePerson = caseHandlePersonView.getText().toString(); - if (handlePerson.equals("")) { - ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); - return; - } - } - String optionInput = StringHelper.filterString(optionEditView.getText().toString()); - if (optType.equals("申请调整") || optType.equals("申请延期") || optType.equals("申请缓办")) { - if (TextUtils.isEmpty(optionInput)) { - ToastHelper.showToast("调整/延期/缓办的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); - } - - @Override - public void obtainResultData(ProcessPersonBean resultBean) { - if (resultBean.isSuccess()) { - this.personBeans = resultBean.getData(); - if (personBeans.size() == 0) { - caseHandlePersonView.setText("无处置人员"); - } else { - ProcessPersonBean.DataBean dataBean = personBeans.get(0); - taskUserId = dataBean.getId(); - caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 - } - caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - this.nodeDataBeans = resultBean.getData(); - if (nodeDataBeans.size() == 0) { - optTypeView.setText("无下级流转节点"); - } else { - CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); - - operationKey = dataBean.getOperationKey(); - changeState = String.valueOf(dataBean.getNextState()); - optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 - } - optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (handleProcessPresenter != null) { - handleProcessPresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (nextNodePresenter != null) { - nextNodePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java new file mode 100644 index 0000000..e4df2b6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java @@ -0,0 +1,438 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +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.bean.ProcessPersonBean; +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.ProcessPersonPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailHandleView; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.ICaseNextNodeView; +import com.casic.dcms.mvp.view.IHandleProcessView; +import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.JzExoMedia; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.widgets.AudioPlayerView; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +public class DeptTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { + + private Context context = this; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseResourceView) + TextView caseResourceView; + @BindView(R.id.caseCreatorView) + TextView caseCreatorView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.audioPlayerView) + AudioPlayerView audioPlayerView; + @BindView(R.id.videoPlayerView) + JzvdStd videoPlayerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.optTypeView) + TextView optTypeView; + @BindView(R.id.casePersonLayout) + RelativeLayout casePersonLayout; + @BindView(R.id.personLine) + View personLine; + @BindView(R.id.caseHandlePersonView) + TextView caseHandlePersonView; + @BindView(R.id.optionEditView) + EditText optionEditView; + @BindView(R.id.commonTipsView) + TextView commonTipsView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private ProcessPersonPresenterImpl handleProcessPresenter; + private List personBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private CaseNextNodePresenterImpl nextNodePresenter; + private String id; + private String title; + private String changeState; + private String taskUserId; + private String operationKey; + private List nodeDataBeans; + + @Override + protected String setTitleName() { + return title; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_todo; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + title = getIntent().getStringExtra("title"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + handleProcessPresenter = new ProcessPersonPresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.setVisibility(View.VISIBLE); + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView); + } + + //处理图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseTodoFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + + if (tag.equals("返回处理") || tag.equals("处置人员")) { + casePersonLayout.setVisibility(View.VISIBLE); + personLine.setVisibility(View.VISIBLE); + + //获取下级处置人员名单 + handleProcessPresenter.onReadyRetrofitRequest(); + } else { + casePersonLayout.setVisibility(View.GONE); + personLine.setVisibility(View.GONE); + } + } + }).build().show(); + } + } + break; + case R.id.casePersonLayout: + if (personBeans != null) { + if (personBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处置人员"); + for (ProcessPersonBean.DataBean dataBean : personBeans) { + sheetBuilder.addItem(dataBean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + caseHandlePersonView.setText(tag); + caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + taskUserId = personBeans.get(position).getId(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + if (optType.equals("处置人员") || optType.equals("返回处理")) { + //选择处理人员时,必选一个处置人员 + String handlePerson = caseHandlePersonView.getText().toString(); + if (handlePerson.equals("")) { + ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); + return; + } + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("处理意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); + break; + } + } + + @Override + public void obtainResultData(ProcessPersonBean resultBean) { + if (resultBean.isSuccess()) { + this.personBeans = resultBean.getData(); + if (personBeans.size() == 0) { + caseHandlePersonView.setText("无处置人员"); + } else { + ProcessPersonBean.DataBean dataBean = personBeans.get(0); + taskUserId = dataBean.getId(); + caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 + } + caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (handleProcessPresenter != null) { + handleProcessPresenter.disposeRetrofitRequest(); + } + if (caseHandlePresenter != null) { + caseHandlePresenter.disposeRetrofitRequest(); + } + if (nextNodePresenter != null) { + nextNodePresenter.disposeRetrofitRequest(); + } + if (audioPlayerView != null) { + audioPlayerView.release(); + } + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java index 12f5b4d..7727898 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java @@ -16,7 +16,7 @@ import com.casic.dcms.bean.PackageOrDeptBean; import com.casic.dcms.mvp.presenter.DeptProcessPresenterImpl; import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; -import com.casic.dcms.ui.DeptProcessDetailActivity; +import com.casic.dcms.ui.DeptTodoDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -125,7 +125,8 @@ fragment.adapter.setOnItemClickListener(new DeptTodoOrHandledAdapter.OnItemClickListener() { @Override public void onClick(int position) { - Intent intent = new Intent(fragment.context, DeptProcessDetailActivity.class); + Intent intent = new Intent(fragment.context, DeptTodoDetailActivity.class); + intent.putExtra("title", Constant.DEPT_PAGE_TITLES[1]); intent.putExtra("id", fragment.dataBeans.get(position).getId()); fragment.startActivity(intent); } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f845c47..33ad3a1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,9 +87,9 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java new file mode 100644 index 0000000..a5f4a1e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class DeptTodoModelImpl implements IDeptCaseModel { + + private OnGetCaseListListener listener; + + public DeptTodoModelImpl(OnGetCaseListListener caseListListener) { + this.listener = caseListListener; + } + + public interface OnGetCaseListListener { + void onSuccess(PackageOrDeptBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageOrDeptBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java index 4cafc10..e8c76b9 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -25,7 +25,7 @@ @Override public Subscription sendRetrofitRequest(String isShop, int offset) { - Observable observable = RetrofitServiceManager.getWorkListResult(isShop, offset); + Observable observable = RetrofitServiceManager.getPackageWorkListResult(isShop, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java new file mode 100644 index 0000000..eca4ff8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.DeptTodoModelImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; + +public class DeptTodoPresenterImpl extends BasePresenter implements IDeptCasePresenter, DeptTodoModelImpl.OnGetCaseListListener { + + private IDeptTodoOrHandledView view; + private DeptTodoModelImpl actionModel; + + public DeptTodoPresenterImpl(IDeptTodoOrHandledView deptCaseView) { + this.view = deptCaseView; + actionModel = new DeptTodoModelImpl(this); + } + + //二级待办待处理 + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageOrDeptBean resultBean) { + view.obtainResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java index 5e6fd9c..b11a51a 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java @@ -96,7 +96,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[1]; + return Constant.DEPT_PAGE_TITLES[3]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java index de47420..030843e 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[2]; + return Constant.DEPT_PAGE_TITLES[4]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index 3de76c2..d47aa72 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -17,6 +17,7 @@ import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; import com.casic.dcms.ui.fragment.dept.DeptCasePostponeFragment; import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -57,10 +58,11 @@ @Override public void initData() { List fragmentList = new ArrayList<>(); + fragmentList.add(new DeptCaseTodoFragment());//待办任务 fragmentList.add(new DeptCaseProcessFragment());//待处理 + fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 - fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); diff --git a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java deleted file mode 100644 index c751109..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java +++ /dev/null @@ -1,440 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageRecycleViewAdapter; -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.bean.ProcessPersonBean; -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.ProcessPersonPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IHandleProcessView; -import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; -import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class DeptProcessDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { - - private Context context = DeptProcessDetailActivity.this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseResourceView) - TextView caseResourceView; - @BindView(R.id.caseCreatorView) - TextView caseCreatorView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicRecyclerView) - RecyclerView casePicRecyclerView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseHandleRecyclerView) - RecyclerView caseHandleRecyclerView; - @BindView(R.id.optTypeView) - TextView optTypeView; - @BindView(R.id.casePersonLayout) - RelativeLayout casePersonLayout; - @BindView(R.id.personLine) - View personLine; - @BindView(R.id.caseHandlePersonView) - TextView caseHandlePersonView; - @BindView(R.id.optionEditView) - EditText optionEditView; - @BindView(R.id.commonTipsView) - TextView commonTipsView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ProcessPersonPresenterImpl handleProcessPresenter; - private List personBeans; - private CaseHandlePresenterImpl caseHandlePresenter; - private CaseNextNodePresenterImpl nextNodePresenter; - private String id; - private String changeState; - private String taskUserId; - private String operationKey; - private List nodeDataBeans; - - @Override - protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[0]; - } - - @Override - public int initLayoutView() { - return R.layout.activity_dept_process; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - nextNodePresenter = new CaseNextNodePresenterImpl(this); - handleProcessPresenter = new ProcessPersonPresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseResourceView.setText(data.getSourceName()); - caseCreatorView.setText(data.getCreateUserName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); - casePicRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); - caseHandleRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - //获取处置类型 - nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "处理中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); - DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("caseType", data.getEorcName()); - String dataLng = data.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = data.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - startActivity(intent); - break; - case R.id.caseOptTypeLayout: - if (nodeDataBeans != null) { - if (nodeDataBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("操作类型"); - for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { - 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(); - optTypeView.setText(tag); - optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); - changeState = String.valueOf(nodeBean.getNextState()); - operationKey = nodeBean.getOperationKey(); - - if (tag.equals("处置人员")) { - casePersonLayout.setVisibility(View.VISIBLE); - personLine.setVisibility(View.VISIBLE); - - //获取下级处置人员名单 - handleProcessPresenter.onReadyRetrofitRequest(); - } else { - casePersonLayout.setVisibility(View.GONE); - personLine.setVisibility(View.GONE); - } - } - }).build().show(); - } - } - break; - case R.id.casePersonLayout: - if (personBeans != null) { - if (personBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处置人员"); - for (ProcessPersonBean.DataBean dataBean : personBeans) { - sheetBuilder.addItem(dataBean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - caseHandlePersonView.setText(tag); - caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - taskUserId = personBeans.get(position).getId(); - } - }).build().show(); - } - } - break; - case R.id.commonTipsLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("常见用语") - .addItem("请及时处理") - .addItem("调查后及时回复") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - commonTipsView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - optionEditView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String optType = optTypeView.getText().toString(); - if (optType.equals("")) { - ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); - return; - } - if (optType.equals("处置人员")) { - //选择处理人员时,必选一个处置人员 - String handlePerson = caseHandlePersonView.getText().toString(); - if (handlePerson.equals("")) { - ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); - return; - } - } - String optionInput = StringHelper.filterString(optionEditView.getText().toString()); - if (optType.equals("申请调整") || optType.equals("申请延期") || optType.equals("申请缓办")) { - if (TextUtils.isEmpty(optionInput)) { - ToastHelper.showToast("调整/延期/缓办的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); - } - - @Override - public void obtainResultData(ProcessPersonBean resultBean) { - if (resultBean.isSuccess()) { - this.personBeans = resultBean.getData(); - if (personBeans.size() == 0) { - caseHandlePersonView.setText("无处置人员"); - } else { - ProcessPersonBean.DataBean dataBean = personBeans.get(0); - taskUserId = dataBean.getId(); - caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 - } - caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - this.nodeDataBeans = resultBean.getData(); - if (nodeDataBeans.size() == 0) { - optTypeView.setText("无下级流转节点"); - } else { - CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); - - operationKey = dataBean.getOperationKey(); - changeState = String.valueOf(dataBean.getNextState()); - optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 - } - optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (handleProcessPresenter != null) { - handleProcessPresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (nextNodePresenter != null) { - nextNodePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java new file mode 100644 index 0000000..e4df2b6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java @@ -0,0 +1,438 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +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.bean.ProcessPersonBean; +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.ProcessPersonPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailHandleView; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.ICaseNextNodeView; +import com.casic.dcms.mvp.view.IHandleProcessView; +import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.JzExoMedia; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.widgets.AudioPlayerView; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +public class DeptTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { + + private Context context = this; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseResourceView) + TextView caseResourceView; + @BindView(R.id.caseCreatorView) + TextView caseCreatorView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.audioPlayerView) + AudioPlayerView audioPlayerView; + @BindView(R.id.videoPlayerView) + JzvdStd videoPlayerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.optTypeView) + TextView optTypeView; + @BindView(R.id.casePersonLayout) + RelativeLayout casePersonLayout; + @BindView(R.id.personLine) + View personLine; + @BindView(R.id.caseHandlePersonView) + TextView caseHandlePersonView; + @BindView(R.id.optionEditView) + EditText optionEditView; + @BindView(R.id.commonTipsView) + TextView commonTipsView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private ProcessPersonPresenterImpl handleProcessPresenter; + private List personBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private CaseNextNodePresenterImpl nextNodePresenter; + private String id; + private String title; + private String changeState; + private String taskUserId; + private String operationKey; + private List nodeDataBeans; + + @Override + protected String setTitleName() { + return title; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_todo; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + title = getIntent().getStringExtra("title"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + handleProcessPresenter = new ProcessPersonPresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.setVisibility(View.VISIBLE); + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView); + } + + //处理图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseTodoFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + + if (tag.equals("返回处理") || tag.equals("处置人员")) { + casePersonLayout.setVisibility(View.VISIBLE); + personLine.setVisibility(View.VISIBLE); + + //获取下级处置人员名单 + handleProcessPresenter.onReadyRetrofitRequest(); + } else { + casePersonLayout.setVisibility(View.GONE); + personLine.setVisibility(View.GONE); + } + } + }).build().show(); + } + } + break; + case R.id.casePersonLayout: + if (personBeans != null) { + if (personBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处置人员"); + for (ProcessPersonBean.DataBean dataBean : personBeans) { + sheetBuilder.addItem(dataBean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + caseHandlePersonView.setText(tag); + caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + taskUserId = personBeans.get(position).getId(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + if (optType.equals("处置人员") || optType.equals("返回处理")) { + //选择处理人员时,必选一个处置人员 + String handlePerson = caseHandlePersonView.getText().toString(); + if (handlePerson.equals("")) { + ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); + return; + } + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("处理意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); + break; + } + } + + @Override + public void obtainResultData(ProcessPersonBean resultBean) { + if (resultBean.isSuccess()) { + this.personBeans = resultBean.getData(); + if (personBeans.size() == 0) { + caseHandlePersonView.setText("无处置人员"); + } else { + ProcessPersonBean.DataBean dataBean = personBeans.get(0); + taskUserId = dataBean.getId(); + caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 + } + caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (handleProcessPresenter != null) { + handleProcessPresenter.disposeRetrofitRequest(); + } + if (caseHandlePresenter != null) { + caseHandlePresenter.disposeRetrofitRequest(); + } + if (nextNodePresenter != null) { + nextNodePresenter.disposeRetrofitRequest(); + } + if (audioPlayerView != null) { + audioPlayerView.release(); + } + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java index 12f5b4d..7727898 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java @@ -16,7 +16,7 @@ import com.casic.dcms.bean.PackageOrDeptBean; import com.casic.dcms.mvp.presenter.DeptProcessPresenterImpl; import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; -import com.casic.dcms.ui.DeptProcessDetailActivity; +import com.casic.dcms.ui.DeptTodoDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -125,7 +125,8 @@ fragment.adapter.setOnItemClickListener(new DeptTodoOrHandledAdapter.OnItemClickListener() { @Override public void onClick(int position) { - Intent intent = new Intent(fragment.context, DeptProcessDetailActivity.class); + Intent intent = new Intent(fragment.context, DeptTodoDetailActivity.class); + intent.putExtra("title", Constant.DEPT_PAGE_TITLES[1]); intent.putExtra("id", fragment.dataBeans.get(position).getId()); fragment.startActivity(intent); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java new file mode 100644 index 0000000..7bc167b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java @@ -0,0 +1,170 @@ +package com.casic.dcms.ui.fragment.dept; + +import android.content.Context; +import android.content.Intent; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.DeptTodoOrHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.presenter.DeptTodoPresenterImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; +import com.casic.dcms.ui.DeptTodoDetailActivity; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class DeptCaseTodoFragment extends BaseFragment implements IDeptTodoOrHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private DeptTodoPresenterImpl deptTodoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private DeptTodoOrHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_dept_case; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + deptTodoPresenter = new DeptTodoPresenterImpl(this); + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(DeptCaseTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + DeptCaseTodoFragment fragment = reference.get(); + if (msg.what == Constant.DEPT_DONE) { + fragment.isRefresh = true; + //刷新之后页码重置 + fragment.pageIndex = 1; + fragment.deptTodoPresenter.onReadyRetrofitRequest(fragment.pageIndex); + } else if (msg.what == 20210630) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (fragment.dataBeans.size() == 0) { + fragment.emptyView.show("您暂时没有待办案卷", null); + } else { + fragment.emptyView.hide(); + fragment.adapter = new DeptTodoOrHandledAdapter(fragment.context, fragment.dataBeans); + fragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(fragment.context)); + fragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(fragment.context, DividerItemDecoration.VERTICAL)); + fragment.caseRecyclerView.setAdapter(fragment.adapter); + fragment.adapter.setOnItemClickListener(new DeptTodoOrHandledAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(fragment.context, DeptTodoDetailActivity.class); + intent.putExtra("title", Constant.DEPT_PAGE_TITLES[0]); + intent.putExtra("id", fragment.dataBeans.get(position).getId()); + fragment.startActivity(intent); + } + }); + } + } + } + } + } + + @Override + public void obtainResult(PackageOrDeptBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(20210630); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (deptTodoPresenter != null) { + deptTodoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f845c47..33ad3a1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,9 +87,9 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java new file mode 100644 index 0000000..a5f4a1e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class DeptTodoModelImpl implements IDeptCaseModel { + + private OnGetCaseListListener listener; + + public DeptTodoModelImpl(OnGetCaseListListener caseListListener) { + this.listener = caseListListener; + } + + public interface OnGetCaseListListener { + void onSuccess(PackageOrDeptBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageOrDeptBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java index 4cafc10..e8c76b9 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -25,7 +25,7 @@ @Override public Subscription sendRetrofitRequest(String isShop, int offset) { - Observable observable = RetrofitServiceManager.getWorkListResult(isShop, offset); + Observable observable = RetrofitServiceManager.getPackageWorkListResult(isShop, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java new file mode 100644 index 0000000..eca4ff8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.DeptTodoModelImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; + +public class DeptTodoPresenterImpl extends BasePresenter implements IDeptCasePresenter, DeptTodoModelImpl.OnGetCaseListListener { + + private IDeptTodoOrHandledView view; + private DeptTodoModelImpl actionModel; + + public DeptTodoPresenterImpl(IDeptTodoOrHandledView deptCaseView) { + this.view = deptCaseView; + actionModel = new DeptTodoModelImpl(this); + } + + //二级待办待处理 + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageOrDeptBean resultBean) { + view.obtainResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java index 5e6fd9c..b11a51a 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java @@ -96,7 +96,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[1]; + return Constant.DEPT_PAGE_TITLES[3]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java index de47420..030843e 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[2]; + return Constant.DEPT_PAGE_TITLES[4]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index 3de76c2..d47aa72 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -17,6 +17,7 @@ import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; import com.casic.dcms.ui.fragment.dept.DeptCasePostponeFragment; import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -57,10 +58,11 @@ @Override public void initData() { List fragmentList = new ArrayList<>(); + fragmentList.add(new DeptCaseTodoFragment());//待办任务 fragmentList.add(new DeptCaseProcessFragment());//待处理 + fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 - fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); diff --git a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java deleted file mode 100644 index c751109..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java +++ /dev/null @@ -1,440 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageRecycleViewAdapter; -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.bean.ProcessPersonBean; -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.ProcessPersonPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IHandleProcessView; -import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; -import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class DeptProcessDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { - - private Context context = DeptProcessDetailActivity.this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseResourceView) - TextView caseResourceView; - @BindView(R.id.caseCreatorView) - TextView caseCreatorView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicRecyclerView) - RecyclerView casePicRecyclerView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseHandleRecyclerView) - RecyclerView caseHandleRecyclerView; - @BindView(R.id.optTypeView) - TextView optTypeView; - @BindView(R.id.casePersonLayout) - RelativeLayout casePersonLayout; - @BindView(R.id.personLine) - View personLine; - @BindView(R.id.caseHandlePersonView) - TextView caseHandlePersonView; - @BindView(R.id.optionEditView) - EditText optionEditView; - @BindView(R.id.commonTipsView) - TextView commonTipsView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ProcessPersonPresenterImpl handleProcessPresenter; - private List personBeans; - private CaseHandlePresenterImpl caseHandlePresenter; - private CaseNextNodePresenterImpl nextNodePresenter; - private String id; - private String changeState; - private String taskUserId; - private String operationKey; - private List nodeDataBeans; - - @Override - protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[0]; - } - - @Override - public int initLayoutView() { - return R.layout.activity_dept_process; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - nextNodePresenter = new CaseNextNodePresenterImpl(this); - handleProcessPresenter = new ProcessPersonPresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseResourceView.setText(data.getSourceName()); - caseCreatorView.setText(data.getCreateUserName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); - casePicRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); - caseHandleRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - //获取处置类型 - nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "处理中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); - DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("caseType", data.getEorcName()); - String dataLng = data.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = data.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - startActivity(intent); - break; - case R.id.caseOptTypeLayout: - if (nodeDataBeans != null) { - if (nodeDataBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("操作类型"); - for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { - 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(); - optTypeView.setText(tag); - optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); - changeState = String.valueOf(nodeBean.getNextState()); - operationKey = nodeBean.getOperationKey(); - - if (tag.equals("处置人员")) { - casePersonLayout.setVisibility(View.VISIBLE); - personLine.setVisibility(View.VISIBLE); - - //获取下级处置人员名单 - handleProcessPresenter.onReadyRetrofitRequest(); - } else { - casePersonLayout.setVisibility(View.GONE); - personLine.setVisibility(View.GONE); - } - } - }).build().show(); - } - } - break; - case R.id.casePersonLayout: - if (personBeans != null) { - if (personBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处置人员"); - for (ProcessPersonBean.DataBean dataBean : personBeans) { - sheetBuilder.addItem(dataBean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - caseHandlePersonView.setText(tag); - caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - taskUserId = personBeans.get(position).getId(); - } - }).build().show(); - } - } - break; - case R.id.commonTipsLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("常见用语") - .addItem("请及时处理") - .addItem("调查后及时回复") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - commonTipsView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - optionEditView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String optType = optTypeView.getText().toString(); - if (optType.equals("")) { - ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); - return; - } - if (optType.equals("处置人员")) { - //选择处理人员时,必选一个处置人员 - String handlePerson = caseHandlePersonView.getText().toString(); - if (handlePerson.equals("")) { - ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); - return; - } - } - String optionInput = StringHelper.filterString(optionEditView.getText().toString()); - if (optType.equals("申请调整") || optType.equals("申请延期") || optType.equals("申请缓办")) { - if (TextUtils.isEmpty(optionInput)) { - ToastHelper.showToast("调整/延期/缓办的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); - } - - @Override - public void obtainResultData(ProcessPersonBean resultBean) { - if (resultBean.isSuccess()) { - this.personBeans = resultBean.getData(); - if (personBeans.size() == 0) { - caseHandlePersonView.setText("无处置人员"); - } else { - ProcessPersonBean.DataBean dataBean = personBeans.get(0); - taskUserId = dataBean.getId(); - caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 - } - caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - this.nodeDataBeans = resultBean.getData(); - if (nodeDataBeans.size() == 0) { - optTypeView.setText("无下级流转节点"); - } else { - CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); - - operationKey = dataBean.getOperationKey(); - changeState = String.valueOf(dataBean.getNextState()); - optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 - } - optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (handleProcessPresenter != null) { - handleProcessPresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (nextNodePresenter != null) { - nextNodePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java new file mode 100644 index 0000000..e4df2b6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java @@ -0,0 +1,438 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +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.bean.ProcessPersonBean; +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.ProcessPersonPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailHandleView; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.ICaseNextNodeView; +import com.casic.dcms.mvp.view.IHandleProcessView; +import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.JzExoMedia; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.widgets.AudioPlayerView; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +public class DeptTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { + + private Context context = this; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseResourceView) + TextView caseResourceView; + @BindView(R.id.caseCreatorView) + TextView caseCreatorView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.audioPlayerView) + AudioPlayerView audioPlayerView; + @BindView(R.id.videoPlayerView) + JzvdStd videoPlayerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.optTypeView) + TextView optTypeView; + @BindView(R.id.casePersonLayout) + RelativeLayout casePersonLayout; + @BindView(R.id.personLine) + View personLine; + @BindView(R.id.caseHandlePersonView) + TextView caseHandlePersonView; + @BindView(R.id.optionEditView) + EditText optionEditView; + @BindView(R.id.commonTipsView) + TextView commonTipsView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private ProcessPersonPresenterImpl handleProcessPresenter; + private List personBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private CaseNextNodePresenterImpl nextNodePresenter; + private String id; + private String title; + private String changeState; + private String taskUserId; + private String operationKey; + private List nodeDataBeans; + + @Override + protected String setTitleName() { + return title; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_todo; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + title = getIntent().getStringExtra("title"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + handleProcessPresenter = new ProcessPersonPresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.setVisibility(View.VISIBLE); + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView); + } + + //处理图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseTodoFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + + if (tag.equals("返回处理") || tag.equals("处置人员")) { + casePersonLayout.setVisibility(View.VISIBLE); + personLine.setVisibility(View.VISIBLE); + + //获取下级处置人员名单 + handleProcessPresenter.onReadyRetrofitRequest(); + } else { + casePersonLayout.setVisibility(View.GONE); + personLine.setVisibility(View.GONE); + } + } + }).build().show(); + } + } + break; + case R.id.casePersonLayout: + if (personBeans != null) { + if (personBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处置人员"); + for (ProcessPersonBean.DataBean dataBean : personBeans) { + sheetBuilder.addItem(dataBean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + caseHandlePersonView.setText(tag); + caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + taskUserId = personBeans.get(position).getId(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + if (optType.equals("处置人员") || optType.equals("返回处理")) { + //选择处理人员时,必选一个处置人员 + String handlePerson = caseHandlePersonView.getText().toString(); + if (handlePerson.equals("")) { + ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); + return; + } + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("处理意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); + break; + } + } + + @Override + public void obtainResultData(ProcessPersonBean resultBean) { + if (resultBean.isSuccess()) { + this.personBeans = resultBean.getData(); + if (personBeans.size() == 0) { + caseHandlePersonView.setText("无处置人员"); + } else { + ProcessPersonBean.DataBean dataBean = personBeans.get(0); + taskUserId = dataBean.getId(); + caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 + } + caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (handleProcessPresenter != null) { + handleProcessPresenter.disposeRetrofitRequest(); + } + if (caseHandlePresenter != null) { + caseHandlePresenter.disposeRetrofitRequest(); + } + if (nextNodePresenter != null) { + nextNodePresenter.disposeRetrofitRequest(); + } + if (audioPlayerView != null) { + audioPlayerView.release(); + } + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java index 12f5b4d..7727898 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java @@ -16,7 +16,7 @@ import com.casic.dcms.bean.PackageOrDeptBean; import com.casic.dcms.mvp.presenter.DeptProcessPresenterImpl; import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; -import com.casic.dcms.ui.DeptProcessDetailActivity; +import com.casic.dcms.ui.DeptTodoDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -125,7 +125,8 @@ fragment.adapter.setOnItemClickListener(new DeptTodoOrHandledAdapter.OnItemClickListener() { @Override public void onClick(int position) { - Intent intent = new Intent(fragment.context, DeptProcessDetailActivity.class); + Intent intent = new Intent(fragment.context, DeptTodoDetailActivity.class); + intent.putExtra("title", Constant.DEPT_PAGE_TITLES[1]); intent.putExtra("id", fragment.dataBeans.get(position).getId()); fragment.startActivity(intent); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java new file mode 100644 index 0000000..7bc167b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java @@ -0,0 +1,170 @@ +package com.casic.dcms.ui.fragment.dept; + +import android.content.Context; +import android.content.Intent; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.DeptTodoOrHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.presenter.DeptTodoPresenterImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; +import com.casic.dcms.ui.DeptTodoDetailActivity; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class DeptCaseTodoFragment extends BaseFragment implements IDeptTodoOrHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private DeptTodoPresenterImpl deptTodoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private DeptTodoOrHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_dept_case; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + deptTodoPresenter = new DeptTodoPresenterImpl(this); + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(DeptCaseTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + DeptCaseTodoFragment fragment = reference.get(); + if (msg.what == Constant.DEPT_DONE) { + fragment.isRefresh = true; + //刷新之后页码重置 + fragment.pageIndex = 1; + fragment.deptTodoPresenter.onReadyRetrofitRequest(fragment.pageIndex); + } else if (msg.what == 20210630) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (fragment.dataBeans.size() == 0) { + fragment.emptyView.show("您暂时没有待办案卷", null); + } else { + fragment.emptyView.hide(); + fragment.adapter = new DeptTodoOrHandledAdapter(fragment.context, fragment.dataBeans); + fragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(fragment.context)); + fragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(fragment.context, DividerItemDecoration.VERTICAL)); + fragment.caseRecyclerView.setAdapter(fragment.adapter); + fragment.adapter.setOnItemClickListener(new DeptTodoOrHandledAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(fragment.context, DeptTodoDetailActivity.class); + intent.putExtra("title", Constant.DEPT_PAGE_TITLES[0]); + intent.putExtra("id", fragment.dataBeans.get(position).getId()); + fragment.startActivity(intent); + } + }); + } + } + } + } + } + + @Override + public void obtainResult(PackageOrDeptBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(20210630); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (deptTodoPresenter != null) { + deptTodoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index e8cd7d5..d207d3d 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -15,7 +15,7 @@ Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CALL_PHONE, Manifest.permission.READ_PHONE_STATE}; public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; - public static final String[] DEPT_PAGE_TITLES = {"待处理", "部门调整批示", "部门授权审核", "已办案卷", "二级缓办待处理", "二级延期待处理"}; + public static final String[] DEPT_PAGE_TITLES = {"待办任务", "待处理", "已办案卷", "部门调整批示", "部门授权审核", "二级缓办待处理", "二级延期待处理"}; public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final String[] SPINNER_ITEMS = {"请选择", "已处理", "无需处理"}; public static final String[] POPUP_LIST_ITEMS = {"一键消警", "报警分布", "窨井列表"}; diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f845c47..33ad3a1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,9 +87,9 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java new file mode 100644 index 0000000..a5f4a1e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class DeptTodoModelImpl implements IDeptCaseModel { + + private OnGetCaseListListener listener; + + public DeptTodoModelImpl(OnGetCaseListListener caseListListener) { + this.listener = caseListListener; + } + + public interface OnGetCaseListListener { + void onSuccess(PackageOrDeptBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageOrDeptBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java index 4cafc10..e8c76b9 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -25,7 +25,7 @@ @Override public Subscription sendRetrofitRequest(String isShop, int offset) { - Observable observable = RetrofitServiceManager.getWorkListResult(isShop, offset); + Observable observable = RetrofitServiceManager.getPackageWorkListResult(isShop, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java new file mode 100644 index 0000000..eca4ff8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.DeptTodoModelImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; + +public class DeptTodoPresenterImpl extends BasePresenter implements IDeptCasePresenter, DeptTodoModelImpl.OnGetCaseListListener { + + private IDeptTodoOrHandledView view; + private DeptTodoModelImpl actionModel; + + public DeptTodoPresenterImpl(IDeptTodoOrHandledView deptCaseView) { + this.view = deptCaseView; + actionModel = new DeptTodoModelImpl(this); + } + + //二级待办待处理 + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageOrDeptBean resultBean) { + view.obtainResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java index 5e6fd9c..b11a51a 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java @@ -96,7 +96,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[1]; + return Constant.DEPT_PAGE_TITLES[3]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java index de47420..030843e 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[2]; + return Constant.DEPT_PAGE_TITLES[4]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index 3de76c2..d47aa72 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -17,6 +17,7 @@ import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; import com.casic.dcms.ui.fragment.dept.DeptCasePostponeFragment; import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -57,10 +58,11 @@ @Override public void initData() { List fragmentList = new ArrayList<>(); + fragmentList.add(new DeptCaseTodoFragment());//待办任务 fragmentList.add(new DeptCaseProcessFragment());//待处理 + fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 - fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); diff --git a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java deleted file mode 100644 index c751109..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java +++ /dev/null @@ -1,440 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageRecycleViewAdapter; -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.bean.ProcessPersonBean; -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.ProcessPersonPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IHandleProcessView; -import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; -import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class DeptProcessDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { - - private Context context = DeptProcessDetailActivity.this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseResourceView) - TextView caseResourceView; - @BindView(R.id.caseCreatorView) - TextView caseCreatorView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicRecyclerView) - RecyclerView casePicRecyclerView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseHandleRecyclerView) - RecyclerView caseHandleRecyclerView; - @BindView(R.id.optTypeView) - TextView optTypeView; - @BindView(R.id.casePersonLayout) - RelativeLayout casePersonLayout; - @BindView(R.id.personLine) - View personLine; - @BindView(R.id.caseHandlePersonView) - TextView caseHandlePersonView; - @BindView(R.id.optionEditView) - EditText optionEditView; - @BindView(R.id.commonTipsView) - TextView commonTipsView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ProcessPersonPresenterImpl handleProcessPresenter; - private List personBeans; - private CaseHandlePresenterImpl caseHandlePresenter; - private CaseNextNodePresenterImpl nextNodePresenter; - private String id; - private String changeState; - private String taskUserId; - private String operationKey; - private List nodeDataBeans; - - @Override - protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[0]; - } - - @Override - public int initLayoutView() { - return R.layout.activity_dept_process; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - nextNodePresenter = new CaseNextNodePresenterImpl(this); - handleProcessPresenter = new ProcessPersonPresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseResourceView.setText(data.getSourceName()); - caseCreatorView.setText(data.getCreateUserName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); - casePicRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); - caseHandleRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - //获取处置类型 - nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "处理中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); - DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("caseType", data.getEorcName()); - String dataLng = data.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = data.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - startActivity(intent); - break; - case R.id.caseOptTypeLayout: - if (nodeDataBeans != null) { - if (nodeDataBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("操作类型"); - for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { - 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(); - optTypeView.setText(tag); - optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); - changeState = String.valueOf(nodeBean.getNextState()); - operationKey = nodeBean.getOperationKey(); - - if (tag.equals("处置人员")) { - casePersonLayout.setVisibility(View.VISIBLE); - personLine.setVisibility(View.VISIBLE); - - //获取下级处置人员名单 - handleProcessPresenter.onReadyRetrofitRequest(); - } else { - casePersonLayout.setVisibility(View.GONE); - personLine.setVisibility(View.GONE); - } - } - }).build().show(); - } - } - break; - case R.id.casePersonLayout: - if (personBeans != null) { - if (personBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处置人员"); - for (ProcessPersonBean.DataBean dataBean : personBeans) { - sheetBuilder.addItem(dataBean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - caseHandlePersonView.setText(tag); - caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - taskUserId = personBeans.get(position).getId(); - } - }).build().show(); - } - } - break; - case R.id.commonTipsLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("常见用语") - .addItem("请及时处理") - .addItem("调查后及时回复") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - commonTipsView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - optionEditView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String optType = optTypeView.getText().toString(); - if (optType.equals("")) { - ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); - return; - } - if (optType.equals("处置人员")) { - //选择处理人员时,必选一个处置人员 - String handlePerson = caseHandlePersonView.getText().toString(); - if (handlePerson.equals("")) { - ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); - return; - } - } - String optionInput = StringHelper.filterString(optionEditView.getText().toString()); - if (optType.equals("申请调整") || optType.equals("申请延期") || optType.equals("申请缓办")) { - if (TextUtils.isEmpty(optionInput)) { - ToastHelper.showToast("调整/延期/缓办的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); - } - - @Override - public void obtainResultData(ProcessPersonBean resultBean) { - if (resultBean.isSuccess()) { - this.personBeans = resultBean.getData(); - if (personBeans.size() == 0) { - caseHandlePersonView.setText("无处置人员"); - } else { - ProcessPersonBean.DataBean dataBean = personBeans.get(0); - taskUserId = dataBean.getId(); - caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 - } - caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - this.nodeDataBeans = resultBean.getData(); - if (nodeDataBeans.size() == 0) { - optTypeView.setText("无下级流转节点"); - } else { - CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); - - operationKey = dataBean.getOperationKey(); - changeState = String.valueOf(dataBean.getNextState()); - optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 - } - optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (handleProcessPresenter != null) { - handleProcessPresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (nextNodePresenter != null) { - nextNodePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java new file mode 100644 index 0000000..e4df2b6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java @@ -0,0 +1,438 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +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.bean.ProcessPersonBean; +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.ProcessPersonPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailHandleView; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.ICaseNextNodeView; +import com.casic.dcms.mvp.view.IHandleProcessView; +import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.JzExoMedia; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.widgets.AudioPlayerView; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +public class DeptTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { + + private Context context = this; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseResourceView) + TextView caseResourceView; + @BindView(R.id.caseCreatorView) + TextView caseCreatorView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.audioPlayerView) + AudioPlayerView audioPlayerView; + @BindView(R.id.videoPlayerView) + JzvdStd videoPlayerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.optTypeView) + TextView optTypeView; + @BindView(R.id.casePersonLayout) + RelativeLayout casePersonLayout; + @BindView(R.id.personLine) + View personLine; + @BindView(R.id.caseHandlePersonView) + TextView caseHandlePersonView; + @BindView(R.id.optionEditView) + EditText optionEditView; + @BindView(R.id.commonTipsView) + TextView commonTipsView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private ProcessPersonPresenterImpl handleProcessPresenter; + private List personBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private CaseNextNodePresenterImpl nextNodePresenter; + private String id; + private String title; + private String changeState; + private String taskUserId; + private String operationKey; + private List nodeDataBeans; + + @Override + protected String setTitleName() { + return title; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_todo; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + title = getIntent().getStringExtra("title"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + handleProcessPresenter = new ProcessPersonPresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.setVisibility(View.VISIBLE); + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView); + } + + //处理图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseTodoFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + + if (tag.equals("返回处理") || tag.equals("处置人员")) { + casePersonLayout.setVisibility(View.VISIBLE); + personLine.setVisibility(View.VISIBLE); + + //获取下级处置人员名单 + handleProcessPresenter.onReadyRetrofitRequest(); + } else { + casePersonLayout.setVisibility(View.GONE); + personLine.setVisibility(View.GONE); + } + } + }).build().show(); + } + } + break; + case R.id.casePersonLayout: + if (personBeans != null) { + if (personBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处置人员"); + for (ProcessPersonBean.DataBean dataBean : personBeans) { + sheetBuilder.addItem(dataBean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + caseHandlePersonView.setText(tag); + caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + taskUserId = personBeans.get(position).getId(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + if (optType.equals("处置人员") || optType.equals("返回处理")) { + //选择处理人员时,必选一个处置人员 + String handlePerson = caseHandlePersonView.getText().toString(); + if (handlePerson.equals("")) { + ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); + return; + } + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("处理意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); + break; + } + } + + @Override + public void obtainResultData(ProcessPersonBean resultBean) { + if (resultBean.isSuccess()) { + this.personBeans = resultBean.getData(); + if (personBeans.size() == 0) { + caseHandlePersonView.setText("无处置人员"); + } else { + ProcessPersonBean.DataBean dataBean = personBeans.get(0); + taskUserId = dataBean.getId(); + caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 + } + caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (handleProcessPresenter != null) { + handleProcessPresenter.disposeRetrofitRequest(); + } + if (caseHandlePresenter != null) { + caseHandlePresenter.disposeRetrofitRequest(); + } + if (nextNodePresenter != null) { + nextNodePresenter.disposeRetrofitRequest(); + } + if (audioPlayerView != null) { + audioPlayerView.release(); + } + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java index 12f5b4d..7727898 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java @@ -16,7 +16,7 @@ import com.casic.dcms.bean.PackageOrDeptBean; import com.casic.dcms.mvp.presenter.DeptProcessPresenterImpl; import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; -import com.casic.dcms.ui.DeptProcessDetailActivity; +import com.casic.dcms.ui.DeptTodoDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -125,7 +125,8 @@ fragment.adapter.setOnItemClickListener(new DeptTodoOrHandledAdapter.OnItemClickListener() { @Override public void onClick(int position) { - Intent intent = new Intent(fragment.context, DeptProcessDetailActivity.class); + Intent intent = new Intent(fragment.context, DeptTodoDetailActivity.class); + intent.putExtra("title", Constant.DEPT_PAGE_TITLES[1]); intent.putExtra("id", fragment.dataBeans.get(position).getId()); fragment.startActivity(intent); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java new file mode 100644 index 0000000..7bc167b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java @@ -0,0 +1,170 @@ +package com.casic.dcms.ui.fragment.dept; + +import android.content.Context; +import android.content.Intent; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.DeptTodoOrHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.presenter.DeptTodoPresenterImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; +import com.casic.dcms.ui.DeptTodoDetailActivity; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class DeptCaseTodoFragment extends BaseFragment implements IDeptTodoOrHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private DeptTodoPresenterImpl deptTodoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private DeptTodoOrHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_dept_case; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + deptTodoPresenter = new DeptTodoPresenterImpl(this); + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(DeptCaseTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + DeptCaseTodoFragment fragment = reference.get(); + if (msg.what == Constant.DEPT_DONE) { + fragment.isRefresh = true; + //刷新之后页码重置 + fragment.pageIndex = 1; + fragment.deptTodoPresenter.onReadyRetrofitRequest(fragment.pageIndex); + } else if (msg.what == 20210630) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (fragment.dataBeans.size() == 0) { + fragment.emptyView.show("您暂时没有待办案卷", null); + } else { + fragment.emptyView.hide(); + fragment.adapter = new DeptTodoOrHandledAdapter(fragment.context, fragment.dataBeans); + fragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(fragment.context)); + fragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(fragment.context, DividerItemDecoration.VERTICAL)); + fragment.caseRecyclerView.setAdapter(fragment.adapter); + fragment.adapter.setOnItemClickListener(new DeptTodoOrHandledAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(fragment.context, DeptTodoDetailActivity.class); + intent.putExtra("title", Constant.DEPT_PAGE_TITLES[0]); + intent.putExtra("id", fragment.dataBeans.get(position).getId()); + fragment.startActivity(intent); + } + }); + } + } + } + } + } + + @Override + public void obtainResult(PackageOrDeptBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(20210630); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (deptTodoPresenter != null) { + deptTodoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index e8cd7d5..d207d3d 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -15,7 +15,7 @@ Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CALL_PHONE, Manifest.permission.READ_PHONE_STATE}; public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; - public static final String[] DEPT_PAGE_TITLES = {"待处理", "部门调整批示", "部门授权审核", "已办案卷", "二级缓办待处理", "二级延期待处理"}; + public static final String[] DEPT_PAGE_TITLES = {"待办任务", "待处理", "已办案卷", "部门调整批示", "部门授权审核", "二级缓办待处理", "二级延期待处理"}; public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final String[] SPINNER_ITEMS = {"请选择", "已处理", "无需处理"}; public static final String[] POPUP_LIST_ITEMS = {"一键消警", "报警分布", "窨井列表"}; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 6c69999..63abb77 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.os.Environment; import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; @@ -30,7 +31,6 @@ private static File audioDir; private static File imageDir; private static File waterImageDir; - private static File downloadDir; private static File videoDir; private static int index = 1; @@ -64,13 +64,6 @@ Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹"); } } - downloadDir = new File(parentDir, "DownloadFile"); - if (!downloadDir.exists()) { - boolean mkDownDir = downloadDir.mkdir(); - if (mkDownDir) { - Log.d(TAG, "initFileConfig: 创建DownloadFile文件夹"); - } - } videoDir = new File(parentDir, "CompressVideoFile"); if (!videoDir.exists()) { boolean mkVideoDir = videoDir.mkdir(); @@ -163,20 +156,11 @@ //储存下载文件的目录 private static String getDownloadFilePath() { - if (downloadDir == null) { - File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic"); - if (!parentDir.exists()) { - boolean mkdir = parentDir.mkdir(); - if (mkdir) { - Log.d(TAG, "getDownloadFilePath: 创建Casic文件夹"); - } - } - downloadDir = new File(parentDir, "DownloadFile"); - if (!downloadDir.exists()) { - boolean mkDownDir = downloadDir.mkdir(); - if (mkDownDir) { - Log.d(TAG, "getDownloadFilePath: 创建DownloadFile文件夹"); - } + File downloadDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), ""); + if (!downloadDir.exists()) { + boolean mkdir = downloadDir.mkdir(); + if (mkdir) { + Log.d(TAG, "getDownloadFilePath: 创建文件夹"); } } return downloadDir.toString(); diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f845c47..33ad3a1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,9 +87,9 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java new file mode 100644 index 0000000..a5f4a1e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class DeptTodoModelImpl implements IDeptCaseModel { + + private OnGetCaseListListener listener; + + public DeptTodoModelImpl(OnGetCaseListListener caseListListener) { + this.listener = caseListListener; + } + + public interface OnGetCaseListListener { + void onSuccess(PackageOrDeptBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageOrDeptBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java index 4cafc10..e8c76b9 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -25,7 +25,7 @@ @Override public Subscription sendRetrofitRequest(String isShop, int offset) { - Observable observable = RetrofitServiceManager.getWorkListResult(isShop, offset); + Observable observable = RetrofitServiceManager.getPackageWorkListResult(isShop, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java new file mode 100644 index 0000000..eca4ff8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.DeptTodoModelImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; + +public class DeptTodoPresenterImpl extends BasePresenter implements IDeptCasePresenter, DeptTodoModelImpl.OnGetCaseListListener { + + private IDeptTodoOrHandledView view; + private DeptTodoModelImpl actionModel; + + public DeptTodoPresenterImpl(IDeptTodoOrHandledView deptCaseView) { + this.view = deptCaseView; + actionModel = new DeptTodoModelImpl(this); + } + + //二级待办待处理 + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageOrDeptBean resultBean) { + view.obtainResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java index 5e6fd9c..b11a51a 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java @@ -96,7 +96,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[1]; + return Constant.DEPT_PAGE_TITLES[3]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java index de47420..030843e 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[2]; + return Constant.DEPT_PAGE_TITLES[4]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index 3de76c2..d47aa72 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -17,6 +17,7 @@ import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; import com.casic.dcms.ui.fragment.dept.DeptCasePostponeFragment; import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -57,10 +58,11 @@ @Override public void initData() { List fragmentList = new ArrayList<>(); + fragmentList.add(new DeptCaseTodoFragment());//待办任务 fragmentList.add(new DeptCaseProcessFragment());//待处理 + fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 - fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); diff --git a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java deleted file mode 100644 index c751109..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java +++ /dev/null @@ -1,440 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageRecycleViewAdapter; -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.bean.ProcessPersonBean; -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.ProcessPersonPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IHandleProcessView; -import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; -import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class DeptProcessDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { - - private Context context = DeptProcessDetailActivity.this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseResourceView) - TextView caseResourceView; - @BindView(R.id.caseCreatorView) - TextView caseCreatorView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicRecyclerView) - RecyclerView casePicRecyclerView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseHandleRecyclerView) - RecyclerView caseHandleRecyclerView; - @BindView(R.id.optTypeView) - TextView optTypeView; - @BindView(R.id.casePersonLayout) - RelativeLayout casePersonLayout; - @BindView(R.id.personLine) - View personLine; - @BindView(R.id.caseHandlePersonView) - TextView caseHandlePersonView; - @BindView(R.id.optionEditView) - EditText optionEditView; - @BindView(R.id.commonTipsView) - TextView commonTipsView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ProcessPersonPresenterImpl handleProcessPresenter; - private List personBeans; - private CaseHandlePresenterImpl caseHandlePresenter; - private CaseNextNodePresenterImpl nextNodePresenter; - private String id; - private String changeState; - private String taskUserId; - private String operationKey; - private List nodeDataBeans; - - @Override - protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[0]; - } - - @Override - public int initLayoutView() { - return R.layout.activity_dept_process; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - nextNodePresenter = new CaseNextNodePresenterImpl(this); - handleProcessPresenter = new ProcessPersonPresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseResourceView.setText(data.getSourceName()); - caseCreatorView.setText(data.getCreateUserName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); - casePicRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); - caseHandleRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - //获取处置类型 - nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "处理中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); - DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("caseType", data.getEorcName()); - String dataLng = data.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = data.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - startActivity(intent); - break; - case R.id.caseOptTypeLayout: - if (nodeDataBeans != null) { - if (nodeDataBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("操作类型"); - for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { - 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(); - optTypeView.setText(tag); - optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); - changeState = String.valueOf(nodeBean.getNextState()); - operationKey = nodeBean.getOperationKey(); - - if (tag.equals("处置人员")) { - casePersonLayout.setVisibility(View.VISIBLE); - personLine.setVisibility(View.VISIBLE); - - //获取下级处置人员名单 - handleProcessPresenter.onReadyRetrofitRequest(); - } else { - casePersonLayout.setVisibility(View.GONE); - personLine.setVisibility(View.GONE); - } - } - }).build().show(); - } - } - break; - case R.id.casePersonLayout: - if (personBeans != null) { - if (personBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处置人员"); - for (ProcessPersonBean.DataBean dataBean : personBeans) { - sheetBuilder.addItem(dataBean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - caseHandlePersonView.setText(tag); - caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - taskUserId = personBeans.get(position).getId(); - } - }).build().show(); - } - } - break; - case R.id.commonTipsLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("常见用语") - .addItem("请及时处理") - .addItem("调查后及时回复") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - commonTipsView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - optionEditView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String optType = optTypeView.getText().toString(); - if (optType.equals("")) { - ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); - return; - } - if (optType.equals("处置人员")) { - //选择处理人员时,必选一个处置人员 - String handlePerson = caseHandlePersonView.getText().toString(); - if (handlePerson.equals("")) { - ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); - return; - } - } - String optionInput = StringHelper.filterString(optionEditView.getText().toString()); - if (optType.equals("申请调整") || optType.equals("申请延期") || optType.equals("申请缓办")) { - if (TextUtils.isEmpty(optionInput)) { - ToastHelper.showToast("调整/延期/缓办的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); - } - - @Override - public void obtainResultData(ProcessPersonBean resultBean) { - if (resultBean.isSuccess()) { - this.personBeans = resultBean.getData(); - if (personBeans.size() == 0) { - caseHandlePersonView.setText("无处置人员"); - } else { - ProcessPersonBean.DataBean dataBean = personBeans.get(0); - taskUserId = dataBean.getId(); - caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 - } - caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - this.nodeDataBeans = resultBean.getData(); - if (nodeDataBeans.size() == 0) { - optTypeView.setText("无下级流转节点"); - } else { - CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); - - operationKey = dataBean.getOperationKey(); - changeState = String.valueOf(dataBean.getNextState()); - optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 - } - optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (handleProcessPresenter != null) { - handleProcessPresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (nextNodePresenter != null) { - nextNodePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java new file mode 100644 index 0000000..e4df2b6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java @@ -0,0 +1,438 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +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.bean.ProcessPersonBean; +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.ProcessPersonPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailHandleView; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.ICaseNextNodeView; +import com.casic.dcms.mvp.view.IHandleProcessView; +import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.JzExoMedia; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.widgets.AudioPlayerView; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +public class DeptTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { + + private Context context = this; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseResourceView) + TextView caseResourceView; + @BindView(R.id.caseCreatorView) + TextView caseCreatorView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.audioPlayerView) + AudioPlayerView audioPlayerView; + @BindView(R.id.videoPlayerView) + JzvdStd videoPlayerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.optTypeView) + TextView optTypeView; + @BindView(R.id.casePersonLayout) + RelativeLayout casePersonLayout; + @BindView(R.id.personLine) + View personLine; + @BindView(R.id.caseHandlePersonView) + TextView caseHandlePersonView; + @BindView(R.id.optionEditView) + EditText optionEditView; + @BindView(R.id.commonTipsView) + TextView commonTipsView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private ProcessPersonPresenterImpl handleProcessPresenter; + private List personBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private CaseNextNodePresenterImpl nextNodePresenter; + private String id; + private String title; + private String changeState; + private String taskUserId; + private String operationKey; + private List nodeDataBeans; + + @Override + protected String setTitleName() { + return title; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_todo; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + title = getIntent().getStringExtra("title"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + handleProcessPresenter = new ProcessPersonPresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.setVisibility(View.VISIBLE); + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView); + } + + //处理图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseTodoFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + + if (tag.equals("返回处理") || tag.equals("处置人员")) { + casePersonLayout.setVisibility(View.VISIBLE); + personLine.setVisibility(View.VISIBLE); + + //获取下级处置人员名单 + handleProcessPresenter.onReadyRetrofitRequest(); + } else { + casePersonLayout.setVisibility(View.GONE); + personLine.setVisibility(View.GONE); + } + } + }).build().show(); + } + } + break; + case R.id.casePersonLayout: + if (personBeans != null) { + if (personBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处置人员"); + for (ProcessPersonBean.DataBean dataBean : personBeans) { + sheetBuilder.addItem(dataBean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + caseHandlePersonView.setText(tag); + caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + taskUserId = personBeans.get(position).getId(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + if (optType.equals("处置人员") || optType.equals("返回处理")) { + //选择处理人员时,必选一个处置人员 + String handlePerson = caseHandlePersonView.getText().toString(); + if (handlePerson.equals("")) { + ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); + return; + } + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("处理意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); + break; + } + } + + @Override + public void obtainResultData(ProcessPersonBean resultBean) { + if (resultBean.isSuccess()) { + this.personBeans = resultBean.getData(); + if (personBeans.size() == 0) { + caseHandlePersonView.setText("无处置人员"); + } else { + ProcessPersonBean.DataBean dataBean = personBeans.get(0); + taskUserId = dataBean.getId(); + caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 + } + caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (handleProcessPresenter != null) { + handleProcessPresenter.disposeRetrofitRequest(); + } + if (caseHandlePresenter != null) { + caseHandlePresenter.disposeRetrofitRequest(); + } + if (nextNodePresenter != null) { + nextNodePresenter.disposeRetrofitRequest(); + } + if (audioPlayerView != null) { + audioPlayerView.release(); + } + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java index 12f5b4d..7727898 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java @@ -16,7 +16,7 @@ import com.casic.dcms.bean.PackageOrDeptBean; import com.casic.dcms.mvp.presenter.DeptProcessPresenterImpl; import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; -import com.casic.dcms.ui.DeptProcessDetailActivity; +import com.casic.dcms.ui.DeptTodoDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -125,7 +125,8 @@ fragment.adapter.setOnItemClickListener(new DeptTodoOrHandledAdapter.OnItemClickListener() { @Override public void onClick(int position) { - Intent intent = new Intent(fragment.context, DeptProcessDetailActivity.class); + Intent intent = new Intent(fragment.context, DeptTodoDetailActivity.class); + intent.putExtra("title", Constant.DEPT_PAGE_TITLES[1]); intent.putExtra("id", fragment.dataBeans.get(position).getId()); fragment.startActivity(intent); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java new file mode 100644 index 0000000..7bc167b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java @@ -0,0 +1,170 @@ +package com.casic.dcms.ui.fragment.dept; + +import android.content.Context; +import android.content.Intent; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.DeptTodoOrHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.presenter.DeptTodoPresenterImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; +import com.casic.dcms.ui.DeptTodoDetailActivity; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class DeptCaseTodoFragment extends BaseFragment implements IDeptTodoOrHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private DeptTodoPresenterImpl deptTodoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private DeptTodoOrHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_dept_case; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + deptTodoPresenter = new DeptTodoPresenterImpl(this); + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(DeptCaseTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + DeptCaseTodoFragment fragment = reference.get(); + if (msg.what == Constant.DEPT_DONE) { + fragment.isRefresh = true; + //刷新之后页码重置 + fragment.pageIndex = 1; + fragment.deptTodoPresenter.onReadyRetrofitRequest(fragment.pageIndex); + } else if (msg.what == 20210630) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (fragment.dataBeans.size() == 0) { + fragment.emptyView.show("您暂时没有待办案卷", null); + } else { + fragment.emptyView.hide(); + fragment.adapter = new DeptTodoOrHandledAdapter(fragment.context, fragment.dataBeans); + fragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(fragment.context)); + fragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(fragment.context, DividerItemDecoration.VERTICAL)); + fragment.caseRecyclerView.setAdapter(fragment.adapter); + fragment.adapter.setOnItemClickListener(new DeptTodoOrHandledAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(fragment.context, DeptTodoDetailActivity.class); + intent.putExtra("title", Constant.DEPT_PAGE_TITLES[0]); + intent.putExtra("id", fragment.dataBeans.get(position).getId()); + fragment.startActivity(intent); + } + }); + } + } + } + } + } + + @Override + public void obtainResult(PackageOrDeptBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(20210630); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (deptTodoPresenter != null) { + deptTodoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index e8cd7d5..d207d3d 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -15,7 +15,7 @@ Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CALL_PHONE, Manifest.permission.READ_PHONE_STATE}; public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; - public static final String[] DEPT_PAGE_TITLES = {"待处理", "部门调整批示", "部门授权审核", "已办案卷", "二级缓办待处理", "二级延期待处理"}; + public static final String[] DEPT_PAGE_TITLES = {"待办任务", "待处理", "已办案卷", "部门调整批示", "部门授权审核", "二级缓办待处理", "二级延期待处理"}; public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final String[] SPINNER_ITEMS = {"请选择", "已处理", "无需处理"}; public static final String[] POPUP_LIST_ITEMS = {"一键消警", "报警分布", "窨井列表"}; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 6c69999..63abb77 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.os.Environment; import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; @@ -30,7 +31,6 @@ private static File audioDir; private static File imageDir; private static File waterImageDir; - private static File downloadDir; private static File videoDir; private static int index = 1; @@ -64,13 +64,6 @@ Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹"); } } - downloadDir = new File(parentDir, "DownloadFile"); - if (!downloadDir.exists()) { - boolean mkDownDir = downloadDir.mkdir(); - if (mkDownDir) { - Log.d(TAG, "initFileConfig: 创建DownloadFile文件夹"); - } - } videoDir = new File(parentDir, "CompressVideoFile"); if (!videoDir.exists()) { boolean mkVideoDir = videoDir.mkdir(); @@ -163,20 +156,11 @@ //储存下载文件的目录 private static String getDownloadFilePath() { - if (downloadDir == null) { - File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic"); - if (!parentDir.exists()) { - boolean mkdir = parentDir.mkdir(); - if (mkdir) { - Log.d(TAG, "getDownloadFilePath: 创建Casic文件夹"); - } - } - downloadDir = new File(parentDir, "DownloadFile"); - if (!downloadDir.exists()) { - boolean mkDownDir = downloadDir.mkdir(); - if (mkDownDir) { - Log.d(TAG, "getDownloadFilePath: 创建DownloadFile文件夹"); - } + File downloadDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), ""); + if (!downloadDir.exists()) { + boolean mkdir = downloadDir.mkdir(); + if (mkdir) { + Log.d(TAG, "getDownloadFilePath: 创建文件夹"); } } return downloadDir.toString(); diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index f70d101..db004ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -511,10 +511,10 @@ * http://111.198.10.15:11409/case/workListPage?isShop=1 */ @GET("/case/workListPage") - Observable obtainWorkListPage(@Header("token") String token, - @Query("isShop") String isShop, - @Query("limit") int limit, - @Query("offset") int offset); + Observable obtainPackageWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); /** * 三包已办 @@ -558,6 +558,16 @@ @Field("applySource") String applySource); /** + * 二级派遣员待办案卷 + *

+ * http://111.198.10.15:11409/case/workListPage/?offset=1&limit=15 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("limit") int limit, + @Query("offset") int offset); + + /** * 二级派遣员待处理案卷 *

* http://111.198.10.15:11409/case/toProcessListPage/?offset=1&limit=15 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f845c47..33ad3a1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,9 +87,9 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java new file mode 100644 index 0000000..a5f4a1e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class DeptTodoModelImpl implements IDeptCaseModel { + + private OnGetCaseListListener listener; + + public DeptTodoModelImpl(OnGetCaseListListener caseListListener) { + this.listener = caseListListener; + } + + public interface OnGetCaseListListener { + void onSuccess(PackageOrDeptBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageOrDeptBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java index 4cafc10..e8c76b9 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -25,7 +25,7 @@ @Override public Subscription sendRetrofitRequest(String isShop, int offset) { - Observable observable = RetrofitServiceManager.getWorkListResult(isShop, offset); + Observable observable = RetrofitServiceManager.getPackageWorkListResult(isShop, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java new file mode 100644 index 0000000..eca4ff8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.DeptTodoModelImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; + +public class DeptTodoPresenterImpl extends BasePresenter implements IDeptCasePresenter, DeptTodoModelImpl.OnGetCaseListListener { + + private IDeptTodoOrHandledView view; + private DeptTodoModelImpl actionModel; + + public DeptTodoPresenterImpl(IDeptTodoOrHandledView deptCaseView) { + this.view = deptCaseView; + actionModel = new DeptTodoModelImpl(this); + } + + //二级待办待处理 + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageOrDeptBean resultBean) { + view.obtainResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java index 5e6fd9c..b11a51a 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java @@ -96,7 +96,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[1]; + return Constant.DEPT_PAGE_TITLES[3]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java index de47420..030843e 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[2]; + return Constant.DEPT_PAGE_TITLES[4]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index 3de76c2..d47aa72 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -17,6 +17,7 @@ import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; import com.casic.dcms.ui.fragment.dept.DeptCasePostponeFragment; import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -57,10 +58,11 @@ @Override public void initData() { List fragmentList = new ArrayList<>(); + fragmentList.add(new DeptCaseTodoFragment());//待办任务 fragmentList.add(new DeptCaseProcessFragment());//待处理 + fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 - fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); diff --git a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java deleted file mode 100644 index c751109..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java +++ /dev/null @@ -1,440 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageRecycleViewAdapter; -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.bean.ProcessPersonBean; -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.ProcessPersonPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IHandleProcessView; -import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; -import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class DeptProcessDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { - - private Context context = DeptProcessDetailActivity.this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseResourceView) - TextView caseResourceView; - @BindView(R.id.caseCreatorView) - TextView caseCreatorView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicRecyclerView) - RecyclerView casePicRecyclerView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseHandleRecyclerView) - RecyclerView caseHandleRecyclerView; - @BindView(R.id.optTypeView) - TextView optTypeView; - @BindView(R.id.casePersonLayout) - RelativeLayout casePersonLayout; - @BindView(R.id.personLine) - View personLine; - @BindView(R.id.caseHandlePersonView) - TextView caseHandlePersonView; - @BindView(R.id.optionEditView) - EditText optionEditView; - @BindView(R.id.commonTipsView) - TextView commonTipsView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ProcessPersonPresenterImpl handleProcessPresenter; - private List personBeans; - private CaseHandlePresenterImpl caseHandlePresenter; - private CaseNextNodePresenterImpl nextNodePresenter; - private String id; - private String changeState; - private String taskUserId; - private String operationKey; - private List nodeDataBeans; - - @Override - protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[0]; - } - - @Override - public int initLayoutView() { - return R.layout.activity_dept_process; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - nextNodePresenter = new CaseNextNodePresenterImpl(this); - handleProcessPresenter = new ProcessPersonPresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseResourceView.setText(data.getSourceName()); - caseCreatorView.setText(data.getCreateUserName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); - casePicRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); - caseHandleRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - //获取处置类型 - nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "处理中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); - DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("caseType", data.getEorcName()); - String dataLng = data.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = data.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - startActivity(intent); - break; - case R.id.caseOptTypeLayout: - if (nodeDataBeans != null) { - if (nodeDataBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("操作类型"); - for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { - 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(); - optTypeView.setText(tag); - optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); - changeState = String.valueOf(nodeBean.getNextState()); - operationKey = nodeBean.getOperationKey(); - - if (tag.equals("处置人员")) { - casePersonLayout.setVisibility(View.VISIBLE); - personLine.setVisibility(View.VISIBLE); - - //获取下级处置人员名单 - handleProcessPresenter.onReadyRetrofitRequest(); - } else { - casePersonLayout.setVisibility(View.GONE); - personLine.setVisibility(View.GONE); - } - } - }).build().show(); - } - } - break; - case R.id.casePersonLayout: - if (personBeans != null) { - if (personBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处置人员"); - for (ProcessPersonBean.DataBean dataBean : personBeans) { - sheetBuilder.addItem(dataBean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - caseHandlePersonView.setText(tag); - caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - taskUserId = personBeans.get(position).getId(); - } - }).build().show(); - } - } - break; - case R.id.commonTipsLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("常见用语") - .addItem("请及时处理") - .addItem("调查后及时回复") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - commonTipsView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - optionEditView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String optType = optTypeView.getText().toString(); - if (optType.equals("")) { - ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); - return; - } - if (optType.equals("处置人员")) { - //选择处理人员时,必选一个处置人员 - String handlePerson = caseHandlePersonView.getText().toString(); - if (handlePerson.equals("")) { - ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); - return; - } - } - String optionInput = StringHelper.filterString(optionEditView.getText().toString()); - if (optType.equals("申请调整") || optType.equals("申请延期") || optType.equals("申请缓办")) { - if (TextUtils.isEmpty(optionInput)) { - ToastHelper.showToast("调整/延期/缓办的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); - } - - @Override - public void obtainResultData(ProcessPersonBean resultBean) { - if (resultBean.isSuccess()) { - this.personBeans = resultBean.getData(); - if (personBeans.size() == 0) { - caseHandlePersonView.setText("无处置人员"); - } else { - ProcessPersonBean.DataBean dataBean = personBeans.get(0); - taskUserId = dataBean.getId(); - caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 - } - caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - this.nodeDataBeans = resultBean.getData(); - if (nodeDataBeans.size() == 0) { - optTypeView.setText("无下级流转节点"); - } else { - CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); - - operationKey = dataBean.getOperationKey(); - changeState = String.valueOf(dataBean.getNextState()); - optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 - } - optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (handleProcessPresenter != null) { - handleProcessPresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (nextNodePresenter != null) { - nextNodePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java new file mode 100644 index 0000000..e4df2b6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java @@ -0,0 +1,438 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +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.bean.ProcessPersonBean; +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.ProcessPersonPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailHandleView; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.ICaseNextNodeView; +import com.casic.dcms.mvp.view.IHandleProcessView; +import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.JzExoMedia; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.widgets.AudioPlayerView; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +public class DeptTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { + + private Context context = this; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseResourceView) + TextView caseResourceView; + @BindView(R.id.caseCreatorView) + TextView caseCreatorView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.audioPlayerView) + AudioPlayerView audioPlayerView; + @BindView(R.id.videoPlayerView) + JzvdStd videoPlayerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.optTypeView) + TextView optTypeView; + @BindView(R.id.casePersonLayout) + RelativeLayout casePersonLayout; + @BindView(R.id.personLine) + View personLine; + @BindView(R.id.caseHandlePersonView) + TextView caseHandlePersonView; + @BindView(R.id.optionEditView) + EditText optionEditView; + @BindView(R.id.commonTipsView) + TextView commonTipsView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private ProcessPersonPresenterImpl handleProcessPresenter; + private List personBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private CaseNextNodePresenterImpl nextNodePresenter; + private String id; + private String title; + private String changeState; + private String taskUserId; + private String operationKey; + private List nodeDataBeans; + + @Override + protected String setTitleName() { + return title; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_todo; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + title = getIntent().getStringExtra("title"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + handleProcessPresenter = new ProcessPersonPresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.setVisibility(View.VISIBLE); + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView); + } + + //处理图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseTodoFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + + if (tag.equals("返回处理") || tag.equals("处置人员")) { + casePersonLayout.setVisibility(View.VISIBLE); + personLine.setVisibility(View.VISIBLE); + + //获取下级处置人员名单 + handleProcessPresenter.onReadyRetrofitRequest(); + } else { + casePersonLayout.setVisibility(View.GONE); + personLine.setVisibility(View.GONE); + } + } + }).build().show(); + } + } + break; + case R.id.casePersonLayout: + if (personBeans != null) { + if (personBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处置人员"); + for (ProcessPersonBean.DataBean dataBean : personBeans) { + sheetBuilder.addItem(dataBean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + caseHandlePersonView.setText(tag); + caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + taskUserId = personBeans.get(position).getId(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + if (optType.equals("处置人员") || optType.equals("返回处理")) { + //选择处理人员时,必选一个处置人员 + String handlePerson = caseHandlePersonView.getText().toString(); + if (handlePerson.equals("")) { + ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); + return; + } + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("处理意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); + break; + } + } + + @Override + public void obtainResultData(ProcessPersonBean resultBean) { + if (resultBean.isSuccess()) { + this.personBeans = resultBean.getData(); + if (personBeans.size() == 0) { + caseHandlePersonView.setText("无处置人员"); + } else { + ProcessPersonBean.DataBean dataBean = personBeans.get(0); + taskUserId = dataBean.getId(); + caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 + } + caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (handleProcessPresenter != null) { + handleProcessPresenter.disposeRetrofitRequest(); + } + if (caseHandlePresenter != null) { + caseHandlePresenter.disposeRetrofitRequest(); + } + if (nextNodePresenter != null) { + nextNodePresenter.disposeRetrofitRequest(); + } + if (audioPlayerView != null) { + audioPlayerView.release(); + } + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java index 12f5b4d..7727898 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java @@ -16,7 +16,7 @@ import com.casic.dcms.bean.PackageOrDeptBean; import com.casic.dcms.mvp.presenter.DeptProcessPresenterImpl; import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; -import com.casic.dcms.ui.DeptProcessDetailActivity; +import com.casic.dcms.ui.DeptTodoDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -125,7 +125,8 @@ fragment.adapter.setOnItemClickListener(new DeptTodoOrHandledAdapter.OnItemClickListener() { @Override public void onClick(int position) { - Intent intent = new Intent(fragment.context, DeptProcessDetailActivity.class); + Intent intent = new Intent(fragment.context, DeptTodoDetailActivity.class); + intent.putExtra("title", Constant.DEPT_PAGE_TITLES[1]); intent.putExtra("id", fragment.dataBeans.get(position).getId()); fragment.startActivity(intent); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java new file mode 100644 index 0000000..7bc167b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java @@ -0,0 +1,170 @@ +package com.casic.dcms.ui.fragment.dept; + +import android.content.Context; +import android.content.Intent; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.DeptTodoOrHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.presenter.DeptTodoPresenterImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; +import com.casic.dcms.ui.DeptTodoDetailActivity; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class DeptCaseTodoFragment extends BaseFragment implements IDeptTodoOrHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private DeptTodoPresenterImpl deptTodoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private DeptTodoOrHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_dept_case; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + deptTodoPresenter = new DeptTodoPresenterImpl(this); + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(DeptCaseTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + DeptCaseTodoFragment fragment = reference.get(); + if (msg.what == Constant.DEPT_DONE) { + fragment.isRefresh = true; + //刷新之后页码重置 + fragment.pageIndex = 1; + fragment.deptTodoPresenter.onReadyRetrofitRequest(fragment.pageIndex); + } else if (msg.what == 20210630) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (fragment.dataBeans.size() == 0) { + fragment.emptyView.show("您暂时没有待办案卷", null); + } else { + fragment.emptyView.hide(); + fragment.adapter = new DeptTodoOrHandledAdapter(fragment.context, fragment.dataBeans); + fragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(fragment.context)); + fragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(fragment.context, DividerItemDecoration.VERTICAL)); + fragment.caseRecyclerView.setAdapter(fragment.adapter); + fragment.adapter.setOnItemClickListener(new DeptTodoOrHandledAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(fragment.context, DeptTodoDetailActivity.class); + intent.putExtra("title", Constant.DEPT_PAGE_TITLES[0]); + intent.putExtra("id", fragment.dataBeans.get(position).getId()); + fragment.startActivity(intent); + } + }); + } + } + } + } + } + + @Override + public void obtainResult(PackageOrDeptBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(20210630); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (deptTodoPresenter != null) { + deptTodoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index e8cd7d5..d207d3d 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -15,7 +15,7 @@ Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CALL_PHONE, Manifest.permission.READ_PHONE_STATE}; public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; - public static final String[] DEPT_PAGE_TITLES = {"待处理", "部门调整批示", "部门授权审核", "已办案卷", "二级缓办待处理", "二级延期待处理"}; + public static final String[] DEPT_PAGE_TITLES = {"待办任务", "待处理", "已办案卷", "部门调整批示", "部门授权审核", "二级缓办待处理", "二级延期待处理"}; public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final String[] SPINNER_ITEMS = {"请选择", "已处理", "无需处理"}; public static final String[] POPUP_LIST_ITEMS = {"一键消警", "报警分布", "窨井列表"}; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 6c69999..63abb77 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.os.Environment; import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; @@ -30,7 +31,6 @@ private static File audioDir; private static File imageDir; private static File waterImageDir; - private static File downloadDir; private static File videoDir; private static int index = 1; @@ -64,13 +64,6 @@ Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹"); } } - downloadDir = new File(parentDir, "DownloadFile"); - if (!downloadDir.exists()) { - boolean mkDownDir = downloadDir.mkdir(); - if (mkDownDir) { - Log.d(TAG, "initFileConfig: 创建DownloadFile文件夹"); - } - } videoDir = new File(parentDir, "CompressVideoFile"); if (!videoDir.exists()) { boolean mkVideoDir = videoDir.mkdir(); @@ -163,20 +156,11 @@ //储存下载文件的目录 private static String getDownloadFilePath() { - if (downloadDir == null) { - File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic"); - if (!parentDir.exists()) { - boolean mkdir = parentDir.mkdir(); - if (mkdir) { - Log.d(TAG, "getDownloadFilePath: 创建Casic文件夹"); - } - } - downloadDir = new File(parentDir, "DownloadFile"); - if (!downloadDir.exists()) { - boolean mkDownDir = downloadDir.mkdir(); - if (mkDownDir) { - Log.d(TAG, "getDownloadFilePath: 创建DownloadFile文件夹"); - } + File downloadDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), ""); + if (!downloadDir.exists()) { + boolean mkdir = downloadDir.mkdir(); + if (mkdir) { + Log.d(TAG, "getDownloadFilePath: 创建文件夹"); } } return downloadDir.toString(); diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index f70d101..db004ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -511,10 +511,10 @@ * http://111.198.10.15:11409/case/workListPage?isShop=1 */ @GET("/case/workListPage") - Observable obtainWorkListPage(@Header("token") String token, - @Query("isShop") String isShop, - @Query("limit") int limit, - @Query("offset") int offset); + Observable obtainPackageWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); /** * 三包已办 @@ -558,6 +558,16 @@ @Field("applySource") String applySource); /** + * 二级派遣员待办案卷 + *

+ * http://111.198.10.15:11409/case/workListPage/?offset=1&limit=15 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("limit") int limit, + @Query("offset") int offset); + + /** * 二级派遣员待处理案卷 *

* http://111.198.10.15:11409/case/toProcessListPage/?offset=1&limit=15 diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 32a93a1..2e2cde7 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -549,10 +549,10 @@ /** * 三包待办 */ - public static Observable getWorkListResult(String isShop, int offset) { + public static Observable getPackageWorkListResult(String isShop, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainWorkListPage(AuthenticationHelper.getToken(), isShop, + return service.obtainPackageWorkListPage(AuthenticationHelper.getToken(), isShop, Constant.PAGE_LIMIT, offset); } @@ -591,6 +591,15 @@ } /** + * 二级派遣员待办案卷 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), Constant.PAGE_LIMIT, offset); + } + + /** * 二级派遣员待处理案卷 */ public static Observable getProcessListResult(int offset) { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f845c47..33ad3a1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,9 +87,9 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java new file mode 100644 index 0000000..a5f4a1e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class DeptTodoModelImpl implements IDeptCaseModel { + + private OnGetCaseListListener listener; + + public DeptTodoModelImpl(OnGetCaseListListener caseListListener) { + this.listener = caseListListener; + } + + public interface OnGetCaseListListener { + void onSuccess(PackageOrDeptBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageOrDeptBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java index 4cafc10..e8c76b9 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -25,7 +25,7 @@ @Override public Subscription sendRetrofitRequest(String isShop, int offset) { - Observable observable = RetrofitServiceManager.getWorkListResult(isShop, offset); + Observable observable = RetrofitServiceManager.getPackageWorkListResult(isShop, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java new file mode 100644 index 0000000..eca4ff8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.DeptTodoModelImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; + +public class DeptTodoPresenterImpl extends BasePresenter implements IDeptCasePresenter, DeptTodoModelImpl.OnGetCaseListListener { + + private IDeptTodoOrHandledView view; + private DeptTodoModelImpl actionModel; + + public DeptTodoPresenterImpl(IDeptTodoOrHandledView deptCaseView) { + this.view = deptCaseView; + actionModel = new DeptTodoModelImpl(this); + } + + //二级待办待处理 + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageOrDeptBean resultBean) { + view.obtainResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java index 5e6fd9c..b11a51a 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java @@ -96,7 +96,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[1]; + return Constant.DEPT_PAGE_TITLES[3]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java index de47420..030843e 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[2]; + return Constant.DEPT_PAGE_TITLES[4]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index 3de76c2..d47aa72 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -17,6 +17,7 @@ import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; import com.casic.dcms.ui.fragment.dept.DeptCasePostponeFragment; import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -57,10 +58,11 @@ @Override public void initData() { List fragmentList = new ArrayList<>(); + fragmentList.add(new DeptCaseTodoFragment());//待办任务 fragmentList.add(new DeptCaseProcessFragment());//待处理 + fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 - fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); diff --git a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java deleted file mode 100644 index c751109..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java +++ /dev/null @@ -1,440 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageRecycleViewAdapter; -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.bean.ProcessPersonBean; -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.ProcessPersonPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IHandleProcessView; -import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; -import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class DeptProcessDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { - - private Context context = DeptProcessDetailActivity.this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseResourceView) - TextView caseResourceView; - @BindView(R.id.caseCreatorView) - TextView caseCreatorView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicRecyclerView) - RecyclerView casePicRecyclerView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseHandleRecyclerView) - RecyclerView caseHandleRecyclerView; - @BindView(R.id.optTypeView) - TextView optTypeView; - @BindView(R.id.casePersonLayout) - RelativeLayout casePersonLayout; - @BindView(R.id.personLine) - View personLine; - @BindView(R.id.caseHandlePersonView) - TextView caseHandlePersonView; - @BindView(R.id.optionEditView) - EditText optionEditView; - @BindView(R.id.commonTipsView) - TextView commonTipsView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ProcessPersonPresenterImpl handleProcessPresenter; - private List personBeans; - private CaseHandlePresenterImpl caseHandlePresenter; - private CaseNextNodePresenterImpl nextNodePresenter; - private String id; - private String changeState; - private String taskUserId; - private String operationKey; - private List nodeDataBeans; - - @Override - protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[0]; - } - - @Override - public int initLayoutView() { - return R.layout.activity_dept_process; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - nextNodePresenter = new CaseNextNodePresenterImpl(this); - handleProcessPresenter = new ProcessPersonPresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseResourceView.setText(data.getSourceName()); - caseCreatorView.setText(data.getCreateUserName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); - casePicRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); - caseHandleRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - //获取处置类型 - nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "处理中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); - DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("caseType", data.getEorcName()); - String dataLng = data.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = data.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - startActivity(intent); - break; - case R.id.caseOptTypeLayout: - if (nodeDataBeans != null) { - if (nodeDataBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("操作类型"); - for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { - 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(); - optTypeView.setText(tag); - optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); - changeState = String.valueOf(nodeBean.getNextState()); - operationKey = nodeBean.getOperationKey(); - - if (tag.equals("处置人员")) { - casePersonLayout.setVisibility(View.VISIBLE); - personLine.setVisibility(View.VISIBLE); - - //获取下级处置人员名单 - handleProcessPresenter.onReadyRetrofitRequest(); - } else { - casePersonLayout.setVisibility(View.GONE); - personLine.setVisibility(View.GONE); - } - } - }).build().show(); - } - } - break; - case R.id.casePersonLayout: - if (personBeans != null) { - if (personBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处置人员"); - for (ProcessPersonBean.DataBean dataBean : personBeans) { - sheetBuilder.addItem(dataBean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - caseHandlePersonView.setText(tag); - caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - taskUserId = personBeans.get(position).getId(); - } - }).build().show(); - } - } - break; - case R.id.commonTipsLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("常见用语") - .addItem("请及时处理") - .addItem("调查后及时回复") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - commonTipsView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - optionEditView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String optType = optTypeView.getText().toString(); - if (optType.equals("")) { - ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); - return; - } - if (optType.equals("处置人员")) { - //选择处理人员时,必选一个处置人员 - String handlePerson = caseHandlePersonView.getText().toString(); - if (handlePerson.equals("")) { - ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); - return; - } - } - String optionInput = StringHelper.filterString(optionEditView.getText().toString()); - if (optType.equals("申请调整") || optType.equals("申请延期") || optType.equals("申请缓办")) { - if (TextUtils.isEmpty(optionInput)) { - ToastHelper.showToast("调整/延期/缓办的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); - } - - @Override - public void obtainResultData(ProcessPersonBean resultBean) { - if (resultBean.isSuccess()) { - this.personBeans = resultBean.getData(); - if (personBeans.size() == 0) { - caseHandlePersonView.setText("无处置人员"); - } else { - ProcessPersonBean.DataBean dataBean = personBeans.get(0); - taskUserId = dataBean.getId(); - caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 - } - caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - this.nodeDataBeans = resultBean.getData(); - if (nodeDataBeans.size() == 0) { - optTypeView.setText("无下级流转节点"); - } else { - CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); - - operationKey = dataBean.getOperationKey(); - changeState = String.valueOf(dataBean.getNextState()); - optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 - } - optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (handleProcessPresenter != null) { - handleProcessPresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (nextNodePresenter != null) { - nextNodePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java new file mode 100644 index 0000000..e4df2b6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java @@ -0,0 +1,438 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +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.bean.ProcessPersonBean; +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.ProcessPersonPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailHandleView; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.ICaseNextNodeView; +import com.casic.dcms.mvp.view.IHandleProcessView; +import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.JzExoMedia; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.widgets.AudioPlayerView; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +public class DeptTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { + + private Context context = this; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseResourceView) + TextView caseResourceView; + @BindView(R.id.caseCreatorView) + TextView caseCreatorView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.audioPlayerView) + AudioPlayerView audioPlayerView; + @BindView(R.id.videoPlayerView) + JzvdStd videoPlayerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.optTypeView) + TextView optTypeView; + @BindView(R.id.casePersonLayout) + RelativeLayout casePersonLayout; + @BindView(R.id.personLine) + View personLine; + @BindView(R.id.caseHandlePersonView) + TextView caseHandlePersonView; + @BindView(R.id.optionEditView) + EditText optionEditView; + @BindView(R.id.commonTipsView) + TextView commonTipsView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private ProcessPersonPresenterImpl handleProcessPresenter; + private List personBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private CaseNextNodePresenterImpl nextNodePresenter; + private String id; + private String title; + private String changeState; + private String taskUserId; + private String operationKey; + private List nodeDataBeans; + + @Override + protected String setTitleName() { + return title; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_todo; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + title = getIntent().getStringExtra("title"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + handleProcessPresenter = new ProcessPersonPresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.setVisibility(View.VISIBLE); + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView); + } + + //处理图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseTodoFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + + if (tag.equals("返回处理") || tag.equals("处置人员")) { + casePersonLayout.setVisibility(View.VISIBLE); + personLine.setVisibility(View.VISIBLE); + + //获取下级处置人员名单 + handleProcessPresenter.onReadyRetrofitRequest(); + } else { + casePersonLayout.setVisibility(View.GONE); + personLine.setVisibility(View.GONE); + } + } + }).build().show(); + } + } + break; + case R.id.casePersonLayout: + if (personBeans != null) { + if (personBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处置人员"); + for (ProcessPersonBean.DataBean dataBean : personBeans) { + sheetBuilder.addItem(dataBean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + caseHandlePersonView.setText(tag); + caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + taskUserId = personBeans.get(position).getId(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + if (optType.equals("处置人员") || optType.equals("返回处理")) { + //选择处理人员时,必选一个处置人员 + String handlePerson = caseHandlePersonView.getText().toString(); + if (handlePerson.equals("")) { + ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); + return; + } + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("处理意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); + break; + } + } + + @Override + public void obtainResultData(ProcessPersonBean resultBean) { + if (resultBean.isSuccess()) { + this.personBeans = resultBean.getData(); + if (personBeans.size() == 0) { + caseHandlePersonView.setText("无处置人员"); + } else { + ProcessPersonBean.DataBean dataBean = personBeans.get(0); + taskUserId = dataBean.getId(); + caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 + } + caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (handleProcessPresenter != null) { + handleProcessPresenter.disposeRetrofitRequest(); + } + if (caseHandlePresenter != null) { + caseHandlePresenter.disposeRetrofitRequest(); + } + if (nextNodePresenter != null) { + nextNodePresenter.disposeRetrofitRequest(); + } + if (audioPlayerView != null) { + audioPlayerView.release(); + } + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java index 12f5b4d..7727898 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java @@ -16,7 +16,7 @@ import com.casic.dcms.bean.PackageOrDeptBean; import com.casic.dcms.mvp.presenter.DeptProcessPresenterImpl; import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; -import com.casic.dcms.ui.DeptProcessDetailActivity; +import com.casic.dcms.ui.DeptTodoDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -125,7 +125,8 @@ fragment.adapter.setOnItemClickListener(new DeptTodoOrHandledAdapter.OnItemClickListener() { @Override public void onClick(int position) { - Intent intent = new Intent(fragment.context, DeptProcessDetailActivity.class); + Intent intent = new Intent(fragment.context, DeptTodoDetailActivity.class); + intent.putExtra("title", Constant.DEPT_PAGE_TITLES[1]); intent.putExtra("id", fragment.dataBeans.get(position).getId()); fragment.startActivity(intent); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java new file mode 100644 index 0000000..7bc167b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java @@ -0,0 +1,170 @@ +package com.casic.dcms.ui.fragment.dept; + +import android.content.Context; +import android.content.Intent; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.DeptTodoOrHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.presenter.DeptTodoPresenterImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; +import com.casic.dcms.ui.DeptTodoDetailActivity; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class DeptCaseTodoFragment extends BaseFragment implements IDeptTodoOrHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private DeptTodoPresenterImpl deptTodoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private DeptTodoOrHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_dept_case; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + deptTodoPresenter = new DeptTodoPresenterImpl(this); + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(DeptCaseTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + DeptCaseTodoFragment fragment = reference.get(); + if (msg.what == Constant.DEPT_DONE) { + fragment.isRefresh = true; + //刷新之后页码重置 + fragment.pageIndex = 1; + fragment.deptTodoPresenter.onReadyRetrofitRequest(fragment.pageIndex); + } else if (msg.what == 20210630) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (fragment.dataBeans.size() == 0) { + fragment.emptyView.show("您暂时没有待办案卷", null); + } else { + fragment.emptyView.hide(); + fragment.adapter = new DeptTodoOrHandledAdapter(fragment.context, fragment.dataBeans); + fragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(fragment.context)); + fragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(fragment.context, DividerItemDecoration.VERTICAL)); + fragment.caseRecyclerView.setAdapter(fragment.adapter); + fragment.adapter.setOnItemClickListener(new DeptTodoOrHandledAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(fragment.context, DeptTodoDetailActivity.class); + intent.putExtra("title", Constant.DEPT_PAGE_TITLES[0]); + intent.putExtra("id", fragment.dataBeans.get(position).getId()); + fragment.startActivity(intent); + } + }); + } + } + } + } + } + + @Override + public void obtainResult(PackageOrDeptBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(20210630); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (deptTodoPresenter != null) { + deptTodoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index e8cd7d5..d207d3d 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -15,7 +15,7 @@ Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CALL_PHONE, Manifest.permission.READ_PHONE_STATE}; public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; - public static final String[] DEPT_PAGE_TITLES = {"待处理", "部门调整批示", "部门授权审核", "已办案卷", "二级缓办待处理", "二级延期待处理"}; + public static final String[] DEPT_PAGE_TITLES = {"待办任务", "待处理", "已办案卷", "部门调整批示", "部门授权审核", "二级缓办待处理", "二级延期待处理"}; public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final String[] SPINNER_ITEMS = {"请选择", "已处理", "无需处理"}; public static final String[] POPUP_LIST_ITEMS = {"一键消警", "报警分布", "窨井列表"}; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 6c69999..63abb77 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.os.Environment; import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; @@ -30,7 +31,6 @@ private static File audioDir; private static File imageDir; private static File waterImageDir; - private static File downloadDir; private static File videoDir; private static int index = 1; @@ -64,13 +64,6 @@ Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹"); } } - downloadDir = new File(parentDir, "DownloadFile"); - if (!downloadDir.exists()) { - boolean mkDownDir = downloadDir.mkdir(); - if (mkDownDir) { - Log.d(TAG, "initFileConfig: 创建DownloadFile文件夹"); - } - } videoDir = new File(parentDir, "CompressVideoFile"); if (!videoDir.exists()) { boolean mkVideoDir = videoDir.mkdir(); @@ -163,20 +156,11 @@ //储存下载文件的目录 private static String getDownloadFilePath() { - if (downloadDir == null) { - File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic"); - if (!parentDir.exists()) { - boolean mkdir = parentDir.mkdir(); - if (mkdir) { - Log.d(TAG, "getDownloadFilePath: 创建Casic文件夹"); - } - } - downloadDir = new File(parentDir, "DownloadFile"); - if (!downloadDir.exists()) { - boolean mkDownDir = downloadDir.mkdir(); - if (mkDownDir) { - Log.d(TAG, "getDownloadFilePath: 创建DownloadFile文件夹"); - } + File downloadDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), ""); + if (!downloadDir.exists()) { + boolean mkdir = downloadDir.mkdir(); + if (mkdir) { + Log.d(TAG, "getDownloadFilePath: 创建文件夹"); } } return downloadDir.toString(); diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index f70d101..db004ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -511,10 +511,10 @@ * http://111.198.10.15:11409/case/workListPage?isShop=1 */ @GET("/case/workListPage") - Observable obtainWorkListPage(@Header("token") String token, - @Query("isShop") String isShop, - @Query("limit") int limit, - @Query("offset") int offset); + Observable obtainPackageWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); /** * 三包已办 @@ -558,6 +558,16 @@ @Field("applySource") String applySource); /** + * 二级派遣员待办案卷 + *

+ * http://111.198.10.15:11409/case/workListPage/?offset=1&limit=15 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("limit") int limit, + @Query("offset") int offset); + + /** * 二级派遣员待处理案卷 *

* http://111.198.10.15:11409/case/toProcessListPage/?offset=1&limit=15 diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 32a93a1..2e2cde7 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -549,10 +549,10 @@ /** * 三包待办 */ - public static Observable getWorkListResult(String isShop, int offset) { + public static Observable getPackageWorkListResult(String isShop, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainWorkListPage(AuthenticationHelper.getToken(), isShop, + return service.obtainPackageWorkListPage(AuthenticationHelper.getToken(), isShop, Constant.PAGE_LIMIT, offset); } @@ -591,6 +591,15 @@ } /** + * 二级派遣员待办案卷 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), Constant.PAGE_LIMIT, offset); + } + + /** * 二级派遣员待处理案卷 */ public static Observable getProcessListResult(int offset) { diff --git a/app/src/main/res/layout/activity_dept_process.xml b/app/src/main/res/layout/activity_dept_process.xml deleted file mode 100644 index b097a6e..0000000 --- a/app/src/main/res/layout/activity_dept_process.xml +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f845c47..33ad3a1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,9 +87,9 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java new file mode 100644 index 0000000..a5f4a1e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class DeptTodoModelImpl implements IDeptCaseModel { + + private OnGetCaseListListener listener; + + public DeptTodoModelImpl(OnGetCaseListListener caseListListener) { + this.listener = caseListListener; + } + + public interface OnGetCaseListListener { + void onSuccess(PackageOrDeptBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageOrDeptBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java index 4cafc10..e8c76b9 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -25,7 +25,7 @@ @Override public Subscription sendRetrofitRequest(String isShop, int offset) { - Observable observable = RetrofitServiceManager.getWorkListResult(isShop, offset); + Observable observable = RetrofitServiceManager.getPackageWorkListResult(isShop, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java new file mode 100644 index 0000000..eca4ff8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.DeptTodoModelImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; + +public class DeptTodoPresenterImpl extends BasePresenter implements IDeptCasePresenter, DeptTodoModelImpl.OnGetCaseListListener { + + private IDeptTodoOrHandledView view; + private DeptTodoModelImpl actionModel; + + public DeptTodoPresenterImpl(IDeptTodoOrHandledView deptCaseView) { + this.view = deptCaseView; + actionModel = new DeptTodoModelImpl(this); + } + + //二级待办待处理 + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageOrDeptBean resultBean) { + view.obtainResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java index 5e6fd9c..b11a51a 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java @@ -96,7 +96,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[1]; + return Constant.DEPT_PAGE_TITLES[3]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java index de47420..030843e 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[2]; + return Constant.DEPT_PAGE_TITLES[4]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index 3de76c2..d47aa72 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -17,6 +17,7 @@ import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; import com.casic.dcms.ui.fragment.dept.DeptCasePostponeFragment; import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -57,10 +58,11 @@ @Override public void initData() { List fragmentList = new ArrayList<>(); + fragmentList.add(new DeptCaseTodoFragment());//待办任务 fragmentList.add(new DeptCaseProcessFragment());//待处理 + fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 - fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); diff --git a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java deleted file mode 100644 index c751109..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java +++ /dev/null @@ -1,440 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageRecycleViewAdapter; -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.bean.ProcessPersonBean; -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.ProcessPersonPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IHandleProcessView; -import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; -import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class DeptProcessDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { - - private Context context = DeptProcessDetailActivity.this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseResourceView) - TextView caseResourceView; - @BindView(R.id.caseCreatorView) - TextView caseCreatorView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicRecyclerView) - RecyclerView casePicRecyclerView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseHandleRecyclerView) - RecyclerView caseHandleRecyclerView; - @BindView(R.id.optTypeView) - TextView optTypeView; - @BindView(R.id.casePersonLayout) - RelativeLayout casePersonLayout; - @BindView(R.id.personLine) - View personLine; - @BindView(R.id.caseHandlePersonView) - TextView caseHandlePersonView; - @BindView(R.id.optionEditView) - EditText optionEditView; - @BindView(R.id.commonTipsView) - TextView commonTipsView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ProcessPersonPresenterImpl handleProcessPresenter; - private List personBeans; - private CaseHandlePresenterImpl caseHandlePresenter; - private CaseNextNodePresenterImpl nextNodePresenter; - private String id; - private String changeState; - private String taskUserId; - private String operationKey; - private List nodeDataBeans; - - @Override - protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[0]; - } - - @Override - public int initLayoutView() { - return R.layout.activity_dept_process; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - nextNodePresenter = new CaseNextNodePresenterImpl(this); - handleProcessPresenter = new ProcessPersonPresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseResourceView.setText(data.getSourceName()); - caseCreatorView.setText(data.getCreateUserName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); - casePicRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); - caseHandleRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - //获取处置类型 - nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "处理中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); - DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("caseType", data.getEorcName()); - String dataLng = data.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = data.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - startActivity(intent); - break; - case R.id.caseOptTypeLayout: - if (nodeDataBeans != null) { - if (nodeDataBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("操作类型"); - for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { - 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(); - optTypeView.setText(tag); - optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); - changeState = String.valueOf(nodeBean.getNextState()); - operationKey = nodeBean.getOperationKey(); - - if (tag.equals("处置人员")) { - casePersonLayout.setVisibility(View.VISIBLE); - personLine.setVisibility(View.VISIBLE); - - //获取下级处置人员名单 - handleProcessPresenter.onReadyRetrofitRequest(); - } else { - casePersonLayout.setVisibility(View.GONE); - personLine.setVisibility(View.GONE); - } - } - }).build().show(); - } - } - break; - case R.id.casePersonLayout: - if (personBeans != null) { - if (personBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处置人员"); - for (ProcessPersonBean.DataBean dataBean : personBeans) { - sheetBuilder.addItem(dataBean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - caseHandlePersonView.setText(tag); - caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - taskUserId = personBeans.get(position).getId(); - } - }).build().show(); - } - } - break; - case R.id.commonTipsLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("常见用语") - .addItem("请及时处理") - .addItem("调查后及时回复") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - commonTipsView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - optionEditView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String optType = optTypeView.getText().toString(); - if (optType.equals("")) { - ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); - return; - } - if (optType.equals("处置人员")) { - //选择处理人员时,必选一个处置人员 - String handlePerson = caseHandlePersonView.getText().toString(); - if (handlePerson.equals("")) { - ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); - return; - } - } - String optionInput = StringHelper.filterString(optionEditView.getText().toString()); - if (optType.equals("申请调整") || optType.equals("申请延期") || optType.equals("申请缓办")) { - if (TextUtils.isEmpty(optionInput)) { - ToastHelper.showToast("调整/延期/缓办的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); - } - - @Override - public void obtainResultData(ProcessPersonBean resultBean) { - if (resultBean.isSuccess()) { - this.personBeans = resultBean.getData(); - if (personBeans.size() == 0) { - caseHandlePersonView.setText("无处置人员"); - } else { - ProcessPersonBean.DataBean dataBean = personBeans.get(0); - taskUserId = dataBean.getId(); - caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 - } - caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - this.nodeDataBeans = resultBean.getData(); - if (nodeDataBeans.size() == 0) { - optTypeView.setText("无下级流转节点"); - } else { - CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); - - operationKey = dataBean.getOperationKey(); - changeState = String.valueOf(dataBean.getNextState()); - optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 - } - optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (handleProcessPresenter != null) { - handleProcessPresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (nextNodePresenter != null) { - nextNodePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java new file mode 100644 index 0000000..e4df2b6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java @@ -0,0 +1,438 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +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.bean.ProcessPersonBean; +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.ProcessPersonPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailHandleView; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.ICaseNextNodeView; +import com.casic.dcms.mvp.view.IHandleProcessView; +import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.JzExoMedia; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.widgets.AudioPlayerView; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +public class DeptTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { + + private Context context = this; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseResourceView) + TextView caseResourceView; + @BindView(R.id.caseCreatorView) + TextView caseCreatorView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.audioPlayerView) + AudioPlayerView audioPlayerView; + @BindView(R.id.videoPlayerView) + JzvdStd videoPlayerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.optTypeView) + TextView optTypeView; + @BindView(R.id.casePersonLayout) + RelativeLayout casePersonLayout; + @BindView(R.id.personLine) + View personLine; + @BindView(R.id.caseHandlePersonView) + TextView caseHandlePersonView; + @BindView(R.id.optionEditView) + EditText optionEditView; + @BindView(R.id.commonTipsView) + TextView commonTipsView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private ProcessPersonPresenterImpl handleProcessPresenter; + private List personBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private CaseNextNodePresenterImpl nextNodePresenter; + private String id; + private String title; + private String changeState; + private String taskUserId; + private String operationKey; + private List nodeDataBeans; + + @Override + protected String setTitleName() { + return title; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_todo; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + title = getIntent().getStringExtra("title"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + handleProcessPresenter = new ProcessPersonPresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.setVisibility(View.VISIBLE); + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView); + } + + //处理图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseTodoFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + + if (tag.equals("返回处理") || tag.equals("处置人员")) { + casePersonLayout.setVisibility(View.VISIBLE); + personLine.setVisibility(View.VISIBLE); + + //获取下级处置人员名单 + handleProcessPresenter.onReadyRetrofitRequest(); + } else { + casePersonLayout.setVisibility(View.GONE); + personLine.setVisibility(View.GONE); + } + } + }).build().show(); + } + } + break; + case R.id.casePersonLayout: + if (personBeans != null) { + if (personBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处置人员"); + for (ProcessPersonBean.DataBean dataBean : personBeans) { + sheetBuilder.addItem(dataBean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + caseHandlePersonView.setText(tag); + caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + taskUserId = personBeans.get(position).getId(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + if (optType.equals("处置人员") || optType.equals("返回处理")) { + //选择处理人员时,必选一个处置人员 + String handlePerson = caseHandlePersonView.getText().toString(); + if (handlePerson.equals("")) { + ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); + return; + } + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("处理意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); + break; + } + } + + @Override + public void obtainResultData(ProcessPersonBean resultBean) { + if (resultBean.isSuccess()) { + this.personBeans = resultBean.getData(); + if (personBeans.size() == 0) { + caseHandlePersonView.setText("无处置人员"); + } else { + ProcessPersonBean.DataBean dataBean = personBeans.get(0); + taskUserId = dataBean.getId(); + caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 + } + caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (handleProcessPresenter != null) { + handleProcessPresenter.disposeRetrofitRequest(); + } + if (caseHandlePresenter != null) { + caseHandlePresenter.disposeRetrofitRequest(); + } + if (nextNodePresenter != null) { + nextNodePresenter.disposeRetrofitRequest(); + } + if (audioPlayerView != null) { + audioPlayerView.release(); + } + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java index 12f5b4d..7727898 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java @@ -16,7 +16,7 @@ import com.casic.dcms.bean.PackageOrDeptBean; import com.casic.dcms.mvp.presenter.DeptProcessPresenterImpl; import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; -import com.casic.dcms.ui.DeptProcessDetailActivity; +import com.casic.dcms.ui.DeptTodoDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -125,7 +125,8 @@ fragment.adapter.setOnItemClickListener(new DeptTodoOrHandledAdapter.OnItemClickListener() { @Override public void onClick(int position) { - Intent intent = new Intent(fragment.context, DeptProcessDetailActivity.class); + Intent intent = new Intent(fragment.context, DeptTodoDetailActivity.class); + intent.putExtra("title", Constant.DEPT_PAGE_TITLES[1]); intent.putExtra("id", fragment.dataBeans.get(position).getId()); fragment.startActivity(intent); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java new file mode 100644 index 0000000..7bc167b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java @@ -0,0 +1,170 @@ +package com.casic.dcms.ui.fragment.dept; + +import android.content.Context; +import android.content.Intent; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.DeptTodoOrHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.presenter.DeptTodoPresenterImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; +import com.casic.dcms.ui.DeptTodoDetailActivity; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class DeptCaseTodoFragment extends BaseFragment implements IDeptTodoOrHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private DeptTodoPresenterImpl deptTodoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private DeptTodoOrHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_dept_case; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + deptTodoPresenter = new DeptTodoPresenterImpl(this); + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(DeptCaseTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + DeptCaseTodoFragment fragment = reference.get(); + if (msg.what == Constant.DEPT_DONE) { + fragment.isRefresh = true; + //刷新之后页码重置 + fragment.pageIndex = 1; + fragment.deptTodoPresenter.onReadyRetrofitRequest(fragment.pageIndex); + } else if (msg.what == 20210630) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (fragment.dataBeans.size() == 0) { + fragment.emptyView.show("您暂时没有待办案卷", null); + } else { + fragment.emptyView.hide(); + fragment.adapter = new DeptTodoOrHandledAdapter(fragment.context, fragment.dataBeans); + fragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(fragment.context)); + fragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(fragment.context, DividerItemDecoration.VERTICAL)); + fragment.caseRecyclerView.setAdapter(fragment.adapter); + fragment.adapter.setOnItemClickListener(new DeptTodoOrHandledAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(fragment.context, DeptTodoDetailActivity.class); + intent.putExtra("title", Constant.DEPT_PAGE_TITLES[0]); + intent.putExtra("id", fragment.dataBeans.get(position).getId()); + fragment.startActivity(intent); + } + }); + } + } + } + } + } + + @Override + public void obtainResult(PackageOrDeptBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(20210630); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (deptTodoPresenter != null) { + deptTodoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index e8cd7d5..d207d3d 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -15,7 +15,7 @@ Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CALL_PHONE, Manifest.permission.READ_PHONE_STATE}; public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; - public static final String[] DEPT_PAGE_TITLES = {"待处理", "部门调整批示", "部门授权审核", "已办案卷", "二级缓办待处理", "二级延期待处理"}; + public static final String[] DEPT_PAGE_TITLES = {"待办任务", "待处理", "已办案卷", "部门调整批示", "部门授权审核", "二级缓办待处理", "二级延期待处理"}; public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final String[] SPINNER_ITEMS = {"请选择", "已处理", "无需处理"}; public static final String[] POPUP_LIST_ITEMS = {"一键消警", "报警分布", "窨井列表"}; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 6c69999..63abb77 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.os.Environment; import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; @@ -30,7 +31,6 @@ private static File audioDir; private static File imageDir; private static File waterImageDir; - private static File downloadDir; private static File videoDir; private static int index = 1; @@ -64,13 +64,6 @@ Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹"); } } - downloadDir = new File(parentDir, "DownloadFile"); - if (!downloadDir.exists()) { - boolean mkDownDir = downloadDir.mkdir(); - if (mkDownDir) { - Log.d(TAG, "initFileConfig: 创建DownloadFile文件夹"); - } - } videoDir = new File(parentDir, "CompressVideoFile"); if (!videoDir.exists()) { boolean mkVideoDir = videoDir.mkdir(); @@ -163,20 +156,11 @@ //储存下载文件的目录 private static String getDownloadFilePath() { - if (downloadDir == null) { - File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic"); - if (!parentDir.exists()) { - boolean mkdir = parentDir.mkdir(); - if (mkdir) { - Log.d(TAG, "getDownloadFilePath: 创建Casic文件夹"); - } - } - downloadDir = new File(parentDir, "DownloadFile"); - if (!downloadDir.exists()) { - boolean mkDownDir = downloadDir.mkdir(); - if (mkDownDir) { - Log.d(TAG, "getDownloadFilePath: 创建DownloadFile文件夹"); - } + File downloadDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), ""); + if (!downloadDir.exists()) { + boolean mkdir = downloadDir.mkdir(); + if (mkdir) { + Log.d(TAG, "getDownloadFilePath: 创建文件夹"); } } return downloadDir.toString(); diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index f70d101..db004ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -511,10 +511,10 @@ * http://111.198.10.15:11409/case/workListPage?isShop=1 */ @GET("/case/workListPage") - Observable obtainWorkListPage(@Header("token") String token, - @Query("isShop") String isShop, - @Query("limit") int limit, - @Query("offset") int offset); + Observable obtainPackageWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); /** * 三包已办 @@ -558,6 +558,16 @@ @Field("applySource") String applySource); /** + * 二级派遣员待办案卷 + *

+ * http://111.198.10.15:11409/case/workListPage/?offset=1&limit=15 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("limit") int limit, + @Query("offset") int offset); + + /** * 二级派遣员待处理案卷 *

* http://111.198.10.15:11409/case/toProcessListPage/?offset=1&limit=15 diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 32a93a1..2e2cde7 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -549,10 +549,10 @@ /** * 三包待办 */ - public static Observable getWorkListResult(String isShop, int offset) { + public static Observable getPackageWorkListResult(String isShop, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainWorkListPage(AuthenticationHelper.getToken(), isShop, + return service.obtainPackageWorkListPage(AuthenticationHelper.getToken(), isShop, Constant.PAGE_LIMIT, offset); } @@ -591,6 +591,15 @@ } /** + * 二级派遣员待办案卷 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), Constant.PAGE_LIMIT, offset); + } + + /** * 二级派遣员待处理案卷 */ public static Observable getProcessListResult(int offset) { diff --git a/app/src/main/res/layout/activity_dept_process.xml b/app/src/main/res/layout/activity_dept_process.xml deleted file mode 100644 index b097a6e..0000000 --- a/app/src/main/res/layout/activity_dept_process.xml +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_dept_todo.xml b/app/src/main/res/layout/activity_dept_todo.xml new file mode 100644 index 0000000..b097a6e --- /dev/null +++ b/app/src/main/res/layout/activity_dept_todo.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f845c47..33ad3a1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -87,9 +87,9 @@ - + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java new file mode 100644 index 0000000..a5f4a1e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class DeptTodoModelImpl implements IDeptCaseModel { + + private OnGetCaseListListener listener; + + public DeptTodoModelImpl(OnGetCaseListListener caseListListener) { + this.listener = caseListListener; + } + + public interface OnGetCaseListListener { + void onSuccess(PackageOrDeptBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageOrDeptBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java index 4cafc10..e8c76b9 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -25,7 +25,7 @@ @Override public Subscription sendRetrofitRequest(String isShop, int offset) { - Observable observable = RetrofitServiceManager.getWorkListResult(isShop, offset); + Observable observable = RetrofitServiceManager.getPackageWorkListResult(isShop, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java new file mode 100644 index 0000000..eca4ff8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.DeptTodoModelImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; + +public class DeptTodoPresenterImpl extends BasePresenter implements IDeptCasePresenter, DeptTodoModelImpl.OnGetCaseListListener { + + private IDeptTodoOrHandledView view; + private DeptTodoModelImpl actionModel; + + public DeptTodoPresenterImpl(IDeptTodoOrHandledView deptCaseView) { + this.view = deptCaseView; + actionModel = new DeptTodoModelImpl(this); + } + + //二级待办待处理 + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageOrDeptBean resultBean) { + view.obtainResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java index 5e6fd9c..b11a51a 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java @@ -96,7 +96,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[1]; + return Constant.DEPT_PAGE_TITLES[3]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java index de47420..030843e 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[2]; + return Constant.DEPT_PAGE_TITLES[4]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index 3de76c2..d47aa72 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -17,6 +17,7 @@ import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; import com.casic.dcms.ui.fragment.dept.DeptCasePostponeFragment; import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -57,10 +58,11 @@ @Override public void initData() { List fragmentList = new ArrayList<>(); + fragmentList.add(new DeptCaseTodoFragment());//待办任务 fragmentList.add(new DeptCaseProcessFragment());//待处理 + fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 - fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); diff --git a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java deleted file mode 100644 index c751109..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java +++ /dev/null @@ -1,440 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageRecycleViewAdapter; -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.bean.ProcessPersonBean; -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.ProcessPersonPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IHandleProcessView; -import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; -import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class DeptProcessDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { - - private Context context = DeptProcessDetailActivity.this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseResourceView) - TextView caseResourceView; - @BindView(R.id.caseCreatorView) - TextView caseCreatorView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicRecyclerView) - RecyclerView casePicRecyclerView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseHandleRecyclerView) - RecyclerView caseHandleRecyclerView; - @BindView(R.id.optTypeView) - TextView optTypeView; - @BindView(R.id.casePersonLayout) - RelativeLayout casePersonLayout; - @BindView(R.id.personLine) - View personLine; - @BindView(R.id.caseHandlePersonView) - TextView caseHandlePersonView; - @BindView(R.id.optionEditView) - EditText optionEditView; - @BindView(R.id.commonTipsView) - TextView commonTipsView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ProcessPersonPresenterImpl handleProcessPresenter; - private List personBeans; - private CaseHandlePresenterImpl caseHandlePresenter; - private CaseNextNodePresenterImpl nextNodePresenter; - private String id; - private String changeState; - private String taskUserId; - private String operationKey; - private List nodeDataBeans; - - @Override - protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[0]; - } - - @Override - public int initLayoutView() { - return R.layout.activity_dept_process; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - nextNodePresenter = new CaseNextNodePresenterImpl(this); - handleProcessPresenter = new ProcessPersonPresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseResourceView.setText(data.getSourceName()); - caseCreatorView.setText(data.getCreateUserName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); - casePicRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); - caseHandleRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - //获取处置类型 - nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "处理中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); - DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("caseType", data.getEorcName()); - String dataLng = data.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = data.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - startActivity(intent); - break; - case R.id.caseOptTypeLayout: - if (nodeDataBeans != null) { - if (nodeDataBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("操作类型"); - for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { - 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(); - optTypeView.setText(tag); - optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); - changeState = String.valueOf(nodeBean.getNextState()); - operationKey = nodeBean.getOperationKey(); - - if (tag.equals("处置人员")) { - casePersonLayout.setVisibility(View.VISIBLE); - personLine.setVisibility(View.VISIBLE); - - //获取下级处置人员名单 - handleProcessPresenter.onReadyRetrofitRequest(); - } else { - casePersonLayout.setVisibility(View.GONE); - personLine.setVisibility(View.GONE); - } - } - }).build().show(); - } - } - break; - case R.id.casePersonLayout: - if (personBeans != null) { - if (personBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处置人员"); - for (ProcessPersonBean.DataBean dataBean : personBeans) { - sheetBuilder.addItem(dataBean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - caseHandlePersonView.setText(tag); - caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - taskUserId = personBeans.get(position).getId(); - } - }).build().show(); - } - } - break; - case R.id.commonTipsLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("常见用语") - .addItem("请及时处理") - .addItem("调查后及时回复") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - commonTipsView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - optionEditView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String optType = optTypeView.getText().toString(); - if (optType.equals("")) { - ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); - return; - } - if (optType.equals("处置人员")) { - //选择处理人员时,必选一个处置人员 - String handlePerson = caseHandlePersonView.getText().toString(); - if (handlePerson.equals("")) { - ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); - return; - } - } - String optionInput = StringHelper.filterString(optionEditView.getText().toString()); - if (optType.equals("申请调整") || optType.equals("申请延期") || optType.equals("申请缓办")) { - if (TextUtils.isEmpty(optionInput)) { - ToastHelper.showToast("调整/延期/缓办的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); - } - - @Override - public void obtainResultData(ProcessPersonBean resultBean) { - if (resultBean.isSuccess()) { - this.personBeans = resultBean.getData(); - if (personBeans.size() == 0) { - caseHandlePersonView.setText("无处置人员"); - } else { - ProcessPersonBean.DataBean dataBean = personBeans.get(0); - taskUserId = dataBean.getId(); - caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 - } - caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - this.nodeDataBeans = resultBean.getData(); - if (nodeDataBeans.size() == 0) { - optTypeView.setText("无下级流转节点"); - } else { - CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); - - operationKey = dataBean.getOperationKey(); - changeState = String.valueOf(dataBean.getNextState()); - optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 - } - optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (handleProcessPresenter != null) { - handleProcessPresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (nextNodePresenter != null) { - nextNodePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java new file mode 100644 index 0000000..e4df2b6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java @@ -0,0 +1,438 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +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.bean.ProcessPersonBean; +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.ProcessPersonPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailHandleView; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.ICaseNextNodeView; +import com.casic.dcms.mvp.view.IHandleProcessView; +import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.JzExoMedia; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.widgets.AudioPlayerView; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +public class DeptTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { + + private Context context = this; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseResourceView) + TextView caseResourceView; + @BindView(R.id.caseCreatorView) + TextView caseCreatorView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.audioPlayerView) + AudioPlayerView audioPlayerView; + @BindView(R.id.videoPlayerView) + JzvdStd videoPlayerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.optTypeView) + TextView optTypeView; + @BindView(R.id.casePersonLayout) + RelativeLayout casePersonLayout; + @BindView(R.id.personLine) + View personLine; + @BindView(R.id.caseHandlePersonView) + TextView caseHandlePersonView; + @BindView(R.id.optionEditView) + EditText optionEditView; + @BindView(R.id.commonTipsView) + TextView commonTipsView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private ProcessPersonPresenterImpl handleProcessPresenter; + private List personBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private CaseNextNodePresenterImpl nextNodePresenter; + private String id; + private String title; + private String changeState; + private String taskUserId; + private String operationKey; + private List nodeDataBeans; + + @Override + protected String setTitleName() { + return title; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_todo; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + title = getIntent().getStringExtra("title"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + handleProcessPresenter = new ProcessPersonPresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.setVisibility(View.VISIBLE); + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView); + } + + //处理图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseTodoFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + + if (tag.equals("返回处理") || tag.equals("处置人员")) { + casePersonLayout.setVisibility(View.VISIBLE); + personLine.setVisibility(View.VISIBLE); + + //获取下级处置人员名单 + handleProcessPresenter.onReadyRetrofitRequest(); + } else { + casePersonLayout.setVisibility(View.GONE); + personLine.setVisibility(View.GONE); + } + } + }).build().show(); + } + } + break; + case R.id.casePersonLayout: + if (personBeans != null) { + if (personBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处置人员"); + for (ProcessPersonBean.DataBean dataBean : personBeans) { + sheetBuilder.addItem(dataBean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + caseHandlePersonView.setText(tag); + caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + taskUserId = personBeans.get(position).getId(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + if (optType.equals("处置人员") || optType.equals("返回处理")) { + //选择处理人员时,必选一个处置人员 + String handlePerson = caseHandlePersonView.getText().toString(); + if (handlePerson.equals("")) { + ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); + return; + } + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("处理意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); + break; + } + } + + @Override + public void obtainResultData(ProcessPersonBean resultBean) { + if (resultBean.isSuccess()) { + this.personBeans = resultBean.getData(); + if (personBeans.size() == 0) { + caseHandlePersonView.setText("无处置人员"); + } else { + ProcessPersonBean.DataBean dataBean = personBeans.get(0); + taskUserId = dataBean.getId(); + caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 + } + caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (handleProcessPresenter != null) { + handleProcessPresenter.disposeRetrofitRequest(); + } + if (caseHandlePresenter != null) { + caseHandlePresenter.disposeRetrofitRequest(); + } + if (nextNodePresenter != null) { + nextNodePresenter.disposeRetrofitRequest(); + } + if (audioPlayerView != null) { + audioPlayerView.release(); + } + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java index 12f5b4d..7727898 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java @@ -16,7 +16,7 @@ import com.casic.dcms.bean.PackageOrDeptBean; import com.casic.dcms.mvp.presenter.DeptProcessPresenterImpl; import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; -import com.casic.dcms.ui.DeptProcessDetailActivity; +import com.casic.dcms.ui.DeptTodoDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -125,7 +125,8 @@ fragment.adapter.setOnItemClickListener(new DeptTodoOrHandledAdapter.OnItemClickListener() { @Override public void onClick(int position) { - Intent intent = new Intent(fragment.context, DeptProcessDetailActivity.class); + Intent intent = new Intent(fragment.context, DeptTodoDetailActivity.class); + intent.putExtra("title", Constant.DEPT_PAGE_TITLES[1]); intent.putExtra("id", fragment.dataBeans.get(position).getId()); fragment.startActivity(intent); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java new file mode 100644 index 0000000..7bc167b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java @@ -0,0 +1,170 @@ +package com.casic.dcms.ui.fragment.dept; + +import android.content.Context; +import android.content.Intent; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.DeptTodoOrHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.presenter.DeptTodoPresenterImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; +import com.casic.dcms.ui.DeptTodoDetailActivity; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class DeptCaseTodoFragment extends BaseFragment implements IDeptTodoOrHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private DeptTodoPresenterImpl deptTodoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private DeptTodoOrHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_dept_case; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + deptTodoPresenter = new DeptTodoPresenterImpl(this); + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(DeptCaseTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + DeptCaseTodoFragment fragment = reference.get(); + if (msg.what == Constant.DEPT_DONE) { + fragment.isRefresh = true; + //刷新之后页码重置 + fragment.pageIndex = 1; + fragment.deptTodoPresenter.onReadyRetrofitRequest(fragment.pageIndex); + } else if (msg.what == 20210630) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (fragment.dataBeans.size() == 0) { + fragment.emptyView.show("您暂时没有待办案卷", null); + } else { + fragment.emptyView.hide(); + fragment.adapter = new DeptTodoOrHandledAdapter(fragment.context, fragment.dataBeans); + fragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(fragment.context)); + fragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(fragment.context, DividerItemDecoration.VERTICAL)); + fragment.caseRecyclerView.setAdapter(fragment.adapter); + fragment.adapter.setOnItemClickListener(new DeptTodoOrHandledAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(fragment.context, DeptTodoDetailActivity.class); + intent.putExtra("title", Constant.DEPT_PAGE_TITLES[0]); + intent.putExtra("id", fragment.dataBeans.get(position).getId()); + fragment.startActivity(intent); + } + }); + } + } + } + } + } + + @Override + public void obtainResult(PackageOrDeptBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(20210630); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (deptTodoPresenter != null) { + deptTodoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index e8cd7d5..d207d3d 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -15,7 +15,7 @@ Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CALL_PHONE, Manifest.permission.READ_PHONE_STATE}; public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; - public static final String[] DEPT_PAGE_TITLES = {"待处理", "部门调整批示", "部门授权审核", "已办案卷", "二级缓办待处理", "二级延期待处理"}; + public static final String[] DEPT_PAGE_TITLES = {"待办任务", "待处理", "已办案卷", "部门调整批示", "部门授权审核", "二级缓办待处理", "二级延期待处理"}; public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final String[] SPINNER_ITEMS = {"请选择", "已处理", "无需处理"}; public static final String[] POPUP_LIST_ITEMS = {"一键消警", "报警分布", "窨井列表"}; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 6c69999..63abb77 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.os.Environment; import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; @@ -30,7 +31,6 @@ private static File audioDir; private static File imageDir; private static File waterImageDir; - private static File downloadDir; private static File videoDir; private static int index = 1; @@ -64,13 +64,6 @@ Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹"); } } - downloadDir = new File(parentDir, "DownloadFile"); - if (!downloadDir.exists()) { - boolean mkDownDir = downloadDir.mkdir(); - if (mkDownDir) { - Log.d(TAG, "initFileConfig: 创建DownloadFile文件夹"); - } - } videoDir = new File(parentDir, "CompressVideoFile"); if (!videoDir.exists()) { boolean mkVideoDir = videoDir.mkdir(); @@ -163,20 +156,11 @@ //储存下载文件的目录 private static String getDownloadFilePath() { - if (downloadDir == null) { - File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic"); - if (!parentDir.exists()) { - boolean mkdir = parentDir.mkdir(); - if (mkdir) { - Log.d(TAG, "getDownloadFilePath: 创建Casic文件夹"); - } - } - downloadDir = new File(parentDir, "DownloadFile"); - if (!downloadDir.exists()) { - boolean mkDownDir = downloadDir.mkdir(); - if (mkDownDir) { - Log.d(TAG, "getDownloadFilePath: 创建DownloadFile文件夹"); - } + File downloadDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), ""); + if (!downloadDir.exists()) { + boolean mkdir = downloadDir.mkdir(); + if (mkdir) { + Log.d(TAG, "getDownloadFilePath: 创建文件夹"); } } return downloadDir.toString(); diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index f70d101..db004ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -511,10 +511,10 @@ * http://111.198.10.15:11409/case/workListPage?isShop=1 */ @GET("/case/workListPage") - Observable obtainWorkListPage(@Header("token") String token, - @Query("isShop") String isShop, - @Query("limit") int limit, - @Query("offset") int offset); + Observable obtainPackageWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); /** * 三包已办 @@ -558,6 +558,16 @@ @Field("applySource") String applySource); /** + * 二级派遣员待办案卷 + *

+ * http://111.198.10.15:11409/case/workListPage/?offset=1&limit=15 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("limit") int limit, + @Query("offset") int offset); + + /** * 二级派遣员待处理案卷 *

* http://111.198.10.15:11409/case/toProcessListPage/?offset=1&limit=15 diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 32a93a1..2e2cde7 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -549,10 +549,10 @@ /** * 三包待办 */ - public static Observable getWorkListResult(String isShop, int offset) { + public static Observable getPackageWorkListResult(String isShop, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainWorkListPage(AuthenticationHelper.getToken(), isShop, + return service.obtainPackageWorkListPage(AuthenticationHelper.getToken(), isShop, Constant.PAGE_LIMIT, offset); } @@ -591,6 +591,15 @@ } /** + * 二级派遣员待办案卷 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), Constant.PAGE_LIMIT, offset); + } + + /** * 二级派遣员待处理案卷 */ public static Observable getProcessListResult(int offset) { diff --git a/app/src/main/res/layout/activity_dept_process.xml b/app/src/main/res/layout/activity_dept_process.xml deleted file mode 100644 index b097a6e..0000000 --- a/app/src/main/res/layout/activity_dept_process.xml +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_dept_todo.xml b/app/src/main/res/layout/activity_dept_todo.xml new file mode 100644 index 0000000..b097a6e --- /dev/null +++ b/app/src/main/res/layout/activity_dept_todo.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_package_recycleview.xml b/app/src/main/res/layout/item_package_recycleview.xml index 2d6976a..08ed15d 100644 --- a/app/src/main/res/layout/item_package_recycleview.xml +++ b/app/src/main/res/layout/item_package_recycleview.xml @@ -21,7 +21,7 @@ android:layout_width="80dp" android:layout_height="80dp" android:gravity="center" - android:scaleType="centerInside" /> + android:scaleType="centerCrop" /> - + diff --git a/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java new file mode 100644 index 0000000..a5f4a1e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/DeptTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class DeptTodoModelImpl implements IDeptCaseModel { + + private OnGetCaseListListener listener; + + public DeptTodoModelImpl(OnGetCaseListListener caseListListener) { + this.listener = caseListListener; + } + + public interface OnGetCaseListListener { + void onSuccess(PackageOrDeptBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageOrDeptBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java index 4cafc10..e8c76b9 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -25,7 +25,7 @@ @Override public Subscription sendRetrofitRequest(String isShop, int offset) { - Observable observable = RetrofitServiceManager.getWorkListResult(isShop, offset); + Observable observable = RetrofitServiceManager.getPackageWorkListResult(isShop, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java new file mode 100644 index 0000000..eca4ff8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/DeptTodoPresenterImpl.java @@ -0,0 +1,38 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.DeptTodoModelImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; + +public class DeptTodoPresenterImpl extends BasePresenter implements IDeptCasePresenter, DeptTodoModelImpl.OnGetCaseListListener { + + private IDeptTodoOrHandledView view; + private DeptTodoModelImpl actionModel; + + public DeptTodoPresenterImpl(IDeptTodoOrHandledView deptCaseView) { + this.view = deptCaseView; + actionModel = new DeptTodoModelImpl(this); + } + + //二级待办待处理 + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageOrDeptBean resultBean) { + view.obtainResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java index 5e6fd9c..b11a51a 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAdjustDetailActivity.java @@ -96,7 +96,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[1]; + return Constant.DEPT_PAGE_TITLES[3]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java index de47420..030843e 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptAuthorizeDetailActivity.java @@ -108,7 +108,7 @@ @Override protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[2]; + return Constant.DEPT_PAGE_TITLES[4]; } @Override diff --git a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java index 3de76c2..d47aa72 100644 --- a/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DeptHandleActivity.java @@ -17,6 +17,7 @@ import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; import com.casic.dcms.ui.fragment.dept.DeptCasePostponeFragment; import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; import com.casic.dcms.utils.Constant; import com.google.android.material.tabs.TabLayout; import com.qmuiteam.qmui.widget.QMUITopBarLayout; @@ -57,10 +58,11 @@ @Override public void initData() { List fragmentList = new ArrayList<>(); + fragmentList.add(new DeptCaseTodoFragment());//待办任务 fragmentList.add(new DeptCaseProcessFragment());//待处理 + fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCaseAdjustFragment());//部门调整 fragmentList.add(new DeptCaseAuthorizeFragment());//部门授权 - fragmentList.add(new DeptCaseHandledFragment());//已处理 fragmentList.add(new DeptCasePostponeFragment());//二级缓办 fragmentList.add(new DeptCaseDelayedFragment());//二级延期 SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.DEPT_PAGE_TITLES, fragmentList); diff --git a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java deleted file mode 100644 index c751109..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DeptProcessDetailActivity.java +++ /dev/null @@ -1,440 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageRecycleViewAdapter; -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.bean.ProcessPersonBean; -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.ProcessPersonPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailHandleView; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.mvp.view.ICaseNextNodeView; -import com.casic.dcms.mvp.view.IHandleProcessView; -import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; -import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.ItemDecorationSpace; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class DeptProcessDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { - - private Context context = DeptProcessDetailActivity.this; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseResourceView) - TextView caseResourceView; - @BindView(R.id.caseCreatorView) - TextView caseCreatorView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicRecyclerView) - RecyclerView casePicRecyclerView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.caseHandleRecyclerView) - RecyclerView caseHandleRecyclerView; - @BindView(R.id.optTypeView) - TextView optTypeView; - @BindView(R.id.casePersonLayout) - RelativeLayout casePersonLayout; - @BindView(R.id.personLine) - View personLine; - @BindView(R.id.caseHandlePersonView) - TextView caseHandlePersonView; - @BindView(R.id.optionEditView) - EditText optionEditView; - @BindView(R.id.commonTipsView) - TextView commonTipsView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private ProcessPersonPresenterImpl handleProcessPresenter; - private List personBeans; - private CaseHandlePresenterImpl caseHandlePresenter; - private CaseNextNodePresenterImpl nextNodePresenter; - private String id; - private String changeState; - private String taskUserId; - private String operationKey; - private List nodeDataBeans; - - @Override - protected String setTitleName() { - return Constant.DEPT_PAGE_TITLES[0]; - } - - @Override - public int initLayoutView() { - return R.layout.activity_dept_process; - } - - @Override - public void initData() { - id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - - nextNodePresenter = new CaseNextNodePresenterImpl(this); - handleProcessPresenter = new ProcessPersonPresenterImpl(this); - caseHandlePresenter = new CaseHandlePresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseResourceView.setText(data.getSourceName()); - caseCreatorView.setText(data.getCreateUserName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); - casePicRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); - imageAdapter.setMediaList(urls); - caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); - caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); - caseHandleRecyclerView.setAdapter(imageAdapter); - //九宫格点击事件 - imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.setDeleteView(false); - } - - //获取处置类型 - nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "处理中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseHandleResult(ActionResultBean resultBean) { - if (resultBean.isSuccess()) { - ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); - DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); - DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); - finish(); - } else { - ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - Intent intent = new Intent(this, DisplayMapActivity.class); - intent.putExtra("caseType", data.getEorcName()); - String dataLng = data.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = data.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - startActivity(intent); - break; - case R.id.caseOptTypeLayout: - if (nodeDataBeans != null) { - if (nodeDataBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("操作类型"); - for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { - 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(); - optTypeView.setText(tag); - optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); - changeState = String.valueOf(nodeBean.getNextState()); - operationKey = nodeBean.getOperationKey(); - - if (tag.equals("处置人员")) { - casePersonLayout.setVisibility(View.VISIBLE); - personLine.setVisibility(View.VISIBLE); - - //获取下级处置人员名单 - handleProcessPresenter.onReadyRetrofitRequest(); - } else { - casePersonLayout.setVisibility(View.GONE); - personLine.setVisibility(View.GONE); - } - } - }).build().show(); - } - } - break; - case R.id.casePersonLayout: - if (personBeans != null) { - if (personBeans.size() >= 1) { - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("处置人员"); - for (ProcessPersonBean.DataBean dataBean : personBeans) { - sheetBuilder.addItem(dataBean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - caseHandlePersonView.setText(tag); - caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - taskUserId = personBeans.get(position).getId(); - } - }).build().show(); - } - } - break; - case R.id.commonTipsLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("常见用语") - .addItem("请及时处理") - .addItem("调查后及时回复") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - commonTipsView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - optionEditView.setText(tag); - commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - submitCase(); - break; - } - } - - private void submitCase() { - String optType = optTypeView.getText().toString(); - if (optType.equals("")) { - ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); - return; - } - if (optType.equals("处置人员")) { - //选择处理人员时,必选一个处置人员 - String handlePerson = caseHandlePersonView.getText().toString(); - if (handlePerson.equals("")) { - ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); - return; - } - } - String optionInput = StringHelper.filterString(optionEditView.getText().toString()); - if (optType.equals("申请调整") || optType.equals("申请延期") || optType.equals("申请缓办")) { - if (TextUtils.isEmpty(optionInput)) { - ToastHelper.showToast("调整/延期/缓办的原因必须填写", ToastHelper.WARING); - return; - } - } - caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, - String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); - } - - @Override - public void obtainResultData(ProcessPersonBean resultBean) { - if (resultBean.isSuccess()) { - this.personBeans = resultBean.getData(); - if (personBeans.size() == 0) { - caseHandlePersonView.setText("无处置人员"); - } else { - ProcessPersonBean.DataBean dataBean = personBeans.get(0); - taskUserId = dataBean.getId(); - caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 - } - caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } - } - - @Override - public void obtainNextNodeData(CaseNextNodeBean resultBean) { - if (resultBean.isSuccess()) { - this.nodeDataBeans = resultBean.getData(); - if (nodeDataBeans.size() == 0) { - optTypeView.setText("无下级流转节点"); - } else { - CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); - - operationKey = dataBean.getOperationKey(); - changeState = String.valueOf(dataBean.getNextState()); - optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 - } - optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); - } else { - ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (handleProcessPresenter != null) { - handleProcessPresenter.disposeRetrofitRequest(); - } - if (caseHandlePresenter != null) { - caseHandlePresenter.disposeRetrofitRequest(); - } - if (nextNodePresenter != null) { - nextNodePresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java new file mode 100644 index 0000000..e4df2b6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DeptTodoDetailActivity.java @@ -0,0 +1,438 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.casic.dcms.R; +import com.casic.dcms.adapter.ImageRecycleViewAdapter; +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.bean.ProcessPersonBean; +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.ProcessPersonPresenterImpl; +import com.casic.dcms.mvp.view.ICaseDetailHandleView; +import com.casic.dcms.mvp.view.ICaseDetailView; +import com.casic.dcms.mvp.view.ICaseNextNodeView; +import com.casic.dcms.mvp.view.IHandleProcessView; +import com.casic.dcms.ui.fragment.dept.DeptCaseHandledFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseProcessFragment; +import com.casic.dcms.ui.fragment.dept.DeptCaseTodoFragment; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ItemDecorationSpace; +import com.casic.dcms.utils.JzExoMedia; +import com.casic.dcms.utils.OtherUtils; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.ToastHelper; +import com.casic.dcms.widgets.AudioPlayerView; +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; +import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; +import cn.jzvd.Jzvd; +import cn.jzvd.JzvdStd; + +public class DeptTodoDetailActivity extends BaseCaseActivity implements View.OnClickListener, + ICaseDetailView, IHandleProcessView, ICaseDetailHandleView, ICaseNextNodeView { + + private Context context = this; + @BindView(R.id.caseNumberView) + TextView caseNumberView; + @BindView(R.id.caseResourceView) + TextView caseResourceView; + @BindView(R.id.caseCreatorView) + TextView caseCreatorView; + @BindView(R.id.caseTypeView) + TextView caseTypeView; + @BindView(R.id.caseLargeTypeView) + TextView caseLargeTypeView; + @BindView(R.id.caseSmallTypeView) + TextView caseSmallTypeView; + @BindView(R.id.caseCommunityView) + TextView caseCommunityView; + @BindView(R.id.casePlaceView) + TextView casePlaceView; + @BindView(R.id.caseSituationView) + TextView caseSituationView; + @BindView(R.id.casePicRecyclerView) + RecyclerView casePicRecyclerView; + @BindView(R.id.audioPlayerView) + AudioPlayerView audioPlayerView; + @BindView(R.id.videoPlayerView) + JzvdStd videoPlayerView; + @BindView(R.id.caseHandleRecyclerView) + RecyclerView caseHandleRecyclerView; + @BindView(R.id.optTypeView) + TextView optTypeView; + @BindView(R.id.casePersonLayout) + RelativeLayout casePersonLayout; + @BindView(R.id.personLine) + View personLine; + @BindView(R.id.caseHandlePersonView) + TextView caseHandlePersonView; + @BindView(R.id.optionEditView) + EditText optionEditView; + @BindView(R.id.commonTipsView) + TextView commonTipsView; + @BindView(R.id.submitButton) + QMUIRoundButton submitButton; + + private CaseDetailPresenterImpl caseDetailPresenter; + private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); + private ProcessPersonPresenterImpl handleProcessPresenter; + private List personBeans; + private CaseHandlePresenterImpl caseHandlePresenter; + private CaseNextNodePresenterImpl nextNodePresenter; + private String id; + private String title; + private String changeState; + private String taskUserId; + private String operationKey; + private List nodeDataBeans; + + @Override + protected String setTitleName() { + return title; + } + + @Override + public int initLayoutView() { + return R.layout.activity_dept_todo; + } + + @Override + public void initData() { + id = getIntent().getStringExtra("id"); + title = getIntent().getStringExtra("title"); + caseDetailPresenter = new CaseDetailPresenterImpl(this); + caseDetailPresenter.onReadyRetrofitRequest(id); + + nextNodePresenter = new CaseNextNodePresenterImpl(this); + handleProcessPresenter = new ProcessPersonPresenterImpl(this); + caseHandlePresenter = new CaseHandlePresenterImpl(this); + } + + @Override + public void initEvent() { + submitButton.setChangeAlphaWhenPress(true); + } + + @Override + public void obtainCaseDetailData(CaseDetailBean resultBean) { + if (resultBean.isSuccess()) { + this.data = resultBean.getData().get(0); + caseNumberView.setText(data.getCaseid()); + caseResourceView.setText(data.getSourceName()); + caseCreatorView.setText(data.getCreateUserName()); + caseTypeView.setText(data.getEorcName()); + caseLargeTypeView.setText(data.getCasetypeName()); + caseSmallTypeView.setText(data.getCasetypeDetailName()); + caseCommunityView.setText(data.getCommunityName()); + casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); + caseSituationView.setText(StringHelper.filterString(data.getDescription())); + + String images = data.getFileIdVerify(); + if (!TextUtils.isEmpty(images)) { + ArrayList urls = new ArrayList<>(); + String[] split = images.split(","); + for (String s : split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + casePicRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + casePicRecyclerView.addItemDecoration(new ItemDecorationSpace()); + casePicRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + String audioFile = data.getAudioIdVerify(); + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.setVisibility(View.VISIBLE); + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); + } + + String videoFile = data.getVideoIdVerify(); + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.setVisibility(View.VISIBLE); + String videoUrl = StringHelper.appendCompleteURL(videoFile); + videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(new RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView); + } + + //处理图片 + String handleImages = data.getFileIdProcess(); + if (!TextUtils.isEmpty(handleImages)) { + ArrayList urls = new ArrayList<>(); + String[] split = handleImages.split(","); + for (String s : split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)); + } + } + ImageRecycleViewAdapter imageAdapter = new ImageRecycleViewAdapter(this); + imageAdapter.setMediaList(urls); + caseHandleRecyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + caseHandleRecyclerView.addItemDecoration(new ItemDecorationSpace()); + caseHandleRecyclerView.setAdapter(imageAdapter); + //九宫格点击事件 + imageAdapter.setOnItemClickListener(new ImageRecycleViewAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + OtherUtils.showBigImage(context, position, urls); + } + }); + imageAdapter.setDeleteView(false); + } + + //获取处置类型 + nextNodePresenter.onReadyRetrofitRequest(String.valueOf(data.getCaseState())); + } + } + + @Override + public void showProgress() { + OtherUtils.showLoadingDialog(this, "处理中,请稍后"); + } + + @Override + public void hideProgress() { + OtherUtils.dismissLoadingDialog(); + } + + @Override + public void obtainCaseHandleResult(ActionResultBean resultBean) { + if (resultBean.isSuccess()) { + ToastHelper.showToast("案卷处理成功", ToastHelper.SUCCESS); + DeptCaseTodoFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseProcessFragment.sendEmptyMessage(Constant.DEPT_DONE); + DeptCaseHandledFragment.sendEmptyMessage(Constant.DEPT_DONE); + finish(); + } else { + ToastHelper.showToast("案卷处理失败,请检查", ToastHelper.ERROR); + } + } + + @Override + public void obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR); + } + + @OnClick({R.id.locationMapView, R.id.caseOptTypeLayout, R.id.commonTipsLayout, R.id.casePersonLayout, R.id.submitButton}) + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.locationMapView: + Intent intent = new Intent(this, DisplayMapActivity.class); + intent.putExtra("caseType", data.getEorcName()); + String dataLng = data.getLng(); + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("案卷经度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lng", Double.parseDouble(dataLng)); + String dataLat = data.getLat(); + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("案卷纬度异常", ToastHelper.ERROR); + return; + } + intent.putExtra("lat", Double.parseDouble(dataLat)); + startActivity(intent); + break; + case R.id.caseOptTypeLayout: + if (nodeDataBeans != null) { + if (nodeDataBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("操作类型"); + for (CaseNextNodeBean.DataBean dataBean : nodeDataBeans) { + 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(); + optTypeView.setText(tag); + optTypeView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + CaseNextNodeBean.DataBean nodeBean = nodeDataBeans.get(position); + changeState = String.valueOf(nodeBean.getNextState()); + operationKey = nodeBean.getOperationKey(); + + if (tag.equals("返回处理") || tag.equals("处置人员")) { + casePersonLayout.setVisibility(View.VISIBLE); + personLine.setVisibility(View.VISIBLE); + + //获取下级处置人员名单 + handleProcessPresenter.onReadyRetrofitRequest(); + } else { + casePersonLayout.setVisibility(View.GONE); + personLine.setVisibility(View.GONE); + } + } + }).build().show(); + } + } + break; + case R.id.casePersonLayout: + if (personBeans != null) { + if (personBeans.size() >= 1) { + QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); + sheetBuilder.setTitle("处置人员"); + for (ProcessPersonBean.DataBean dataBean : personBeans) { + sheetBuilder.addItem(dataBean.getName()); + } + sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + caseHandlePersonView.setText(tag); + caseHandlePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + taskUserId = personBeans.get(position).getId(); + } + }).build().show(); + } + } + break; + case R.id.commonTipsLayout: + new QMUIBottomSheet.BottomListSheetBuilder(this) + .setTitle("常见用语") + .addItem("请及时处理") + .addItem("调查后及时回复") + .setGravityCenter(true) + .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { + @Override + public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { + dialog.dismiss(); + commonTipsView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + + optionEditView.setText(tag); + commonTipsView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); + } + }).build().show(); + break; + case R.id.submitButton: + String optType = optTypeView.getText().toString(); + if (optType.equals("")) { + ToastHelper.showToast("还未选择操作类型", ToastHelper.WARING); + return; + } + if (optType.equals("处置人员") || optType.equals("返回处理")) { + //选择处理人员时,必选一个处置人员 + String handlePerson = caseHandlePersonView.getText().toString(); + if (handlePerson.equals("")) { + ToastHelper.showToast("当前状态必须指定处置员", ToastHelper.WARING); + return; + } + } + String optionInput = StringHelper.filterString(optionEditView.getText().toString()); + if (TextUtils.isEmpty(optionInput)) { + ToastHelper.showToast("处理意见必须填写", ToastHelper.WARING); + return; + } + caseHandlePresenter.onReadyDispatcherRetrofitRequest(data.getProcessId(), id, + String.valueOf(data.getCaseState()), changeState, optionInput, operationKey, taskUserId); + break; + } + } + + @Override + public void obtainResultData(ProcessPersonBean resultBean) { + if (resultBean.isSuccess()) { + this.personBeans = resultBean.getData(); + if (personBeans.size() == 0) { + caseHandlePersonView.setText("无处置人员"); + } else { + ProcessPersonBean.DataBean dataBean = personBeans.get(0); + taskUserId = dataBean.getId(); + caseHandlePersonView.setText(dataBean.getName());//默认选择第一个 + } + caseHandlePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } + } + + @Override + public void obtainNextNodeData(CaseNextNodeBean resultBean) { + if (resultBean.isSuccess()) { + this.nodeDataBeans = resultBean.getData(); + if (nodeDataBeans.size() == 0) { + optTypeView.setText("无下级流转节点"); + } else { + CaseNextNodeBean.DataBean dataBean = nodeDataBeans.get(0); + + operationKey = dataBean.getOperationKey(); + changeState = String.valueOf(dataBean.getNextState()); + optTypeView.setText(dataBean.getNextOperation());//默认选择第一个 + } + optTypeView.setTextColor(ContextCompat.getColor(this, R.color.textColor)); + } else { + ToastHelper.showToast("该案卷无下级流转节点", ToastHelper.ERROR); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (caseDetailPresenter != null) { + caseDetailPresenter.disposeRetrofitRequest(); + } + if (handleProcessPresenter != null) { + handleProcessPresenter.disposeRetrofitRequest(); + } + if (caseHandlePresenter != null) { + caseHandlePresenter.disposeRetrofitRequest(); + } + if (nextNodePresenter != null) { + nextNodePresenter.disposeRetrofitRequest(); + } + if (audioPlayerView != null) { + audioPlayerView.release(); + } + } + + @Override + public void onBackPressed() { + if (Jzvd.backPress()) { + return; + } + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + Jzvd.releaseAllVideos(); + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java index 12f5b4d..7727898 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseProcessFragment.java @@ -16,7 +16,7 @@ import com.casic.dcms.bean.PackageOrDeptBean; import com.casic.dcms.mvp.presenter.DeptProcessPresenterImpl; import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; -import com.casic.dcms.ui.DeptProcessDetailActivity; +import com.casic.dcms.ui.DeptTodoDetailActivity; import com.casic.dcms.utils.Constant; import com.casic.dcms.utils.ToastHelper; import com.qmuiteam.qmui.widget.QMUIEmptyView; @@ -125,7 +125,8 @@ fragment.adapter.setOnItemClickListener(new DeptTodoOrHandledAdapter.OnItemClickListener() { @Override public void onClick(int position) { - Intent intent = new Intent(fragment.context, DeptProcessDetailActivity.class); + Intent intent = new Intent(fragment.context, DeptTodoDetailActivity.class); + intent.putExtra("title", Constant.DEPT_PAGE_TITLES[1]); intent.putExtra("id", fragment.dataBeans.get(position).getId()); fragment.startActivity(intent); } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java new file mode 100644 index 0000000..7bc167b --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/dept/DeptCaseTodoFragment.java @@ -0,0 +1,170 @@ +package com.casic.dcms.ui.fragment.dept; + +import android.content.Context; +import android.content.Intent; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.DeptTodoOrHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageOrDeptBean; +import com.casic.dcms.mvp.presenter.DeptTodoPresenterImpl; +import com.casic.dcms.mvp.view.IDeptTodoOrHandledView; +import com.casic.dcms.ui.DeptTodoDetailActivity; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class DeptCaseTodoFragment extends BaseFragment implements IDeptTodoOrHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private DeptTodoPresenterImpl deptTodoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private DeptTodoOrHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_dept_case; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + deptTodoPresenter = new DeptTodoPresenterImpl(this); + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + deptTodoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(DeptCaseTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + DeptCaseTodoFragment fragment = reference.get(); + if (msg.what == Constant.DEPT_DONE) { + fragment.isRefresh = true; + //刷新之后页码重置 + fragment.pageIndex = 1; + fragment.deptTodoPresenter.onReadyRetrofitRequest(fragment.pageIndex); + } else if (msg.what == 20210630) { + if (fragment.isRefresh || fragment.isLoadMore) { + fragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (fragment.dataBeans.size() == 0) { + fragment.emptyView.show("您暂时没有待办案卷", null); + } else { + fragment.emptyView.hide(); + fragment.adapter = new DeptTodoOrHandledAdapter(fragment.context, fragment.dataBeans); + fragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(fragment.context)); + fragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(fragment.context, DividerItemDecoration.VERTICAL)); + fragment.caseRecyclerView.setAdapter(fragment.adapter); + fragment.adapter.setOnItemClickListener(new DeptTodoOrHandledAdapter.OnItemClickListener() { + @Override + public void onClick(int position) { + Intent intent = new Intent(fragment.context, DeptTodoDetailActivity.class); + intent.putExtra("title", Constant.DEPT_PAGE_TITLES[0]); + intent.putExtra("id", fragment.dataBeans.get(position).getId()); + fragment.startActivity(intent); + } + }); + } + } + } + } + } + + @Override + public void obtainResult(PackageOrDeptBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(20210630); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (deptTodoPresenter != null) { + deptTodoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index e8cd7d5..d207d3d 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -15,7 +15,7 @@ Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CALL_PHONE, Manifest.permission.READ_PHONE_STATE}; public static final String[] CASE_PAGE_TITLES = {"待办案卷", "已办案卷"}; - public static final String[] DEPT_PAGE_TITLES = {"待处理", "部门调整批示", "部门授权审核", "已办案卷", "二级缓办待处理", "二级延期待处理"}; + public static final String[] DEPT_PAGE_TITLES = {"待办任务", "待处理", "已办案卷", "部门调整批示", "部门授权审核", "二级缓办待处理", "二级延期待处理"}; public static final String[] CHART_PAGE_TITLES = {"表格", "饼状图"}; public static final String[] SPINNER_ITEMS = {"请选择", "已处理", "无需处理"}; public static final String[] POPUP_LIST_ITEMS = {"一键消警", "报警分布", "窨井列表"}; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 6c69999..63abb77 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.os.Environment; import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; @@ -30,7 +31,6 @@ private static File audioDir; private static File imageDir; private static File waterImageDir; - private static File downloadDir; private static File videoDir; private static int index = 1; @@ -64,13 +64,6 @@ Log.d(TAG, "initFileConfig: 创建WaterImageFile文件夹"); } } - downloadDir = new File(parentDir, "DownloadFile"); - if (!downloadDir.exists()) { - boolean mkDownDir = downloadDir.mkdir(); - if (mkDownDir) { - Log.d(TAG, "initFileConfig: 创建DownloadFile文件夹"); - } - } videoDir = new File(parentDir, "CompressVideoFile"); if (!videoDir.exists()) { boolean mkVideoDir = videoDir.mkdir(); @@ -163,20 +156,11 @@ //储存下载文件的目录 private static String getDownloadFilePath() { - if (downloadDir == null) { - File parentDir = new File(context.getFilesDir().getAbsolutePath(), "Casic"); - if (!parentDir.exists()) { - boolean mkdir = parentDir.mkdir(); - if (mkdir) { - Log.d(TAG, "getDownloadFilePath: 创建Casic文件夹"); - } - } - downloadDir = new File(parentDir, "DownloadFile"); - if (!downloadDir.exists()) { - boolean mkDownDir = downloadDir.mkdir(); - if (mkDownDir) { - Log.d(TAG, "getDownloadFilePath: 创建DownloadFile文件夹"); - } + File downloadDir = new File(context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), ""); + if (!downloadDir.exists()) { + boolean mkdir = downloadDir.mkdir(); + if (mkdir) { + Log.d(TAG, "getDownloadFilePath: 创建文件夹"); } } return downloadDir.toString(); diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index f70d101..db004ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -511,10 +511,10 @@ * http://111.198.10.15:11409/case/workListPage?isShop=1 */ @GET("/case/workListPage") - Observable obtainWorkListPage(@Header("token") String token, - @Query("isShop") String isShop, - @Query("limit") int limit, - @Query("offset") int offset); + Observable obtainPackageWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); /** * 三包已办 @@ -558,6 +558,16 @@ @Field("applySource") String applySource); /** + * 二级派遣员待办案卷 + *

+ * http://111.198.10.15:11409/case/workListPage/?offset=1&limit=15 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("limit") int limit, + @Query("offset") int offset); + + /** * 二级派遣员待处理案卷 *

* http://111.198.10.15:11409/case/toProcessListPage/?offset=1&limit=15 diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 32a93a1..2e2cde7 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -549,10 +549,10 @@ /** * 三包待办 */ - public static Observable getWorkListResult(String isShop, int offset) { + public static Observable getPackageWorkListResult(String isShop, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); - return service.obtainWorkListPage(AuthenticationHelper.getToken(), isShop, + return service.obtainPackageWorkListPage(AuthenticationHelper.getToken(), isShop, Constant.PAGE_LIMIT, offset); } @@ -591,6 +591,15 @@ } /** + * 二级派遣员待办案卷 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), Constant.PAGE_LIMIT, offset); + } + + /** * 二级派遣员待处理案卷 */ public static Observable getProcessListResult(int offset) { diff --git a/app/src/main/res/layout/activity_dept_process.xml b/app/src/main/res/layout/activity_dept_process.xml deleted file mode 100644 index b097a6e..0000000 --- a/app/src/main/res/layout/activity_dept_process.xml +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_dept_todo.xml b/app/src/main/res/layout/activity_dept_todo.xml new file mode 100644 index 0000000..b097a6e --- /dev/null +++ b/app/src/main/res/layout/activity_dept_todo.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_package_recycleview.xml b/app/src/main/res/layout/item_package_recycleview.xml index 2d6976a..08ed15d 100644 --- a/app/src/main/res/layout/item_package_recycleview.xml +++ b/app/src/main/res/layout/item_package_recycleview.xml @@ -21,7 +21,7 @@ android:layout_width="80dp" android:layout_height="80dp" android:gravity="center" - android:scaleType="centerInside" /> + android:scaleType="centerCrop" /> - + path="files/Download" /> \ No newline at end of file