using BO.BO.Bill;
|
|
using BO.Utils;
|
|
using BO.Utils.BillRpc;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace OrderConfirm
|
|
{
|
|
public partial class OrderConfirmForm : Form, IAfterLogin
|
|
{
|
|
#region IAfterLogin
|
|
public List<string> RoleName
|
|
{
|
|
get
|
|
{
|
|
return new List<string>() { "收购业务.顺序确认" };
|
|
}
|
|
}
|
|
|
|
public Form Generate()
|
|
{
|
|
return this;
|
|
}
|
|
|
|
#endregion
|
|
|
|
private delegate void InvokeHandler();
|
|
List<OrderDetail> orderList;
|
|
Thread syncThread;
|
|
public OrderConfirmForm()
|
|
{
|
|
InitializeComponent();
|
|
uDatePicker1.Date = DateTime.Today;
|
|
orderGrid.AutoGenerateColumns = false;
|
|
orderGrid.DataSource = null;
|
|
this.FormClosing += delegate
|
|
{
|
|
if (syncThread != null && syncThread.IsAlive)
|
|
syncThread.Abort();
|
|
};
|
|
}
|
|
|
|
private void syncBtn_Click(object sender, EventArgs e)
|
|
{
|
|
if (syncThread == null || !syncThread.IsAlive)
|
|
{
|
|
syncThread = new Thread(SyncTask);
|
|
syncThread.Start();
|
|
syncBtn.BackColor = Color.FromArgb(15, 215, 107);
|
|
syncBtn.ForeColor = Color.White;
|
|
}
|
|
else
|
|
{
|
|
syncThread.Abort();
|
|
syncBtn.BackColor = Color.FromKnownColor(KnownColor.Control);
|
|
syncBtn.ForeColor = Color.FromKnownColor(KnownColor.ControlText);
|
|
}
|
|
}
|
|
|
|
private void SyncTask()
|
|
{
|
|
while (true)
|
|
{
|
|
this.Invoke(new InvokeHandler(delegate()
|
|
{
|
|
BindFinishNumber();
|
|
BindOrderGrid();
|
|
}));
|
|
Thread.Sleep(5000);
|
|
}
|
|
}
|
|
|
|
void BindFinishNumber()
|
|
{
|
|
var number = OrderDetailRpc.GetFinishNumbers(uDatePicker1.Date.Value);
|
|
finishNumberLabel.Text = number.ToString();
|
|
finishNumberLabel.Refresh();
|
|
}
|
|
|
|
OrderDetail lastOrderDetail;
|
|
private void BindOrderGrid()
|
|
{
|
|
orderList = OrderDetailRpc.GetOrderDetail(uDatePicker1.Date.Value);
|
|
orderGrid.DataSource = orderList.OrderBy(x => x.Order).OrderBy(x => x.Doing).ToList();
|
|
if (lastOrderDetail == null && orderGrid.CurrentRow != null)
|
|
{
|
|
lastOrderDetail = orderGrid.CurrentRow.DataBoundItem as OrderDetail;
|
|
}
|
|
foreach (DataGridViewRow row in orderGrid.Rows)
|
|
{
|
|
var state = (int)row.Cells["C_OrderState"].Value;
|
|
if ((bool)row.Cells["C_IsHurryButcher"].Value)
|
|
row.DefaultCellStyle.BackColor = ColorTranslator.FromHtml("#CC9999");
|
|
if ((bool)row.Cells["C_SecondarySplit"].Value)
|
|
row.DefaultCellStyle.BackColor = ColorTranslator.FromHtml("#6699CC");
|
|
var tech = (short?)row.Cells["C_Technics"].Value;
|
|
if (tech.HasValue)
|
|
{
|
|
if (tech == 0)
|
|
row.DefaultCellStyle.BackColor = green;
|
|
else
|
|
row.DefaultCellStyle.BackColor = yellow;
|
|
}
|
|
((DataGridViewButtonCell)row.Cells["C_OK"]).Value = state == 0 ? "开始" : "取消";
|
|
if (lastOrderDetail != null && lastOrderDetail.ID == (long)row.Cells["C_ID"].Value)
|
|
{
|
|
lastOrderDetail = row.DataBoundItem as OrderDetail;
|
|
var c = orderGrid.RowsDefaultCellStyle.SelectionBackColor;
|
|
if (lastOrderDetail.IsHurryButcher)
|
|
row.DefaultCellStyle.BackColor = ColorTranslator.FromHtml("#FF9900");
|
|
if (lastOrderDetail.SecondarySplit)
|
|
row.DefaultCellStyle.BackColor = ColorTranslator.FromHtml("#006699");
|
|
row.DefaultCellStyle.BackColor = c;
|
|
}
|
|
}
|
|
InitScrollBar1();
|
|
orderGrid.ClearSelection();
|
|
try
|
|
{
|
|
if (roll != -1)
|
|
orderGrid.FirstDisplayedScrollingRowIndex = roll;
|
|
}
|
|
catch
|
|
{
|
|
roll = -1;
|
|
}
|
|
orderGrid.Refresh();
|
|
}
|
|
|
|
private void existBtn_Click(object sender, EventArgs e)
|
|
{
|
|
this.Close();
|
|
}
|
|
|
|
int roll = -1;
|
|
private void InitScrollBar1()
|
|
{
|
|
vScrollBar1.Maximum = (orderGrid.RowCount - orderGrid.DisplayedRowCount(false) + 30) * orderGrid.RowTemplate.Height;
|
|
vScrollBar1.Minimum = 0;
|
|
vScrollBar1.SmallChange = orderGrid.RowTemplate.Height;
|
|
vScrollBar1.LargeChange = orderGrid.RowTemplate.Height * 30;
|
|
this.vScrollBar1.Scroll += (sender, e) =>
|
|
{
|
|
roll = e.NewValue / orderGrid.RowTemplate.Height;
|
|
orderGrid.FirstDisplayedScrollingRowIndex = roll;
|
|
};
|
|
}
|
|
|
|
private void orderGrid_CellClick(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
if (e.RowIndex == -1)
|
|
return;
|
|
var entity = orderGrid.CurrentRow.DataBoundItem as OrderDetail;
|
|
if (lastOrderDetail != null)
|
|
{
|
|
foreach (DataGridViewRow row in orderGrid.Rows)
|
|
{
|
|
if (lastOrderDetail.ID == (long)row.Cells["C_ID"].Value)
|
|
{
|
|
Color c = orderGrid.RowsDefaultCellStyle.BackColor;
|
|
if (lastOrderDetail.IsHurryButcher)
|
|
c = ColorTranslator.FromHtml("#CC9999");
|
|
if (lastOrderDetail.SecondarySplit)
|
|
c = ColorTranslator.FromHtml("#6699CC");
|
|
if (lastOrderDetail.Technics.HasValue)
|
|
{
|
|
if (lastOrderDetail.Technics == 0)
|
|
c = green;
|
|
else
|
|
c = yellow;
|
|
}
|
|
row.DefaultCellStyle.BackColor = c;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
lastOrderDetail = entity;
|
|
|
|
var bc = orderGrid.RowsDefaultCellStyle.SelectionBackColor;
|
|
if (lastOrderDetail.IsHurryButcher)
|
|
bc = ColorTranslator.FromHtml("#FF9900");
|
|
if (lastOrderDetail.SecondarySplit)
|
|
bc = ColorTranslator.FromHtml("#006699");
|
|
orderGrid.CurrentRow.DefaultCellStyle.SelectionBackColor = bc;
|
|
orderGrid.Refresh();
|
|
}
|
|
|
|
private void orderGrid_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
if (e.RowIndex == -1)
|
|
return;
|
|
if (e.ColumnIndex < orderGrid.ColumnCount - 2)
|
|
return;
|
|
if (lastOrderDetail.OrderState == 20)
|
|
return;
|
|
if (e.ColumnIndex == orderGrid.ColumnCount - 2)//开始 取消
|
|
OrderDetailRpc.SetOrderState(lastOrderDetail.ID, lastOrderDetail.OrderState == 0 ? 10 : 0);
|
|
else//完成
|
|
{
|
|
OrderDetailRpc.SetOrderState(lastOrderDetail.ID, 20);
|
|
BindFinishNumber();
|
|
}
|
|
BindOrderGrid();
|
|
}
|
|
|
|
string code = string.Empty;
|
|
bool start = false;
|
|
private void OrderConfirmForm_KeyUp(object sender, KeyEventArgs e)
|
|
{
|
|
switch (e.KeyData)
|
|
{
|
|
case Keys.S:
|
|
start = true;
|
|
code = string.Empty;
|
|
break;
|
|
case Keys.E:
|
|
if (!start)
|
|
break;
|
|
InsertDetail();
|
|
start = false;
|
|
code = string.Empty;
|
|
break;
|
|
default:
|
|
if (start)
|
|
code += (char)e.KeyValue;
|
|
break;
|
|
}
|
|
}
|
|
|
|
void InsertDetail()
|
|
{
|
|
if (orderList == null)
|
|
throw new Exception("请先同步数据");
|
|
long id = 0;
|
|
if (!long.TryParse(code, out id))
|
|
throw new Exception(string.Format("接收扫码输入错误 {0}", code));
|
|
var entity = OrderDetailRpc.GetHurryRecord(id);
|
|
if (entity.ToOrderDetail_ID.HasValue)
|
|
throw new Exception("该条码已插入过,不能重复插入");
|
|
var currentOrder = 0;
|
|
if (!setTop.Checked)
|
|
{
|
|
if (lastOrderDetail != null && lastOrderDetail.Date != uDatePicker1.Date)
|
|
lastOrderDetail = null;
|
|
if (lastOrderDetail != null)
|
|
currentOrder = OrderDetailRpc.GetCurrentOrder(lastOrderDetail.ID);
|
|
else
|
|
currentOrder = OrderDetailRpc.GetMaxOrder(uDatePicker1.Date.Value);
|
|
currentOrder++;
|
|
}
|
|
else
|
|
{
|
|
setTop.Checked = false;
|
|
var l = orderList.OrderBy(x => x.Order).OrderBy(x => x.Doing).FirstOrDefault();
|
|
if (l != null)
|
|
currentOrder = l.Order;
|
|
else
|
|
currentOrder = 1;
|
|
}
|
|
var order = new OrderDetail();
|
|
order.Order = currentOrder;
|
|
order.LiveColonyHouse_Name = entity.LiveColonyHouse_Name;
|
|
order.PlanNumber = entity.HurryNumber;
|
|
order.WeightBill_ID = entity.WeightBill_ID;
|
|
order.B3WeighBill_ID = entity.B3WeighBill_ID;
|
|
order.Date = uDatePicker1.Date.Value;
|
|
order.IsHurryButcher = true;
|
|
OrderDetailRpc.InsertByHurryRecord(order, id);
|
|
lastOrderDetail = order;
|
|
BindOrderGrid();
|
|
}
|
|
|
|
Color green = ColorTranslator.FromHtml("#3CC24C");
|
|
Color yellow = ColorTranslator.FromHtml("#FFDE5A");
|
|
}
|
|
}
|