commit f90544bc591db25d961eb769a59766583fb6b10e
Author: wrx <88384874@qq.com>
Date: Wed May 15 09:22:38 2024 +0800
注塑喷涂
diff --git a/BBMPTMes/BBMPT.sln b/BBMPTMes/BBMPT.sln
new file mode 100644
index 0000000..7e0e804
--- /dev/null
+++ b/BBMPTMes/BBMPT.sln
@@ -0,0 +1,50 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.8.34330.188
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MESWebSite", "MESWebSite\MESWebSite.csproj", "{B1DEC82C-3F33-4FC9-A37B-9527315E2C5E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MESClassLibrary", "MESClassLibrary\MESClassLibrary.csproj", "{867989D8-6837-41DC-9BF1-4658F5D6CFEF}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InjectionPC", "InjectionPC\InjectionPC.csproj", "{0FDBFD8E-C694-45C2-89B2-BC3120B944BF}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{0D128182-FB8C-4E0B-A42F-DF3767E4DE39}"
+ ProjectSection(SolutionItems) = preProject
+ 数据结构修改记录.txt = 数据结构修改记录.txt
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {B1DEC82C-3F33-4FC9-A37B-9527315E2C5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B1DEC82C-3F33-4FC9-A37B-9527315E2C5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B1DEC82C-3F33-4FC9-A37B-9527315E2C5E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B1DEC82C-3F33-4FC9-A37B-9527315E2C5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B1DEC82C-3F33-4FC9-A37B-9527315E2C5E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B1DEC82C-3F33-4FC9-A37B-9527315E2C5E}.Release|x86.ActiveCfg = Release|Any CPU
+ {867989D8-6837-41DC-9BF1-4658F5D6CFEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {867989D8-6837-41DC-9BF1-4658F5D6CFEF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {867989D8-6837-41DC-9BF1-4658F5D6CFEF}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {867989D8-6837-41DC-9BF1-4658F5D6CFEF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {867989D8-6837-41DC-9BF1-4658F5D6CFEF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {867989D8-6837-41DC-9BF1-4658F5D6CFEF}.Release|x86.ActiveCfg = Release|Any CPU
+ {0FDBFD8E-C694-45C2-89B2-BC3120B944BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0FDBFD8E-C694-45C2-89B2-BC3120B944BF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0FDBFD8E-C694-45C2-89B2-BC3120B944BF}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {0FDBFD8E-C694-45C2-89B2-BC3120B944BF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0FDBFD8E-C694-45C2-89B2-BC3120B944BF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0FDBFD8E-C694-45C2-89B2-BC3120B944BF}.Release|x86.ActiveCfg = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {52EF8F7E-6AC9-4400-82F1-31F70143C867}
+ EndGlobalSection
+EndGlobal
diff --git a/BBMPTMes/InjectionPC/2.ico b/BBMPTMes/InjectionPC/2.ico
new file mode 100644
index 0000000..c51e8dd
Binary files /dev/null and b/BBMPTMes/InjectionPC/2.ico differ
diff --git a/BBMPTMes/InjectionPC/App.config b/BBMPTMes/InjectionPC/App.config
new file mode 100644
index 0000000..e5a0489
--- /dev/null
+++ b/BBMPTMes/InjectionPC/App.config
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/BBMPTMes/InjectionPC/AutoUpdater.cs b/BBMPTMes/InjectionPC/AutoUpdater.cs
new file mode 100644
index 0000000..d9aaba3
--- /dev/null
+++ b/BBMPTMes/InjectionPC/AutoUpdater.cs
@@ -0,0 +1,136 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using System.Xml;
+
+namespace InjectionPC
+{
+ public class AutoUpdater
+ {
+ private string _serverUrl;
+ private string _softwareName;
+ private string _newVersion;
+ private string _filePath;
+ private string _fileName;
+ private string _lastUpdateTime;
+ private string _desc;
+
+ public bool CheckUpdateLoad(string serverUrl, string updateXmlFileName)
+ {
+ bool result = false;
+ _serverUrl = serverUrl;
+ try
+ {
+ if (CheckUpdate(serverUrl,updateXmlFileName))
+ {
+ var sb = new StringBuilder();
+ sb.AppendLine("当前版本:" + Assembly.LoadFrom(_softwareName).GetName().Version);
+ sb.AppendLine("检查到新版本:" + _newVersion);
+ sb.AppendLine("更新时间:" + _lastUpdateTime);
+ sb.AppendLine("更新说明:" + _desc);
+ sb.AppendLine();
+ sb.AppendLine("是否更新?");
+ //var form = new FormFoundUpdate(sb.ToString());
+ DialogResult result1 = MessageBox.Show("是否更新程序!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
+ if (result1 == DialogResult.Yes)
+ {
+ var path = Application.StartupPath;
+ var args = new StringBuilder();
+ args.Append("\'"+_serverUrl+"\',");
+ args.Append("\'" + _softwareName + "\',");
+ args.Append("\'" + _newVersion + "\',");
+ args.Append("\'" + _filePath + "\',");
+ args.Append("\'" + _fileName + "\',");
+ args.Append("\'" + _lastUpdateTime + "\',");
+ args.Append("\'" + _desc + "\',");
+ //args.Append("\'{_softwareName}\',");
+ //args.Append("\'{_newVersion}\',");
+ //args.Append("\'{_filePath}\',");
+ //args.Append("\'{_fileName}\',");
+ //args.Append("\'{_lastUpdateTime}\',");
+ //args.Append("\'{_desc}\'");
+
+ var process = new System.Diagnostics.Process
+ {
+ StartInfo =
+ {
+ FileName = "Updater.exe",
+ WorkingDirectory = path,
+ CreateNoWindow = true,
+ Arguments = args.ToString(),
+ }
+ };
+// MessageBox.Show(process.StartInfo.FileName+" "+process.StartInfo.Arguments);
+ process.Start();
+ result = true;
+ }
+ }
+
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message);
+ result = false;
+ }
+ return result;
+ }
+
+ private bool CheckUpdate(string serverUrl, string updateXmlFileName)
+ {
+
+ var fullFileName = serverUrl + updateXmlFileName;
+ try
+ {
+ var wc = new WebClient();
+ var stream = wc.OpenRead(fullFileName);
+ //http://127.0.0.1/PcUpdate.xml
+ var xmlDoc = new XmlDocument();
+ if (stream != null) xmlDoc.Load(stream);
+ XmlNode rootNode = xmlDoc.SelectSingleNode("AutoUpdate");
+ if (rootNode != null)
+ foreach (XmlNode node in rootNode.ChildNodes.Cast().Where(node => node.Name == "SoftWare"))
+ {
+ if (node.Attributes != null) _softwareName = node.Attributes["Name"].Value;
+ foreach (XmlNode n in node.ChildNodes)
+ {
+ switch (n.Name)
+ {
+ case "Version":
+ _newVersion = n.InnerText;
+ break;
+ case "FilePath":
+ _filePath = n.InnerText;
+ break;
+ case "FileName":
+ _fileName = n.InnerText;
+ break;
+ case "LastUpdateTime":
+ _lastUpdateTime = n.InnerText;
+ break;
+ case "Desc":
+ _desc = n.InnerText;
+ break;
+ }
+ }
+ }
+
+
+ Version newVersion = new Version(_newVersion);
+ Version oldVersion = Assembly.LoadFrom(_softwareName).GetName().Version;
+ var tm = oldVersion.CompareTo(newVersion);
+
+ var hasUpdate = tm < 0;
+ return hasUpdate;
+ }
+ catch (Exception ex)
+ {
+ throw new Exception("更新出现错误,请确认网络连接无误后重试!\n{fullFileName}\n{ex.Message}");
+ }
+ }
+ }
+}
diff --git a/BBMPTMes/InjectionPC/Form1.Designer.cs b/BBMPTMes/InjectionPC/Form1.Designer.cs
new file mode 100644
index 0000000..202da78
--- /dev/null
+++ b/BBMPTMes/InjectionPC/Form1.Designer.cs
@@ -0,0 +1,71 @@
+namespace InjectionPC
+{
+ partial class Form1
+ {
+ ///
+ /// 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.textBox1 = new System.Windows.Forms.TextBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.SuspendLayout();
+ //
+ // textBox1
+ //
+ this.textBox1.Location = new System.Drawing.Point(30, 33);
+ this.textBox1.Name = "textBox1";
+ this.textBox1.Size = new System.Drawing.Size(228, 21);
+ this.textBox1.TabIndex = 0;
+ this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown);
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(80, 149);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(41, 12);
+ this.label1.TabIndex = 1;
+ this.label1.Text = "label1";
+ //
+ // Form1
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(284, 261);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.textBox1);
+ this.Name = "Form1";
+ this.Text = "Form1";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TextBox textBox1;
+ private System.Windows.Forms.Label label1;
+ }
+}
\ No newline at end of file
diff --git a/BBMPTMes/InjectionPC/Form1.cs b/BBMPTMes/InjectionPC/Form1.cs
new file mode 100644
index 0000000..bb79a27
--- /dev/null
+++ b/BBMPTMes/InjectionPC/Form1.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace InjectionPC
+{
+ public partial class Form1 : Form
+ {
+ public Form1()
+ {
+ InitializeComponent();
+ }
+
+ private void textBox1_KeyDown(object sender, KeyEventArgs e)
+ {
+ if (e.KeyCode==Keys.Enter)
+ {
+ textBox1.Text = "1";
+ }
+ }
+ }
+}
diff --git a/BBMPTMes/InjectionPC/Form1.resx b/BBMPTMes/InjectionPC/Form1.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/BBMPTMes/InjectionPC/Form1.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/BBMPTMes/InjectionPC/FrmBarCode.Designer.cs b/BBMPTMes/InjectionPC/FrmBarCode.Designer.cs
new file mode 100644
index 0000000..1917c26
--- /dev/null
+++ b/BBMPTMes/InjectionPC/FrmBarCode.Designer.cs
@@ -0,0 +1,619 @@
+namespace InjectionPC
+{
+ partial class FrmBarCode
+ {
+ ///
+ /// 必需的设计器变量。
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// 清理所有正在使用的资源。
+ ///
+ /// 如果应释放托管资源,为 true;否则为 false。
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows 窗体设计器生成的代码
+
+ ///
+ /// 设计器支持所需的方法 - 不要
+ /// 使用代码编辑器修改此方法的内容。
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmBarCode));
+ GlacialComponents.Controls.GLColumn glColumn5 = new GlacialComponents.Controls.GLColumn();
+ GlacialComponents.Controls.GLColumn glColumn6 = new GlacialComponents.Controls.GLColumn();
+ GlacialComponents.Controls.GLColumn glColumn7 = new GlacialComponents.Controls.GLColumn();
+ GlacialComponents.Controls.GLColumn glColumn8 = new GlacialComponents.Controls.GLColumn();
+ this.panel1 = new System.Windows.Forms.Panel();
+ this.label2 = new System.Windows.Forms.Label();
+ this.pictureBox1 = new System.Windows.Forms.PictureBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.comboBox1 = new System.Windows.Forms.ComboBox();
+ this.label5 = new System.Windows.Forms.Label();
+ this.label6 = new System.Windows.Forms.Label();
+ this.label7 = new System.Windows.Forms.Label();
+ this.label8 = new System.Windows.Forms.Label();
+ this.label9 = new System.Windows.Forms.Label();
+ this.label10 = new System.Windows.Forms.Label();
+ this.glacialList1 = new GlacialComponents.Controls.GlacialList();
+ this.label11 = new System.Windows.Forms.Label();
+ this.label12 = new System.Windows.Forms.Label();
+ this.label13 = new System.Windows.Forms.Label();
+ this.panel2 = new System.Windows.Forms.Panel();
+ this.textBox2 = new System.Windows.Forms.TextBox();
+ this.label17 = new System.Windows.Forms.Label();
+ this.label16 = new System.Windows.Forms.Label();
+ this.textBox1 = new System.Windows.Forms.TextBox();
+ this.label15 = new System.Windows.Forms.Label();
+ this.comboBox2 = new System.Windows.Forms.ComboBox();
+ this.label14 = new System.Windows.Forms.Label();
+ this.label18 = new System.Windows.Forms.Label();
+ this.label19 = new System.Windows.Forms.Label();
+ this.label20 = new System.Windows.Forms.Label();
+ this.label21 = new System.Windows.Forms.Label();
+ this.timer1 = new System.Windows.Forms.Timer(this.components);
+ this.panel3 = new System.Windows.Forms.Panel();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
+ this.textBox3 = new System.Windows.Forms.TextBox();
+ this.label22 = new System.Windows.Forms.Label();
+ this.panel1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+ this.panel2.SuspendLayout();
+ this.panel3.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // panel1
+ //
+ this.panel1.Controls.Add(this.label2);
+ this.panel1.Controls.Add(this.pictureBox1);
+ this.panel1.Controls.Add(this.label1);
+ this.panel1.Location = new System.Drawing.Point(1, 1);
+ this.panel1.Name = "panel1";
+ this.panel1.Size = new System.Drawing.Size(1275, 91);
+ this.panel1.TabIndex = 0;
+ //
+ // label2
+ //
+ this.label2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label2.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label2.Location = new System.Drawing.Point(1080, 5);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(192, 84);
+ this.label2.TabIndex = 3;
+ this.label2.Text = "2019-05-29 10:30:31";
+ this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.label2.Click += new System.EventHandler(this.label2_Click);
+ //
+ // pictureBox1
+ //
+ this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
+ this.pictureBox1.Location = new System.Drawing.Point(4, 4);
+ this.pictureBox1.Name = "pictureBox1";
+ this.pictureBox1.Size = new System.Drawing.Size(169, 84);
+ this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pictureBox1.TabIndex = 2;
+ this.pictureBox1.TabStop = false;
+ //
+ // label1
+ //
+ this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label1.Font = new System.Drawing.Font("宋体", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label1.Location = new System.Drawing.Point(172, 5);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(911, 84);
+ this.label1.TabIndex = 1;
+ this.label1.Text = "注塑车间条码打印";
+ this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // label3
+ //
+ this.label3.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label3.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label3.Location = new System.Drawing.Point(5, 89);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(169, 52);
+ this.label3.TabIndex = 1;
+ this.label3.Text = "用户信息:";
+ this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // label4
+ //
+ this.label4.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label4.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label4.Location = new System.Drawing.Point(174, 89);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(110, 52);
+ this.label4.TabIndex = 2;
+ this.label4.Text = "班组:";
+ this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // comboBox1
+ //
+ this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.comboBox1.Font = new System.Drawing.Font("宋体", 32F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.comboBox1.FormattingEnabled = true;
+ this.comboBox1.Items.AddRange(new object[] {
+ "A班",
+ "B班"});
+ this.comboBox1.Location = new System.Drawing.Point(284, 91);
+ this.comboBox1.Name = "comboBox1";
+ this.comboBox1.Size = new System.Drawing.Size(136, 51);
+ this.comboBox1.TabIndex = 3;
+ //
+ // label5
+ //
+ this.label5.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label5.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label5.Location = new System.Drawing.Point(419, 91);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(110, 52);
+ this.label5.TabIndex = 4;
+ this.label5.Text = "工位:";
+ this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label6
+ //
+ this.label6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label6.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label6.Location = new System.Drawing.Point(529, 93);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(145, 52);
+ this.label6.TabIndex = 5;
+ this.label6.Text = "IM01";
+ this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // label7
+ //
+ this.label7.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label7.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label7.Location = new System.Drawing.Point(675, 93);
+ this.label7.Name = "label7";
+ this.label7.Size = new System.Drawing.Size(110, 52);
+ this.label7.TabIndex = 6;
+ this.label7.Text = "用户:";
+ this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label8
+ //
+ this.label8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label8.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label8.Location = new System.Drawing.Point(784, 93);
+ this.label8.Name = "label8";
+ this.label8.Size = new System.Drawing.Size(123, 52);
+ this.label8.TabIndex = 7;
+ this.label8.Text = "cy";
+ this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // label9
+ //
+ this.label9.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label9.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label9.Location = new System.Drawing.Point(904, 93);
+ this.label9.Name = "label9";
+ this.label9.Size = new System.Drawing.Size(180, 52);
+ this.label9.TabIndex = 8;
+ this.label9.Text = "质量录入";
+ this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.label9.Click += new System.EventHandler(this.label9_Click);
+ //
+ // label10
+ //
+ this.label10.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label10.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label10.Location = new System.Drawing.Point(5, 141);
+ this.label10.Name = "label10";
+ this.label10.Size = new System.Drawing.Size(169, 622);
+ this.label10.TabIndex = 9;
+ this.label10.Text = "打印记录:";
+ this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // glacialList1
+ //
+ this.glacialList1.AllowColumnResize = true;
+ this.glacialList1.AllowMultiselect = false;
+ this.glacialList1.AlternateBackground = System.Drawing.Color.DarkGreen;
+ this.glacialList1.AlternatingColors = false;
+ this.glacialList1.AutoHeight = true;
+ this.glacialList1.BackColor = System.Drawing.SystemColors.ControlLightLight;
+ this.glacialList1.BackgroundStretchToFit = true;
+ glColumn5.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None;
+ glColumn5.CheckBoxes = false;
+ glColumn5.ImageIndex = -1;
+ glColumn5.Name = "Column1";
+ glColumn5.NumericSort = false;
+ glColumn5.Text = "条码";
+ glColumn5.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
+ glColumn5.Width = 350;
+ glColumn6.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None;
+ glColumn6.CheckBoxes = false;
+ glColumn6.ImageIndex = -1;
+ glColumn6.Name = "Column2";
+ glColumn6.NumericSort = false;
+ glColumn6.Text = "产品名称";
+ glColumn6.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
+ glColumn6.Width = 320;
+ glColumn7.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None;
+ glColumn7.CheckBoxes = false;
+ glColumn7.ImageIndex = -1;
+ glColumn7.Name = "Column3";
+ glColumn7.NumericSort = false;
+ glColumn7.Text = "打印方式";
+ glColumn7.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
+ glColumn7.Width = 150;
+ glColumn8.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None;
+ glColumn8.CheckBoxes = false;
+ glColumn8.ImageIndex = -1;
+ glColumn8.Name = "Column4";
+ glColumn8.NumericSort = false;
+ glColumn8.Text = "打印时间";
+ glColumn8.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
+ glColumn8.Width = 270;
+ this.glacialList1.Columns.AddRange(new GlacialComponents.Controls.GLColumn[] {
+ glColumn5,
+ glColumn6,
+ glColumn7,
+ glColumn8});
+ this.glacialList1.ControlStyle = GlacialComponents.Controls.GLControlStyles.Normal;
+ this.glacialList1.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.glacialList1.FullRowSelect = true;
+ this.glacialList1.GridColor = System.Drawing.Color.DeepSkyBlue;
+ this.glacialList1.GridLines = GlacialComponents.Controls.GLGridLines.gridBoth;
+ this.glacialList1.GridLineStyle = GlacialComponents.Controls.GLGridLineStyles.gridSolid;
+ this.glacialList1.GridTypes = GlacialComponents.Controls.GLGridTypes.gridNormal;
+ this.glacialList1.HeaderHeight = 40;
+ this.glacialList1.HeaderVisible = true;
+ this.glacialList1.HeaderWordWrap = false;
+ this.glacialList1.HotColumnTracking = false;
+ this.glacialList1.HotItemTracking = false;
+ this.glacialList1.HotTrackingColor = System.Drawing.Color.LightGray;
+ this.glacialList1.HoverEvents = false;
+ this.glacialList1.HoverTime = 1;
+ this.glacialList1.ImageList = null;
+ this.glacialList1.ItemHeight = 30;
+ this.glacialList1.ItemWordWrap = false;
+ this.glacialList1.Location = new System.Drawing.Point(173, 142);
+ this.glacialList1.Name = "glacialList1";
+ this.glacialList1.Selectable = true;
+ this.glacialList1.SelectedTextColor = System.Drawing.Color.White;
+ this.glacialList1.SelectionColor = System.Drawing.Color.Lime;
+ this.glacialList1.ShowBorder = true;
+ this.glacialList1.ShowFocusRect = false;
+ this.glacialList1.Size = new System.Drawing.Size(1100, 621);
+ this.glacialList1.SortType = GlacialComponents.Controls.SortTypes.InsertionSort;
+ this.glacialList1.SuperFlatHeaderColor = System.Drawing.Color.White;
+ this.glacialList1.TabIndex = 10;
+ this.glacialList1.Text = "glacialList1";
+ this.glacialList1.Click += new System.EventHandler(this.glacialList1_Click);
+ //
+ // label11
+ //
+ this.label11.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label11.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label11.Location = new System.Drawing.Point(5, 763);
+ this.label11.Name = "label11";
+ this.label11.Size = new System.Drawing.Size(169, 252);
+ this.label11.TabIndex = 11;
+ this.label11.Text = "打印信息:";
+ this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // label12
+ //
+ this.label12.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label12.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label12.Location = new System.Drawing.Point(173, 763);
+ this.label12.Name = "label12";
+ this.label12.Size = new System.Drawing.Size(73, 252);
+ this.label12.TabIndex = 12;
+ this.label12.Text = "暂停打印";
+ this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.label12.Click += new System.EventHandler(this.label12_Click);
+ //
+ // label13
+ //
+ this.label13.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label13.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label13.Location = new System.Drawing.Point(245, 763);
+ this.label13.Name = "label13";
+ this.label13.Size = new System.Drawing.Size(73, 252);
+ this.label13.TabIndex = 13;
+ this.label13.Text = "下一计划";
+ this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.label13.Click += new System.EventHandler(this.label13_Click);
+ //
+ // panel2
+ //
+ this.panel2.BackColor = System.Drawing.Color.Aquamarine;
+ this.panel2.Controls.Add(this.textBox2);
+ this.panel2.Controls.Add(this.label17);
+ this.panel2.Controls.Add(this.label16);
+ this.panel2.Controls.Add(this.textBox1);
+ this.panel2.Controls.Add(this.label15);
+ this.panel2.Controls.Add(this.comboBox2);
+ this.panel2.Controls.Add(this.label14);
+ this.panel2.Location = new System.Drawing.Point(318, 763);
+ this.panel2.Name = "panel2";
+ this.panel2.Size = new System.Drawing.Size(737, 252);
+ this.panel2.TabIndex = 14;
+ //
+ // textBox2
+ //
+ this.textBox2.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.textBox2.Location = new System.Drawing.Point(167, 150);
+ this.textBox2.Name = "textBox2";
+ this.textBox2.Size = new System.Drawing.Size(167, 41);
+ this.textBox2.TabIndex = 6;
+ this.textBox2.Click += new System.EventHandler(this.textBox2_Click);
+ //
+ // label17
+ //
+ this.label17.AutoSize = true;
+ this.label17.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label17.Location = new System.Drawing.Point(37, 156);
+ this.label17.Name = "label17";
+ this.label17.Size = new System.Drawing.Size(103, 29);
+ this.label17.TabIndex = 5;
+ this.label17.Text = "数量:";
+ //
+ // label16
+ //
+ this.label16.AutoSize = true;
+ this.label16.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label16.Location = new System.Drawing.Point(378, 84);
+ this.label16.Name = "label16";
+ this.label16.Size = new System.Drawing.Size(141, 29);
+ this.label16.TabIndex = 4;
+ this.label16.Text = "(yyMMdd)";
+ //
+ // textBox1
+ //
+ this.textBox1.Enabled = false;
+ this.textBox1.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.textBox1.Location = new System.Drawing.Point(168, 81);
+ this.textBox1.Name = "textBox1";
+ this.textBox1.Size = new System.Drawing.Size(166, 41);
+ this.textBox1.TabIndex = 3;
+ //
+ // label15
+ //
+ this.label15.AutoSize = true;
+ this.label15.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label15.Location = new System.Drawing.Point(38, 89);
+ this.label15.Name = "label15";
+ this.label15.Size = new System.Drawing.Size(103, 29);
+ this.label15.TabIndex = 2;
+ this.label15.Text = "批次:";
+ //
+ // comboBox2
+ //
+ this.comboBox2.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.comboBox2.FormattingEnabled = true;
+ this.comboBox2.Location = new System.Drawing.Point(168, 19);
+ this.comboBox2.Name = "comboBox2";
+ this.comboBox2.Size = new System.Drawing.Size(481, 37);
+ this.comboBox2.TabIndex = 1;
+ //
+ // label14
+ //
+ this.label14.AutoSize = true;
+ this.label14.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label14.Location = new System.Drawing.Point(38, 23);
+ this.label14.Name = "label14";
+ this.label14.Size = new System.Drawing.Size(103, 29);
+ this.label14.TabIndex = 0;
+ this.label14.Text = "产品:";
+ //
+ // label18
+ //
+ this.label18.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label18.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label18.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label18.Location = new System.Drawing.Point(1129, 763);
+ this.label18.Name = "label18";
+ this.label18.Size = new System.Drawing.Size(73, 252);
+ this.label18.TabIndex = 15;
+ this.label18.Text = "补打";
+ this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.label18.Visible = false;
+ this.label18.Click += new System.EventHandler(this.label18_Click);
+ //
+ // label19
+ //
+ this.label19.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label19.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label19.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label19.Location = new System.Drawing.Point(1056, 763);
+ this.label19.Name = "label19";
+ this.label19.Size = new System.Drawing.Size(73, 252);
+ this.label19.TabIndex = 16;
+ this.label19.Text = "手工打印";
+ this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.label19.Click += new System.EventHandler(this.label19_Click);
+ //
+ // label20
+ //
+ this.label20.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label20.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label20.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label20.Location = new System.Drawing.Point(1202, 763);
+ this.label20.Name = "label20";
+ this.label20.Size = new System.Drawing.Size(73, 252);
+ this.label20.TabIndex = 17;
+ this.label20.Text = "删除条码";
+ this.label20.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.label20.Visible = false;
+ this.label20.Click += new System.EventHandler(this.label20_Click);
+ //
+ // label21
+ //
+ this.label21.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label21.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label21.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label21.Location = new System.Drawing.Point(1081, 93);
+ this.label21.Name = "label21";
+ this.label21.Size = new System.Drawing.Size(192, 50);
+ this.label21.TabIndex = 18;
+ this.label21.Text = "停机录入";
+ this.label21.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.label21.Click += new System.EventHandler(this.label21_Click);
+ //
+ // timer1
+ //
+ this.timer1.Enabled = true;
+ this.timer1.Interval = 5000;
+ this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
+ //
+ // panel3
+ //
+ this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.panel3.Controls.Add(this.button2);
+ this.panel3.Controls.Add(this.button1);
+ this.panel3.Controls.Add(this.textBox3);
+ this.panel3.Controls.Add(this.label22);
+ this.panel3.Location = new System.Drawing.Point(512, 555);
+ this.panel3.Name = "panel3";
+ this.panel3.Size = new System.Drawing.Size(527, 56);
+ this.panel3.TabIndex = 19;
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(417, 20);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(75, 23);
+ this.button2.TabIndex = 3;
+ this.button2.Text = "取消";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(309, 20);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(75, 23);
+ this.button1.TabIndex = 2;
+ this.button1.Text = "确定";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // textBox3
+ //
+ this.textBox3.Location = new System.Drawing.Point(81, 20);
+ this.textBox3.Name = "textBox3";
+ this.textBox3.Size = new System.Drawing.Size(176, 21);
+ this.textBox3.TabIndex = 1;
+ this.textBox3.UseSystemPasswordChar = true;
+ this.textBox3.Click += new System.EventHandler(this.textBox3_Click);
+ this.textBox3.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox3_KeyDown);
+ //
+ // label22
+ //
+ this.label22.AutoSize = true;
+ this.label22.Location = new System.Drawing.Point(26, 24);
+ this.label22.Name = "label22";
+ this.label22.Size = new System.Drawing.Size(41, 12);
+ this.label22.TabIndex = 0;
+ this.label22.Text = "密码:";
+ //
+ // FrmBarCode
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(1280, 1024);
+ this.Controls.Add(this.panel3);
+ this.Controls.Add(this.label21);
+ this.Controls.Add(this.label20);
+ this.Controls.Add(this.label19);
+ this.Controls.Add(this.label18);
+ this.Controls.Add(this.panel2);
+ this.Controls.Add(this.label13);
+ this.Controls.Add(this.label12);
+ this.Controls.Add(this.label11);
+ this.Controls.Add(this.glacialList1);
+ this.Controls.Add(this.label10);
+ this.Controls.Add(this.label9);
+ this.Controls.Add(this.label8);
+ this.Controls.Add(this.label7);
+ this.Controls.Add(this.label6);
+ this.Controls.Add(this.label5);
+ this.Controls.Add(this.comboBox1);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.panel1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+ this.Name = "FrmBarCode";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Form1";
+ this.Load += new System.EventHandler(this.FrmBarCode_Load);
+ this.panel1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+ this.panel2.ResumeLayout(false);
+ this.panel2.PerformLayout();
+ this.panel3.ResumeLayout(false);
+ this.panel3.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Panel panel1;
+ private System.Windows.Forms.PictureBox pictureBox1;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.ComboBox comboBox1;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.Label label6;
+ private System.Windows.Forms.Label label7;
+ private System.Windows.Forms.Label label8;
+ private System.Windows.Forms.Label label9;
+ private System.Windows.Forms.Label label10;
+ private GlacialComponents.Controls.GlacialList glacialList1;
+ private System.Windows.Forms.Label label11;
+ private System.Windows.Forms.Label label12;
+ private System.Windows.Forms.Label label13;
+ private System.Windows.Forms.Panel panel2;
+ private System.Windows.Forms.TextBox textBox2;
+ private System.Windows.Forms.Label label17;
+ private System.Windows.Forms.Label label16;
+ private System.Windows.Forms.TextBox textBox1;
+ private System.Windows.Forms.Label label15;
+ private System.Windows.Forms.ComboBox comboBox2;
+ private System.Windows.Forms.Label label14;
+ private System.Windows.Forms.Label label18;
+ private System.Windows.Forms.Label label19;
+ private System.Windows.Forms.Label label20;
+ private System.Windows.Forms.Label label21;
+ private System.Windows.Forms.Timer timer1;
+ private System.Windows.Forms.Panel panel3;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.TextBox textBox3;
+ private System.Windows.Forms.Label label22;
+
+ }
+}
+
diff --git a/BBMPTMes/InjectionPC/FrmBarCode.cs b/BBMPTMes/InjectionPC/FrmBarCode.cs
new file mode 100644
index 0000000..96d3271
--- /dev/null
+++ b/BBMPTMes/InjectionPC/FrmBarCode.cs
@@ -0,0 +1,1560 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Configuration;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using MESClassLibrary.BLL.BasicInfo;
+using System.Net.NetworkInformation;
+using System.IO;
+using GlacialComponents.Controls;
+using MESClassLibrary.Model;
+using grdesLib;
+using grproLib;
+using System.Configuration;
+using System.Diagnostics;
+using System.Diagnostics.Eventing.Reader;
+using System.Reflection;
+using System.Runtime.InteropServices;
+using System.Threading;
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.DAL;
+using MESClassLibrary.EFModel;
+
+namespace InjectionPC
+{
+ public partial class FrmBarCode : Form
+ {
+ public FrmBarCode()
+ {
+ InitializeComponent();
+ }
+
+ public string oldTime = "", newTime = "",tempTime="";
+ public static bool IsStart = true;
+ public string planID = "";
+ public static string code_g = "";
+
+ private void FrmBarCode_Load(object sender, EventArgs e)
+ {
+ try
+ {
+ var serverUrl = "http://10.60.101.10:8013/";
+ var updateXmlFileName = "InjectionUpdate.xml";
+ var updater = new AutoUpdater();
+ if (updater.CheckUpdateLoad(serverUrl, updateXmlFileName))
+ {
+ Environment.Exit(0);
+ }
+
+ Control.CheckForIllegalCrossThreadCalls = false;
+ Thread t = new Thread(new ThreadStart(TimeGo));
+ t.Start();
+ timer1.Interval = Program.interVal;
+ ;
+ label6.Text = Program.station;
+ label8.Text = Program.OperatorName;
+ panel3.Visible = false;
+ textBox3.Text = "";
+ //comboBox1.Text = "A班";
+ initProduct();
+
+ initBarCode();
+ DateTime aa = GetDateTime();
+
+ if (aa.Hour >= 8 && aa.Hour < 20)
+ {
+ Program.Shift = "A班";
+ Program.ProductDate = aa.ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ Program.Shift = "B班";
+ if (aa.Hour >= 0 && aa.Hour < 8)
+ {
+ Program.ProductDate =aa.AddDays(-1).ToString("yyyy-MM-dd");
+ //Program.ProductDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ Program.ProductDate = aa.ToString("yyyy-MM-dd");
+ //Program.ProductDate = DateTime.Now.ToString("yyyy-MM-dd");
+ }
+ }
+ comboBox1.Text = Program.Shift;
+
+ textBox1.Text = Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) +
+ Program.ProductDate.Substring(8, 2);
+ if (IsStart == false)
+ {
+ timer1.Enabled = false;
+ label12.Text = "开始打印";
+ label12.BackColor = System.Drawing.Color.Gray;
+ }
+
+ else
+ {
+ timer1.Enabled = true;
+ label12.Text = "暂停打印";
+ label12.BackColor = System.Drawing.Color.DeepSkyBlue;
+ }
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod());
+ }
+
+ }
+
+ private void initProduct()
+ {
+ comboBox2.Items.Clear();
+
+ ProductBLL bll=new ProductBLL();
+
+ DataTable dt = bll.SearchInfoByType("2000", Program.station);
+ if (dt != null && dt.Rows.Count > 0)
+ {
+ for (int i = 0; i < dt.Rows.Count; i++)
+ {
+ comboBox2.Items.Add(dt.Rows[i]["ProductName"].ToString());
+ }
+ }
+ dt.Dispose();
+ }
+
+ private void initBarCode ()
+ {
+ BarCodeBLL bll=new BarCodeBLL();
+
+ glacialList1.Items.Clear();
+ DataTable dt = bll.SearchInfo(Program.station);
+ if (dt != null && dt.Rows.Count > 0)
+ {
+ for (int i = 0; i < dt.Rows.Count; i++)
+ {
+ glacialList1.Items.Add(i.ToString());
+ glacialList1.Items[i].SubItems[0].Text = dt.Rows[i]["BarCode"].ToString();
+ glacialList1.Items[i].SubItems[1].Text = dt.Rows[i]["ProductName"].ToString();
+ glacialList1.Items[i].SubItems[2].Text = dt.Rows[i]["PrintType"].ToString();
+ glacialList1.Items[i].SubItems[3].Text = dt.Rows[i]["CreateTime"].ToString() == "" ? "" : Convert.ToDateTime(dt.Rows[i]["CreateTime"].ToString()).ToString("yyyy-MM-dd HH:mm:ss");
+ //glacialList1.Items[i].SubItems[3].Text = dt.Rows[i]["CreateTime"].ToString() == "" ? "" : dt.Rows[i]["CreateTime"].ToString("yyyy-MM-dd HH:mm:ss.fff");
+ //glacialList1.Refresh();
+ }
+ }
+ }
+ ///
+ /// 质量录入
+ ///
+ ///
+ ///
+ private void label9_Click(object sender, EventArgs e)
+ {
+ //this.Hide();
+ Form fr=new FrmQuality();
+ fr.Show();
+ }
+
+ private void TimeGo()
+ {
+ System.Timers.Timer timer = new System.Timers.Timer();
+ timer.Interval = 1000;
+ timer.Enabled = true;
+ timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick);
+ }
+
+ private void timer_Tick(object sender, EventArgs e)
+ {
+ label2.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+ Thread.Sleep(500);
+ }
+
+ private void timer1_Tick(object sender, EventArgs e)
+ {
+ BarCodeBLL Barbll = new BarCodeBLL();
+ BarCodeModel md = new BarCodeModel();
+ timer1.Stop();
+ Ping p1 = new Ping();
+ bool status = false;
+ string code = "",OneCode="";
+ string newcode = "", newcode1 = "", NewOneCode = "", NewOneCode1 = "", printerName = "", rfilename = "", reportName="";
+ string[] part=new string[3];
+ GridppReport report = new GridppReport();
+ long a = 0;
+
+ ProductOfInjectionBLL pbll = new ProductOfInjectionBLL();
+ ProductOfInjectionModel pmd = new ProductOfInjectionModel();
+ InjectionPlanBLL bll = new InjectionPlanBLL();
+ BarCodeBLL brbll = new BarCodeBLL();
+ ProductBLL productBll =new ProductBLL();
+
+ DataTable pdt3 = null;
+
+
+ DateTime aa = GetDateTime();
+
+ if (aa.Hour >= 8 && aa.Hour < 20)
+ {
+ Program.Shift = "A班";
+ Program.ProductDate = aa.ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ Program.Shift = "B班";
+ if (aa.Hour >= 0 && aa.Hour < 8)
+ {
+ Program.ProductDate = aa.AddDays(-1).ToString("yyyy-MM-dd");
+ //Program.ProductDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ Program.ProductDate = aa.ToString("yyyy-MM-dd");
+ //Program.ProductDate = DateTime.Now.ToString("yyyy-MM-dd");
+ }
+ }
+ //if (GetDateTime().Hour >= 8 && GetDateTime().Hour < 20)
+ //{
+ // Program.Shift = "A班";
+ // Program.ProductDate = DateTime.Now.ToString("yyyy-MM-dd");
+ //}
+ //else
+ //{
+ // Program.Shift = "B班";
+ // if (GetDateTime().Hour >= 0 && GetDateTime().Hour < 8)
+ // {
+ // Program.ProductDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
+ // }
+ // else
+ // {
+ // Program.ProductDate = DateTime.Now.ToString("yyyy-MM-dd");
+ // }
+ //}
+
+ //班组
+ comboBox1.Text = Program.Shift;
+ //批次
+ textBox1.Text = Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) +
+ Program.ProductDate.Substring(8, 2);
+ LogHelper.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
+ try
+ {
+ PingReply reply = p1.Send(Program.IP); //发送主机名或Ip地址
+ StringBuilder sbuilder;
+ if (reply.Status == IPStatus.Success)
+ {
+ //读取称重文件
+ //status = Upload.DoConnComputer(Program.IP, Program.WeightFolder, Program.WeightUser, Program.WeightPsw);
+ status = true;
+ if (status)
+ {
+ //DirectoryInfo theFolder = new DirectoryInfo(@"\\192.168.1.16\aa");
+ //DirectoryInfo theFolder = new DirectoryInfo(@"\\" + Program.IP + "\\UserData");
+ DirectoryInfo theFolder = new DirectoryInfo(@"\\" + Program.IP + "\\" + Program.WeightFolder);
+ //string filename = theFolder.ToString() + "\\ProdHisFile.csv";
+ string filename = theFolder.ToString() + "\\" + Program.WeightFile;
+
+ FileInfo fl = new FileInfo(filename);
+
+
+ if (oldTime == "" || oldTime == "none")
+ {
+ oldTime = fl.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss");
+ tempTime = oldTime;
+ }
+ else
+ {
+ newTime = fl.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss");
+ tempTime=newTime;
+ TimeSpan s = Convert.ToDateTime(tempTime) - Convert.ToDateTime(oldTime);
+ if (s.TotalSeconds<50)
+ {
+ timer1.Interval = Program.interVal;
+ timer1.Start();
+ return;
+ }
+ else
+ {
+ if (newTime != oldTime)
+ {
+ #region 生成打印条码 1、当前计划的存货代码2、barcode表根据存货代码查找今天的流水
+
+ DataTable dt = bll.SearchInfoByName(Program.station);
+ if (dt != null && dt.Rows.Count > 0)
+ {
+ planID = dt.Rows[0]["InjectionPlanID"].ToString();
+ DataTable dt2 = null;
+ if (dt.Rows[0]["ProductName"].ToString().IndexOf("门槛") != -1)
+ {
+ //插入两条数据,一个左门槛,一个右门槛
+ dt2 = brbll.SearchInfoByStock(dt.Rows[0]["StockNo"].ToString().Trim());
+ if (dt2 != null && dt2.Rows.Count > 0)
+ {
+ code = dt2.Rows[0]["BarCode"].ToString().Trim();
+ newcode = code.Substring(0, code.Length - 4) +
+ (Convert.ToInt32(code.Substring(code.Length - 4, 4)) + 1).ToString()
+ .PadLeft(4, '0');
+ OneCode = dt2.Rows[0]["OneBarCode"].ToString().Trim();
+ NewOneCode = OneCode.Substring(0, OneCode.Length - 4) + (Convert.ToInt32(OneCode.Substring(OneCode.Length - 4, 4)) + 1).ToString().PadLeft(4, '0');
+ }
+ else
+ {
+ //按照二维码的生成规则
+ newcode = dt.Rows[0]["PartNo"].ToString().Trim() + "." + Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) + Program.ProductDate.Substring(8, 2) + "." + "0001";
+ NewOneCode = dt.Rows[0]["StockNo"].ToString().Trim() + Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) + Program.ProductDate.Substring(8, 2) + "0001";
+ }
+
+ ProductBLL prbll = new ProductBLL();
+ DataTable prdt = null;
+ if (dt.Rows[0]["ProductName"].ToString().IndexOf("左") != -1)
+ {
+ #region 计划为左门槛
+
+ prdt = prbll.SearchInfoByProductName(
+ dt.Rows[0]["ProductName"].ToString().TrimEnd()
+ .Substring(0, dt.Rows[0]["ProductName"].ToString().TrimEnd().Length - 3) + "右门槛");
+ if (prdt != null && prdt.Rows.Count > 0)
+ {
+ dt2 = brbll.SearchInfoByStock(prdt.Rows[0]["StockNo"].ToString().Trim());
+ if (dt2 != null && dt2.Rows.Count > 0)
+ {
+ code = dt2.Rows[0]["BarCode"].ToString().Trim();
+ newcode1 = code.Substring(0, code.Length - 4) +
+ (Convert.ToInt32(code.Substring(code.Length - 4, 4)) + 1).ToString()
+ .PadLeft(4, '0');
+ OneCode = dt2.Rows[0]["OneBarCode"].ToString().Trim();
+ NewOneCode1 = OneCode.Substring(0, OneCode.Length - 4) + (Convert.ToInt32(OneCode.Substring(OneCode.Length - 4, 4)) + 1).ToString().PadLeft(4, '0');
+ }
+ else
+ {
+ //按照二维码的生成规则
+ newcode1 = prdt.Rows[0]["PartNo"].ToString().Trim() + "." + Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) + Program.ProductDate.Substring(8, 2) + "." + "0001";
+ NewOneCode1 = prdt.Rows[0]["StockNo"].ToString().Trim() + Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) + Program.ProductDate.Substring(8, 2) + "0001";
+ }
+
+ #region 如果顺序号不一致取最大的
+ if (Convert.ToInt32(newcode.Substring(newcode.Length - 4, 4)) !=
+ Convert.ToInt32(newcode1.Substring(newcode1.Length - 4, 4)))
+ {
+ if (Convert.ToInt32(newcode.Substring(newcode.Length - 4, 4)) > Convert.ToInt32(newcode1.Substring(newcode1.Length - 4, 4)))
+ {
+ newcode1 = newcode1.Substring(0, newcode1.Length - 4) +
+ newcode.Substring(newcode.Length - 4, 4);
+ NewOneCode1 = NewOneCode1.Substring(0, NewOneCode1.Length - 4) + newcode.Substring(newcode.Length - 4, 4);
+ }
+ else
+ {
+ newcode = newcode.Substring(0, newcode.Length - 4) + newcode1.Substring(newcode1.Length - 4, 4);
+ NewOneCode = NewOneCode.Substring(0, NewOneCode.Length - 4) + newcode1.Substring(newcode1.Length - 4, 4);
+ }
+ }
+ #endregion
+
+ #region 插入tb_barcode表记录
+
+ part = newcode.Split('.');
+ md.ID = Guid.NewGuid().ToString();
+ md.StationID = dt.Rows[0]["StationID"].ToString();
+ md.OneBarCode = NewOneCode;
+ md.BarCode = newcode;
+ md.StockNo = dt.Rows[0]["StockNo"].ToString();
+ md.PrintType = 0;
+ md.PlanID = planID;
+ md.BatchNo = textBox1.Text;
+
+ DataTable pdt = productBll.SearchIsImportByStockNo(NewOneCode.Substring(0, 10));
+ if (pdt != null && pdt.Rows.Count > 0)
+ {
+ if (pdt.Rows[0]["isImport"].ToString() == "1")
+ {
+ md.Import = "国产料Kingfa";
+ }
+ else
+ {
+ md.Import = "";
+ }
+ }
+
+ if (Barbll.Add_Info(md))
+ {
+ #region 打印条码 左
+
+ filename = @"D:\111 - 副本.grf";
+ DataTable headTable = new DataTable();
+ headTable.Columns.Add("StationNo");
+ headTable.Columns.Add("OneBarCode");
+ headTable.Columns.Add("BarCode");
+ headTable.Columns.Add("ProductName");
+ headTable.Columns.Add("IsImport");
+ DataRow row = headTable.NewRow();
+ row["StationNo"] = Program.station;
+
+ row["OneBarCode"] = NewOneCode;
+ row["BarCode"] = newcode;
+ row["ProductName"] = dt.Rows[0]["ProductName"];
+ row["IsImport"] = md.Import;
+ reportName = ConfigurationManager.AppSettings["Printer1"];
+ headTable.Rows.Add(row);
+
+ ReportHelper rp = new ReportHelper(filename, headTable, null,
+ (int)GRPaperOrientation.grpoDefault, 1, reportName);
+ rp.Report.Print(false);
+
+ #endregion
+
+ LogHelper.WriteLog("打印时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ";" + NewOneCode);
+
+ Barbll.Update_Info(md);
+ }
+ else
+ {
+ MessageBox.Show("连接数据库超时!");
+ timer1.Interval = Program.interVal;
+ timer1.Start();
+ return;
+ }
+
+ #endregion
+
+ #region 插入tb_barcode表记录
+
+ part = newcode.Split('.');
+ md.ID = Guid.NewGuid().ToString();
+ md.StationID = dt.Rows[0]["StationID"].ToString();
+ md.OneBarCode = NewOneCode1;
+ md.BarCode = newcode1;
+ md.StockNo = prdt.Rows[0]["StockNo"].ToString().Trim();
+ md.PrintType = 0;
+ md.PlanID = planID;
+ md.BatchNo = textBox1.Text;
+
+ DataTable pdt1 = productBll.SearchIsImportByStockNo(NewOneCode.Substring(0, 10));
+ if (pdt1 != null && pdt1.Rows.Count > 0)
+ {
+ if (pdt1.Rows[0]["isImport"].ToString() == "1")
+ {
+ md.Import = "国产料Kingfa";
+ }
+ else
+ {
+ md.Import = "";
+ }
+ }
+
+ if (Barbll.Add_Info(md))
+ {
+ #region 打印条码 右
+
+ filename = @"D:\111 - 副本.grf";
+ DataTable headTable1 = new DataTable();
+ headTable1.Columns.Add("StationNo");
+ headTable1.Columns.Add("OneBarCode");
+ headTable1.Columns.Add("BarCode");
+ headTable1.Columns.Add("ProductName");
+ headTable1.Columns.Add("IsImport");
+ DataRow row1 = headTable1.NewRow();
+ row1["StationNo"] = Program.station;
+ row1["OneBarCode"] = NewOneCode1;
+ row1["BarCode"] = newcode1;
+ row1["ProductName"] = dt.Rows[0]["ProductName"].ToString().TrimEnd()
+ .Substring(0, dt.Rows[0]["ProductName"].ToString().TrimEnd().Length - 3) + "右门槛";
+ row1["IsImport"] = md.Import;
+ reportName = ConfigurationManager.AppSettings["Printer2"];
+ headTable1.Rows.Add(row1);
+
+ ReportHelper rp1 = new ReportHelper(filename, headTable1, null,
+ (int)GRPaperOrientation.grpoDefault, 1, reportName);
+ rp1.Report.Print(false);
+
+ #endregion
+
+ LogHelper.WriteLog("打印时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ";" + NewOneCode1);
+
+ Barbll.Update_Info(md);
+ }
+ else
+ {
+ MessageBox.Show("连接数据库超时!");
+ timer1.Interval = Program.interVal;
+ timer1.Start();
+ return;
+ }
+
+ #endregion
+ }
+ #endregion
+ }
+
+ else
+ {
+ #region 计划为右门槛
+
+ prdt = prbll.SearchInfoByProductName(
+ dt.Rows[0]["ProductName"].ToString().TrimEnd()
+ .Substring(0, dt.Rows[0]["ProductName"].ToString().TrimEnd().Length - 3) + "左");
+ if (prdt != null && prdt.Rows.Count > 0)
+ {
+ dt2 = brbll.SearchInfoByStock(prdt.Rows[0]["StockNo"].ToString().Trim());
+ if (dt2 != null && dt2.Rows.Count > 0)
+ {
+ code = dt2.Rows[0]["BarCode"].ToString().Trim();
+ newcode1 = code.Substring(0, code.Length - 4) +
+ (Convert.ToInt32(code.Substring(code.Length - 4, 4)) + 1).ToString()
+ .PadLeft(4, '0');
+ OneCode = dt2.Rows[0]["OneBarCode"].ToString().Trim();
+ NewOneCode1 = OneCode.Substring(0, OneCode.Length - 4) + (Convert.ToInt32(OneCode.Substring(OneCode.Length - 4, 4)) + 1).ToString().PadLeft(4, '0');
+ }
+ else
+ {
+ //按照二维码的生成规则
+ newcode1 = prdt.Rows[0]["PartNo"].ToString().Trim() + "." + Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) + Program.ProductDate.Substring(8, 2) + "." + "0001";
+ NewOneCode1 = prdt.Rows[0]["StockNo"].ToString().Trim() + Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) + Program.ProductDate.Substring(8, 2) + "0001";
+ }
+
+ #region 如果顺序号不一致取最大的
+ if (Convert.ToInt32(newcode.Substring(newcode.Length - 4, 4)) !=
+ Convert.ToInt32(newcode1.Substring(newcode1.Length - 4, 4)))
+ {
+ if (Convert.ToInt32(newcode.Substring(newcode.Length - 4, 4)) > Convert.ToInt32(newcode1.Substring(newcode1.Length - 4, 4)))
+ {
+ newcode1 = newcode1.Substring(0, newcode1.Length - 4) +
+ newcode.Substring(newcode.Length - 4, 4);
+ NewOneCode1 = NewOneCode1.Substring(0, NewOneCode1.Length - 4) + newcode.Substring(newcode.Length - 4, 4);
+ }
+ else
+ {
+ newcode = newcode.Substring(0, newcode.Length - 4) + newcode1.Substring(newcode1.Length - 4, 4);
+ NewOneCode = NewOneCode.Substring(0, NewOneCode.Length - 4) + newcode1.Substring(newcode1.Length - 4, 4);
+ }
+ }
+ #endregion
+
+ #region 插入tb_barcode表记录
+
+ part = newcode.Split('.');
+ md.ID = Guid.NewGuid().ToString();
+ md.StationID = dt.Rows[0]["StationID"].ToString();
+ md.OneBarCode = NewOneCode;
+ md.BarCode = newcode;
+ md.StockNo = dt.Rows[0]["StockNo"].ToString();
+ md.PrintType = 0;
+ md.PlanID = planID;
+ md.BatchNo = textBox1.Text;
+
+ DataTable pdt = productBll.SearchIsImportByStockNo(NewOneCode.Substring(0, 10));
+ if (pdt != null && pdt.Rows.Count > 0)
+ {
+ if (pdt.Rows[0]["isImport"].ToString() == "1")
+ {
+ md.Import = "国产料Kingfa";
+ }
+ else
+ {
+ md.Import = "";
+ }
+ }
+
+ if (Barbll.Add_Info(md))
+ {
+ #region 打印条码 右
+
+ filename = @"D:\111 - 副本.grf";
+ DataTable headTable = new DataTable();
+ headTable.Columns.Add("StationNo");
+ headTable.Columns.Add("OneBarCode");
+ headTable.Columns.Add("newcode");
+ headTable.Columns.Add("ProductName");
+ headTable.Columns.Add("IsImport");
+ DataRow row = headTable.NewRow();
+ row["StationNo"] = Program.station;
+ row["OneBarCode"] = NewOneCode;
+ row["BarCode"] = newcode;
+ row["ProductName"] = dt.Rows[0]["ProductName"].ToString();
+ row["IsImport"] = md.Import;
+ reportName = ConfigurationManager.AppSettings["Printer2"];
+ headTable.Rows.Add(row);
+
+ ReportHelper rp = new ReportHelper(filename, headTable, null,
+ (int)GRPaperOrientation.grpoDefault, 1, reportName);
+ rp.Report.Print(false);
+
+ #endregion
+
+ LogHelper.WriteLog("打印时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ";" + NewOneCode);
+
+ Barbll.Update_Info(md);
+ }
+ else
+ {
+ MessageBox.Show("连接数据库超时!");
+ timer1.Interval = Program.interVal;
+ timer1.Start();
+ return;
+ }
+
+ #endregion
+
+ #region 插入tb_barcode表记录
+
+ part = newcode.Split('.');
+ md.ID = Guid.NewGuid().ToString();
+ md.StationID = dt.Rows[0]["StationID"].ToString();
+ md.OneBarCode = NewOneCode1;
+ md.BarCode = newcode1;
+ md.StockNo = prdt.Rows[0]["StockNo"].ToString();
+ md.PrintType = 0;
+ md.PlanID = planID;
+ md.BatchNo = textBox1.Text;
+
+ DataTable pdt2 = productBll.SearchIsImportByStockNo(NewOneCode.Substring(0, 10));
+ if (pdt2 != null && pdt2.Rows.Count > 0)
+ {
+ if (pdt2.Rows[0]["isImport"].ToString() == "1")
+ {
+ md.Import = "国产料Kingfa";
+ }
+ else
+ {
+ md.Import = "";
+ }
+ }
+
+ if (Barbll.Add_Info(md))
+ {
+ #region 打印条码 左
+
+ filename = @"D:\111 - 副本.grf";
+ DataTable headTable1 = new DataTable();
+ headTable1.Columns.Add("StationNo");
+ headTable1.Columns.Add("OneBarCode");
+ headTable1.Columns.Add("newcode");
+ headTable1.Columns.Add("ProductName");
+ headTable1.Columns.Add("IsImport");
+ DataRow row1 = headTable1.NewRow();
+ row1["StationNo"] = Program.station;
+ row1["OneBarCode"] = NewOneCode1;
+ row1["BarCode"] = newcode1;
+ row1["ProductName"] = dt.Rows[0]["ProductName"].ToString().TrimEnd()
+ .Substring(0, dt.Rows[0]["ProductName"].ToString().TrimEnd().Length - 3) + "左门槛";
+ row1["IsImport"] = md.Import;
+ reportName = ConfigurationManager.AppSettings["Printer1"];
+ headTable1.Rows.Add(row1);
+
+ ReportHelper rp1 = new ReportHelper(filename, headTable1, null,
+ (int)GRPaperOrientation.grpoDefault, 1, reportName);
+ rp1.Report.Print(false);
+
+ #endregion
+
+ LogHelper.WriteLog("打印时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ";" + NewOneCode1);
+
+ Barbll.Update_Info(md);
+ }
+ else
+ {
+ MessageBox.Show("连接数据库超时!");
+ timer1.Interval = Program.interVal;
+ timer1.Start();
+ return;
+ }
+
+ #endregion
+
+ }
+ #endregion
+ }
+ }
+ else
+ {
+ #region 不是门槛
+
+ dt2 = brbll.SearchInfoByStock(dt.Rows[0]["StockNo"].ToString().Trim());
+ if (dt2 != null && dt2.Rows.Count > 0)
+ {
+ code = dt2.Rows[0]["BarCode"].ToString().Trim();
+ newcode = code.Substring(0, code.Length - 4) +
+ (Convert.ToInt32(code.Substring(code.Length - 4, 4)) + 1).ToString()
+ .PadLeft(4, '0');
+ OneCode = dt2.Rows[0]["OneBarCode"].ToString().Trim();
+ NewOneCode = OneCode.Substring(0, OneCode.Length - 4) + (Convert.ToInt32(OneCode.Substring(OneCode.Length - 4, 4)) + 1).ToString().PadLeft(4, '0');
+ }
+ else
+ {
+ //按照二维码的生成规则
+ newcode = dt.Rows[0]["PartNo"].ToString().Trim() + "." + Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) + Program.ProductDate.Substring(8, 2) + "." + "0001";
+ NewOneCode = dt.Rows[0]["StockNo"].ToString().Trim() + Program.ProductDate.Substring(2, 2) + Program.ProductDate.Substring(5, 2) + Program.ProductDate.Substring(8, 2) + "0001";
+ }
+ //dt2.Dispose();
+ //插入tb_barcode表记录
+
+ part = newcode.Split('.');
+ md.ID = Guid.NewGuid().ToString();
+ md.StationID = dt.Rows[0]["StationID"].ToString();
+ md.OneBarCode = NewOneCode;
+ md.BarCode = newcode;
+ md.StockNo = dt.Rows[0]["StockNo"].ToString();
+ md.PrintType = 0;
+ md.PlanID = planID;
+ md.BatchNo = textBox1.Text;
+
+ DataTable pdt = productBll.SearchIsImportByStockNo(NewOneCode.Substring(0, 10));
+ if (pdt != null && pdt.Rows.Count > 0)
+ {
+ if (pdt.Rows[0]["isImport"].ToString() == "1")
+ {
+ md.Import = "国产料Kingfa";
+ }
+ else
+ {
+ md.Import = "";
+ }
+ }
+ if (Barbll.Add_Info(md))
+ {
+ #region 打印条码
+
+ filename = @"D:\111 - 副本.grf";
+ DataTable headTable = new DataTable();
+ headTable.Columns.Add("StationNo");
+ headTable.Columns.Add("OneBarCode");
+ headTable.Columns.Add("BarCode");
+ headTable.Columns.Add("ProductName");
+ headTable.Columns.Add("IsImport");
+ DataRow row = headTable.NewRow();
+ row["StationNo"] = Program.station;
+
+ row["OneBarCode"] = NewOneCode;
+ row["BarCode"] = newcode;
+ row["ProductName"] = dt.Rows[0]["ProductName"];
+ row["IsImport"] = md.Import;
+ reportName = ConfigurationManager.AppSettings["Printer1"];
+ headTable.Rows.Add(row);
+
+ ReportHelper rp = new ReportHelper(filename, headTable, null,
+ (int)GRPaperOrientation.grpoDefault, 1, reportName);
+ rp.Report.Print(false);
+
+ #endregion
+
+ LogHelper.WriteLog("打印时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ";" + NewOneCode);
+
+ Barbll.Update_Info(md);
+ }
+ else
+ {
+ MessageBox.Show("连接数据库超时!");
+ timer1.Interval = Program.interVal;
+ timer1.Start();
+ return;
+ }
+
+ #endregion
+ }
+ }
+
+ #endregion
+ oldTime = newTime;
+ }
+ }
+ }
+
+ initBarCode();
+
+ }
+ else
+ {
+ MessageBox.Show("连接称重仪失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ timer1.Interval = Program.interVal;
+ timer1.Start();
+ }
+ }
+ else
+ {
+ MessageBox.Show("连接称重仪失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ timer1.Interval = Program.interVal;
+ timer1.Start();
+ }
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ MessageBox.Show(ex.ToString(), "提示", MessageBoxButtons.OK);
+
+ //MessageBox.Show("数据库连接失败!", "提示", MessageBoxButtons.OK);
+ timer1.Interval = Program.interVal;
+ timer1.Start();
+
+ }
+ timer1.Interval = Program.interVal;
+ timer1.Start();
+ }
+
+
+ private void label12_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (label12.Text == "暂停打印")
+ {
+ DialogResult result = MessageBox.Show("确认暂停打印?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
+ if (result == DialogResult.OK)
+ {
+ timer1.Stop();
+ IsStart = false;
+ label12.Text = "开始打印";
+ label12.BackColor = System.Drawing.Color.Gray;
+ }
+ else
+ {
+ return;
+ }
+ }
+
+ else
+ {
+ DialogResult result = MessageBox.Show("确认开始打印?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
+ if (result == DialogResult.OK)
+ {
+ IsStart = true;
+ timer1.Start();
+ label12.Text = "暂停打印";
+ label12.BackColor = System.Drawing.Color.DeepSkyBlue;
+ }
+ else
+ {
+ return;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ }
+ }
+
+ ///
+ /// 手工打印
+ ///
+ ///
+ ///
+ private void label19_Click(object sender, EventArgs e)
+ {
+ string code = "",stationID="",OneCode="";
+ string newcode = "", partNo = "", stockNo = "", NewOneCode = "", filename = "", reportName = "", ProductName="";
+
+ try
+ {
+ #region 数据合法性判断
+
+ if (comboBox2.Text.Trim() == "")
+ {
+ MessageBox.Show("请选择产品!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ return;
+ }
+
+ if (textBox1.Text.Trim() == "")
+ {
+ MessageBox.Show("请输入批次!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ return;
+ }
+
+ if (textBox1.Text.Trim().Length != 6)
+ {
+ MessageBox.Show("批次格式不正确!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ return;
+ }
+
+ if (textBox2.Text.Trim() == "")
+ {
+ MessageBox.Show("请输入数量!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ return;
+ }
+ if (!IsNumeric(textBox2.Text.Trim()))
+ {
+ MessageBox.Show("数量格式不正确!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ return;
+ }
+
+ if (Convert.ToInt32(textBox2.Text.Trim()) > 10)
+ {
+ MessageBox.Show("数量不能大于10!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ return;
+ }
+
+ #endregion
+
+ #region 获取工位编号
+
+ StationBLL sbll = new StationBLL();
+ DataTable sdt = sbll.SearchInfoByNo(Program.station);
+ if (sdt != null && sdt.Rows.Count > 0)
+ {
+ stationID = sdt.Rows[0]["StationID"].ToString();
+ }
+ sdt.Dispose();
+ #endregion
+
+ DialogResult result = MessageBox.Show("确定手工打印条码?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
+ if (result == DialogResult.OK)
+ {
+ #region 生成条码
+
+ ProductBLL pbll = new ProductBLL();
+
+ //查询零件号
+ DataTable pdt = pbll.SearchInfoByName(comboBox2.Text, "2000");
+ if (pdt != null && pdt.Rows.Count > 0)
+ {
+ partNo = pdt.Rows[0]["PartNo"].ToString().Trim();
+ stockNo = pdt.Rows[0]["StockNo"].ToString().Trim();
+ //ProductName = pdt.Rows[0]["ProductName"].ToString().Trim();
+ }
+
+ pdt.Dispose();
+
+ //根据零件号、批次号查找
+
+ BarCodeBLL bll = new BarCodeBLL();
+ BarCodeModel md = new BarCodeModel();
+
+ DataTable dt = bll.SearchSerialNoByBarCode(stockNo, textBox1.Text.Trim());
+ if (dt != null && dt.Rows.Count > 0)
+ {
+ OneCode = dt.Rows[0]["OneBarCode"].ToString().Trim();
+ code = dt.Rows[0]["BarCode"].ToString().TrimEnd();
+ for (int i = 1; i <= Convert.ToInt32(textBox2.Text.Trim()); i++)
+ {
+ newcode = code.Substring(0, code.Length - 4) +
+ (Convert.ToInt32(code.Substring(code.Length - 4, 4)) + i)
+ .ToString()
+ .PadLeft(4, '0');
+ NewOneCode = OneCode.Substring(0, OneCode.Length - 4) +
+ (Convert.ToInt32(OneCode.Substring(OneCode.Length - 4, 4)) + i).ToString()
+ .PadLeft(4, '0');
+ string[] part = newcode.Split('.');
+ //存入tb_BarCode表
+ md.ID = Guid.NewGuid().ToString();
+ md.StationID = stationID;
+ md.OneBarCode = NewOneCode;
+ md.BarCode = newcode;
+
+ md.StockNo = stockNo;
+ md.PrintType = 1;
+ md.BatchNo=textBox1.Text.Trim();
+
+ DataTable pdt1 = pbll.SearchIsImportByStockNo(NewOneCode.Substring(0, 10));
+ if (pdt1 != null && pdt1.Rows.Count > 0)
+ {
+ if (pdt1.Rows[0]["isImport"].ToString() == "1")
+ {
+ md.Import = "国产料Kingfa";
+ }
+ else
+ {
+ md.Import = "";
+ }
+ }
+
+ if ( bll.Add_Info(md))
+ {
+ #region 打印条码
+
+ filename = @"D:\111 - 副本.grf";
+ DataTable headTable = new DataTable();
+ headTable.Columns.Add("StationNo");
+ headTable.Columns.Add("OneBarCode");
+ headTable.Columns.Add("BarCode");
+ headTable.Columns.Add("ProductName");
+ headTable.Columns.Add("IsImport");
+ DataRow row = headTable.NewRow();
+ row["StationNo"] = Program.station;
+
+ row["OneBarCode"] = NewOneCode;
+ row["BarCode"] = newcode;
+ row["ProductName"] = comboBox2.Text;
+ row["IsImport"] = md.Import;
+ if (comboBox2.Text.Contains("右"))
+ {
+ reportName = ConfigurationManager.AppSettings["Printer2"];
+ }
+ else
+ {
+ reportName = ConfigurationManager.AppSettings["Printer1"];
+ }
+
+ headTable.Rows.Add(row);
+
+ ReportHelper rp = new ReportHelper(filename, headTable, null,
+ (int)GRPaperOrientation.grpoDefault, 1, reportName);
+ rp.Report.Print(false);
+
+ #endregion
+
+ LogHelper.WriteLog("打印时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ";" + NewOneCode);
+
+ bll.Update_Info(md);
+ }
+ else
+ {
+ MessageBox.Show("连接数据库超时!");
+ return;
+ }
+
+ #region 更新产量表、计划表
+
+ //ProductOfInjectionBLL InjectionBll = new ProductOfInjectionBLL();
+ //ProductOfInjectionModel pmd = new ProductOfInjectionModel();
+
+
+ //pmd.ID = Guid.NewGuid().ToString();
+ //pmd.StationID = md.StationID;
+ //pmd.ProductDate = Program.ProductDate;
+ //pmd.ClassName = Program.Shift;
+ //pmd.StockNo = md.StockNo;
+ //pmd.PartNo = part[0];
+ //pmd.ProductCount = 1;
+ //pmd.BadCount = 0;
+ //pmd.PlanID = planID;
+ //DataTable pdt1 = InjectionBll.SearchCountByInfo(md.StationID, Program.ProductDate, comboBox1.Text,
+ // md.StockNo, part[0]);
+
+ //if (pdt1 != null && pdt1.Rows.Count > 0)
+ //{
+ // //跟新
+ // InjectionBll.Update_Info(pmd);
+ //}
+ //else
+ //{
+
+ // //插入
+ // InjectionBll.Add_Info(pmd);
+ //}
+ //pdt1.Dispose();
+
+ #region 注释掉
+
+ //InjectionPlanBLL ibll = new InjectionPlanBLL();
+ //InjectionPlanModel imd = new InjectionPlanModel();
+
+ //imd.CompleteCount = 1;
+ //imd.StationID = md.StationID;
+ //imd.StockNo = md.StockNo;
+ //ibll.UpdateCount(imd);
+
+ #endregion
+
+ #endregion
+ }
+ }
+ else
+ {
+ for (int i = 1; i <= Convert.ToInt32(textBox2.Text.Trim()); i++)
+ {
+ newcode = partNo + "." + textBox1.Text.Trim() + "." + i.ToString().PadLeft(4, '0');
+ NewOneCode = stockNo + textBox1.Text.Trim() + i.ToString().PadLeft(4, '0');
+ string[] part = newcode.Split('.');
+ //存入tb_BarCode表
+ md.ID = Guid.NewGuid().ToString();
+ md.StationID = stationID;
+ md.StockNo = stockNo;
+ md.OneBarCode = NewOneCode;
+ md.BarCode = newcode;
+ md.PrintType = 1;
+ md.BatchNo = textBox1.Text;
+
+ DataTable pdt1 = pbll.SearchIsImportByStockNo(NewOneCode.Substring(0, 10));
+ if (pdt1 != null && pdt1.Rows.Count > 0)
+ {
+ if (pdt1.Rows[0]["isImport"].ToString() == "1")
+ {
+ md.Import = "国产料Kingfa";
+ }
+ else
+ {
+ md.Import = "";
+ }
+ }
+
+ if ( bll.Add_Info(md))
+ {
+ #region 打印条码
+
+ filename = @"D:\111 - 副本.grf";
+ DataTable headTable = new DataTable();
+ headTable.Columns.Add("StationNo");
+ headTable.Columns.Add("OneBarCode");
+ headTable.Columns.Add("BarCode");
+ headTable.Columns.Add("ProductName");
+ headTable.Columns.Add("IsImport");
+ DataRow row = headTable.NewRow();
+ row["StationNo"] = Program.station;
+
+ row["OneBarCode"] = NewOneCode;
+ row["BarCode"] = newcode;
+ row["ProductName"] = comboBox2.Text;
+ row["IsImport"] = md.Import;
+ if (comboBox2.Text.Contains("右"))
+ {
+ reportName = ConfigurationManager.AppSettings["Printer2"];
+ }
+ else
+ {
+ reportName = ConfigurationManager.AppSettings["Printer1"];
+ }
+
+ headTable.Rows.Add(row);
+
+ ReportHelper rp = new ReportHelper(filename, headTable, null,
+ (int)GRPaperOrientation.grpoDefault, 1, reportName);
+ rp.Report.Print(false);
+
+ #endregion
+
+ LogHelper.WriteLog("打印时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ";" + NewOneCode);
+
+ bll.Update_Info(md);
+ }
+ else
+ {
+ MessageBox.Show("连接数据库超时!");
+ return;
+ }
+
+ #region 更新产量表、计划表
+
+ //ProductOfInjectionBLL InjectionBll = new ProductOfInjectionBLL();
+ //ProductOfInjectionModel pmd = new ProductOfInjectionModel();
+
+ //pmd.ID = Guid.NewGuid().ToString();
+ //pmd.StationID = md.StationID;
+ //pmd.ProductDate = Program.ProductDate;
+ //pmd.ClassName = Program.Shift;
+ //pmd.StockNo = md.StockNo;
+ //pmd.PartNo = part[0];
+ //pmd.ProductCount = 1;
+ //pmd.BadCount = 0;
+ //pmd.PlanID = planID;
+ //DataTable pdt1 = InjectionBll.SearchCountByInfo(md.StationID, Program.ProductDate, comboBox1.Text,
+ // md.StockNo, part[0]);
+
+ //if (pdt1 != null && pdt1.Rows.Count > 0)
+ //{
+ // //跟新
+ // InjectionBll.Update_Info(pmd);
+ //}
+ //else
+ //{
+
+ // //插入
+ // InjectionBll.Add_Info(pmd);
+ //}
+ //pdt1.Dispose();
+
+ #region 注释掉
+
+ //InjectionPlanBLL ibll = new InjectionPlanBLL();
+ //InjectionPlanModel imd = new InjectionPlanModel();
+
+ //imd.CompleteCount = 1;
+ //imd.StationID = md.StationID;
+ //imd.StockNo = md.StockNo;
+ //ibll.UpdateCount(imd);
+
+ #endregion
+
+ #endregion
+
+ }
+ }
+
+ #endregion
+
+ initBarCode();
+ }
+ else
+ {
+ return;
+ }
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ }
+
+ }
+
+ private static bool IsNumeric(string str)
+ {
+ System.Text.RegularExpressions.Regex reg1 = new System.Text.RegularExpressions.Regex(@"^[0-9]\d*$");
+ return reg1.IsMatch(str);
+ }
+
+ ///
+ /// 补打条码
+ ///
+ ///
+ ///
+ private void label18_Click(object sender, EventArgs e)
+ {
+ textBox3.Text = "";
+ panel3.Visible = true;
+ }
+
+
+ public DateTime GetDateTime()
+ {
+ string sql = "";
+ DateTime time;
+ DataTable dt;
+ try
+ {
+ sql = @"select convert(char(23),getdate(),121) as time";
+
+ dt = SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0];
+ if (dt != null && dt.Rows.Count > 0)
+ {
+ //time = Convert.ToDateTime(dt.Rows[0]["time"].ToString());
+ time = DateTime.ParseExact(dt.Rows[0]["time"].ToString(), "yyyy-MM-dd HH:mm:ss.fff",
+ System.Globalization.CultureInfo.CurrentCulture);
+
+ }
+ else
+ {
+ time = DateTime.Now;
+ }
+ return time;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return DateTime.Now;
+ }
+ }
+
+ private void ReportInitialize()
+ {
+
+ }
+
+ private void ReportFetchRecord()
+ {
+
+ }
+
+ ///
+ /// 切换一下计划
+ ///
+ ///
+ ///
+ private void label13_Click(object sender, EventArgs e)
+ {
+ string stationID = "",nextPlan="";
+ InjectionPlanBLL bll = new InjectionPlanBLL();
+ InjectionPlanModel md = new InjectionPlanModel();
+
+ try
+ {
+ #region 获取下一计划
+
+ DataTable dt = bll.NextSearchInfoByName(Program.station);
+ if (dt != null && dt.Rows.Count > 1)
+ {
+ nextPlan = dt.Rows[1]["ProductName"].ToString();
+ }
+ else
+ {
+ nextPlan = "暂无下一计划,请联系计划员";
+ }
+
+ #endregion
+ DialogResult result = MessageBox.Show("确定切换下一计划:"+nextPlan, "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
+ if (result == DialogResult.OK)
+ {
+ #region 获取工位编号
+
+ StationBLL sbll = new StationBLL();
+ DataTable sdt = sbll.SearchInfoByNo(Program.station);
+ if (sdt != null && sdt.Rows.Count > 0)
+ {
+ stationID = sdt.Rows[0]["StationID"].ToString();
+ }
+ sdt.Dispose();
+
+ #endregion
+
+ #region 更新计划完成
+
+ md.StationID = stationID;
+ bll.UpdateFinish(md);
+
+ #endregion
+ MessageBox.Show("操作成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ }
+ else
+ {
+ MessageBox.Show("取消操作!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ return;
+ }
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ }
+
+
+ }
+
+ ///
+ /// 手动删除
+ ///
+ ///
+ ///
+ private void label20_Click(object sender, EventArgs e)
+ {
+ BarCodeBLL bll=new BarCodeBLL();
+ BarCodeModel md=new BarCodeModel();
+
+ try
+ {
+ if (glacialList1.SelectedItems.Count == 0)
+ {
+ MessageBox.Show("请选择要补打的条码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ return;
+ }
+ else
+ {
+ GlacialComponents.Controls.GLItem gv;
+ gv = glacialList1.SelectedItems[0] as GlacialComponents.Controls.GLItem;
+ md.BarCode = gv.Text;
+
+ bll.DelBarCode(md);
+ initBarCode();
+ }
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ }
+
+ }
+
+ private void label21_Click(object sender, EventArgs e)
+ {
+ Form fr=new FrmDown();
+ fr.Show();
+ //this.Hide();
+ }
+
+ private void label2_Click(object sender, EventArgs e)
+ {
+ Environment.Exit(0);
+ }
+
+ private void textBox2_Click(object sender, EventArgs e)
+ {
+ //Process.Start(@"C:\windows\system32\osk.exe");
+ ShowInputPanel();
+ }
+
+ private const Int32 WM_SYSCOMMAND = 274;
+
+ private const UInt32 SC_CLOSE = 61536;
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
+
+ private static extern bool PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
+
+ private static extern bool PostMessage(IntPtr hWnd, int Msg, uint wParam, uint lParam);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
+
+ private static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
+
+ private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
+
+ [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
+
+ private static extern int RegisterWindowMessage(string lpString);
+
+
+
+ //显示屏幕键盘
+
+ public static int ShowInputPanel()
+ {
+
+ try
+ {
+
+ dynamic file = "C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe";
+
+ if (!System.IO.File.Exists(file))
+
+ return -1;
+
+ Process.Start(file);
+
+ //return SetUnDock(); //不知SetUnDock()是什么,所以直接注释返回1
+
+ return 1;
+
+ }
+
+ catch (Exception)
+ {
+
+ return 255;
+
+ }
+
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ if (textBox3.Text.Trim() != ConfigurationManager.AppSettings["Psw"])
+ {
+ MessageBox.Show("密码不正确!", "提示", MessageBoxButtons.OK);
+ textBox3.SelectAll();
+ return;
+ }
+ else
+ {
+ panel3.Visible = false;
+ textBox3.Text = "";
+ string code = "",productName="", reportName="";
+ BarCodeModel md = new BarCodeModel();
+ BarCodeBLL bll = new BarCodeBLL();
+ ProductBLL pbll = new ProductBLL();
+ try
+ {
+ if (code_g=="")
+ {
+ MessageBox.Show("请选择要补打的条码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ return;
+ }
+ else
+ {
+ //GlacialComponents.Controls.GLItem gv;
+ //gv = glacialList1.SelectedItems[0] as GlacialComponents.Controls.GLItem;
+ //code = gv.Text;
+
+ DataTable dt = bll.SearchInfoByBarCode(code_g);
+ if (dt != null && dt.Rows.Count > 0)
+ {
+ md.ID = Guid.NewGuid().ToString();
+ md.BarCode = code_g;
+ md.StationID = dt.Rows[0]["StationID"].ToString();
+ md.StockNo = dt.Rows[0]["StockNo"].ToString();
+ md.OneBarCode = dt.Rows[0]["OneBarCode"].ToString();
+ md.PrintType = 2;
+ //md.CreateTime = GetDateTime();
+
+ DataTable pdt = pbll.SearchIsImportByStockNo(md.StockNo);
+ if (pdt != null && pdt.Rows.Count > 0)
+ {
+ productName = pdt.Rows[0]["ProductName"].ToString();
+ if (pdt.Rows[0]["isImport"].ToString() == "1")
+ {
+ md.Import = "国产料Kingfa";
+ }
+ else
+ {
+ md.Import = "";
+ }
+ }
+
+ }
+ dt.Dispose();
+ if (bll.Add_Info(md))
+ {
+ #region 打印条码
+
+ string filename = @"D:\111 - 副本.grf";
+ DataTable headTable = new DataTable();
+ headTable.Columns.Add("StationNo");
+ headTable.Columns.Add("OneBarCode");
+ headTable.Columns.Add("BarCode");
+ headTable.Columns.Add("ProductName");
+ headTable.Columns.Add("IsImport");
+ DataRow row = headTable.NewRow();
+ row["StationNo"] = Program.station;
+ row["OneBarCode"] = md.OneBarCode;
+ row["BarCode"] = code_g;
+ row["ProductName"] = productName;
+ row["IsImport"] = md.Import;
+ if (productName.Contains("右"))
+ {
+ reportName = ConfigurationManager.AppSettings["Printer2"];
+ }
+ else
+ {
+ reportName = ConfigurationManager.AppSettings["Printer1"];
+ }
+
+ headTable.Rows.Add(row);
+
+ ReportHelper rp = new ReportHelper(filename, headTable, null,
+ (int)GRPaperOrientation.grpoDefault, 1, reportName);
+ rp.Report.Print(false);
+
+ #endregion
+
+ bll.Update_Info(md);
+ }
+ else
+ {
+ MessageBox.Show("连接数据库超时!");
+ return;
+ }
+
+ glacialList1.SelectedItems.Clear();
+ initBarCode();
+ }
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ }
+ }
+ }
+
+ private void button2_Click(object sender, EventArgs e)
+ {
+ textBox3.Text = "";
+ panel3.Visible = false;
+ }
+
+ private void textBox3_Click(object sender, EventArgs e)
+ {
+ ShowInputPanel();
+ }
+
+ private void glacialList1_Click(object sender, EventArgs e)
+ {
+ code_g = "";
+ if (glacialList1.SelectedItems.Count == 0)
+ {
+ code_g = "";
+ }
+ else
+ {
+ GlacialComponents.Controls.GLItem gv;
+ gv = glacialList1.SelectedItems[0] as GlacialComponents.Controls.GLItem;
+ code_g = gv.Text;
+ }
+ }
+
+ private void textBox3_KeyDown(object sender, KeyEventArgs e)
+ {
+
+ }
+
+ }
+}
diff --git a/BBMPTMes/InjectionPC/FrmBarCode.resx b/BBMPTMes/InjectionPC/FrmBarCode.resx
new file mode 100644
index 0000000..2648706
--- /dev/null
+++ b/BBMPTMes/InjectionPC/FrmBarCode.resx
@@ -0,0 +1,484 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+
+
+ 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
+ q22C8fY24wAAAABJRU5ErkJggg==
+
+
+
+ 17, 17
+
+
\ No newline at end of file
diff --git a/BBMPTMes/InjectionPC/FrmDown.Designer.cs b/BBMPTMes/InjectionPC/FrmDown.Designer.cs
new file mode 100644
index 0000000..be26395
--- /dev/null
+++ b/BBMPTMes/InjectionPC/FrmDown.Designer.cs
@@ -0,0 +1,435 @@
+namespace InjectionPC
+{
+ partial class FrmDown
+ {
+ ///
+ /// 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()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmDown));
+ this.panel1 = new System.Windows.Forms.Panel();
+ this.label2 = new System.Windows.Forms.Label();
+ this.pictureBox1 = new System.Windows.Forms.PictureBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label8 = new System.Windows.Forms.Label();
+ this.label7 = new System.Windows.Forms.Label();
+ this.label6 = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.comboBox1 = new System.Windows.Forms.ComboBox();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.label9 = new System.Windows.Forms.Label();
+ this.label22 = new System.Windows.Forms.Label();
+ this.label21 = new System.Windows.Forms.Label();
+ this.label20 = new System.Windows.Forms.Label();
+ this.label10 = new System.Windows.Forms.Label();
+ this.label11 = new System.Windows.Forms.Label();
+ this.label12 = new System.Windows.Forms.Label();
+ this.label13 = new System.Windows.Forms.Label();
+ this.label14 = new System.Windows.Forms.Label();
+ this.label15 = new System.Windows.Forms.Label();
+ this.label16 = new System.Windows.Forms.Label();
+ this.panel2 = new System.Windows.Forms.Panel();
+ this.panel3 = new System.Windows.Forms.Panel();
+ this.button1 = new System.Windows.Forms.Button();
+ this.textBox1 = new System.Windows.Forms.TextBox();
+ this.panel1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+ this.panel3.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // panel1
+ //
+ this.panel1.Controls.Add(this.label2);
+ this.panel1.Controls.Add(this.pictureBox1);
+ this.panel1.Controls.Add(this.label1);
+ this.panel1.Location = new System.Drawing.Point(3, 3);
+ this.panel1.Name = "panel1";
+ this.panel1.Size = new System.Drawing.Size(1276, 91);
+ this.panel1.TabIndex = 18;
+ //
+ // label2
+ //
+ this.label2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label2.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label2.Location = new System.Drawing.Point(1087, 4);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(187, 84);
+ this.label2.TabIndex = 3;
+ this.label2.Text = "2019-05-29 10:30:31";
+ this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.label2.Click += new System.EventHandler(this.label2_Click);
+ //
+ // pictureBox1
+ //
+ this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
+ this.pictureBox1.Location = new System.Drawing.Point(4, 4);
+ this.pictureBox1.Name = "pictureBox1";
+ this.pictureBox1.Size = new System.Drawing.Size(169, 84);
+ this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pictureBox1.TabIndex = 2;
+ this.pictureBox1.TabStop = false;
+ //
+ // label1
+ //
+ this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label1.Font = new System.Drawing.Font("宋体", 28F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label1.Location = new System.Drawing.Point(172, 4);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(917, 84);
+ this.label1.TabIndex = 1;
+ this.label1.Text = "注塑车间质量信息录入";
+ this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // label8
+ //
+ this.label8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label8.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label8.Location = new System.Drawing.Point(806, 90);
+ this.label8.Name = "label8";
+ this.label8.Size = new System.Drawing.Size(184, 52);
+ this.label8.TabIndex = 32;
+ this.label8.Text = "cy";
+ this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // label7
+ //
+ this.label7.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label7.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label7.Location = new System.Drawing.Point(700, 90);
+ this.label7.Name = "label7";
+ this.label7.Size = new System.Drawing.Size(110, 52);
+ this.label7.TabIndex = 31;
+ this.label7.Text = "用户:";
+ this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label6
+ //
+ this.label6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label6.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label6.Location = new System.Drawing.Point(545, 91);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(155, 52);
+ this.label6.TabIndex = 30;
+ this.label6.Text = "IM01";
+ this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // label5
+ //
+ this.label5.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label5.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label5.Location = new System.Drawing.Point(436, 91);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(110, 52);
+ this.label5.TabIndex = 29;
+ this.label5.Text = "工位:";
+ this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // comboBox1
+ //
+ this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.comboBox1.Font = new System.Drawing.Font("宋体", 32F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.comboBox1.FormattingEnabled = true;
+ this.comboBox1.Items.AddRange(new object[] {
+ "A班",
+ "B班"});
+ this.comboBox1.Location = new System.Drawing.Point(284, 91);
+ this.comboBox1.Name = "comboBox1";
+ this.comboBox1.Size = new System.Drawing.Size(152, 51);
+ this.comboBox1.TabIndex = 28;
+ //
+ // label4
+ //
+ this.label4.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label4.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label4.Location = new System.Drawing.Point(175, 91);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(110, 52);
+ this.label4.TabIndex = 27;
+ this.label4.Text = "班组:";
+ this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label3
+ //
+ this.label3.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label3.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label3.Location = new System.Drawing.Point(7, 91);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(169, 52);
+ this.label3.TabIndex = 26;
+ this.label3.Text = "用户信息:";
+ this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label9
+ //
+ this.label9.BackColor = System.Drawing.Color.SpringGreen;
+ this.label9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label9.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label9.Location = new System.Drawing.Point(990, 90);
+ this.label9.Name = "label9";
+ this.label9.Size = new System.Drawing.Size(289, 52);
+ this.label9.TabIndex = 33;
+ this.label9.Text = "切换到:条码打印";
+ this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.label9.Click += new System.EventHandler(this.label9_Click);
+ //
+ // label22
+ //
+ this.label22.BackColor = System.Drawing.SystemColors.Control;
+ this.label22.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label22.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label22.Location = new System.Drawing.Point(545, 142);
+ this.label22.Name = "label22";
+ this.label22.Size = new System.Drawing.Size(445, 52);
+ this.label22.TabIndex = 39;
+ this.label22.Text = "停机";
+ this.label22.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.label22.Click += new System.EventHandler(this.label22_Click);
+ //
+ // label21
+ //
+ this.label21.BackColor = System.Drawing.Color.SpringGreen;
+ this.label21.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label21.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label21.Location = new System.Drawing.Point(175, 142);
+ this.label21.Name = "label21";
+ this.label21.Size = new System.Drawing.Size(371, 52);
+ this.label21.TabIndex = 38;
+ this.label21.Text = "开机";
+ this.label21.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.label21.Click += new System.EventHandler(this.label21_Click);
+ //
+ // label20
+ //
+ this.label20.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label20.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label20.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label20.Location = new System.Drawing.Point(7, 142);
+ this.label20.Name = "label20";
+ this.label20.Size = new System.Drawing.Size(169, 52);
+ this.label20.TabIndex = 37;
+ this.label20.Text = "当前状态:";
+ this.label20.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label10
+ //
+ this.label10.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label10.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label10.Location = new System.Drawing.Point(7, 193);
+ this.label10.Name = "label10";
+ this.label10.Size = new System.Drawing.Size(169, 52);
+ this.label10.TabIndex = 40;
+ this.label10.Text = "设备状态:";
+ this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label11
+ //
+ this.label11.BackColor = System.Drawing.Color.SpringGreen;
+ this.label11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label11.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label11.Location = new System.Drawing.Point(175, 193);
+ this.label11.Name = "label11";
+ this.label11.Size = new System.Drawing.Size(261, 52);
+ this.label11.TabIndex = 41;
+ this.label11.Text = "开机运行";
+ this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.label11.Click += new System.EventHandler(this.label11_Click);
+ //
+ // label12
+ //
+ this.label12.BackColor = System.Drawing.SystemColors.Control;
+ this.label12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label12.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label12.Location = new System.Drawing.Point(435, 193);
+ this.label12.Name = "label12";
+ this.label12.Size = new System.Drawing.Size(261, 52);
+ this.label12.TabIndex = 42;
+ this.label12.Text = "开始换模";
+ this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.label12.Click += new System.EventHandler(this.label12_Click);
+ //
+ // label13
+ //
+ this.label13.BackColor = System.Drawing.SystemColors.Control;
+ this.label13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label13.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label13.Location = new System.Drawing.Point(695, 193);
+ this.label13.Name = "label13";
+ this.label13.Size = new System.Drawing.Size(261, 52);
+ this.label13.TabIndex = 43;
+ this.label13.Text = "计划停机";
+ this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.label13.Click += new System.EventHandler(this.label13_Click);
+ //
+ // label14
+ //
+ this.label14.BackColor = System.Drawing.SystemColors.Control;
+ this.label14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label14.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label14.Location = new System.Drawing.Point(953, 193);
+ this.label14.Name = "label14";
+ this.label14.Size = new System.Drawing.Size(261, 52);
+ this.label14.TabIndex = 44;
+ this.label14.Text = "故障停机";
+ this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.label14.Click += new System.EventHandler(this.label14_Click);
+ //
+ // label15
+ //
+ this.label15.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label15.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label15.Location = new System.Drawing.Point(7, 245);
+ this.label15.Name = "label15";
+ this.label15.Size = new System.Drawing.Size(169, 473);
+ this.label15.TabIndex = 45;
+ this.label15.Text = "停机原因:";
+ this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // label16
+ //
+ this.label16.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label16.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label16.Location = new System.Drawing.Point(7, 718);
+ this.label16.Name = "label16";
+ this.label16.Size = new System.Drawing.Size(169, 302);
+ this.label16.TabIndex = 46;
+ this.label16.Text = "备注:";
+ this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // panel2
+ //
+ this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.panel2.Location = new System.Drawing.Point(175, 245);
+ this.panel2.Name = "panel2";
+ this.panel2.Size = new System.Drawing.Size(1104, 473);
+ this.panel2.TabIndex = 47;
+ //
+ // panel3
+ //
+ this.panel3.Controls.Add(this.button1);
+ this.panel3.Controls.Add(this.textBox1);
+ this.panel3.Location = new System.Drawing.Point(175, 718);
+ this.panel3.Name = "panel3";
+ this.panel3.Size = new System.Drawing.Size(1104, 302);
+ this.panel3.TabIndex = 48;
+ //
+ // button1
+ //
+ this.button1.BackColor = System.Drawing.Color.SpringGreen;
+ this.button1.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button1.Location = new System.Drawing.Point(1027, 6);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(77, 296);
+ this.button1.TabIndex = 1;
+ this.button1.Text = "保存";
+ this.button1.UseVisualStyleBackColor = false;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // textBox1
+ //
+ this.textBox1.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.textBox1.Location = new System.Drawing.Point(3, 3);
+ this.textBox1.Multiline = true;
+ this.textBox1.Name = "textBox1";
+ this.textBox1.Size = new System.Drawing.Size(1018, 302);
+ this.textBox1.TabIndex = 0;
+ this.textBox1.Click += new System.EventHandler(this.textBox1_Click);
+ //
+ // FrmDown
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(1280, 1024);
+ this.Controls.Add(this.panel3);
+ this.Controls.Add(this.panel2);
+ this.Controls.Add(this.label16);
+ this.Controls.Add(this.label15);
+ this.Controls.Add(this.label14);
+ this.Controls.Add(this.label13);
+ this.Controls.Add(this.label12);
+ this.Controls.Add(this.label11);
+ this.Controls.Add(this.label10);
+ this.Controls.Add(this.label22);
+ this.Controls.Add(this.label21);
+ this.Controls.Add(this.label20);
+ this.Controls.Add(this.label8);
+ this.Controls.Add(this.label7);
+ this.Controls.Add(this.label6);
+ this.Controls.Add(this.label5);
+ this.Controls.Add(this.comboBox1);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.label9);
+ this.Controls.Add(this.panel1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+ this.Name = "FrmDown";
+ this.Text = "FrmDown";
+ this.Load += new System.EventHandler(this.FrmDown_Load);
+ this.panel1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+ this.panel3.ResumeLayout(false);
+ this.panel3.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Panel panel1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.PictureBox pictureBox1;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label8;
+ private System.Windows.Forms.Label label7;
+ private System.Windows.Forms.Label label6;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.ComboBox comboBox1;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label9;
+ private System.Windows.Forms.Label label22;
+ private System.Windows.Forms.Label label21;
+ private System.Windows.Forms.Label label20;
+ private System.Windows.Forms.Label label10;
+ private System.Windows.Forms.Label label11;
+ private System.Windows.Forms.Label label12;
+ private System.Windows.Forms.Label label13;
+ private System.Windows.Forms.Label label14;
+ private System.Windows.Forms.Label label15;
+ private System.Windows.Forms.Label label16;
+ private System.Windows.Forms.Panel panel2;
+ private System.Windows.Forms.Panel panel3;
+ private System.Windows.Forms.TextBox textBox1;
+ private System.Windows.Forms.Button button1;
+ }
+}
\ No newline at end of file
diff --git a/BBMPTMes/InjectionPC/FrmDown.cs b/BBMPTMes/InjectionPC/FrmDown.cs
new file mode 100644
index 0000000..bf07f24
--- /dev/null
+++ b/BBMPTMes/InjectionPC/FrmDown.cs
@@ -0,0 +1,343 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Diagnostics;
+using System.Drawing;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using MESClassLibrary.BLL.BasicInfo;
+using MESClassLibrary.Model;
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.BLL.Injection;
+
+namespace InjectionPC
+{
+ public partial class FrmDown : Form
+ {
+ private static string reason = "",downType="";
+ public FrmDown()
+ {
+ InitializeComponent();
+ }
+
+ private void label22_Click(object sender, EventArgs e)
+ {
+ label21.BackColor = System.Drawing.Color.Gray;
+ label22.BackColor = System.Drawing.Color.Chartreuse;
+ label11.BackColor = System.Drawing.Color.Gray;
+ }
+
+ void dLbRoom_Click(object sender, EventArgs e)
+ {
+ Label a = (Label)sender;
+
+ if (a.BackColor == Color.Transparent)
+ {
+ a.BackColor = Color.FromArgb(150, Color.Chartreuse);
+ reason += a.Text + ";";
+ }
+ else
+ {
+ reason = reason.Replace(a.Text + ";", "");
+ a.BackColor = Color.Transparent;
+ }
+ }
+
+ private void FrmDown_Load(object sender, EventArgs e)
+ {
+ Control.CheckForIllegalCrossThreadCalls = false;
+ label6.Text = Program.station;
+ label8.Text = Program.OperatorName;
+ comboBox1.Text = Program.Shift;
+ label13.BackColor = System.Drawing.Color.Gray;
+ label14.BackColor = System.Drawing.Color.Gray;
+ label12.BackColor = System.Drawing.Color.Gray;
+ label22.BackColor = System.Drawing.Color.Gray;
+ Thread t = new Thread(new ThreadStart(TimeGo));
+ t.Start();
+ }
+
+ private void TimeGo()
+ {
+ System.Timers.Timer timer = new System.Timers.Timer();
+ timer.Interval = 1000;
+ timer.Enabled = true;
+ timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick);
+ }
+
+ private void timer_Tick(object sender, EventArgs e)
+ {
+ label2.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+ Thread.Sleep(500);
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ string stationID="";
+ InjectionDownRecordBLL bll=new InjectionDownRecordBLL();
+ InjectionDownRecordModel md=new InjectionDownRecordModel();
+
+ #region 获取工位编号
+
+ StationBLL sbll=new StationBLL();
+ DataTable sdt = sbll.SearchInfoByNo(Program.station);
+ if (sdt != null && sdt.Rows.Count > 0)
+ {
+ stationID = sdt.Rows[0]["StationID"].ToString();
+ sdt.Dispose();
+ }
+
+ #endregion
+
+ if (downType == "")
+ {
+ MessageBox.Show("请选择停线类型!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ return;
+ }
+
+ if (reason == "")
+ {
+ MessageBox.Show("请选择停线原因!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ return;
+ }
+
+ if (reason != "")
+ {
+ //md.ID = Guid.NewGuid().ToString();
+ md.StationID = stationID;
+ md.DownType = downType;
+ md.DownReason = reason;
+ md.Des = textBox1.Text;
+ //md.StartTime = DateTime.Now;
+
+ bool flag=bll.UpdateInfo(md);
+ if (flag == true)
+ {
+ MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ }
+ else
+ {
+ MessageBox.Show("保存失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ return;
+ }
+
+ reason = "";
+ downType = "";
+ }
+ }
+
+ private void label12_Click(object sender, EventArgs e)
+ {
+ label11.BackColor = System.Drawing.Color.Gray;
+ label12.BackColor = System.Drawing.Color.Chartreuse;
+ label13.BackColor = System.Drawing.Color.Gray;
+ label14.BackColor = System.Drawing.Color.Gray;
+ downType = label12.Text;
+ panel2.Visible = false;
+ }
+
+ private void label13_Click(object sender, EventArgs e)
+ {
+ label11.BackColor = System.Drawing.Color.Gray;
+ label12.BackColor = System.Drawing.Color.Gray;
+ label13.BackColor = System.Drawing.Color.Chartreuse;
+ label14.BackColor = System.Drawing.Color.Gray;
+ panel2.Visible = true;
+ downType = label13.Text;
+
+ DownReasonBLL bll = new DownReasonBLL();
+
+ int drow = 0, dcol = 4;
+
+ DataTable dt = bll.SearchReason();
+ if (dt != null && dt.Rows.Count > 0)
+ {
+ drow = Convert.ToInt32(Math.Ceiling((double)dt.Rows.Count / dcol));
+ Label[] dLb = new Label[7];
+ string[] dstr = new string[dt.Rows.Count];
+
+
+ for (int i = 0; i < dt.Rows.Count; i++)
+ {
+ dstr[i] = dt.Rows[i]["Reason"].ToString();
+ }
+
+ for (int i = 0; i < dcol; i++) //列
+ {
+ for (int j = 0; j < drow; j++) //行
+ {
+ dLb[i] = new Label();
+ if ((i + dcol * j) < dstr.Length)
+ {
+ dLb[i].Text = dstr[i + dcol * j].ToString();
+ dLb[i].Font = new Font(dLb[i].Font.FontFamily, 20, FontStyle.Bold);
+
+ dLb[i].Size = new Size(250, 50);
+ dLb[i].Location = new Point(20 + i * (dLb[i].Size.Width + 25),
+ 5 + j * (dLb[i].Size.Height + 20));
+ dLb[i].BorderStyle = BorderStyle.FixedSingle;
+ dLb[i].BackColor = Color.Transparent;
+ dLb[i].TextAlign = ContentAlignment.MiddleCenter;
+ panel2.Controls.Add(dLb[i]);
+ dLb[i].Click += new EventHandler(dLbRoom_Click);
+ }
+ }
+ }
+ dt.Dispose();
+ }
+ }
+
+ private void label14_Click(object sender, EventArgs e)
+ {
+ label11.BackColor = System.Drawing.Color.Gray;
+ label12.BackColor = System.Drawing.Color.Gray;
+ label13.BackColor = System.Drawing.Color.Gray;
+ label14.BackColor = System.Drawing.Color.Chartreuse;
+ downType = label14.Text;
+ panel2.Visible = true;
+ DownReasonBLL bll = new DownReasonBLL();
+
+ int drow = 0, dcol = 4;
+
+ DataTable dt = bll.SearchReason();
+ if (dt != null && dt.Rows.Count > 0)
+ {
+ drow = Convert.ToInt32(Math.Ceiling((double)dt.Rows.Count / dcol));
+ Label[] dLb = new Label[7];
+ string[] dstr = new string[dt.Rows.Count];
+
+
+ for (int i = 0; i < dt.Rows.Count; i++)
+ {
+ dstr[i] = dt.Rows[i]["Reason"].ToString();
+ }
+
+ for (int i = 0; i < dcol; i++) //列
+ {
+ for (int j = 0; j < drow; j++) //行
+ {
+ dLb[i] = new Label();
+ if ((i + dcol * j) < dstr.Length)
+ {
+ dLb[i].Text = dstr[i + dcol * j].ToString();
+ dLb[i].Font = new Font(dLb[i].Font.FontFamily, 20, FontStyle.Bold);
+
+ dLb[i].Size = new Size(250, 50);
+ dLb[i].Location = new Point(20 + i * (dLb[i].Size.Width + 25),
+ 5 + j * (dLb[i].Size.Height + 20));
+ dLb[i].BorderStyle = BorderStyle.FixedSingle;
+ dLb[i].BackColor = Color.Transparent;
+ dLb[i].TextAlign = ContentAlignment.MiddleCenter;
+ panel2.Controls.Add(dLb[i]);
+ dLb[i].Click += new EventHandler(dLbRoom_Click);
+ }
+ }
+ }
+ dt.Dispose();
+ }
+ }
+
+ private void label21_Click(object sender, EventArgs e)
+ {
+ label22.BackColor = System.Drawing.Color.Gray;
+ label21.BackColor = System.Drawing.Color.Chartreuse;
+ label11.BackColor = System.Drawing.Color.Chartreuse;
+ label12.BackColor = System.Drawing.Color.Gray;
+ label13.BackColor = System.Drawing.Color.Gray;
+ label14.BackColor = System.Drawing.Color.Gray;
+ }
+
+ private void label11_Click(object sender, EventArgs e)
+ {
+ label11.BackColor = System.Drawing.Color.Chartreuse;
+ label12.BackColor = System.Drawing.Color.Gray;
+ label13.BackColor = System.Drawing.Color.Gray;
+ label14.BackColor = System.Drawing.Color.Gray;
+ }
+
+ private void label9_Click(object sender, EventArgs e)
+ {
+ this.Close();
+ }
+ protected override void OnVisibleChanged(EventArgs e)
+ {
+ base.OnVisibleChanged(e);
+ if (!IsHandleCreated)
+ {
+ this.Close();
+ }
+ }
+ private void textBox1_Click(object sender, EventArgs e)
+ {
+ ShowInputPanel();
+ }
+
+ private const Int32 WM_SYSCOMMAND = 274;
+
+ private const UInt32 SC_CLOSE = 61536;
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
+
+ private static extern bool PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
+
+ private static extern bool PostMessage(IntPtr hWnd, int Msg, uint wParam, uint lParam);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
+
+ private static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
+
+ private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
+
+ [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
+
+ private static extern int RegisterWindowMessage(string lpString);
+
+
+
+ //显示屏幕键盘
+
+ public static int ShowInputPanel()
+ {
+
+ try
+ {
+
+ dynamic file = "C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe";
+
+ if (!System.IO.File.Exists(file))
+
+ return -1;
+
+ Process.Start(file);
+
+ //return SetUnDock(); //不知SetUnDock()是什么,所以直接注释返回1
+
+ return 1;
+
+ }
+
+ catch (Exception)
+ {
+
+ return 255;
+
+ }
+
+ }
+
+ private void label2_Click(object sender, EventArgs e)
+ {
+ Environment.Exit(0);
+ }
+
+ }
+}
diff --git a/BBMPTMes/InjectionPC/FrmDown.resx b/BBMPTMes/InjectionPC/FrmDown.resx
new file mode 100644
index 0000000..19d2003
--- /dev/null
+++ b/BBMPTMes/InjectionPC/FrmDown.resx
@@ -0,0 +1,481 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+
+
+ 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
+ q22C8fY24wAAAABJRU5ErkJggg==
+
+
+
\ No newline at end of file
diff --git a/BBMPTMes/InjectionPC/FrmLogin.Designer.cs b/BBMPTMes/InjectionPC/FrmLogin.Designer.cs
new file mode 100644
index 0000000..3aa7d71
--- /dev/null
+++ b/BBMPTMes/InjectionPC/FrmLogin.Designer.cs
@@ -0,0 +1,149 @@
+namespace InjectionPC
+{
+ partial class FrmLogin
+ {
+ ///
+ /// 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()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmLogin));
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.textBox1 = new System.Windows.Forms.TextBox();
+ this.textBox2 = new System.Windows.Forms.TextBox();
+ this.button1 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.pictureBox1 = new System.Windows.Forms.PictureBox();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+ this.SuspendLayout();
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label1.Location = new System.Drawing.Point(216, 194);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(66, 19);
+ this.label1.TabIndex = 0;
+ this.label1.Text = "用户名";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.BackColor = System.Drawing.Color.Transparent;
+ this.label2.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label2.Location = new System.Drawing.Point(216, 247);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(47, 19);
+ this.label2.TabIndex = 1;
+ this.label2.Text = "密码";
+ //
+ // textBox1
+ //
+ this.textBox1.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.textBox1.Location = new System.Drawing.Point(296, 185);
+ this.textBox1.Name = "textBox1";
+ this.textBox1.Size = new System.Drawing.Size(159, 29);
+ this.textBox1.TabIndex = 2;
+ this.textBox1.Click += new System.EventHandler(this.textBox1_Click);
+ //
+ // textBox2
+ //
+ this.textBox2.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.textBox2.Location = new System.Drawing.Point(296, 247);
+ this.textBox2.Name = "textBox2";
+ this.textBox2.PasswordChar = '*';
+ this.textBox2.Size = new System.Drawing.Size(159, 29);
+ this.textBox2.TabIndex = 3;
+ this.textBox2.Click += new System.EventHandler(this.textBox2_Click);
+ //
+ // button1
+ //
+ this.button1.BackColor = System.Drawing.Color.LightSkyBlue;
+ this.button1.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button1.Location = new System.Drawing.Point(231, 306);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(84, 38);
+ this.button1.TabIndex = 4;
+ this.button1.Text = "登陆";
+ this.button1.UseVisualStyleBackColor = false;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // button2
+ //
+ this.button2.BackColor = System.Drawing.Color.LightSkyBlue;
+ this.button2.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button2.Location = new System.Drawing.Point(387, 306);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(83, 38);
+ this.button2.TabIndex = 5;
+ this.button2.Text = "取消";
+ this.button2.UseVisualStyleBackColor = false;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // pictureBox1
+ //
+ this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
+ this.pictureBox1.Location = new System.Drawing.Point(0, 0);
+ this.pictureBox1.Name = "pictureBox1";
+ this.pictureBox1.Size = new System.Drawing.Size(703, 453);
+ this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pictureBox1.TabIndex = 6;
+ this.pictureBox1.TabStop = false;
+ this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click);
+ //
+ // FrmLogin
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(703, 453);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.textBox1);
+ this.Controls.Add(this.textBox2);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.button2);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.pictureBox1);
+ this.Name = "FrmLogin";
+ this.Text = "登录";
+ this.Load += new System.EventHandler(this.FrmLogin_Load);
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.TextBox textBox1;
+ private System.Windows.Forms.TextBox textBox2;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.PictureBox pictureBox1;
+ }
+}
\ No newline at end of file
diff --git a/BBMPTMes/InjectionPC/FrmLogin.cs b/BBMPTMes/InjectionPC/FrmLogin.cs
new file mode 100644
index 0000000..6b5b845
--- /dev/null
+++ b/BBMPTMes/InjectionPC/FrmLogin.cs
@@ -0,0 +1,211 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using System.Configuration;
+using System.Data.SqlClient;
+using System.Diagnostics;
+using System.Runtime.InteropServices;
+using MESClassLibrary.BLL.BasicInfo;
+using MESClassLibrary.Model;
+using MESClassLibrary.BLL.Log;
+
+namespace InjectionPC
+{
+ public partial class FrmLogin : Form
+ {
+ public FrmLogin()
+ {
+ InitializeComponent();
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ Program.station = ConfigurationManager.AppSettings["Station"].ToString();
+ Program.IP = ConfigurationManager.AppSettings["IP"].ToString();
+ Program.RemoteIP = ConfigurationManager.AppSettings["RemoteIP"].ToString();
+ Program.PicturePath = ConfigurationManager.AppSettings["PicturePath"].ToString();
+
+ Program.WeightFolder = ConfigurationManager.AppSettings["WeightFolder"].ToString();
+ Program.WeightFile = ConfigurationManager.AppSettings["WeightFile"].ToString();
+ Program.WeightUser = ConfigurationManager.AppSettings["WeightUser"].ToString();
+ Program.WeightPsw = ConfigurationManager.AppSettings["WeightPsw"].ToString();
+
+ Program.interVal = Convert.ToInt32(ConfigurationManager.AppSettings["InterVal"].ToString());
+ if (DateTime.Now.Hour >= 8 && DateTime.Now.Hour < 20)
+ {
+ Program.Shift = "A班";
+ Program.ProductDate = DateTime.Now.ToString("yyyy-MM-dd");
+ }
+ else
+ {
+ Program.Shift = "B班";
+ if (DateTime.Now.Hour >= 0 && DateTime.Now.Hour < 8)
+ {
+ Program.ProductDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
+ }
+ Program.ProductDate = DateTime.Now.ToString("yyyy-MM-dd");
+ }
+
+ OpenDb();
+ string stationID="";
+ #region 判断输入合法性
+ if(textBox1.Text.Trim()=="")
+ {
+ MessageBox.Show("用户名不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ textBox1.Focus();
+ return;
+ }
+
+ if (textBox2.Text.Trim() == "")
+ {
+ MessageBox.Show("密码不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ textBox1.Focus();
+ return;
+ }
+ #endregion
+
+ StationBLL sbll = new StationBLL();
+ DataTable sdt=sbll.SearchInfoByNo(Program.station);
+ if (sdt!=null && sdt.Rows.Count>0)
+ {
+ stationID=sdt.Rows[0]["StationID"].ToString();
+ }
+ sdt.Dispose();
+
+ Program.OperatorName = textBox1.Text.Trim();
+
+ OperatorBLL bll = new OperatorBLL();
+
+ DataTable dt=bll.SearchInfoByNameAndPsw(textBox1.Text.Trim(),stationID,textBox2.Text.Trim());
+ if (dt!=null && dt.Rows.Count >0)
+ {
+ this.Visible = false;
+ Form fr=new FrmBarCode();
+ fr.Show();
+
+ }
+ else
+ {
+
+ }
+ dt.Dispose();
+ }
+
+ private bool OpenDb()
+ {
+ bool OpenDb = false;
+
+ string value = ConfigurationManager.ConnectionStrings["SqlConnString"].ToString();
+ Program.DBConn = new SqlConnection(value);
+ if (Program.DBConn.State.ToString().ToUpper() == "OPEN") Program.DBConn.Close();
+ try
+ {
+ Program.DBConn.Open();
+ }
+ catch (Exception Err)
+ {
+ if (Err != null)
+ {
+ MessageBox.Show("数据库连接失败,请检查网络连接,并重新连接!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ return OpenDb;
+ }
+ }
+
+ OpenDb = true;
+ return OpenDb;
+ }
+
+ private void button2_Click(object sender, EventArgs e)
+ {
+ this.Close();
+ }
+
+ private void textBox1_Click(object sender, EventArgs e)
+ {
+ ShowInputPanel();
+ }
+
+ private const Int32 WM_SYSCOMMAND = 274;
+
+ private const UInt32 SC_CLOSE = 61536;
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
+
+ private static extern bool PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
+
+ private static extern bool PostMessage(IntPtr hWnd, int Msg, uint wParam, uint lParam);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
+
+ private static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
+
+ private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
+
+ [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
+
+ private static extern int RegisterWindowMessage(string lpString);
+
+
+
+ //显示屏幕键盘
+
+ public static int ShowInputPanel()
+ {
+
+ try
+ {
+
+ dynamic file = "C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe";
+
+ if (!System.IO.File.Exists(file))
+
+ return -1;
+
+ Process.Start(file);
+
+ //return SetUnDock(); //不知SetUnDock()是什么,所以直接注释返回1
+
+ return 1;
+
+ }
+
+ catch (Exception)
+ {
+
+ return 255;
+
+ }
+
+ }
+
+ private void textBox2_Click(object sender, EventArgs e)
+ {
+ ShowInputPanel();
+ }
+
+ private void FrmLogin_Load(object sender, EventArgs e)
+ {
+ var serverUrl = "http://10.60.101.10:8013/";
+ var updateXmlFileName = "InjectionUpdate.xml";
+ var updater = new AutoUpdater();
+ if (updater.CheckUpdateLoad(serverUrl, updateXmlFileName))
+ {
+ Environment.Exit(0);
+ }
+ }
+
+ private void pictureBox1_Click(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
diff --git a/BBMPTMes/InjectionPC/FrmLogin.resx b/BBMPTMes/InjectionPC/FrmLogin.resx
new file mode 100644
index 0000000..1e3c088
--- /dev/null
+++ b/BBMPTMes/InjectionPC/FrmLogin.resx
@@ -0,0 +1,713 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
\ No newline at end of file
diff --git a/BBMPTMes/InjectionPC/FrmQuality.Designer.cs b/BBMPTMes/InjectionPC/FrmQuality.Designer.cs
new file mode 100644
index 0000000..b00dc66
--- /dev/null
+++ b/BBMPTMes/InjectionPC/FrmQuality.Designer.cs
@@ -0,0 +1,403 @@
+namespace InjectionPC
+{
+ partial class FrmQuality
+ {
+ ///
+ /// 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.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmQuality));
+ this.timer1 = new System.Windows.Forms.Timer(this.components);
+ this.label11 = new System.Windows.Forms.Label();
+ this.label8 = new System.Windows.Forms.Label();
+ this.label7 = new System.Windows.Forms.Label();
+ this.label6 = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.comboBox1 = new System.Windows.Forms.ComboBox();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.pictureBox1 = new System.Windows.Forms.PictureBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label10 = new System.Windows.Forms.Label();
+ this.label9 = new System.Windows.Forms.Label();
+ this.panel1 = new System.Windows.Forms.Panel();
+ this.label20 = new System.Windows.Forms.Label();
+ this.label21 = new System.Windows.Forms.Label();
+ this.label22 = new System.Windows.Forms.Label();
+ this.label23 = new System.Windows.Forms.Label();
+ this.textBox3 = new System.Windows.Forms.TextBox();
+ this.label24 = new System.Windows.Forms.Label();
+ this.textBox4 = new System.Windows.Forms.TextBox();
+ this.pictureBox2 = new System.Windows.Forms.PictureBox();
+ this.panel2 = new System.Windows.Forms.Panel();
+ this.button1 = new System.Windows.Forms.Button();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+ this.panel1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
+ this.SuspendLayout();
+ //
+ // timer1
+ //
+ this.timer1.Interval = 1000;
+ //
+ // label11
+ //
+ this.label11.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label11.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label11.Location = new System.Drawing.Point(10, 595);
+ this.label11.Name = "label11";
+ this.label11.Size = new System.Drawing.Size(169, 420);
+ this.label11.TabIndex = 28;
+ this.label11.Text = "缺陷原因:";
+ this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label8
+ //
+ this.label8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label8.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label8.Location = new System.Drawing.Point(809, 92);
+ this.label8.Name = "label8";
+ this.label8.Size = new System.Drawing.Size(184, 52);
+ this.label8.TabIndex = 24;
+ this.label8.Text = "cy";
+ this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // label7
+ //
+ this.label7.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label7.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label7.Location = new System.Drawing.Point(703, 92);
+ this.label7.Name = "label7";
+ this.label7.Size = new System.Drawing.Size(110, 52);
+ this.label7.TabIndex = 23;
+ this.label7.Text = "用户:";
+ this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label6
+ //
+ this.label6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label6.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label6.Location = new System.Drawing.Point(548, 93);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(155, 52);
+ this.label6.TabIndex = 22;
+ this.label6.Text = "IM01";
+ this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // label5
+ //
+ this.label5.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label5.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label5.Location = new System.Drawing.Point(439, 93);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(110, 52);
+ this.label5.TabIndex = 21;
+ this.label5.Text = "工位:";
+ this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // comboBox1
+ //
+ this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.comboBox1.Font = new System.Drawing.Font("宋体", 32F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.comboBox1.FormattingEnabled = true;
+ this.comboBox1.Items.AddRange(new object[] {
+ "A班",
+ "B班"});
+ this.comboBox1.Location = new System.Drawing.Point(287, 93);
+ this.comboBox1.Name = "comboBox1";
+ this.comboBox1.Size = new System.Drawing.Size(152, 51);
+ this.comboBox1.TabIndex = 20;
+ //
+ // label4
+ //
+ this.label4.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label4.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label4.Location = new System.Drawing.Point(178, 93);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(110, 52);
+ this.label4.TabIndex = 19;
+ this.label4.Text = "班组:";
+ this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label3
+ //
+ this.label3.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label3.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label3.Location = new System.Drawing.Point(10, 93);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(169, 52);
+ this.label3.TabIndex = 18;
+ this.label3.Text = "用户信息:";
+ this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label2
+ //
+ this.label2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label2.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label2.Location = new System.Drawing.Point(1080, 4);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(187, 84);
+ this.label2.TabIndex = 3;
+ this.label2.Text = "2019-05-29 10:30:31";
+ this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.label2.Click += new System.EventHandler(this.label2_Click);
+ //
+ // pictureBox1
+ //
+ this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
+ this.pictureBox1.Location = new System.Drawing.Point(4, 4);
+ this.pictureBox1.Name = "pictureBox1";
+ this.pictureBox1.Size = new System.Drawing.Size(169, 84);
+ this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pictureBox1.TabIndex = 2;
+ this.pictureBox1.TabStop = false;
+ //
+ // label1
+ //
+ this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label1.Font = new System.Drawing.Font("宋体", 28F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label1.Location = new System.Drawing.Point(172, 4);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(911, 84);
+ this.label1.TabIndex = 1;
+ this.label1.Text = "注塑车间质量信息录入";
+ this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // label10
+ //
+ this.label10.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label10.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label10.Location = new System.Drawing.Point(10, 246);
+ this.label10.Name = "label10";
+ this.label10.Size = new System.Drawing.Size(169, 350);
+ this.label10.TabIndex = 26;
+ this.label10.Text = "产品展示:";
+ this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // label9
+ //
+ this.label9.BackColor = System.Drawing.Color.SpringGreen;
+ this.label9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label9.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label9.Location = new System.Drawing.Point(993, 92);
+ this.label9.Name = "label9";
+ this.label9.Size = new System.Drawing.Size(282, 52);
+ this.label9.TabIndex = 25;
+ this.label9.Text = "切换到:条码打印";
+ this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.label9.Click += new System.EventHandler(this.label9_Click);
+ //
+ // panel1
+ //
+ this.panel1.Controls.Add(this.label2);
+ this.panel1.Controls.Add(this.pictureBox1);
+ this.panel1.Controls.Add(this.label1);
+ this.panel1.Location = new System.Drawing.Point(6, 5);
+ this.panel1.Name = "panel1";
+ this.panel1.Size = new System.Drawing.Size(1269, 91);
+ this.panel1.TabIndex = 17;
+ //
+ // label20
+ //
+ this.label20.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label20.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label20.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label20.Location = new System.Drawing.Point(10, 144);
+ this.label20.Name = "label20";
+ this.label20.Size = new System.Drawing.Size(169, 52);
+ this.label20.TabIndex = 34;
+ this.label20.Text = "功能选择:";
+ this.label20.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // label21
+ //
+ this.label21.BackColor = System.Drawing.Color.SpringGreen;
+ this.label21.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label21.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label21.Location = new System.Drawing.Point(178, 144);
+ this.label21.Name = "label21";
+ this.label21.Size = new System.Drawing.Size(261, 52);
+ this.label21.TabIndex = 35;
+ this.label21.Text = "量产";
+ this.label21.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // label22
+ //
+ this.label22.BackColor = System.Drawing.SystemColors.Control;
+ this.label22.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label22.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label22.Location = new System.Drawing.Point(439, 145);
+ this.label22.Name = "label22";
+ this.label22.Size = new System.Drawing.Size(264, 52);
+ this.label22.TabIndex = 36;
+ this.label22.Text = "量产前调试";
+ this.label22.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // label23
+ //
+ this.label23.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label23.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label23.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label23.Location = new System.Drawing.Point(10, 195);
+ this.label23.Name = "label23";
+ this.label23.Size = new System.Drawing.Size(169, 52);
+ this.label23.TabIndex = 37;
+ this.label23.Text = "扫描条码:";
+ this.label23.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // textBox3
+ //
+ this.textBox3.Font = new System.Drawing.Font("宋体", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.textBox3.Location = new System.Drawing.Point(178, 195);
+ this.textBox3.Name = "textBox3";
+ this.textBox3.Size = new System.Drawing.Size(525, 50);
+ this.textBox3.TabIndex = 38;
+ this.textBox3.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox3_KeyDown);
+ //
+ // label24
+ //
+ this.label24.BackColor = System.Drawing.Color.DeepSkyBlue;
+ this.label24.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.label24.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label24.Location = new System.Drawing.Point(704, 193);
+ this.label24.Name = "label24";
+ this.label24.Size = new System.Drawing.Size(150, 52);
+ this.label24.TabIndex = 39;
+ this.label24.Text = "产品名称:";
+ this.label24.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+ //
+ // textBox4
+ //
+ this.textBox4.Font = new System.Drawing.Font("宋体", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.textBox4.Location = new System.Drawing.Point(853, 193);
+ this.textBox4.Name = "textBox4";
+ this.textBox4.Size = new System.Drawing.Size(417, 50);
+ this.textBox4.TabIndex = 40;
+ //
+ // pictureBox2
+ //
+ this.pictureBox2.Location = new System.Drawing.Point(178, 248);
+ this.pictureBox2.Name = "pictureBox2";
+ this.pictureBox2.Size = new System.Drawing.Size(1094, 348);
+ this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pictureBox2.TabIndex = 41;
+ this.pictureBox2.TabStop = false;
+ //
+ // panel2
+ //
+ this.panel2.Location = new System.Drawing.Point(178, 595);
+ this.panel2.Name = "panel2";
+ this.panel2.Size = new System.Drawing.Size(1012, 420);
+ this.panel2.TabIndex = 42;
+ //
+ // button1
+ //
+ this.button1.BackColor = System.Drawing.Color.DarkGray;
+ this.button1.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.button1.Location = new System.Drawing.Point(1193, 595);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(77, 417);
+ this.button1.TabIndex = 40;
+ this.button1.Text = "保存";
+ this.button1.UseVisualStyleBackColor = false;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // FrmQuality
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(1280, 1024);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.panel2);
+ this.Controls.Add(this.pictureBox2);
+ this.Controls.Add(this.textBox4);
+ this.Controls.Add(this.label24);
+ this.Controls.Add(this.textBox3);
+ this.Controls.Add(this.label23);
+ this.Controls.Add(this.label22);
+ this.Controls.Add(this.label21);
+ this.Controls.Add(this.label20);
+ this.Controls.Add(this.label11);
+ this.Controls.Add(this.label8);
+ this.Controls.Add(this.label7);
+ this.Controls.Add(this.label6);
+ this.Controls.Add(this.label5);
+ this.Controls.Add(this.comboBox1);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.label10);
+ this.Controls.Add(this.label9);
+ this.Controls.Add(this.panel1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+ this.Name = "FrmQuality";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "质量录入";
+ this.Load += new System.EventHandler(this.FrmQuality_Load);
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+ this.panel1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Timer timer1;
+ private System.Windows.Forms.Label label11;
+ private System.Windows.Forms.Label label8;
+ private System.Windows.Forms.Label label7;
+ private System.Windows.Forms.Label label6;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.ComboBox comboBox1;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.PictureBox pictureBox1;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label10;
+ private System.Windows.Forms.Label label9;
+ private System.Windows.Forms.Panel panel1;
+ private System.Windows.Forms.Label label20;
+ private System.Windows.Forms.Label label21;
+ private System.Windows.Forms.Label label22;
+ private System.Windows.Forms.Label label23;
+ private System.Windows.Forms.TextBox textBox3;
+ private System.Windows.Forms.Label label24;
+ private System.Windows.Forms.TextBox textBox4;
+ private System.Windows.Forms.PictureBox pictureBox2;
+ private System.Windows.Forms.Panel panel2;
+ private System.Windows.Forms.Button button1;
+ }
+}
\ No newline at end of file
diff --git a/BBMPTMes/InjectionPC/FrmQuality.cs b/BBMPTMes/InjectionPC/FrmQuality.cs
new file mode 100644
index 0000000..e10c4d8
--- /dev/null
+++ b/BBMPTMes/InjectionPC/FrmQuality.cs
@@ -0,0 +1,597 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Configuration;
+using System.Data;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Net.NetworkInformation;
+using System.Reflection;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using MESClassLibrary.BLL.BasicInfo;
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.Model;
+
+namespace InjectionPC
+{
+ public partial class FrmQuality : Form
+ {
+ private static string position = "", reason = "";
+ int count = 0; //缺陷图选择个数
+ public FrmQuality()
+ {
+ InitializeComponent();
+ }
+
+ private void label9_Click(object sender, EventArgs e)
+ {
+ this.Close();
+ //OnVisibleChanged()
+ }
+
+ protected override void OnVisibleChanged(EventArgs e)
+ {
+ base.OnVisibleChanged(e);
+ if (!IsHandleCreated)
+ {
+ this.Close();
+ }
+ }
+
+ private void FrmQuality_Load(object sender, EventArgs e)
+ {
+ Control.CheckForIllegalCrossThreadCalls = false;
+ string LineID = "";
+ label6.Text = Program.station;
+ label8.Text = Program.OperatorName;
+ comboBox1.Text = Program.Shift;
+ textBox3.TabIndex = 0;
+ textBox3.Focus();
+ Thread t = new Thread(new ThreadStart(TimeGo));
+ t.Start();
+ #region 测试
+
+ //获取服务器上图片
+ //Ping p1 = new Ping();
+ //bool status = false;
+
+ //PingReply reply = p1.Send(Program.IP); //发送主机名或Ip地址
+ //StringBuilder sbuilder;
+ //if (reply.Status == IPStatus.Success)
+ //{
+ // status = Upload.DoConnComputer(Program.IP, "aa", "Administrator", "Wff775168+");
+ // if (status == true)
+ // {
+ // //共享文件夹的目录
+ // DirectoryInfo theFolder = new DirectoryInfo(@"\\" + Program.IP + "\\aa\\");
+ // string filename = theFolder.ToString();
+ // //执行方法
+ // TransportRemoteToLocal(@"D:\车间.png", filename, "车间.png"); //实现将远程服务器文件写入到本地
+ // }
+ //}
+ //FileStream fs = new FileStream("D:\\2.jpg", FileMode.Open,
+ // FileAccess.Read);//获取图片文件流
+ //Image img = Image.FromStream(fs); // 文件流转换成Image格式
+ //pictureBox2.Image = img; //给 图片框设置要显示的图片
+ //fs.Close(); // 关闭流,释放图片资源
+
+ //Label[] lb = new Label[5];
+ //string[] str = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O" };
+
+ //for (int i = 0; i < 5; i++)
+ //{
+ // for (int j = 0; j < 3; j++)
+ // {
+ // lb[i] = new Label();
+ // lb[i].Text = str[i].ToString();
+ // lb[i].Font = new Font(lb[i].Font.FontFamily, 32, FontStyle.Bold);
+
+ // lb[i].Size = new Size(pictureBox2.Width / 5, pictureBox2.Height / 3);
+ // lb[i].Location = new Point(0 + i * lb[i].Size.Width, 0 + j * lb[i].Size.Height);
+ // lb[i].BorderStyle = BorderStyle.FixedSingle;
+ // lb[i].BackColor = Color.Transparent;
+ // lb[i].TextAlign = ContentAlignment.MiddleCenter;
+ // pictureBox2.Controls.Add(lb[i]);
+
+ // lb[i].Click += new EventHandler(lblRoom_Click);
+ // }
+ //}
+ //StationBLL sbll = new StationBLL();
+ //DataTable sdt = sbll.SearchInfoByNo(Program.station);
+ //if (sdt != null && sdt.Rows.Count > 0)
+ //{
+ // LineID = sdt.Rows[0]["LineID"].ToString();
+ //}
+ //sdt.Dispose();
+
+ //int row = 0, col = 6;
+
+ //DefectBLL dbll = new DefectBLL();
+ //DataTable dt3 = dbll.SearchInfo(LineID);
+ //if (dt3 != null && dt3.Rows.Count > 0)
+ //{
+ // row = Convert.ToInt32(Math.Ceiling((double)dt3.Rows.Count / 6));
+ // Label[] dLb = new Label[7];
+ // string[] dstr = new string[dt3.Rows.Count];
+
+
+ // for (int i = 0; i < dt3.Rows.Count; i++)
+ // {
+ // dstr[i] = dt3.Rows[i]["DefectName"].ToString();
+ // }
+
+ // for (int i = 0; i < 6; i++) //列
+ // {
+ // for (int j = 0; j < row;j++) //行
+ // {
+ // dLb[i] = new Label();
+ // if ((i + 6 * j) < dstr.Length)
+ // {
+ // dLb[i].Text = dstr[i + 6 * j].ToString();
+ // dLb[i].Font = new Font(dLb[i].Font.FontFamily, 24, FontStyle.Bold);
+
+ // dLb[i].Size = new Size(150, 50);
+ // dLb[i].Location = new Point(20 + i * (dLb[i].Size.Width+25), 5 + j * (dLb[i].Size.Height+20));
+ // dLb[i].BorderStyle = BorderStyle.FixedSingle;
+ // dLb[i].BackColor = Color.Transparent;
+ // dLb[i].TextAlign = ContentAlignment.MiddleCenter;
+ // panel2.Controls.Add(dLb[i]);
+ // }
+ // }
+ // }
+ //}
+
+ #endregion
+
+
+ }
+
+
+ private void TimeGo()
+ {
+ System.Timers.Timer timer = new System.Timers.Timer();
+ timer.Interval = 1000;
+ timer.Enabled = true;
+ timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick);
+ }
+
+ private void timer_Tick(object sender, EventArgs e)
+ {
+ label2.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+ Thread.Sleep(500);
+ }
+
+
+ ///
+ /// 从远程服务器下载文件到本地
+ ///
+ /// 下载到本地后的文件路径,包含文件的扩展名
+ /// 远程服务器路径(共享文件夹路径)
+ /// 远程服务器(共享文件夹)中的文件名称,包含扩展名
+ public static void TransportRemoteToLocal(string src, string dst, string fileName) //src:下载到本地后的文件路径 dst:远程服务器路径 fileName:远程服务器dst路径下的文件名
+ {
+ try
+ {
+ FileStream inFileStream = new FileStream(src, FileMode.Open); //远程服务器文件 此处假定远程服务器共享文件夹下确实包含本文件,否则程序报错
+
+ if (!Directory.Exists(dst))
+ {
+ Directory.CreateDirectory(dst);
+ }
+ dst = dst + fileName;
+ FileStream outFileStream = new FileStream(dst, FileMode.OpenOrCreate); //从远程服务器下载到本地的文件
+ byte[] buf = new byte[inFileStream.Length];
+ int byteCount;
+ while ((byteCount = inFileStream.Read(buf, 0, buf.Length)) > 0)
+ {
+ outFileStream.Write(buf, 0, byteCount);
+ }
+ inFileStream.Flush();
+ inFileStream.Close();
+ outFileStream.Flush();
+ outFileStream.Close();
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ }
+ }
+
+ void lblRoom_Click(object sender, EventArgs e)
+ {
+ Label a = (Label) sender;
+ //foreach (Control c in pictureBox2.Controls)
+ //{
+ // c.BackColor = Color.Transparent;
+ //}
+ if (a.BackColor == Color.Transparent)
+ {
+ a.BackColor = Color.FromArgb(150, System.Drawing.Color.Chartreuse);
+ count++;
+ }
+ else
+ {
+ a.BackColor = Color.Transparent;
+ count--;
+ }
+
+ //position +=a.Text+",";
+ }
+
+
+ void dLbRoom_Click(object sender, EventArgs e)
+ {
+ //if (count == 0)
+ //{
+ // MessageBox.Show("请选择缺陷位置!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ // return;
+ //}
+ Label a = (Label)sender;
+
+ string aa = a.Text;
+ if (a.BackColor == Color.Transparent)
+ {
+ a.BackColor = Color.FromArgb(150, Color.Chartreuse);
+ reason += a.Text+";";
+ }
+ else
+ {
+ reason = reason.Replace(a.Text+";","");
+ a.BackColor = Color.Transparent;
+ }
+ }
+
+ ///
+ /// 保存缺陷
+ ///
+ ///
+ ///
+ private void button1_Click(object sender, EventArgs e)
+ {
+ string stockNo = "",batchNo="",partNo="";
+
+ foreach (Control c in pictureBox2.Controls)
+ {
+ Label lab = c as Label;
+ if (lab.BackColor != Color.Transparent)
+ {
+ position += lab.Text + ";";
+ }
+ }
+
+ if (position == "")
+ {
+ MessageBox.Show("请选择缺陷位置!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ return;
+ }
+
+ if (reason == "")
+ {
+ MessageBox.Show("请选择缺陷原因!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+
+ return;
+ }
+
+
+ BadInjectionBLL badBLL = new BadInjectionBLL();
+ BadInjectionModel badmd = new BadInjectionModel();
+ ProductOfInjectionModel md = new ProductOfInjectionModel();
+ ProductOfInjectionBLL bll=new ProductOfInjectionBLL();
+
+ #region 判断是否已做过报废
+
+ DataTable baddt = badBLL.SearchByCode(textBox3.Text.Trim());
+ if (baddt != null && baddt.Rows.Count > 0)
+ {
+ MessageBox.Show("请产品已做过报废处理!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ reason = "";
+ textBox3.Text = "";
+ textBox3.TabIndex = 0;
+ textBox3.Focus();
+
+ textBox4.Text = "";
+ pictureBox2.Image = null;
+
+ pictureBox2.Controls.Clear();
+
+ panel2.Controls.Clear();
+ return;
+ }
+
+ #endregion
+
+ #region 保存报废详细信息
+
+ badmd.ID = Guid.NewGuid().ToString();
+ if (textBox3.Text.Trim().Contains("."))
+ {
+ badmd.BarCode = textBox3.Text.Trim();
+ badmd.OneBarCode = "";
+ }
+ else
+ {
+ badmd.OneBarCode = textBox3.Text.Trim();
+ badmd.BarCode = "";
+ }
+ badmd.BadPosition = position;
+ badmd.BadReason = reason.Trim();
+ badBLL.Add_Info(badmd);
+
+ #endregion
+
+ #region 修改注塑产量表,如果是开机报废则把产量减1,报废数不变
+
+ //DataTable dt = badBLL.SearchByCode(textBox3.Text.Trim());
+ //if (dt != null && dt.Rows.Count != 1)
+ //{
+
+ //}
+ //else
+ //{
+ // Program.GetCode(textBox3.Text.Trim(), out stockNo, out batchNo, out partNo);
+
+ // md.BadCount = 1;
+ // md.ClassName = Program.Shift;
+
+ // StationBLL sbll = new StationBLL();
+ // DataTable sdt = sbll.SearchInfoByNo(Program.station);
+ // if (sdt != null && sdt.Rows.Count > 0)
+ // {
+ // md.StationID = sdt.Rows[0]["StationID"].ToString();
+ // }
+ // else
+ // {
+ // md.StationID = "";
+ // }
+
+ // sdt.Dispose();
+
+ // md.ProductDate = Program.ProductDate;
+ // md.PartNo = partNo;
+ // md.StockNo = stockNo;
+
+ // if (reason.Contains("开机报废"))
+ // {
+ // md.ProductCount = 1;
+ // bll.updateProductCount(md);
+ // }
+ // else
+ // {
+ // bll.UpdateBad_Info(md);
+ // }
+
+ //}
+
+ #endregion
+
+ reason = "";
+ textBox3.Text = "";
+ textBox3.TabIndex = 0;
+ textBox3.Focus();
+
+ textBox4.Text = "";
+ pictureBox2.Image = null;
+
+ pictureBox2.Controls.Clear();
+
+ panel2.Controls.Clear();
+ position = "";
+ reason = "";
+ //this.Close();
+ }
+
+ private void button2_Click(object sender, EventArgs e)
+ {
+ Form fr = new FrmBarCode();
+ this.Hide();
+ fr.Show();
+ }
+
+ private void textBox3_KeyDown(object sender, KeyEventArgs e)
+ {
+ if (e.KeyCode == Keys.Enter)
+ {
+ string[] barcode=new string[3];
+ int row = 0, col = 0;
+ string picture = "";
+ string LineID = "";
+ ProductBLL bll = new ProductBLL();
+
+ string aa = textBox3.Text.Trim();
+ if (textBox3.Text.Length == 20)
+ {
+ DataTable dt = bll.SearchInfoByStock(textBox3.Text.Substring(0,10));
+
+ if (dt != null && dt.Rows.Count > 0)
+ {
+ textBox4.Text = dt.Rows[0]["ProductName"].ToString();
+ row = Convert.ToInt32(dt.Rows[0]["Rows"].ToString());
+ col = Convert.ToInt32(dt.Rows[0]["Cols"].ToString());
+ picture = dt.Rows[0]["PicturePath"].ToString();
+ dt.Dispose();
+ }
+ }
+ else
+ {
+ barcode = textBox3.Text.Trim().Split('.');
+ DataTable dt = bll.SearchInfoByPartNo(barcode[0]);
+
+ if (dt != null && dt.Rows.Count > 0)
+ {
+ textBox4.Text = dt.Rows[0]["ProductName"].ToString();
+ row = Convert.ToInt32(dt.Rows[0]["Rows"].ToString());
+ col = Convert.ToInt32(dt.Rows[0]["Cols"].ToString());
+ picture = dt.Rows[0]["PicturePath"].ToString();
+ dt.Dispose();
+ }
+ }
+
+
+ try
+ {
+ #region Load PictureBox
+
+ if (!string.IsNullOrEmpty(picture))
+ {
+ if (!File.Exists(System.IO.Directory.GetCurrentDirectory() + @"\" + picture))
+ {
+ string strImageURL = "http://10.60.101.10:8001/PDF/" + picture;
+
+ System.Net.WebClient webClient = new System.Net.WebClient();
+ webClient.DownloadFile(strImageURL, Directory.GetCurrentDirectory() + @"\" + picture);
+ }
+
+ FileStream fs = new FileStream(Directory.GetCurrentDirectory() + "\\" + picture, FileMode.Open,
+ FileAccess.Read); //获取图片文件流
+ Image img = Image.FromStream(fs); // 文件流转换成Image格式
+ pictureBox2.Image = img; //给 图片框设置要显示的图片
+ fs.Close(); // 关闭流,释放图片资源
+ }
+ //if (!File.Exists(System.IO.Directory.GetCurrentDirectory() + @"\" + picture))
+ //{
+ // Ping p1 = new Ping();
+ // bool status = false;
+
+ // PingReply reply = p1.Send(Program.RemoteIP); //发送主机名或Ip地址
+ // StringBuilder sbuilder;
+ // if (reply.Status == IPStatus.Success)
+ // {
+ // string PictureFolder = ConfigurationManager.AppSettings["PictureFolder"].ToString();
+ // string User = ConfigurationManager.AppSettings["PictureUser"].ToString();
+ // string UserPwd = ConfigurationManager.AppSettings["PicturePsw"].ToString();
+ // status = Upload.DoConnComputer(Program.RemoteIP, PictureFolder, User, UserPwd);
+ // if (status == true)
+ // {
+ // //共享文件夹的目录
+ // string path = ConfigurationManager.AppSettings["PicturePath"].ToString() + picture;
+ // DirectoryInfo theFolder = new DirectoryInfo(path);
+ // string filename = theFolder.ToString();
+
+ // //执行方法
+ // TransportRemoteToLocal(filename, System.Environment.CurrentDirectory + "\\", picture); //实现将远程服务器文件写入到本地
+
+ // }
+ // //string PictureFolder = ConfigurationManager.AppSettings["PictureFolder"].ToString();
+ // //string User = ConfigurationManager.AppSettings["User"].ToString();
+ // //string UserPwd = ConfigurationManager.AppSettings["UserPwd"].ToString();
+ // //status = Upload.DoConnComputer(Program.IP, "aa", "Administrator", "Wff775168+");
+ // //if (status == true)
+ // //{
+ // // //共享文件夹的目录
+ // // DirectoryInfo theFolder = new DirectoryInfo(@"\\" + Program.IP + "\\aa\\");
+ // // string filename = theFolder.ToString();
+ // // //执行方法
+ // // TransportRemoteToLocal(@"D:\" + picture, filename, picture); //实现将远程服务器文件写入到本地
+ // //}
+ // }
+ //}
+
+ //FileStream fs = new FileStream(System.Environment.CurrentDirectory + "\\" + picture, FileMode.Open,
+ // FileAccess.Read); //获取图片文件流
+ //Image img = Image.FromStream(fs); // 文件流转换成Image格式
+ //pictureBox2.Image = img; //给 图片框设置要显示的图片
+ //fs.Close(); // 关闭流,释放图片资源
+
+
+ #endregion
+
+ #region 缺陷图划分区域
+
+ Label[] lb = new Label[5];
+ string[] str =
+ {
+ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
+ "U", "V", "W", "X", "Y", "Z"
+ };
+
+ for (int i = 0; i < col; i++)
+ {
+ for (int j = 0; j < row; j++)
+ {
+ lb[i] = new Label();
+ lb[i].Text = str[i + col * j].ToString();
+ lb[i].Font = new Font(lb[i].Font.FontFamily, 32, FontStyle.Bold);
+
+ lb[i].Size = new Size(pictureBox2.Width / col, pictureBox2.Height / row);
+ lb[i].Location = new Point(0 + i * lb[i].Size.Width, 0 + j * lb[i].Size.Height);
+ lb[i].BorderStyle = BorderStyle.FixedSingle;
+ lb[i].BackColor = Color.Transparent;
+ lb[i].TextAlign = ContentAlignment.MiddleCenter;
+ pictureBox2.Controls.Add(lb[i]);
+
+ lb[i].Click += new EventHandler(lblRoom_Click);
+ }
+ }
+
+ #endregion
+
+ #region 缺陷原因
+
+ StationBLL sbll = new StationBLL();
+ DataTable sdt = sbll.SearchInfoByNo(Program.station);
+ if (sdt != null && sdt.Rows.Count > 0)
+ {
+ LineID = sdt.Rows[0]["LineID"].ToString();
+ }
+
+ sdt.Dispose();
+
+ int drow = 0, dcol = 6;
+
+ DefectBLL dbll = new DefectBLL();
+ DataTable dt3 = dbll.SearchInfo(LineID);
+ if (dt3 != null && dt3.Rows.Count > 0)
+ {
+ drow = Convert.ToInt32(Math.Ceiling((double) dt3.Rows.Count / dcol));
+ Label[] dLb = new Label[7];
+ string[] dstr = new string[dt3.Rows.Count];
+
+
+ for (int i = 0; i < dt3.Rows.Count; i++)
+ {
+ dstr[i] = dt3.Rows[i]["DefectName"].ToString();
+ }
+
+ for (int i = 0; i < dcol; i++) //列
+ {
+ for (int j = 0; j < drow; j++) //行
+ {
+ dLb[i] = new Label();
+ if ((i + dcol * j) < dstr.Length)
+ {
+ dLb[i].Text = dstr[i + dcol * j].ToString();
+ dLb[i].Font = new Font(dLb[i].Font.FontFamily, 20, FontStyle.Bold);
+
+ dLb[i].Size = new Size(130, 50);
+ dLb[i].Location = new Point(50 + i * (dLb[i].Size.Width + 25),
+ 50 + j * (dLb[i].Size.Height + 20));
+ dLb[i].BorderStyle = BorderStyle.FixedSingle;
+ dLb[i].BackColor = Color.Transparent;
+ dLb[i].TextAlign = ContentAlignment.MiddleCenter;
+ panel2.Controls.Add(dLb[i]);
+ dLb[i].Click += new EventHandler(dLbRoom_Click);
+ }
+ }
+ }
+ }
+
+ #endregion
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ }
+ }
+ }
+
+ private void label2_Click(object sender, EventArgs e)
+ {
+ Environment.Exit(0);
+ }
+ }
+}
diff --git a/BBMPTMes/InjectionPC/FrmQuality.resx b/BBMPTMes/InjectionPC/FrmQuality.resx
new file mode 100644
index 0000000..4a636cf
--- /dev/null
+++ b/BBMPTMes/InjectionPC/FrmQuality.resx
@@ -0,0 +1,484 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+ 13, -3
+
+
+
+
+ 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
+ q22C8fY24wAAAABJRU5ErkJggg==
+
+
+
\ No newline at end of file
diff --git a/BBMPTMes/InjectionPC/GlacialList.dll b/BBMPTMes/InjectionPC/GlacialList.dll
new file mode 100644
index 0000000..70d88d6
Binary files /dev/null and b/BBMPTMes/InjectionPC/GlacialList.dll differ
diff --git a/BBMPTMes/InjectionPC/InjectionPC.csproj b/BBMPTMes/InjectionPC/InjectionPC.csproj
new file mode 100644
index 0000000..e0e64c5
--- /dev/null
+++ b/BBMPTMes/InjectionPC/InjectionPC.csproj
@@ -0,0 +1,230 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {0FDBFD8E-C694-45C2-89B2-BC3120B944BF}
+ WinExe
+ Properties
+ InjectionPC
+ InjectionPC
+ v4.5
+ 512
+
+ 发布\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ false
+ true
+
+
+ x86
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+ false
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+ false
+
+
+
+ False
+ .\GlacialList.dll
+
+
+ False
+ True
+ .\Interop.TaskScheduler.dll
+
+
+ False
+ .\SchTaskExtAPI.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ Form1.cs
+
+
+ Form
+
+
+ FrmDown.cs
+
+
+ Form
+
+
+ FrmLogin.cs
+
+
+ Form
+
+
+ FrmQuality.cs
+
+
+ Form
+
+
+ FrmBarCode.cs
+
+
+
+
+
+
+
+ Form1.cs
+
+
+ FrmBarCode.cs
+
+
+ FrmDown.cs
+
+
+ FrmLogin.cs
+
+
+ FrmQuality.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+ True
+
+
+ Designer
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+ False
+ Microsoft .NET Framework 4 %28x86 和 x64%29
+ true
+
+
+ False
+ .NET Framework 3.5 SP1 Client Profile
+ false
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
+ False
+ Windows Installer 4.5
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {0CDAC26E-8F92-47EE-9E2E-844DBF78703A}
+ 5
+ 0
+ 0
+ tlbimp
+ False
+ True
+
+
+ {715CBE0F-4F50-46EF-B009-CACED3A5C868}
+ 5
+ 0
+ 0
+ tlbimp
+ False
+ True
+
+
+ {00020430-0000-0000-C000-000000000046}
+ 2
+ 0
+ 0
+ primary
+ False
+ True
+
+
+
+
+ {867989d8-6837-41dc-9bf1-4658f5d6cfef}
+ MESClassLibrary
+
+
+
+
+
\ No newline at end of file
diff --git a/BBMPTMes/InjectionPC/Interop.TaskScheduler.dll b/BBMPTMes/InjectionPC/Interop.TaskScheduler.dll
new file mode 100644
index 0000000..4abf1b4
Binary files /dev/null and b/BBMPTMes/InjectionPC/Interop.TaskScheduler.dll differ
diff --git a/BBMPTMes/InjectionPC/LogHelper.cs b/BBMPTMes/InjectionPC/LogHelper.cs
new file mode 100644
index 0000000..292d474
--- /dev/null
+++ b/BBMPTMes/InjectionPC/LogHelper.cs
@@ -0,0 +1,76 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using MESClassLibrary.DAL;
+
+namespace InjectionPC
+{
+ public class LogHelper
+ {
+ private static string CodeVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString().Trim();
+
+ //
+ //保存日志的文件夹
+ //
+ private static string logPath = AppDomain.CurrentDomain.BaseDirectory + @"log\";
+
+ ///
+ /// 写日志
+ ///
+ ///
+ ///
+ public static void WriteLog(string msg, string errorFile = "")
+ {
+ try
+ {
+ if (string.IsNullOrEmpty(msg))
+ {
+ return;
+ }
+ else
+ {
+ msg = string.Format("程序版本号:{0},Time:{1},Message:{2}", CodeVersion, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ffff"), msg);
+ }
+ //如果不存在log文件夹 则创建
+ if (!Directory.Exists(logPath))
+ {
+ Directory.CreateDirectory(logPath);
+ }
+
+ StreamWriter sw = File.AppendText(logPath + errorFile + DateTime.Now.ToString("yyyyMMdd") + ".Log");
+ sw.WriteLine(msg);
+ sw.Close();
+ }
+ catch (Exception ex)
+ {
+
+ }
+ }
+ ///
+ /// 拼接错误日志
+ ///
+ /// 异常类
+ /// 异常类文件夹名,可为空
+ public static void WriteLogManager(Exception ex, string errorFile = "")
+ {
+ StringBuilder str = new StringBuilder();//保存到文件中的日志信息
+ str.AppendLine("****************************异常文本****************************");
+ str.AppendLine("【程序版本号】:" + CodeVersion + " 【出现时间】:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
+ if (ex != null)
+ {
+ str.AppendLine(string.Format("【异常类型】:{0}\r\n【异常信息】:{1}\r\n【异常方法】:{2}\r\n【堆栈调用】:{3}", ex.GetType().Name, ex.Message, ex.TargetSite, ex.StackTrace));
+ }
+ else
+ {
+ str.AppendLine(string.Format("【未处理应用程序线程错误】:{0}", ex));
+ }
+ str.AppendLine("****************************************************************");
+ //保存日志
+ WriteLog(str.ToString(), "Error" + errorFile);
+ }
+ }
+}
diff --git a/BBMPTMes/InjectionPC/Logo.png b/BBMPTMes/InjectionPC/Logo.png
new file mode 100644
index 0000000..f478106
Binary files /dev/null and b/BBMPTMes/InjectionPC/Logo.png differ
diff --git a/BBMPTMes/InjectionPC/Picture/V&W205-AMG-F.jpg b/BBMPTMes/InjectionPC/Picture/V&W205-AMG-F.jpg
new file mode 100644
index 0000000..0fab08e
Binary files /dev/null and b/BBMPTMes/InjectionPC/Picture/V&W205-AMG-F.jpg differ
diff --git a/BBMPTMes/InjectionPC/Program.cs b/BBMPTMes/InjectionPC/Program.cs
new file mode 100644
index 0000000..2e0f43a
--- /dev/null
+++ b/BBMPTMes/InjectionPC/Program.cs
@@ -0,0 +1,93 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+using System.Data;
+using System.Data.SqlClient;
+
+namespace InjectionPC
+{
+ static class Program
+ {
+ ///
+ /// 应用程序的主入口点。
+ ///
+ ///
+
+ public static SqlConnection DBConn; //数据库连接串
+ public static string station;
+ public static string OperatorName;
+ public static string IP;
+ public static string Shift; //班次
+ public static string ProductDate;
+ public static string RemoteIP;
+ public static string PicturePath;
+ public static string WeightFolder;
+ public static string WeightFile;
+ public static string WeightUser;
+ public static string WeightPsw;
+
+ public static int interVal;
+
+ [STAThread]
+ static void Main()
+ {
+ bool isRuned;
+ System.Threading.Mutex mutex = new System.Threading.Mutex(true, "OnlyRunOneInstance", out isRuned);
+ if (isRuned)
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new FrmLogin());
+ mutex.ReleaseMutex();
+ }
+ else
+ {
+ MessageBox.Show("程序已启动!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ }
+
+ //Application.Run(new Form1());
+ }
+
+ /// 判断指定字符串是否包含有汉字
+ /// 指定的字符串
+ /// 若包含有汉字则返回True,否则返回False
+ public static bool InChinese1(string StrChineseString)
+ {
+ return System.Text.RegularExpressions.Regex.IsMatch(StrChineseString, @"[/u4e00-/u9fa5]+");
+ }
+
+ public static void GetCode(string code, out string stockNo, out string batchNo, out string partNo)
+ {
+ //解析塑料粒子条码,长度为20的为一维码22000000821906090201,否则为二维码
+ //二维码样例Z-340.180411.000001;5000;S35001;20180411;P1710401.[#Line#];180411;
+ //第一个分号之前的数据,即Z-340.180411.000001; Z-340为零件号,180411为批次号,000001为流水号
+ //一维码前十位为零件号,tb_Product PartNo,11~16位为批次
+
+ stockNo = ""; //存货代码
+ batchNo = ""; //批次
+ partNo = ""; //零件号
+ if (code.Contains(".") == false)
+ {
+ //一维码
+ stockNo = code.Substring(0, 10);
+ batchNo = code.Substring(10, 6);
+ }
+ else
+ {
+ //二维码
+ string[] strs = code.Split(';');
+ if (strs.Length > 0)
+ {
+ string str = strs[0];
+ string[] props = str.Split('.');
+ if (props.Length >= 3)
+ {
+ partNo = props[0];
+ batchNo = props[1];
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/BBMPTMes/InjectionPC/Properties/AssemblyInfo.cs b/BBMPTMes/InjectionPC/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..3c63a5b
--- /dev/null
+++ b/BBMPTMes/InjectionPC/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的常规信息通过以下
+// 特性集控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("InjectionPC")]
+[assembly: AssemblyDescription("获取批次取服务器时间")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("InjectionPC")]
+[assembly: AssemblyCopyright("Copyright © 2019")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 使此程序集中的类型
+// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
+// 则将该类型上的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("d6193cb5-fa92-4ddd-b2d9-594279a18461")]
+
+// 程序集的版本信息由下面四个值组成:
+//
+// 主版本
+// 次版本
+// 生成号
+// 修订号
+//
+// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
+// 方法是按如下所示使用“*”:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.16")]
+[assembly: AssemblyFileVersion("1.0.0.16")]
diff --git a/BBMPTMes/InjectionPC/Properties/Resources.Designer.cs b/BBMPTMes/InjectionPC/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..1362867
--- /dev/null
+++ b/BBMPTMes/InjectionPC/Properties/Resources.Designer.cs
@@ -0,0 +1,63 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+namespace InjectionPC.Properties {
+ using System;
+
+
+ ///
+ /// 一个强类型的资源类,用于查找本地化的字符串等。
+ ///
+ // 此类是由 StronglyTypedResourceBuilder
+ // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
+ // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+ // (以 /str 作为命令选项),或重新生成 VS 项目。
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// 返回此类使用的缓存的 ResourceManager 实例。
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("InjectionPC.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// 使用此强类型资源类,为所有资源查找
+ /// 重写当前线程的 CurrentUICulture 属性。
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/BBMPTMes/InjectionPC/Properties/Resources.resx b/BBMPTMes/InjectionPC/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/BBMPTMes/InjectionPC/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/BBMPTMes/InjectionPC/Properties/Settings.Designer.cs b/BBMPTMes/InjectionPC/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..60716f3
--- /dev/null
+++ b/BBMPTMes/InjectionPC/Properties/Settings.Designer.cs
@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本:4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将会丢失。
+//
+//------------------------------------------------------------------------------
+
+namespace InjectionPC.Properties {
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default {
+ get {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/BBMPTMes/InjectionPC/Properties/Settings.settings b/BBMPTMes/InjectionPC/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/BBMPTMes/InjectionPC/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/BBMPTMes/InjectionPC/ReportHelper.cs b/BBMPTMes/InjectionPC/ReportHelper.cs
new file mode 100644
index 0000000..b153f43
--- /dev/null
+++ b/BBMPTMes/InjectionPC/ReportHelper.cs
@@ -0,0 +1,99 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using grproLib;
+
+namespace InjectionPC
+{
+ public class ReportHelper
+ {
+ public GridppReport Report;
+ private DataTable _dtDataDetail;
+ public ReportHelper(string filename, DataTable dtDataHead, DataTable dtDataDetail, int paperOrigntation, short copies, string printerName)
+ {
+ Init(filename, dtDataHead, dtDataDetail, paperOrigntation, copies, printerName);
+ }
+
+ private void Init(string filename, DataTable dtDataHead, DataTable dtDataDetail, int paperOrigntation, short copies, string printerName)
+ {
+ try
+ {
+ _dtDataDetail = dtDataDetail;
+ Report = new GridppReport();
+ Report.LoadFromFile(filename);
+ Report.FetchRecord += Report_FetchRecord;
+ Report.Printer.PrinterName = printerName;
+ Report.Printer.PaperOrientation = (GRPaperOrientation)paperOrigntation;
+ Report.Printer.Copies = copies;
+ FillParameters(Report, dtDataHead);
+ }
+ catch (Exception e)
+ {
+ Console.WriteLine(e);
+ throw;
+ }
+
+ }
+
+ public void Print(bool isPreview, bool isShowDialog = true)
+ {
+ if (isPreview)
+ Report.PrintPreview(true);
+ else
+ Report.Print(isShowDialog);
+ }
+
+ private void Report_FetchRecord()
+ {
+ if (_dtDataDetail != null)
+ {
+ FillRecordToReport(Report, _dtDataDetail);
+ }
+ }
+
+ private void FillRecordToReport(IGridppReport report, DataTable dtDetail)
+ {
+ foreach (DataRow dr in dtDetail.Rows)
+ {
+ report.DetailGrid.Recordset.Append();
+ foreach (DataColumn dc in dtDetail.Columns)
+ {
+ var field = report.FieldByName(dc.ColumnName);
+ if (field == null) continue;
+ field.Value = dr[dc.ColumnName];
+ }
+ report.DetailGrid.Recordset.Post();
+ }
+ }
+
+ private void FillParameters(GridppReport report, DataTable dtHead)
+ {
+ if (dtHead.Rows.Count == 0) return;
+ foreach (DataColumn dc in dtHead.Columns)
+ {
+ var param = report.ParameterByName(dc.ColumnName);
+ if (param == null) continue;
+ param.Value = dtHead.Rows[0][dc.ColumnName];
+ }
+ }
+
+ public static string GetTemplateFile(string sourfilename)
+ {
+ var ofd = new OpenFileDialog
+ {
+ Filter = @"Grid++ files (*.grf)|*.grf",
+ Multiselect = false,
+ RestoreDirectory = true,
+ FileName = sourfilename,
+ InitialDirectory = Path.GetDirectoryName(sourfilename),
+ };
+ if (ofd.ShowDialog() != DialogResult.OK) return string.Empty;
+ return ofd.FileName;
+ }
+ }
+}
diff --git a/BBMPTMes/InjectionPC/SchTaskExtAPI.dll b/BBMPTMes/InjectionPC/SchTaskExtAPI.dll
new file mode 100644
index 0000000..a055a5a
Binary files /dev/null and b/BBMPTMes/InjectionPC/SchTaskExtAPI.dll differ
diff --git a/BBMPTMes/InjectionPC/Upload.cs b/BBMPTMes/InjectionPC/Upload.cs
new file mode 100644
index 0000000..ed4a6cc
--- /dev/null
+++ b/BBMPTMes/InjectionPC/Upload.cs
@@ -0,0 +1,99 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing.Imaging;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.IO;
+using System.Net;
+using System.Security.Policy;
+
+namespace InjectionPC
+{
+ public class Upload
+ {
+ public static void DownLoad(string Url, string FileName)
+ {
+ bool Value = false;
+ WebResponse response = null;
+ Stream stream = null;
+ try
+ {
+ HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
+
+ response = request.GetResponse();
+ stream = response.GetResponseStream();
+
+ if (!response.ContentType.ToLower().StartsWith("text/"))
+ {
+ Value = SaveBinaryFile(response, FileName);
+ }
+ }
+ catch (Exception err)
+ {
+ string aa = err.ToString();
+ }
+ }
+
+ ///
+ /// Save a binary file to disk.
+ ///
+ /// The response used to save the file
+ // 将二进制文件保存到磁盘
+ private static bool SaveBinaryFile(WebResponse response, string FileName)
+ {
+ bool Value = true;
+ byte[] buffer = new byte[1024];
+
+ try
+ {
+ if (File.Exists(FileName))
+ File.Delete(FileName);
+ Stream outStream = System.IO.File.Create(FileName);
+ Stream inStream = response.GetResponseStream();
+
+ int l;
+ do
+ {
+ l = inStream.Read(buffer, 0, buffer.Length);
+ if (l > 0)
+ outStream.Write(buffer, 0, l);
+ }
+ while (l > 0);
+
+ outStream.Close();
+ inStream.Close();
+ }
+ catch
+ {
+ Value = false;
+ }
+ return Value;
+ }
+
+ public void Down(string url, string dtnow)
+ {
+ WebRequest wreq = WebRequest.Create(url);
+ HttpWebResponse wresp = (HttpWebResponse)wreq.GetResponse();
+ Stream s = wresp.GetResponseStream();
+ System.Drawing.Image img;
+ img = System.Drawing.Image.FromStream(s);
+ img.Save("D:\\" + dtnow, ImageFormat.Jpeg);
+ MemoryStream ms = new MemoryStream();
+ img.Save(ms, ImageFormat.Jpeg);
+ img.Dispose();
+ }
+
+ public static bool DoConnComputer(string ip, string folder, string strName, string strPsw)
+ {
+ try
+ {
+ return SchTaskExtAPI.ConnectOtherComputer.DoConnectOtherComputer(ip, folder, strName, strPsw);
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+ }
+}
diff --git a/BBMPTMes/InjectionPC/北汽模塑.png b/BBMPTMes/InjectionPC/北汽模塑.png
new file mode 100644
index 0000000..4b40e6e
Binary files /dev/null and b/BBMPTMes/InjectionPC/北汽模塑.png differ
diff --git a/BBMPTMes/MESClassLibrary/App.config b/BBMPTMes/MESClassLibrary/App.config
new file mode 100644
index 0000000..f80c656
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/App.config
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/BBMPTMes/MESClassLibrary/BLL/Andon/AndonButtonRecordBLL.cs b/BBMPTMes/MESClassLibrary/BLL/Andon/AndonButtonRecordBLL.cs
new file mode 100644
index 0000000..e7ffbd1
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/Andon/AndonButtonRecordBLL.cs
@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.DAL.Andon;
+using MESClassLibrary.Model;
+
+namespace MESClassLibrary.BLL.Andon
+{
+ public class AndonButtonRecordBLL
+ {
+ AndonButtonRecordDAL da=new AndonButtonRecordDAL();
+
+ public bool InsertInfo(AndonRecordModel md)
+ {
+ try
+ {
+ return da.InsertInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+
+ public bool UpdateInfo(AndonRecordModel md)
+ {
+ try
+ {
+ return da.UpdateInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/Andon/AndonButtonTypeBLL.cs b/BBMPTMes/MESClassLibrary/BLL/Andon/AndonButtonTypeBLL.cs
new file mode 100644
index 0000000..9aa1828
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/Andon/AndonButtonTypeBLL.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.SqlClient;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.DAL;
+using MESClassLibrary.DAL.Andon;
+
+namespace MESClassLibrary.BLL.Andon
+{
+ public class AndonButtonTypeBLL
+ {
+ public DataTable SearchInfoByName(string buttonName)
+ {
+ try
+ {
+ AndonButtonTypeDAL da = new AndonButtonTypeDAL();
+
+ return da.SearchInfoByName(buttonName);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicBLL.cs
new file mode 100644
index 0000000..3621ab5
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicBLL.cs
@@ -0,0 +1,178 @@
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.DAL;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MESClassLibrary.BLL
+{
+ public class BasicBLL where T : class, new()
+ {
+ BaseDAL db = new BaseDAL();
+ /// 新增信息
+ public bool AddInfo(T md)
+ {
+ try
+ {
+ if (db.Add(md) > 0)
+ {
+ return true;
+ }
+ return false;
+ }
+ catch (Exception ex)
+ {
+ //LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ /// 修改信息
+ public bool UpdateInfo(T md, params string[] proNames)
+ {
+ try
+ {
+ //T u = new T() { uId = 1, uLoginName = "asdfasdf" };
+ if (db.Modify(md, proNames) > 0)
+ {
+ return true;
+ }
+ return false;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ /// 删除信息
+ public bool DelInfo(T md)
+ {
+ try
+ {
+ if (db.Del(md) > 0)
+ {
+ return true;
+ }
+ return false;
+ }
+ catch (Exception ex)
+ {
+ //LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ public List SearchInfo(int page, int pagesize, out int total)
+ {
+ try
+ {
+ var list = db.GetListBy(LambdaHelper.CreateEqual("IsUseing", 1)).ToList();
+ total = list.Count;
+ int Skipcount = (page - 1) * pagesize;
+ return list.Skip(Skipcount).Take(pagesize).ToList();
+ }
+ catch (Exception ex)
+ {
+ total = 0;
+ //LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+ public List SearchInfoByKey(string keyname, object keyvalue)
+ {
+ try
+ {
+ var list = db.GetListBy(LambdaHelper.CreateEqual(keyname, keyvalue)).ToList();
+ return list;
+ }
+ catch (Exception)
+ {
+ return new List();
+ //return null;
+ }
+
+ }
+
+ public List SearchInfoContains(string keyname, string keyvalue)
+ {
+ try
+ {
+ var list = db.GetListBy(LambdaHelper.GetContains(keyname, keyvalue)).ToList();
+ return list;
+ }
+ catch (Exception)
+ {
+ return new List();
+ //return null;
+ }
+
+ }
+
+
+
+ public List SearchInfoAll(int page, int pagesize, out int total)
+ {
+ try
+ {
+ var list = db.GetListBy(LambdaHelper.True()).ToList();
+ total = list.Count;
+ int Skipcount = (page - 1) * pagesize;
+ return list.Skip(Skipcount).Take(pagesize).ToList();
+ }
+ catch (Exception ex)
+ {
+ total = 0;
+ //LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+ public T SearchInfoByID(string ID)
+ {
+ try
+ {
+ var list = db.Find(ID);
+ return list;
+ }
+ catch (Exception ex)
+ {
+ return null;
+ }
+
+ }
+ public List SearchAllInfo()
+ {
+ try
+ {
+ return db.GetListBy(LambdaHelper.True()).ToList();
+ }
+ catch (Exception ex)
+ {
+ //LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+ public List SearchInfoByTime(string cname, DateTime stime, DateTime etime)
+ {
+ try
+ {
+ IQueryable list = db.GetListBy(LambdaHelper.CreateCompareToLater(cname, stime)).AsQueryable();
+ list = list.Where(LambdaHelper.CreateCompareToEarlier(cname, etime));
+ return list.ToList();
+ }
+ catch (Exception)
+ {
+ return new List();
+ //return null;
+ }
+
+ }
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/BadInjectionBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/BadInjectionBLL.cs
new file mode 100644
index 0000000..7a2f8f6
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/BadInjectionBLL.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.DAL.BasicInfo;
+using MESClassLibrary.Model;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+ public class BadInjectionBLL
+ {
+ BadInjectionDAL db=new BadInjectionDAL();
+
+ public bool Add_Info(BadInjectionModel md)
+ {
+ try
+ {
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+
+ public DataTable SearchByCode(string code)
+ {
+ try
+ {
+ return db.SearchByCode(code);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/BarCodeBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/BarCodeBLL.cs
new file mode 100644
index 0000000..70ac6c3
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/BarCodeBLL.cs
@@ -0,0 +1,174 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.DAL.BasicInfo;
+using MESClassLibrary.Model;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+ public class BarCodeBLL
+ {
+ BarCodeDAl db = new BarCodeDAl();
+
+ public DataTable SearchInfoByStock(string StockNo)
+ {
+ try
+ {
+ return db.SearchInfoByStock(StockNo);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ throw ex;
+ }
+ }
+
+ public bool Add_Info(BarCodeModel md)
+ {
+ try
+ {
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+
+ public DataTable SearchInfo(string stationNo)
+ {
+ try
+ {
+ return db.SearchInfo(stationNo);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+
+ public DataTable SearchInfoAll()
+ {
+ try
+ {
+ return db.SearchInfoAll();
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+
+ public DataTable SearchBarCode()
+ {
+ try
+ {
+ return db.SearchBarCode();
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+
+ public DataTable SearchBarCodeByOne(string OneBarCode)
+ {
+ try
+ {
+ return db.SearchBarCodeByOne(OneBarCode);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+
+ public DataTable SearchBarCodeByTwo(string BarCode)
+ {
+ try
+ {
+ return db.SearchBarCodeByTwo(BarCode);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+
+ public DataTable SearchSerialNoByBarCode(string stockNo,string batchNo)
+ {
+ try
+ {
+ return db.SearchSerialNoByBarCode(stockNo, batchNo);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+
+ public DataTable SearchInfoByBarCode(string BarCode)
+ {
+ try
+ {
+ return db.SearchInfoByBarCode(BarCode);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+
+ public bool Update_Info(BarCodeModel md)
+ {
+ try
+ {
+ return db.UpdateInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+
+ public bool DelBarCode(BarCodeModel md)
+ {
+ try
+ {
+ return db.DelBarCode(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+
+ public DataTable SearchOneBarCode(string barCode,int a)
+ {
+ try
+ {
+ return db.SearchOneBarCode(barCode,a);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/BomBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/BomBLL.cs
new file mode 100644
index 0000000..3ee0387
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/BomBLL.cs
@@ -0,0 +1,271 @@
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.EFModel;
+using MESClassLibrary.Model;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using MESClassLibrary.DAL.BasicInfo;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+ public class BomBLL
+ {
+ BasicBLL db = new BasicBLL();
+
+ ///
+ /// 新增信息
+ ///
+ ///
+ ///
+ public bool AddInfo(tb_Bom md)
+ {
+ try
+ {
+ var list = db.SearchInfoByKey("PartNo1", md.PartNo1);//判断是否有重复数据
+ if (list != null)
+ {
+ if (list.Where(p => p.BomID != md.BomID).Count() > 0)
+ {
+ return false;
+ }
+
+ }
+
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ ///
+ ///
+ public bool UpdateInfo(tb_Bom md)
+ {
+ try
+ {
+ var list = db.SearchAllInfo().Where(p => p.PartNo1 == md.PartNo1 && p.BomID != md.BomID).ToList();//判断是否有重复数据
+ if (list.Count > 0)
+ {
+ return false;
+ }
+
+ //初始化要更新的字段
+ string[] proNames = new string[2];
+ proNames[0] = "PartNo1";
+ proNames[1] = "PartNo2";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 删除信息
+ ///
+ ///
+ ///
+ ///
+ public bool DeleteInfo(tb_Bom md)
+ {
+ try
+ {
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 查询全部信息分页
+ ///
+ ///
+ public string SearchInfoAll(string page, string pagesize, string partNo1)
+ {
+ try
+ {
+
+ string jsonStr = "[]";
+ int total = 0;//总行数
+ List list = db.SearchAllInfo();
+
+ if (!String.IsNullOrEmpty(partNo1))
+ {
+ list = list.Where(p => p.PartNo1.Contains(partNo1)).ToList();
+ }
+
+ if (list.Count > 0)
+ {
+ total = list.Count;
+
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+ List modelList = new List();
+ BasicBLL s_db = new BasicBLL();
+ var s_list = s_db.SearchAllInfo();
+
+ foreach (var item in list)
+ {
+ BomModel dm = Tool.Mapper(item);
+ var info = s_list.FirstOrDefault(p => p.PartNo == item.PartNo1);
+ if (info != null)
+ {
+ dm.ProductName1 = info.ProductName;
+ }
+
+ var info2 = s_list.FirstOrDefault(p => p.PartNo == item.PartNo2);
+ if (info2 != null)
+ {
+ dm.ProductName2 = info2.ProductName;
+ }
+
+ modelList.Add(dm);
+ }
+
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = modelList;
+ jsonStr = JSONTools.ScriptSerialize>(md);
+ }
+ return jsonStr;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+
+ ///
+ /// 查询全部信息
+ ///
+ ///
+ public List SearchAll()
+ {
+ try
+ {
+ var s_list = db.SearchAllInfo().ToList();
+ return s_list;
+ }
+ catch (Exception)
+ {
+ return null;
+ }
+ }
+
+ ///
+ /// 根据ID查询信息
+ ///
+ ///
+ ///
+ public tb_Bom SearchInfoByID(string id)
+ {
+ try
+ {
+ return db.SearchInfoByID(id);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+
+ public DataTable SearchBom(string PartNo)
+ {
+ BomDAL dal=new BomDAL();
+ try
+ {
+ return dal.SearchBom(PartNo);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+
+ public DataTable Search(string partNo1, string partNo2)
+ {
+ BomDAL dal = new BomDAL();
+ try
+ {
+ return dal.Search(partNo1, partNo2);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+
+ public bool AddInfo(BomModel md)
+ {
+ BomDAL dal = new BomDAL();
+ try
+ {
+ return dal.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+
+ public bool updateInfo(BomModel md)
+ {
+ BomDAL dal = new BomDAL();
+ try
+ {
+ return dal.updateInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+
+ public bool DelInfo(BomModel md)
+ {
+ BomDAL dal = new BomDAL();
+ try
+ {
+ return dal.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/BucketInfoBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/BucketInfoBLL.cs
new file mode 100644
index 0000000..89d654a
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/BucketInfoBLL.cs
@@ -0,0 +1,184 @@
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.EFModel;
+using MESClassLibrary.Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+
+ public class BucketInfoBLL
+ {
+ BasicBLL db = new BasicBLL();
+
+ ///
+ /// 新增信息
+ ///
+ ///
+ ///
+ public bool AddInfo(tb_BucketInfo md)
+ {
+ try
+ {
+ var list = db.SearchInfoByKey("BucketCode", md.BucketCode);//判断是否有重复数据
+ if (list != null)
+ {
+ if (list.Where(p => p.ID != md.ID && p.IsUsing == 1).Count() > 0)
+ {
+ return false;
+ }
+
+ }
+
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ ///
+ ///
+ public bool UpdateInfo(tb_BucketInfo md)
+ {
+ try
+ {
+ var list = db.SearchAllInfo().Where(p => p.BucketCode == md.BucketCode && p.ID != md.ID && p.IsUsing == 1).ToList();//判断是否有重复数据
+ if (list.Count > 0)
+ {
+ return false;
+ }
+
+ //初始化要更新的字段
+ string[] proNames = new string[3];
+ proNames[0] = "BucketCode";
+ proNames[1] = "BucketName";
+ proNames[2] = "IsUsing";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+ //md.Des = "";
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 删除信息
+ ///
+ ///
+ ///
+ ///
+ public bool DeleteInfo(tb_BucketInfo md)
+ {
+ try
+ {
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 查询全部信息分页
+ ///
+ ///
+ public string SearchInfoAll(string page, string pagesize, string BucketCode)
+ {
+ try
+ {
+ string jsonStr = "[]";
+ int total = 0;//总行数
+
+ List list = db.SearchAllInfo();
+
+ if (!String.IsNullOrEmpty(BucketCode))
+ {
+ list = list.Where(p => p.BucketCode.Contains(BucketCode)).ToList();
+ }
+
+ total = list.Count;
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = list;
+ return JSONTools.ScriptSerialize(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+
+ ///
+ /// 根据ID查询信息
+ ///
+ ///
+ ///
+ public tb_BucketInfo SearchInfoByID(string id)
+ {
+ try
+ {
+ return db.SearchInfoByID(id);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+
+ public string GetComboboxData()
+ {
+ try
+ {
+ string jsonStr = "[]";
+ var list = db.SearchAllInfo().ToList();//判断是否有重复数据
+
+ List sl = new List();
+
+ foreach (var item in list)
+ {
+ SelectModel md = new SelectModel();
+ md.textField = item.BucketCode+"--"+ item.BucketName;
+ md.valueField = item.ID;
+ sl.Add(md);
+ }
+
+ jsonStr = JSONTools.ScriptSerialize(sl);
+ return jsonStr;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return "";
+ }
+
+
+ }
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/CheckItemBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/CheckItemBLL.cs
new file mode 100644
index 0000000..9267efd
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/CheckItemBLL.cs
@@ -0,0 +1,198 @@
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.EFModel;
+using MESClassLibrary.Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+ public class CheckItemBLL
+ {
+ BasicBLL db = new BasicBLL();
+ ///
+ /// 查询信息
+ ///
+ ///
+ public string SearchInfo(string page, string pagesize, string CheckContent, string DeviceID)
+ {
+ try
+ {
+ string jsonStr = "[]";
+ int total = 0;//总行数
+ List list = db.SearchAllInfo();
+
+ if (!String.IsNullOrEmpty(DeviceID))
+ {
+ list = list.Where(p => p.DeviceID == DeviceID).ToList();
+ }
+
+ if (!String.IsNullOrEmpty(CheckContent))
+ {
+ list = list.Where(p => p.CheckContent.Contains(CheckContent)).ToList();
+ }
+
+ if (list.Count > 0)
+ {
+ total = list.Count;
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+ #region 联查
+ List ModelList = new List();
+ BasicBLL p_db = new BasicBLL();
+ var p_list = p_db.SearchAllInfo().ToList();
+ foreach (var item in list)
+ {
+ CheckItemModel dm = Tool.Mapper(item);
+ var info = p_list.FirstOrDefault(p => p.DeviceID == item.DeviceID);
+ if (info != null)
+ {
+ dm.DeviceName = info.DeviceName;
+ }
+ ModelList.Add(dm);
+ }
+ #endregion
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = ModelList;
+ jsonStr = JSONTools.ScriptSerialize>(md);
+ }
+ return jsonStr;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return "";
+ }
+
+
+ }
+ ///
+ /// 添加信息
+ ///
+ /// 生产线模型对象
+ ///
+ public bool AddInfo(tb_CheckItem md)
+ {
+ try
+ {
+ var list = db.SearchInfoByKey("CheckContent", md.CheckContent);//判断是否有重复数据
+ if (list != null)
+ {
+ if (list.Where(p => p.DeviceID.Equals(md.DeviceID)).Count() > 0)
+ {
+ return false;
+ }
+
+ }
+
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ /// 生产线模型对象
+ ///
+ public bool UpdateInfo(tb_CheckItem md)
+ {
+ try
+ {
+ var list = db.SearchAllInfo().Where(p => p.CheckContent == md.CheckContent && p.DeviceID == md.DeviceID && p.ID != md.ID).ToList();//判断是否有重复数据
+ if (list.Count > 0)
+ {
+ return false;
+ }
+
+ //初始化要更新的字段
+ string[] proNames = new string[3];
+ proNames[0] = "DeviceID";
+ proNames[1] = "CheckContent";
+ proNames[2] = "CheckVersion";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+ //md.Des = "";
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+ /// 删除生产线信息
+ public bool DelInfo(tb_CheckItem md)
+ {
+ try
+ {
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+
+ public string GetComboboxData()
+ {
+ try
+ {
+ string jsonStr = "[]";
+ var list = db.SearchAllInfo().ToList();//判断是否有重复数据
+ jsonStr = JSONTools.ScriptSerialize>(list);
+ return jsonStr;
+ }
+ catch (Exception)
+ {
+ return "";
+ }
+ }
+
+ public string GetTreeData(string deviceID)
+ {
+ try
+ {
+ string jsonStr = "[]";
+ BasicBLL li_db = new BasicBLL();
+ List trlist = new List();
+ TreeModel tr = new TreeModel();
+ tr.id = "-1";
+ tr.text = "点检项";
+ tr.state = "open";
+ var li_list = li_db.SearchAllInfo().Where(p => p.DeviceID.Equals(deviceID)).ToList();
+ var queryData = from a in li_list
+ select new ChildTreeModel
+ {
+ id = a.ID,
+ text = a.CheckContent
+ };
+ List clist = queryData.ToList();
+ if (clist.Count > 0)
+ {
+ tr.children = clist;
+ trlist.Add(tr);
+ }
+ jsonStr = JSONTools.ScriptSerialize>(trlist);
+ return jsonStr;
+ }
+ catch (Exception)
+ {
+ return "";
+ }
+ }
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/ColorBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/ColorBLL.cs
new file mode 100644
index 0000000..4245237
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/ColorBLL.cs
@@ -0,0 +1,214 @@
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.EFModel;
+using MESClassLibrary.Model;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Reflection;
+using MESClassLibrary.DAL.BasicInfo;
+
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+
+ public class ColorBLL
+ {
+ BasicBLL db = new BasicBLL();
+
+ ///
+ /// 新增信息
+ ///
+ ///
+ ///
+ public bool AddInfo(tb_Color md)
+ {
+ try
+ {
+ //var list = db.SearchInfoByKey("ColorCode", md.ColorCode);//判断是否有重复数据
+ //if (list != null)
+ //{
+ // if (list.Where(p => p.ID != md.ID).Count() > 0)
+ // {
+ // return false;
+ // }
+
+ //}
+
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ ///
+ ///
+ public bool UpdateInfo(tb_Color md)
+ {
+ try
+ {
+ //var list = db.SearchAllInfo().Where(p => p.ColorCode == md.ColorCode && p.ID != md.ID).ToList();//判断是否有重复数据
+ //if (list.Count > 0)
+ //{
+ // return false;
+ //}
+
+ //初始化要更新的字段
+ string[] proNames = new string[5];
+ proNames[0] = "ColorCode";
+ proNames[1] = "ColorNo";
+ proNames[2] = "ColorQQCode";
+ proNames[3] = "Des";
+ proNames[4] = "ColorDQCode";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+ //md.Des = "";
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 删除信息
+ ///
+ ///
+ ///
+ ///
+ public bool DeleteInfo(tb_Color md)
+ {
+ try
+ {
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 查询全部信息分页
+ ///
+ ///
+ public string SearchInfoAll(string page, string pagesize,string ColorCode)
+ {
+ try
+ {
+ string jsonStr = "[]";
+ int total = 0;//总行数
+
+ List list = db.SearchAllInfo();
+
+ if (!String.IsNullOrEmpty(ColorCode))
+ {
+ list = list.Where(p => p.ColorCode.Contains(ColorCode)).ToList();
+ }
+
+ total = list.Count;
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = list;
+ return JSONTools.ScriptSerialize(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+
+ ///
+ /// 根据ID查询信息
+ ///
+ ///
+ ///
+ public tb_Color SearchInfoByID(string id)
+ {
+ try
+ {
+ return db.SearchInfoByID(id);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+
+ public string GetComboboxData()
+ {
+ try
+ {
+ string jsonStr = "[]";
+ var list = db.SearchAllInfo().Select(p=>p.Des).Distinct().ToList();//判断是否有重复数据
+
+ List sl = new List();
+
+ foreach (var item in list)
+ {
+ SelectModel md = new SelectModel();
+ md.textField = item;
+ md.valueField = item;
+ sl.Add(md);
+ }
+
+ jsonStr = JSONTools.ScriptSerialize(sl);
+ return jsonStr;
+ }
+ catch (Exception)
+ {
+ return "";
+ }
+
+
+ }
+
+ public DataTable SearchAll()
+ {
+ ColorDAL da = new ColorDAL();
+ try
+ {
+ return da.SearchInfoAll();
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+
+ public DataTable SearchByName(string color)
+ {
+ ColorDAL da = new ColorDAL();
+ try
+ {
+ return da.SearchByName(color);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/DefectBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/DefectBLL.cs
new file mode 100644
index 0000000..1e7b3f0
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/DefectBLL.cs
@@ -0,0 +1,181 @@
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.EFModel;
+using MESClassLibrary.Model;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using MESClassLibrary.DAL.BasicInfo;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+ public class DefectBLL
+ {
+ BasicBLL db = new BasicBLL();
+ ///
+ /// 查询信息
+ ///
+ ///
+ public string SearchInfo(string page, string pagesize, string DefectName, string LineID)
+ {
+ try
+ {
+ string jsonStr = "[]";
+ int total = 0;//总行数
+ List list = db.SearchAllInfo();
+
+ if (!String.IsNullOrEmpty(LineID))
+ {
+ list = list.Where(p => p.LineID == LineID).ToList();
+ }
+
+ if (!String.IsNullOrEmpty(DefectName))
+ {
+ list = list.Where(p => p.DefectName.Contains(DefectName)).ToList();
+ }
+
+ if (list.Count > 0)
+ {
+ total = list.Count;
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+ #region 联查
+ List ModelList = new List();
+ BasicBLL p_db = new BasicBLL();
+ var p_list = p_db.SearchAllInfo().ToList();
+ foreach (var item in list)
+ {
+ DefectModel dm = Tool.Mapper(item);
+ var info = p_list.FirstOrDefault(p => p.LineID == item.LineID);
+ if (info != null)
+ {
+ dm.LineName = info.LineName;
+ }
+ ModelList.Add(dm);
+ }
+ #endregion
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = ModelList;
+ jsonStr = JSONTools.ScriptSerialize>(md);
+ }
+ return jsonStr;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return "";
+ }
+
+
+ }
+ ///
+ /// 添加信息
+ ///
+ /// 生产线模型对象
+ ///
+ public bool AddInfo(tb_Defect md)
+ {
+ try
+ {
+ var list = db.SearchInfoByKey("DefectName", md.DefectName);//判断是否有重复数据
+ if (list != null)
+ {
+ if (list.Where(p => p.ID != md.ID).Count() > 0)
+ {
+ return false;
+ }
+
+ }
+
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ /// 生产线模型对象
+ ///
+ public bool UpdateInfo(tb_Defect md)
+ {
+ try
+ {
+ var list = db.SearchAllInfo().Where(p => p.DefectName == md.DefectName && p.ID != md.ID).ToList();//判断是否有重复数据
+ if (list.Count > 0)
+ {
+ return false;
+ }
+
+ //初始化要更新的字段
+ string[] proNames = new string[3];
+ proNames[0] = "LineID";
+ proNames[1] = "DefectName";
+ proNames[2] = "Des";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+ //md.Des = "";
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+ /// 删除生产线信息
+ public bool DelInfo(tb_Defect md)
+ {
+ try
+ {
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+
+ public string GetComboboxData()
+ {
+ try
+ {
+ string jsonStr = "[]";
+ var list = db.SearchAllInfo().ToList();//判断是否有重复数据
+ jsonStr = JSONTools.ScriptSerialize>(list);
+ return jsonStr;
+ }
+ catch (Exception)
+ {
+ return "";
+ }
+ }
+
+ public DataTable SearchInfo(string LineID)
+ {
+ DefectDAL da=new DefectDAL();
+ try
+ {
+ return da.SearchInfoAll(LineID);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/DeptBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/DeptBLL.cs
new file mode 100644
index 0000000..281c860
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/DeptBLL.cs
@@ -0,0 +1,144 @@
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.EFModel;
+using MESClassLibrary.Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+ public class DeptBLL
+ {
+ BasicBLL db = new BasicBLL();
+ ///
+ /// 查询信息
+ ///
+ ///
+ public string SearchInfo(string page, string pagesize, string DeptName)
+ {
+ try
+ {
+ string jsonStr = "[]";
+ int total = 0;//总行数
+ List list = db.SearchAllInfo();
+
+ if (!String.IsNullOrEmpty(DeptName))
+ {
+ list = list.Where(p => p.DeptName.Contains(DeptName)).ToList();//按条件分页查询
+ }
+
+ if (list.Count > 0)
+ {
+ total = list.Count;
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = list;
+ jsonStr = JSONTools.ScriptSerialize(md);
+ }
+ return jsonStr;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return "";
+ }
+
+
+ }
+ ///
+ /// 添加信息
+ ///
+ /// 生产线模型对象
+ ///
+ public bool AddInfo(TA_DEPT md)
+ {
+ try
+ {
+ var list = db.SearchInfoByKey("LineName", md.DeptName);//判断是否有重复数据
+ if (list != null)
+ {
+ if (list.Where(p => p.GUID != md.GUID).Count() > 0)
+ {
+ return false;
+ }
+
+ }
+
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ /// 生产线模型对象
+ ///
+ public bool UpdateInfo(TA_DEPT md)
+ {
+ try
+ {
+ var list = db.SearchAllInfo().Where(p => p.DeptName == md.DeptName && p.GUID != md.GUID).ToList();//判断是否有重复数据
+ if (list.Count > 0)
+ {
+ return false;
+ }
+
+ //初始化要更新的字段
+ string[] proNames = new string[3];
+ proNames[0] = "DeptCode";
+ proNames[1] = "DeptName";
+ proNames[2] = "Remark";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+ //md.Des = "";
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+ /// 删除生产线信息
+ public bool DelInfo(TA_DEPT md)
+ {
+ try
+ {
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+
+ public string GetComboboxData()
+ {
+ try
+ {
+ string jsonStr = "[]";
+ var list = db.SearchAllInfo().ToList();//判断是否有重复数据
+ jsonStr = JSONTools.ScriptSerialize>(list);
+ return jsonStr;
+ }
+ catch (Exception ex)
+ {
+ return "";
+ }
+ }
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/DeviceBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/DeviceBLL.cs
new file mode 100644
index 0000000..4b9d94c
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/DeviceBLL.cs
@@ -0,0 +1,251 @@
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.EFModel;
+using MESClassLibrary.Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+ public class DeviceBLL
+ {
+ BasicBLL db = new BasicBLL();
+ ///
+ /// 查询信息
+ ///
+ ///
+ public string SearchInfo(string page, string pagesize, string DeviceNo, string StationID)
+ {
+ try
+ {
+ string jsonStr = "[]";
+ int total = 0;//总行数
+ List list = db.SearchAllInfo();
+
+ if (!String.IsNullOrEmpty(StationID))
+ {
+ list = list.Where(p => p.StationID == StationID).ToList();//按条件分页查询
+ }
+
+ if (!String.IsNullOrEmpty(DeviceNo))
+ {
+ list = list.Where(p => p.DeviceNo.Contains(DeviceNo)).ToList();//按条件分页查询
+ }
+
+ if (list.Count > 0)
+ {
+ total = list.Count;
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+ #region 联查
+ List StationList = new List();
+ BasicBLL pl_db = new BasicBLL();
+ var pl_list = pl_db.SearchAllInfo().ToList();
+ foreach (var item in list)
+ {
+ DeviceModel dm = Tool.Mapper(item);
+ var info = pl_list.FirstOrDefault(p => p.StationID == item.StationID);
+ if (info != null)
+ {
+ dm.StationNo = info.StationNo;
+ }
+ StationList.Add(dm);
+ }
+ #endregion
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = StationList;
+ jsonStr = JSONTools.ScriptSerialize>(md);
+ }
+ return jsonStr;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return "";
+ }
+
+
+ }
+
+
+ public string SearchInfoByID(string DeviceID) {
+ try
+ {
+ string jsonStr = "[]";
+ tb_Device info = db.SearchInfoByID(DeviceID);
+ jsonStr = JSONTools.ScriptSerialize(info);
+ return jsonStr;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return "";
+ }
+ }
+
+
+ ///
+ /// 添加信息
+ ///
+ /// 生产线模型对象
+ ///
+ public bool AddInfo(tb_Device md)
+ {
+ try
+ {
+ var list = db.SearchInfoByKey("DeviceNo", md.DeviceNo);//判断是否有重复数据
+ if (list != null)
+ {
+ if (list.Where(p => p.DeviceID != md.DeviceID).Count() > 0)
+ {
+ return false;
+ }
+
+ }
+
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ /// 生产线模型对象
+ ///
+ public bool UpdateInfo(tb_Device md)
+ {
+ try
+ {
+ var list = db.SearchAllInfo().Where(p => p.DeviceNo == md.DeviceNo && p.DeviceID != md.DeviceID).ToList();//判断是否有重复数据
+ if (list.Count > 0)
+ {
+ return false;
+ }
+
+ //初始化要更新的字段
+ string[] proNames = new string[6];
+ proNames[0] = "StationID";
+ proNames[1] = "DeviceNo";
+ proNames[2] = "DeviceName";
+ proNames[3] = "FixNo";
+ proNames[4] = "Des";
+ proNames[5] = "DeviceModel";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+ //md.Des = "";
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+ /// 删除生产线信息
+ public bool DelInfo(tb_Device md)
+ {
+ try
+ {
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+
+ public string GetComboboxData()
+ {
+ try
+ {
+ string jsonStr = "[]";
+ var list = db.SearchAllInfo().ToList();//判断是否有重复数据
+ foreach (var item in list)
+ {
+ item.DeviceName = item.DeviceNo + "----" + item.DeviceName;
+ }
+ jsonStr = JSONTools.ScriptSerialize>(list);
+ return jsonStr;
+ }
+ catch (Exception)
+ {
+ return "";
+ }
+
+
+ }
+
+ public string QueryForComboboxByLineID(string fl_id)
+ {
+ try
+ {
+ string jsonStr = "[]";
+ var list = db.SearchAllInfo().ToList();//判断是否有重复数据
+ if (fl_id != null && fl_id != "")
+ {
+ BasicBLL s_db = new BasicBLL();
+ var s_list = s_db.SearchAllInfo().Where(p => p.LineID == fl_id).ToList();//判断是否有重复数据
+ if (s_list.Count > 0)
+ {
+ string[] arr = s_list.Select(p => p.StationID).ToArray();
+ list = list.Where(p => arr.Contains(p.StationID)).ToList();
+ foreach (var item in list)
+ {
+ item.DeviceName = item.DeviceNo + "----" + item.DeviceName;
+ }
+ jsonStr = JSONTools.ScriptSerialize>(list);
+ return jsonStr;
+ }
+ }
+ return "";
+ }
+ catch (Exception)
+ {
+ return "";
+ }
+
+
+ }
+
+ public string QueryForComboboxByStationID(string fl_id)
+ {
+ try
+ {
+ string jsonStr = "[]";
+
+ if (fl_id != null && fl_id != "")
+ {
+ var list = db.SearchAllInfo().Where(p => p.StationID == fl_id).ToList();//判断是否有重复数据
+ foreach (var item in list)
+ {
+ item.DeviceName = item.DeviceNo + "----" + item.DeviceName;
+ }
+ jsonStr = JSONTools.ScriptSerialize>(list);
+ return jsonStr;
+ }
+ return "";
+ }
+ catch (Exception)
+ {
+ return "";
+ }
+
+
+ }
+
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/FactoryBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/FactoryBLL.cs
new file mode 100644
index 0000000..68ec1a7
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/FactoryBLL.cs
@@ -0,0 +1,148 @@
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.EFModel;
+using MESClassLibrary.Model;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+ public class FactoryBLL
+ {
+ BasicBLL db = new BasicBLL();
+ ///
+ /// 查询信息
+ ///
+ ///
+ public string SearchInfo(string page, string pagesize, string FactoryName)
+ {
+ try
+ {
+ string jsonStr = "[]";
+ int total = 0;//总行数
+ List list = db.SearchAllInfo();
+
+
+ if (!String.IsNullOrEmpty(FactoryName))
+ {
+ list = list.Where(p => p.FactoryName.Contains(FactoryName)).ToList();//按条件分页查询
+ }
+
+ if (list.Count > 0)
+ {
+ total = list.Count;
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = list;
+ jsonStr = JSONTools.ScriptSerialize>(md);
+ }
+ return jsonStr;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return "";
+ }
+
+
+ }
+ ///
+ /// 添加信息
+ ///
+ /// 生产线模型对象
+ ///
+ public bool AddInfo(tb_Factory md)
+ {
+ try
+ {
+ var list = db.SearchInfoByKey("FactoryName", md.FactoryName);//判断是否有重复数据
+ if (list != null)
+ {
+ if (list.Where(p => p.FactoryID != md.FactoryID).Count() > 0)
+ {
+ return false;
+ }
+
+ }
+
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ /// 生产线模型对象
+ ///
+ public bool UpdateInfo(tb_Factory md)
+ {
+ try
+ {
+ var list = db.SearchAllInfo().Where(p => p.FactoryName == md.FactoryName && p.FactoryID != md.FactoryID).ToList();//判断是否有重复数据
+ if (list.Count > 0)
+ {
+ return false;
+ }
+
+ //初始化要更新的字段
+ string[] proNames = new string[2];
+ proNames[0] = "FactoryName";
+ proNames[1] = "Des";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+ //md.Des = "";
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+ /// 删除生产线信息
+ public bool DelInfo(tb_Factory md)
+ {
+ try
+ {
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+
+ public string GetComboboxData()
+ {
+ try
+ {
+ string jsonStr = "[]";
+ var list = db.SearchAllInfo().ToList();//判断是否有重复数据
+ jsonStr = JSONTools.ScriptSerialize>(list);
+ return jsonStr;
+ }
+ catch (Exception)
+ {
+ return "";
+ }
+
+
+
+ }
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/ImgVideoBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/ImgVideoBLL.cs
new file mode 100644
index 0000000..096c2fe
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/ImgVideoBLL.cs
@@ -0,0 +1,141 @@
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.EFModel;
+using MESClassLibrary.Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+ public class ImgVideoBLL
+ {
+ BBMPTEntities ef = new BBMPTEntities();
+ BasicBLL db = new BasicBLL();
+
+ ///
+ /// 新增信息
+ ///
+ ///
+ ///
+ public bool AddInfo(tb_ImgVideo md)
+ {
+ try
+ {
+
+ var list = db.SearchInfoByKey("fileName", md.fileName);//判断是否有重复数据
+ if (list != null)
+ {
+ return false;
+
+ }
+
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ ///
+ ///
+ public bool UpdateInfo(tb_ImgVideo md)
+ {
+ try
+ {
+ //初始化要更新的字段
+ string[] proNames = new string[3];
+ proNames[0] = "fileUrl";
+ proNames[1] = "fileName";
+ proNames[2] = "UpdateTime";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+ //md.Des = "";
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 删除信息
+ ///
+ ///
+ ///
+ ///
+ public bool DeleteInfo(tb_ImgVideo md)
+ {
+ try
+ {
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 查询全部信息分页
+ ///
+ ///
+ public string SearchInfoAll(string page, string pagesize)
+ {
+ try
+ {
+ string jsonStr = "[]";
+ int total = 0;//总行数
+
+ List list = ef.tb_ImgVideo.OrderByDescending(p=>p.CreateTime).ToList();
+
+ total = list.Count;
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = list;
+ return JSONTools.ScriptSerialize(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+
+ ///
+ /// 根据ID查询信息
+ ///
+ ///
+ ///
+ public tb_ImgVideo SearchInfoByID(string id)
+ {
+ try
+ {
+ return db.SearchInfoByID(id);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/InjectionPlanBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/InjectionPlanBLL.cs
new file mode 100644
index 0000000..4750340
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/InjectionPlanBLL.cs
@@ -0,0 +1,419 @@
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.EFModel;
+using MESClassLibrary.Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using System.Data;
+using System.Data.SqlClient;
+using MESClassLibrary.DAL.BasicInfo;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+ public class InjectionPlanBLL
+ {
+ BBMPTEntities ef = new BBMPTEntities();
+ BasicBLL db = new BasicBLL();
+ InjectionPlanDAL dal = new InjectionPlanDAL();
+
+ ///
+ /// 新增信息
+ ///
+ ///
+ ///
+ public bool AddInfo(tb_InjectionPlan md)
+ {
+ try
+ {
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ ///
+ ///
+ public bool UpdateInfo(tb_InjectionPlan md)
+ {
+ try
+ {
+
+ //初始化要更新的字段
+ string[] proNames = new string[8];
+ proNames[0] = "StationID";
+ proNames[1] = "BeginTime";
+ proNames[2] = "StockNo";
+ proNames[3] = "PlanCount";
+ proNames[4] = "EndTime";
+ proNames[5] = "PlanDate";
+ proNames[6] = "RealCycle";
+ proNames[7] = "PartNo";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 删除信息
+ ///
+ ///
+ ///
+ ///
+ public bool DeleteInfo(tb_InjectionPlan md)
+ {
+ try
+ {
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 查询全部信息分页
+ ///
+ ///
+ public string SearchInfoAll(string page, string pagesize, string stationID, string stockNo)
+ {
+ try
+ {
+
+ string jsonStr = "[]";
+ int total = 0;//总行数
+ List list = db.SearchAllInfo().Where(p => p.IsFinish != 1).ToList();
+ if (!String.IsNullOrEmpty(stationID))
+ {
+ list = list.Where(p => p.StationID.Equals(stationID)).ToList();
+ }
+ if (!String.IsNullOrEmpty(stockNo))
+ {
+ list = list.Where(p => p.StockNo.Contains(stockNo)).ToList();
+ }
+
+ list = list.OrderBy(p => p.BeginTime).ToList();
+
+ List modelList = new List();
+ if (list.Count > 0)
+ {
+ total = list.Count;
+
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+
+ #region 联查
+ BasicBLL product_db = new BasicBLL();
+ var product_list = product_db.SearchAllInfo();
+
+ BasicBLL station_db = new BasicBLL();
+ var station_list = station_db.SearchAllInfo();
+
+ foreach (var item in list)
+ {
+ InjectionPlanModel dm = Tool.Mapper(item);
+ var product_info = product_list.FirstOrDefault(p => p.StockNo == item.StockNo);
+ if (product_info != null)
+ {
+ dm.PartNo = product_info.PartNo;
+ dm.ProductName = product_info.ProductName;
+ }
+
+ var station_info = station_list.FirstOrDefault(p => p.StationID == item.StationID);
+ if (station_info != null)
+ {
+ dm.StationNo = station_info.StationNo;
+ }
+
+ modelList.Add(dm);
+ }
+ #endregion
+
+
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = modelList;
+ jsonStr = JSONTools.ScriptSerialize(md);
+ }
+ return jsonStr;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+
+ public string SearchInfoAll2(string page, string pagesize, string stationID, string stockNo, string StartTime, string EndTime)
+ {
+ try
+ {
+
+ string jsonStr = "[]";
+ int total = 0;//总行数
+
+ total = dal.SearchByTimeCount(stationID, stockNo, StartTime, EndTime);
+ DataTable dt = dal.SearchByTime(Convert.ToInt32(page), Convert.ToInt32(pagesize), stationID, stockNo, StartTime, EndTime);
+
+ List list = Tool.ConvertTo(dt).ToList();
+
+ //List list = ef.tb_InjectionPlan.Where(p => DateTime.Parse(p.BeginTime) >= stime && DateTime.Parse(p.EndTime) <= etime).ToList();
+
+
+ if (!String.IsNullOrEmpty(stationID))
+ {
+ list = list.Where(p => p.StationID.Equals(stationID)).ToList();
+ }
+ if (!String.IsNullOrEmpty(stockNo))
+ {
+ list = list.Where(p => p.StockNo.Contains(stockNo)).ToList();
+ }
+
+ list = list.OrderBy(p => p.BeginTime).ToList();
+
+ List modelList = new List();
+ if (list.Count > 0)
+ {
+ total = list.Count;
+
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+
+ #region 联查
+ BasicBLL product_db = new BasicBLL();
+ var product_list = product_db.SearchAllInfo();
+
+ BasicBLL station_db = new BasicBLL();
+ var station_list = station_db.SearchAllInfo();
+
+ foreach (var item in list)
+ {
+ InjectionPlanModel dm = Tool.Mapper(item);
+ var product_info = product_list.FirstOrDefault(p => p.StockNo == item.StockNo);
+ if (product_info != null)
+ {
+ dm.PartNo = product_info.PartNo;
+ dm.ProductName = product_info.ProductName;
+ }
+
+ var station_info = station_list.FirstOrDefault(p => p.StationID == item.StationID);
+ if (station_info != null)
+ {
+ dm.StationNo = station_info.StationNo;
+ }
+
+ modelList.Add(dm);
+ }
+ #endregion
+
+
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = modelList;
+ jsonStr = JSONTools.ScriptSerialize(md);
+ }
+ return jsonStr;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+ public bool UpdateInfo2(tb_InjectionPlan md)
+ {
+ try
+ {
+
+ //初始化要更新的字段
+ string[] proNames = new string[3];
+ proNames[0] = "workClass";
+ proNames[1] = "JK_Weight";
+ proNames[2] = "Waste_Weight";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 查询全部信息
+ ///
+ ///
+ public List SearchAll()
+ {
+ try
+ {
+ var s_list = db.SearchAllInfo().ToList();
+ return s_list;
+ }
+ catch (Exception)
+ {
+ return null;
+ }
+ }
+
+ ///
+ /// 根据ID查询信息
+ ///
+ ///
+ ///
+ public tb_InjectionPlan SearchInfoByID(string id)
+ {
+ try
+ {
+ return db.SearchInfoByID(id);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+
+ public String GetEndTime(tb_InjectionPlan md)
+ {
+ try
+ {
+ BasicBLL Plastic_db = new BasicBLL();
+
+ var info = from c in Plastic_db.SearchAllInfo()
+ where c.StockNo == md.StockNo && c.StationID == md.StationID && c.IsBackup == 1
+ select c.CycleTime;
+
+ if (info.FirstOrDefault() != null)
+ {
+ double seconds = Convert.ToDouble(info.FirstOrDefault().Value) * Convert.ToDouble(md.PlanCount);
+ return Convert.ToDateTime(md.BeginTime).AddSeconds(seconds).ToString("yyyy-MM-dd HH:mm:ss");
+ }
+ return md.BeginTime;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+
+ public DataTable SearchInfoByName(string StationID)
+ {
+ try
+ {
+ return dal.SearchPlanByStation(StationID);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+ public DataTable NextSearchInfoByName(string StationID)
+ {
+ try
+ {
+ return dal.NextSearchPlanByStation(StationID);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+
+ public bool UpdateFinish(InjectionPlanModel md)
+ {
+ InjectionPlanDAL dal = new InjectionPlanDAL();
+ try
+ {
+ return dal.UpdateFinish(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+
+
+ public string GetStartTime(string StationID)
+ {
+
+ var bf = db.SearchInfoByKey("StationID", StationID).OrderByDescending(p => p.EndTime).FirstOrDefault();
+ if (bf != null)
+ {
+ return bf.EndTime;
+ }
+
+ return "";
+
+ }
+
+ public List isExit(string startTime, string endTime, string stationID, string stockNo)
+ {
+ try
+ {
+ return db.SearchAllInfo().Where(p =>
+ p.StationID == stationID && p.BeginTime == startTime && p.EndTime == endTime &&
+ p.StockNo == stockNo)
+ .ToList();
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+
+
+ //public bool DeleteInfoByAPS(tb_InjectionPlan md)
+ //{
+ // try
+ // {
+
+ // }
+ // catch (Exception ex)
+ // {
+ // LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod());
+ // return false;
+ // }
+ //}
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/LineBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/LineBLL.cs
new file mode 100644
index 0000000..58d9540
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/LineBLL.cs
@@ -0,0 +1,170 @@
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.EFModel;
+using MESClassLibrary.Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+ public class LineBLL
+ {
+ BasicBLL db = new BasicBLL();
+ ///
+ /// 查询信息
+ ///
+ ///
+ public string SearchInfo(string page, string pagesize, string LineName, string PlaceID, string userID)
+ {
+ try
+ {
+ string jsonStr = "[]";
+ int total = 0;//总行数
+ List list = db.SearchAllInfo();
+
+ //数据权限
+ //BasicBLL userdb = new BasicBLL();
+ //T_Sys_Users user = userdb.SearchInfoByID(userID);
+ //List list = db.SearchInfoContains("LineName", user.Department);
+
+ if (!String.IsNullOrEmpty(PlaceID))
+ {
+ list = list.Where(p => p.PlaceID == PlaceID).ToList();//按条件分页查询
+ }
+
+ if (!String.IsNullOrEmpty(LineName))
+ {
+ list = list.Where(p => p.LineName.Contains(LineName)).ToList();//按条件分页查询
+ }
+
+ if (list.Count > 0)
+ {
+ total = list.Count;
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+ #region 联查
+ List ModelList = new List();
+ BasicBLL p_db = new BasicBLL();
+ var p_list = p_db.SearchAllInfo().ToList();
+ foreach (var item in list)
+ {
+ LineModel dm = Tool.Mapper(item);
+ var info = p_list.FirstOrDefault(p => p.PlaceID == item.PlaceID);
+ if (info != null)
+ {
+ dm.PlaceName = info.PlaceName;
+ }
+ ModelList.Add(dm);
+ }
+ #endregion
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = ModelList;
+ jsonStr = JSONTools.ScriptSerialize>(md);
+ }
+ return jsonStr;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return "";
+ }
+
+
+ }
+ ///
+ /// 添加信息
+ ///
+ /// 生产线模型对象
+ ///
+ public bool AddInfo(tb_Line md)
+ {
+ try
+ {
+ var list = db.SearchInfoByKey("LineName", md.LineName);//判断是否有重复数据
+ if (list != null)
+ {
+ if (list.Where(p => p.LineID != md.LineID).Count() > 0)
+ {
+ return false;
+ }
+
+ }
+
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ /// 生产线模型对象
+ ///
+ public bool UpdateInfo(tb_Line md)
+ {
+ try
+ {
+ var list = db.SearchAllInfo().Where(p => p.LineName == md.LineName && p.LineID != md.LineID).ToList();//判断是否有重复数据
+ if (list.Count > 0)
+ {
+ return false;
+ }
+
+ //初始化要更新的字段
+ string[] proNames = new string[3];
+ proNames[0] = "PlaceID";
+ proNames[1] = "LineName";
+ proNames[2] = "Des";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+ //md.Des = "";
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+ /// 删除生产线信息
+ public bool DelInfo(tb_Line md)
+ {
+ try
+ {
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+
+ public string GetComboboxData()
+ {
+ try
+ {
+ string jsonStr = "[]";
+ var list = db.SearchAllInfo().ToList();//判断是否有重复数据
+ jsonStr = JSONTools.ScriptSerialize>(list);
+ return jsonStr;
+ }
+ catch (Exception)
+ {
+ return "";
+ }
+ }
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/LocationBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/LocationBLL.cs
new file mode 100644
index 0000000..4b2214b
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/LocationBLL.cs
@@ -0,0 +1,149 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.EFModel;
+using MESClassLibrary.Model;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+ public class LocationBLL
+ {
+ BasicBLL db = new BasicBLL();
+
+ ///
+ /// 查询信息
+ ///
+ ///
+ public string SearchInfo(string page, string pagesize, string Location)
+ {
+ try
+ {
+ string jsonStr = "[]";
+ int total = 0; //总行数
+ List list = db.SearchAllInfo();
+
+
+ if (!String.IsNullOrEmpty(Location))
+ {
+ list = list.Where(p => p.Location.Contains(Location)).ToList(); //按条件分页查询
+ }
+
+ if (list.Count > 0)
+ {
+ total = list.Count;
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = list;
+ jsonStr = JSONTools.ScriptSerialize>(md);
+ }
+
+ return jsonStr;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return "";
+ }
+ }
+
+ ///
+ /// 添加信息
+ ///
+ /// 生产线模型对象
+ ///
+ public bool AddInfo(tb_Location md)
+ {
+ try
+ {
+ var list = db.SearchInfoByKey("Location", md.Location);//判断是否有重复数据
+ if (list != null)
+ {
+ if (list.Where(p => p.ID != md.ID).Count() > 0)
+ {
+ return false;
+ }
+ }
+
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ /// 生产线模型对象
+ ///
+ public bool UpdateInfo(tb_Location md)
+ {
+ try
+ {
+ var list = db.SearchAllInfo().Where(p => p.Location == md.Location && p.ID != md.ID).ToList();//判断是否有重复数据
+ if (list.Count > 0)
+ {
+ return false;
+ }
+
+ //初始化要更新的字段
+ string[] proNames = new string[1];
+ proNames[0] = "Location";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+ //md.Des = "";
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+ /// 删除生产线信息
+ public bool DelInfo(tb_Location md)
+ {
+ try
+ {
+ BasicBLL db1=new BasicBLL();
+
+ var list = db1.SearchAllInfo().Where(p => p.LocationID == md.ID).ToList();
+ if (list.Count > 0)
+ {
+ return false;
+ }
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+
+ public string GetComboboxData()
+ {
+ try
+ {
+ string jsonStr = "[]";
+ var list = db.SearchAllInfo().ToList(); //判断是否有重复数据
+ jsonStr = JSONTools.ScriptSerialize>(list);
+ return jsonStr;
+ }
+ catch (Exception)
+ {
+ return "";
+ }
+ }
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/MachineBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/MachineBLL.cs
new file mode 100644
index 0000000..a38c035
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/MachineBLL.cs
@@ -0,0 +1,184 @@
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.EFModel;
+using MESClassLibrary.Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+ public class MachineBLL
+ {
+ BasicBLL db = new BasicBLL();
+
+ ///
+ /// 新增信息
+ ///
+ ///
+ ///
+ public bool AddInfo(tb_Machine md)
+ {
+ try
+ {
+ var list = db.SearchInfoByKey("MachineNo", md.MachineNo);//判断是否有重复数据
+ if (list != null)
+ {
+ if (list.Where(p => p.MachineID != md.MachineID).Count() > 0)
+ {
+ return false;
+ }
+
+ }
+
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ ///
+ ///
+ public bool UpdateInfo(tb_Machine md)
+ {
+ try
+ {
+ var list = db.SearchAllInfo().Where(p => p.MachineNo == md.MachineNo && p.MachineID != md.MachineID).ToList();//判断是否有重复数据
+ if (list.Count > 0)
+ {
+ return false;
+ }
+
+ //初始化要更新的字段
+ string[] proNames = new string[2];
+ proNames[0] = "MachineNo";
+ proNames[1] = "Des";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+ //md.Des = "";
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 删除信息
+ ///
+ ///
+ ///
+ ///
+ public bool DeleteInfo(tb_Machine md)
+ {
+ try
+ {
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 查询全部信息分页
+ ///
+ ///
+ public string SearchInfoAll(string page, string pagesize, string machineNo)
+ {
+ string jsonStr = "[]";
+ int total = 0;//总行数
+ List list = db.SearchAllInfo();
+
+ if (!String.IsNullOrEmpty(machineNo))
+ {
+ list = list.Where(p => p.MachineNo.Contains(machineNo)).ToList();
+ }
+
+ if (list.Count > 0)
+ {
+ total = list.Count;
+
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = list;
+ jsonStr = JSONTools.ScriptSerialize>(md);
+ }
+ return jsonStr;
+
+ }
+
+ ///
+ /// 查询全部信息
+ ///
+ ///
+ public List SearchAll()
+ {
+ try
+ {
+ var s_list = db.SearchAllInfo().ToList();
+ return s_list;
+ }
+ catch (Exception)
+ {
+ return null;
+ }
+ }
+
+ ///
+ /// 根据ID查询信息
+ ///
+ ///
+ ///
+ public tb_Machine SearchInfoByID(string id)
+ {
+ try
+ {
+ return db.SearchInfoByID(id);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+
+ //下拉框查询方法
+ public string GetComboboxData()
+ {
+ try
+ {
+ string jsonStr = "[]";
+ var list = db.SearchAllInfo().ToList();
+ jsonStr = JSONTools.ScriptSerialize>(list);
+ return jsonStr;
+ }
+ catch (Exception)
+ {
+ return "";
+ }
+
+
+ }
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/ModelInfoBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/ModelInfoBLL.cs
new file mode 100644
index 0000000..17797de
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/ModelInfoBLL.cs
@@ -0,0 +1,208 @@
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.EFModel;
+using MESClassLibrary.Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+ public class ModelInfoBLL
+ {
+ BasicBLL db = new BasicBLL();
+
+ ///
+ /// 新增信息
+ ///
+ ///
+ ///
+ public bool AddInfo(tb_ModelInfo md)
+ {
+ try
+ {
+ var list = db.SearchInfoByKey("ModelNo", md.ModelNo);//判断是否有重复数据
+ if (list != null)
+ {
+ if (list.Where(p => p.ID != md.ID).Count() > 0)
+ {
+ return false;
+ }
+
+ }
+
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ ///
+ ///
+ public bool UpdateInfo(tb_ModelInfo md)
+ {
+ try
+ {
+ var list = db.SearchAllInfo().Where(p => p.ModelNo == md.ModelNo && p.ID != md.ID).ToList();//判断是否有重复数据
+ if (list.Count > 0)
+ {
+ return false;
+ }
+
+ //初始化要更新的字段
+ string[] proNames = new string[14];
+ proNames[0] = "ModelName";
+ proNames[1] = "ModelNo";
+ proNames[2] = "PermanentAssetsNo";
+ proNames[3] = "Tonnage";
+ proNames[4] = "ServiceLife";
+ proNames[5] = "Supplier";
+ proNames[6] = "PartWeight";
+ proNames[7] = "InjectionPeriod";
+ proNames[8] = "LocatingRingSize";
+ proNames[9] = "OutForm";
+ proNames[10] = "ModelWeight";
+ proNames[11] = "RunnerForm";
+ proNames[12] = "ModelCavityNo";
+ proNames[13] = "ModelSize";
+
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+ //md.Des = "";
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 删除信息
+ ///
+ ///
+ ///
+ ///
+ public bool DeleteInfo(tb_ModelInfo md)
+ {
+ try
+ {
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 查询全部信息分页
+ ///
+ ///
+ public string SearchInfoAll(string page, string pagesize, string ModelNo)
+ {
+ try
+ {
+ string jsonStr = "[]";
+ int total = 0;//总行数
+
+ List list = db.SearchAllInfo();
+
+ if (!String.IsNullOrEmpty(ModelNo))
+ {
+ list = list.Where(p => p.ModelNo.Contains(ModelNo)).ToList();
+ }
+
+ total = list.Count;
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = list;
+ return JSONTools.ScriptSerialize(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+
+ ///
+ /// 根据ID查询信息
+ ///
+ ///
+ ///
+ public tb_ModelInfo SearchInfoByID(string id)
+ {
+ try
+ {
+ return db.SearchInfoByID(id);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+
+ public string GetComboboxData()
+ {
+ try
+ {
+ string jsonStr = "[]";
+ var list = db.SearchAllInfo().OrderBy(p => p.ModelNo).ToList();//判断是否有重复数据
+
+ List sl = new List();
+
+ foreach (var item in list)
+ {
+ SelectModel md = new SelectModel();
+ md.textField = item.ModelName;
+ md.valueField = item.ID;
+ sl.Add(md);
+ }
+
+ jsonStr = JSONTools.ScriptSerialize(sl);
+ return jsonStr;
+ }
+ catch (Exception)
+ {
+ return "";
+ }
+
+
+ }
+
+ //public DataTable SearchAll()
+ //{
+ // ColorDAL da = new ColorDAL();
+ // try
+ // {
+ // return da.SearchInfoAll();
+ // }
+ // catch (Exception ex)
+ // {
+ // LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ // return null;
+ // }
+ //}
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/ModelUpdateBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/ModelUpdateBLL.cs
new file mode 100644
index 0000000..199d30b
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/ModelUpdateBLL.cs
@@ -0,0 +1,137 @@
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.EFModel;
+using MESClassLibrary.Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+
+ public class ModelUpdateBLL
+ {
+ BasicBLL db = new BasicBLL();
+
+ ///
+ /// 新增信息
+ ///
+ ///
+ ///
+ public bool AddUpdateInfo(tb_Model_Update md)
+ {
+ try
+ {
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ ///
+ ///
+ public bool UpdateInfo(tb_Model_Update md)
+ {
+ try
+ {
+ //初始化要更新的字段
+ string[] proNames = new string[5];
+ proNames[0] = "Purpose";
+ proNames[1] = "State";
+ proNames[2] = "Supplier";
+ proNames[3] = "Remarks";
+ proNames[4] = "AddTime";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+ //md.Des = "";
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 删除信息
+ ///
+ ///
+ ///
+ ///
+ public bool DeleteInfo(tb_Model_Update md)
+ {
+ try
+ {
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 查询全部信息分页
+ ///
+ ///
+ public string SearchInfoAll(string page, string pagesize, string ModelID)
+ {
+ try
+ {
+ string jsonStr = "[]";
+ int total = 0;//总行数
+
+ List list = db.SearchInfoByKey("ModelID", ModelID).OrderByDescending(p => p.AddTime).ToList();
+
+ total = list.Count;
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = list;
+ return JSONTools.ScriptSerialize(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+
+ ///
+ /// 根据ID查询信息
+ ///
+ ///
+ ///
+ public tb_Model_Update SearchInfoByID(string id)
+ {
+ try
+ {
+ return db.SearchInfoByID(id);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/OperatorBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/OperatorBLL.cs
new file mode 100644
index 0000000..20e13c6
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/OperatorBLL.cs
@@ -0,0 +1,185 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.Model;
+using MESClassLibrary.DAL.BasicInfo;
+using System.Data;
+using System.Data.SqlClient;
+using System.Reflection;
+using MESClassLibrary.EFModel;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+ public class OperatorBLL
+ {
+ BasicBLL db = new BasicBLL();
+
+ OperatorDAL dal = new OperatorDAL();
+
+ public DataTable SearchInfoByName(string OperatorName, string StationID)
+ {
+ try
+ {
+ return dal.SearchInfoByName(OperatorName, StationID);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+
+
+ public DataTable SearchInfoByNameAndPsw(string OperatorName, string StationID, string psw)
+ {
+ try
+ {
+ return dal.SearchInfoByNameAndPsw(OperatorName, StationID, psw);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+
+ ///
+ /// 查询信息
+ ///
+ ///
+ public string SearchInfo(string page, string pagesize, string OperatorName, string StationID)
+ {
+ try
+ {
+ string jsonStr = "[]";
+ int total = 0;//总行数
+ List list = db.SearchAllInfo();
+
+ if (!String.IsNullOrEmpty(StationID))
+ {
+ list = list.Where(p => p.StationID.Equals(StationID)).ToList();//按条件分页查询
+ }
+
+ if (!String.IsNullOrEmpty(OperatorName))
+ {
+ list = list.Where(p => p.OperatorName.Contains(OperatorName)).ToList();//按条件分页查询
+ }
+
+ if (list.Count > 0)
+ {
+ total = list.Count;
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+ #region 联查
+ List StationList = new List();
+ BasicBLL pl_db = new BasicBLL();
+ var pl_list = pl_db.SearchAllInfo().ToList();
+ foreach (var item in list)
+ {
+ OperatorModel dm = Tool.Mapper(item);
+ var info = pl_list.FirstOrDefault(p => p.StationID == item.StationID);
+ if (info != null)
+ {
+ dm.StationNo = info.StationNo;
+ }
+ StationList.Add(dm);
+ }
+ #endregion
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = StationList;
+ jsonStr = JSONTools.ScriptSerialize>(md);
+ }
+ return jsonStr;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return "";
+ }
+
+
+ }
+ ///
+ /// 添加信息
+ ///
+ /// 生产线模型对象
+ ///
+ public bool AddInfo(tb_Operator md)
+ {
+ try
+ {
+ var list = db.SearchInfoByKey("OperatorNo", md.OperatorNo);//判断是否有重复数据
+ if (list != null)
+ {
+ if (list.Where(p => p.OperatorID != md.OperatorID).Count() > 0)
+ {
+ return false;
+ }
+
+ }
+
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ /// 生产线模型对象
+ ///
+ public bool UpdateInfo(tb_Operator md)
+ {
+ try
+ {
+ var list = db.SearchAllInfo().Where(p => p.OperatorNo == md.OperatorNo && p.OperatorID != md.OperatorID).ToList();//判断是否有重复数据
+ if (list.Count > 0)
+ {
+ return false;
+ }
+
+ //初始化要更新的字段
+ string[] proNames = new string[5];
+ proNames[0] = "StationID";
+ proNames[1] = "OperatorNo";
+ proNames[2] = "OperatorName";
+ proNames[3] = "OperatorPsw";
+ proNames[4] = "Des";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+ //md.Des = "";
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+ /// 删除生产线信息
+ public bool DelInfo(tb_Operator md)
+ {
+ try
+ {
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/PaintInfoBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/PaintInfoBLL.cs
new file mode 100644
index 0000000..830fe66
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/PaintInfoBLL.cs
@@ -0,0 +1,335 @@
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.EFModel;
+using MESClassLibrary.Model;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+
+ public class PaintInfoBLL
+ {
+ BasicBLL dbPB = new BasicBLL();
+ BasicBLL db = new BasicBLL();
+
+ ///
+ /// 新增信息
+ ///
+ ///
+ ///
+ public bool AddInfo(tb_PaintInfo md)
+ {
+ try
+ {
+ var list = db.SearchInfoByKey("PaintCode", md.PaintCode);//判断是否有重复数据
+ if (list != null)
+ {
+ if (list.Where(p => p.ID != md.ID && p.IsUsing == 1).Count() > 0)
+ {
+ return false;
+ }
+
+ }
+
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ ///
+ ///
+ public bool UpdateInfo(tb_PaintInfo md)
+ {
+ try
+ {
+ var list = db.SearchAllInfo().Where(p => p.PaintCode == md.PaintCode && p.ID != md.ID && p.IsUsing == 1).ToList();//判断是否有重复数据
+ if (list.Count > 0)
+ {
+ return false;
+ }
+
+ //初始化要更新的字段
+ string[] proNames = new string[5];
+ proNames[0] = "PaintCode";
+ proNames[1] = "PaintName";
+ proNames[2] = "PaintModel";
+ //proNames[3] = "UnitCode";
+ proNames[3] = "CarModelCode";
+ proNames[4] = "IsUsing";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+ //md.Des = "";
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 删除信息
+ ///
+ ///
+ ///
+ ///
+ public bool DeleteInfo(tb_PaintInfo md)
+ {
+ try
+ {
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 查询全部信息分页
+ ///
+ ///
+ public string SearchInfoAll(string page, string pagesize, string PaintCode)
+ {
+ try
+ {
+ string jsonStr = "[]";
+ int total = 0;//总行数
+
+ List list = db.SearchAllInfo();
+
+ if (!String.IsNullOrEmpty(PaintCode))
+ {
+ list = list.Where(p => p.PaintCode.Contains(PaintCode)).ToList();
+ }
+
+ total = list.Count;
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = list;
+ return JSONTools.ScriptSerialize(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+
+ ///
+ /// 根据ID查询信息
+ ///
+ ///
+ ///
+ public tb_PaintInfo SearchInfoByID(string id)
+ {
+ try
+ {
+ return db.SearchInfoByID(id);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+
+ public string GetComboboxData()
+ {
+ try
+ {
+ string jsonStr = "[]";
+ var list = db.SearchAllInfo().ToList();//判断是否有重复数据
+
+ List sl = new List();
+
+ foreach (var item in list)
+ {
+ SelectModel md = new SelectModel();
+ md.textField = item.PaintCode + "--" + item.PaintName;
+ md.valueField = item.ID;
+ sl.Add(md);
+ }
+
+ jsonStr = JSONTools.ScriptSerialize(sl);
+ return jsonStr;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return "";
+ }
+
+
+ }
+
+
+ public string SearchRelation(string page, string pagesize, string PaintID, string BucketID)
+ {
+
+ try
+ {
+ string jsonStr = "[]";
+ int total = 0;//总行数
+
+
+ List list = dbPB.SearchAllInfo();
+
+ if (!String.IsNullOrEmpty(PaintID))
+ {
+ list = list.Where(p => p.PaintID == PaintID).ToList();
+ }
+
+ if (!String.IsNullOrEmpty(BucketID))
+ {
+ list = list.Where(p => p.BucketID == BucketID).ToList();
+ }
+
+ total = list.Count;
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+
+ List modelList = new List();
+
+ #region 联查
+ BasicBLL PaintInfo_db = new BasicBLL();
+ var PaintInfo_list = PaintInfo_db.SearchAllInfo();
+
+ BasicBLL BucketInfo_db = new BasicBLL();
+ var BucketInfo_list = BucketInfo_db.SearchAllInfo();
+
+ foreach (var item in list)
+ {
+ Paint_BucketModel dm = Tool.Mapper(item);
+ var PaintInfo_info = PaintInfo_list.FirstOrDefault(p => p.ID == item.PaintID);
+ if (PaintInfo_info != null)
+ {
+ dm.PaintCode = PaintInfo_info.PaintCode;
+ dm.PaintName = PaintInfo_info.PaintName;
+ }
+
+ var BucketInfo_info = BucketInfo_list.FirstOrDefault(p => p.ID == item.BucketID);
+ if (BucketInfo_info != null)
+ {
+ dm.BucketCode = BucketInfo_info.BucketCode;
+ dm.BucketName = BucketInfo_info.BucketName;
+ }
+
+ modelList.Add(dm);
+ }
+ #endregion
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = modelList;
+ return JSONTools.ScriptSerialize(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+ }
+
+ ///
+ /// 新增信息
+ ///
+ ///
+ ///
+ public bool AddRelation(tb_Paint_Bucket md)
+ {
+ try
+ {
+ var list = dbPB.SearchAllInfo().Where(p => p.PaintID == md.PaintID && p.BucketID == md.BucketID).ToList();//判断是否有重复数据
+ if (list.Count > 0)
+ {
+ return false;
+ }
+ return dbPB.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ ///
+ ///
+ public bool UpdateRelation(tb_Paint_Bucket md)
+ {
+ try
+ {
+ var list = dbPB.SearchAllInfo().Where(p => p.PaintID == md.PaintID && p.ID != md.ID && p.BucketID == md.BucketID).ToList();//判断是否有重复数据
+ if (list.Count > 0)
+ {
+ return false;
+ }
+
+ //初始化要更新的字段
+ string[] proNames = new string[2];
+ proNames[0] = "PaintID";
+ proNames[1] = "BucketID";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+ //md.Des = "";
+
+ return dbPB.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ public bool DeleteRelation(tb_Paint_Bucket md)
+ {
+ try
+ {
+ List ef = dbPB.SearchInfoByKey("ID", md.ID);
+ if (ef!=null && ef.Count>0)
+ {
+ return dbPB.DelInfo(ef.First());
+ }
+ return false;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/PlaceBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/PlaceBLL.cs
new file mode 100644
index 0000000..52b4c86
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/PlaceBLL.cs
@@ -0,0 +1,165 @@
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.EFModel;
+using MESClassLibrary.Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+ public class PlaceBLL
+ {
+ BasicBLL db = new BasicBLL();
+ ///
+ /// 查询信息
+ ///
+ ///
+ public string SearchInfo(string page, string pagesize, string PlaceName, string FactoryID)
+ {
+ try
+ {
+ string jsonStr = "[]";
+ int total = 0;//总行数
+ List list = db.SearchAllInfo();
+
+ if (!String.IsNullOrEmpty(FactoryID))
+ {
+ list = list.Where(p => p.FactoryID == FactoryID).ToList();//按条件分页查询
+ }
+
+ if (!String.IsNullOrEmpty(PlaceName))
+ {
+ list = list.Where(p => p.PlaceName.Contains(PlaceName)).ToList();//按条件分页查询
+ }
+
+ if (list.Count > 0)
+ {
+ total = list.Count;
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+ #region 联查
+ List ModelList = new List();
+ BasicBLL p_db = new BasicBLL();
+ var p_list = p_db.SearchAllInfo().ToList();
+ foreach (var item in list)
+ {
+ PlaceModel dm = Tool.Mapper(item);
+ var info = p_list.FirstOrDefault(p => p.FactoryID == item.FactoryID);
+ if (info != null)
+ {
+ dm.FactoryName = info.FactoryName;
+ }
+ ModelList.Add(dm);
+ }
+ #endregion
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = ModelList;
+ jsonStr = JSONTools.ScriptSerialize>(md);
+ }
+ return jsonStr;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return "";
+ }
+
+
+ }
+ ///
+ /// 添加信息
+ ///
+ /// 生产线模型对象
+ ///
+ public bool AddInfo(tb_Place md)
+ {
+ try
+ {
+ var list = db.SearchInfoByKey("PlaceName", md.PlaceName);//判断是否有重复数据
+ if (list != null)
+ {
+ if (list.Where(p => p.PlaceID != md.PlaceID).Count() > 0)
+ {
+ return false;
+ }
+
+ }
+
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ /// 生产线模型对象
+ ///
+ public bool UpdateInfo(tb_Place md)
+ {
+ try
+ {
+ var list = db.SearchAllInfo().Where(p => p.PlaceName == md.PlaceName && p.PlaceID != md.PlaceID).ToList();//判断是否有重复数据
+ if (list.Count > 0)
+ {
+ return false;
+ }
+
+ //初始化要更新的字段
+ string[] proNames = new string[3];
+ proNames[0] = "FactoryID";
+ proNames[1] = "PlaceName";
+ proNames[2] = "Des";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+ //md.Des = "";
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+ /// 删除生产线信息
+ public bool DelInfo(tb_Place md)
+ {
+ try
+ {
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+ }
+
+ public string GetComboboxData()
+ {
+ try
+ {
+ string jsonStr = "[]";
+ var list = db.SearchAllInfo().ToList();//判断是否有重复数据
+ jsonStr = JSONTools.ScriptSerialize>(list);
+ return jsonStr;
+ }
+ catch (Exception)
+ {
+ return "";
+ }
+ }
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/PlasticBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/PlasticBLL.cs
new file mode 100644
index 0000000..83d91b4
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/PlasticBLL.cs
@@ -0,0 +1,238 @@
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.EFModel;
+using MESClassLibrary.Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+ public class PlasticBLL
+ {
+ BBMPTEntities ef = new BBMPTEntities();
+ BasicBLL db = new BasicBLL();
+
+ ///
+ /// 新增信息
+ ///
+ ///
+ ///
+ public bool AddInfo(tb_Plastic md)
+ {
+ try
+ {
+ var list = db.SearchInfoByKey("StationID", md.StationID);//判断是否有重复数据
+ if (list != null && list.Count > 0)
+ {
+ if (list.Where(p => p.StockNo.Equals(md.StockNo)).Count() > 0)
+ {
+ return false;
+ }
+ }
+
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ ///
+ ///
+ public bool UpdateInfo(tb_Plastic md)
+ {
+ try
+ {
+
+ //初始化要更新的字段
+ string[] proNames = new string[5];
+ proNames[0] = "CycleTime";
+ proNames[1] = "StationID";
+ proNames[2] = "IsBackup";
+ proNames[3] = "Weight";
+ proNames[4] = "OpenDebugTime";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 删除信息
+ ///
+ ///
+ ///
+ ///
+ public bool DeleteInfo(tb_Plastic md)
+ {
+ try
+ {
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 查询全部信息分页
+ ///
+ ///
+ public string SearchInfoAll(string page, string pagesize, string stockNo, string partNo, string StationID)
+ {
+ try
+ {
+
+ string jsonStr = "[]";
+ int total = 0;//总行数
+ List list = db.SearchAllInfo();
+
+ if (!String.IsNullOrEmpty(stockNo))
+ {
+ list = list.Where(p => p.StockNo != null && p.StockNo.Contains(stockNo)).ToList();
+ }
+
+ if (!String.IsNullOrEmpty(StationID))
+ {
+ list = list.Where(p => p.StationID.Equals(StationID)).ToList();
+ }
+
+ List modelList = new List();
+ if (list.Count > 0)
+ {
+
+
+
+ #region 联查
+ BasicBLL product_db = new BasicBLL();
+ var product_list = product_db.SearchAllInfo();
+
+ BasicBLL machine_db = new BasicBLL();
+ var machine_list = machine_db.SearchAllInfo();
+
+ foreach (var item in list)
+ {
+ PlasticModel dm = Tool.Mapper(item);
+ var product_info = product_list.FirstOrDefault(p => p.StockNo == item.StockNo);
+ if (product_info != null)
+ {
+ dm.PartNo = product_info.PartNo;
+ }
+
+ var machine_info = machine_list.FirstOrDefault(p => p.StationID == item.StationID);
+ if (machine_info != null)
+ {
+ dm.StationNo = machine_info.StationNo;
+ }
+
+ modelList.Add(dm);
+ }
+ #endregion
+
+ if (!String.IsNullOrEmpty(partNo))
+ {
+ modelList = modelList.Where(p => p.PartNo != null && p.PartNo.Contains(partNo)).ToList();
+ }
+
+ total = modelList.Count;
+
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ modelList = modelList.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+
+ JsonDataModel md = new JsonDataModel();
+ md.total = total.ToString();
+ md.rows = modelList;
+ jsonStr = JSONTools.ScriptSerialize>(md);
+ }
+ return jsonStr;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+
+ ///
+ /// 查询全部信息
+ ///
+ ///
+ public List SearchAll()
+ {
+ try
+ {
+ var s_list = db.SearchAllInfo().ToList();
+ return s_list;
+ }
+ catch (Exception)
+ {
+ return null;
+ }
+ }
+
+ ///
+ /// 根据ID查询信息
+ ///
+ ///
+ ///
+ public tb_Plastic SearchInfoByID(string id)
+ {
+ try
+ {
+ return db.SearchInfoByID(id);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return null;
+ }
+
+ }
+
+
+ public string QueryForCombobox(string StationID)
+ {
+ try
+ {
+
+ var info = from m in ef.tb_Plastic
+ join s in ef.tb_Product on m.StockNo equals s.StockNo into val2Grp
+ from grp in val2Grp.DefaultIfEmpty()
+ where m.StationID == StationID
+ select new { c_id = grp.StockNo, c_text = grp.PartNo + "--" + grp.ProductName, c_name = grp.StockNo + "--" + grp.ProductName };
+
+ string jsonStr = "[]";
+ jsonStr = JSONTools.ScriptSerialize(info);
+ return jsonStr;
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return "";
+ }
+ }
+
+ }
+}
diff --git a/BBMPTMes/MESClassLibrary/BLL/BasicInfo/ProductBLL.cs b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/ProductBLL.cs
new file mode 100644
index 0000000..2335847
--- /dev/null
+++ b/BBMPTMes/MESClassLibrary/BLL/BasicInfo/ProductBLL.cs
@@ -0,0 +1,486 @@
+using MESClassLibrary.BLL.Log;
+using MESClassLibrary.EFModel;
+using MESClassLibrary.Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using System.Data;
+using System.Data.SqlClient;
+using MESClassLibrary.DAL;
+using MESClassLibrary.DAL.BasicInfo;
+
+namespace MESClassLibrary.BLL.BasicInfo
+{
+ public class ProductBLL
+ {
+ BasicBLL db = new BasicBLL();
+
+ ///
+ /// 新增信息
+ ///
+ ///
+ ///
+ public bool AddInfo(tb_Product md)
+ {
+ try
+ {
+ var list = db.SearchInfoByKey("StockNo", md.StockNo);//判断是否有重复数据
+ list = db.SearchInfoByKey("PartNo", md.PartNo);//判断是否有重复数据
+ if (list != null)
+ {
+ if (list.Where(p => p.ProductID != md.ProductID).Count() > 0)
+ {
+ return false;
+ }
+ }
+
+ return db.AddInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+ ///
+ /// 修改信息
+ ///
+ ///
+ ///
+ public bool UpdateInfo(tb_Product md)
+ {
+ try
+ {
+ var list = db.SearchAllInfo().Where(p => p.StockNo == md.StockNo && p.ProductID != md.ProductID && p.ProductID != md.ProductID).ToList();//判断是否有重复数据
+ if (list.Count > 0)
+ {
+ return false;
+ }
+
+ //初始化要更新的字段
+ string[] proNames = new string[12];
+ proNames[0] = "ProductTypeID";
+ proNames[1] = "PartName";
+ proNames[2] = "ProductName";
+ proNames[3] = "ColorName";
+ proNames[4] = "PartNo";
+ proNames[5] = "Rows";
+ proNames[6] = "Cols";
+ proNames[7] = "Layers";
+ proNames[8] = "Des";
+ proNames[9] = "isImport";
+ proNames[10] = "ProjectID";
+ proNames[11] = "IsHigh";
+
+ //必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
+ //如果没有初始化必填字段,更新会报错
+ md.PicturePath = "";
+
+ return db.UpdateInfo(md, proNames);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 删除信息
+ ///
+ ///
+ ///
+ ///
+ public bool DeleteInfo(tb_Product md)
+ {
+ try
+ {
+ return db.DelInfo(md);
+ }
+ catch (Exception ex)
+ {
+ LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
+ return false;
+ }
+
+ }
+
+ ///
+ /// 查询全部信息分页
+ ///
+ ///
+ public string SearchInfoAll(string page, string pagesize, string stockNo, string productTypeID, string productName, string partNo)
+ {
+ try
+ {
+
+ string jsonStr = "[]";
+ int total = 0;//总行数
+ List list = db.SearchAllInfo();
+
+ if (!String.IsNullOrEmpty(stockNo))
+ {
+ list = list.Where(p => p.StockNo != null && p.StockNo.Contains(stockNo)).ToList();
+ }
+ if (!String.IsNullOrEmpty(productTypeID))
+ {
+ list = list.Where(p => p.ProductTypeID.Equals(productTypeID)).ToList();
+ }
+ if (!String.IsNullOrEmpty(productName))
+ {
+ list = list.Where(p => p.ProductName != null && p.ProductName.Contains(productName)).ToList();
+ }
+ if (!String.IsNullOrEmpty(partNo))
+ {
+ list = list.Where(p => p.PartNo != null && p.PartNo.Contains(partNo)).ToList();
+ }
+ List modelList = new List();
+ if (list.Count > 0)
+ {
+ total = list.Count;
+
+ int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
+ list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
+
+
+ #region 联查
+ BasicBLL s_db = new BasicBLL();
+ var s_list = s_db.SearchAllInfo();
+ BasicBLL p_db = new BasicBLL();
+ var p_list = p_db.SearchAllInfo();
+
+ foreach (var item in list)
+ {
+ ProductModel dm = Tool.Mapper(item);
+ var info = s_list.FirstOrDefault(p => p.ProductTypeID == item.ProductTypeID);
+ if (info != null)
+ {
+ dm.ProductTypeName = info.ProductTypeName;
+ }
+ var info1 = p_list.FirstOrDefault(p => p.ID == item.ProjectID);
+ if (info1 != null)
+ {
+ dm.Project = info1.Project;
+ }
+ modelList.Add(dm);
+ }
+
+
+ #endregion
+
+
+
+ JsonDataModel md = new JsonDataModel