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

294 lines
9.6 KiB

using BO.Utils;
using ButcherManageClient;
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;
namespace QualityAndOrder
{
public partial class QualityOrderForm : Form, IAfterLogin
{
#region IAfterLogin
public string RoleName
{
get { return "_1"; }
}
public Form Generate()
{
return this;
}
#endregion
List<Tuple<string, string>> hogGradeList;
List<HouseSplitEntity> houseList;
List<SanctionSplit3Part> sanctionList;
public QualityOrderForm()
{
InitializeComponent();
this.uTabControl1.Selected += (sender, e) =>
{
this.Text = e.TabPage.Text;
};
sanctionGrid.AutoGenerateColumns = false;
hogGradeList = BaseInfoRpcUtil.GetBaseInfoEntity("GetHogGradeList");
houseList = HouseSplitEntity.Init(BaseInfoRpcUtil.GetBaseInfoEntity("GetLiveColonyHouseList"));
sanctionList = SanctionSplit3Part.Init(BaseInfoRpcUtil.GetSanctionList());
AddKeyPadForTab1();
AddHogGradeBtn();
BindSanctionGrid();
AddHouseBtn();
AddKeyPadForTab2();
}
private void AddKeyPadForTab1()
{
for (var i = 1; i < 10; i++)
{
var btn = new Button() { Name = "_" + i, Text = i.ToString(), Size = new Size(80, 60), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 10 }, Font = new Font("宋体", 15) };
btn.Click += (sender, e) =>
{
numberBox.Text += btn.Text;
};
keyBoardPanel.Controls.Add(btn);
}
var zero = new Button() { Name = "_0", Text = "0", Size = new Size(80, 60), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 10 }, Font = new Font("宋体", 15) };
zero.Click += (sender, e) =>
{
if (!string.IsNullOrEmpty(numberBox.Text))
numberBox.Text += "0";
};
keyBoardPanel.Controls.Add(zero);
var back = new Button() { Name = "_back", Text = "←", Size = new Size(80, 60), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 10 }, Font = new Font("宋体", 15) };
back.Click += (sender, e) =>
{
if (!string.IsNullOrEmpty(numberBox.Text))
numberBox.Text = numberBox.Text.Substring(0, numberBox.Text.Length - 1);
};
keyBoardPanel.Controls.Add(back);
var clear = new Button() { Name = "_clear", Text = "清空", Size = new Size(80, 60), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 10 }, Font = new Font("宋体", 15) };
clear.Click += (sender, e) =>
{
numberBox.Text = null;
};
keyBoardPanel.Controls.Add(clear);
}
private void AddHogGradeBtn()
{
foreach (var item in hogGradeList)
{
var btn = new Button() { Name = "_" + item.Item1, Tag = item.Item1, Text = item.Item2, Size = new Size(80, 60), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { Left = 20, Top = 5 }, Font = new Font("宋体", 15) };
btn.Click += (sender, e) =>
{
numberBox.Text = btn.Tag.ToString();
};
hogGradePanel.Controls.Add(btn);
}
}
private void BindSanctionGrid()
{
sanctionGrid.DataSource = sanctionList;
sanctionGrid.Refresh();
}
List<Button> houseBtns = new List<Button>();
private void AddHouseBtn()
{
int pageSize = 48;
foreach (var houseItems in houseList)
{
var tabPage = new TabPage(houseItems.Part);
tabPage.Name = string.Format("house_{0}", houseItems.Part);
var flowCount = houseItems.Details.Count / 48;
if (houseItems.Details.Count % 48 != 0)
flowCount += 1;
FlowLayoutPanel pageBtnPanel = null;
for (var i = 0; i < flowCount; i++)
{
var houseFlow = new FlowLayoutPanel() { RightToLeft = RightToLeft.No, Name = string.Format("houseFlow_{0}", houseItems.Part), BorderStyle = BorderStyle.FixedSingle };
if (flowCount > 1)
{
if (i == 0)
{
pageBtnPanel = new FlowLayoutPanel() { Dock = DockStyle.Bottom, Height = 65, RightToLeft = RightToLeft.No, BorderStyle = BorderStyle.FixedSingle };
pageBtnPanel.Location = new Point(3, 492 - 65);
}
else
houseFlow.Visible = false;
var btn = new Button() { Text = (i + 1).ToString(), Tag = houseFlow, Size = new Size(75, 55), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 5 }, Font = new Font("宋体", 15) };
pageBtnPanel.Controls.Add(btn);
btn.Click += (sender, e) =>
{
var currentBind = btn.Tag as FlowLayoutPanel;
foreach (var subControl in pageBtnPanel.Controls)
{
var pb = subControl as Button;
var p = pb.Tag as FlowLayoutPanel;
p.Visible = currentBind == p;
}
};
houseFlow.Width = 709;
houseFlow.Height = 492 - 70;
}
else
houseFlow.Dock = DockStyle.Fill;
tabPage.Controls.Add(houseFlow);
if (pageBtnPanel != null)
tabPage.Controls.Add(pageBtnPanel);
int idx = i * pageSize;
for (var j = 0; j < pageSize; j++)
{
var padding = new Padding { All = 5 };
if ((idx + 1) % 8 != 0 && (idx + 1) % 4 == 0)
padding = new Padding(5, 5, 15, 5);
var house = houseItems.Details[idx];
var btn = new Button() { Name = "_" + house.Item1, Tag = house.Item1, Text = house.Item2, Size = new Size(77, 60), TextAlign = ContentAlignment.MiddleCenter, Margin = padding, Font = new Font("宋体", 12) };
btn.Click += (sender, e) =>
{
numberBox.Text = btn.Tag.ToString();
};
houseFlow.Controls.Add(btn);
idx += 1;
if (idx == houseItems.Details.Count)
break;
}
}
housePanel.TabPages.Add(tabPage);
}
}
private void closeBtn_Click(object sender, EventArgs e)
{
this.Close();
}
}
class SanctionSplit3Part
{
public long Sanction_ID1 { get; set; }
public long AbnormalItem_ID1 { get; set; }
public string AbnormalItem_Name1 { get; set; }
public int? Number1 { get; set; }
public long Sanction_ID2 { get; set; }
public long AbnormalItem_ID2 { get; set; }
public string AbnormalItem_Name2 { get; set; }
public int? Number2 { get; set; }
public long Sanction_ID3 { get; set; }
public long AbnormalItem_ID3 { get; set; }
public string AbnormalItem_Name3 { get; set; }
public int? Number3 { get; set; }
public static List<SanctionSplit3Part> Init(List<Tuple<long, long, string>> list)
{
var result = new List<SanctionSplit3Part>();
var count = list.Count / 3;
if (list.Count % 3 != 0)
count += 1;
for (var i = 0; i < count; i++)
{
var detail = new SanctionSplit3Part();
result.Add(detail);
var idx = i * 3;
var item = list[idx];
detail.Sanction_ID1 = item.Item1;
detail.AbnormalItem_ID1 = item.Item2;
detail.AbnormalItem_Name1 = item.Item3;
idx += 1;
if (idx == list.Count)
break;
item = list[idx];
detail.Sanction_ID2 = item.Item1;
detail.AbnormalItem_ID2 = item.Item2;
detail.AbnormalItem_Name2 = item.Item3;
idx += 1;
if (idx == list.Count)
break;
item = list[idx];
detail.Sanction_ID3 = item.Item1;
detail.AbnormalItem_ID3 = item.Item2;
detail.AbnormalItem_Name3 = item.Item3;
}
return result;
}
public static List<Tuple<long, long, string, int>> ReInit(List<SanctionSplit3Part> list)
{
var result = new List<Tuple<long, long, string, int>>();
foreach (var item in list)
{
if (item.Number1.HasValue)
{
var detail = new Tuple<long, long, string, int>(item.Sanction_ID1, item.AbnormalItem_ID1, item.AbnormalItem_Name1, item.Number1.Value);
result.Add(detail);
}
if (item.Sanction_ID2 == 0)
break;
if (item.Number2.HasValue)
{
var detail = new Tuple<long, long, string, int>(item.Sanction_ID2, item.AbnormalItem_ID2, item.AbnormalItem_Name2, item.Number2.Value);
result.Add(detail);
}
if (item.Sanction_ID3 == 0)
break;
if (item.Number3.HasValue)
{
var detail = new Tuple<long, long, string, int>(item.Sanction_ID3, item.AbnormalItem_ID3, item.AbnormalItem_Name3, item.Number3.Value);
result.Add(detail);
}
}
return result;
}
}
class HouseSplitEntity
{
public string Part { get; set; }
List<Tuple<string, string>> details = new List<Tuple<string, string>>();
public List<Tuple<string, string>> Details { get { return details; } }
public static List<HouseSplitEntity> Init(List<Tuple<string, string>> list)
{
var result = new List<HouseSplitEntity>();
foreach (var item in list)
{
var part = item.Item2[0].ToString();
var first = result.FirstOrDefault(x => x.Part == part);
if (first == null)
{
first = new HouseSplitEntity { Part = part };
result.Add(first);
}
first.Details.Add(new Tuple<string, string>(item.Item1, item.Item2));
}
result.Reverse();
return result;
}
}
}