Linjiajia
2023-10-07 31b7700b976a46901f67c5d7a00281ca4745fc9f
app/src/main/java/com/application/zhangshi_app_android/ui/function/TourismDetailActivity.java
@@ -24,11 +24,14 @@
import com.application.zhangshi_app_android.databinding.ActivityTourismDetailBinding;
import com.application.zhangshi_app_android.ui.DLBaseActivity;
import com.github.gzuliyujiang.wheelpicker.DatePicker;
import com.github.gzuliyujiang.wheelpicker.OptionPicker;
import com.github.gzuliyujiang.wheelpicker.annotation.DateMode;
import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener;
import com.github.gzuliyujiang.wheelpicker.contract.OnOptionPickedListener;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.HashSet;
import java.util.List;
@@ -44,7 +47,6 @@
public class TourismDetailActivity extends DLBaseActivity<ActivityTourismDetailBinding,TourismDetailActivityViewModel> {
    private int type;// 0 查看可修改删除 1 新增 2 直接修改
    private PopupWindow popupWindow;
    private DailyConsumeRecordRvAdapter adapter;
    @Override
    public int getLayoutId() {
@@ -69,13 +71,6 @@
    @Override
    public void initView() {
        adapter = new DailyConsumeRecordRvAdapter(this,viewModel);
        LinearItemDecoration itemDecoration = new LinearItemDecoration();
        itemDecoration.setBottomSpace(ScreenSizeUtils.dip2px(this,20));
        binding.rvDailyConsumeRecord.addItemDecoration(itemDecoration);
        binding.rvDailyConsumeRecord.setNestedScrollingEnabled(false);
        binding.rvDailyConsumeRecord.setAdapter(adapter);
        if (type == 1){
            viewModel.getTypeLiveData().setValue(true);
            binding.titleBar.setTitle("新增旅游费用记录");
@@ -166,25 +161,54 @@
                    }
                });
                datePicker.show();
            }
        });
        binding.ivAddDailyConsumeRecord.setOnClickListener(new View.OnClickListener() {
        binding.etWhereabouts.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DatePicker datePicker = getDatePicker();
                datePicker.setTitle("选择消费日期");
                datePicker.getWheelLayout().setDateMode(DateMode.MONTH_DAY);
                datePicker.setOnDatePickedListener(new OnDatePickedListener() {
                List<String> list = Arrays.asList("国内","国外");
                OptionPicker picker = getOptionPicker(list);
                picker.setTitle("选择去向");
                picker.setOnOptionPickedListener(new OnOptionPickedListener() {
                    @Override
                    public void onDatePicked(int year, int month, int day) {
                        DailyConsumeRecordBean dailyConsumeRecordBean = new DailyConsumeRecordBean();
                        dailyConsumeRecordBean.setDate(month+"月"+day+"日");
                        adapter.addItem(0,dailyConsumeRecordBean);
                        adapter.setFold(true,0);
                    public void onOptionPicked(int position, Object item) {
                        binding.etWhereabouts.setText(item.toString());
                        binding.etWhereabouts.clearFocus();
                    }
                });
                datePicker.show();
                picker.show();
            }
        });
        binding.etTourismNature.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                List<String> list = Arrays.asList("公费","自费","邀请");
                OptionPicker picker = getOptionPicker(list);
                picker.setTitle("选择旅游性质");
                picker.setOnOptionPickedListener(new OnOptionPickedListener() {
                    @Override
                    public void onOptionPicked(int position, Object item) {
                        binding.etTourismNature.setText(item.toString());
                        binding.etTourismNature.clearFocus();
                    }
                });
                picker.show();
            }
        });
        binding.etTourismWay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                List<String> list = Arrays.asList("参团","自由行","自驾游","半自由半自驾","其他");
                OptionPicker picker = getOptionPicker(list);
                picker.setTitle("选择旅游方式");
                picker.setOnOptionPickedListener(new OnOptionPickedListener() {
                    @Override
                    public void onOptionPicked(int position, Object item) {
                        binding.etTourismWay.setText(item.toString());
                        binding.etTourismWay.clearFocus();
                    }
                });
                picker.show();
            }
        });
    }
