Forráskód Böngészése

【软件版本】
V 3.0.6.3,状态:未发布
【模块名称】
G客户NTF统计功能,开发中
【问题原因】

【修改描述】
G客户NTF统计功能,数据库功能开发中,提交修改,避免丢失。
【测试结果】

sat23 3 éve
szülő
commit
113192735a

+ 113 - 3
SCBC Factory Tools/DAL/BaseDAL.cs

@@ -234,11 +234,12 @@ namespace MOKA_Factory_Tools.DAL
         /// <summary>
         /// 获取某字段最大值(获取字段必须为数字类型)
         /// </summary>
-        /// <param name="FieldName">字段名</param>
+        /// <param name="FieldName"></param>
+        /// <param name="strWhere"></param>
         /// <returns></returns>
-        public int GetMaxID(string FieldName)
+        public int GetMaxID(string FieldName, string strWhere = "")
         {
-            return DbHelper.GetMaxID(cps.ConnectionString, FieldName, this.TableName);
+            return DbHelper.GetMaxID(cps.ConnectionString, FieldName, this.TableName, strWhere);
         }
 
         /// <summary>
@@ -597,6 +598,115 @@ namespace MOKA_Factory_Tools.DAL
         {
             return InsideUpdate(model, overlookFieldList: overlookFieldList, whereStr: whereStr);
         }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="model"></param>
+        /// <param name="strWhere"></param>
+        /// <returns></returns>
+        /// 因为AMResult表没有代理主键ID,所以需要独立方法更新;
+        public bool UpdateAMResult(object model, string strWhere, string IgnoreUpdateFields = "Station,SN,ODF,DSN,Line,Model,Dimension")
+        {
+            CommandInfo comdInfo = GetUpdateAMResultCommandInfo(model, IgnoreUpdateFields, strWhere);
+            int rows = DbHelper.ExecuteSQL(cps.ConnectionString, comdInfo.CommandText, (SqlParameter[])comdInfo.Parameters);
+            if (rows > 0)
+            {
+                return true;
+            }
+            else
+            {
+                return false;
+            }
+        }
+
+        /// <summary>
+        /// 
+        /// 问题:Where条件后面跟的值是旧值,model的新值;
+        /// </summary>
+        /// <param name="model"></param>
+        /// <param name="IgnoreUpdateFields"></param>
+        /// <param name="whereStr"></param>
+        /// <param name="type"></param>
+        /// <returns></returns>
+        public CommandInfo GetUpdateAMResultCommandInfo(object model, string IgnoreUpdateFields = "Station,SN,ODF,DSN,Line,Model,Dimension", string whereStr = null, EffentNextType type = EffentNextType.None)
+        {
+            StringBuilder strSql = new StringBuilder();
+            strSql.Append("update " + this.TableName + " set ");
+
+            List<SqlParameter> parameterlist = new List<SqlParameter>();
+            IgnoreUpdateFields += ",";
+            object VerifyTimestamp = null;
+            for (int i = 0; i < PropertyInfos.Length; i++)
+            {
+                try
+                {
+                    System.Reflection.PropertyInfo propertyInfo = PropertyInfos[i];
+                    string tempFieldName = propertyInfo.Name;//字段名
+                    object tempValue = propertyInfo.GetValue(model, null);//对应字段值
+                    //如果字段名不为忽略字段则进行处理
+                    if (!IsOverlookFiel(IgnoreUpdateFields, tempFieldName))
+                    {
+                        try
+                        {
+                            if (tempValue.GetType() == typeof(DateTime))
+                            {
+                                DateTime tempTime;
+
+                                try
+                                {
+                                    if (!DateTime.TryParse(tempValue.ToString(), out tempTime))
+                                    {
+                                        tempValue = null;
+                                    }
+                                    else if (tempTime <= Convert.ToDateTime("1900-01-01"))
+                                    {
+                                        tempValue = null;
+                                    }
+                                    else if (tempTime.Year == Convert.ToDateTime("0001-01-01").Year || tempTime.Year == Convert.ToDateTime("1753-01-01").Year)
+                                    {
+                                        tempValue = null;
+                                    }
+                                }
+                                catch { tempValue = null; }
+                            }
+                            else if (tempValue.GetType() == typeof(byte[]))
+                            {
+                                if (tempFieldName.ToLower() == "VerifyTimestamp".ToLower())
+                                {
+                                    VerifyTimestamp = tempValue;
+                                    continue;
+                                }
+                            }
+                        }
+                        catch { }
+                        strSql.Append("" + tempFieldName + "=@" + tempFieldName + ",");
+                        SqlParameter parameter = new SqlParameter("@" + tempFieldName, tempValue);
+                        string classFullName = propertyInfo.PropertyType.ToString();
+                        if (classFullName.ToLower().IndexOf("system.") != 0)
+                        {
+                            parameter.DbType = DbType.String;
+                            parameter = new SqlParameter("@" + tempFieldName, tempValue.ToString());
+                        }
+                        parameterlist.Add(parameter);
+                    }
+                }
+                catch { }
+            }
+
+            //去除结尾多余的“,”
+            if (strSql.ToString().LastIndexOf(',') == strSql.Length - 1)
+            {
+                strSql.Remove(strSql.Length - 1, 1);
+            }
+
+            if (whereStr != null)
+            {
+                strSql.Append(" where 1=1 and (" + whereStr + ")");
+            }
+            SqlParameter[] parameters = parameterlist.ToArray();
+            return new CommandInfo(strSql.ToString(), parameters, type);
+        }
         #endregion
 
         #region 删除数据

