Commit 44998473 authored by 陈前's avatar 陈前

营销统计分组

parent fccb5c07
package com.xingdata.zzdpos.model; package com.xingdata.zzdpos.model;
import android.provider.MediaStore;
import com.chad.library.adapter.base.entity.SectionEntity;
import com.xingdata.zzdpos.base.BaseBean; import com.xingdata.zzdpos.base.BaseBean;
import java.util.Date; import java.util.Date;
public class Ticket implements BaseBean { public class Ticket extends SectionEntity<MediaStore.Video> implements BaseBean {
private boolean isSelected; private boolean isSelected;
...@@ -16,9 +19,19 @@ public class Ticket implements BaseBean { ...@@ -16,9 +19,19 @@ public class Ticket implements BaseBean {
isSelected = selected; isSelected = selected;
} }
public Ticket(boolean isHeader, String header) {
super(isHeader, header);
}
public Ticket(MediaStore.Video video) {
super(video);
}
public Ticket() { public Ticket() {
super(false, "");
} }
/** /**
* 创建默认优惠卷(无优惠) * 创建默认优惠卷(无优惠)
* *
...@@ -32,6 +45,7 @@ public class Ticket implements BaseBean { ...@@ -32,6 +45,7 @@ public class Ticket implements BaseBean {
@Deprecated @Deprecated
public Ticket(Long l) { public Ticket(Long l) {
super(false, "");
this.id = l; this.id = l;
this.ticketNo = l; this.ticketNo = l;
this.ticketValAmt = 0L; this.ticketValAmt = 0L;
......
...@@ -104,7 +104,7 @@ public class StatisticsPresenter extends StatisticsContract.Presenter { ...@@ -104,7 +104,7 @@ public class StatisticsPresenter extends StatisticsContract.Presenter {
mView.isShowLoading(true); mView.isShowLoading(true);
ApiFactory.Ticket.query(pageNumber, nowPageSize, 2).doFinally(()-> mView.isShowLoading(false)) ApiFactory.Ticket.query(pageNumber, nowPageSize, 2).doFinally(()-> mView.isShowLoading(false))
.subscribe(ticketPager -> { .subscribe(ticketPager -> {
msListFragment.setData(ticketPager, ticketPager.isFirstPage()); msListFragment.setData(ticketPager);
}, throwable -> { }, throwable -> {
ToastUtils.showShort(throwable.getMessage()); ToastUtils.showShort(throwable.getMessage());
}); });
......
...@@ -17,9 +17,9 @@ import java.util.List; ...@@ -17,9 +17,9 @@ import java.util.List;
* Created by Administrator on 2017/12/26. * Created by Administrator on 2017/12/26.
*/ */
public class StatisticsGroupAdapter extends BaseSectionQuickAdapter<VipRechargeOrder, BaseViewHolder> { public class StatisticsRechargeGroupAdapter extends BaseSectionQuickAdapter<VipRechargeOrder, BaseViewHolder> {
public StatisticsGroupAdapter( List<VipRechargeOrder> data) { public StatisticsRechargeGroupAdapter(List<VipRechargeOrder> data) {
super(R.layout.item_statistics, R.layout.item_string_head, data); super(R.layout.item_statistics, R.layout.item_string_head, data);
} }
......
package com.xingdata.zzdpos.ui.statistics.adapter;
import android.widget.ImageView;
import com.blankj.utilcode.util.TimeUtils;
import com.chad.library.adapter.base.BaseSectionQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.model.Ticket;
import com.xingdata.zzdpos.model.VipRechargeOrder;
import com.xingdata.zzdpos.util.ConvertUtil;
import java.util.List;
/**
* Created by Administrator on 2017/12/26.
*/
public class StatisticsTicketGroupAdapter extends BaseSectionQuickAdapter<Ticket, BaseViewHolder> {
public StatisticsTicketGroupAdapter(List<Ticket> data) {
super(R.layout.item_statistics, R.layout.item_string_head, data);
}
@Override
protected void convertHead(BaseViewHolder helper, Ticket item) {
helper.setText(R.id.item_tv, item.header);
}
@Override
protected void convert(BaseViewHolder helper, Ticket item) {
helper.setText(R.id.tv_left_top, ConvertUtil.fenToYuanNoZero(item.getTicketValAmt()) + "元优惠券");
helper.setText(R.id.tv_left_bottom, TimeUtils.date2String(item.getCreateTime()));
((ImageView) helper.getView(R.id.img_left)).setImageResource(R.mipmap.ic_text_ticket);
}
}
\ No newline at end of file
...@@ -225,7 +225,7 @@ public class StatisticsTitleFragment extends BaseFragment<StatisticsPresenter, F ...@@ -225,7 +225,7 @@ public class StatisticsTitleFragment extends BaseFragment<StatisticsPresenter, F
return true; return true;
} }
if (mTicketSearchFragment.isAdded()) { if (mTicketSearchFragment.isAdded()) {
FragmentUtils.remove(mRechargeSearchFragment); FragmentUtils.remove(mTicketSearchFragment);
return true; return true;
} }
mViewBinding.icTitle.edTitle.setText(""); mViewBinding.icTitle.edTitle.setText("");
......
...@@ -2,7 +2,6 @@ package com.xingdata.zzdpos.ui.statistics.fragment.ms; ...@@ -2,7 +2,6 @@ package com.xingdata.zzdpos.ui.statistics.fragment.ms;
import android.content.Intent; import android.content.Intent;
import android.database.Observable;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
import android.view.View; import android.view.View;
...@@ -13,32 +12,24 @@ import com.xingdata.zzdpos.R; ...@@ -13,32 +12,24 @@ import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment; import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.databinding.FragmentMsListBinding; import com.xingdata.zzdpos.databinding.FragmentMsListBinding;
import com.xingdata.zzdpos.model.Pager; import com.xingdata.zzdpos.model.Pager;
import com.xingdata.zzdpos.model.Vip;
import com.xingdata.zzdpos.model.VipRechargeOrder; import com.xingdata.zzdpos.model.VipRechargeOrder;
import com.xingdata.zzdpos.ui.statistics.StatisticsDetailActivity; import com.xingdata.zzdpos.ui.statistics.StatisticsDetailActivity;
import com.xingdata.zzdpos.ui.statistics.StatisticsPresenter; import com.xingdata.zzdpos.ui.statistics.StatisticsPresenter;
import com.xingdata.zzdpos.ui.statistics.adapter.StatisticsGroupAdapter; import com.xingdata.zzdpos.ui.statistics.adapter.StatisticsRechargeGroupAdapter;
import com.xingdata.zzdpos.ui.statistics.adapter.StatisticsRechargeAdapter;
import com.xingdata.zzdpos.util.StringUtil; import com.xingdata.zzdpos.util.StringUtil;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import io.reactivex.ObservableEmitter; import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe; import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Scheduler;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Action; import io.reactivex.functions.Action;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
public class RechargeListFragment extends BaseFragment<StatisticsPresenter, FragmentMsListBinding> { public class RechargeListFragment extends BaseFragment<StatisticsPresenter, FragmentMsListBinding> {
private StatisticsGroupAdapter mStatisticsGroupAdapter; private StatisticsRechargeGroupAdapter mStatisticsGroupAdapter;
private int pagerNum; private int pagerNum;
private String monthDate; private String monthDate;
...@@ -55,7 +46,7 @@ public class RechargeListFragment extends BaseFragment<StatisticsPresenter, Frag ...@@ -55,7 +46,7 @@ public class RechargeListFragment extends BaseFragment<StatisticsPresenter, Frag
mViewBinding.tvEmpty.setText(R.string.statistics_search_empty_recharge); mViewBinding.tvEmpty.setText(R.string.statistics_search_empty_recharge);
if (mStatisticsGroupAdapter == null) { if (mStatisticsGroupAdapter == null) {
mStatisticsGroupAdapter = new StatisticsGroupAdapter(new ArrayList<>()); mStatisticsGroupAdapter = new StatisticsRechargeGroupAdapter(new ArrayList<>());
mViewBinding.statisticsRecycler.setLayoutManager(new LinearLayoutManager(getActivity())); mViewBinding.statisticsRecycler.setLayoutManager(new LinearLayoutManager(getActivity()));
mViewBinding.statisticsRecycler.setAdapter(mStatisticsGroupAdapter); mViewBinding.statisticsRecycler.setAdapter(mStatisticsGroupAdapter);
...@@ -67,10 +58,13 @@ public class RechargeListFragment extends BaseFragment<StatisticsPresenter, Frag ...@@ -67,10 +58,13 @@ public class RechargeListFragment extends BaseFragment<StatisticsPresenter, Frag
mStatisticsGroupAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { mStatisticsGroupAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override @Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) { public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
if (!mStatisticsGroupAdapter.getData().get(position).isHeader) {
Intent intent = new Intent(getActivity(), StatisticsDetailActivity.class); Intent intent = new Intent(getActivity(), StatisticsDetailActivity.class);
intent.putExtra(VipRechargeOrder.class.getName(), mStatisticsGroupAdapter.getData().get(position)); intent.putExtra(VipRechargeOrder.class.getName(), mStatisticsGroupAdapter.getData().get(position));
ActivityUtils.startActivity(intent); ActivityUtils.startActivity(intent);
} }
}
}); });
mViewBinding.srlProduct.setOnRefreshListener(this::onRefresh); mViewBinding.srlProduct.setOnRefreshListener(this::onRefresh);
......
...@@ -6,6 +6,7 @@ import android.support.v7.widget.LinearLayoutManager; ...@@ -6,6 +6,7 @@ import android.support.v7.widget.LinearLayoutManager;
import android.view.View; import android.view.View;
import com.blankj.utilcode.util.ActivityUtils; import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.TimeUtils;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.xingdata.zzdpos.R; import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment; import com.xingdata.zzdpos.base.BaseFragment;
...@@ -14,17 +15,25 @@ import com.xingdata.zzdpos.model.Pager; ...@@ -14,17 +15,25 @@ import com.xingdata.zzdpos.model.Pager;
import com.xingdata.zzdpos.model.Ticket; import com.xingdata.zzdpos.model.Ticket;
import com.xingdata.zzdpos.ui.statistics.StatisticsDetailActivity; import com.xingdata.zzdpos.ui.statistics.StatisticsDetailActivity;
import com.xingdata.zzdpos.ui.statistics.StatisticsPresenter; import com.xingdata.zzdpos.ui.statistics.StatisticsPresenter;
import com.xingdata.zzdpos.ui.statistics.adapter.StatisticsTicketAdapter; import com.xingdata.zzdpos.ui.statistics.adapter.StatisticsRechargeGroupAdapter;
import com.xingdata.zzdpos.ui.statistics.adapter.StatisticsTicketAdapter; import com.xingdata.zzdpos.ui.statistics.adapter.StatisticsTicketGroupAdapter;
import com.xingdata.zzdpos.util.StringUtil;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Action;
import io.reactivex.schedulers.Schedulers;
public class UsedTicketListFragment extends BaseFragment<StatisticsPresenter, FragmentMsListBinding> { public class UsedTicketListFragment extends BaseFragment<StatisticsPresenter, FragmentMsListBinding> {
private StatisticsTicketAdapter mStatisticsTicketAdapter; private StatisticsTicketGroupAdapter mStatisticsGroupAdapter;
private int pagerNum; private int pagerNum;
private String monthDate;
@Override @Override
public int getLayoutId() { public int getLayoutId() {
...@@ -36,27 +45,30 @@ public class UsedTicketListFragment extends BaseFragment<StatisticsPresenter, Fr ...@@ -36,27 +45,30 @@ public class UsedTicketListFragment extends BaseFragment<StatisticsPresenter, Fr
pagerNum = 1; pagerNum = 1;
mViewBinding.tvEmpty.setText(R.string.statistics_search_empty_ticket); mViewBinding.tvEmpty.setText(R.string.statistics_search_empty_ticket);
if (mStatisticsTicketAdapter == null) { if (mStatisticsGroupAdapter == null) {
mStatisticsTicketAdapter = new StatisticsTicketAdapter(new ArrayList<>()); mStatisticsGroupAdapter = new StatisticsTicketGroupAdapter(new ArrayList<>());
mViewBinding.statisticsRecycler.setLayoutManager(new LinearLayoutManager(getActivity())); mViewBinding.statisticsRecycler.setLayoutManager(new LinearLayoutManager(getActivity()));
mViewBinding.statisticsRecycler.setAdapter(mStatisticsTicketAdapter); mViewBinding.statisticsRecycler.setAdapter(mStatisticsGroupAdapter);
} else { } else {
mViewBinding.statisticsRecycler.setLayoutManager(new LinearLayoutManager(getActivity())); mViewBinding.statisticsRecycler.setLayoutManager(new LinearLayoutManager(getActivity()));
mViewBinding.statisticsRecycler.setAdapter(mStatisticsTicketAdapter); mViewBinding.statisticsRecycler.setAdapter(mStatisticsGroupAdapter);
} }
mStatisticsTicketAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { mStatisticsGroupAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override @Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) { public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
if (!mStatisticsGroupAdapter.getData().get(position).isHeader) {
Intent intent = new Intent(getActivity(), StatisticsDetailActivity.class); Intent intent = new Intent(getActivity(), StatisticsDetailActivity.class);
intent.putExtra(Ticket.class.getName(), mStatisticsTicketAdapter.getData().get(position)); intent.putExtra(Ticket.class.getName(), mStatisticsGroupAdapter.getData().get(position));
ActivityUtils.startActivity(intent); ActivityUtils.startActivity(intent);
} }
}
}); });
mViewBinding.srlProduct.setOnRefreshListener(this::onRefresh); mViewBinding.srlProduct.setOnRefreshListener(this::onRefresh);
mStatisticsTicketAdapter.setOnLoadMoreListener(this::onLoadMore, mViewBinding.statisticsRecycler); mStatisticsGroupAdapter.setOnLoadMoreListener(this::onLoadMore, mViewBinding.statisticsRecycler);
mPresenter.getTicketList(pagerNum, this); mPresenter.getTicketList(pagerNum, this);
} }
...@@ -80,15 +92,15 @@ public class UsedTicketListFragment extends BaseFragment<StatisticsPresenter, Fr ...@@ -80,15 +92,15 @@ public class UsedTicketListFragment extends BaseFragment<StatisticsPresenter, Fr
*/ */
public void setData(Pager<Ticket> pager, boolean isRefresh) { public void setData(Pager<Ticket> pager, boolean isRefresh) {
if (isRefresh) { if (isRefresh) {
mStatisticsTicketAdapter.setEnableLoadMore(true); mStatisticsGroupAdapter.setEnableLoadMore(true);
mViewBinding.srlProduct.setRefreshing(false); mViewBinding.srlProduct.setRefreshing(false);
} }
if (isRefresh) mStatisticsTicketAdapter.setNewData(pager.getList()); if (isRefresh) mStatisticsGroupAdapter.setNewData(pager.getList());
else if (pager.getList().size() > 0) mStatisticsTicketAdapter.addData(pager.getList()); else if (pager.getList().size() > 0) mStatisticsGroupAdapter.addData(pager.getList());
if (pager.isLastPage()) mStatisticsTicketAdapter.loadMoreEnd(isRefresh); if (pager.isLastPage()) mStatisticsGroupAdapter.loadMoreEnd(isRefresh);
else mStatisticsTicketAdapter.loadMoreComplete(); else mStatisticsGroupAdapter.loadMoreComplete();
if (mStatisticsTicketAdapter.getData().size() == 0) { if (mStatisticsGroupAdapter.getData().size() == 0) {
mViewBinding.llEmpty.setVisibility(View.VISIBLE); mViewBinding.llEmpty.setVisibility(View.VISIBLE);
mViewBinding.statisticsRecycler.setVisibility(View.GONE); mViewBinding.statisticsRecycler.setVisibility(View.GONE);
} else { } else {
...@@ -97,6 +109,36 @@ public class UsedTicketListFragment extends BaseFragment<StatisticsPresenter, Fr ...@@ -97,6 +109,36 @@ public class UsedTicketListFragment extends BaseFragment<StatisticsPresenter, Fr
} }
} }
public void setData(Pager<Ticket> pager) {
if (pager.isFirstPage()) {
monthDate = "";
}
io.reactivex.Observable.create(new ObservableOnSubscribe<Pager<Ticket>>() {
@Override
public void subscribe(ObservableEmitter<Pager<Ticket>> e) throws Exception {
for (int i = 0; i < pager.getList().size(); i++) {
String m = TimeUtils.date2String(pager.getList().get(i).getCreateTime(), new SimpleDateFormat(StringUtil.defaultDatePattern));
if (!m.equals(monthDate)) {
monthDate = m;
pager.getList().add(i, new Ticket(true, monthDate + ""));
i++;
}
}
e.onComplete();
}
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()).doOnComplete(new Action() {
@Override
public void run() throws Exception {
setData(pager, pager.isFirstPage());
}
}).subscribe();
}
@Override @Override
public String getTabTitle() { public String getTabTitle() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment