package com.example.kucun2.ui.jinhuo;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import com.example.kucun2.R;
import com.example.kucun2.entity.*;
import com.example.kucun2.entity.data.Data;
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 etShuliang;
private RadioGroup rgType;
private Dingdan selectedDingdan;
private Chanpin selectedChanpin;
private Zujian selectedZujian;
private Bancai selectedBancai;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_add_inventory, container, false);
// 初始化UI组件
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);
etShuliang = view.findViewById(R.id.et_shuliang);
rgType = view.findViewById(R.id.rg_type);
Button btnSubmit = view.findViewById(R.id.btn_submit);
// 设置订单选择器
setupDingdanSpinner();
// 提交按钮点击事件
btnSubmit.setOnClickListener(v -> addInventoryRecord());
return view;
}
private void setupDingdanSpinner() {
// 定制订单适配器显示订单号(number)
ArrayAdapter<Dingdan> dingdanAdapter = new ArrayAdapter<Dingdan>(
requireContext(), android.R.layout.simple_spinner_item, Data.dingdans) {
@NonNull
@Override
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
TextView textView = (TextView) super.getView(position, convertView, parent);
Dingdan dingdan = getItem(position);
if (dingdan != null) {
textView.setText(dingdan.getNumber());
}
return textView;
}
@Override
public View getDropDownView(int position, View convertView, @NonNull ViewGroup parent) {
TextView textView = (TextView) super.getDropDownView(position, convertView, parent);
Dingdan dingdan = getItem(position);
if (dingdan != null) {
textView.setText(dingdan.getNumber());
}
return textView;
}
};
dingdanAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerDingdan.setAdapter(dingdanAdapter);
spinnerDingdan.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
selectedDingdan = (Dingdan) parent.getItemAtPosition(position);
setupChanpinSpinner(selectedDingdan);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
});
}
private void setupChanpinSpinner(Dingdan dingdan) {
// 获取该订单的产品列表
List<Chanpin> chanpins = new ArrayList<>();
for (Dingdan_Chanpin dc : dingdan.getChanpins()) {
chanpins.add(dc.getChanpin());
}
// 定制产品适配器显示产品名(name)
ArrayAdapter<Chanpin> chanpinAdapter = new ArrayAdapter<Chanpin>(
requireContext(), android.R.layout.simple_spinner_item, chanpins) {
@NonNull
@Override
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
TextView textView = (TextView) super.getView(position, convertView, parent);
Chanpin chanpin = getItem(position);
if (chanpin != null) {
textView.setText(chanpin.getName());
}
return textView;
}
@Override
public View getDropDownView(int position, View convertView, @NonNull ViewGroup parent) {
TextView textView = (TextView) super.getDropDownView(position, convertView, parent);
Chanpin chanpin = getItem(position);
if (chanpin != null) {
textView.setText(chanpin.getName());
}
return textView;
}
};
chanpinAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerChanpin.setAdapter(chanpinAdapter);
spinnerChanpin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
selectedChanpin = (Chanpin) parent.getItemAtPosition(position);
setupZujianSpinner(selectedChanpin);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
});
}
private void setupZujianSpinner(Chanpin chanpin) {
// 获取该产品的组件列表
List<Zujian> zujians = new ArrayList<>();
for (Chanpin_Zujian cz : chanpin.getZujians()) {
zujians.add(cz.getZujian());
}
// 定制组件适配器显示组件名(name)
ArrayAdapter<Zujian> zujianAdapter = new ArrayAdapter<Zujian>(
requireContext(), android.R.layout.simple_spinner_item, zujians) {
@NonNull
@Override
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
TextView textView = (TextView) super.getView(position, convertView, parent);
Zujian zujian = getItem(position);
if (zujian != null) {
textView.setText(zujian.getName());
}
return textView;
}
@Override
public View getDropDownView(int position, View convertView, @NonNull ViewGroup parent) {
TextView textView = (TextView) super.getDropDownView(position, convertView, parent);
Zujian zujian = getItem(position);
if (zujian != null) {
textView.setText(zujian.getName());
}
return textView;
}
};
zujianAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerZujian.setAdapter(zujianAdapter);
spinnerZujian.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
selectedZujian = (Zujian) parent.getItemAtPosition(position);
setupBancaiSpinner(selectedChanpin, selectedZujian);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
});
}
private void setupBancaiSpinner(Chanpin chanpin, Zujian zujian) {
// 获取该组件关联的板材
List<Bancai> bancais = new ArrayList<>();
for (Chanpin_Zujian cz : chanpin.getZujians()) {
if (cz.getZujian().getId().equals(zujian.getId())) {
bancais.add(cz.getBancai());
}
}
// 定制板材适配器显示TableText(保持不变)
ArrayAdapter<Bancai> bancaiAdapter = new ArrayAdapter<Bancai>(
requireContext(), android.R.layout.simple_spinner_item, bancais) {
@NonNull
@Override
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
TextView textView = (TextView) super.getView(position, convertView, parent);
Bancai bancai = getItem(position);
if (bancai != null) {
textView.setText(bancai.TableText());
}
return textView;
}
@Override
public View getDropDownView(int position, View convertView, @NonNull ViewGroup parent) {
TextView textView = (TextView) super.getDropDownView(position, convertView, parent);
Bancai bancai = getItem(position);
if (bancai != null) {
textView.setText(bancai.TableText());
}
return textView;
}
};
bancaiAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerBancai.setAdapter(bancaiAdapter);
spinnerBancai.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
selectedBancai = (Bancai) parent.getItemAtPosition(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
});
}
// ... addInventoryRecord和createRecord方法保持不变 ...
private void addInventoryRecord() {
// 验证必填项
if (selectedDingdan == null || selectedChanpin == null || selectedZujian == null || selectedBancai == null) {
Toast.makeText(getContext(), "请选择订单、产品、组件和板材", Toast.LENGTH_SHORT).show();
return;
}
String shuliangStr = etShuliang.getText().toString().trim();
if (shuliangStr.isEmpty()) {
Toast.makeText(getContext(), "请输入数量", Toast.LENGTH_SHORT).show();
return;
}
// 解析数量
int shuliang;
try {
shuliang = Integer.parseInt(shuliangStr);
} catch (NumberFormatException e) {
Toast.makeText(getContext(), "请输入有效的数量", Toast.LENGTH_SHORT).show();
return;
}
// 确定操作类型(进货或消耗)
boolean isJinhuo = rgType.getCheckedRadioButtonId() == R.id.rb_jinhuo;
// 实际开发中应从登录信息获取当前用户
User currentUser = new User(1, "当前用户", "user", "password",1);
// 创建记录
createRecord(selectedDingdan, selectedChanpin, selectedZujian, selectedBancai, shuliang, isJinhuo, currentUser);
Toast.makeText(getContext(), "记录添加成功", Toast.LENGTH_SHORT).show();
etShuliang.setText(""); // 清空输入框
}
private void createRecord(Dingdan dingdan, Chanpin chanpin, Zujian zujian, Bancai bancai,
int shuliang, boolean isJinhuo, User user) {
if (isJinhuo) {
// 创建进货记录
Jinhuo jinhuo = new Jinhuo();
jinhuo.setId(Data.jinhuoList.size() + 1);
jinhuo.setDingdan(dingdan);
jinhuo.setChanpin(chanpin);
jinhuo.setZujian(zujian);
jinhuo.setBancai(bancai);
jinhuo.setShuliang(shuliang);
jinhuo.setDate(new Date());
jinhuo.setUser(user);
Data.jinhuoList.add(jinhuo);
} else {
// 消耗数量转为负数
shuliang = -shuliang;
}
// 更新库存
updateKucun(bancai, shuliang);
}
private void updateKucun(Bancai bancai, int changeAmount) {
// 查找现有库存记录
for (Kucun k : Data.kucuns) {
if (k.getBancai().getId().equals(bancai.getId())) {
k.setShuliang(k.getShuliang() + changeAmount);
return;
}
}
// 如果没有找到库存记录,创建新的
Kucun newKucun = new Kucun();
newKucun.setId(Data.kucuns.size() + 1);
newKucun.setBancai(bancai);
newKucun.setShuliang(Math.max(changeAmount, 0)); // 确保不为负
Data.kucuns.add(newKucun);
}
}<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<!-- 订单选择 -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="选择订单" />
<Spinner
android:id="@+id/spinner_dingdan"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:prompt="@string/select_dingdan" />
<!-- 产品选择 -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="选择产品"
android:layout_marginTop="16dp"/>
<Spinner
android:id="@+id/spinner_chanpin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:prompt="@string/select_chanpin" />
<!-- 组件选择 -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="选择组件"
android:layout_marginTop="16dp"/>
<Spinner
android:id="@+id/spinner_zujian"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:prompt="@string/select_zujian" />
<!-- 板材选择 -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="选择板材"
android:layout_marginTop="16dp"/>
<Spinner
android:id="@+id/spinner_bancai"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:prompt="@string/select_bancai" />
<!-- 数量输入 -->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="数量"
android:layout_marginTop="16dp"/>
<EditText
android:id="@+id/et_shuliang"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number" />
<!-- 类型选择 -->
<RadioGroup
android:id="@+id/rg_type"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rb_jinhuo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="进货"
android:checked="true"/>
<RadioButton
android:id="@+id/rb_xiaohao"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="消耗" />
</RadioGroup>
<!-- 提交按钮 -->
<Button
android:id="@+id/btn_submit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="提交" />
</LinearLayout>
</ScrollView>下拉框后面添加一个按钮 作用是创建新的订单或者为订单加入新的产品为产品加入新的组件
最新发布