屠宰场客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

142 lines
3.6 KiB

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using BO.BO.Dtos;
using BO.Utils;
using BO.Utils.BillRpc;
namespace ByProductWeight
{
public partial class ByProductWeightGoodsSetForm : Form
{
public readonly static string ByProductWeightGoodsSetFileName = "ByProductWeightGoodsSet.xml";
private List<ByProductWeightGoodsSet> mLocaList;
private List<ByProductWeightGoodsSet> mWillDeleteList;
public ByProductWeightGoodsSetForm()
{
InitializeComponent();
}
private void ByProductWeightGoodsSetForm_Load(object sender, EventArgs e)
{
mLocaList = XmlUtil.DeserializeFromFile<List<ByProductWeightGoodsSet>>(ByProductWeightGoodsSetFileName);
var fromRpclist = ClientGoodsSetRpc.GetList();
foreach (ClientGoodsSetDto rpcSet in fromRpclist)
{
var set = new ByProductWeightGoodsSet();
set.Name = rpcSet.Name;
set.Goods_ID = rpcSet.Goods_ID;
set.Goods_Name = rpcSet.Goods_Name;
set.Goods_Code = rpcSet.Goods_Code;
set.Goods_Spec = rpcSet.Goods_Spec;
var fd = mLocaList.FirstOrDefault(x => x.Goods_ID == set.Goods_ID);
if (fd != null)
{
fd.Name = set.Name;
fd.Goods_Name = set.Goods_Name;
fd.Goods_Code = set.Goods_Code;
fd.Goods_Spec = set.Goods_Spec;
}
else
{
mLocaList.Add(set);
}
}
InitControl();
}
private void InitControl()
{
flpClass.Controls.Clear();
foreach (var grouping in mLocaList.GroupBy(x => x.Name))
{
var btn = CreateClassButton(grouping.Key);
flpClass.Controls.Add(btn);
}
}
private Button CreateClassButton(string text)
{
var button = new Button();
button.Text = text;
button.Click += classButton_Click;
button.Width = 100;
button.Height = 60;
return button;
}
private void classButton_Click(object sender, EventArgs e)
{
var btn = sender as Button;
foreach (Button cbutton in flpClass.Controls)
{
if (btn.Text == cbutton.Text)
{
cbutton.BackColor = Color.Aqua;
}
else
{
cbutton.BackColor = SystemColors.Control;
}
}
flpGoods.Controls.Clear();
foreach (ByProductWeightGoodsSet set in mLocaList.Where(x => x.Name == btn.Text))
{
var button = CreateGoodsButton(set);
flpGoods.Controls.Add(button);
}
}
private Button CreateGoodsButton(ByProductWeightGoodsSet set)
{
var btn = new Button();
btn.Text = set.Goods_Name;
btn.Tag = set;
btn.Click += GoodsBtn_Click;
btn.Width = 100;
btn.Height = 60;
if (set.IsSelected)
{
btn.BackColor = Color.Aqua;
}
return btn;
}
private void GoodsBtn_Click(object sender, EventArgs e)
{
var btn = sender as Button;
var set = btn.Tag as ByProductWeightGoodsSet;
if (btn.BackColor == Color.Aqua)
{
set.IsSelected = false;
btn.BackColor = SystemColors.Control;
}
else
{
set.IsSelected = true;
btn.BackColor = Color.Aqua;
}
}
private void btnSave_Click(object sender, EventArgs e)
{
if (mLocaList != null)
{
XmlUtil.SerializerObjToFile(mLocaList, ByProductWeightGoodsSetFileName);
DialogResult = DialogResult.OK;
}
Close();
}
}
}