Pārlūkot izejas kodu

Merge repos.ubtob.net:usoft/mes-client

callm 1 nedēļu atpakaļ
vecāks
revīzija
218e844bd6

+ 1 - 1
UAS_MES_HYSX/FunctionCode/Make/Make_ParseLog.cs

@@ -439,7 +439,7 @@ namespace UAS_MES_NEW.Make
 
                     if (LogicHandler.CheckStepSNAndMacode(ma_code.Text, User.UserSourceCode, item.SN, User.UserCode, out omakeCode, out oMsid, out oErrorMessage))
                     {
-                        if (LogicHandler.SetStepResult(omakeCode, User.UserSourceCode, item.SN, "日志解析", "OK", User.UserCode, out oErrorMessage))
+                        if (LogicHandler.SetStepResult(omakeCode, User.UserSourceCode, item.SN, "日志解析", item.Result.ToUpper() == "PASS" ? "OK" :"NG", User.UserCode, out oErrorMessage))
                         {
                             string outMsg = "";
                             param.Add(omakeCode);

+ 7 - 4
UAS_Tools_HY/Login.cs

@@ -44,7 +44,10 @@ namespace UAS_MES_Tools
                     showMsg.Invoke(new Action(() =>
                     {
                         showMsg.Text = result;
-                        LoginIN.Enabled = true;
+                        if (result.Substring(0,2) == "OK")
+                        {
+                            LoginIN.Enabled = true;
+                        }
                     }));
                 }
 
@@ -181,16 +184,16 @@ namespace UAS_MES_Tools
             {
                 if (ConnectDB.TestConnection())
                 {
-                    return $"数据库连接成功";
+                    return $"OK,数据库连接成功";
                 }
                 else
                 {
-                    return $"数据库连接失败";
+                    return $"NG,数据库连接失败";
                 }
             }
             catch (Exception ex)
             {
-                return $"{ex.Message}";
+                return $"NG,{ex.Message}";
             }
         }
     }

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1103 - 50
UAS_Tools_HY/Main.Designer.cs


+ 448 - 1
UAS_Tools_HY/Main.cs

@@ -3,17 +3,29 @@ using System.Collections.Generic;
 using System.ComponentModel;
 using System.Data;
 using System.Drawing;
+using System.Globalization;
+using System.IO;
 using System.Linq;
+using System.Media;
 using System.Security.Principal;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Forms;
