From 82e57df230ecb744af6c8865f80870ba03c86d89 Mon Sep 17 00:00:00 2001
From: Linjiajia <319408893@qq.com>
Date: 星期二, 25 七月 2023 22:18:27 +0800
Subject: [PATCH] 基本功能完成

---
 app/src/main/java/com/application/zhangshi_app_android/ui/function/TourismDetailActivity.java |  277 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 248 insertions(+), 29 deletions(-)

diff --git a/app/src/main/java/com/application/zhangshi_app_android/ui/function/TourismDetailActivity.java b/app/src/main/java/com/application/zhangshi_app_android/ui/function/TourismDetailActivity.java
index 73e398f..f5f11a6 100644
--- a/app/src/main/java/com/application/zhangshi_app_android/ui/function/TourismDetailActivity.java
+++ b/app/src/main/java/com/application/zhangshi_app_android/ui/function/TourismDetailActivity.java
@@ -1,26 +1,40 @@
 package com.application.zhangshi_app_android.ui.function;
 
+
+import android.text.TextUtils;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.EditText;
+import android.widget.PopupWindow;
 
-import androidx.recyclerview.widget.GridLayoutManager;
-
+import com.android.app_base.base.BaseConfig;
+import com.android.app_base.base.dialog.BaseDialog;
+import com.android.app_base.base.dialog.UIDialog;
 import com.android.app_base.utils.ScreenSizeUtils;
+import com.android.app_base.utils.Utils;
+import com.android.app_base.utils.rxbus.MessageEvent;
+import com.android.app_base.utils.rxbus.RxBus;
 import com.android.app_base.widget.LinearItemDecoration;
 import com.application.zhangshi_app_android.BR;
 import com.application.zhangshi_app_android.R;
 import com.application.zhangshi_app_android.adapter.DailyConsumeRecordRvAdapter;
-import com.application.zhangshi_app_android.adapter.ImageRvAdapter;
-import com.application.zhangshi_app_android.bean.PrivacyBean;
+import com.application.zhangshi_app_android.bean.ConsumeRecordBean;
+import com.application.zhangshi_app_android.bean.DailyConsumeRecordBean;
 import com.application.zhangshi_app_android.bean.TourismBean;
-import com.application.zhangshi_app_android.databinding.ActivityPrivacyDetailBinding;
 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.annotation.DateMode;
