屠宰场客户端
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.

183 lines
4.9 KiB

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
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 MaterialRequisition
{
public partial class GoodsSetForm : Form
{
public readonly static string MaterialRequisitionGoodsSetFileName = "MaterialRequisitionGoodsSet.xml";
private List<MaterialRequisitionGoodsSet> mLocaList;
private List<MaterialRequisitionGoodsSet> mWillDeleteList;
public GoodsSetForm()
{
InitializeComponent();
}
private void SegmentationWeightGoodsSetForm_Load(object sender, EventArgs e)
{
// CheckAddCreateConfig();
mLocaList = XmlUtil.DeserializeFromFile<List<MaterialRequisitionGoodsSet>>(MaterialRequisitionGoodsSetFileName);
if (LoginRpcUtil.TestConnection(1000))
{
var fromRpclist = ClientGoodsSetRpc.GetList();
foreach (ClientGoodsSetDto rpcSet in fromRpclist)
{
var set = new MaterialRequisitionGoodsSet();
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;
set.StandardWeight = rpcSet.StandardWeight;
set.StandardWeightUp = rpcSet.StandardWeightUp;
set.StandardWeightLow = rpcSet.StandardWeightLow;
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;
fd.StandardWeight = rpcSet.StandardWeight;
fd.StandardWeightUp = rpcSet.StandardWeightUp;
fd.StandardWeightLow = rpcSet.StandardWeightLow;
}
else
{
mLocaList.Add(set);
}
}
var localist = mLocaList.ToList();
var removeList = new List<MaterialRequisitionGoodsSet>();
foreach (MaterialRequisitionGoodsSet segmentationWeightGoodSet in localist)
{
if (fromRpclist.All(x => x.Goods_ID != segmentationWeightGoodSet.Goods_ID))
{
removeList.Add(segmentationWeightGoodSet);
}
}
foreach (MaterialRequisitionGoodsSet set in removeList)
{
mLocaList.Remove(set);
}
XmlUtil.SerializerObjToFile(mLocaList, MaterialRequisitionGoodsSetFileName);
}
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 (MaterialRequisitionGoodsSet set in mLocaList.Where(x => x.Name == btn.Text))
{
var button = CreateGoodsButton(set);
flpGoods.Controls.Add(button);
}
}
private Button CreateGoodsButton(MaterialRequisitionGoodsSet 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 MaterialRequisitionGoodsSet;
if (btn.BackColor == Color.Aqua)
{
set.IsSelected = false;
btn.BackColor = SystemColors.Control;
}
else
{
set.IsSelected = true;
btn.BackColor = Color.Aqua;
}
}
private void CheckAddCreateConfig()
{
if (!File.Exists(MaterialRequisitionGoodsSetFileName))
{
var list = new List<MaterialRequisitionGoodsSet>();
XmlUtil.SerializerObjToFile(list, MaterialRequisitionGoodsSetFileName);
}
}
private void btnSave_Click(object sender, EventArgs e)
{
if (mLocaList != null)
{
XmlUtil.SerializerObjToFile(mLocaList, MaterialRequisitionGoodsSetFileName);
DialogResult = DialogResult.OK;
}
Close();
}
}
}