From 05e0f5712c43c7343863ba64a0081e325ddfc8fd Mon Sep 17 00:00:00 2001 From: puem2gl9z <2777269348@qq.com> Date: Fri, 30 Aug 2024 15:40:39 +0800 Subject: [PATCH] ADD file via upload --- ShopFragment.java | 378 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 378 insertions(+) create mode 100644 ShopFragment.java diff --git a/ShopFragment.java b/ShopFragment.java new file mode 100644 index 0000000..c9064f4 --- /dev/null +++ b/ShopFragment.java @@ -0,0 +1,378 @@ +package com.example.drink_order_system; + +import android.app.AlertDialog; +import android.content.Context; +import android.os.Bundle; +import android.app.Fragment; +import android.text.Editable; +import android.text.TextWatcher; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.EditText; +import android.widget.ImageButton; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.google.gson.Gson; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; + +public class ShopFragment extends Fragment { + private RecyclerView bill_listView; + private LinearLayoutManager llM; + + private LayoutInflater layoutInflater; + private Context mContext; + private TextView TV_cost; + private EditText ET_people; + private EditText ET_table; + private CheckBox CB_takeAway; + private ImageButton BT_delete; + private Button BT_buy; + private int drinkCost; + private float serviceCost; + + private AlertDialog buyDialog = null; + private AlertDialog.Builder builder = null; + private View view_buy; + private View view; + private String userName; + private String restaurantName; + + private static ArrayList ordered_array = new ArrayList<>(); + public ShopFragment() { + // Required empty public constructor + } + public static ShopFragment newInstance(String userName,String restaurantName) { + ShopFragment myFragment = new ShopFragment(); + Bundle args = new Bundle(); + args.putString("userName", userName); + args.putString("restaurantName", restaurantName); + myFragment.setArguments(args); + return myFragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + userName = getArguments().getString("userName"); + restaurantName = getArguments().getString("restaurantName"); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + ordered_array=get_ordered_array(Ordered_drinks.getOrdered_array(),restaurantName); + mContext = getActivity(); + layoutInflater = inflater; + view = inflater.inflate(R.layout.fragment_shop, container, false); + bill_listView = (RecyclerView) view.findViewById(R.id.RV_bill); + llM = new LinearLayoutManager(this.getActivity()); + bill_listView.setLayoutManager(llM); + OrderAdapter orderAdapter = new OrderAdapter(inflater, ordered_array); + orderAdapter.buttonSetOnClick((new OrderAdapter.MyClickListener() { + @Override + public void onAddClick(View v, int position) { + Ordered_drinks.addDrink(position); + ordered_array=get_ordered_array(Ordered_drinks.getOrdered_array(),restaurantName); + refresh(); + } + + public void onSubClick(View v, int position){ + Ordered_drinks.subtractDrink(position); + ordered_array=get_ordered_array(Ordered_drinks.getOrdered_array(),restaurantName); + refresh(); + } + })); + bill_listView.setAdapter(orderAdapter); + TV_cost = view.findViewById(R.id.textView_cost); + ET_people = view.findViewById(R.id.editText_people); + ET_table = view.findViewById(R.id.editText_table); + CB_takeAway = view.findViewById(R.id.checkBox); + BT_delete = view.findViewById(R.id.button_delete); + BT_buy = view.findViewById(R.id.button_buy); + drinkCost = getDrinkCost(); + serviceCost = 0.2f; + if(!ET_people.getText().equals("")) + { + serviceCost = 0.2f*Integer.parseInt((String.valueOf(ET_people.getText()))); + } + TV_cost.setText(String.format("饮料费:¥ %d \n服务费:¥ %.1f", drinkCost, serviceCost)); + ET_people.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + + } + + @Override + public void afterTextChanged(Editable s) { + if(s.toString().equals("")) + { + s.append("1"); + } + if(s.toString().equals("0")) + { + s.replace(0, 1, "1"); + } + serviceCost = 0.2f; + if(!ET_people.getText().equals("")) + { + serviceCost = 0.2f*Integer.parseInt((String.valueOf(ET_people.getText()))); + } + TV_cost.setText(String.format("饮料费:¥ %d \n服务费:¥ %.1f", drinkCost, serviceCost)); + } + }); + + ET_people.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + + } + + @Override + public void afterTextChanged(Editable s) { + if(s.toString().equals("")) + { + s.append("1"); + } + if(s.toString().equals("0")) + { + s.replace(0, 1, "1"); + } + serviceCost = 0.2f; + if(!ET_people.getText().equals("")) + { + serviceCost = 0.2f*Integer.parseInt((String.valueOf(ET_people.getText()))); + } + TV_cost.setText(String.format("饮料费:¥ %d \n服务费:¥ %.1f", drinkCost, serviceCost)); + } + }); + + ET_table.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + + } + + @Override + public void afterTextChanged(Editable s) { + if(s.toString().equals("")) + { + s.append("1"); + } + if(Integer.valueOf(s.toString())<=0) + { + s.replace(0, 1, "1"); + } + if(Integer.valueOf(s.toString())>30) + { + s.replace(0, s.length(), "30"); + } + } + }); + + BT_delete.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Toast.makeText(getContext(), "您已清空购物车!", Toast.LENGTH_SHORT).show(); + Ordered_drinks.clearOrdered_array(); + ordered_array=get_ordered_array(Ordered_drinks.getOrdered_array(),restaurantName); + refresh(); + } + }); + + builder = new AlertDialog.Builder(this.getActivity()); + view_buy = inflater.inflate(R.layout.dialogue_buy, null, false); + builder.setView(view_buy); + builder.setCancelable(false); + buyDialog = builder.create(); + view_buy.findViewById(R.id.button_quit).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + buyDialog.dismiss(); + } + } + ); + view_buy.findViewById(R.id.button_bought).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Account temp = new Account(userName, mContext); + String takeAway = "0"; + if (CB_takeAway.isChecked()) { + takeAway = "1"; + } + String cost = String.format("%.1f", drinkCost + serviceCost); + Date date1 = temp.saveBill(takeAway, cost); + + //上传订单信息 + SimpleDateFormat sdf3 = new SimpleDateFormat("yyyyMMddHHmmss"); + String date = sdf3.format(date1); + drinkCost = getDrinkCost(); + serviceCost = 0.2f; + float money=drinkCost+serviceCost; + ArrayList food = new ArrayList(); + ArrayList number = new ArrayList(); + for (Ordered_drinks s:ordered_array) { + food.add(s.get_drink().get_name()); + number.add(String.valueOf(s.get_drink_number())); + } + Bill bill=new Bill(date,restaurantName,money,food,number); + Gson gson = new Gson(); + String jsonOrder = gson.toJson(bill); + uploadBillInfo(jsonOrder); + + Ordered_drinks.clearOrdered_array(); + refresh(); + buyDialog.dismiss(); + } + } + ); + + BT_buy.setOnClickListener(new View.OnClickListener() + { + @Override + public void onClick(View v){ + if(drinkCost==0) + { + Toast.makeText(getContext(), "请先选购饮品再结账!", Toast.LENGTH_SHORT).show(); + } + else if(MineFragment.add==null||MineFragment.tel==null) + { + Toast.makeText(getContext(), "请填写电话和地址!", Toast.LENGTH_SHORT).show(); + } + else + { + buyDialog.show(); + if(view_buy!=null) { + TextView TV_allCost = view_buy.findViewById(R.id.textView_allCost); + { + TV_allCost.setText(String.format("饮料费:¥ %d\n服务费:¥ %.1f\n总价:¥ %.1f\n请扫描以下二维码进行支付。" + ,drinkCost, serviceCost, drinkCost+serviceCost)); + } + } + } + } + + }); + return view; + } + + + + private void refresh() { + ordered_array=get_ordered_array(Ordered_drinks.getOrdered_array(),restaurantName); + OrderAdapter orderAdapter = new OrderAdapter(layoutInflater, ordered_array); + orderAdapter.buttonSetOnClick((new OrderAdapter.MyClickListener() { + @Override + public void onAddClick(View v, int position) { + Ordered_drinks.addDrink(position); + ordered_array=get_ordered_array(Ordered_drinks.getOrdered_array(),restaurantName); + refresh(); + } + + public void onSubClick(View v, int position){ + Ordered_drinks.subtractDrink(position); + ordered_array=get_ordered_array(Ordered_drinks.getOrdered_array(),restaurantName); + refresh(); + } + })); + bill_listView.setAdapter(orderAdapter); + drinkCost = getDrinkCost(); + serviceCost = 0.2f; + ET_people.setText("1"); + if(!ET_people.getText().equals("")) + { + serviceCost = 0.2f*Integer.parseInt((String.valueOf(ET_people.getText()))); + } + TV_cost.setText(String.format("饮料费:¥ %d \n服务费:¥ %.1f", drinkCost, serviceCost)); + } + + @Override + public void onHiddenChanged(boolean hidden) { + super.onHiddenChanged(hidden); + refresh(); + } + public ArrayList get_ordered_array(ArrayList ordered_array, String targetRestaurantName) { + ArrayList ordered_array1 = new ArrayList<>(); + for (Ordered_drinks orderedDrink : ordered_array) { + if (orderedDrink.get_restaurant_name().equals(targetRestaurantName)) { + ordered_array1.add(orderedDrink); + } + } + return ordered_array1; + } + public int getDrinkCost() + { + int sum = 0; + for (Ordered_drinks od:ordered_array) + { + sum += od.get_drink().get_price()*od.get_drink_number(); + + } + return sum; + } + private void uploadBillInfo(final String jsonOrder) { + OkHttpClient client = new OkHttpClient(); + RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), jsonOrder); + Request request = new Request.Builder() + .url("http://192.168.43.176:8080/warehouse_management_system_war_exploded/setPurchase") + .post(requestBody) + .build(); + Log.e("uploadBillInfo", jsonOrder); + client.newCall(request).enqueue(new Callback() { + @Override + public void onFailure(Call call, IOException e) { + e.printStackTrace(); + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + if (response.isSuccessful()) { + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + Toast.makeText(mContext.getApplicationContext(), "下单成功", Toast.LENGTH_SHORT).show(); + } + }); + } + } + }); + } + +} \ No newline at end of file