@@ -197,70 +221,16 @@
    @Override
    public void initLiveDataObserve() {
        viewModel.getBeanLiveData().observe(this,bean -> {
            if (bean!=null){
                if (bean.getDetailList()==null){
                    return;
                }
                //根据时间分组
                Set<String> set = new HashSet<>();
                for (ConsumeRecordBean consumeRecordBean : bean.getDetailList()) {
                    set.add(consumeRecordBean.getHappenTime());
                }
                List<DailyConsumeRecordBean> list = new ArrayList<>();
                for (String s : set) {
                    DailyConsumeRecordBean dailyConsumeRecordBean = new DailyConsumeRecordBean();
                    dailyConsumeRecordBean.setDate(s);
                    List<ConsumeRecordBean> consumeRecordBeans = new ArrayList<>();
                    for (ConsumeRecordBean consumeRecordBean : bean.getDetailList()) {
                        if (s.equals(consumeRecordBean.getHappenTime())){
                            consumeRecordBeans.add(consumeRecordBean);
                            dailyConsumeRecordBean.setDailyMoney(consumeRecordBean.getDayCost());
                        }
                    }
                    dailyConsumeRecordBean.setConsumeRecordBeans(consumeRecordBeans);
                    list.add(dailyConsumeRecordBean);
                }
                adapter.setData(list);
            }
        });
        viewModel.getTypeLiveData().observe(this,operateType -> {
            if (operateType){
                if (type == 1) {
                    binding.ivOperate.setOnClickListener(v -> {
                        if (adapter.getData() != null){
                            List<ConsumeRecordBean> list = new ArrayList<>();
                            for (DailyConsumeRecordBean bean : adapter.getData()) {
                                if (bean.getConsumeRecordBeans() != null){
                                    for (ConsumeRecordBean consumeRecordBean : bean.getConsumeRecordBeans()) {
                                        consumeRecordBean.setHappenTime(bean.getDate());
                                    }
                                    list.addAll(bean.getConsumeRecordBeans());
                                }
                            }
                            if (viewModel.getBeanLiveData().getValue() == null){
                                return;
                            }
                            viewModel.getBeanLiveData().getValue().setDetailList(list);
                        }
                        viewModel.add();
                    });
                }else {
                    binding.ivOperate.setOnClickListener(v -> {
                        if (adapter.getData() != null){
                            List<ConsumeRecordBean> list = new ArrayList<>();
                            for (DailyConsumeRecordBean bean : adapter.getData()) {
                                if (bean.getConsumeRecordBeans() != null){
                                    for (ConsumeRecordBean consumeRecordBean : bean.getConsumeRecordBeans()) {
                                        consumeRecordBean.setHappenTime(bean.getDate());
                                    }
                                    list.addAll(bean.getConsumeRecordBeans());
                                }
                            }
                            if (viewModel.getBeanLiveData().getValue() == null){
                                return;
                            }
                            viewModel.getBeanLiveData().getValue().setDetailList(list);
                        }
                        viewModel.update();
                    });
                }
@@ -268,44 +238,6 @@
                binding.ivOperate.setOnClickListener(v -> {
                    popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0);
                });
            }
        });
        RxBus.getInstance().toObservable(this, MessageEvent.class)
                .subscribe(messageEvent -> {
                    if (messageEvent.getMessageEventCode() == MessageEvent.EVENT_TOURISM_CONSUME_CHANGE){
                        if (adapter.getItemCount() == 0 || adapter.getData() == null){
                            binding.etTotalCost.setText("0");
                            binding.etTotalCost1.setText("0");
                            binding.etTraffic.setText("0");
                            binding.etStay.setText("0");
                            binding.etShopping.setText("0");
                            binding.etEntrance.setText("0");
                            binding.etEat.setText("0");
                            return;
                        }
                        Set<String> dateSet = new HashSet<>();
                        double totalCost = 0,traffic = 0,stay = 0,shopping = 0,entrance = 0,eat = 0;
                        for (DailyConsumeRecordBean dailyConsumeRecordBean : adapter.getData()) {
                            dateSet.add(dailyConsumeRecordBean.getDate());
                            totalCost += dailyConsumeRecordBean.getDailyMoney();
                            if (dailyConsumeRecordBean.getConsumeRecordBeans() != null){
                                for (ConsumeRecordBean consumeRecordBean : dailyConsumeRecordBean.getConsumeRecordBeans()){
                                    traffic += consumeRecordBean.getTraffic();
                                    stay += consumeRecordBean.getStay();
                                    shopping += consumeRecordBean.getShopping();
                                    entrance += consumeRecordBean.getEntrance();
                                    eat += consumeRecordBean.getEat();
                                }
                            }
                        }
                        binding.etTotalCost.setText(BigDecimal.valueOf(totalCost).stripTrailingZeros().toPlainString());
                        binding.etTotalCost1.setText(BigDecimal.valueOf(totalCost).stripTrailingZeros().toPlainString());
                        binding.etTraffic.setText(BigDecimal.valueOf(traffic).stripTrailingZeros().toPlainString());
                        binding.etStay.setText(BigDecimal.valueOf(stay).stripTrailingZeros().toPlainString());
                        binding.etShopping.setText(BigDecimal.valueOf(shopping).stripTrailingZeros().toPlainString());
                        binding.etEntrance.setText(BigDecimal.valueOf(entrance).stripTrailingZeros().toPlainString());
                        binding.etEat.setText(BigDecimal.valueOf(eat).stripTrailingZeros().toPlainString());
                        binding.etTotalDay.setText(dateSet.size()+"");
                    }
                });
    }