+import com.github.gzuliyujiang.wheelpicker.contract.OnDatePickedListener;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Calendar;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
+
+import io.reactivex.functions.Consumer;
 
 /**
  * @author Ljj
@@ -28,7 +42,8 @@
  * @desc
  */
 public class TourismDetailActivity extends DLBaseActivity<ActivityTourismDetailBinding,TourismDetailActivityViewModel> {
-
+    private int type;// 0 鏌ョ湅鍙慨鏀瑰垹闄� 1 鏂板 2 鐩存帴淇敼
+    private PopupWindow popupWindow;
     private DailyConsumeRecordRvAdapter adapter;
 
     @Override
@@ -43,19 +58,135 @@
 
     @Override
     public void initParam() {
-        if (getIntent().hasExtra("bean")){
-            viewModel.getBeanLiveData().setValue((TourismBean) getIntent().getSerializableExtra("bean"));
+        type = getIntent().getIntExtra(BaseConfig.EXTRA_TYPE,0);
+        if (type == 0 || type == 2){
+            TourismBean bean = (TourismBean) getIntent().getSerializableExtra("bean");
+            if (bean != null){
+                viewModel.getBeanLiveData().setValue(bean);
+            }
         }
     }
 
     @Override
     public void initView() {
-        adapter = new DailyConsumeRecordRvAdapter(this);
+        adapter = new DailyConsumeRecordRvAdapter(this,viewModel);
         LinearItemDecoration itemDecoration = new LinearItemDecoration();
         itemDecoration.setBottomSpace(ScreenSizeUtils.dip2px(this,20));
         binding.rvDailyConsumeRecord.addItemDecoration(itemDecoration);
         binding.rvDailyConsumeRecord.setNestedScrollingEnabled(false);
-        setIsEdited(false);
+        binding.rvDailyConsumeRecord.setAdapter(adapter);
+
+        if (type == 1){
+            viewModel.getTypeLiveData().setValue(true);
+            binding.titleBar.setTitle("鏂板鏃呮父璐圭敤璁板綍");
+        }else if (type == 0){
+            popupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate_delete,null));
+            popupWindow.getContentView().findViewById(R.id.tv_modify).setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    viewModel.getTypeLiveData().setValue(true);
+                    popupWindow.dismiss();
+                }
+            });
+            popupWindow.getContentView().findViewById(R.id.tv_delete).setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    popupWindow.dismiss();
+                    new UIDialog.Builder(getSelfActivity())
+                            .setTitle("鎮ㄧ‘瀹氳鍒犻櫎椤圭洰鍚�")
+                            .setContent("椤圭洰鍒犻櫎鍚庡皢鏃犳硶鎭㈠")
+                            .setConfirm("纭畾")
+                            .setCancel("鍙栨秷")
+                            .setListener(new UIDialog.OnListener() {
+                                @Override
+                                public void onConfirm(BaseDialog dialog) {
+                                    viewModel.delete();
+                                }
+                            })
+                            .show();
+                }
+            });
+            viewModel.getTypeLiveData().setValue(false);
+        }else if (type == 2){
+            viewModel.getTypeLiveData().setValue(true);
+        }
+
+        binding.etStartTime.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                DatePicker datePicker = getDatePicker();
+                datePicker.setTitle("閫夋嫨寮�濮嬫椂闂�");
+                datePicker.setOnDatePickedListener(new OnDatePickedListener() {
+                    @Override
+                    public void onDatePicked(int year, int month, int day) {
+                        //浠yyy-MM-dd鐨勬牸寮忔樉绀猴紝鏈堟棩灏忎簬10鏃跺墠闈㈣ˉ0
+                        binding.etStartTime.setText(String.format("%d-%02d-%02d", year, month, day));
+                        String startTime = binding.etStartTime.getText().toString();
+                        String endTime = binding.etEndTime.getText().toString();
+                        if (TextUtils.isEmpty(endTime)){
+                            binding.etEndTime.setText(String.format("%d-%02d-%02d", year, month, day));
+                            endTime = binding.etEndTime.getText().toString();
+                        }else {
+                            //姣旇緝寮�濮嬫椂闂村拰缁撴潫鏃堕棿鐨勫ぇ灏�
+                            if (Utils.compareDate(startTime,endTime) > 0){
+                                //浜ゆ崲
+                                binding.etStartTime.setText(endTime);
+                                binding.etEndTime.setText(startTime);
+                            }
+                        }
+                        binding.etStartTime.clearFocus();
+                    }
+                });
+                datePicker.show();
+            }
+        });
+        binding.etEndTime.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                DatePicker datePicker = getDatePicker();
+                datePicker.setTitle("閫夋嫨缁撴潫鏃堕棿");
+                datePicker.setOnDatePickedListener(new OnDatePickedListener() {
+                    @Override
+                    public void onDatePicked(int year, int month, int day) {
+                        binding.etEndTime.setText(String.format("%d-%02d-%02d", year, month , day));
+                        String startTime = binding.etStartTime.getText().toString();
+                        String endTime = binding.etEndTime.getText().toString();
+                        if (TextUtils.isEmpty(startTime)){
+                            binding.etStartTime.setText(String.format("%d-%02d-%02d", year, month, day));
+                            startTime = binding.etStartTime.getText().toString();
+                        }else {
+                            //姣旇緝寮�濮嬫椂闂村拰缁撴潫鏃堕棿鐨勫ぇ灏�
+                            if (Utils.compareDate(startTime,endTime) > 0){
+                                //浜ゆ崲
+                                binding.etStartTime.setText(endTime);
+                                binding.etEndTime.setText(startTime);
+                            }
+                        }
+                        binding.etEndTime.clearFocus();
+                    }
+                });
+                datePicker.show();
+
+            }
+        });
+        binding.ivAddDailyConsumeRecord.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() {
+                    @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);
+                    }
+                });
+                datePicker.show();
+            }
+        });
     }
 
     @Override
@@ -67,27 +198,115 @@
     public void initLiveDataObserve() {
         viewModel.getBeanLiveData().observe(this,bean -> {
             if (bean!=null){
-                adapter.setData(bean.getDailyConsumeRecordBeans());
+                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);
             }
         });
-    }
-
-    public void setIsEdited(boolean isEdited){
-        disableAllEditText(getContentView(),isEdited);
-    }
-    public void disableAllEditText(ViewGroup viewGroup, boolean isEdited) {
-        for (int i = 0; i < viewGroup.getChildCount(); i++) {
-            View child = viewGroup.getChildAt(i);
-            if (child instanceof ViewGroup) {
-                disableAllEditText((ViewGroup) child,isEdited);
-            } else if (child instanceof EditText) {
-                child.setEnabled(isEdited);
-                child.setFocusable(isEdited);
-                child.setFocusableInTouchMode(isEdited);
-                if (!isEdited){
-                    child.clearFocus();
+        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();
+                    });
                 }
+            }else {
+                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()+"");
+                    }
+                });
     }
 }

--
Gitblit v1.9.1