From 7a054cf72fe684f797c3c3695889098ebf8920d2 Mon Sep 17 00:00:00 2001 From: robin Date: Sat, 9 Sep 2017 17:25:54 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9C=80=E6=B1=82=E5=8D=95No.136506?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../B3ButcherWeightClient.csproj | 20 + B3ButcherWeightClient/ConfigUtil.cs | 66 ++- .../Data/IND560DataFormat.cs | 6 +- B3ButcherWeightClient/EncodeString.cs | 2 + B3ButcherWeightClient/Login.cs | 50 +- B3ButcherWeightClient/Main.Designer.cs | 368 ++++++++---- B3ButcherWeightClient/Main.cs | 547 ++++++++++-------- B3ButcherWeightClient/Main.resx | 7 +- B3ButcherWeightClient/Parameters.Designer.cs | 171 ++++++ B3ButcherWeightClient/Parameters.cs | 76 +++ B3ButcherWeightClient/Parameters.resx | 120 ++++ B3ButcherWeightClient/Parameters.txt | 0 B3ButcherWeightClient/QueryForm.Designer.cs | 69 +-- B3ButcherWeightClient/QueryForm.cs | 4 + B3ButcherWeightClient/QueryForm.resx | 27 - B3ButcherWeightClient/RpcUtil.cs | 62 ++ B3ButcherWeightClient/Setting.Designer.cs | 66 ++- B3ButcherWeightClient/Setting.cs | 5 +- BO/WeightTable.cs | 12 +- 白条称重客户端.docx | Bin 206013 -> 296081 bytes 20 files changed, 1223 insertions(+), 455 deletions(-) create mode 100644 B3ButcherWeightClient/Parameters.Designer.cs create mode 100644 B3ButcherWeightClient/Parameters.cs create mode 100644 B3ButcherWeightClient/Parameters.resx create mode 100644 B3ButcherWeightClient/Parameters.txt create mode 100644 B3ButcherWeightClient/RpcUtil.cs diff --git a/B3ButcherWeightClient/B3ButcherWeightClient.csproj b/B3ButcherWeightClient/B3ButcherWeightClient.csproj index 6efab63..d1e22de 100644 --- a/B3ButcherWeightClient/B3ButcherWeightClient.csproj +++ b/B3ButcherWeightClient/B3ButcherWeightClient.csproj @@ -41,6 +41,14 @@ False ..\..\..\tsref\Debug\Forks.EnterpriseServices.dll + + False + ..\..\..\tsref\Debug\forks.json.dll + + + False + ..\..\..\tsref\Debug\Forks.JsonRpc.Client.dll + @@ -48,6 +56,8 @@ + + @@ -64,6 +74,13 @@ ChangeLevelForm.cs + + Form + + + Parameters.cs + + @@ -119,6 +136,9 @@ Login.cs + + Parameters.cs + ResXFileCodeGenerator Resources.Designer.cs diff --git a/B3ButcherWeightClient/ConfigUtil.cs b/B3ButcherWeightClient/ConfigUtil.cs index 3b88c38..f3fbd6b 100644 --- a/B3ButcherWeightClient/ConfigUtil.cs +++ b/B3ButcherWeightClient/ConfigUtil.cs @@ -8,6 +8,7 @@ using Forks.Utils.IO; namespace B3ButcherWeightClient { public class ConfigUtil { public static string ConfigFilePath = Application.StartupPath + "\\Config.txt"; + public static string ParametersPath = Application.StartupPath + "\\Parameters.txt"; public static string LivestockFilePath = Application.StartupPath + "\\Livestock.txt"; public static void Init() { @@ -72,8 +73,44 @@ namespace B3ButcherWeightClient { MinWeight = nutFile.AsDecimal(ConfigItem.MinWeight, 25m); MaxWeight = nutFile.AsDecimal(ConfigItem.MaxWeight, 300m); AllowChangeLevel = nutFile.AsBool(ConfigItem.AllowChangeLevel, false); - SubWeight = nutFile.AsDecimal(ConfigItem.SubWeight, 0m); -PerDayStartHour = nutFile.AsInt32(ConfigItem.PerDayStartHour, 0); + SubWeight = nutFile.AsDecimal(ConfigItem.SubWeight, 0m); + PerDayStartHour = nutFile.AsInt32(ConfigItem.PerDayStartHour, 0); + Url = nutFile.AsString(ConfigItem.Url, ""); + } + + using (TextReader reader = FS.OpenReader(ParametersPath, true)) { + var nutFile = NutFile.Parse(reader); + var str = nutFile.AsString(ConfigItem.AccID, ""); + if (string.IsNullOrEmpty(str)) { + AccID = 0; + } else { + long.TryParse(str, out AccID); + } + str = nutFile.AsString(ConfigItem.DeptID, ""); + if (string.IsNullOrEmpty(str)) { + DeptID = 0; + } else { + long.TryParse(str, out DeptID); + } + str = nutFile.AsString(ConfigItem.StoreID, ""); + if (string.IsNullOrEmpty(str)) { + StoreID = 0; + } else { + long.TryParse(str, out StoreID); + } + str = nutFile.AsString(ConfigItem.TouruID, ""); + if (string.IsNullOrEmpty(str)) { + TouruID = 0; + } else { + long.TryParse(str, out TouruID); + } + str = nutFile.AsString(ConfigItem.ShengchanID, ""); + if (string.IsNullOrEmpty(str)) { + ShengchanID = 0; + } else { + long.TryParse(str, out ShengchanID); + } + } } @@ -116,8 +153,17 @@ PerDayStartHour = nutFile.AsInt32(ConfigItem.PerDayStartHour, 0); public static int StartTime; public static string CType; public static bool AllowChangeLevel; - public static decimal SubWeight; - public static int PerDayStartHour; } + public static decimal SubWeight; + public static int PerDayStartHour; + public static string Url; + + public static long AccID; + public static long DeptID; + public static long StoreID; + public static long TouruID; + public static long ShengchanID; + + } public class ConfigItem { public const string CType = "CType"; @@ -146,6 +192,14 @@ PerDayStartHour = nutFile.AsInt32(ConfigItem.PerDayStartHour, 0); public const string ReadType = "ReadType"; public const string LastUser = "LastUser"; public const string AllowChangeLevel = "AllowChangeLevel"; -public const string SubWeight = "SubWeight"; -public const string PerDayStartHour = "PerDayStartHour"; } + public const string SubWeight = "SubWeight"; + public const string PerDayStartHour = "PerDayStartHour"; + public const string Url = "Url"; + + public const string AccID = "AccID"; + public const string DeptID = "DeptID"; + public const string StoreID = "StoreID"; + public const string TouruID = "TouruID"; + public const string ShengchanID = "ShengchanID"; + } } diff --git a/B3ButcherWeightClient/Data/IND560DataFormat.cs b/B3ButcherWeightClient/Data/IND560DataFormat.cs index 36fb485..74f289c 100644 --- a/B3ButcherWeightClient/Data/IND560DataFormat.cs +++ b/B3ButcherWeightClient/Data/IND560DataFormat.cs @@ -1,3 +1,4 @@ +using System.Globalization; using System.Text; namespace B3ButcherWeightClient.Data @@ -29,7 +30,10 @@ namespace B3ButcherWeightClient.Data isStatic = true; weight = buf.Replace("kg", "").Replace((char)0x0D, (char)0x20).Replace((char)0x0A, (char)0x20); weight = weight.Trim(); - return true; + decimal w; + if (decimal.TryParse(weight, out w)) + return true; + return false; } public override bool ParseAscii(string buf, out string weight, out bool isStatic, out string subStr) { diff --git a/B3ButcherWeightClient/EncodeString.cs b/B3ButcherWeightClient/EncodeString.cs index 6621d95..8fadbb6 100644 --- a/B3ButcherWeightClient/EncodeString.cs +++ b/B3ButcherWeightClient/EncodeString.cs @@ -43,6 +43,8 @@ namespace B3ButcherWeightClient { return new string(ch); } + public static string UserName = ""; + public static string Password = ""; public static readonly object RwLocker = new object(); } } \ No newline at end of file diff --git a/B3ButcherWeightClient/Login.cs b/B3ButcherWeightClient/Login.cs index 2a5303d..e5910fd 100644 --- a/B3ButcherWeightClient/Login.cs +++ b/B3ButcherWeightClient/Login.cs @@ -2,6 +2,7 @@ using System.Data; using System.IO; using System.Windows.Forms; +using Forks.JsonRpc.Client; using Forks.Utils.Data; using Forks.Utils.IO; @@ -9,7 +10,7 @@ namespace B3ButcherWeightClient { public partial class Login : Form { public Login() { InitializeComponent(); - using (TextReader reader = FS.OpenReader(ConfigUtil.ConfigFilePath,true)) { + using (TextReader reader = FS.OpenReader(ConfigUtil.ConfigFilePath, true)) { NutFile nutFile = NutFile.Parse(reader); txtBUser.Text = nutFile.AsString(ConfigItem.LastUser, "system"); } @@ -21,34 +22,30 @@ namespace B3ButcherWeightClient { private void btnLogin_Click(object sender, EventArgs e) { ConfigUtil.Init(); + if (!RpcUtil.IsInited) { + RpcFacade.Init(ConfigUtil.Url, "B3WuFengClient"); + RpcUtil.IsInited = true; + } + string loginUser = txtBUser.Text.Trim(); string passWord = txtBPassword.Text.Trim(); - long userID = 0; - string role = ""; - - if (!CheckUser(loginUser)) { - MessageBox.Show("用户名不存在!"); - txtBUser.Text = ""; - txtBPassword.Text = ""; - txtBUser.Focus(); - } else { - if (CheckPassword(loginUser, passWord, out userID, out role)) { - Form main = new Main(this); - Hide(); - using (var reader = FS.OpenReader(ConfigUtil.ConfigFilePath)) { - var nutFile = NutFile.Parse(reader); - nutFile.SetValue(ConfigItem.LastUser, loginUser); - using (var writer = FS.OpenWriter(ConfigUtil.ConfigFilePath)) { - nutFile.Write(writer); - } - } - main.Show(); - } else { - MessageBox.Show("密码错误!"); - txtBPassword.Text = ""; - txtBPassword.Focus(); + string errorInfo; + var success = RpcUtil.Login(loginUser, passWord, out errorInfo); + if (!success) + if (!string.IsNullOrEmpty(errorInfo) && errorInfo != "无法连接到远程服务器") { + MessageBox.Show(errorInfo); + return; + } + Form main = new Main(this); + Hide(); + using (var reader = FS.OpenReader(ConfigUtil.ConfigFilePath)) { + var nutFile = NutFile.Parse(reader); + nutFile.SetValue(ConfigItem.LastUser, loginUser); + using (var writer = FS.OpenWriter(ConfigUtil.ConfigFilePath)) { + nutFile.Write(writer); } } + main.Show(); } private void btnSetConStr_Click(object sender, EventArgs e) { @@ -56,7 +53,6 @@ namespace B3ButcherWeightClient { setForm.ShowDialog(); } - private static bool CheckUser(string userName) { var conStr = ConfigUtil.ConnectionStr; @@ -65,7 +61,7 @@ namespace B3ButcherWeightClient { return false; } - var isExist = false; + var isExist = false; if (!string.IsNullOrEmpty(userName)) { string sql = "select PassWord from LoginUser where UserName='" + userName.Trim() + "'"; try { diff --git a/B3ButcherWeightClient/Main.Designer.cs b/B3ButcherWeightClient/Main.Designer.cs index a9e2784..037de22 100644 --- a/B3ButcherWeightClient/Main.Designer.cs +++ b/B3ButcherWeightClient/Main.Designer.cs @@ -49,6 +49,7 @@ namespace B3ButcherWeightClient { this.lblDisplay = new System.Windows.Forms.Label(); this.dataGridView = new System.Windows.Forms.DataGridView(); this.ID = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.DmoID = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Sequence = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.JdColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.批号 = new System.Windows.Forms.DataGridViewTextBoxColumn(); @@ -59,17 +60,28 @@ namespace B3ButcherWeightClient { this.DeleteDetail = new System.Windows.Forms.DataGridViewButtonColumn(); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.button1 = new System.Windows.Forms.Button(); - this.pictureBox1 = new System.Windows.Forms.PictureBox(); - this.txtBatch = new System.Windows.Forms.TextBox(); this.pictureBox2 = new System.Windows.Forms.PictureBox(); - this.tbxSequence = new System.Windows.Forms.TextBox(); - this.subWeightTextBox = new System.Windows.Forms.TextBox(); + this.monthCalendar = new System.Windows.Forms.MonthCalendar(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.setButton = new System.Windows.Forms.Button(); + this.textBoxEndTime = new System.Windows.Forms.TextBox(); + this.button2 = new System.Windows.Forms.Button(); + this.textBoxBeginTime = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); this.jdTextBox = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); - this.label1 = new System.Windows.Forms.Label(); - this.lblNumber = new System.Windows.Forms.Label(); + this.batchComboBox = new System.Windows.Forms.ComboBox(); this.saveButton = new System.Windows.Forms.Button(); + this.tbxSequence = new System.Windows.Forms.TextBox(); + this.lblNumber = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.numberTextBox = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.subWeightTextBox = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.panel1 = new System.Windows.Forms.Panel(); this._serialPort = new System.IO.Ports.SerialPort(this.components); ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit(); @@ -77,8 +89,10 @@ namespace B3ButcherWeightClient { this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); this.splitContainer1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); + this.groupBox2.SuspendLayout(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.SuspendLayout(); // // lblDisplay @@ -88,9 +102,9 @@ namespace B3ButcherWeightClient { this.lblDisplay.BackColor = System.Drawing.Color.Black; this.lblDisplay.Font = new System.Drawing.Font("宋体", 26.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.lblDisplay.ForeColor = System.Drawing.Color.LimeGreen; - this.lblDisplay.Location = new System.Drawing.Point(3, 3); + this.lblDisplay.Location = new System.Drawing.Point(3, 0); this.lblDisplay.Name = "lblDisplay"; - this.lblDisplay.Size = new System.Drawing.Size(410, 64); + this.lblDisplay.Size = new System.Drawing.Size(530, 64); this.lblDisplay.TabIndex = 3; this.lblDisplay.Text = "display"; this.lblDisplay.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -114,6 +128,7 @@ namespace B3ButcherWeightClient { this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.ID, + this.DmoID, this.Sequence, this.JdColumn, this.批号, @@ -143,6 +158,14 @@ namespace B3ButcherWeightClient { this.ID.ReadOnly = true; this.ID.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; // + // DmoID + // + this.DmoID.DataPropertyName = "DmoID"; + this.DmoID.HeaderText = "."; + this.DmoID.Name = "DmoID"; + this.DmoID.ReadOnly = true; + this.DmoID.Visible = false; + // // Sequence // this.Sequence.DataPropertyName = "Sequence"; @@ -238,22 +261,16 @@ namespace B3ButcherWeightClient { this.splitContainer1.Panel1.BackColor = System.Drawing.Color.White; this.splitContainer1.Panel1.Controls.Add(this.button1); this.splitContainer1.Panel1.Controls.Add(this.lblDisplay); + this.splitContainer1.Panel1.Controls.Add(this.pictureBox2); this.splitContainer1.Panel1.Controls.Add(this.dataGridView); // // splitContainer1.Panel2 // this.splitContainer1.Panel2.BackColor = System.Drawing.Color.White; + this.splitContainer1.Panel2.Controls.Add(this.monthCalendar); + this.splitContainer1.Panel2.Controls.Add(this.groupBox2); + this.splitContainer1.Panel2.Controls.Add(this.groupBox1); this.splitContainer1.Panel2.Controls.Add(this.pictureBox1); - this.splitContainer1.Panel2.Controls.Add(this.txtBatch); - this.splitContainer1.Panel2.Controls.Add(this.pictureBox2); - this.splitContainer1.Panel2.Controls.Add(this.tbxSequence); - this.splitContainer1.Panel2.Controls.Add(this.subWeightTextBox); - this.splitContainer1.Panel2.Controls.Add(this.jdTextBox); - this.splitContainer1.Panel2.Controls.Add(this.label2); - this.splitContainer1.Panel2.Controls.Add(this.label3); - this.splitContainer1.Panel2.Controls.Add(this.label1); - this.splitContainer1.Panel2.Controls.Add(this.lblNumber); - this.splitContainer1.Panel2.Controls.Add(this.saveButton); this.splitContainer1.Panel2.Controls.Add(this.panel1); this.splitContainer1.Size = new System.Drawing.Size(1387, 748); this.splitContainer1.SplitterDistance = 722; @@ -262,37 +279,18 @@ namespace B3ButcherWeightClient { // button1 // this.button1.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.button1.Location = new System.Drawing.Point(520, 3); + this.button1.Location = new System.Drawing.Point(579, 3); this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(167, 58); + this.button1.Size = new System.Drawing.Size(140, 58); this.button1.TabIndex = 5; this.button1.Text = "查询"; this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.button1_Click); // - // pictureBox1 - // - this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); - this.pictureBox1.Location = new System.Drawing.Point(741, 8); - this.pictureBox1.Name = "pictureBox1"; - this.pictureBox1.Size = new System.Drawing.Size(34, 29); - this.pictureBox1.TabIndex = 18; - this.pictureBox1.TabStop = false; - this.pictureBox1.Visible = false; - this.pictureBox1.Click += new System.EventHandler(this.pictureBox2_Click); - // - // txtBatch - // - this.txtBatch.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.txtBatch.Location = new System.Drawing.Point(262, 69); - this.txtBatch.Name = "txtBatch"; - this.txtBatch.Size = new System.Drawing.Size(119, 29); - this.txtBatch.TabIndex = 11; - // // pictureBox2 // this.pictureBox2.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox2.Image"))); - this.pictureBox2.Location = new System.Drawing.Point(654, 3); + this.pictureBox2.Location = new System.Drawing.Point(539, 3); this.pictureBox2.Name = "pictureBox2"; this.pictureBox2.Size = new System.Drawing.Size(34, 29); this.pictureBox2.TabIndex = 18; @@ -300,93 +298,242 @@ namespace B3ButcherWeightClient { this.pictureBox2.Visible = false; this.pictureBox2.Click += new System.EventHandler(this.pictureBox2_Click); // + // monthCalendar + // + this.monthCalendar.Location = new System.Drawing.Point(196, 158); + this.monthCalendar.Name = "monthCalendar"; + this.monthCalendar.TabIndex = 7; + this.monthCalendar.DateChanged += new System.Windows.Forms.DateRangeEventHandler(this.monthCalendar_DateSelected); + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.setButton); + this.groupBox2.Controls.Add(this.textBoxEndTime); + this.groupBox2.Controls.Add(this.button2); + this.groupBox2.Controls.Add(this.textBoxBeginTime); + this.groupBox2.Controls.Add(this.label5); + this.groupBox2.Controls.Add(this.label6); + this.groupBox2.Location = new System.Drawing.Point(3, 105); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(655, 97); + this.groupBox2.TabIndex = 0; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "创建单据"; + // + // setButton + // + this.setButton.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.setButton.Location = new System.Drawing.Point(492, 8); + this.setButton.Name = "setButton"; + this.setButton.Size = new System.Drawing.Size(154, 37); + this.setButton.TabIndex = 19; + this.setButton.Text = "设置单据默认值"; + this.setButton.UseVisualStyleBackColor = true; + this.setButton.Click += new System.EventHandler(this.setButton_Click); + // + // textBoxEndTime + // + this.textBoxEndTime.Font = new System.Drawing.Font("宋体", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBoxEndTime.Location = new System.Drawing.Point(313, 11); + this.textBoxEndTime.MaxLength = 20; + this.textBoxEndTime.Multiline = true; + this.textBoxEndTime.Name = "textBoxEndTime"; + this.textBoxEndTime.Size = new System.Drawing.Size(165, 30); + this.textBoxEndTime.TabIndex = 13; + this.textBoxEndTime.TabStop = false; + this.textBoxEndTime.DoubleClick += new System.EventHandler(this.textBoxEndTime_DoubleClick); + // + // button2 + // + this.button2.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button2.Location = new System.Drawing.Point(492, 51); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(154, 37); + this.button2.TabIndex = 21; + this.button2.Text = "创建白条领料单"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // textBoxBeginTime + // + this.textBoxBeginTime.Font = new System.Drawing.Font("宋体", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBoxBeginTime.Location = new System.Drawing.Point(107, 11); + this.textBoxBeginTime.MaxLength = 20; + this.textBoxBeginTime.Multiline = true; + this.textBoxBeginTime.Name = "textBoxBeginTime"; + this.textBoxBeginTime.Size = new System.Drawing.Size(165, 30); + this.textBoxBeginTime.TabIndex = 14; + this.textBoxBeginTime.TabStop = false; + this.textBoxBeginTime.DoubleClick += new System.EventHandler(this.textBoxBeginTime_DoubleClick); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.Location = new System.Drawing.Point(278, 17); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(29, 20); + this.label5.TabIndex = 11; + this.label5.Text = "->"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label6.Location = new System.Drawing.Point(6, 22); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(95, 19); + this.label6.TabIndex = 12; + this.label6.Text = "记录范围:"; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.jdTextBox); + this.groupBox1.Controls.Add(this.batchComboBox); + this.groupBox1.Controls.Add(this.saveButton); + this.groupBox1.Controls.Add(this.tbxSequence); + this.groupBox1.Controls.Add(this.lblNumber); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Controls.Add(this.numberTextBox); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.subWeightTextBox); + this.groupBox1.Controls.Add(this.label4); + this.groupBox1.Location = new System.Drawing.Point(3, 6); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(655, 93); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "称重"; + // + // jdTextBox + // + this.jdTextBox.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.jdTextBox.Location = new System.Drawing.Point(81, 12); + this.jdTextBox.Multiline = true; + this.jdTextBox.Name = "jdTextBox"; + this.jdTextBox.Size = new System.Drawing.Size(173, 30); + this.jdTextBox.TabIndex = 8; + // + // batchComboBox + // + this.batchComboBox.AllowDrop = true; + this.batchComboBox.DropDownHeight = 120; + this.batchComboBox.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.batchComboBox.FormattingEnabled = true; + this.batchComboBox.IntegralHeight = false; + this.batchComboBox.Location = new System.Drawing.Point(81, 55); + this.batchComboBox.Name = "batchComboBox"; + this.batchComboBox.Size = new System.Drawing.Size(173, 24); + this.batchComboBox.TabIndex = 20; + this.batchComboBox.TextUpdate += new System.EventHandler(this.batchComboBox_TextUpdate); + // + // saveButton + // + this.saveButton.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.saveButton.Location = new System.Drawing.Point(492, 46); + this.saveButton.Name = "saveButton"; + this.saveButton.Size = new System.Drawing.Size(154, 37); + this.saveButton.TabIndex = 7; + this.saveButton.Text = "读 入"; + this.saveButton.UseVisualStyleBackColor = true; + this.saveButton.Click += new System.EventHandler(this.saveButton_Click); + // // tbxSequence // this.tbxSequence.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.tbxSequence.Location = new System.Drawing.Point(79, 70); + this.tbxSequence.Location = new System.Drawing.Point(492, 14); this.tbxSequence.Name = "tbxSequence"; this.tbxSequence.ReadOnly = true; - this.tbxSequence.Size = new System.Drawing.Size(122, 29); + this.tbxSequence.Size = new System.Drawing.Size(154, 29); this.tbxSequence.TabIndex = 11; // - // subWeightTextBox - // - this.subWeightTextBox.Font = new System.Drawing.Font("宋体", 42F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.subWeightTextBox.Location = new System.Drawing.Point(259, 8); - this.subWeightTextBox.Multiline = true; - this.subWeightTextBox.Name = "subWeightTextBox"; - this.subWeightTextBox.Size = new System.Drawing.Size(122, 43); - this.subWeightTextBox.TabIndex = 8; - this.subWeightTextBox.Visible = false; - // - // jdTextBox + // lblNumber // - this.jdTextBox.Font = new System.Drawing.Font("宋体", 42F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.jdTextBox.Location = new System.Drawing.Point(79, 8); - this.jdTextBox.Multiline = true; - this.jdTextBox.Name = "jdTextBox"; - this.jdTextBox.Size = new System.Drawing.Size(122, 43); - this.jdTextBox.TabIndex = 8; + this.lblNumber.AutoSize = true; + this.lblNumber.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lblNumber.Location = new System.Drawing.Point(419, 17); + this.lblNumber.Name = "lblNumber"; + this.lblNumber.Size = new System.Drawing.Size(79, 20); + this.lblNumber.TabIndex = 12; + this.lblNumber.Text = "顺序号:"; // - // label2 + // label1 // - this.label2.AutoSize = true; - this.label2.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.label2.Location = new System.Drawing.Point(207, 9); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(59, 20); - this.label2.TabIndex = 12; - this.label2.Text = "扣重:"; - this.label2.Visible = false; + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(6, 22); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(79, 20); + this.label1.TabIndex = 12; + this.label1.Text = "标识号:"; // // label3 // this.label3.AutoSize = true; this.label3.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.label3.Location = new System.Drawing.Point(209, 72); + this.label3.Location = new System.Drawing.Point(6, 59); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(59, 20); this.label3.TabIndex = 12; this.label3.Text = "批号:"; // - // label1 + // numberTextBox // - this.label1.AutoSize = true; - this.label1.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.label1.Location = new System.Drawing.Point(6, 18); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(79, 20); - this.label1.TabIndex = 12; - this.label1.Text = "标识号:"; + this.numberTextBox.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.numberTextBox.Location = new System.Drawing.Point(326, 49); + this.numberTextBox.Multiline = true; + this.numberTextBox.Name = "numberTextBox"; + this.numberTextBox.Size = new System.Drawing.Size(87, 30); + this.numberTextBox.TabIndex = 8; // - // lblNumber + // label2 // - this.lblNumber.AutoSize = true; - this.lblNumber.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.lblNumber.Location = new System.Drawing.Point(6, 72); - this.lblNumber.Name = "lblNumber"; - this.lblNumber.Size = new System.Drawing.Size(79, 20); - this.lblNumber.TabIndex = 12; - this.lblNumber.Text = "顺序号:"; + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(260, 22); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(59, 20); + this.label2.TabIndex = 12; + this.label2.Text = "扣重:"; // - // saveButton + // subWeightTextBox // - this.saveButton.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.saveButton.Location = new System.Drawing.Point(402, 3); - this.saveButton.Name = "saveButton"; - this.saveButton.Size = new System.Drawing.Size(167, 58); - this.saveButton.TabIndex = 7; - this.saveButton.Text = "添 加"; - this.saveButton.UseVisualStyleBackColor = true; - this.saveButton.Click += new System.EventHandler(this.saveButton_Click); + this.subWeightTextBox.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.subWeightTextBox.Location = new System.Drawing.Point(326, 12); + this.subWeightTextBox.Multiline = true; + this.subWeightTextBox.Name = "subWeightTextBox"; + this.subWeightTextBox.Size = new System.Drawing.Size(87, 30); + this.subWeightTextBox.TabIndex = 8; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.Location = new System.Drawing.Point(261, 59); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(59, 20); + this.label4.TabIndex = 12; + this.label4.Text = "头数:"; + // + // pictureBox1 + // + this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); + this.pictureBox1.Location = new System.Drawing.Point(741, 8); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(34, 29); + this.pictureBox1.TabIndex = 18; + this.pictureBox1.TabStop = false; + this.pictureBox1.Visible = false; + this.pictureBox1.Click += new System.EventHandler(this.pictureBox2_Click); // // panel1 // this.panel1.AutoScroll = true; this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.panel1.Location = new System.Drawing.Point(3, 105); + this.panel1.Location = new System.Drawing.Point(3, 208); this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(655, 640); + this.panel1.Size = new System.Drawing.Size(655, 537); this.panel1.TabIndex = 6; // // Main @@ -401,11 +548,14 @@ namespace B3ButcherWeightClient { ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit(); this.splitContainer1.Panel1.ResumeLayout(false); this.splitContainer1.Panel2.ResumeLayout(false); - this.splitContainer1.Panel2.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); this.splitContainer1.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); this.ResumeLayout(false); } @@ -427,7 +577,21 @@ namespace B3ButcherWeightClient { private System.Windows.Forms.TextBox subWeightTextBox; private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label3; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.TextBox numberTextBox; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.ComboBox batchComboBox; + private System.Windows.Forms.Button setButton; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.TextBox textBoxEndTime; + private System.Windows.Forms.TextBox textBoxBeginTime; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.MonthCalendar monthCalendar; private System.Windows.Forms.DataGridViewTextBoxColumn ID; + private System.Windows.Forms.DataGridViewTextBoxColumn DmoID; private System.Windows.Forms.DataGridViewTextBoxColumn Sequence; private System.Windows.Forms.DataGridViewTextBoxColumn JdColumn; private System.Windows.Forms.DataGridViewTextBoxColumn 批号; @@ -436,7 +600,5 @@ namespace B3ButcherWeightClient { private System.Windows.Forms.DataGridViewTextBoxColumn subColumn; private System.Windows.Forms.DataGridViewTextBoxColumn Weight; private System.Windows.Forms.DataGridViewButtonColumn DeleteDetail; - private System.Windows.Forms.PictureBox pictureBox1; - private System.Windows.Forms.TextBox txtBatch; } } \ No newline at end of file diff --git a/B3ButcherWeightClient/Main.cs b/B3ButcherWeightClient/Main.cs index 2d107b8..2306f5a 100644 --- a/B3ButcherWeightClient/Main.cs +++ b/B3ButcherWeightClient/Main.cs @@ -1,8 +1,10 @@ using System; +using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.Data; using System.Drawing; +using System.Globalization; using System.Linq; using System.Text; using System.Threading; @@ -11,15 +13,18 @@ using B3ButcherWeightClient.Data; using BO; using Forks.EnterpriseServices.BusinessInterfaces; using Forks.EnterpriseServices.DomainObjects2; +using Forks.EnterpriseServices.DomainObjects2.DQuery; +using Forks.JsonRpc.Client.Data; using Forks.Utils.Data; using Timer = System.Threading.Timer; +using System.Web.Script.Serialization; -namespace B3ButcherWeightClient -{ - public partial class Main : Form - { +namespace B3ButcherWeightClient { + public partial class Main : Form { #region 变量实例 + List batchListOnit = new List(); + List batchListNew = new List(); private string _msg = string.Empty; private readonly IDataFormat _dataFormat; @@ -27,17 +32,14 @@ namespace B3ButcherWeightClient private Thread _inQueryThread, _outQueryThread; private bool _mainProcessIsRun; - private static DateTime NewToday - { - get - { + private static DateTime NewToday { + get { return new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, ConfigUtil.PerDayStartHour, 0, 0); } } - private static DateTime NextNewToday - { + private static DateTime NextNewToday { get { return NewToday.AddHours(24); } } @@ -60,7 +62,7 @@ namespace B3ButcherWeightClient static string startDate = NewToday.ToString("yyyy-MM-dd HH:mm:ss");//24小时 - private readonly string _querySql = string.Format("select [ID],[Sequence],[PhaseCode],[DateTime],[Livestock_Name],[Weight],[SubWeight],[GoodsBatchName] from [WeightTable] where [DateTime] >='{0}' order by [ID] desc", startDate); + private readonly string _querySql = string.Format("select [ID],[Sequence],[PhaseCode],[DateTime],[Livestock_Name],[Weight],[SubWeight],[GoodsBatchName],[DmoID] from [WeightTable] where [DateTime] >='{0}' order by [ID] desc", startDate); private string _querySeqSql = string.Format("select top 1 Sequence from [WeightTable] where [DateTime] > '{0}' and [DateTime] <'{1}' order by Sequence desc", NewToday.ToString("yyyy-MM-dd HH:mm"), NextNewToday.ToString("yyyy-MM-dd HH:mm")); private DataSet _resultDataSet = new DataSet(); @@ -72,12 +74,9 @@ namespace B3ButcherWeightClient private string _displayValue; private int _mainHandle; - int MainHandle - { - get - { - if (_mainHandle == 0) - { + int MainHandle { + get { + if (_mainHandle == 0) { _mainHandle = WinApiSendMessage.FindWindow(null, @"青花瓷称重客户端"); } return _mainHandle; @@ -88,9 +87,9 @@ namespace B3ButcherWeightClient readonly AutoSizeFormClass _asc = new AutoSizeFormClass(); - public Main(Form form) - { + public Main(Form form) { InitializeComponent(); + monthCalendar.Visible = false; dataGridView.AutoGenerateColumns = false; OpenSerialPort(); _parentForm = form; @@ -98,8 +97,7 @@ namespace B3ButcherWeightClient _displayValue = "display"; _mainProcessIsRun = true; pictureBox2.Visible = false; - switch (ConfigUtil.CType) - { + switch (ConfigUtil.CType) { case "XK3130": case "XK3124": _dataFormat = new Xk3124DataFormat(); @@ -121,12 +119,15 @@ namespace B3ButcherWeightClient syncThread.Start(); CheckForIllegalCrossThreadCalls = false;//线程间操作 tbxSequence.Text = "1"; + if (ConfigUtil.SubWeight > 0) { + subWeightTextBox.Text = ConfigUtil.SubWeight.ToString(); + } + textBoxBeginTime.Text = DateTime.Today.ToString("yyyy-MM-dd"); + textBoxEndTime.Text = DateTime.Today.ToString("yyyy-MM-dd"); } - protected override void DefWndProc(ref Message m) - { - switch (m.Msg) - { + protected override void DefWndProc(ref Message m) { + switch (m.Msg) { case WmProcessMessage: QueryResult(); break; @@ -143,51 +144,62 @@ namespace B3ButcherWeightClient #region 控件事件 - private void Main_Resize(object sender, EventArgs e) - { - _asc.controlAutoSize(this); - } - - void bt_Click(object sender, EventArgs e) - { + void bt_Click(object sender, EventArgs e) { var bt = sender as Button; - foreach (var button in _btList) - { + foreach (var button in _btList) { button.BackColor = Color.White; } - if (bt != null) - { + if (bt != null) { bt.BackColor = Color.OrangeRed; _currentInfo = bt.Tag as Livestock.Info; + batchListOnit.Clear(); + batchComboBox.Text = ""; + batchComboBox.Items.Clear(); + var o = RpcUtil.Call>(RpcUtil.GetGoodsBatch, _currentInfo.ID); + foreach (var rpcObject in o) { + var item = new IDName(); + item.ID = rpcObject.Get("ID"); + item.Name = rpcObject.Get("Name"); + batchListOnit.Add(item); + } + batchComboBox.Items.AddRange(batchListOnit.Select(x => x.Name).ToArray()); } + } - private void Main_Load(object sender, EventArgs e) - { + private void Main_Load(object sender, EventArgs e) { InitSequence(); //_asc.ControllInitializeSize(this); //WindowState = FormWindowState.Maximized; FormLoadQueryResult(); } - private void saveButton_Click(object sender, EventArgs e) - { + private void saveButton_Click(object sender, EventArgs e) { decimal w; + if (numberTextBox.Text == "") { + MessageBox.Show("头数录入为空"); + return; + } + int number; + if (!int.TryParse(numberTextBox.Text, out number)) { + MessageBox.Show("头数录入的格式错误"); + return; + } if (decimal.TryParse(_displayValue, out w)) - AddWeightInfo(w); + AddWeightInfo(w, number); + else { + MessageBox.Show("重量格式错误"); + } } - private void DataGridViewCellContentClick(object sender, DataGridViewCellEventArgs e) - { - if (DeleteDetail.Index == e.ColumnIndex) - { + private void DataGridViewCellContentClick(object sender, DataGridViewCellEventArgs e) { + if (DeleteDetail.Index == e.ColumnIndex) { if (MessageBox.Show("确定要删除吗?", "删除", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) return; var sql = string.Format("delete [WeightTable] where id = {0}", dataGridView.Rows[e.RowIndex].Cells["ID"].Value); //var sequence = dataGridView.Rows[e.RowIndex].Cells["Sequence"].Value; - using (var sqlUtil = new SqlUtil(ConfigUtil.ConnectionStr)) - { + using (var sqlUtil = new SqlUtil(ConfigUtil.ConnectionStr)) { sqlUtil.ExecuteNonQuery(sql); } @@ -202,31 +214,50 @@ namespace B3ButcherWeightClient } - private void pictureBox2_Click(object sender, EventArgs e) - { + private void pictureBox2_Click(object sender, EventArgs e) { MessageBox.Show(_msg); } + private int textBoxNum; + private void textBoxBeginTime_DoubleClick(object sender, EventArgs e) { + textBoxNum = 1; + monthCalendar.Visible = true; + monthCalendar.Focus(); + } + + private void textBoxEndTime_DoubleClick(object sender, EventArgs e) { + textBoxNum = 2; + monthCalendar.Visible = true; + monthCalendar.Focus(); + } + + private void monthCalendar_DateSelected(object sender, DateRangeEventArgs e) { + if (textBoxNum == 1) { + textBoxBeginTime.Text = this.monthCalendar.SelectionStart.ToString("yyyy-MM-dd", + DateTimeFormatInfo.InvariantInfo); + } + if (textBoxNum == 2) { + string str = this.monthCalendar.SelectionStart.ToString("yyyy-MM-dd", DateTimeFormatInfo.InvariantInfo); + textBoxEndTime.Text = str; + } + monthCalendar.Visible = false; + } #endregion #region 方法 - private void InitSequence() - { - using (var sqlUtil = new SqlUtil(ConfigUtil.ConnectionStr)) - { + private void InitSequence() { + using (var sqlUtil = new SqlUtil(ConfigUtil.ConnectionStr)) { var obj = sqlUtil.ExecuteScalar(_querySeqSql); tbxSequence.Text = obj != null ? (long.Parse(obj.ToString()) + 1).ToString() : @"1"; } } - private void AddLivestockControl() - { + private void AddLivestockControl() { ConfigUtil.SetLivestock(_dTable); var i = 0; var j = 0; - foreach (var info in _dTable) - { + foreach (var info in _dTable) { var bt = new Button(); bt.Text = info.名称; bt.Size = new Size(200, 100); @@ -237,42 +268,33 @@ namespace B3ButcherWeightClient panel1.Controls.Add(bt); _btList.Add(bt); i++; - if (i == 3) - { + if (i == 3) { i = 0; j++; } } } - private void OpenSerialPort() - { + private void OpenSerialPort() { _serialPort.PortName = ConfigUtil.ComName; _serialPort.BaudRate = int.Parse(ConfigUtil.BaundRate); _serialPort.DataBits = int.Parse(ConfigUtil.DataBits); _serialPort.ReadBufferSize = 4096 * 100; // 打开串口 - if (!_serialPort.IsOpen) - { - try - { + if (!_serialPort.IsOpen) { + try { _serialPort.Open(); - } - catch (InvalidOperationException) - { + } catch (InvalidOperationException) { MessageBox.Show(@"指定的端口已打开"); - } - catch (UnauthorizedAccessException) - { + } catch (UnauthorizedAccessException) { MessageBox.Show(@"对端口的访问被拒绝"); } } } // 接受数据: 称仪表连续输出 - void ReadData() - { + void ReadData() { _inQueryThread = new Thread(InQuery); _inQueryThread.Start(); @@ -282,83 +304,62 @@ namespace B3ButcherWeightClient } - private void InQuery() - { - while (_mainProcessIsRun) - { + private void InQuery() { + while (_mainProcessIsRun) { int availableCount = _serialPort.BytesToRead; - if (availableCount == 0) - { + if (availableCount == 0) { Thread.Sleep(1); } char[] buffer = new char[availableCount]; _serialPort.Read(buffer, 0, availableCount); - foreach (var c in buffer) - { - if (c == _dataFormat.Beginchar) - { + foreach (var c in buffer) { + if (c == _dataFormat.Beginchar) { _dataStrBuilder.Clear(); _dataStrBuilder.Append(c); - } - else if (c == _dataFormat.Endchar || _dataStrBuilder.Length > _dataFormat.Bufsize) - { + } else if (c == _dataFormat.Endchar || _dataStrBuilder.Length > _dataFormat.Bufsize) { _dataStrBuilder.Append(c); _dataQueue.Enqueue(_dataStrBuilder.ToString()); _dataStrBuilder.Clear(); - } - else - { + } else { _dataStrBuilder.Append(c); } } } } - private void OutQuery() - { - while (_mainProcessIsRun) - { - try - { + private void OutQuery() { + while (_mainProcessIsRun) { + try { bool isStatic; string str; string subStr; - if (!_dataQueue.TryDequeue(out subStr)) - { + if (!_dataQueue.TryDequeue(out subStr)) { Thread.Sleep(1); continue; } // 解析接受的端口数据 - if (_dataFormat.ParseAscii(subStr, out str, out isStatic)) - { + if (_dataFormat.ParseAscii(subStr, out str, out isStatic)) { _displayValue = str; WinApiSendMessage.SendMessage(_mainHandle, WmUpdDisplayMessage, 0, 0); } decimal num; - if (ConfigUtil.ReadType == "0") - { - if (decimal.TryParse(str, out num)) - { - WeighAvgControl.Add(num, isStatic); - } - if (WeighAvgControl.TryGetValue(out num)) - { - AddWeightInfo(num); - } - } - else if (ConfigUtil.ReadType == "1") - { - if (decimal.TryParse(str, out num)) - { + if (ConfigUtil.ReadType == "0") { + //五丰通过点击界面按钮来增加重量信息 + //if (decimal.TryParse(str, out num)) { + // WeighAvgControl.Add(num, isStatic); + //} + //if (WeighAvgControl.TryGetValue(out num)) { + // AddWeightInfo(num); + //} + } else if (ConfigUtil.ReadType == "1") { + if (decimal.TryParse(str, out num)) { if (num >= ConfigUtil.MinWeight && num <= ConfigUtil.MaxWeight) AddWeightInfo(num); } } - } - catch (Exception) - { + } catch (Exception) { Thread.Sleep(1000); continue; } @@ -366,46 +367,47 @@ namespace B3ButcherWeightClient } } - private void TimerClick(object o) - { + private void TimerClick(object o) { WinApiSendMessage.SendMessage(MainHandle, WmUpdLanStateMessage, 0, 0); } - private void AddWeightInfo(decimal curValue) - { + private void AddWeightInfo(decimal curValue, int number = 1) { var info = new WeightTable(); info.DateTime = DateTime.Now; info.SubWeight = ConfigUtil.SubWeight;//默认取设置的扣重 decimal subWeight = 0; - if (!string.IsNullOrEmpty(subWeightTextBox.Text)) - { + if (!string.IsNullOrEmpty(subWeightTextBox.Text)) { if (decimal.TryParse(subWeightTextBox.Text, out subWeight)) - info.SubWeight = subWeight; + info.SubWeight = subWeight * number; } info.Weight = curValue - subWeight; info.Livestock_ID = _currentInfo.ID; info.Livestock_Name = _currentInfo.名称; info.Sequence = long.Parse(tbxSequence.Text); info.PhaseCode = jdTextBox.Text; - info.GoodsBatchName = txtBatch.Text; + if (batchComboBox.Text.Length > 0) { + info.GoodsBatchName = batchComboBox.Text; + var batch = batchListOnit.FirstOrDefault(x => x.Name == info.GoodsBatchName); + if (batch != null) + info.GoodsBatchID = batch.ID; + } + + info.Number = number; WeightEnQueue(info); } - private void WeightEnQueue(WeightTable inforStruct) - { + private void WeightEnQueue(WeightTable inforStruct) { Monitor.Enter(_queLocker); _weightQueue.Enqueue(inforStruct); _manualResetEvent.Set(); Monitor.Exit(_queLocker); } - private WeightTable WeightDeQueue() - { + private WeightTable WeightDeQueue() { Monitor.Enter(_queLocker); WeightTable weightInfo = null; - if (_weightQueue.Count > 0) - { + if (_weightQueue.Count > 0) { weightInfo = _weightQueue.Dequeue(); } @@ -414,54 +416,37 @@ namespace B3ButcherWeightClient return weightInfo; } - private void BeginInsertThread() - { + private void BeginInsertThread() { _insertThread = new Thread(DoInser) { IsBackground = true }; _insertThread.Start(new object()); } - private void DoInser(object o) - { + private void DoInser(object o) { _manualResetEvent.WaitOne(); - while (_mainProcessIsRun) - { + while (_mainProcessIsRun) { var weightInfo = WeightDeQueue();//获取队列对象 - if (weightInfo != null) - { + if (weightInfo != null) { string err = string.Empty; - try - { - using (var context = new TransactionContext(Dmo.NewSession(ConfigUtil.ConnectionStr))) - { + try { + using (var context = new TransactionContext(Dmo.NewSession(ConfigUtil.ConnectionStr))) { context.Session.Insert(weightInfo); - //_displayValue = weightInfo.Weight.ToString(); context.Commit(); } tbxSequence.Text = (weightInfo.Sequence + 1).ToString(); - } - catch (Exception ex) - { + } catch (Exception ex) { err = ex.Message; - } - finally - { - lock (EncodeString.RwLocker) - { - using (ISqlUtil sqlUtil = new SqlUtil(ConfigUtil.ConnectionStr)) - { - try - { - lock (EncodeString.RwLocker) - { + } finally { + lock (EncodeString.RwLocker) { + using (ISqlUtil sqlUtil = new SqlUtil(ConfigUtil.ConnectionStr)) { + try { + lock (EncodeString.RwLocker) { _resultDataSet = sqlUtil.ExecuteSql(_querySql); } sqlUtil.Close(); - } - catch (Exception ex) - { + } catch (Exception ex) { MessageBox.Show(ex.Message); } } @@ -475,46 +460,42 @@ namespace B3ButcherWeightClient } } - private void QueryResult() - { - lock (EncodeString.RwLocker) - { + private void QueryResult() { + lock (EncodeString.RwLocker) { dataGridView.DataSource = _resultDataSet.Tables[0]; } + if (this.dataGridView.Rows.Count > 0) { + for (int index = 0; index < dataGridView.Rows.Count; index++) { + var row = dataGridView.Rows[index]; + var dmoID = row.Cells["DmoID"].Value; + if (dmoID != DBNull.Value && ((long)dmoID) > 0) { + row.DefaultCellStyle.BackColor = Color.LawnGreen; + } + } + } } - private void FormLoadQueryResult() - { - using (ISqlUtil sqlUtil = new SqlUtil(ConfigUtil.ConnectionStr)) - { - try - { - lock (EncodeString.RwLocker) - { + private void FormLoadQueryResult() { + using (ISqlUtil sqlUtil = new SqlUtil(ConfigUtil.ConnectionStr)) { + try { + lock (EncodeString.RwLocker) { _resultDataSet = sqlUtil.ExecuteSql(_querySql); } sqlUtil.Close(); - } - catch (Exception ex) - { + } catch (Exception ex) { MessageBox.Show(ex.Message); } } - - dataGridView.DataSource = _resultDataSet.Tables[0]; - + QueryResult(); } - void SyncTask() - { + void SyncTask() { var sleeptime = 500; pictureBox2.Visible = true; - while (_mainProcessIsRun) - { + while (_mainProcessIsRun) { Thread.Sleep(sleeptime); sleeptime = 20000; - if (string.IsNullOrEmpty(ConfigUtil.RemoteConStr)) - { + if (string.IsNullOrEmpty(ConfigUtil.RemoteConStr)) { _msg = "没有设置服务器数据库,无法同步!"; LogUtil.WriteLog(DateTime.Now + ":" + _msg); continue; @@ -527,17 +508,13 @@ namespace B3ButcherWeightClient #endregion - private class WeighAvgControl - { - public static bool TryGetValue(out decimal result) - { + private class WeighAvgControl { + public static bool TryGetValue(out decimal result) { List> list; - if (mWeighList.TryDequeue(out list)) - { + if (mWeighList.TryDequeue(out list)) { var r = list.Where(x => x.Item2).Select(x => x.Item1).GroupBy(x => x); var firstOrDefault = r.OrderByDescending(x => x.Count()).FirstOrDefault(); - if (firstOrDefault != null) - { + if (firstOrDefault != null) { result = firstOrDefault.Key; return true; } @@ -552,16 +529,11 @@ namespace B3ButcherWeightClient static List> _list = new List>(); - public static void Add(decimal value, bool isStatic) - { - if (value >= ConfigUtil.MinWeight && value <= ConfigUtil.MaxWeight) - { + public static void Add(decimal value, bool isStatic) { + if (value >= ConfigUtil.MinWeight && value <= ConfigUtil.MaxWeight) { _list.Add(new Tuple(value, isStatic)); - } - else - { - if (_list.Count > 0) - { + } else { + if (_list.Count > 0) { mWeighList.Enqueue(_list); _list = new List>(); } @@ -569,49 +541,37 @@ namespace B3ButcherWeightClient } } - private void dataGridView_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) - { - if (!ConfigUtil.AllowChangeLevel) - { + private void dataGridView_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) { + if (!ConfigUtil.AllowChangeLevel) { return; } // e.RowIndex long id; - if (long.TryParse(dataGridView.Rows[e.RowIndex].Cells[0].Value.ToString(), out id)) - { + if (long.TryParse(dataGridView.Rows[e.RowIndex].Cells[0].Value.ToString(), out id)) { var levelName = dataGridView.Rows[e.RowIndex].Cells[0].Value.ToString(); var f = new ChangeLevelForm(); f.Init(levelName); - if (f.ShowDialog() == DialogResult.OK) - { + if (f.ShowDialog() == DialogResult.OK) { var newLevelId = f.mID; var newLevelName = f.mName; var updateSql = "update [WeightTable] set [Livestock_ID]=" + newLevelId + ",[Livestock_Name]='" + newLevelName + "' where ID=" + id + " "; bool needUpdate = false; - lock (EncodeString.RwLocker) - { - using (ISqlUtil sqlUtil = new SqlUtil(ConfigUtil.ConnectionStr)) - { - try - { - lock (EncodeString.RwLocker) - { + lock (EncodeString.RwLocker) { + using (ISqlUtil sqlUtil = new SqlUtil(ConfigUtil.ConnectionStr)) { + try { + lock (EncodeString.RwLocker) { sqlUtil.ExecuteNonQuery(updateSql); _resultDataSet = sqlUtil.ExecuteSql(_querySql); - - dataGridView.DataSource = _resultDataSet.Tables[0]; + QueryResult(); needUpdate = true; } sqlUtil.Close(); - } - catch (Exception ex) - { + } catch (Exception ex) { MessageBox.Show(ex.Message); } } } - if (needUpdate) - { + if (needUpdate) { //同步修改远程数据库的数据 pictureBox2.Visible = !SyncUtil.TryUpdateLevel(id.ToString(), newLevelId, newLevelName, out _msg); } @@ -621,12 +581,145 @@ namespace B3ButcherWeightClient } - private void button1_Click(object sender, EventArgs e) - { + private void button1_Click(object sender, EventArgs e) { var form = new QueryForm(); form.StartPosition = FormStartPosition.CenterParent; form.ShowDialog(); } + private void batchComboBox_TextUpdate(object sender, EventArgs e) { + + batchComboBox.Items.Clear(); + batchListNew.Clear(); + + if (batchComboBox.Text.Length == 0) { + batchComboBox.Items.AddRange(batchListOnit.Select(x => x.Name).ToArray()); + } else { + foreach (var item in batchListOnit) { + if (item.Name.Contains(batchComboBox.Text)) { + batchListNew.Add(item); + } + } + batchComboBox.Items.AddRange(batchListNew.Select(x => x.Name).ToArray()); + } + batchComboBox.SelectionStart = batchComboBox.Text.Length; + Cursor = Cursors.Default; + batchComboBox.DroppedDown = true; + } + + private void setButton_Click(object sender, EventArgs e) { + var setForm = new Parameters(); + setForm.ShowDialog(); + } + + private void button2_Click(object sender, EventArgs e) { + + + if (textBoxBeginTime.Text.Length == 0) { + MessageBox.Show("开始日期不能为空"); + return; + } + if (textBoxEndTime.Text.Length == 0) { + MessageBox.Show("结束日期不能为空"); + return; + } + var dmos = new List(); + using (var sqlUtil = new SqlUtil(ConfigUtil.ConnectionStr)) { + using (var context = new TransactionContext(Dmo.NewSession(sqlUtil, SessionBehaviors.None))) { + var dom = new DmoQuery(typeof(WeightTable)); + dom.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field("DmoID"))); + dom.Where.Conditions.Add(DQCondition.GreaterThanOrEqual("DateTime", textBoxBeginTime.Text)); + dom.Where.Conditions.Add(DQCondition.LessThanOrEqual("DateTime", string.Format("{0} 23:59:59", textBoxEndTime.Text))); + var list = context.Session.ExecuteList(dom); + foreach (WeightTable dmo in list) { + dmos.Add(dmo); + } + } + } + if (dmos.Count == 0) { + MessageBox.Show("没有可以创建单据的称重数据"); + return; + } + var details = new ManyList("/MainSystem/B3ButcherManage/BO/CarcassPicking_WeightDetail"); + foreach (var detail in dmos) { + var detail1 = new RpcObject("/MainSystem/B3ButcherManage/BO/CarcassPicking_WeightDetail"); + detail1.Set("Goods_ID", detail.Livestock_ID); + detail1.Set("Goods_Name", detail.Livestock_Name); + detail1.Set("GoodsBatch_ID", detail.GoodsBatchID); + detail1.Set("SubWeight", detail.SubWeight); + detail1.Set("Weight", detail.Weight); + detail1.Set("DateTime", detail.DateTime); + details.Add(detail1); + } + + var groups = dmos.GroupBy(x => new { x.Livestock_ID, x.GoodsBatchID }); + var details2 = new ManyList("/MainSystem/B3ButcherManage/BO/CarcassPicking_Detail"); + foreach (var @group in groups) { + var weight = @group.Sum(x => x.Weight ?? 0); + var subWeight = @group.Sum(x => x.SubWeight ?? 0); + var first = @group.FirstOrDefault(); + var detail1 = new RpcObject("/MainSystem/B3ButcherManage/BO/CarcassPicking_Detail"); + detail1.Set("Goods_ID", @group.Key.Livestock_ID); + detail1.Set("Goods_Name", first.Livestock_Name); + detail1.Set("GoodsBatch_ID", @group.Key.GoodsBatchID); + detail1.Set("BodyWeight", weight - subWeight); + detail1.Set("SecondNumber", @group.Count() * 1.0m); + detail1.Set("Number", weight - subWeight); + details2.Add(detail1); + } + var bill = new RpcObject("/MainSystem/B3ButcherManage/BO/CarcassPicking"); + bill.Set("Store_ID", ConfigUtil.StoreID); + bill.Set("Department_ID", ConfigUtil.DeptID); + bill.Set("InputType_ID", ConfigUtil.TouruID); + bill.Set("ProductionUnit_ID", ConfigUtil.ShengchanID); + bill.Set("Remark", "称重客户端上传"); + bill.Set("Details", details2); + bill.Set("WeightDetails", details); + var id = RpcUtil.Call(RpcUtil.InsertCarcassPicking, bill); + using (var sqlUtil = new SqlUtil(ConfigUtil.ConnectionStr)) { + using (var context = new TransactionContext(Dmo.NewSession(sqlUtil, SessionBehaviors.None))) { + var dom = new DQUpdateDom(typeof(WeightTable)); + dom.Columns.Add(new DQUpdateColumn("DmoID", id)); + dom.Columns.Add(new DQUpdateColumn("DmoTypeID", 2880 + 14)); + dom.Where.Conditions.Add(DQCondition.InList(DQExpression.Field("ID"), dmos.Select(x => DQExpression.ConstValue(x.ID)).ToArray())); + context.Session.ExecuteNonQuery(dom); + context.Commit(); + } + } + + var querySql = new StringBuilder(); + querySql.Append("select [ID],[Sequence],[PhaseCode],[DateTime],[Livestock_Name],[Weight],[SubWeight],[GoodsBatchName],[DmoID] from [WeightTable] where [DmoID]="); + querySql.Append(id); + using (ISqlUtil sqlUtil = new SqlUtil(ConfigUtil.ConnectionStr)) { + + lock (EncodeString.RwLocker) { + _resultDataSet = sqlUtil.ExecuteSql(querySql.ToString()); + } + sqlUtil.Close(); + } + lock (EncodeString.RwLocker) { + dataGridView.DataSource = _resultDataSet.Tables[0]; + } + if (this.dataGridView.Rows.Count > 0) { + for (int index = 0; index < dataGridView.Rows.Count; index++) { + var row = dataGridView.Rows[index]; + var dmoID = row.Cells["DmoID"].Value; + if (dmoID != DBNull.Value && ((long)dmoID) > 0) { + row.DefaultCellStyle.BackColor = Color.LawnGreen; + } + } + } + MessageBox.Show("成功创建单据No." + id); + } + + } + + class IDName { + public long ID { get; set; } + private string _name = string.Empty; + public string Name { + get { return _name; } + set { _name = value; } + } } } diff --git a/B3ButcherWeightClient/Main.resx b/B3ButcherWeightClient/Main.resx index e0ad8bd..a50db28 100644 --- a/B3ButcherWeightClient/Main.resx +++ b/B3ButcherWeightClient/Main.resx @@ -120,6 +120,9 @@ True + + True + True @@ -142,7 +145,7 @@ True - + R0lGODlhIAAdALMPAP///xgYGBAQCBgYACEhACkpAFJSAGNjAHNzAJSUAK2tAL29AM7OAO/vAP//AAAA ACH/C05FVFNDQVBFMi4wAwHoAwAh/lbR3cq+sOaxvjog08nOtNeisuGw5rG+tcQgR0lGIE1vdmllIEdl @@ -167,7 +170,7 @@ ZXJzaW9uIG9mIEdJRiBDb25zdHJ1Y3Rpb24gU2V0ADs= - + R0lGODlhIAAdALMPAP///xgYGBAQCBgYACEhACkpAFJSAGNjAHNzAJSUAK2tAL29AM7OAO/vAP//AAAA ACH/C05FVFNDQVBFMi4wAwHoAwAh/lbR3cq+sOaxvjog08nOtNeisuGw5rG+tcQgR0lGIE1vdmllIEdl diff --git a/B3ButcherWeightClient/Parameters.Designer.cs b/B3ButcherWeightClient/Parameters.Designer.cs new file mode 100644 index 0000000..f0c49bd --- /dev/null +++ b/B3ButcherWeightClient/Parameters.Designer.cs @@ -0,0 +1,171 @@ +namespace B3ButcherWeightClient { + partial class Parameters { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) { + if (disposing && (components != null)) { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() { + this.label6 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.txtBAcc = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.txtBoxDept = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.txtBoxStore = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.txtBTouru = new System.Windows.Forms.TextBox(); + this.txtShengchan = new System.Windows.Forms.TextBox(); + this.btnSave = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(204, 70); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(65, 12); + this.label6.TabIndex = 28; + this.label6.Text = "生产单位ID"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(15, 32); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(65, 12); + this.label1.TabIndex = 20; + this.label1.Text = "会计单位ID"; + // + // txtBAcc + // + this.txtBAcc.Location = new System.Drawing.Point(86, 29); + this.txtBAcc.MaxLength = 100; + this.txtBAcc.Name = "txtBAcc"; + this.txtBAcc.Size = new System.Drawing.Size(100, 21); + this.txtBAcc.TabIndex = 25; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(204, 32); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(65, 12); + this.label4.TabIndex = 24; + this.label4.Text = "投入类型ID"; + // + // txtBoxDept + // + this.txtBoxDept.Location = new System.Drawing.Point(86, 67); + this.txtBoxDept.MaxLength = 30; + this.txtBoxDept.Name = "txtBoxDept"; + this.txtBoxDept.Size = new System.Drawing.Size(100, 21); + this.txtBoxDept.TabIndex = 26; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(15, 70); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(41, 12); + this.label2.TabIndex = 19; + this.label2.Text = "部门ID"; + // + // txtBoxStore + // + this.txtBoxStore.Location = new System.Drawing.Point(86, 105); + this.txtBoxStore.MaxLength = 20; + this.txtBoxStore.Name = "txtBoxStore"; + this.txtBoxStore.Size = new System.Drawing.Size(100, 21); + this.txtBoxStore.TabIndex = 27; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(15, 108); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(41, 12); + this.label3.TabIndex = 18; + this.label3.Text = "仓库ID"; + // + // txtBTouru + // + this.txtBTouru.Location = new System.Drawing.Point(275, 29); + this.txtBTouru.MaxLength = 10; + this.txtBTouru.Name = "txtBTouru"; + this.txtBTouru.Size = new System.Drawing.Size(100, 21); + this.txtBTouru.TabIndex = 21; + // + // txtShengchan + // + this.txtShengchan.Location = new System.Drawing.Point(275, 67); + this.txtShengchan.MaxLength = 10; + this.txtShengchan.Name = "txtShengchan"; + this.txtShengchan.Size = new System.Drawing.Size(100, 21); + this.txtShengchan.TabIndex = 22; + // + // btnSave + // + this.btnSave.Location = new System.Drawing.Point(159, 154); + this.btnSave.Name = "btnSave"; + this.btnSave.Size = new System.Drawing.Size(62, 23); + this.btnSave.TabIndex = 29; + this.btnSave.Text = "保 存"; + this.btnSave.UseVisualStyleBackColor = true; + this.btnSave.Click += new System.EventHandler(this.btnSave_Click); + // + // Parameters + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(388, 267); + this.Controls.Add(this.btnSave); + this.Controls.Add(this.label6); + this.Controls.Add(this.label1); + this.Controls.Add(this.txtBAcc); + this.Controls.Add(this.label4); + this.Controls.Add(this.txtBoxDept); + this.Controls.Add(this.label2); + this.Controls.Add(this.txtBoxStore); + this.Controls.Add(this.label3); + this.Controls.Add(this.txtBTouru); + this.Controls.Add(this.txtShengchan); + this.Name = "Parameters"; + this.Text = "创建单据默认值"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txtBAcc; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox txtBoxDept; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox txtBoxStore; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox txtBTouru; + private System.Windows.Forms.TextBox txtShengchan; + private System.Windows.Forms.Button btnSave; + } +} \ No newline at end of file diff --git a/B3ButcherWeightClient/Parameters.cs b/B3ButcherWeightClient/Parameters.cs new file mode 100644 index 0000000..918bbae --- /dev/null +++ b/B3ButcherWeightClient/Parameters.cs @@ -0,0 +1,76 @@ +using System; +using System.IO; +using System.Windows.Forms; +using Forks.Utils.IO; + +namespace B3ButcherWeightClient { + public partial class Parameters : Form { + public Parameters() { + InitializeComponent(); + SetConfigControl(); + } + + + // 取得设置的值 + private void SetConfigControl() { + + using (var reader = FS.OpenReader(ConfigUtil.ParametersPath, true)) { + var nutFile = NutFile.Parse(reader); + + txtBAcc.Text = nutFile.AsString(ConfigItem.AccID, ""); + txtBoxDept.Text = nutFile.AsString(ConfigItem.DeptID, ""); + txtBoxStore.Text = nutFile.AsString(ConfigItem.StoreID, ""); + txtBTouru.Text = nutFile.AsString(ConfigItem.TouruID, ""); + txtShengchan.Text = nutFile.AsString(ConfigItem.ShengchanID, ""); + + } + } + + private void btnSave_Click(object sender, EventArgs e) { + using (TextReader reader = FS.OpenReader(ConfigUtil.ParametersPath, true)) { + var nutFile = NutFile.Parse(reader); + nutFile.SetValue(ConfigItem.AccID, txtBAcc.Text.Trim()); + nutFile.SetValue(ConfigItem.DeptID, txtBoxDept.Text.Trim()); + nutFile.SetValue(ConfigItem.StoreID, txtBoxStore.Text.Trim()); + nutFile.SetValue(ConfigItem.ShengchanID, txtShengchan.Text.Trim()); + nutFile.SetValue(ConfigItem.TouruID, txtBTouru.Text.Trim()); + + using (TextWriter writer = FS.OpenWriter(ConfigUtil.ParametersPath, createDirsIfNotExist: true)) { + nutFile.Write(writer); + } + } + + var str = txtBAcc.Text; + if (string.IsNullOrEmpty(str)) { + ConfigUtil.AccID = 0; + } else { + long.TryParse(str, out ConfigUtil.AccID); + } + str = txtBoxDept.Text; + if (string.IsNullOrEmpty(str)) { + ConfigUtil.DeptID = 0; + } else { + long.TryParse(str, out ConfigUtil.DeptID); + } + str = txtBoxStore.Text; + if (string.IsNullOrEmpty(str)) { + ConfigUtil.StoreID = 0; + } else { + long.TryParse(str, out ConfigUtil.StoreID); + } + str = txtBTouru.Text; + if (string.IsNullOrEmpty(str)) { + ConfigUtil.TouruID = 0; + } else { + long.TryParse(str, out ConfigUtil.TouruID); + } + str = txtShengchan.Text; + if (string.IsNullOrEmpty(str)) { + ConfigUtil.ShengchanID = 0; + } else { + long.TryParse(str, out ConfigUtil.ShengchanID); + } + Dispose(); + } + } +} diff --git a/B3ButcherWeightClient/Parameters.resx b/B3ButcherWeightClient/Parameters.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/B3ButcherWeightClient/Parameters.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/B3ButcherWeightClient/Parameters.txt b/B3ButcherWeightClient/Parameters.txt new file mode 100644 index 0000000..e69de29 diff --git a/B3ButcherWeightClient/QueryForm.Designer.cs b/B3ButcherWeightClient/QueryForm.Designer.cs index c602ffc..ad290ca 100644 --- a/B3ButcherWeightClient/QueryForm.Designer.cs +++ b/B3ButcherWeightClient/QueryForm.Designer.cs @@ -23,15 +23,15 @@ /// the contents of this method with the code editor. /// private void InitializeComponent() { - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle19 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle20 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle21 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle22 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle23 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle24 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle25 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle26 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle27 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle(); this.textBoxEndTime = new System.Windows.Forms.TextBox(); this.textBoxBeginTime = new System.Windows.Forms.TextBox(); this.label3 = new System.Windows.Forms.Label(); @@ -77,6 +77,7 @@ this.textBoxBeginTime.Size = new System.Drawing.Size(164, 40); this.textBoxBeginTime.TabIndex = 10; this.textBoxBeginTime.TabStop = false; + this.textBoxBeginTime.TextChanged += new System.EventHandler(this.textBoxBeginTime_TextChanged); this.textBoxBeginTime.DoubleClick += new System.EventHandler(this.textBoxBeginTime_DoubleClick); // // label3 @@ -148,8 +149,8 @@ // IDColumn // this.IDColumn.DataPropertyName = "ID"; - dataGridViewCellStyle19.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.IDColumn.DefaultCellStyle = dataGridViewCellStyle19; + dataGridViewCellStyle1.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.IDColumn.DefaultCellStyle = dataGridViewCellStyle1; this.IDColumn.FillWeight = 0.8370507F; this.IDColumn.HeaderText = "ID"; this.IDColumn.Name = "IDColumn"; @@ -158,8 +159,8 @@ // SeqColumn // this.SeqColumn.DataPropertyName = "Sequence"; - dataGridViewCellStyle20.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.SeqColumn.DefaultCellStyle = dataGridViewCellStyle20; + dataGridViewCellStyle2.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.SeqColumn.DefaultCellStyle = dataGridViewCellStyle2; this.SeqColumn.FillWeight = 0.8370507F; this.SeqColumn.HeaderText = "顺序号"; this.SeqColumn.Name = "SeqColumn"; @@ -168,8 +169,8 @@ // DateColumn // this.DateColumn.DataPropertyName = "DateTime"; - dataGridViewCellStyle21.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.DateColumn.DefaultCellStyle = dataGridViewCellStyle21; + dataGridViewCellStyle3.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.DateColumn.DefaultCellStyle = dataGridViewCellStyle3; this.DateColumn.FillWeight = 1.8F; this.DateColumn.HeaderText = "时间"; this.DateColumn.Name = "DateColumn"; @@ -178,8 +179,8 @@ // PhaseColumn // this.PhaseColumn.DataPropertyName = "PhaseCode"; - dataGridViewCellStyle22.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.PhaseColumn.DefaultCellStyle = dataGridViewCellStyle22; + dataGridViewCellStyle4.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.PhaseColumn.DefaultCellStyle = dataGridViewCellStyle4; this.PhaseColumn.FillWeight = 1.065272F; this.PhaseColumn.HeaderText = "阶段号"; this.PhaseColumn.Name = "PhaseColumn"; @@ -188,8 +189,8 @@ // LivestockColumn // this.LivestockColumn.DataPropertyName = "Livestock_Name"; - dataGridViewCellStyle23.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.LivestockColumn.DefaultCellStyle = dataGridViewCellStyle23; + dataGridViewCellStyle5.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.LivestockColumn.DefaultCellStyle = dataGridViewCellStyle5; this.LivestockColumn.FillWeight = 1.065272F; this.LivestockColumn.HeaderText = "级别"; this.LivestockColumn.Name = "LivestockColumn"; @@ -198,9 +199,9 @@ // NumberColumn // this.NumberColumn.DataPropertyName = "Number"; - dataGridViewCellStyle24.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle24.Format = "0"; - this.NumberColumn.DefaultCellStyle = dataGridViewCellStyle24; + dataGridViewCellStyle6.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle6.Format = "0"; + this.NumberColumn.DefaultCellStyle = dataGridViewCellStyle6; this.NumberColumn.FillWeight = 1.065272F; this.NumberColumn.HeaderText = "头数"; this.NumberColumn.Name = "NumberColumn"; @@ -209,10 +210,10 @@ // WeightColumn // this.WeightColumn.DataPropertyName = "AllWeight"; - dataGridViewCellStyle25.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle25.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle25.Format = "0.00"; - this.WeightColumn.DefaultCellStyle = dataGridViewCellStyle25; + dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle7.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle7.Format = "0.00"; + this.WeightColumn.DefaultCellStyle = dataGridViewCellStyle7; this.WeightColumn.FillWeight = 1.065272F; this.WeightColumn.HeaderText = "重量"; this.WeightColumn.Name = "WeightColumn"; @@ -221,10 +222,10 @@ // SubWeightColumn // this.SubWeightColumn.DataPropertyName = "SubWeight"; - dataGridViewCellStyle26.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle26.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle26.Format = "0.00"; - this.SubWeightColumn.DefaultCellStyle = dataGridViewCellStyle26; + dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle8.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle8.Format = "0.00"; + this.SubWeightColumn.DefaultCellStyle = dataGridViewCellStyle8; this.SubWeightColumn.FillWeight = 1.065272F; this.SubWeightColumn.HeaderText = "扣重"; this.SubWeightColumn.Name = "SubWeightColumn"; @@ -233,10 +234,10 @@ // RWeightColumn // this.RWeightColumn.DataPropertyName = "Weight"; - dataGridViewCellStyle27.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; - dataGridViewCellStyle27.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle27.Format = "0.00"; - this.RWeightColumn.DefaultCellStyle = dataGridViewCellStyle27; + dataGridViewCellStyle9.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; + dataGridViewCellStyle9.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle9.Format = "0.00"; + this.RWeightColumn.DefaultCellStyle = dataGridViewCellStyle9; this.RWeightColumn.FillWeight = 1.065272F; this.RWeightColumn.HeaderText = "净重"; this.RWeightColumn.Name = "RWeightColumn"; diff --git a/B3ButcherWeightClient/QueryForm.cs b/B3ButcherWeightClient/QueryForm.cs index e35bda3..39cc194 100644 --- a/B3ButcherWeightClient/QueryForm.cs +++ b/B3ButcherWeightClient/QueryForm.cs @@ -213,5 +213,9 @@ namespace B3ButcherWeightClient { range.HorizontalAlignment = a; } + private void textBoxBeginTime_TextChanged(object sender, EventArgs e) { + + } + } } diff --git a/B3ButcherWeightClient/QueryForm.resx b/B3ButcherWeightClient/QueryForm.resx index 2f00241..729cd76 100644 --- a/B3ButcherWeightClient/QueryForm.resx +++ b/B3ButcherWeightClient/QueryForm.resx @@ -144,31 +144,4 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - \ No newline at end of file diff --git a/B3ButcherWeightClient/RpcUtil.cs b/B3ButcherWeightClient/RpcUtil.cs new file mode 100644 index 0000000..e1c490b --- /dev/null +++ b/B3ButcherWeightClient/RpcUtil.cs @@ -0,0 +1,62 @@ +using System; +using Forks.JsonRpc.Client; + +namespace B3ButcherWeightClient { + public static class RpcUtil { + + public static bool IsInited { set; get; } + + const string WpfUserMethod = "/MainSystem/B3TianJinMeatUnite/Rpcs/ClientRpc/GetWpfUserInfoByIds"; + public const string GetGoodsBatch = "/MainSystem/BWP/B3_WuFeng/Rpcs/WeightClientRpc/GetGoodsBatch"; + public const string InsertCarcassPicking = "/MainSystem/BWP/B3_WuFeng/Rpcs/WeightClientRpc/InsertCarcassPicking"; + public static string OnLineLoadNameByCode(string code, out string error) { + try { + error = string.Empty; + + return RpcFacade.Call(WpfUserMethod, code); + } catch (Exception ex) { + error = ex.ToString(); + } + return string.Empty; + } + + public static bool Login(string name, string password, out string error) { + error = string.Empty; + try { + RpcFacade.Login(name, password); + } catch (Exception e) { + error = e.Message; + return false; + } + return true; + } + + public static bool Logout(out string error) { + error = string.Empty; + try { + RpcFacade.Logout(); + } catch (Exception e) { + error = e.Message; + return false; + } + return true; + } + + + public static T Call(string relativeMethod, params object[] parameters) { + + bool logedIn; + try { + logedIn = RpcFacade.IsLogedIn; + } catch { + logedIn = false; + } + + if (!logedIn) { + RpcFacade.Login(EncodeString.UserName, EncodeString.Password); + } + + return RpcFacade.Call(relativeMethod, parameters); + } + } +} diff --git a/B3ButcherWeightClient/Setting.Designer.cs b/B3ButcherWeightClient/Setting.Designer.cs index b5d186a..0122cbc 100644 --- a/B3ButcherWeightClient/Setting.Designer.cs +++ b/B3ButcherWeightClient/Setting.Designer.cs @@ -63,10 +63,13 @@ this.radioButton2 = new System.Windows.Forms.RadioButton(); this.radioButton1 = new System.Windows.Forms.RadioButton(); this.cbxAllowChangeLevel = new System.Windows.Forms.CheckBox(); -this.subWeightLabel = new System.Windows.Forms.Label(); - this.subWeightSettingTextBox = new System.Windows.Forms.TextBox(); this.label15 = new System.Windows.Forms.Label(); + this.subWeightLabel = new System.Windows.Forms.Label(); + this.subWeightSettingTextBox = new System.Windows.Forms.TextBox(); + this.label15 = new System.Windows.Forms.Label(); this.txtPerDayStartHour = new System.Windows.Forms.TextBox(); - this.groupBox1.SuspendLayout(); + this.urlTextBox = new System.Windows.Forms.TextBox(); + this.label16 = new System.Windows.Forms.Label(); + this.groupBox1.SuspendLayout(); this.groupBox2.SuspendLayout(); this.groupBox3.SuspendLayout(); this.groupBox4.SuspendLayout(); @@ -353,7 +356,7 @@ this.subWeightLabel = new System.Windows.Forms.Label(); // // btnClose // - this.btnClose.Location = new System.Drawing.Point(229, 431); + this.btnClose.Location = new System.Drawing.Point(233, 483); this.btnClose.Name = "btnClose"; this.btnClose.Size = new System.Drawing.Size(62, 23); this.btnClose.TabIndex = 26; @@ -363,7 +366,7 @@ this.subWeightLabel = new System.Windows.Forms.Label(); // // btnSave // - this.btnSave.Location = new System.Drawing.Point(134, 431); + this.btnSave.Location = new System.Drawing.Point(138, 483); this.btnSave.Name = "btnSave"; this.btnSave.Size = new System.Drawing.Size(62, 23); this.btnSave.TabIndex = 25; @@ -461,7 +464,22 @@ this.subWeightLabel = new System.Windows.Forms.Label(); this.cbxAllowChangeLevel.Text = "允许修改级别"; this.cbxAllowChangeLevel.UseVisualStyleBackColor = true; // - + // subWeightLabel + // + this.subWeightLabel.AutoSize = true; + this.subWeightLabel.Location = new System.Drawing.Point(21, 398); + this.subWeightLabel.Name = "subWeightLabel"; + this.subWeightLabel.Size = new System.Drawing.Size(29, 12); + this.subWeightLabel.TabIndex = 30; + this.subWeightLabel.Text = "扣重"; + // + // subWeightSettingTextBox + // + this.subWeightSettingTextBox.Location = new System.Drawing.Point(82, 395); + this.subWeightSettingTextBox.Name = "subWeightSettingTextBox"; + this.subWeightSettingTextBox.Size = new System.Drawing.Size(100, 21); + this.subWeightSettingTextBox.TabIndex = 31; + // // label15 // this.label15.AutoSize = true; @@ -479,37 +497,33 @@ this.subWeightLabel = new System.Windows.Forms.Label(); this.txtPerDayStartHour.Size = new System.Drawing.Size(41, 21); this.txtPerDayStartHour.TabIndex = 31; // - - // subWeightLabel + // urlTextBox // - this.subWeightLabel.AutoSize = true; - this.subWeightLabel.Location = new System.Drawing.Point(21, 398); - this.subWeightLabel.Name = "subWeightLabel"; - this.subWeightLabel.Size = new System.Drawing.Size(29, 12); - this.subWeightLabel.TabIndex = 30; - this.subWeightLabel.Text = "扣重"; + this.urlTextBox.Location = new System.Drawing.Point(82, 423); + this.urlTextBox.Name = "urlTextBox"; + this.urlTextBox.Size = new System.Drawing.Size(323, 21); + this.urlTextBox.TabIndex = 32; // - // subWeightSettingTextBox + // label16 // - this.subWeightSettingTextBox.Location = new System.Drawing.Point(82, 395); - this.subWeightSettingTextBox.Name = "subWeightSettingTextBox"; - this.subWeightSettingTextBox.Size = new System.Drawing.Size(100, 21); - this.subWeightSettingTextBox.TabIndex = 31; + this.label16.AutoSize = true; + this.label16.Location = new System.Drawing.Point(21, 426); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(53, 12); + this.label16.TabIndex = 30; + this.label16.Text = "B3地址:"; // - - // Setting // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(424, 466); - + this.ClientSize = new System.Drawing.Size(424, 535); + this.Controls.Add(this.urlTextBox); this.Controls.Add(this.txtPerDayStartHour); this.Controls.Add(this.label15); - this.Controls.Add(this.subWeightSettingTextBox); + this.Controls.Add(this.label16); this.Controls.Add(this.subWeightLabel); - this.Controls.Add(this.cbxAllowChangeLevel); this.Controls.Add(this.groupBox4); this.Controls.Add(this.button3); @@ -581,6 +595,8 @@ this.subWeightLabel = new System.Windows.Forms.Label(); private System.Windows.Forms.Label subWeightLabel; private System.Windows.Forms.TextBox subWeightSettingTextBox; + private System.Windows.Forms.TextBox urlTextBox; + private System.Windows.Forms.Label label16; } } \ No newline at end of file diff --git a/B3ButcherWeightClient/Setting.cs b/B3ButcherWeightClient/Setting.cs index 3fc0f59..f1d4c41 100644 --- a/B3ButcherWeightClient/Setting.cs +++ b/B3ButcherWeightClient/Setting.cs @@ -44,7 +44,8 @@ namespace B3ButcherWeightClient { radioButton1.Checked = true; } else if (readType == "1") { radioButton2.Checked = true; - } + } + urlTextBox.Text = nutFile.AsString(ConfigItem.Url, "http://"); subWeightSettingTextBox.Text = nutFile.AsString(ConfigItem.SubWeight, "0"); } } @@ -131,7 +132,7 @@ namespace B3ButcherWeightClient { nutFile.SetValue(ConfigItem.ReadType, readType); nutFile.SetValue(ConfigItem.SubWeight, subWeightSettingTextBox.Text.Trim()); - + nutFile.SetValue(ConfigItem.Url, urlTextBox.Text.Trim()); using (TextWriter writer = FS.OpenWriter(ConfigUtil.ConfigFilePath, createDirsIfNotExist: true)) { nutFile.Write(writer); } diff --git a/BO/WeightTable.cs b/BO/WeightTable.cs index e4a081a..b98bef7 100644 --- a/BO/WeightTable.cs +++ b/BO/WeightTable.cs @@ -34,6 +34,9 @@ namespace BO { [LogicName("扣重")] public decimal? SubWeight { get; set; } + [LogicName("头数")] + public decimal? Number { get; set; } + [LogicName("顺序号")] public long Sequence { get; set; } @@ -45,16 +48,23 @@ namespace BO { [LogicName("批次")] public string GoodsBatchName { get; set; } + public long? GoodsBatchID { get; set; } + [DbColumn(DefaultValue = 0)] public long Mac { get; set; } [DbColumn(DefaultValue = 0)] public bool IsExport { get; set; } - + [DbColumn(DefaultValue = 0)] public bool LastExportFail { get; set; } [DbColumn(Index = IndexType.Normal)] public long? SourceID { get; set; } + + public short? DmoTypeID { get; set; } + + [LogicName("B3单据号")] + public long? DmoID { get; set; } } } diff --git a/白条称重客户端.docx b/白条称重客户端.docx index b211123659a48134e9df27c602d4bc8d1c7cae1a..a9d416c523e27f5267d94f5044d2efb435b190a7 100644 GIT binary patch delta 96278 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 z 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 delta 5725 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