From 1b608db41148e0dc1e5e133de525114394cb3634 Mon Sep 17 00:00:00 2001 From: adam Date: Tue, 17 May 2022 16:02:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=B2=E5=8A=9E=E3=80=81=E6=9C=AA=E5=8A=9E?= =?UTF-8?q?=E3=80=81=E5=B7=B2=E9=98=85=E3=80=81=E6=9C=AA=E9=98=85=E3=80=81?= =?UTF-8?q?=E5=8F=91=E8=B5=B7=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../baselib/constant/PathConfig.java | 6 + .../baselib/core/retrofit_net/BaseUrlApi.java | 8 +- .../com/tenlionsoft/baselib/utils/UIUtil.java | 14 + oamodule/src/main/AndroidManifest.xml | 5 + .../activity/common/FunctionListActivity.java | 9 +- .../activity/common/WebViewActivity.java | 37 +- .../activity/oaflow/ApplyOaFlowActivity.java | 218 ++++++++++ .../activity/oaflow/MineDoneActivity.java | 37 ++ .../activity/oaflow/MineReadActivity.java | 339 ++++++++++++++++ .../activity/oaflow/MineTodoActivity.java | 374 ++++++++++++++++++ .../activity/oaflow/MineUnreadActivity.java | 34 ++ .../oamodule/adapter/ApplyOaFlowAdapter.java | 38 ++ .../oamodule/adapter/MineReadAdapter.java | 49 +++ .../oamodule/adapter/MineTodoAdapter.java | 54 +++ .../oamodule/beans/MineDoneBean.java | 205 ++++++++++ .../oamodule/beans/MineReadBean.java | 161 ++++++++ .../oamodule/beans/MineTodoBean.java | 223 +++++++++++ .../oamodule/beans/OaFlowApplyBean.java | 124 ++++++ .../oamodule/fragments/OaMainFragment.java | 12 +- .../oamodule/holder/ApplyOaFlowHolder.java | 26 ++ .../oamodule/holder/MineReadHolder.java | 31 ++ .../oamodule/holder/MineTodoHolder.java | 31 ++ .../com/tenlionsoft/oamodule/net/OAApi.java | 43 ++ .../res/layout/activity_apply_oa_flow.xml | 38 ++ .../main/res/layout/activity_mine_done.xml | 38 ++ .../main/res/layout/activity_mine_read.xml | 121 ++++++ .../main/res/layout/activity_mine_ucoming.xml | 121 ++++++ .../main/res/layout/activity_mine_unread.xml | 38 ++ .../main/res/layout/item_apply_oa_flow.xml | 16 + .../src/main/res/layout/item_mine_read.xml | 43 ++ oamodule/src/main/res/layout/item_todo.xml | 43 ++ oamodule/src/main/res/values/strings.xml | 9 +- 32 files changed, 2525 insertions(+), 20 deletions(-) create mode 100644 oamodule/src/main/java/com/tenlionsoft/oamodule/activity/oaflow/ApplyOaFlowActivity.java create mode 100644 oamodule/src/main/java/com/tenlionsoft/oamodule/activity/oaflow/MineDoneActivity.java create mode 100644 oamodule/src/main/java/com/tenlionsoft/oamodule/activity/oaflow/MineReadActivity.java create mode 100644 oamodule/src/main/java/com/tenlionsoft/oamodule/activity/oaflow/MineTodoActivity.java create mode 100644 oamodule/src/main/java/com/tenlionsoft/oamodule/activity/oaflow/MineUnreadActivity.java create mode 100644 oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/ApplyOaFlowAdapter.java create mode 100644 oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/MineReadAdapter.java create mode 100644 oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/MineTodoAdapter.java create mode 100644 oamodule/src/main/java/com/tenlionsoft/oamodule/beans/MineDoneBean.java create mode 100644 oamodule/src/main/java/com/tenlionsoft/oamodule/beans/MineReadBean.java create mode 100644 oamodule/src/main/java/com/tenlionsoft/oamodule/beans/MineTodoBean.java create mode 100644 oamodule/src/main/java/com/tenlionsoft/oamodule/beans/OaFlowApplyBean.java create mode 100644 oamodule/src/main/java/com/tenlionsoft/oamodule/holder/ApplyOaFlowHolder.java create mode 100644 oamodule/src/main/java/com/tenlionsoft/oamodule/holder/MineReadHolder.java create mode 100644 oamodule/src/main/java/com/tenlionsoft/oamodule/holder/MineTodoHolder.java create mode 100644 oamodule/src/main/res/layout/activity_apply_oa_flow.xml create mode 100644 oamodule/src/main/res/layout/activity_mine_done.xml create mode 100644 oamodule/src/main/res/layout/activity_mine_read.xml create mode 100644 oamodule/src/main/res/layout/activity_mine_ucoming.xml create mode 100644 oamodule/src/main/res/layout/activity_mine_unread.xml create mode 100644 oamodule/src/main/res/layout/item_apply_oa_flow.xml create mode 100644 oamodule/src/main/res/layout/item_mine_read.xml create mode 100644 oamodule/src/main/res/layout/item_todo.xml diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/constant/PathConfig.java b/baselib/src/main/java/com/tenlionsoft/baselib/constant/PathConfig.java index 954a40e..5da824f 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/constant/PathConfig.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/constant/PathConfig.java @@ -207,6 +207,11 @@ public class PathConfig { public static final String PATH_MODULE_OA_ACTIVITY_FUNCTION_LIST = "/oamodule/activity/functionList";//功能列表 public static final String PATH_MODULE_OA_ACTIVITY_WEB = "/oamodule/activity/webPage";//webview页面 + public static final String PATH_MODULE_OA_ACTIVITY_OAFLOW_MINE_DONE = "/oamodule/activity/mineDone";//我的已办 + public static final String PATH_MODULE_OA_ACTIVITY_OAFLOW_MINE_TODO = "/oamodule/activity/mineUpcoming";//我的待办 + public static final String PATH_MODULE_OA_ACTIVITY_OAFLOW_MINE_READ = "/oamodule/activity/mineRead";//我的经阅 + public static final String PATH_MODULE_OA_ACTIVITY_OAFLOW_MINE_UNREAD = "/oamodule/activity/mineUnread";//我的待阅 + public static final String PATH_MODULE_OA_ACTIVITY_OAFLOW_APPLY_FLOW = "/oamodule/activity/applyFlow";//发起流程 /*====================================================平板页面===============================================================*/ @@ -271,4 +276,5 @@ public class PathConfig { public static final String PATH_MODULE_PAD_OA_FRAGMENT_NEWS = "/oamodule/fragment/newsCenter";//新闻资讯 public static final String PATH_MODULE_PAD_OA_FRAGMENT_NEWS_DETAIL = "/oamodule/fragment/newsDetail";//新闻详情 + } diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/BaseUrlApi.java b/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/BaseUrlApi.java index 3a79609..700db4a 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/BaseUrlApi.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/core/retrofit_net/BaseUrlApi.java @@ -7,9 +7,9 @@ package com.tenlionsoft.baselib.core.retrofit_net; */ public class BaseUrlApi { - public static final String IP = "http://192.168.0.120:8080/";/* 测试IP */ - // public static final String IP = "http://10.25.242.183:80/";/* 测试IP */ -// public static final String IP = "http://www.wlcbsyzl.cn/";/* 正式IP */ + public static final String IP = "http://192.168.0.120:8080/";/* 测试IP */ +// public static final String IP = "http://192.168.0.103:7008/";/* 测试IP */ + // public static final String IP = "http://www.wlcbsyzl.cn/";/* 正式IP */ public static final String SYS_USERCENTER = "usercenter/"; public static final String SYS_POPULATION = "population/";/*人口系统*/ public static final String SYS_CASE = "case/";/*事件部件*/ @@ -56,7 +56,7 @@ public class BaseUrlApi { public static final String SMART_CONSULT_URL = "https://www.cispirit.com/IntelligentConsulting"; public static final String APP_VERSION_ID = "2939f6a7-ae98-4e64-8298-200f83523d1a";/*测试App下载码*/ -// public static final String APP_VERSION_ID = "c16826e7-8cfb-4db1-8844-09d2be697bc7";/* 155 测试App下载码*/ +// public static final String APP_VERSION_ID = "99e2beda-9cd7-48c2-a08a-c78f333d7beb";/* 155 测试App下载码*/ // public static final String APP_VERSION_ID = "912bf7eb-5c89-4dbf-8835-de2474a029a6";/*正式App下载码*/ /*======百度定位city-code=======*/ diff --git a/baselib/src/main/java/com/tenlionsoft/baselib/utils/UIUtil.java b/baselib/src/main/java/com/tenlionsoft/baselib/utils/UIUtil.java index 3702fb1..ffb4c5e 100755 --- a/baselib/src/main/java/com/tenlionsoft/baselib/utils/UIUtil.java +++ b/baselib/src/main/java/com/tenlionsoft/baselib/utils/UIUtil.java @@ -2,7 +2,9 @@ package com.tenlionsoft.baselib.utils; import android.app.ProgressDialog; import android.content.Context; +import android.graphics.Paint; import android.os.Handler; +import android.widget.TextView; import android.widget.Toast; import com.tenlionsoft.baselib.core.widget.base.CustomDialog; @@ -85,4 +87,16 @@ public class UIUtil { }); } + public static void setTextBold(TextView tv) { + try { + if (tv != null) { + Paint paint = tv.getPaint(); + if (paint != null) paint.setFakeBoldText(true); + tv.invalidate(); + } + } catch (Exception e) { + + } + + } } diff --git a/oamodule/src/main/AndroidManifest.xml b/oamodule/src/main/AndroidManifest.xml index 080a693..11c673b 100644 --- a/oamodule/src/main/AndroidManifest.xml +++ b/oamodule/src/main/AndroidManifest.xml @@ -3,6 +3,11 @@ package="com.tenlionsoft.oamodule"> + + + + + mDatas; + private ApplyOaFlowAdapter mAdapter; + private int mCurrentPage = 1; + private String mKeywords = ""; + + @Override + protected int setLayoutId() { + return R.layout.activity_apply_oa_flow; + } + + @Override + public void initData() { + ButterKnife.bind(this); + mTvBaseTitle.setText("发起流程"); + mSrlContent.setOnRefreshListener(v -> doRefresh()); + mSrlContent.setOnLoadMoreListener(v -> doLoadMore()); + refreshView(STATE_LOAD_SUCCESS); + mCsvState.setState(CustomStateView.STATE_LOAD); + mDatas = new ArrayList<>(); + mAdapter = new ApplyOaFlowAdapter(mActivity, mDatas); + mRlvContent.setLayoutManager(new LinearLayoutManager(mActivity)); + mRlvContent.setAdapter(mAdapter); + mAdapter.addOnItemClickListener(b -> { +// {processDefinitionId} {formCode} {formVersion} + String url = String.format(mActivity.getResources() + .getString(R.string.apply_flow), + b.getProcessDefinitionId(), + b.getFormCode(), + b.getFormVersion() + "", + UserLgUtils.getToken()); + String path = BaseUrlApi.BASE_OA + url; + LogUtils.e(path); + ARouter.getInstance() + .build(PathConfig.PATH_MODULE_OA_ACTIVITY_WEB) + .withString("title", b.getName()) + .withString("url", path) + .navigation(mActivity, 12); + }); + doRefresh(); + mEtBaseSearchCancel.setOnEditorActionListener((v, actionId, event) -> { + if (actionId == EditorInfo.IME_ACTION_SEARCH) { + hideSoftKeyboard(); + mEtBaseSearchCancel.clearFocus(); + mKeywords = v.getText().toString(); + doRefresh(); + return true; + } else { + return false; + } + }); + mTvBaseSearchCancel.setOnClickListener(v -> { + mEtBaseSearchCancel.setText(""); + mEtBaseSearchCancel.clearFocus(); + mKeywords = ""; + doRefresh(); + }); + + } + + + private void doLoadMore() { + getOaFlowList(mCurrentPage); + } + + private void doRefresh() { + mDatas.clear(); + mAdapter.setData(mDatas); + getOaFlowList(1); + } + + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable @org.jetbrains.annotations.Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (RESULT_OK == resultCode) { + if (requestCode == 12) { + doRefresh(); + } + } + } + + private void getOaFlowList(int currentPage) { + mCurrentPage = currentPage; + RetrofitManager.getInstance() + .create(OAApi.class) + .getOaFLowList(mKeywords, mCurrentPage + "") + .compose(RxTransformer.getTransformer()) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull OaFlowApplyBean listBean) { + if (listBean.getRows() != null && listBean.getRows().size() > 0) { + ++mCurrentPage; + if (currentPage == 1) { + mDatas.clear(); + mDatas.addAll(listBean.getRows()); + } else { + mDatas.addAll(listBean.getRows()); + } + mCsvState.setState(CustomStateView.STATE_SUCCESS); + mAdapter.notifyDataSetChanged(); + mSrlContent.finishRefresh(); + if (mDatas.size() >= listBean.getTotal()) { + mSrlContent.finishLoadMore(); + mSrlContent.setNoMoreData(true); + } else { + mSrlContent.finishLoadMore(); + mSrlContent.setNoMoreData(false); + } + } else { + mSrlContent.finishRefresh(); + mSrlContent.finishLoadMore(); + if (currentPage > 1) { + mSrlContent.setNoMoreData(true); + } else { + if (TextUtils.isEmpty(mKeywords)) { + //无数据 + mCsvState.setState(CustomStateView.STATE_EMPTY); + } else { + mCsvState.setState(CustomStateView.STATE_EMPTY); + ToastUtils.show("未查询到相关内容"); + } + } + } + } + + @Override + public void onError(@NonNull Throwable e) { + mSrlContent.finishLoadMore(); + mSrlContent.finishRefresh(); + ExceptionHandler.handleException(e); + mCsvState.setState(CustomStateView.STATE_ERROR); + } + + @Override + public void onComplete() { + + } + }); + } + + @Override + protected void doSearchByTitle() { + + } + + @Override + protected void clearSearch() { + + } +} \ No newline at end of file diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/oaflow/MineDoneActivity.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/oaflow/MineDoneActivity.java new file mode 100644 index 0000000..22dbc5a --- /dev/null +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/oaflow/MineDoneActivity.java @@ -0,0 +1,37 @@ +package com.tenlionsoft.oamodule.activity.oaflow; + +import com.alibaba.android.arouter.facade.annotation.Route; +import com.tenlionsoft.baselib.constant.PathConfig; +import com.tenlionsoft.baselib.core.widget.base.BaseActivity; +import com.tenlionsoft.oamodule.R; + +/** + * 作者: Adam + * 日期: 2022年05月16日16:34:14 + * 邮箱: itgaojian@163.com + * 描述: 我的已办 + */ +@Route(path = PathConfig.PATH_MODULE_OA_ACTIVITY_OAFLOW_MINE_DONE) +public class MineDoneActivity extends BaseActivity { + + + @Override + protected int setLayoutId() { + return R.layout.activity_mine_done; + } + + @Override + public void initData() { + + } + + @Override + protected void doSearchByTitle() { + + } + + @Override + protected void clearSearch() { + + } +} \ No newline at end of file diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/oaflow/MineReadActivity.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/oaflow/MineReadActivity.java new file mode 100644 index 0000000..9526661 --- /dev/null +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/oaflow/MineReadActivity.java @@ -0,0 +1,339 @@ +package com.tenlionsoft.oamodule.activity.oaflow; + +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.view.inputmethod.EditorInfo; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.alibaba.android.arouter.facade.annotation.Route; +import com.gyf.immersionbar.ImmersionBar; +import com.hjq.toast.ToastUtils; +import com.scwang.smart.refresh.layout.SmartRefreshLayout; +import com.tenlionsoft.baselib.constant.PathConfig; +import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; +import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer; +import com.tenlionsoft.baselib.core.widget.base.BaseActivity; +import com.tenlionsoft.baselib.core.widget.views.CustomStateView; +import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.LogUtils; +import com.tenlionsoft.oamodule.R; +import com.tenlionsoft.oamodule.R2; +import com.tenlionsoft.oamodule.adapter.MineReadAdapter; +import com.tenlionsoft.oamodule.beans.MineReadBean; +import com.tenlionsoft.oamodule.net.OAApi; + +import java.util.ArrayList; +import java.util.List; + +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import butterknife.BindView; +import butterknife.ButterKnife; +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; + +/** + * 作者: Adam + * 日期: 2022年05月16日16:36:56 + * 邮箱: itgaojian@163.com + * 描述: 我的待阅与已阅 + */ +@Route(path = PathConfig.PATH_MODULE_OA_ACTIVITY_OAFLOW_MINE_READ) +public class MineReadActivity extends BaseActivity { + + + @BindView(R2.id.iv_back) + ImageView mIvBack; + @BindView(R2.id.rb_apply) + RadioButton mRbApply; + @BindView(R2.id.rb_mine) + RadioButton mRbMine; + @BindView(R2.id.rg_type) + RadioGroup mRgType; + @BindView(R2.id.rl_content_title) + RelativeLayout mRlContentTitle; + @BindView(R2.id.et_base_search_cancel) + EditText mEtBaseSearchCancel; + @BindView(R2.id.tv_base_search_cancel) + TextView mTvBaseSearchCancel; + @BindView(R2.id.ll_base_search_cancel) + LinearLayout mLlBaseSearchCancel; + @BindView(R2.id.rlv_content) + RecyclerView mRlvContent; + @BindView(R2.id.srl_content) + SmartRefreshLayout mSrlContent; + @BindView(R2.id.csv_state) + CustomStateView mCsvState; + + + private List mDatas; + private int mType = 1;//1我的待阅 2我的已阅 + private MineReadAdapter mAdapter; + private int mCurrentPage = 1; + private String mKeywords = ""; + + @Override + protected int setLayoutId() { + return R.layout.activity_mine_read; + } + + @Override + public void initData() { + ButterKnife.bind(this); + mRlTitleBar.setVisibility(View.GONE); + ImmersionBar.with(this) + .statusBarDarkFont(true) + .statusBarColor(R.color.gray_bg) + .titleBar(mRlContentTitle) + .init(); + refreshView(STATE_LOAD_SUCCESS); + mCsvState.setState(CustomStateView.STATE_LOAD); + initViews(); + } + + /** + * 初始化页面 + */ + private void initViews() { + mIvBack.setOnClickListener(v -> finish()); + mDatas = new ArrayList<>(); + mAdapter = new MineReadAdapter(mActivity, mDatas); + mRlvContent.setLayoutManager(new LinearLayoutManager(mActivity)); + mRlvContent.setAdapter(mAdapter); + mRgType.setOnCheckedChangeListener((group, checkedId) -> { + if (checkedId == R.id.rb_apply) { + //我发起的 + mType = 1; + } else if (checkedId == R.id.rb_mine) { + //我接受的 + mType = 2; + } + //重置搜索条件 + resetCondition(); + }); + mSrlContent.setOnRefreshListener(v -> doRefresh()); + mSrlContent.setOnLoadMoreListener(v -> doLoadMore()); + + mAdapter.addOnItemClickListener(o -> { + + }); + doRefresh(); + + mEtBaseSearchCancel.setOnEditorActionListener((v, actionId, event) -> { + LogUtils.e("搜索==" + actionId); + if (actionId == EditorInfo.IME_ACTION_SEARCH) { + hideSoftKeyboard(); + mEtBaseSearchCancel.clearFocus(); + mKeywords = v.getText().toString(); + doRefresh(); + return true; + } else { + return false; + } + }); + mTvBaseSearchCancel.setOnClickListener(v -> { + mEtBaseSearchCancel.setText(""); + mEtBaseSearchCancel.clearFocus(); + mKeywords = ""; + doRefresh(); + }); + } + + + private void resetCondition() { + mEtBaseSearchCancel.setText(""); + mDatas.clear(); + mCsvState.setState(CustomStateView.STATE_LOAD); + mAdapter.setData(mDatas); + doRefresh(); + } + + + /** + * 加载更多 + */ + private void doLoadMore() { + if (mType == 1) { + getMineUnReadList(mCurrentPage); + } else { + getMineReadList(mCurrentPage); + } + } + + + /** + * 刷新 + */ + private void doRefresh() { + mDatas.clear(); + mAdapter.setData(mDatas); + if (mType == 1) { + getMineUnReadList(1); + } else { + getMineReadList(1); + } + } + + + private void getMineUnReadList(int currentPage) { + mCurrentPage = currentPage; + RetrofitManager.getInstance() + .create(OAApi.class) + .getMineUnReadList(mKeywords, mCurrentPage + "") + .compose(RxTransformer.getTransformer()) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull MineReadBean listBean) { + if (listBean.getRows() != null && listBean.getRows().size() > 0) { + ++mCurrentPage; + if (currentPage == 1) { + mDatas.clear(); + mDatas.addAll(listBean.getRows()); + } else { + mDatas.addAll(listBean.getRows()); + } + mCsvState.setState(CustomStateView.STATE_SUCCESS); + mAdapter.notifyDataSetChanged(); + mSrlContent.finishRefresh(); + if (mDatas.size() >= listBean.getTotal()) { + mSrlContent.finishLoadMore(); + mSrlContent.setNoMoreData(true); + } else { + mSrlContent.finishLoadMore(); + mSrlContent.setNoMoreData(false); + } + } else { + mSrlContent.finishRefresh(); + mSrlContent.finishLoadMore(); + if (currentPage > 1) { + mSrlContent.setNoMoreData(true); + } else { + if (TextUtils.isEmpty(mKeywords)) { + //无数据 + mCsvState.setState(CustomStateView.STATE_EMPTY); + } else { + mCsvState.setState(CustomStateView.STATE_EMPTY); + ToastUtils.show("未查询到相关内容"); + } + } + } + } + + @Override + public void onError(@NonNull Throwable e) { + mSrlContent.finishLoadMore(); + mSrlContent.finishRefresh(); + ExceptionHandler.handleException(e); + mCsvState.setState(CustomStateView.STATE_ERROR); + } + + @Override + public void onComplete() { + + } + }); + } + + + /** + * 获取被督办的列表 + */ + private void getMineReadList(int currentPage) { + mCurrentPage = currentPage; + RetrofitManager.getInstance() + .create(OAApi.class) + .getMineReadList(mKeywords, mCurrentPage + "") + .compose(RxTransformer.getTransformer()) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull MineReadBean listBean) { + if (listBean.getRows() != null && listBean.getRows().size() > 0) { + ++mCurrentPage; + if (currentPage == 1) { + mDatas.clear(); + mDatas.addAll(listBean.getRows()); + } else { + mDatas.addAll(listBean.getRows()); + } + mCsvState.setState(CustomStateView.STATE_LOAD); + mAdapter.notifyDataSetChanged(); + mSrlContent.finishRefresh(); + if (mDatas.size() >= listBean.getTotal()) { + mSrlContent.finishLoadMore(); + mSrlContent.setNoMoreData(true); + } else { + mSrlContent.finishLoadMore(); + mSrlContent.setNoMoreData(false); + } + } else { + mSrlContent.finishRefresh(); + mSrlContent.finishLoadMore(); + if (currentPage > 1) { + mSrlContent.setNoMoreData(true); + } else { + if (TextUtils.isEmpty(mKeywords)) { + //无数据 + mCsvState.setState(CustomStateView.STATE_EMPTY); + } else { + mCsvState.setState(CustomStateView.STATE_EMPTY); + ToastUtils.show("未查询到相关内容"); + } + } + } + } + + @Override + public void onError(@NonNull Throwable e) { + mSrlContent.finishLoadMore(); + mSrlContent.finishRefresh(); + ExceptionHandler.handleException(e); + mCsvState.setState(CustomStateView.STATE_ERROR); + } + + @Override + public void onComplete() { + + } + }); + } + + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable @org.jetbrains.annotations.Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + if (requestCode == 12) { + doRefresh(); + } + } + } + + @Override + protected void doSearchByTitle() { + + } + + @Override + protected void clearSearch() { + + } +} \ No newline at end of file diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/oaflow/MineTodoActivity.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/oaflow/MineTodoActivity.java new file mode 100644 index 0000000..17e5e5a --- /dev/null +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/oaflow/MineTodoActivity.java @@ -0,0 +1,374 @@ +package com.tenlionsoft.oamodule.activity.oaflow; + +import android.content.Intent; +import android.text.TextUtils; +import android.view.View; +import android.view.inputmethod.EditorInfo; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.alibaba.android.arouter.facade.annotation.Route; +import com.alibaba.android.arouter.launcher.ARouter; +import com.gyf.immersionbar.ImmersionBar; +import com.hjq.toast.ToastUtils; +import com.scwang.smart.refresh.layout.SmartRefreshLayout; +import com.tenlionsoft.baselib.constant.PathConfig; +import com.tenlionsoft.baselib.core.retrofit_net.BaseUrlApi; +import com.tenlionsoft.baselib.core.retrofit_net.RetrofitManager; +import com.tenlionsoft.baselib.core.retrofit_net.conver.RxTransformer; +import com.tenlionsoft.baselib.core.widget.base.BaseActivity; +import com.tenlionsoft.baselib.core.widget.views.CustomStateView; +import com.tenlionsoft.baselib.utils.ExceptionHandler; +import com.tenlionsoft.baselib.utils.LogUtils; +import com.tenlionsoft.baselib.utils.UserLgUtils; +import com.tenlionsoft.oamodule.R; +import com.tenlionsoft.oamodule.R2; +import com.tenlionsoft.oamodule.adapter.MineTodoAdapter; +import com.tenlionsoft.oamodule.beans.MineDoneBean; +import com.tenlionsoft.oamodule.beans.MineTodoBean; +import com.tenlionsoft.oamodule.net.OAApi; + +import java.util.ArrayList; +import java.util.List; + +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import butterknife.BindView; +import butterknife.ButterKnife; +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; + +/** + * 作者: Adam + * 日期: 2022年05月16日16:35:05 + * 邮箱: itgaojian@163.com + * 描述: 我的待办 + */ +@Route(path = PathConfig.PATH_MODULE_OA_ACTIVITY_OAFLOW_MINE_TODO) +public class MineTodoActivity extends BaseActivity { + + + @BindView(R2.id.iv_back) + ImageView mIvBack; + @BindView(R2.id.rb_apply) + RadioButton mRbApply; + @BindView(R2.id.rb_mine) + RadioButton mRbMine; + @BindView(R2.id.rg_type) + RadioGroup mRgType; + @BindView(R2.id.rl_content_title) + RelativeLayout mRlContentTitle; + @BindView(R2.id.et_base_search_cancel) + EditText mEtBaseSearchCancel; + @BindView(R2.id.tv_base_search_cancel) + TextView mTvBaseSearchCancel; + @BindView(R2.id.ll_base_search_cancel) + LinearLayout mLlBaseSearchCancel; + @BindView(R2.id.rlv_content) + RecyclerView mRlvContent; + @BindView(R2.id.srl_content) + SmartRefreshLayout mSrlContent; + @BindView(R2.id.csv_state) + CustomStateView mCsvState; + private List mDatas; + private int mType = 1;//1我的待办 2我的已办 + private MineTodoAdapter mAdapter; + private int mCurrentPage = 1; + private String mKeywords = ""; + + @Override + protected int setLayoutId() { + return R.layout.activity_mine_ucoming; + } + + @Override + public void initData() { + ButterKnife.bind(this); + mRlTitleBar.setVisibility(View.GONE); + ImmersionBar.with(this) + .statusBarDarkFont(true) + .statusBarColor(R.color.gray_bg) + .titleBar(mRlContentTitle) + .init(); + refreshView(STATE_LOAD_SUCCESS); + mCsvState.setState(CustomStateView.STATE_LOAD); + initViews(); + } + + /** + * 初始化页面 + */ + private void initViews() { + mIvBack.setOnClickListener(v -> finish()); + mDatas = new ArrayList<>(); + mAdapter = new MineTodoAdapter(mActivity, mDatas); + mRlvContent.setLayoutManager(new LinearLayoutManager(mActivity)); + mRlvContent.setAdapter(mAdapter); + mRgType.setOnCheckedChangeListener((group, checkedId) -> { + if (checkedId == R.id.rb_apply) { + //我待办 + mType = 1; + } else if (checkedId == R.id.rb_mine) { + //我已办 + mType = 2; + } + //重置搜索条件 + resetCondition(); + }); + mSrlContent.setOnRefreshListener(v -> doRefresh()); + mSrlContent.setOnLoadMoreListener(v -> doLoadMore()); + + mAdapter.addOnItemClickListener(o -> { + String path = ""; + String title = ""; + if (o instanceof MineTodoBean.RowsBean) { + //我的待办 +// + MineTodoBean.RowsBean b = (MineTodoBean.RowsBean) o; + String url = String.format(mActivity.getResources() + .getString(R.string.mine_todo), + b.getTaskId(), + b.getFormCode(), + b.getFormVersion() + "", + b.getIsNeedClaim() + "", + UserLgUtils.getToken(), + b.getReportUid()); + path = BaseUrlApi.BASE_OA + url; + title = b.getTaskName(); + } else if (o instanceof MineDoneBean.RowsBean) { + //我的已办 +// + MineDoneBean.RowsBean b = (MineDoneBean.RowsBean) o; + String url = String.format(mActivity.getResources() + .getString(R.string.mine_todo_detail), + b.getFormCode(), + b.getFormVersion() + "", + UserLgUtils.getToken(), + b.getReportUid()); + path = BaseUrlApi.BASE_OA + url; + title = b.getTaskName(); + } + ARouter.getInstance() + .build(PathConfig.PATH_MODULE_OA_ACTIVITY_WEB) + .withString("title", title) + .withString("url", path) + .navigation(mActivity, 12); + }); + doRefresh(); + + mEtBaseSearchCancel.setOnEditorActionListener((v, actionId, event) -> { + LogUtils.e("搜索==" + actionId); + if (actionId == EditorInfo.IME_ACTION_SEARCH) { + hideSoftKeyboard(); + mEtBaseSearchCancel.clearFocus(); + mKeywords = v.getText().toString(); + doRefresh(); + return true; + } else { + return false; + } + }); + mTvBaseSearchCancel.setOnClickListener(v -> { + mEtBaseSearchCancel.setText(""); + mEtBaseSearchCancel.clearFocus(); + mKeywords = ""; + doRefresh(); + }); + } + + + private void resetCondition() { + mEtBaseSearchCancel.setText(""); + mDatas.clear(); + mCsvState.setState(CustomStateView.STATE_LOAD); + mAdapter.setData(mDatas); + doRefresh(); + } + + + /** + * 加载更多 + */ + private void doLoadMore() { + if (mType == 1) { + getMineTodoList(mCurrentPage); + } else { + getMineDoneList(mCurrentPage); + } + } + + + /** + * 刷新 + */ + private void doRefresh() { + mDatas.clear(); + mAdapter.setData(mDatas); + if (mType == 1) { + getMineTodoList(1); + } else { + getMineDoneList(1); + } + } + + + private void getMineTodoList(int currentPage) { + mCurrentPage = currentPage; + RetrofitManager.getInstance() + .create(OAApi.class) + .getMineTodoList(mKeywords, mCurrentPage + "") + .compose(RxTransformer.getTransformer()) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull MineTodoBean listBean) { + if (listBean.getRows() != null && listBean.getRows().size() > 0) { + ++mCurrentPage; + if (currentPage == 1) { + mDatas.clear(); + mDatas.addAll(listBean.getRows()); + } else { + mDatas.addAll(listBean.getRows()); + } + mCsvState.setState(CustomStateView.STATE_SUCCESS); + mAdapter.notifyDataSetChanged(); + mSrlContent.finishRefresh(); + if (mDatas.size() >= listBean.getTotal()) { + mSrlContent.finishLoadMore(); + mSrlContent.setNoMoreData(true); + } else { + mSrlContent.finishLoadMore(); + mSrlContent.setNoMoreData(false); + } + } else { + mSrlContent.finishRefresh(); + mSrlContent.finishLoadMore(); + if (currentPage > 1) { + mSrlContent.setNoMoreData(true); + } else { + if (TextUtils.isEmpty(mKeywords)) { + //无数据 + mCsvState.setState(CustomStateView.STATE_EMPTY); + } else { + mCsvState.setState(CustomStateView.STATE_EMPTY); + ToastUtils.show("未查询到相关内容"); + } + } + } + } + + @Override + public void onError(@NonNull Throwable e) { + mSrlContent.finishLoadMore(); + mSrlContent.finishRefresh(); + ExceptionHandler.handleException(e); + mCsvState.setState(CustomStateView.STATE_ERROR); + } + + @Override + public void onComplete() { + + } + }); + } + + + /** + * 获取被督办的列表 + */ + private void getMineDoneList(int currentPage) { + mCurrentPage = currentPage; + RetrofitManager.getInstance() + .create(OAApi.class) + .getMineDoneList(mKeywords, mCurrentPage + "") + .compose(RxTransformer.getTransformer()) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + + } + + @Override + public void onNext(@NonNull MineDoneBean listBean) { + if (listBean.getRows() != null && listBean.getRows().size() > 0) { + ++mCurrentPage; + if (currentPage == 1) { + mDatas.clear(); + mDatas.addAll(listBean.getRows()); + } else { + mDatas.addAll(listBean.getRows()); + } + mCsvState.setState(CustomStateView.STATE_SUCCESS); + mAdapter.notifyDataSetChanged(); + mSrlContent.finishRefresh(); + if (mDatas.size() >= listBean.getTotal()) { + mSrlContent.finishLoadMore(); + mSrlContent.setNoMoreData(true); + } else { + mSrlContent.finishLoadMore(); + mSrlContent.setNoMoreData(false); + } + } else { + mSrlContent.finishRefresh(); + mSrlContent.finishLoadMore(); + if (currentPage > 1) { + mSrlContent.setNoMoreData(true); + } else { + if (TextUtils.isEmpty(mKeywords)) { + //无数据 + mCsvState.setState(CustomStateView.STATE_EMPTY); + } else { + mCsvState.setState(CustomStateView.STATE_EMPTY); + ToastUtils.show("未查询到相关内容"); + } + } + } + } + + @Override + public void onError(@NonNull Throwable e) { + mSrlContent.finishLoadMore(); + mSrlContent.finishRefresh(); + ExceptionHandler.handleException(e); + mCsvState.setState(CustomStateView.STATE_ERROR); + } + + @Override + public void onComplete() { + + } + }); + } + + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable @org.jetbrains.annotations.Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) { + if (requestCode == 12) { + doRefresh(); + } + } + } + + @Override + protected void doSearchByTitle() { + + } + + @Override + protected void clearSearch() { + + } +} \ No newline at end of file diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/oaflow/MineUnreadActivity.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/oaflow/MineUnreadActivity.java new file mode 100644 index 0000000..d0dbdc4 --- /dev/null +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/activity/oaflow/MineUnreadActivity.java @@ -0,0 +1,34 @@ +package com.tenlionsoft.oamodule.activity.oaflow; + +import com.tenlionsoft.baselib.core.widget.base.BaseActivity; +import com.tenlionsoft.oamodule.R; + +/** + * 作者: Adam + * 日期: 2022年05月16日16:38:32 + * 邮箱: itgaojian@163.com + * 描述: 我的待阅 + */ +public class MineUnreadActivity extends BaseActivity { + + + @Override + protected int setLayoutId() { + return R.layout.activity_mine_unread; + } + + @Override + public void initData() { + + } + + @Override + protected void doSearchByTitle() { + + } + + @Override + protected void clearSearch() { + + } +} \ No newline at end of file diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/ApplyOaFlowAdapter.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/ApplyOaFlowAdapter.java new file mode 100644 index 0000000..1ca65db --- /dev/null +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/ApplyOaFlowAdapter.java @@ -0,0 +1,38 @@ +package com.tenlionsoft.oamodule.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.tenlionsoft.baselib.core.widget.base.BaseRecyclerAdapter; +import com.tenlionsoft.oamodule.R; +import com.tenlionsoft.oamodule.beans.OaFlowApplyBean; +import com.tenlionsoft.oamodule.holder.ApplyOaFlowHolder; + +import java.util.List; + +/** + * 作者: adam + * 日期: 2022/5/16 - 16:53 + * 邮箱: itgaojian@163.com + * 描述: + */ +public class ApplyOaFlowAdapter extends BaseRecyclerAdapter { + + public ApplyOaFlowAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public ApplyOaFlowHolder createHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_apply_oa_flow, parent, false); + return new ApplyOaFlowHolder(itemView); + } + + @Override + public void bindHolder(ApplyOaFlowHolder h, int i) { + OaFlowApplyBean.RowsBean b = mData.get(i); + h.mTvName.setText(b.getName()); + } +} diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/MineReadAdapter.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/MineReadAdapter.java new file mode 100644 index 0000000..2e42e5a --- /dev/null +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/MineReadAdapter.java @@ -0,0 +1,49 @@ +package com.tenlionsoft.oamodule.adapter; + +import android.content.Context; +import android.graphics.Color; +import android.graphics.Typeface; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.tenlionsoft.baselib.core.widget.base.BaseRecyclerAdapter; +import com.tenlionsoft.baselib.utils.UIUtil; +import com.tenlionsoft.oamodule.R; +import com.tenlionsoft.oamodule.beans.MineReadBean; +import com.tenlionsoft.oamodule.holder.MineReadHolder; + +import java.util.List; + +/** + * 作者: adam + * 日期: 2022/5/16 - 17:20 + * 邮箱: itgaojian@163.com + * 描述: + */ +public class MineReadAdapter extends BaseRecyclerAdapter { + public MineReadAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public MineReadHolder createHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_mine_read, parent, false); + return new MineReadHolder(itemView); + } + + @Override + public void bindHolder(MineReadHolder h, int i) { + MineReadBean.RowsBean b = mData.get(i); + h.mTvTitle.setText(b.getMainTitle()); + h.mTvUser.setText(b.getCreatorName()); + h.mTvTime.setText(b.getGmtCreate()); + if (b.getIsRead() == 1) { + h.mTvTitle.setTextColor(Color.GRAY); + h.mTvTitle.setTypeface(Typeface.DEFAULT, Typeface.NORMAL); + } else { + h.mTvTitle.setTextColor(Color.BLACK); + UIUtil.setTextBold(h.mTvTitle); + } + } +} diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/MineTodoAdapter.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/MineTodoAdapter.java new file mode 100644 index 0000000..361a4d8 --- /dev/null +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/adapter/MineTodoAdapter.java @@ -0,0 +1,54 @@ +package com.tenlionsoft.oamodule.adapter; + +import android.content.Context; +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.tenlionsoft.baselib.core.widget.base.BaseRecyclerAdapter; +import com.tenlionsoft.baselib.utils.UIUtil; +import com.tenlionsoft.oamodule.R; +import com.tenlionsoft.oamodule.beans.MineDoneBean; +import com.tenlionsoft.oamodule.beans.MineTodoBean; +import com.tenlionsoft.oamodule.holder.MineTodoHolder; + +import java.util.List; + +/** + * 作者: adam + * 日期: 2022/5/17 - 10:04 + * 邮箱: itgaojian@163.com + * 描述: + */ +public class MineTodoAdapter extends BaseRecyclerAdapter { + + public MineTodoAdapter(Context ctx, List list) { + super(ctx, list); + } + + @Override + public MineTodoHolder createHolder(ViewGroup parent, int viewType) { + View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_todo, parent, false); + return new MineTodoHolder(itemView); + } + + @Override + public void bindHolder(MineTodoHolder h, int i) { + Object o = mData.get(i); + if (o instanceof MineTodoBean.RowsBean) { + MineTodoBean.RowsBean b = (MineTodoBean.RowsBean) o; + h.mTvTime.setText(b.getProcessStartTime()); + h.mTvTitle.setText(b.getMainTitle()); + h.mTvTitle.setTextColor(Color.BLACK); + UIUtil.setTextBold(h.mTvTitle); + h.mTvName.setText(b.getTaskName()); + } else if (o instanceof MineDoneBean.RowsBean) { + MineDoneBean.RowsBean b = (MineDoneBean.RowsBean) o; + h.mTvTitle.setTextColor(Color.GRAY); + h.mTvTime.setText(b.getProcessStartTime()); + h.mTvTitle.setText(b.getMainTitle()); + h.mTvName.setText(b.getTaskName()); + } + } +} diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/beans/MineDoneBean.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/beans/MineDoneBean.java new file mode 100644 index 0000000..4db795c --- /dev/null +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/beans/MineDoneBean.java @@ -0,0 +1,205 @@ +package com.tenlionsoft.oamodule.beans; + +import java.util.List; + +/** + * 作者: adam + * 日期: 2022/5/17 - 10:03 + * 邮箱: itgaojian@163.com + * 描述: + */ +public class MineDoneBean { + + private int page; + private int total; + private List rows; + + public int getPage() { + return page; + } + + public void setPage(int page) { + this.page = page; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private String endTime; + private String formCode; + private String formKey; + private int formVersion; + private String mainTitle; + private String processEndTime; + private String processInstanceId; + private String processName; + private String processStartTime; + private String reportUid; + private String startTime; + private String startUserDepartmentIds; + private String startUserDepartmentNames; + private String startUserId; + private String startUserName; + private String taskDescription; + private String taskId; + private String taskName; + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } + + public String getFormCode() { + return formCode; + } + + public void setFormCode(String formCode) { + this.formCode = formCode; + } + + public String getFormKey() { + return formKey; + } + + public void setFormKey(String formKey) { + this.formKey = formKey; + } + + public int getFormVersion() { + return formVersion; + } + + public void setFormVersion(int formVersion) { + this.formVersion = formVersion; + } + + public String getMainTitle() { + return mainTitle; + } + + public void setMainTitle(String mainTitle) { + this.mainTitle = mainTitle; + } + + public String getProcessEndTime() { + return processEndTime; + } + + public void setProcessEndTime(String processEndTime) { + this.processEndTime = processEndTime; + } + + public String getProcessInstanceId() { + return processInstanceId; + } + + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + } + + public String getProcessName() { + return processName; + } + + public void setProcessName(String processName) { + this.processName = processName; + } + + public String getProcessStartTime() { + return processStartTime; + } + + public void setProcessStartTime(String processStartTime) { + this.processStartTime = processStartTime; + } + + public String getReportUid() { + return reportUid; + } + + public void setReportUid(String reportUid) { + this.reportUid = reportUid; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getStartUserDepartmentIds() { + return startUserDepartmentIds; + } + + public void setStartUserDepartmentIds(String startUserDepartmentIds) { + this.startUserDepartmentIds = startUserDepartmentIds; + } + + public String getStartUserDepartmentNames() { + return startUserDepartmentNames; + } + + public void setStartUserDepartmentNames(String startUserDepartmentNames) { + this.startUserDepartmentNames = startUserDepartmentNames; + } + + public String getStartUserId() { + return startUserId; + } + + public void setStartUserId(String startUserId) { + this.startUserId = startUserId; + } + + public String getStartUserName() { + return startUserName; + } + + public void setStartUserName(String startUserName) { + this.startUserName = startUserName; + } + + public String getTaskDescription() { + return taskDescription; + } + + public void setTaskDescription(String taskDescription) { + this.taskDescription = taskDescription; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + } +} diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/beans/MineReadBean.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/beans/MineReadBean.java new file mode 100644 index 0000000..19e3ba4 --- /dev/null +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/beans/MineReadBean.java @@ -0,0 +1,161 @@ +package com.tenlionsoft.oamodule.beans; + +import java.util.List; + +/** + * 作者: adam + * 日期: 2022/5/16 - 17:09 + * 邮箱: itgaojian@163.com + * 描述: 我的待阅与以阅 + */ +public class MineReadBean { + + private int page; + private int total; + private List rows; + + public int getPage() { + return page; + } + + public void setPage(int page) { + this.page = page; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private String ccId; + private String creator; + private String creatorName; + private String formCode; + private int formVersion; + private String gmtCreate; + private String gmtModified; + private int isRead; + private String mainTitle; + private String processInstanceId; + private String reportUid; + private String userId; + private String userName; + + + public String getCcId() { + return ccId; + } + + public void setCcId(String ccId) { + this.ccId = ccId; + } + + public String getCreator() { + return creator; + } + + public void setCreator(String creator) { + this.creator = creator; + } + + public String getCreatorName() { + return creatorName; + } + + public void setCreatorName(String creatorName) { + this.creatorName = creatorName; + } + + public String getFormCode() { + return formCode; + } + + public void setFormCode(String formCode) { + this.formCode = formCode; + } + + public int getFormVersion() { + return formVersion; + } + + public void setFormVersion(int formVersion) { + this.formVersion = formVersion; + } + + public String getGmtCreate() { + return gmtCreate; + } + + public void setGmtCreate(String gmtCreate) { + this.gmtCreate = gmtCreate; + } + + public String getGmtModified() { + return gmtModified; + } + + public void setGmtModified(String gmtModified) { + this.gmtModified = gmtModified; + } + + public int getIsRead() { + return isRead; + } + + public void setIsRead(int isRead) { + this.isRead = isRead; + } + + public String getMainTitle() { + return mainTitle; + } + + public void setMainTitle(String mainTitle) { + this.mainTitle = mainTitle; + } + + public String getProcessInstanceId() { + return processInstanceId; + } + + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + } + + public String getReportUid() { + return reportUid; + } + + public void setReportUid(String reportUid) { + this.reportUid = reportUid; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + } +} diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/beans/MineTodoBean.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/beans/MineTodoBean.java new file mode 100644 index 0000000..5cdc4ba --- /dev/null +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/beans/MineTodoBean.java @@ -0,0 +1,223 @@ +package com.tenlionsoft.oamodule.beans; + +import java.util.List; + +/** + * 作者: adam + * 日期: 2022/5/17 - 10:01 + * 邮箱: itgaojian@163.com + * 描述: + */ +public class MineTodoBean { + + private int page; + private int total; + private List rows; + + public int getPage() { + return page; + } + + public void setPage(int page) { + this.page = page; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private String createTime; + private String formCode; + private int formVersion; + private String getFormKey; + private int isNeedClaim; + private String mainTitle; + private String owner; + private String processDefinitionId; + private String processInstanceId; + private String processName; + private String processStartTime; + private String reportUid; + private String startUserDepartmentIds; + private String startUserDepartmentNames; + private String startUserId; + private String startUserName; + private String taskDefinitionKey; + private String taskDescription; + private String taskId; + private String taskName; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getFormCode() { + return formCode; + } + + public void setFormCode(String formCode) { + this.formCode = formCode; + } + + public int getFormVersion() { + return formVersion; + } + + public void setFormVersion(int formVersion) { + this.formVersion = formVersion; + } + + public String getGetFormKey() { + return getFormKey; + } + + public void setGetFormKey(String getFormKey) { + this.getFormKey = getFormKey; + } + + public int getIsNeedClaim() { + return isNeedClaim; + } + + public void setIsNeedClaim(int isNeedClaim) { + this.isNeedClaim = isNeedClaim; + } + + public String getMainTitle() { + return mainTitle; + } + + public void setMainTitle(String mainTitle) { + this.mainTitle = mainTitle; + } + + public String getOwner() { + return owner; + } + + public void setOwner(String owner) { + this.owner = owner; + } + + public String getProcessDefinitionId() { + return processDefinitionId; + } + + public void setProcessDefinitionId(String processDefinitionId) { + this.processDefinitionId = processDefinitionId; + } + + public String getProcessInstanceId() { + return processInstanceId; + } + + public void setProcessInstanceId(String processInstanceId) { + this.processInstanceId = processInstanceId; + } + + public String getProcessName() { + return processName; + } + + public void setProcessName(String processName) { + this.processName = processName; + } + + public String getProcessStartTime() { + return processStartTime; + } + + public void setProcessStartTime(String processStartTime) { + this.processStartTime = processStartTime; + } + + public String getReportUid() { + return reportUid; + } + + public void setReportUid(String reportUid) { + this.reportUid = reportUid; + } + + public String getStartUserDepartmentIds() { + return startUserDepartmentIds; + } + + public void setStartUserDepartmentIds(String startUserDepartmentIds) { + this.startUserDepartmentIds = startUserDepartmentIds; + } + + public String getStartUserDepartmentNames() { + return startUserDepartmentNames; + } + + public void setStartUserDepartmentNames(String startUserDepartmentNames) { + this.startUserDepartmentNames = startUserDepartmentNames; + } + + public String getStartUserId() { + return startUserId; + } + + public void setStartUserId(String startUserId) { + this.startUserId = startUserId; + } + + public String getStartUserName() { + return startUserName; + } + + public void setStartUserName(String startUserName) { + this.startUserName = startUserName; + } + + public String getTaskDefinitionKey() { + return taskDefinitionKey; + } + + public void setTaskDefinitionKey(String taskDefinitionKey) { + this.taskDefinitionKey = taskDefinitionKey; + } + + public String getTaskDescription() { + return taskDescription; + } + + public void setTaskDescription(String taskDescription) { + this.taskDescription = taskDescription; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + } +} diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/beans/OaFlowApplyBean.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/beans/OaFlowApplyBean.java new file mode 100644 index 0000000..daac123 --- /dev/null +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/beans/OaFlowApplyBean.java @@ -0,0 +1,124 @@ +package com.tenlionsoft.oamodule.beans; + +import java.util.List; + +/** + * 作者: adam + * 日期: 2022/5/16 - 16:42 + * 邮箱: itgaojian@163.com + * 描述: + */ +public class OaFlowApplyBean { + + private int page; + private int total; + private List rows; + + public int getPage() { + return page; + } + + public void setPage(int page) { + this.page = page; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private String deploymentId; + private String description; + private String formCode; + private String formKey; + private int formVersion; + private String id; + private String name; + private String processDefinitionId; + private int version; + + public String getDeploymentId() { + return deploymentId; + } + + public void setDeploymentId(String deploymentId) { + this.deploymentId = deploymentId; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getFormCode() { + return formCode; + } + + public void setFormCode(String formCode) { + this.formCode = formCode; + } + + public String getFormKey() { + return formKey; + } + + public void setFormKey(String formKey) { + this.formKey = formKey; + } + + public int getFormVersion() { + return formVersion; + } + + public void setFormVersion(int formVersion) { + this.formVersion = formVersion; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getProcessDefinitionId() { + return processDefinitionId; + } + + public void setProcessDefinitionId(String processDefinitionId) { + this.processDefinitionId = processDefinitionId; + } + + public int getVersion() { + return version; + } + + public void setVersion(int version) { + this.version = version; + } + } +} diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/fragments/OaMainFragment.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/fragments/OaMainFragment.java index bc92e87..dfd967e 100644 --- a/oamodule/src/main/java/com/tenlionsoft/oamodule/fragments/OaMainFragment.java +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/fragments/OaMainFragment.java @@ -182,7 +182,15 @@ public class OaMainFragment extends BaseFragment { Intent intent = new Intent(mActivity, CaptureActivity.class); mLauncher.launch(intent); }); - + mRlTodo.setOnClickListener(v -> ARouter.getInstance() + .build(PathConfig.PATH_MODULE_OA_ACTIVITY_OAFLOW_MINE_TODO) + .navigation());//我的待办 + mRlToRead.setOnClickListener(v -> ARouter.getInstance() + .build(PathConfig.PATH_MODULE_OA_ACTIVITY_OAFLOW_MINE_READ) + .navigation());//我的待阅 + mRlSupervise.setOnClickListener(v -> ARouter.getInstance() + .build(PathConfig.PATH_MODULE_OA_ACTIVITY_SUPERVISE) + .navigation());//我的督办 } private void doRefresh() { @@ -388,7 +396,7 @@ public class OaMainFragment extends BaseFragment { }.getType()); if (depts != null && depts.size() > 0) { // if (mTvDept != null) { - mTvDept.setText(depts.get(0).getDepartmentName()); + mTvDept.setText(depts.get(0).getDepartmentName()); // } } } diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/holder/ApplyOaFlowHolder.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/holder/ApplyOaFlowHolder.java new file mode 100644 index 0000000..e36bd91 --- /dev/null +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/holder/ApplyOaFlowHolder.java @@ -0,0 +1,26 @@ +package com.tenlionsoft.oamodule.holder; + +import android.view.View; +import android.widget.TextView; + +import com.tenlionsoft.baselib.core.widget.base.BaseViewHolder; +import com.tenlionsoft.oamodule.R2; + +import org.jetbrains.annotations.NotNull; + +import androidx.annotation.NonNull; +import butterknife.BindView; + +/** + * 作者: adam + * 日期: 2022/5/16 - 16:51 + * 邮箱: itgaojian@163.com + * 描述: + */ +public class ApplyOaFlowHolder extends BaseViewHolder { + @BindView(R2.id.tv_name) + public TextView mTvName; + public ApplyOaFlowHolder(@NonNull @NotNull View itemView) { + super(itemView); + } +} diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/holder/MineReadHolder.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/holder/MineReadHolder.java new file mode 100644 index 0000000..b31aa9d --- /dev/null +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/holder/MineReadHolder.java @@ -0,0 +1,31 @@ +package com.tenlionsoft.oamodule.holder; + +import android.view.View; +import android.widget.TextView; + +import com.tenlionsoft.baselib.core.widget.base.BaseViewHolder; +import com.tenlionsoft.oamodule.R2; + +import org.jetbrains.annotations.NotNull; + +import androidx.annotation.NonNull; +import butterknife.BindView; + +/** + * 作者: adam + * 日期: 2022/5/16 - 17:15 + * 邮箱: itgaojian@163.com + * 描述: + */ +public class MineReadHolder extends BaseViewHolder { + @BindView(R2.id.tv_title) + public TextView mTvTitle; + @BindView(R2.id.tv_user) + public TextView mTvUser; + @BindView(R2.id.tv_time) + public TextView mTvTime; + + public MineReadHolder(@NonNull @NotNull View itemView) { + super(itemView); + } +} diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/holder/MineTodoHolder.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/holder/MineTodoHolder.java new file mode 100644 index 0000000..0ff2603 --- /dev/null +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/holder/MineTodoHolder.java @@ -0,0 +1,31 @@ +package com.tenlionsoft.oamodule.holder; + +import android.view.View; +import android.widget.TextView; + +import com.tenlionsoft.baselib.core.widget.base.BaseViewHolder; +import com.tenlionsoft.oamodule.R2; + +import org.jetbrains.annotations.NotNull; + +import androidx.annotation.NonNull; +import butterknife.BindView; + +/** + * 作者: adam + * 日期: 2022/5/17 - 10:00 + * 邮箱: itgaojian@163.com + * 描述: + */ +public class MineTodoHolder extends BaseViewHolder { + @BindView(R2.id.tv_title) + public TextView mTvTitle; + @BindView(R2.id.tv_time) + public TextView mTvTime; + @BindView(R2.id.tv_name) + public TextView mTvName; + + public MineTodoHolder(@NonNull @NotNull View itemView) { + super(itemView); + } +} diff --git a/oamodule/src/main/java/com/tenlionsoft/oamodule/net/OAApi.java b/oamodule/src/main/java/com/tenlionsoft/oamodule/net/OAApi.java index 192aa4a..2ba5967 100644 --- a/oamodule/src/main/java/com/tenlionsoft/oamodule/net/OAApi.java +++ b/oamodule/src/main/java/com/tenlionsoft/oamodule/net/OAApi.java @@ -26,11 +26,15 @@ import com.tenlionsoft.oamodule.beans.MeetingQrBean; import com.tenlionsoft.oamodule.beans.MeetingRecordListBean; import com.tenlionsoft.oamodule.beans.MeetingRoomBean; import com.tenlionsoft.oamodule.beans.MeetingRoomRecordBean; +import com.tenlionsoft.oamodule.beans.MineDoneBean; import com.tenlionsoft.oamodule.beans.MineJoinMeetingListBean; +import com.tenlionsoft.oamodule.beans.MineReadBean; +import com.tenlionsoft.oamodule.beans.MineTodoBean; import com.tenlionsoft.oamodule.beans.NewsDetailBean; import com.tenlionsoft.oamodule.beans.NewsListBean; import com.tenlionsoft.oamodule.beans.NewsTypeBean; import com.tenlionsoft.oamodule.beans.NoticeListBean; +import com.tenlionsoft.oamodule.beans.OaFlowApplyBean; import com.tenlionsoft.oamodule.beans.RoutineAcceptListBean; import com.tenlionsoft.oamodule.beans.RoutineBean; import com.tenlionsoft.oamodule.beans.RoutineListBean; @@ -799,4 +803,43 @@ public interface OAApi { @Headers({"base_url_name:oa", "need_token:true", "Content-Type: application/json", "Accept: application/json"}) @GET("app/categoryrelease/list") Observable> getNewsTypeList(); + + /*OA流程*/ + + /** + * 获取OA流程列表 + */ + @Headers({"base_url_name:oa", "need_token:true", "Content-Type: application/json", "Accept: application/json"}) + @GET("app/oa/listpage-procdef") + Observable getOaFLowList(@Query("keywords") String key, @Query("page") String page); + + /** + * 我的待阅 + */ + @Headers({"base_url_name:oa", "need_token:true", "Content-Type: application/json", "Accept: application/json"}) + @GET("app/oa/listpage-unread-of-mine") + Observable getMineUnReadList(@Query("keywords") String key, @Query("page") String page); + + /** + * 我的已阅 + */ + @Headers({"base_url_name:oa", "need_token:true", "Content-Type: application/json", "Accept: application/json"}) + @GET("app/oa/listpage-read-of-mine") + Observable getMineReadList(@Query("keywords") String key, @Query("page") String page); + + + /** + * 我的待办 + */ + @Headers({"base_url_name:oa", "need_token:true", "Content-Type: application/json", "Accept: application/json"}) + @GET("app/oa/listpage-task-of-mine") + Observable getMineTodoList(@Query("keywords") String key, @Query("page") String page); + + /** + * 我的已办 + */ + @Headers({"base_url_name:oa", "need_token:true", "Content-Type: application/json", "Accept: application/json"}) + @GET("app/oa/listpage-history-task-of-mine") + Observable getMineDoneList(@Query("keywords") String key, @Query("page") String page); + } diff --git a/oamodule/src/main/res/layout/activity_apply_oa_flow.xml b/oamodule/src/main/res/layout/activity_apply_oa_flow.xml new file mode 100644 index 0000000..8c06120 --- /dev/null +++ b/oamodule/src/main/res/layout/activity_apply_oa_flow.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/oamodule/src/main/res/layout/activity_mine_done.xml b/oamodule/src/main/res/layout/activity_mine_done.xml new file mode 100644 index 0000000..8c06120 --- /dev/null +++ b/oamodule/src/main/res/layout/activity_mine_done.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/oamodule/src/main/res/layout/activity_mine_read.xml b/oamodule/src/main/res/layout/activity_mine_read.xml new file mode 100644 index 0000000..225776d --- /dev/null +++ b/oamodule/src/main/res/layout/activity_mine_read.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/oamodule/src/main/res/layout/activity_mine_ucoming.xml b/oamodule/src/main/res/layout/activity_mine_ucoming.xml new file mode 100644 index 0000000..fea9497 --- /dev/null +++ b/oamodule/src/main/res/layout/activity_mine_ucoming.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/oamodule/src/main/res/layout/activity_mine_unread.xml b/oamodule/src/main/res/layout/activity_mine_unread.xml new file mode 100644 index 0000000..8c06120 --- /dev/null +++ b/oamodule/src/main/res/layout/activity_mine_unread.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/oamodule/src/main/res/layout/item_apply_oa_flow.xml b/oamodule/src/main/res/layout/item_apply_oa_flow.xml new file mode 100644 index 0000000..ef51efa --- /dev/null +++ b/oamodule/src/main/res/layout/item_apply_oa_flow.xml @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/oamodule/src/main/res/layout/item_mine_read.xml b/oamodule/src/main/res/layout/item_mine_read.xml new file mode 100644 index 0000000..9fb80e8 --- /dev/null +++ b/oamodule/src/main/res/layout/item_mine_read.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/oamodule/src/main/res/layout/item_todo.xml b/oamodule/src/main/res/layout/item_todo.xml new file mode 100644 index 0000000..fa464b6 --- /dev/null +++ b/oamodule/src/main/res/layout/item_todo.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/oamodule/src/main/res/values/strings.xml b/oamodule/src/main/res/values/strings.xml index 73862c4..180609a 100644 --- a/oamodule/src/main/res/values/strings.xml +++ b/oamodule/src/main/res/values/strings.xml @@ -1 +1,8 @@ - \ No newline at end of file + + + approute/oa-form-report/save/definition-id/%1$s/code/%2$s/version/%3$s?token=%4$s + + approute/oa-form-report/update/task-id/%1$s/code/%2$s/version/%3$s/is-need-claim/%4$s?token=%5$s&uid=%6$s + + approute/oa-form-report/show/code/%1$s/version/%2$s?token=%3$s&uid=%4$s + \ No newline at end of file