+using UAS_Tools_HY;
+using UAS_Tools_HY.PublicMethods;
 
 namespace UAS_MES_Tools
 {
     public partial class Main : Form
     {
-        private string _Account, _Password;
+        string _Account, _Password, _UserName;
+
+        DataTable dt;
+        Timer loadTime;
+
+        string minTime, maxTime;
+
+        string curRule, curRuleLeng;
 
         public Main(string account, string password)
         {
@@ -22,5 +34,440 @@ namespace UAS_MES_Tools
             InitializeComponent();
         }
 
+        private void Main_Load(object sender, EventArgs e)
+        {
+            currUser.Text = "当前账户: " + _Account;
+
+            dt = ConnectDB.ExecuteSelect($"select * from employee where em_code = '{_Account}'");
+            if (dt.Rows.Count > 0)
+            {
+                _UserName = dt.Rows[0]["em_name"].ToString();
+            }
+
+            loadTime_Tick(null, null);
+            loadTime = new Timer();
+            loadTime.Interval = 1000;
+            loadTime.Tick += loadTime_Tick;
+            loadTime.Start();
+
+            SN.SelectAll();
+            SN.Focus();
+
+            settingLeftInput1.Text = BaseUtil.GetCacheData("SettingCount").ToString();
+            settingLeftInput2.Text = BaseUtil.GetCacheData("SettingVolume").ToString();
+
+            settingRightInput1.Text = BaseUtil.GetCacheData("SettingNGPath").ToString();
+            settingRightInput2.Text = BaseUtil.GetCacheData("SettingExportPath").ToString();
+            
+            QDcheckbox1.Checked = true;
+            QDdtp1.Value = QDdtp2.Value.AddDays(-1);
+
+            rulesQuery_Click(null, null);
+        }
+
+        private void SN_KeyDown(object sender, KeyEventArgs e)
+        {
+            if (e.KeyCode != Keys.Enter) return;
+
+            if (CheckEnter()) return;
+
+            bool checkRes = true;
+
+            ShowMsg.Text = "Pass";
+            ShowMsg.BackColor = Color.LawnGreen;
+            if (radio1.Checked)
+            {
+                dt = ConnectDB.ExecuteSelect($@"SELECT COUNT(1) sum FROM dcrlogexcel WHERE item = '{SN.Text.Trim()}'");
+                if (dt.Rows[0]["sum"].ToString() == "0")
+                {
+                    PlaySound("NG");
+                    ShowMsg.Text = "Fail";
+                    ShowMsg.BackColor = Color.Red;
+                    MessageBox.Show($"{SN.Text.Trim()},没有DCR测试数据", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                    checkRes = false;
+                    return;
+                }
+            }
+
+            if (FormMethods.IsCheckSNRules(curRule, SN.Text.Trim(), curRuleLeng))
+            {
+                PlaySound("NG");
+                ShowMsg.Text = "Fail";
+                ShowMsg.BackColor = Color.Red;
+                MessageBox.Show($"{SN.Text.Trim()},不符合条码规则", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                checkRes = false;
+                return;
+            }
+
+            if (Datas.Rows.Count > 0)
+            {
+                foreach (DataGridViewRow item in Datas.Rows)
+                {
+                    if (SN.Text.Trim() == item.Cells[0].Value.ToString())
+                    {
+                        int iCou = Convert.ToInt32(item.Cells[2].Value);
+                        iCou += 1;
+
+                        item.Cells[3].Value = currTime.Text;
+                        item.Cells[6].Value = checkRes ? "OK" : "NG";
+                    }
+                }
+            }
+
+
+            DataGridViewRow row = new DataGridViewRow();
+            row.CreateCells(Datas);
+            row.Cells[0].Value = SN.Text.Trim();
+            row.Cells[1].Value = BoxNo.Text.Trim();
+            row.Cells[2].Value = 1;
+            row.Cells[3].Value = currTime.Text;
+            row.Cells[4].Value = _UserName;
+            row.Cells[5].Value = radio1.Checked ? "是" : "否";
+            row.Cells[6].Value = checkRes ? "OK": "NG";
+            Datas.Rows.Add(row);
+            PlaySound("OK");
+
+            Datas.FirstDisplayedScrollingRowIndex = Datas.Rows.Count - 1;
+        }
+
+        private void BoxNo_KeyDown(object sender, KeyEventArgs e)
+        {
+            if (e.KeyCode != Keys.Enter) return;
+
+            if (CheckEnter()) return;
+
+            if (Datas.Rows.Count > 0)
+            {
+                foreach(DataGridViewRow item in Datas.Rows)
+                {
+                    item.Cells[1].Value = BoxNo.Text.Trim();
+                }
+            }
+
+            BoxNo.Enabled = false;
+            SN.SelectAll();
+            SN.Focus();
+        }
+
+        private bool CheckEnter()
+        {
+            if (string.IsNullOrEmpty(settingLeftInput1.Text))
+            {
+                MessageBox.Show("请维护列表记录数", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                return true;
+            }
+            if (string.IsNullOrEmpty(settingLeftInput2.Text))
+            {
+                MessageBox.Show("请维护箱内容量", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                return true;
+            }
+            if (string.IsNullOrEmpty(dRules.Text))
+            {
+                MessageBox.Show("请选择条码规则", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                return true;
+            }
+            if (dRules.Enabled)
+            {
+                MessageBox.Show("请选择确认条码规则", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                return true;
+            }
+            return false;
+        }
+       
+        private void settingLeftSubmit_Click(object sender, EventArgs e)
+        {
+            if (string.IsNullOrEmpty(settingLeftInput1.Text))
+            {
+                MessageBox.Show("请输入列表记录数", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                return;
+            }
+
+            if (string.IsNullOrEmpty(settingLeftInput2.Text))
+            {
+                MessageBox.Show("请输入箱内容量", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                return;
+            }
+            BaseUtil.SetCacheData("SettingCount", settingLeftInput1.Text);
+            BaseUtil.SetCacheData("SettingVolume", settingLeftInput2.Text);
+            MessageBox.Show("已提交扫描设置", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+        }
+
+        private void settingRightSubmit_Click(object sender, EventArgs e)
+        {
+            if (string.IsNullOrEmpty(settingRightInput2.Text))
+            {
+                MessageBox.Show("请选择导出文件目录", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                return;
+            }
+            if(!string.IsNullOrEmpty(settingRightInput1.Text))  BaseUtil.SetCacheData("SettingNGPath", settingRightInput1.Text);
+
+            BaseUtil.SetCacheData("SettingExportPath", settingRightInput2.Text);
+            MessageBox.Show("已提交文件设置", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+        }
+
+        private void QDquery_Click(object sender, EventArgs e)
+        {
+            if (string.IsNullOrEmpty(QDInput1.Text) && string.IsNullOrEmpty(QDInput2.Text) && !QDcheckbox1.Checked)
+            {
+                MessageBox.Show("请添加筛选条件", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                return;
+            }
+            if (QDcheckbox1.Checked)
+            {
+
+            }
+        }
+
+        private void QDexport_Click(object sender, EventArgs e)
+        {
+            if(QDDatas.Rows.Count == 0)
+            {
+                MessageBox.Show("请筛选数据", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                return;
+            }
+        }
+
+
+        private void rulesAdd_Click(object sender, EventArgs e)
+        {
+            StringBuilder filterStr = new StringBuilder();
+            if (!string.IsNullOrEmpty(rulesInput1.Text))
+            {
+                filterStr.Append($"WHERE instr(RULE_NAME,'{rulesInput1.Text}') > 0");
+            }
+            if (!string.IsNullOrEmpty(rulesInput2.Text))
+            {
+                if(filterStr.Length == 0)
+                {
+                    filterStr.Append($"WHERE instr(RULE_VALUE,'{rulesInput2.Text}') > 0");
+                }
+                else
+                {
+                    filterStr.Append($" and instr(RULE_VALUE, '{rulesInput2.Text}') > 0");
+                } 
+            }
+
+            Form rulesList = new RulesList("Add",_UserName);
+            if (rulesList.ShowDialog() == DialogResult.OK)
+            {
+                MessageBox.Show("新增规则成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+
+                dt = ConnectDB.ExecuteSelect($@"SELECT RULE_ID ruleId,RULE_NAME RulesCol1, RULE_VALUE RulesCol2, RELE_REMARK RulesCol3, 
+                    RULE_LENGTH RulesCol4,to_char(UPDATE_TIME, 'YYYY-MM-DD HH:Mi:SS') RulesCol5,UPDATE_USER RulesCol6 FROM g_packing_rules {filterStr.ToString()} order by UPDATE_TIME desc");
+
+                RulesDatas.DataSource = dt;
+            }
+        }
+
+        private void rulesQuery_Click(object sender, EventArgs e)
+        {
+            StringBuilder filterStr = new StringBuilder();
+            if (!string.IsNullOrEmpty(rulesInput1.Text))
+            {
+                filterStr.Append($"WHERE instr(RULE_NAME,'{rulesInput1.Text}') > 0");
+            }
+            if (!string.IsNullOrEmpty(rulesInput2.Text))
+            {
+                if (filterStr.Length == 0)
+                {
+                    filterStr.Append($"WHERE instr(RULE_VALUE,'{rulesInput2.Text}') > 0");
+                }
+                else
+                {
+                    filterStr.Append($" and instr(RULE_VALUE, '{rulesInput2.Text}') > 0");
+                }
+            }
+            dt = ConnectDB.ExecuteSelect($@"SELECT RULE_ID ruleId,RULE_NAME RulesCol1, RULE_VALUE RulesCol2, RELE_REMARK RulesCol3, 
+                    RULE_LENGTH RulesCol4,to_char(UPDATE_TIME, 'YYYY-MM-DD HH:Mi:SS') RulesCol5,UPDATE_USER RulesCol6 FROM g_packing_rules {filterStr.ToString()} order by UPDATE_TIME desc");
+
+            RulesDatas.DataSource = dt;
+        }
+
+        private void RulesDatas_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
+        {
+            if (e.RowIndex >= 0 && !RulesDatas.Rows[e.RowIndex].IsNewRow)
+            {
+                DataGridView dgv = sender as DataGridView;
+                if (dgv != null)
+                {
+                    DataGridViewRow selectedRow = dgv.Rows[e.RowIndex];
+                    string RULE_ID = selectedRow.Cells[0].Value.ToString();
+
+                    StringBuilder filterStr = new StringBuilder();
+                    if (!string.IsNullOrEmpty(rulesInput1.Text))
+                    {
+                        filterStr.Append($"WHERE instr(RULE_NAME,'{rulesInput1.Text}') > 0");
+                    }
+                    if (!string.IsNullOrEmpty(rulesInput2.Text))
+                    {
+                        if (filterStr.Length == 0)
+                        {
+                            filterStr.Append($"WHERE instr(RULE_VALUE,'{rulesInput2.Text}') > 0");
+                        }
+                        else
+                        {
+                            filterStr.Append($" and instr(RULE_VALUE, '{rulesInput2.Text}') > 0");
+                        }
+                    }
+                    Form rulesList = new RulesList("Modify",RULE_ID, _UserName);
+                    if (rulesList.ShowDialog() == DialogResult.OK)
+                    {
+                        MessageBox.Show("修改规则成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+
+                        dt = ConnectDB.ExecuteSelect($@"SELECT RULE_ID ruleId,RULE_NAME RulesCol1, RULE_VALUE RulesCol2, RELE_REMARK RulesCol3, 
+                            RULE_LENGTH RulesCol4,to_char(UPDATE_TIME, 'YYYY-MM-DD HH:Mi:SS') RulesCol5,UPDATE_USER RulesCol6 FROM g_packing_rules {filterStr.ToString()} order by UPDATE_TIME desc");
+
+                        RulesDatas.DataSource = dt;
+                    }
+                }
+            }
+        }
+
+        private void RulesDatas_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
+        {
+            if (e.RowIndex >= 0 && !RulesDatas.Rows[e.RowIndex].IsNewRow)
+            {
+                DataGridView dgv = sender as DataGridView;
+                if (dgv != null)
+                {
+                    DataGridViewRow selectedRow = dgv.Rows[e.RowIndex];
+                    if (dRules.Enabled)
+                    {
+                        dRules.Text = selectedRow.Cells[1].Value.ToString();
+                        curRule = selectedRow.Cells[2].Value.ToString();
+                        curRuleLeng = selectedRow.Cells[4].Value.ToString();
+                    }
+                }
+            }
+        }
+
+        private void boxBtn_Click(object sender, EventArgs e)
+        {
+            BoxNo.Enabled = true;
+            BoxNo.Focus();
+            BoxNo.SelectAll();
+        }
+
+        private void settingRightInput1_Click(object sender, EventArgs e)
+        {
+            using (OpenFileDialog openFileDialog = new OpenFileDialog())
+            {
+                openFileDialog.Title = "请选择告警文件";
+                openFileDialog.Filter = "可执行文件 (*.wav)|*.wav|所有文件 (*.*)|*.*";
+                openFileDialog.FilterIndex = 1;
+                openFileDialog.RestoreDirectory = true;
+
+                if (!string.IsNullOrEmpty(settingRightInput1.Text) && System.IO.File.Exists(settingRightInput1.Text))
+                {
+                    openFileDialog.InitialDirectory = System.IO.Path.GetDirectoryName(settingRightInput1.Text);
+                }
+                else
+                {
+                    openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
+                }
+                if (openFileDialog.ShowDialog() == DialogResult.OK)
+                {
+                    settingRightInput1.Text = openFileDialog.FileName;
+                }
+            }
+        }
+
+        private void settingRightInput2_Click(object sender, EventArgs e)
+        {
+            using (FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog())
+            {
+                folderBrowserDialog.Description = "请选择导出文件夹";
+                if (!string.IsNullOrEmpty(settingRightInput2.Text) && System.IO.Directory.Exists(settingRightInput2.Text))
+                {
+                    folderBrowserDialog.SelectedPath = settingRightInput2.Text;
+                }
+                else
+                {
+                    folderBrowserDialog.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);                                                  // folderBrowserDialog.SelectedPath = "";
+                }
+                if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
+                {
+                    settingRightInput2.Text = folderBrowserDialog.SelectedPath;
+                }
+            }
+        }
+
+        private void QDdtp1_ValueChanged(object sender, EventArgs e)
+        {
+            if (QDdtp1.Value > QDdtp2.Value)
+            {
+                QDdtp1.Value = QDdtp2.Value.AddDays(-1);
+                MessageBox.Show("时间不得大于最大时间", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                return;
+            }
+            minTime = QDdtp1.Value.ToString("yyyy-mm-dd hh:mm:ss");
+        }
+
+        private void DRulesBtn_Click(object sender, EventArgs e)
+        {
+            if (string.IsNullOrEmpty(dRules.Text))
+            {
+                MessageBox.Show("请选择条码规则", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                return;
+            }
+            dRules.Enabled = false;
+        }
+
+        private void DRulesBtn1_Click(object sender, EventArgs e)
+        {
+            dRules.Enabled = true;
+        }
+
+        private void QDdtp2_ValueChanged(object sender, EventArgs e)
+        {
+            if (QDdtp2.Value < QDdtp1.Value)
+            {
+                QDdtp2.Value = QDdtp1.Value.AddDays(1);
+                MessageBox.Show("时间不得小于最小时间", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                return;
+            }
+            maxTime = QDdtp2.Value.ToString("yyyy-mm-dd hh:mm:ss");
+        }
+
+        private void PlaySound(string type)
+        {
+            Task.Run(() => {
+                if (type == "OK")
+                {
+                    using (var stream = UAS_Tools_HY.Properties.Resources.OK)
+                    {
+                        SoundPlayer player = new SoundPlayer(stream);
+                        player.Play();
+                    }
+                }
+                else
+                {
+                    if (string.IsNullOrEmpty(settingRightInput1.Text))
+                    {
+                        using (var stream = UAS_Tools_HY.Properties.Resources.NG)
+                        {
+                            SoundPlayer player = new SoundPlayer(stream);
+                            player.Play();
+                        }
+                    }
+                    else
+                    {
+                        string customPath = settingRightInput1.Text.Trim();
+                        if (File.Exists(customPath))
+                        {
+                            SoundPlayer player = new SoundPlayer(customPath);
+                            player.Play();
+                        }
+                    }
+                }
+            });
+        }
+
+        public void loadTime_Tick(object sender, EventArgs e)
+        {
+            string currentDate = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
+            currTime.Text = currentDate;
+        }
+
     }
 }

+ 57 - 0
UAS_Tools_HY/Main.resx

@@ -117,6 +117,63 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <metadata name="DbarCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="DboxCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="DcountCol.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="DtimeCol.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="Duser.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="DisCheckdcr.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="Dresult.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="ruleId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="RulesCol1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="RulesCol2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="RulesCol3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="RulesCol4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="RulesCol5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="RulesCol6.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="dataGridViewTextBoxColumn1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="dataGridViewTextBoxColumn2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="dataGridViewTextBoxColumn3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="dataGridViewTextBoxColumn4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="dataGridViewTextBoxColumn5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
   <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>

+ 18 - 0
UAS_Tools_HY/Properties/Resources.Designer.cs

@@ -60,6 +60,24 @@ namespace UAS_Tools_HY.Properties {
             }
         }
         
+        /// <summary>
+        ///   查找类似于 System.IO.MemoryStream 的 System.IO.UnmanagedMemoryStream 类型的本地化资源。
+        /// </summary>
+        internal static System.IO.UnmanagedMemoryStream NG {
+            get {
+                return ResourceManager.GetStream("NG", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   查找类似于 System.IO.MemoryStream 的 System.IO.UnmanagedMemoryStream 类型的本地化资源。
+        /// </summary>
+        internal static System.IO.UnmanagedMemoryStream OK {
+            get {
+                return ResourceManager.GetStream("OK", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。
         /// </summary>

+ 6 - 0
UAS_Tools_HY/Properties/Resources.resx

@@ -118,6 +118,12 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
   <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="NG" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Audio\NG.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="OK" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Audio\OK.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
   <data name="U_Icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\U_Icon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>

+ 78 - 0
UAS_Tools_HY/PublicMethods/ConnectDB.cs

@@ -58,6 +58,84 @@ namespace UAS_Tools_HY.PublicMethods
 
             return dataTable;
         }
+
+        public static int ExecuteInsert(string sqlQuery, Dictionary<string, object> parameters = null)
+        {
+            try
+            {
+                using (OracleConnection connection = new OracleConnection(ConnectionString))
+                {
+                    connection.Open();
+                    using (OracleCommand command = new OracleCommand(sqlQuery, connection))
+                    {
+                        if (parameters != null && parameters.Count > 0)
+                        {
+                            foreach (var param in parameters)
+                            {
+                                command.Parameters.Add(new OracleParameter(param.Key, param.Value ?? DBNull.Value));
+                            }
+                        }
+                        return command.ExecuteNonQuery();
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                throw new Exception(ex.Message);
+            }
+        }
+
+        public static int ExecuteUpdate(string sqlQuery, Dictionary<string, object> parameters = null)
+        {
+            try
+            {
+                using (OracleConnection connection = new OracleConnection(ConnectionString))
+                {
+                    connection.Open();
+                    using (OracleCommand command = new OracleCommand(sqlQuery, connection))
+                    {
+                        if (parameters != null && parameters.Count > 0)
+                        {
+                            foreach (var param in parameters)
+                            {
+                                command.Parameters.Add(new OracleParameter(param.Key, param.Value ?? DBNull.Value));
+                            }
+                        }
+                        return command.ExecuteNonQuery();
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                throw new Exception(ex.Message);
+            }
+        }
+
+        public static int ExecuteDelete(string sqlQuery, Dictionary<string, object> parameters = null)
+        {
+            try
+            {
+                using (OracleConnection connection = new OracleConnection(ConnectionString))
+                {
+                    connection.Open();
+                    using (OracleCommand command = new OracleCommand(sqlQuery, connection))
+                    {
+                        if (parameters != null && parameters.Count > 0)
+                        {
+                            foreach (var param in parameters)
+                            {
+                                command.Parameters.Add(new OracleParameter(param.Key, param.Value ?? DBNull.Value));
+                            }
+                        }
+                        return command.ExecuteNonQuery();
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                throw new Exception(ex.Message);
+            }
+        }
     }
 }
 

+ 106 - 0
UAS_Tools_HY/PublicMethods/FormMethods.cs

@@ -0,0 +1,106 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using System.Xml;
+
+namespace UAS_MES_Tools
+{
+    internal static class FormMethods
+    {
+        public static bool IsCheckSNRules(string Rule,string SN,string RuleLeng)
+        {
+            if (SN.Length != Convert.ToInt32(RuleLeng)) return true;
+
+            int RuleIndex = 0;
+            int SNIndex = 0;
+
+            while (RuleIndex < Rule.Length && SNIndex < SN.Length)
+            {
+                char RuleChar = Rule[RuleIndex];
+
+                if (RuleChar == '{')
+                {
+                    int endBraceIndex = Rule.IndexOf('}', RuleIndex);
+                    if (endBraceIndex == -1)
+                    {
+                        return true;
+                    }
+
+                    string content = Rule.Substring(RuleIndex + 1, endBraceIndex - RuleIndex - 1);
+
+                    if (content.Contains(","))
+                    {
+                        string[] allowedChars = content.Split(',');
+                        if (Array.IndexOf(allowedChars, SN[SNIndex].ToString()) == -1)
+                        {
+                            return true;
+                        }
+                    }
+                    else if (content == "YY")
+                    {
+                        if (SNIndex + 1 >= SN.Length) return true;
+                        string yearPart = SN.Substring(SNIndex, 2);
+                        if (!Regex.IsMatch(yearPart, @"^\d{2}$"))
+                        {
+                            return true;
+                        }
+                        SNIndex++;
+                    }
+                    else if (content == "MM")
+                    {
+                        if (SNIndex + 1 >= SN.Length) return true;
+                        string monthPart = SN.Substring(SNIndex, 2);
+                        if (!Regex.IsMatch(monthPart, @"^(0[1-9]|1[0-2])$"))
+                        {
+                            return true;
+                        }
+                        SNIndex++;
+                    }
+                    else if (content == "DD")
+                    {
+                        if (SNIndex + 1 >= SN.Length) return true;
+                        string dayPart = SN.Substring(SNIndex, 2);
+                        if (!Regex.IsMatch(dayPart, @"^(0[1-9]|[12]\d|3[01])$"))
+                        {
+                            return true;
+                        }
+                        SNIndex++;
+                    }
+                    else
+                    {
+                        return true;
+                    }
+
+
+                    RuleIndex = endBraceIndex + 1;
+                    SNIndex++;
+                }
+                else if (RuleChar == '*')
+                {
+                    RuleIndex++;
+                    SNIndex++;
+                }
+                else
+                {
+                    if (RuleChar != SN[SNIndex])
+                    {
+                        return true;
+                    }
+                    RuleIndex++;
+                    SNIndex++;
+                }
+            }
+            if (RuleIndex != Rule.Length || SNIndex != SN.Length)
+            {
+                return true;
+            }
+
+            return false;
+        }
+    }
+}

BIN
UAS_Tools_HY/Resources/Audio/NG.wav


BIN
UAS_Tools_HY/Resources/Audio/OK.wav


+ 135 - 0
UAS_Tools_HY/RulesList.Designer.cs

@@ -0,0 +1,135 @@
+namespace UAS_Tools_HY
+{
+    partial class RulesList
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.Submit = new System.Windows.Forms.Button();
+            this.label1 = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.label3 = new System.Windows.Forms.Label();
+            this.textBox1 = new System.Windows.Forms.TextBox();
+            this.textBox2 = new System.Windows.Forms.TextBox();
+            this.textBox3 = new System.Windows.Forms.TextBox();
+            this.SuspendLayout();
+            // 
+            // Submit
+            // 
+            this.Submit.Cursor = System.Windows.Forms.Cursors.Hand;
+            this.Submit.Location = new System.Drawing.Point(227, 386);
+            this.Submit.Name = "Submit";
+            this.Submit.Size = new System.Drawing.Size(127, 46);
+            this.Submit.TabIndex = 0;
+            this.Submit.Text = "提交";
+            this.Submit.UseVisualStyleBackColor = true;
+            this.Submit.Click += new System.EventHandler(this.Submit_Click);
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(51, 37);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(82, 24);
+            this.label1.TabIndex = 1;
+            this.label1.Text = "规则名称";
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(51, 93);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(82, 24);
+            this.label2.TabIndex = 2;
+            this.label2.Text = "规则内容";
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(83, 150);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(46, 24);
+            this.label3.TabIndex = 3;
+            this.label3.Text = "备注";
+            // 
+            // textBox1
+            // 
+            this.textBox1.Location = new System.Drawing.Point(164, 34);
+            this.textBox1.Name = "textBox1";
+            this.textBox1.Size = new System.Drawing.Size(331, 31);
+            this.textBox1.TabIndex = 4;
+            // 
+            // textBox2
+            // 
+            this.textBox2.Location = new System.Drawing.Point(164, 90);
+            this.textBox2.Name = "textBox2";
+            this.textBox2.Size = new System.Drawing.Size(331, 31);
+            this.textBox2.TabIndex = 5;
+            // 
+            // textBox3
+            // 
+            this.textBox3.Location = new System.Drawing.Point(164, 147);
+            this.textBox3.Multiline = true;
+            this.textBox3.Name = "textBox3";
+            this.textBox3.Size = new System.Drawing.Size(331, 205);
+            this.textBox3.TabIndex = 6;
+            // 
+            // RulesList
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(578, 444);
+            this.Controls.Add(this.textBox3);
+            this.Controls.Add(this.textBox2);
+            this.Controls.Add(this.textBox1);
+            this.Controls.Add(this.label3);
+            this.Controls.Add(this.label2);
+            this.Controls.Add(this.label1);
+            this.Controls.Add(this.Submit);
+            this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
+            this.Margin = new System.Windows.Forms.Padding(4);
+            this.MaximizeBox = false;
+            this.Name = "RulesList";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+            this.Text = "RulesList";
+            this.Load += new System.EventHandler(this.RulesList_Load);
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Button Submit;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.TextBox textBox1;
+        private System.Windows.Forms.TextBox textBox2;
+        private System.Windows.Forms.TextBox textBox3;
+    }
+}

+ 97 - 0
UAS_Tools_HY/RulesList.cs

@@ -0,0 +1,97 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using UAS_Tools_HY.PublicMethods;
+
+namespace UAS_Tools_HY
+{
+    public partial class RulesList : Form
+    {
+        public RulesList(string type,string userName)
+        {
+            InitializeComponent();
+            UserName = userName;
+            TYPE = type;
+        }
+
+        public RulesList(string type, string ruleId, string userName)
+        {
+            InitializeComponent();
+            UserName = userName;
+            RULE_ID = ruleId;
+            TYPE = type;
+        }
+        
+        string TYPE,RULE_ID,UserName;
+        DataTable dt;
+
+        private void RulesList_Load(object sender, EventArgs e)
+        {
+            dt = ConnectDB.ExecuteSelect($"SELECT * FROM g_packing_rules WHERE rule_id = '{RULE_ID}'");
+            if(dt.Rows.Count > 0)
+            {
+                textBox1.Text = dt.Rows[0]["RULE_NAME"].ToString();
+                textBox2.Text = dt.Rows[0]["RULE_VALUE"].ToString();
+                textBox3.Text = dt.Rows[0]["RELE_REMARK"].ToString();
+
+                textBox1.Focus();
+                textBox1.SelectAll();
+            }
+        }
+
+        private void Submit_Click(object sender, EventArgs e)
+        {
+            if (string.IsNullOrEmpty(textBox1.Text))
+            {
+                MessageBox.Show("请输入规则名称", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                return;
+            }
+            if (string.IsNullOrEmpty(textBox2.Text))
+            {
+                MessageBox.Show("请输入规则内容", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                return;
+            }
+
+            string pattern = @"\{([^}]*)\}";
+            var matches = Regex.Matches(textBox2.Text.Trim(), pattern);
+
+            int totalLen = textBox2.Text.Trim().Length;
+            int initLen = 0;
+            int isContain = 0;
+            foreach (Match match in matches)
+            {
+                initLen += match.Length;
+
+                if (match.Value.Contains(",")){
+                    isContain += 1;
+                }
+                else
+                {
+                    isContain += match.Groups[1].Value.Length;
+                }
+            }
+            int otherLeng = totalLen - initLen + isContain;
+
+            if(TYPE == "Add")
+            {
+                int insertCount = ConnectDB.ExecuteInsert($@"INSERT INTO g_packing_rules (rule_id, rule_name, rule_value, rule_length, rele_remark, update_time, update_user) VALUES 
+                (RULEID_SEQ.nextval, '{textBox1.Text.Trim()}', '{textBox2.Text.Trim()}', '{otherLeng}', '{textBox3.Text.Trim()}', sysdate, '{UserName}')");
+            }
+            else if(TYPE == "Modify")
+            {
+                int updateCount = ConnectDB.ExecuteUpdate($@"UPDATE g_packing_rules SET rule_name = '{textBox1.Text.Trim()}',rule_value = '{textBox2.Text.Trim()}',
+                    rule_length = '{otherLeng}',rele_remark = '{textBox3.Text.Trim()}',update_time = sysdate, update_user = '{UserName}' WHERE rule_id = '{RULE_ID}'");
+            }
+            
+            this.DialogResult = DialogResult.OK;
+            this.Close();
+        }
+    }
+}

+ 120 - 0
UAS_Tools_HY/RulesList.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 10 - 0
UAS_Tools_HY/UAS_Tools_HY.csproj

@@ -86,8 +86,15 @@
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="PublicMethods\ConnectDB.cs" />
     <Compile Include="PublicMethods\BaseUtil.cs" />
+    <Compile Include="PublicMethods\FormMethods.cs" />
     <Compile Include="PublicMethods\LogManager.cs" />
     <Compile Include="PublicMethods\SystemCacheClass.cs" />
+    <Compile Include="RulesList.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="RulesList.Designer.cs">
+      <DependentUpon>RulesList.cs</DependentUpon>
+    </Compile>
     <EmbeddedResource Include="Login.resx">
       <DependentUpon>Login.cs</DependentUpon>
     </EmbeddedResource>
@@ -104,6 +111,9 @@
       <DependentUpon>Resources.resx</DependentUpon>
       <DesignTime>True</DesignTime>
     </Compile>
+    <EmbeddedResource Include="RulesList.resx">
+      <DependentUpon>RulesList.cs</DependentUpon>
+    </EmbeddedResource>
     <None Include="Properties\Settings.settings">
       <Generator>SettingsSingleFileGenerator</Generator>
       <LastGenOutput>Settings.Designer.cs</LastGenOutput>

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels