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

179 lines
5.8 KiB

using BO.BO.Bill;
using BO.Utils;
using BO.Utils.BillRpc;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Linq;
namespace ButcherOrder
{
public partial class ButcherOrderForm : Form, IAfterLogin
{
#region IAfterLogin
public string RoleName
{
get
{
return "排宰员";
}
}
public Form Generate()
{
return this;
}
# endregion
List<SecondOrder> orderList;
public ButcherOrderForm()
{
InitializeComponent();
this.uDatePicker1.Date = DateTime.Today;
secondOrderGridView.AutoGenerateColumns = false;
secondOrderGridView.DataSource = null;
AddKeyPad();
}
private void AddKeyPad()
{
for (var i = 1; i < 10; i++)
{
var btn = new Button() { Name = "_" + i, Text = i.ToString(), Size = new Size(70, 70), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 15 }, Font = new Font("宋体", 15) };
btn.Click += (sender, e) =>
{
numberInput.Text += btn.Text;
};
keyPanel.Controls.Add(btn);
}
var zero = new Button() { Name = "_0", Text = "0", Size = new Size(70, 70), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 15 }, Font = new Font("宋体", 15) };
zero.Click += (sender, e) =>
{
if (!string.IsNullOrEmpty(numberInput.Text))
numberInput.Text += "0";
};
keyPanel.Controls.Add(zero);
var back = new Button() { Name = "_back", Text = "←", Size = new Size(70, 70), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 15 }, Font = new Font("宋体", 15) };
back.Click += (sender, e) =>
{
if (!string.IsNullOrEmpty(numberInput.Text))
numberInput.Text = numberInput.Text.Substring(0, numberInput.Text.Length - 1);
};
keyPanel.Controls.Add(back);
var clear = new Button() { Name = "_clear", Text = "清空", Size = new Size(70, 70), TextAlign = ContentAlignment.MiddleCenter, Margin = new Padding { All = 15 }, Font = new Font("宋体", 15) };
clear.Click += (sender, e) =>
{
numberInput.Text = null;
};
keyPanel.Controls.Add(clear);
}
private void existBtn_Click(object sender, EventArgs e)
{
this.Close();
}
private void syncBtn_Click(object sender, EventArgs e)
{
orderList = SecondOrderRpc.GetSecondOrderList(this.uDatePicker1.Date.Value);
BindGrid();
}
void BindGrid()
{
secondOrderGridView.DataSource = orderList.OrderBy(x => x.Order).OrderBy(x => x.IsOk).ToList();
foreach (DataGridViewRow row in secondOrderGridView.Rows)
{
if ((bool)row.Cells["IsOk"].Value)
row.DefaultCellStyle.BackColor = Color.YellowGreen;
}
if (secondOrderGridView.CurrentRow != null)
{
var entity = secondOrderGridView.CurrentRow.DataBoundItem as SecondOrder;
if (!entity.IsOk)
orderLabel.Text = entity.Order.ToString();
BindSelectColor(entity);
}
else
orderLabel.Text = "0";
InitScrollBar1();
secondOrderGridView.Refresh();
}
private void okBtn_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(numberInput.Text))
return;
if (secondOrderGridView.CurrentRow == null)
throw new Exception("请先同步数据");
var entity = secondOrderGridView.CurrentRow.DataBoundItem as SecondOrder;
if (entity.IsOk)
{
var result = MessageBox.Show("当前行已更新\n确定要继续修改吗?","确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
if (result != DialogResult.OK)
return;
}
var number = int.Parse(numberInput.Text);
if (entity.HotFadeNumber + number > entity.PlanNumber)
throw new Exception("烫褪头数多余总头数,请确认!");
var detail = new SecondOrder_Detail() { Number = number, SecondOrder_ID = entity.ID, Time = DateTime.Now };
entity.HotFadeNumber += detail.Number;
SecondOrderRpc.Insert(detail, entity);
secondOrderGridView.Refresh();
numberInput.Text = string.Empty;
}
void BindSelectColor(SecondOrder entity)
{
if (entity.IsOk)
secondOrderGridView.RowsDefaultCellStyle.SelectionBackColor = Color.FromArgb(204, 51, 51);
else
secondOrderGridView.RowsDefaultCellStyle.SelectionBackColor = Color.FromArgb(66, 163, 218);
}
private void secondOrderGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex == -1)
return;
var entity = secondOrderGridView.CurrentRow.DataBoundItem as SecondOrder;
BindSelectColor(entity);
if (e.ColumnIndex < secondOrderGridView.ColumnCount - 2)
return;
if (e.ColumnIndex == secondOrderGridView.ColumnCount - 2)//更新
{
if (entity.IsOk)
return;
entity.IsOk = true;
SecondOrderRpc.SetOk(entity.ID, entity);
BindGrid();
}
else if ((e.ColumnIndex == secondOrderGridView.ColumnCount - 1))//查看
{
var view = new ViewDetail(entity);
if (view.ShowDialog() == DialogResult.OK)
{
secondOrderGridView.Refresh();
}
}
}
private void InitScrollBar1()
{
vScrollBar1.Maximum = (secondOrderGridView.RowCount - secondOrderGridView.DisplayedRowCount(false) + 30) * secondOrderGridView.RowTemplate.Height;
vScrollBar1.Minimum = 0;
vScrollBar1.SmallChange = secondOrderGridView.RowTemplate.Height;
vScrollBar1.LargeChange = secondOrderGridView.RowTemplate.Height * 30;
this.vScrollBar1.Scroll += (sender, e) =>
{
secondOrderGridView.FirstDisplayedScrollingRowIndex = e.NewValue / secondOrderGridView.RowTemplate.Height;
Application.DoEvents();
};
}
}
}