// AddInventoryFragment.java
package com.example.kucun2.ui.jinhuo;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.example.kucun2.DataPreserver.Data;
import com.example.kucun2.R;
import com.example.kucun2.entity.*;
import com.example.kucun2.function.Adapter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class AddInventoryFragment extends Fragment {
// 视图组件
private Spinner spinnerDingdan, spinnerChanpin, spinnerZujian, spinnerBancai;
private EditText etQuantity;
private RadioGroup rgType;
private Button btnNewDingdan, btnAddChanpin, btnAddZujian, btnSubmit;
// 当前选择
private Dingdan selectedDingdan;
private Chanpin selectedChanpin;
private Zujian selectedZujian;
private Bancai selectedBancai;
// 数据列表
private List<Dingdan> dingdanList;
private List<Chanpin> chanpinList;
private List<Zujian> zujianList;
private List<Bancai> bancaiList;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_add_inventory, container, false);
initViews(view);
initData();
setupSpinners();
setupListeners();
return view;
}
private void initViews(View view) {
spinnerDingdan = view.findViewById(R.id.spinner_dingdan);
spinnerChanpin = view.findViewById(R.id.spinner_chanpin);
spinnerZujian = view.findViewById(R.id.spinner_zujian);
spinnerBancai = view.findViewById(R.id.spinner_bancai);
etQuantity = view.findViewById(R.id.et_shuliang);
rgType = view.findViewById(R.id.rg_type);
btnNewDingdan = view.findViewById(R.id.btn_new_dingdan);
btnAddChanpin = view.findViewById(R.id.btn_add_chanpin);
btnAddZujian = view.findViewById(R.id.btn_add_zujian);
btnSubmit = view.findViewById(R.id.btn_submit);
}
private void initData() {
// 从全局数据获取列表
dingdanList = Data.dingdans().getViewList();
chanpinList = Data.chanpins().getViewList();
zujianList = Data.zujians().getViewList();
bancaiList = Data.bancais().getViewList();
}
private void setupSpinners() {
// 设置订单下拉框
Adapter.setupDingdanSpinner(spinnerDingdan, dingdanList, requireContext());
// 设置产品下拉框(初始为所有产品)
Adapter.setupChanpinSpinner(spinnerChanpin, chanpinList, requireContext());
// 设置组件下拉框(初始为所有组件)
Adapter.setupZujianSpinner(spinnerZujian, zujianList, requireContext());
// 设置板材下拉框(初始为所有板材)
Adapter.setupBancaiSpinners(spinnerBancai, bancaiList, requireContext());
}
private void setupListeners() {
// 订单选择监听
spinnerDingdan.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
selectedDingdan = (Dingdan) parent.getItemAtPosition(position);
updateChanpinSpinner();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
selectedDingdan = null;
updateChanpinSpinner();
}
});
// 产品选择监听
spinnerChanpin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
selectedChanpin = (Chanpin) parent.getItemAtPosition(position);
updateZujianSpinner();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
selectedChanpin = null;
updateZujianSpinner();
}
});
// 组件选择监听
spinnerZujian.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
selectedZujian = (Zujian) parent.getItemAtPosition(position);
updateBancaiSpinner();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
selectedZujian = null;
updateBancaiSpinner();
}
});
// 新建订单
btnNewDingdan.setOnClickListener(v -> showNewDingdanDialog());
// 添加产品
btnAddChanpin.setOnClickListener(v -> showAddChanpinDialog());
// 添加组件
btnAddZujian.setOnClickListener(v -> showAddZujianDialog());
// 提交
btnSubmit.setOnClickListener(v -> submitInventory());
}
// 更新产品列表(根据订单过滤)
private void updateChanpinSpinner() {
List<Chanpin> filtered = new ArrayList<>();
if (selectedDingdan != null) {
// 获取订单关联的产品
for (Dingdan_Chanpin dc : selectedDingdan.getDingdanChanpin()) {
filtered.add(dc.getChanpin());
}
} else {
filtered = chanpinList;
}
Adapter.setupChanpinSpinner(spinnerChanpin, filtered, requireContext());
}
// 更新组件列表(根据产品过滤)
private void updateZujianSpinner() {
List<Zujian> filtered = new ArrayList<>();
if (selectedChanpin != null) {
// 获取产品关联的组件
for (Chanpin_Zujian cz : selectedChanpin.getChanpinZujian()) {
filtered.add(cz.getZujian());
}
} else {
filtered = zujianList;
}
Adapter.setupZujianSpinner(spinnerZujian, filtered, requireContext());
}
// 更新板材列表(根据组件锁定)
private void updateBancaiSpinner() {
List<Bancai> filtered = new ArrayList<>();
if (selectedZujian != null && selectedChanpin != null) {
// 查找组件关联的板材
for (Chanpin_Zujian cz : selectedChanpin.getChanpinZujian()) {
if (cz.getZujian().equals(selectedZujian)) {
filtered.add(cz.getBancai());
break;
}
}
} else {
filtered = bancaiList;
}
Adapter.setupBancaiSpinners(spinnerBancai, filtered, requireContext());
}
// 显示新建订单对话框
private void showNewDingdanDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(requireContext());
View view = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_new_dingdan, null);
EditText etNumber = view.findViewById(R.id.et_order_number);
// 其他日期选择器等组件省略...
builder.setView(view)
.setTitle("新建订单")
.setPositiveButton("保存", (dialog, which) -> {
Dingdan newDingdan = new Dingdan();
newDingdan.setNumber(etNumber.getText().toString());
// 添加到全局数据
Data.add(newDingdan);
// 刷新订单列表
dingdanList = Data.dingdans().getViewList();
Adapter.setupDingdanSpinner(spinnerDingdan, dingdanList, requireContext());
})
.setNegativeButton("取消", null)
.show();
}
// 显示添加产品对话框
private void showAddChanpinDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(requireContext());
View view = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_add_chanpin, null);
Spinner spinner = view.findViewById(R.id.spinner_chanpin_selection);
EditText etQuantity = view.findViewById(R.id.et_chanpin_quantity);
Button btnNew = view.findViewById(R.id.btn_new_chanpin);
// 设置产品列表(排除已关联的)
List<Chanpin> available = new ArrayList<>(chanpinList);
if (selectedDingdan != null) {
for (Dingdan_Chanpin dc : selectedDingdan.getDingdanChanpin()) {
available.remove(dc.getChanpin());
}
}
Adapter.setupChanpinSpinner(spinner, available, requireContext());
btnNew.setOnClickListener(v -> showNewChanpinDialog());
builder.setView(view)
.setTitle("添加产品到订单")
.setPositiveButton("添加", (dialog, which) -> {
Chanpin selected = (Chanpin) spinner.getSelectedItem();
int quantity = Integer.parseInt(etQuantity.getText().toString());
// 创建订单-产品关联
Dingdan_Chanpin dc = new Dingdan_Chanpin();
dc.setDingdan(selectedDingdan);
dc.setChanpin(selected);
dc.setShuliang(quantity);
// 添加到全局数据
Data.add(dc);
// 刷新产品列表
updateChanpinSpinner();
})
.show();
}
// 显示新建产品对话框
private void showNewChanpinDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(requireContext());
View view = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_new_chanpin, null);
EditText etName = view.findViewById(R.id.et_chanpin_name);
builder.setView(view)
.setTitle("新建产品")
.setPositiveButton("保存", (dialog, which) -> {
Chanpin newChanpin = new Chanpin();
newChanpin.setBianhao(etName.getText().toString());
// 添加到全局数据
Data.add(newChanpin);
// 刷新产品列表
chanpinList = Data.chanpins().getViewList();
Adapter.setupChanpinSpinner(spinnerChanpin, chanpinList, requireContext());
})
.setNegativeButton("取消", null)
.show();
}
// 显示添加组件对话框
private void showAddZujianDialog() {
if (selectedChanpin == null) {
Toast.makeText(requireContext(), "请先选择产品", Toast.LENGTH_SHORT).show();
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(requireContext());
View view = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_create_zujian_bancai, null);
Spinner spinnerZujian = view.findViewById(R.id.et_zujian_name); // 注意布局中的ID
Spinner spinnerBancai = view.findViewById(R.id.spinner_bancai);
EditText etOneHowmany = view.findViewById(R.id.number_one_howmany);
Button btnNewZujian = view.findViewById(R.id.btn_add_zujian);
Button btnNewBancai = view.findViewById(R.id.btn_add_bancai);
// 设置组件下拉框
Adapter.setupZujianSpinner(spinnerZujian, zujianList, requireContext());
// 设置板材下拉框
Adapter.setupBancaiSpinners(spinnerBancai, bancaiList, requireContext());
btnNewZujian.setOnClickListener(v -> showNewZujianDialog());
btnNewBancai.setOnClickListener(v -> showNewBancaiDialog());
builder.setView(view)
.setTitle("添加组件到产品")
.setPositiveButton("添加", (dialog, which) -> {
Zujian zujian = (Zujian) spinnerZujian.getSelectedItem();
Bancai bancai = (Bancai) spinnerBancai.getSelectedItem();
double oneHowmany = Double.parseDouble(etOneHowmany.getText().toString());
// 创建产品-组件关联
Chanpin_Zujian cz = new Chanpin_Zujian();
cz.setChanpin(selectedChanpin);
cz.setZujian(zujian);
cz.setBancai(bancai);
cz.setOne_howmany(oneHowmany);
// 添加到全局数据
Data.add(cz);
// 刷新组件列表
updateZujianSpinner();
})
.show();
}
// 显示新建组件对话框
private void showNewZujianDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(requireContext());
View view = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_new_zujian, null);
EditText etName = view.findViewById(R.id.et_zujian_name);
builder.setView(view)
.setTitle("新建组件")
.setPositiveButton("保存", (dialog, which) -> {
Zujian newZujian = new Zujian();
newZujian.setName(etName.getText().toString());
// 添加到全局数据
Data.add(newZujian);
// 刷新组件列表
zujianList = Data.zujians().getViewList();
Adapter.setupZujianSpinner(spinnerZujian, zujianList, requireContext());
})
.setNegativeButton("取消", null)
.show();
}
// 显示新建板材对话框
private void showNewBancaiDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(requireContext());
View view = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_create_bancai, null);
Spinner spinnerCaizhi = view.findViewById(R.id.spinner_caizhi);
Spinner spinnerMupi1 = view.findViewById(R.id.spinner_mupi1);
Spinner spinnerMupi2 = view.findViewById(R.id.spinner_mupi2);
EditText etHoudu = view.findViewById(R.id.edittext_houdu);
Button btnNewCaizhi = view.findViewById(R.id.btn_new_caizhi);
Button btnNewMupi = view.findViewById(R.id.btn_new_mupi);
// 设置材质下拉框
Adapter.setupCaizhiSpinner(spinnerCaizhi, Data.caizhis().getViewList(), requireContext());
// 设置木皮下拉框
Adapter.setupMupiSpinner(spinnerMupi1, Data.mupis().getViewList(), requireContext());
Adapter.setupMupiSpinner(spinnerMupi2, Data.mupis().getViewList(), requireContext());
btnNewCaizhi.setOnClickListener(v -> showNewCaizhiDialog());
btnNewMupi.setOnClickListener(v -> showNewMupiDialog());
builder.setView(view)
.setTitle("新建板材")
.setPositiveButton("保存", (dialog, which) -> {
Caizhi caizhi = (Caizhi) spinnerCaizhi.getSelectedItem();
Mupi mupi1 = (Mupi) spinnerMupi1.getSelectedItem();
Mupi mupi2 = (Mupi) spinnerMupi2.getSelectedItem();
double houdu = Double.parseDouble(etHoudu.getText().toString());
Bancai newBancai = new Bancai();
newBancai.setCaizhi(caizhi);
newBancai.setMupi1(mupi1);
newBancai.setMupi2(mupi2);
newBancai.setHoudu(houdu);
// 添加到全局数据
Data.add(newBancai);
// 刷新板材列表
bancaiList = Data.bancais().getViewList();
Adapter.setupBancaiSpinners(spinnerBancai, bancaiList, requireContext());
})
.setNegativeButton("取消", null)
.show();
}
// 显示新建材质对话框
private void showNewCaizhiDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(requireContext());
View view = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_new_caizhi, null);
EditText etName = view.findViewById(R.id.et_caizhi_name);
builder.setView(view)
.setTitle("新建材质")
.setPositiveButton("保存", (dialog, which) -> {
Caizhi newCaizhi = new Caizhi();
newCaizhi.setName(etName.getText().toString());
// 添加到全局数据
Data.add(newCaizhi);
// 刷新材质下拉框
Adapter.setupCaizhiSpinner(spinnerCaizhi, Data.caizhis().getViewList(), requireContext());
})
.setNegativeButton("取消", null)
.show();
}
// 显示新建木皮对话框
private void showNewMupiDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(requireContext());
View view = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_new_mupi, null);
EditText etName = view.findViewById(R.id.et_mupi_name);
RadioGroup rgFinish = view.findViewById(R.id.rg_finish);
builder.setView(view)
.setTitle("新建木皮")
.setPositiveButton("保存", (dialog, which) -> {
Mupi newMupi = new Mupi();
newMupi.setName(etName.getText().toString());
newMupi.setYou(rgFinish.getCheckedRadioButtonId() == R.id.rb_painted);
// 添加到全局数据
Data.add(newMupi);
// 刷新木皮下拉框
Adapter.setupMupiSpinner(spinnerMupi1, Data.mupis().getViewList(), requireContext());
Adapter.setupMupiSpinner(spinnerMupi2, Data.mupis().getViewList(), requireContext());
})
.setNegativeButton("取消", null)
.show();
}
// 提交库存记录
private void submitInventory() {
// 获取数量
int quantity;
try {
quantity = Integer.parseInt(etQuantity.getText().toString());
} catch (NumberFormatException e) {
Toast.makeText(requireContext(), "请输入有效数量", Toast.LENGTH_SHORT).show();
return;
}
// 获取操作类型
boolean isJinhuo = rgType.getCheckedRadioButtonId() == R.id.rb_jinhuo;
// 创建库存记录
Jinhuo record = new Jinhuo();
record.setShuliang(isJinhuo ? quantity : -quantity); // 正数为进货,负数为消耗
record.setDate(new Date());
// 设置关联关系
if (selectedBancai != null) {
// 创建订单-板材关联(如果不存在)
Dingdan_bancai db = createDingdanBancai();
record.setDingdan_bancai(db);
}
// 添加到全局数据
Data.add(record);
Toast.makeText(requireContext(), "操作成功", Toast.LENGTH_SHORT).show();
resetForm();
}
// 创建订单-板材关联
private Dingdan_bancai createDingdanBancai() {
Dingdan_bancai db = new Dingdan_bancai();
// 设置关联对象
if (selectedDingdan != null) db.setDingdian(selectedDingdan);
if (selectedChanpin != null) db.setChanoin(selectedChanpin);
if (selectedZujian != null) db.setZujian(selectedZujian);
if (selectedBancai != null) db.setBancai(selectedBancai);
// 添加到全局数据
Data.add(db);
return db;
}
// 重置表单
private void resetForm() {
spinnerDingdan.setSelection(0);
spinnerChanpin.setSelection(0);
spinnerZujian.setSelection(0);
spinnerBancai.setSelection(0);
etQuantity.setText("");
rgType.check(R.id.rb_jinhuo);
}
}
Adapter.setupCaizhiSpinner(spinnerCaizhi, Data.caizhis().getViewList(), requireContext());spinnerCaizhi根本没定义
最新发布