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

202 lines
6.4 KiB

using BO.BO.Bill;
using BO.Utils.BillRpc;
using BWP.WinFormControl;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace QualityAndOrder
{
partial class QualityOrderForm
{
List<SelectHurryList> hurryList;
Thread bt3SyncTask;
void Tab3Init()
{
orderGrid3.AutoGenerateColumns = false;
orderGrid3.DataSource = null;
AddKeyPadForTab3();
}
private void AddKeyPadForTab3()
{
for (var i = 1; i < 10; i++)
{
var btn = new Button() { Name = "_3" + 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) =>
{
InputHurryNumber(btn.Text);
};
tab3KeyPanel.Controls.Add(btn);
}
var zero = new Button() { Name = "_30", Text = "0", Size = new Size(80, 60), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 10 }, Font = new Font("宋体", 15) };
zero.Click += (sender, e) =>
{
InputHurryNumber(zero.Text);
};
tab3KeyPanel.Controls.Add(zero);
var back = new Button() { Name = "_3back", Text = "←", Size = new Size(80, 60), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 10 }, Font = new Font("宋体", 15) };
back.Click += (sender, e) =>
{
InputHurryNumber(back.Text);
};
tab3KeyPanel.Controls.Add(back);
var clear = new Button() { Name = "_3clear", Text = "清空", Size = new Size(80, 60), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 10 }, Font = new Font("宋体", 15) };
clear.Click += (sender, e) =>
{
InputHurryNumber(clear.Text);
};
tab3KeyPanel.Controls.Add(clear);
}
void InputHurryNumber(string input)
{
if (lastHurry == null)
throw new Exception("请选择一条排宰明细");
lastHurry.HurryNumber = GetAfterNumber(lastHurry.HurryNumber, input) ?? 0;
orderGrid3.Refresh();
}
private void tab3SearchBtn_Click(object sender, EventArgs e)
{
if (bt3SyncTask == null || !bt3SyncTask.IsAlive)
{
bt3SyncTask = new Thread(Tb3SyncTask);
bt3SyncTask.Start();
tab3SearchBtn.BackColor = Color.FromArgb(15, 215, 107);
tab3SearchBtn.ForeColor = Color.White;
}
else
{
bt3SyncTask.Abort();
tab3SearchBtn.BackColor = Color.FromKnownColor(KnownColor.Control);
tab3SearchBtn.ForeColor = Color.FromKnownColor(KnownColor.ControlText);
}
}
void Tb3SyncTask()
{
while (true)
{
this.Invoke(new InvokeHandler(delegate()
{
BindOrderGrid3();
h_totalLbl.Text = hurryList.Sum(x => x.WeightNumber).ToString();
}));
Thread.Sleep(5000);
}
}
SelectHurryList lastHurry;
private void BindOrderGrid3()
{
hurryList = OrderDetailRpc.GetSelectHurryList(butcherDateInput.Date.Value);
if (lastHurry != null)
{
var t = hurryList.FirstOrDefault(x => x.WeightBill_ID == lastHurry.WeightBill_ID);
if (t != null)
t.HurryNumber = lastHurry.HurryNumber;
}
orderGrid3.DataSource = hurryList.OrderByDescending(x => x.B3WeighBill_ID).ToList();
foreach (DataGridViewRow row in orderGrid3.Rows)
{
if (lastHurry != null && lastHurry.WeightBill_ID == (long)row.Cells["H_WeightBill_ID"].Value)
{
lastHurry = row.DataBoundItem as SelectHurryList;
row.DefaultCellStyle.BackColor = orderGrid3.RowsDefaultCellStyle.SelectionBackColor;
}
}
InitScrollBar4();
orderGrid3.ClearSelection();
try
{
if (r4Roll != -1)
orderGrid3.FirstDisplayedScrollingRowIndex = r4Roll;
}
catch
{
r4Roll = -1;
}
orderGrid3.Refresh();
}
private void orderGrid3_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex == -1)
return;
if (e.ColumnIndex < orderGrid3.ColumnCount - 2)
return;
if (e.ColumnIndex == orderGrid3.ColumnCount - 2)//确定
{
if (lastHurry.HurryNumber == 0)
return;
if (lastHurry.HurryNumber > lastHurry.WeightNumber)
throw new Exception("急宰头数多余排宰头数");
bool hasError = false;
var record = OrderDetailRpc.InsertHurryRecord(lastHurry,out hasError);
record.TotalNumber = lastHurry.WeightNumber;
if (hasError)
UMessageBox.Show("排宰顺序出现多条记录,请手动修改", "注意");
lastHurry.HurryNumber = OrderDetailRpc.GetHurryRecordNumber(lastHurry.WeightBill_ID);
orderGrid3.Refresh();
HurryRecordPrint.Print(record);
UMessageBox.Show("打印成功");
}
else//查看
{
var view = new HurryRecordView(lastHurry.WeightBill_ID, lastHurry.WeightNumber);
if (view.ShowDialog() == DialogResult.OK)
{
lastHurry.HurryNumber -= view.Result;
orderGrid3.Refresh();
}
}
}
private void orderGrid3_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex == -1)
return;
var entity = orderGrid3.CurrentRow.DataBoundItem as SelectHurryList;
if (lastHurry != null)
{
foreach (DataGridViewRow row in orderGrid3.Rows)
{
if (lastHurry.WeightBill_ID == (long)row.Cells["H_WeightBill_ID"].Value)
{
row.DefaultCellStyle.BackColor = orderGrid3.RowsDefaultCellStyle.BackColor;
break;
}
}
}
lastHurry = entity;
if (e.ColumnIndex != orderGrid3.Columns.Count - 2)//非确定列
orderGrid3.Refresh();
}
int r4Roll = -1;
private void InitScrollBar4()
{
vScrollBar4.Maximum = (orderGrid3.RowCount - orderGrid3.DisplayedRowCount(false) + 30) * orderGrid3.RowTemplate.Height;
vScrollBar4.Minimum = 0;
vScrollBar4.SmallChange = orderGrid3.RowTemplate.Height;
vScrollBar4.LargeChange = orderGrid3.RowTemplate.Height * 30;
this.vScrollBar4.Scroll += (sender, e) =>
{
r4Roll = e.NewValue / orderGrid3.RowTemplate.Height;
orderGrid3.FirstDisplayedScrollingRowIndex = r4Roll;
};
}
}
}