using SelfHelpClient.BL;
|
|
using SelfHelpClient.BO;
|
|
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 SelfHelpClient
|
|
{
|
|
public partial class WeightForm : Form
|
|
{
|
|
WeightBill entity;
|
|
Thread refersh;
|
|
public WeightForm(ViewEntity view)
|
|
{
|
|
InitializeComponent();
|
|
if (view.BillType == 0)
|
|
entity = WeightBillBL.CreateWeightBill(view.ID);
|
|
else
|
|
entity = WeightBillBL.GetWeightBill(view.ID);
|
|
var tableHeight = InitTableLayoutPanel();
|
|
BuildGridPanel();
|
|
this.FormClosing += delegate
|
|
{
|
|
if (refersh != null && refersh.IsAlive)
|
|
refersh.Abort();
|
|
};
|
|
}
|
|
|
|
protected override void OnLoad(EventArgs e)
|
|
{
|
|
base.OnLoad(e);
|
|
farmerGrid.DataSource = entity.FarmerDetails;
|
|
farmerGrid.Refresh();
|
|
|
|
weightGrid.DataSource = entity.Details;
|
|
weightGrid.Refresh();
|
|
|
|
refersh = new Thread(RefershDetail);
|
|
refersh.Start();
|
|
}
|
|
|
|
private void RefershDetail()
|
|
{
|
|
while (true)
|
|
{
|
|
Thread.Sleep(2000);
|
|
if (this.IsHandleCreated)
|
|
{
|
|
this.Invoke(new Action(() =>
|
|
{
|
|
var detail = WeightBillBL.GetWeightDetail(entity.ID);
|
|
if (detail.Any())
|
|
{
|
|
weightGrid.DataSource = detail;
|
|
weightGrid.Refresh();
|
|
}
|
|
}));
|
|
}
|
|
}
|
|
}
|
|
|
|
private void BuildGridPanel()
|
|
{
|
|
panel5.Location = new Point(6, panel2.Location.Y + panel2.Height + 6);
|
|
panel5.Height = 320;
|
|
|
|
farmerGrid.Height = 180;
|
|
|
|
linePanel.Location = new Point(0, 9 + 180 + 15);
|
|
|
|
weightGrid.Height = 110;
|
|
weightGrid.Location = new Point(9, linePanel.Location.Y + 15);
|
|
}
|
|
|
|
Color fontColor = Color.FromArgb(238, 104, 15);
|
|
private int InitTableLayoutPanel()
|
|
{
|
|
TableLayoutPanel tablePanel = new TableLayoutPanel();
|
|
tablePanel.Location = new Point(9, 15);
|
|
tablePanel.Width = Screen.PrimaryScreen.Bounds.Width - 10;
|
|
var dic = BuildFields();
|
|
var table = ComputeColAndRow(dic.Count);
|
|
tablePanel.Height = 40 * table.Rows + 20;
|
|
panel2.Height = tablePanel.Height + 10;
|
|
panel2.Controls.Add(tablePanel);
|
|
DynamicLayout(tablePanel, table);
|
|
var type = typeof(WeightBill);
|
|
var r = 0;
|
|
var c = 0;
|
|
foreach (var item in dic)
|
|
{
|
|
Label title = BuildLabel(item.Value + ":");
|
|
tablePanel.Controls.Add(title);
|
|
tablePanel.SetRow(title, r);
|
|
tablePanel.SetColumn(title, c);
|
|
c++;
|
|
|
|
var v = type.GetProperty(item.Key).GetValue(entity);
|
|
var lbl = string.Empty;
|
|
switch (item.Key)
|
|
{
|
|
case "WeighTime":
|
|
lbl = string.Format("{0:yyyy-MM-dd HH:mm:ss}", v);
|
|
break;
|
|
case "JingJianFee":
|
|
case "DiscontMoney":
|
|
case "ShackWeight":
|
|
case "ShackPrice":
|
|
case "ShackMoney":
|
|
lbl = string.Format("{0:#0.######}", v);
|
|
break;
|
|
case "AnimalTestDate":
|
|
lbl = string.Format("{0:yyyy-MM-dd}", v);
|
|
break;
|
|
default:
|
|
lbl = string.Format("{0}", v);
|
|
break;
|
|
}
|
|
Label content = BuildLabel(lbl);
|
|
content.ForeColor = fontColor;
|
|
tablePanel.Controls.Add(content);
|
|
tablePanel.SetRow(content, r);
|
|
tablePanel.SetColumn(content, c);
|
|
c++;
|
|
|
|
if (c % table.Cols == 0)
|
|
{
|
|
c = 0;
|
|
r++;
|
|
}
|
|
}
|
|
|
|
return tablePanel.Height;
|
|
}
|
|
|
|
TableSturct ComputeColAndRow(int fileCount)
|
|
{
|
|
var screenWidth = Screen.PrimaryScreen.Bounds.Width - 10;
|
|
var col = Math.Floor((decimal)screenWidth / (110 + 200));
|
|
var row = Math.Ceiling(fileCount / col);
|
|
return new TableSturct() { Rows = (int)row, Cols = (int)col * 2 };
|
|
}
|
|
|
|
private void DynamicLayout(TableLayoutPanel layoutPanel, TableSturct table)
|
|
{
|
|
layoutPanel.RowCount = table.Rows; //设置分成几行
|
|
for (int i = 0; i < table.Rows; i++)
|
|
{
|
|
layoutPanel.RowStyles.Add(new RowStyle(SizeType.Absolute, 40));
|
|
}
|
|
layoutPanel.ColumnCount = table.Cols; //设置分成几列
|
|
for (int i = 0; i < table.Cols; i++)
|
|
{
|
|
var precent = i % 2 == 0 ? 30F : 70F;
|
|
layoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, precent));
|
|
}
|
|
}
|
|
|
|
Dictionary<string, string> BuildFields()
|
|
{
|
|
var dic = new Dictionary<string, string>() {
|
|
{"Supplier_Name","供应商"},{"BankAccount","银行卡号"},{"PurchaseType_Name","收购类型"},{"WeighTime","过磅时间"},{"Car_Name","车辆"},{"Employee_Name","业务员"},{"JingJianFee","经检费"},{"DiscontMoney","猪场扣款"},{"ShackWeight","棚前重量"},{"ShackPrice","棚前单价"},{"ShackMoney","棚前金额"},{"AnimalTestMan","动检人"},{"AnimalTestNumber","动检证号"},{"AnimalTestDate","动检日期"},
|
|
};
|
|
return dic;
|
|
}
|
|
|
|
Label BuildLabel(string content)
|
|
{
|
|
Label label = new Label();
|
|
label.Text = content;
|
|
label.Font = new System.Drawing.Font("宋体", 14);
|
|
label.Dock = DockStyle.Fill;
|
|
label.TextAlign = ContentAlignment.MiddleLeft;
|
|
return label;
|
|
}
|
|
|
|
private void backBtn_Click(object sender, EventArgs e)
|
|
{
|
|
MainForm.Form.Show();
|
|
this.Close();
|
|
}
|
|
|
|
private void okBtn_Click(object sender, EventArgs e)
|
|
{
|
|
//目前过磅信息界面上的确认按钮没有功能,暂时做点击完后返回主界面;
|
|
MainForm.Form.Show();
|
|
this.Close();
|
|
}
|
|
}
|
|
|
|
struct TableSturct
|
|
{
|
|
public int Rows { get; set; }
|
|
public int Cols { get; set; }
|
|
}
|
|
}
|