+ 15 - 5
SCBC Factory Tools/DAL/DAL_AMResult.cs

@@ -8,7 +8,7 @@ using System.Threading.Tasks;
 
 namespace MOKA_Factory_Tools.DAL
 {
-    class DAL_AMResult : BaseDAL
+    public class DAL_AMResult : BaseDAL
     {
         public DAL_AMResult()
         {
@@ -118,19 +118,29 @@ namespace MOKA_Factory_Tools.DAL
         /// <param name="operators">SQL筛选运算符号</param>
         /// <param name="overlookFieldList">忽略字段名列表 字段名之间用“,”号分隔</param>
         /// <returns></returns>
-        public bool Update(AMResult model, string filterFieldName = "ID", string operators = "=", string overlookFieldList = "ID")
+        public bool Update(AMResult model, string strWhere, string IgnoreUpdateFields = "Station,SN,ODF,DSN,Line,Model,Dimension")
         {
-            return base.Update(model, filterFieldName, operators, overlookFieldList);
+            return base.UpdateAMResult(model, strWhere, IgnoreUpdateFields);
         }
         #endregion
 
         #region 查询数据
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="strWhere"></param>
+        /// <returns></returns>
+        public AMResult GetModel(string strWhere)
+        {
+            return DataRowToModel(GetDataRow(strWhere));
+        }
+
         /// <summary>
         /// 得到一个对象实体
         /// </summary>
-        public AMResult GetModel(int ID)
+        public AMResult GetModel(string strStation, string strSN)
         {
-            return DataRowToModel(GetDataRow(ID));
+            return DataRowToModel(GetDataRow(string.Format("Station = '{0}' and SN = '{1}'", strStation, strSN)));
         }
 
         /// <summary>

+ 1 - 1
SCBC Factory Tools/DAL/DAL_AMYields.cs

@@ -8,7 +8,7 @@ using System.Threading.Tasks;
 
 namespace MOKA_Factory_Tools.DAL
 {
-    class DAL_AMYields : BaseDAL
+    public class DAL_AMYields : BaseDAL
     {
         public DAL_AMYields()
         {

+ 16 - 4
SCBC Factory Tools/Database/ConnectionParameters.cs

@@ -9,13 +9,21 @@ namespace MOKA_Factory_Tools.Database
 {
     public class ConnectionParameters
     {
+#if DEBUG
+        public ConnectionParameters()
+        {
+            DatabaseServer = "DESKTOP-71AIDNV";
+            DatabaseName = "MESOtherData";
+            connectionStringTrusted = string.Format(_msdbconnect_trusted, DatabaseServer, DatabaseName);
+        }
+#endif
         #region 连接串
         // 无端口号;
         private const string _msdbconnect = "Data Source={0};Initial Catalog={1};User ID={2};Password={3}";
         // 有端口号;
         private const string _msdbconnect_port = "Data Source={0},{1};Initial Catalog={2};User ID={3};Password={4}";
         // windows信任连接;
-        private const string _msdbconnect_trusted_master = "server={0};database=master;Trusted_Connection=SSPI";
+        private const string _msdbconnect_trusted = "server={0};database={1};Trusted_Connection=SSPI";
         #endregion
 
         #region 私有变量;
@@ -67,6 +75,9 @@ namespace MOKA_Factory_Tools.Database
         {
             get
             {
+#if DEBUG
+                return connectionStringTrusted;
+#else
                 if (IsSetParameters)
                     return connectionString;
                 else
@@ -74,6 +85,7 @@ namespace MOKA_Factory_Tools.Database
                     SetConnectParameters();
                     return connectionString;
                 }
+#endif
             }
         }
 
@@ -91,7 +103,7 @@ namespace MOKA_Factory_Tools.Database
                 }
             }
         }
-        #endregion
+#endregion
 
         public void SetConnectParameters()
         {
@@ -105,7 +117,7 @@ namespace MOKA_Factory_Tools.Database
                     ? string.Format(_msdbconnect, DatabaseServer, DatabaseName, DatabaseAccount, DatabasePassword)
                     : string.Format(_msdbconnect_port, DatabaseServer, DatabasePortNumber, DatabaseName, DatabaseAccount, DatabasePassword);
 
-                connectionStringTrusted = string.Format(_msdbconnect_trusted_master, DatabaseServer);
+                connectionStringTrusted = string.Format(_msdbconnect_trusted, DatabaseServer, DatabaseName);
             }
             catch
             {
@@ -131,7 +143,7 @@ namespace MOKA_Factory_Tools.Database
                     ? string.Format(_msdbconnect, DatabaseServer, DatabaseName, DatabaseAccount, DatabasePassword)
                     : string.Format(_msdbconnect_port, DatabaseServer, DatabasePortNumber, DatabaseName, DatabaseAccount, DatabasePassword);
 
-                connectionStringTrusted = string.Format(_msdbconnect_trusted_master, DatabaseServer);
+                connectionStringTrusted = string.Format(_msdbconnect_trusted, DatabaseServer, DatabaseName);
             }
             catch
             {

+ 6 - 1
SCBC Factory Tools/Database/DbHelper.cs

@@ -121,9 +121,14 @@ namespace MOKA_Factory_Tools.Database
             return false;
         }
 
-        public static int GetMaxID(string connectionString, string FieldName, string TableName)
+        public static int GetMaxID(string connectionString, string FieldName, string TableName, string strWhere = "")
         {
             string strsql = "select max(" + FieldName + ")+1 from " + TableName;
+            if (strWhere.Trim() != "")
+            {
+                strsql += (" where 1=1 and  (" + strWhere + ")");
+            }
+
             object obj = GetSingle(connectionString, strsql);
             if (obj == null)
             {

+ 2 - 3
SCBC Factory Tools/MOKA Factory Tools.csproj

@@ -97,6 +97,7 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="BLL\NTFBLL.cs" />
     <Compile Include="Business\CommonMethod.cs" />
     <Compile Include="Business\Countkey.cs" />
     <Compile Include="DAL\BaseDAL.cs" />
@@ -306,9 +307,7 @@
   <ItemGroup>
     <WCFMetadata Include="Connected Services\" />
   </ItemGroup>
-  <ItemGroup>
-    <Folder Include="BLL\" />
-  </ItemGroup>
+  <ItemGroup />
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <Import Project="packages\System.Data.SQLite.Core.1.0.111.0\build\net40\System.Data.SQLite.Core.targets" Condition="Exists('packages\System.Data.SQLite.Core.1.0.111.0\build\net40\System.Data.SQLite.Core.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

+ 1 - 1
SCBC Factory Tools/Models/AMResult.cs

@@ -6,7 +6,7 @@ using System.Threading.Tasks;
 
 namespace MOKA_Factory_Tools.Models
 {
-    class AMResult
+    public class AMResult
     {
         public DateTime TestDate { get; set; }   /* 日期班次 */
         public int TestHour { get; set; }        /* 小时 */

+ 1 - 1
SCBC Factory Tools/Models/AMYields.cs

@@ -6,7 +6,7 @@ using System.Threading.Tasks;
 
 namespace MOKA_Factory_Tools.Models
 {
-    class AMYields
+    public class AMYields
     {
         public int ID { get; set; }                     /* 自增ID */
         public DateTime TestDate { get; set; }          /* 日期班次 */

+ 15 - 0
SCBC Factory Tools/Models/StructList.cs

@@ -196,6 +196,21 @@ namespace MOKA_Factory_Tools
         /// 单位:毫秒
         /// </summary>
         public int NextCommandWaitTime { get; set; } = 100;
+
+        /// <summary>
+        /// G客户NTF功能是否开启;
+        /// </summary>
+        public bool NTF { get; set; } = false;
+
+        /// <summary>
+        /// 产线线体;
+        /// </summary>
+        public string Line { get; set; }
+
+        /// <summary>
+        /// 产线工站,抄写工具默认为DataBurning
+        /// </summary>
+        public string Station { get; set; } = "DataBurning";
     }
 
     public class KeyInfo

+ 18 - 0
SCBC Factory Tools/Views/Login.Designer.cs

@@ -35,6 +35,8 @@
             this.skinLabel2 = new CCWin.SkinControl.SkinLabel();
             this.AccountText = new System.Windows.Forms.TextBox();
             this.PwdText = new System.Windows.Forms.TextBox();
+            this.LineText = new System.Windows.Forms.TextBox();
+            this.skinLabel3 = new CCWin.SkinControl.SkinLabel();
             this.SuspendLayout();
             // 
             // BtnLogin
@@ -73,12 +75,26 @@
             resources.ApplyResources(this.PwdText, "PwdText");
             this.PwdText.Name = "PwdText";
             // 
+            // LineText
+            // 
+            resources.ApplyResources(this.LineText, "LineText");
+            this.LineText.Name = "LineText";
+            // 
+            // skinLabel3
+            // 
+            resources.ApplyResources(this.skinLabel3, "skinLabel3");
+            this.skinLabel3.BackColor = System.Drawing.Color.Transparent;
+            this.skinLabel3.BorderColor = System.Drawing.Color.White;
+            this.skinLabel3.Name = "skinLabel3";
+            // 
             // login
             // 
             resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.CaptionBackColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
             this.CaptionBackColorTop = System.Drawing.Color.RoyalBlue;
+            this.Controls.Add(this.skinLabel3);
+            this.Controls.Add(this.LineText);
             this.Controls.Add(this.PwdText);
             this.Controls.Add(this.AccountText);
             this.Controls.Add(this.skinLabel2);
@@ -101,5 +117,7 @@
         private CCWin.SkinControl.SkinLabel skinLabel2;
         private System.Windows.Forms.TextBox AccountText;
         private System.Windows.Forms.TextBox PwdText;
+        private System.Windows.Forms.TextBox LineText;
+        private CCWin.SkinControl.SkinLabel skinLabel3;
     }
 }

+ 37 - 1
SCBC Factory Tools/Views/Login.cs

@@ -15,6 +15,10 @@ namespace MOKA_Factory_Tools
 {
     public partial class login : Skin_Color
     {
+        /// <summary>
+        /// G客户NTF功能是否开启;
+        /// </summary>
+        public bool IsNTF { get; set; } = false;
         public int enable;
         string path = AppDomain.CurrentDomain.BaseDirectory;
         LoginOutput loginOutput1 = new LoginOutput()
@@ -60,7 +64,6 @@ namespace MOKA_Factory_Tools
             getTestModeInfo();
         }
 
-
         private void getTestModeInfo()
         {
             // 读取win.ini或注册表;
@@ -121,6 +124,17 @@ namespace MOKA_Factory_Tools
                 enable = 3;
             else if (PwdText.Text.Trim().Length > 0 && AccountText.Text.Trim().Length > 0)
             {
+                #region G客户NTF功能开启;
+                if ( IsNTF )
+                {
+                    if ( LineText.Text.Length == 0 )
+                    {
+                        MessageBox.Show("Line should not be empty!");
+                        return;
+                    }
+                }
+                #endregion
+
                 if (CommonMethod.UserLogin(TestMode.loginUrl, AccountText.Text, PwdText.Text, TestMode.MAC, ErrorDB,out loginOutput1))
                 {
                     enable = 0;
@@ -134,6 +148,7 @@ namespace MOKA_Factory_Tools
                             reader.Close();
                             jObject["FactoryName"] = loginOutput1.factoryname;
                             jObject["FactoryNum"] = loginOutput1.factorynum;
+                            jObject["Line"] = LineText.Text;
                         }                     
                     }
                     using (StreamWriter writer = new StreamWriter(LocalPath.localpath + "\\Config.json"))
@@ -225,6 +240,27 @@ namespace MOKA_Factory_Tools
                     AccountText.Text = jObject["FactoryName"] == null ? (!CommonMethod.AddJsonConfig("FactoryName", null) ? "" : "") : jObject["FactoryName"].Value<string>();
                     loginOutput1.factoryname = jObject["FactoryName"] == null ? "" : jObject["FactoryName"].Value<string>();
                     loginOutput1.factorynum=jObject["FactoryNum"] == null ? "" : jObject["FactoryNum"].Value<string>();
+                    #region G客户NTF功能开启;
+                    if (jObject["NTF"] != null)
+                    {
+                        IsNTF = jObject["NTF"].Value<bool>();
+                        if (IsNTF)
+                        {
+                            skinLabel3.Visible = true;
+                            LineText.Visible = true;
+
+                            BtnLogin.Location = new System.Drawing.Point(70, 152);
+                            BtnLogin.Size = new System.Drawing.Size(90, 33);
+                            this.Size = new System.Drawing.Size(230, 200);
+                        }
+
+                        if (jObject["Line"] != null)
+                        {
+                            string Line = jObject["Line"].Value<string>();
+                            LineText.Text = Line;
+                        }
+                    }
+                    #endregion
                 }
             }            
             System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcessesByName("SCBC Factory Tools");//获取指定的进程名   

+ 171 - 113
SCBC Factory Tools/Views/Login.resx

@@ -117,28 +117,152 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <data name="&gt;&gt;BtnLogin.Type" xml:space="preserve">
-    <value>CCWin.SkinControl.SkinButton, CSkin, Version=16.1.14.3, Culture=neutral, PublicKeyToken=null</value>
+  <data name="&gt;&gt;LineText.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
   <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-  <data name="skinLabel2.Size" type="System.Drawing.Size, System.Drawing">
-    <value>78, 20</value>
+  <data name="skinLabel2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>19, 135</value>
+  </data>
+  <data name="textBox1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>64, 123</value>
+  </data>
+  <data name="BtnLogin.Text" xml:space="preserve">
+    <value>Confirm</value>
+  </data>
+  <data name="&gt;&gt;BtnLogin.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="skinLabel1.Font" type="System.Drawing.Font, System.Drawing">
+    <value>微软雅黑, 9pt</value>
   </data>
   <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="LineText.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
+  </data>
+  <data name="skinLabel2.Font" type="System.Drawing.Font, System.Drawing">
+    <value>微软雅黑, 9pt</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>2, 2, 2, 2</value>
+  </data>
+  <data name="&gt;&gt;AccountText.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;textBox1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="skinLabel1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>19, 79</value>
+  </data>
+  <data name="&gt;&gt;LineText.Name" xml:space="preserve">
+    <value>LineText</value>
+  </data>
+  <data name="&gt;&gt;PwdText.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="&gt;&gt;skinLabel1.Name" xml:space="preserve">
+    <value>skinLabel1</value>
+  </data>
+  <data name="skinLabel2.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="&gt;&gt;AccountText.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="BtnLogin.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="&gt;&gt;BtnLogin.Name" xml:space="preserve">
+    <value>BtnLogin</value>
+  </data>
+  <data name="&gt;&gt;textBox1.Name" xml:space="preserve">
+    <value>textBox1</value>
+  </data>
+  <data name="BtnLogin.Size" type="System.Drawing.Size, System.Drawing">
+    <value>110, 42</value>
+  </data>
+  <data name="skinLabel2.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="skinLabel1.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
   <data name="skinLabel1.AutoSize" type="System.Boolean, mscorlib">
     <value>True</value>
   </data>
-  <data name="$this.Text" xml:space="preserve">
-    <value>login</value>
+  <data name="&gt;&gt;PwdText.Parent" xml:space="preserve">
+    <value>$this</value>
   </data>
-  <data name="PwdText.Location" type="System.Drawing.Point, System.Drawing">
-    <value>113, 130</value>
+  <data name="&gt;&gt;skinLabel2.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="&gt;&gt;skinLabel2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;skinLabel1.Parent" xml:space="preserve">
+    <value>$this</value>
   </data>
   <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
     <value>8, 15</value>
   </data>
-  <data name="&gt;&gt;skinLabel1.Name" xml:space="preserve">
-    <value>skinLabel1</value>
+  <data name="AccountText.Location" type="System.Drawing.Point, System.Drawing">
+    <value>113, 79</value>
+  </data>
+  <data name="AccountText.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name="&gt;&gt;skinLabel2.Type" xml:space="preserve">
+    <value>CCWin.SkinControl.SkinLabel, CSkin, Version=16.1.14.3, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;skinLabel3.Type" xml:space="preserve">
+    <value>CCWin.SkinControl.SkinLabel, CSkin, Version=16.1.14.3, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="skinLabel2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>78, 20</value>
+  </data>
+  <data name="&gt;&gt;textBox1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;skinLabel3.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="&gt;&gt;skinLabel3.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;skinLabel1.Type" xml:space="preserve">
+    <value>CCWin.SkinControl.SkinLabel, CSkin, Version=16.1.14.3, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;BtnLogin.Type" xml:space="preserve">
+    <value>CCWin.SkinControl.SkinButton, CSkin, Version=16.1.14.3, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;skinLabel1.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="&gt;&gt;AccountText.Name" xml:space="preserve">
+    <value>AccountText</value>
+  </data>
+  <data name="&gt;&gt;PwdText.Name" xml:space="preserve">
+    <value>PwdText</value>
+  </data>
+  <data name="&gt;&gt;PwdText.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;BtnLogin.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="skinLabel1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>70, 20</value>
+  </data>
+  <data name="PwdText.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name="&gt;&gt;skinLabel2.Name" xml:space="preserve">
+    <value>skinLabel2</value>
+  </data>
+  <data name="skinLabel3.TabIndex" type="System.Int32, mscorlib">
+    <value>6</value>
   </data>
   <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
@@ -306,134 +430,68 @@
         AAA=
 </value>
   </data>
-  <data name="BtnLogin.Text" xml:space="preserve">
-    <value>Confirm</value>
-  </data>
-  <data name="&gt;&gt;skinLabel2.Parent" xml:space="preserve">
-    <value>$this</value>
-  </data>
-  <data name="&gt;&gt;AccountText.Parent" xml:space="preserve">
-    <value>$this</value>
-  </data>
-  <data name="BtnLogin.Size" type="System.Drawing.Size, System.Drawing">
-    <value>110, 42</value>
-  </data>
   <data name="&gt;&gt;$this.Type" xml:space="preserve">
     <value>CCWin.Skin_Color, CSkin, Version=16.1.14.3, Culture=neutral, PublicKeyToken=null</value>
   </data>
-  <data name="&gt;&gt;$this.Name" xml:space="preserve">
-    <value>login</value>
-  </data>
-  <data name="&gt;&gt;skinLabel1.Parent" xml:space="preserve">
-    <value>$this</value>
-  </data>
-  <data name="BtnLogin.Location" type="System.Drawing.Point, System.Drawing">
-    <value>149, 174</value>
-  </data>
-  <data name="&gt;&gt;skinLabel2.Name" xml:space="preserve">
-    <value>skinLabel2</value>
-  </data>
-  <data name="&gt;&gt;PwdText.Name" xml:space="preserve">
-    <value>PwdText</value>
-  </data>
-  <data name="&gt;&gt;BtnLogin.Parent" xml:space="preserve">
-    <value>$this</value>
-  </data>
-  <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
-    <value>364, 243</value>
-  </data>
-  <data name="skinLabel2.Location" type="System.Drawing.Point, System.Drawing">
-    <value>19, 135</value>
-  </data>
-  <data name="skinLabel2.Text" xml:space="preserve">
-    <value>Password
-</value>
+  <data name="textBox1.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
   </data>
-  <data name="PwdText.TabIndex" type="System.Int32, mscorlib">
-    <value>4</value>
+  <data name="PwdText.Size" type="System.Drawing.Size, System.Drawing">
+    <value>207, 25</value>
   </data>
   <data name="skinLabel1.Text" xml:space="preserve">
     <value>Account</value>
   </data>
-  <data name="skinLabel1.Size" type="System.Drawing.Size, System.Drawing">
-    <value>70, 20</value>
+  <data name="&gt;&gt;skinLabel3.Name" xml:space="preserve">
+    <value>skinLabel3</value>
   </data>
-  <data name="&gt;&gt;PwdText.Parent" xml:space="preserve">
-    <value>$this</value>
-  </data>
-  <data name="skinLabel1.Font" type="System.Drawing.Font, System.Drawing">
-    <value>微软雅黑, 9pt</value>
-  </data>
-  <data name="&gt;&gt;PwdText.Type" xml:space="preserve">
-    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </data>
-  <data name="&gt;&gt;AccountText.Type" xml:space="preserve">
-    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </data>
-  <data name="PwdText.PasswordChar" type="System.Char, mscorlib" xml:space="preserve">
-    <value>*</value>
-  </data>
-  <data name="AccountText.Location" type="System.Drawing.Point, System.Drawing">
-    <value>113, 79</value>
+  <data name="LineText.Location" type="System.Drawing.Point, System.Drawing">
+    <value>64, 122</value>
   </data>
-  <data name="&gt;&gt;skinLabel1.ZOrder" xml:space="preserve">
-    <value>3</value>
-  </data>
-  <data name="skinLabel2.Font" type="System.Drawing.Font, System.Drawing">
-    <value>微软雅黑, 9pt</value>
-  </data>
-  <data name="&gt;&gt;PwdText.ZOrder" xml:space="preserve">
-    <value>0</value>
-  </data>
-  <data name="BtnLogin.TabIndex" type="System.Int32, mscorlib">
-    <value>0</value>
+  <data name="$this.Text" xml:space="preserve">
+    <value>login</value>
   </data>
-  <data name="skinLabel1.TabIndex" type="System.Int32, mscorlib">
+  <data name="&gt;&gt;LineText.ZOrder" xml:space="preserve">
     <value>1</value>
   </data>
-  <data name="&gt;&gt;skinLabel2.ZOrder" xml:space="preserve">
-    <value>2</value>
-  </data>
-  <data name="&gt;&gt;BtnLogin.ZOrder" xml:space="preserve">
-    <value>4</value>
+  <data name="&gt;&gt;textBox1.ZOrder" xml:space="preserve">
+    <value>1</value>
   </data>
-  <data name="&gt;&gt;skinLabel2.Type" xml:space="preserve">
-    <value>CCWin.SkinControl.SkinLabel, CSkin, Version=16.1.14.3, Culture=neutral, PublicKeyToken=null</value>
+  <data name="skinLabel3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>19, 126</value>
   </data>
-  <data name="&gt;&gt;BtnLogin.Name" xml:space="preserve">
-    <value>BtnLogin</value>
+  <data name="BtnLogin.Location" type="System.Drawing.Point, System.Drawing">
+    <value>149, 174</value>
   </data>
-  <data name="PwdText.Size" type="System.Drawing.Size, System.Drawing">
+  <data name="AccountText.Size" type="System.Drawing.Size, System.Drawing">
     <value>207, 25</value>
   </data>
-  <data name="skinLabel1.Location" type="System.Drawing.Point, System.Drawing">
-    <value>19, 79</value>
-  </data>
-  <data name="AccountText.TabIndex" type="System.Int32, mscorlib">
-    <value>3</value>
+  <data name="PwdText.PasswordChar" type="System.Char, mscorlib" xml:space="preserve">
+    <value>*</value>
   </data>
-  <data name="skinLabel2.AutoSize" type="System.Boolean, mscorlib">
-    <value>True</value>
+  <data name="&gt;&gt;AccountText.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
-  <data name="&gt;&gt;AccountText.ZOrder" xml:space="preserve">
-    <value>1</value>
+  <data name="PwdText.Location" type="System.Drawing.Point, System.Drawing">
+    <value>113, 130</value>
   </data>
-  <data name="&gt;&gt;skinLabel1.Type" xml:space="preserve">
-    <value>CCWin.SkinControl.SkinLabel, CSkin, Version=16.1.14.3, Culture=neutral, PublicKeyToken=null</value>
+  <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
+    <value>364, 243</value>
   </data>
-  <data name="AccountText.Size" type="System.Drawing.Size, System.Drawing">
-    <value>207, 25</value>
+  <data name="&gt;&gt;$this.Name" xml:space="preserve">
+    <value>login</value>
   </data>
-  <data name="skinLabel2.TabIndex" type="System.Int32, mscorlib">
-    <value>2</value>
+  <data name="skinLabel2.Text" xml:space="preserve">
+    <value>Password
+</value>
   </data>
-  <data name="&gt;&gt;AccountText.Name" xml:space="preserve">
-    <value>AccountText</value>
+  <data name="&gt;&gt;LineText.Parent" xml:space="preserve">
+    <value>$this</value>
   </data>
-  <data name="$this.Localizable" type="System.Boolean, mscorlib">
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>True</value>
-  </data>
-  <data name="$this.Language" type="System.Globalization.CultureInfo, mscorlib">
+  </metadata>
+  <metadata name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>zh-CN</value>
-  </data>
+  </metadata>
 </root>

+ 56 - 6
SCBC Factory Tools/Views/Login.zh-CN.resx

@@ -119,31 +119,81 @@
   </resheader>
   <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   <data name="BtnLogin.Location" type="System.Drawing.Point, System.Drawing">
-    <value>106, 171</value>
+    <value>70, 132</value>
+  </data>
+  <data name="BtnLogin.Size" type="System.Drawing.Size, System.Drawing">
+    <value>90, 33</value>
   </data>
   <data name="BtnLogin.Text" xml:space="preserve">
     <value>登录</value>
   </data>
+  <data name="skinLabel1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>19, 59</value>
+  </data>
   <data name="skinLabel1.Size" type="System.Drawing.Size, System.Drawing">
-    <value>39, 20</value>
+    <value>32, 17</value>
   </data>
   <data name="skinLabel1.Text" xml:space="preserve">
     <value>账号</value>
   </data>
+  <data name="skinLabel2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>19, 92</value>
+  </data>
   <data name="skinLabel2.Size" type="System.Drawing.Size, System.Drawing">
-    <value>39, 20</value>
+    <value>32, 17</value>
   </data>
   <data name="skinLabel2.Text" xml:space="preserve">
     <value>密码</value>
   </data>
   <data name="AccountText.Location" type="System.Drawing.Point, System.Drawing">
-    <value>64, 79</value>
+    <value>59, 58</value>
+  </data>
+  <data name="AccountText.Size" type="System.Drawing.Size, System.Drawing">
+    <value>143, 21</value>
   </data>
   <data name="PwdText.Location" type="System.Drawing.Point, System.Drawing">
-    <value>64, 130</value>
+    <value>59, 90</value>
+  </data>
+  <data name="PwdText.Size" type="System.Drawing.Size, System.Drawing">
+    <value>143, 21</value>
+  </data>
+  <data name="LineText.Location" type="System.Drawing.Point, System.Drawing">
+    <value>59, 122</value>
+  </data>
+  <data name="LineText.Size" type="System.Drawing.Size, System.Drawing">
+    <value>143, 21</value>
+  </data>
+  <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="LineText.Visible" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="skinLabel3.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="skinLabel3.Font" type="System.Drawing.Font, System.Drawing">
+    <value>微软雅黑, 9pt</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="skinLabel3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="skinLabel3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>19, 124</value>
+  </data>
+  <data name="skinLabel3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>32, 17</value>
+  </data>
+  <data name="skinLabel3.Text" xml:space="preserve">
+    <value>线体</value>
+  </data>
+  <data name="skinLabel3.Visible" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 12</value>
   </data>
   <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
-    <value>306, 243</value>
+    <value>230, 181</value>
   </data>
   <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>

+ 17 - 0
SCBC Factory Tools/Views/Main.cs

@@ -720,6 +720,23 @@ namespace MOKA_Factory_Tools
                     functionSetting1.NextCommandWaitTime = SerialCMD.NextCommandWaitTime = jObject["NextCommandWaitTime"].Value<int>();
                 }
 
+                #region G客户NTF功能;
+                if ( jObject["NTF"] != null )
+                {
+                    functionSetting1.NTF = jObject["NTF"].Value<bool>();
+                }
+
+                if (jObject["Line"] != null)
+                {
+                    functionSetting1.Line = jObject["Line"].Value<string>();
+                }
+
+                if (jObject["Station"] != null)
+                {
+                    functionSetting1.Station = jObject["Station"].Value<string>();
+                }
+                #endregion
+
                 foreach (var ss in jObject["Channel"])  //遍历Channel
                 {
                     Dictionary<string, string> ChannelValues = JsonConvert.DeserializeObject<Dictionary<string, string>>(ss.ToString());