From c9e3a7f0c154892f2327e300e28af53f81e40ad0 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周四, 20 2月 2025 11:03:24 +0800
Subject: [PATCH] 软件加密+ 修复 不断给plc报警的问题

---
 CC/iWareUnitTest/iWareUnitTest.csproj                                |    2 
 CC/iWareModel/iWareModel.csproj                                      |    1 
 CC/iWareUnitTest/Entity/NewPasswordEntity.cs                         |   17 +++
 CC/iWareUnitTest/CSharpTest.cs                                       |   97 +++++++++++++++++++
 CC/iWareCC_ASRS/Common/Helper/MyExtendHelper.cs                      |   86 +++++++++++++++++
 CC/iWareModel/Entity/WMS/ControlRequest.cs                           |   51 ++++++++++
 CC/iWareCC_ASRS/ThreadService/03_BZ12(机器人码包工位)/1、DataProcess_BZ12.cs |   19 +++
 CC/iWareUnitTest/Entity/PasswordGenerator.cs                         |   22 ++++
 8 files changed, 290 insertions(+), 5 deletions(-)

diff --git a/CC/iWareCC_ASRS/Common/Helper/MyExtendHelper.cs b/CC/iWareCC_ASRS/Common/Helper/MyExtendHelper.cs
index b0fd52f..83cb7be 100644
--- a/CC/iWareCC_ASRS/Common/Helper/MyExtendHelper.cs
+++ b/CC/iWareCC_ASRS/Common/Helper/MyExtendHelper.cs
@@ -15,7 +15,7 @@
 using System.Threading;
 using System.Threading.Tasks;
 using XiGang.Core.Model;
-
+using LogType = iWareCommon.Utils.LogType;
 
 namespace iWareCC.Common.Helper
 {
@@ -26,6 +26,90 @@
     {
 
         /// <summary>
+        /// 鍏叡鐨勬帶鍒惰姹傚璞″瓧鍏�
+        /// </summary>
+        public static IDictionary<string, ControlRequest> controlRequestDicts = new Dictionary<string, ControlRequest>();
+
+        /// <summary>
+        /// 鍏叡鐨勬帶鍒惰姹傚璞″瓧鍏歌祴鍊�
+        /// </summary>
+        /// <param name="placeNo"></param>
+        /// <param name="result"></param>
+        /// <param name="msg"></param>
+        public static void SetValueControlRequestDicts(string placeNo, bool result, string msg)
+        {
+            if (controlRequestDicts.ContainsKey(placeNo))
+            {
+                controlRequestDicts[placeNo].IsSuccess = result;
+                controlRequestDicts[placeNo].LastTime = DateTime.Now;
+                controlRequestDicts[placeNo].PlaceNo = placeNo;
+                if (result)
+                {
+                    controlRequestDicts[placeNo].Count = 0;
+                    controlRequestDicts[placeNo].ErrMsg = "";
+                }
+                else
+                {
+                    controlRequestDicts[placeNo].Count++;
+                    controlRequestDicts[placeNo].ErrMsg = msg;
+                }
+            }
+            else
+            {
+                if (result)
+                {
+                    controlRequestDicts.Add(placeNo, new ControlRequest()
+                    {
+                        PlaceNo = placeNo,
+                        Count = 0,
+                        LastTime = DateTime.Now,
+                        ErrMsg = msg,
+                        IsSuccess = result
+                    });
+                }
+                else
+                {
+                    controlRequestDicts.Add(placeNo, new ControlRequest()
+                    {
+                        PlaceNo = placeNo,
+                        Count = 1,
+                        LastTime = DateTime.Now,
+                        ErrMsg = msg,
+                        IsSuccess = result
+                    });
+                }
+            }
+        }
+
+        /// <summary>
+        /// 楠岃瘉鏄惁鍏佽缁橮LC鍙戞姤璀�
+        /// </summary>
+        /// <param name="placeNo"></param>
+        /// <returns></returns>
+        public static bool ValidateIsAllowRequest(string placeNo, LogType logType)
+        {
+            if (controlRequestDicts.ContainsKey(placeNo))
+            {
+                if (controlRequestDicts[placeNo].IsSuccess == false)
+                {
+                    //var diff = DateTime.Now - controlRequestDicts[placeNo].LastTime;
+                    //if (diff.Seconds <= 10)
+                    //{//濡傛灉杩炵画璇锋眰鍦�10绉掑唴锛屽垯璁や负 涓嶉渶瑕佸啀娆¤姹�
+                    //    WZ.Useful.Commons.LogTextHelper.WriteLine("CommonControl", "ValidateIsAllowRequest", "濡傛灉杩炵画璇锋眰鍦�10绉掑唴锛屽垯璁や负 涓嶉渶瑕佸啀娆¤姹傦紝闂撮殧" + diff.Seconds + "绉�,placeNo:" + placeNo);
+                    //    return false;
+                    //}
+                    if (controlRequestDicts[placeNo].Count <= 5)
+                    {//濡傛灉杩炵画璇锋眰鍦�5娆″唴锛屽垯璁や负 涓嶉渶瑕佸啀娆¤姹�
+                        var msg = "濡傛灉杩炵画璇锋眰鍦�5娆″唴锛屽垯璁や负 涓嶉渶瑕佸啀娆¤姹傦紝闂撮殧" + controlRequestDicts[placeNo].Count + "涓�,placeNo:" + placeNo;
+                        Log4NetHelper.WriteInfoLog(logType, msg);
+                        return false;
+                    }
+                }
+            }
+            return true;
+        }
+
+        /// <summary>
         /// 鐢熸垚鏈�鏂扮殑浠诲姟鍙�
         /// </summary>
         /// <param name="wmsDB"></param>
diff --git "a/CC/iWareCC_ASRS/ThreadService/03_BZ12\050\346\234\272\345\231\250\344\272\272\347\240\201\345\214\205\345\267\245\344\275\215\051/1\343\200\201DataProcess_BZ12.cs" "b/CC/iWareCC_ASRS/ThreadService/03_BZ12\050\346\234\272\345\231\250\344\272\272\347\240\201\345\214\205\345\267\245\344\275\215\051/1\343\200\201DataProcess_BZ12.cs"
index 49ed06d..deb05cc 100644
--- "a/CC/iWareCC_ASRS/ThreadService/03_BZ12\050\346\234\272\345\231\250\344\272\272\347\240\201\345\214\205\345\267\245\344\275\215\051/1\343\200\201DataProcess_BZ12.cs"
+++ "b/CC/iWareCC_ASRS/ThreadService/03_BZ12\050\346\234\272\345\231\250\344\272\272\347\240\201\345\214\205\345\267\245\344\275\215\051/1\343\200\201DataProcess_BZ12.cs"
@@ -69,7 +69,7 @@
                             }
                             var upiCode = result.Replace("/r", ""); ;
                             short lastnum = 0;//鏄惁鏈澘
-                           
+
                             string place = "";
                             using (WmsDBModel wmsDB = new WmsDBModel())
                             {
@@ -105,12 +105,23 @@
                                 //placeZ = (short)upiObj.MachineZCenter;
                                 if (upiObj.UpiStatus == (int)UpiStatusEnum.宸茬爜鍨� || upiObj.UpiStatus == (int)UpiStatusEnum.鐮佸灈涓�)
                                 {
-                                    //鍐欏叆鎶ヨ淇℃伅
-                                    await MyExtendHelper.WriteBoolPlcDataForWarning(PlcWarningAddressGloble.Num_BZ12_3);
-
                                     SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()},鏍规嵁UPI:{upiCode}鐘舵�佸凡鏄�'宸茬爜鍨�'鎴�'鐮佸灈涓�' ";
+                                    MyExtendHelper.SetValueControlRequestDicts(PlcWarningAddressGloble.Num_BZ12_3, false, SystemWarningMsg._lbl_alert_DataProcess_BZ12);
+
+                                    var isAllow = MyExtendHelper.ValidateIsAllowRequest(PlcWarningAddressGloble.Num_BZ12_3, LogType.DataProcess_BZ12);
+                                    if (isAllow == false)
+                                    {
+                                        continue;
+                                    }
+                                    else
+                                    {
+                                        //鍐欏叆鎶ヨ淇℃伅
+                                        await MyExtendHelper.WriteBoolPlcDataForWarning(PlcWarningAddressGloble.Num_BZ12_3);
+                                    }
+
                                     continue;
                                 }
+                                MyExtendHelper.SetValueControlRequestDicts(PlcWarningAddressGloble.Num_BZ12_3, true, "");
                                 upiObj.UpiStatus = (int)UpiStatusEnum.鐮佸灈涓�;
                                 upiObj.AreaCode = (int)AreaCodeEnum.鐮佸灈鍖哄煙;
                                 //鏌ュ杩欏寘鎵�鏈夌殑鏁伴噺
diff --git a/CC/iWareModel/Entity/WMS/ControlRequest.cs b/CC/iWareModel/Entity/WMS/ControlRequest.cs
new file mode 100644
index 0000000..9e76c8a
--- /dev/null
+++ b/CC/iWareModel/Entity/WMS/ControlRequest.cs
@@ -0,0 +1,51 @@
+锘�// 楹荤渷鐞嗗伐瀛﹂櫌璁稿彲璇�
+//
+// 鐗堟潈鎵�鏈� (c) 2021-2023 zuohuaijun锛屽ぇ鍚嶇鎶�锛堝ぉ娲ワ級鏈夐檺鍏徃  鑱旂郴鐢佃瘽/寰俊锛�18020030720  QQ锛�515096995
+//
+// 鐗规鍏嶈垂鎺堜簣鑾峰緱鏈蒋浠剁殑浠讳綍浜轰互澶勭悊鏈蒋浠剁殑鏉冨埄锛屼絾椤婚伒瀹堜互涓嬫潯浠讹細鍦ㄦ墍鏈夊壇鏈垨閲嶈閮ㄥ垎鐨勮蒋浠朵腑蹇呴』鍖呮嫭涓婅堪鐗堟潈澹版槑鍜屾湰璁稿彲澹版槑銆�
+//
+// 杞欢鎸夆�滃師鏍封�濇彁渚涳紝涓嶆彁渚涗换浣曞舰寮忕殑鏄庣ず鎴栨殫绀虹殑淇濊瘉锛屽寘鎷絾涓嶉檺浜庡閫傞攢鎬с�侀�傜敤鎬у拰闈炰镜鏉冪殑淇濊瘉銆�
+// 鍦ㄤ换浣曟儏鍐典笅锛屼綔鑰呮垨鐗堟潈鎸佹湁浜哄潎涓嶅浠讳綍绱㈣禂銆佹崯瀹虫垨鍏朵粬璐d换璐熻矗锛屾棤璁烘槸鍥犲悎鍚屻�佷镜鏉冩垨鍏朵粬鏂瑰紡寮曡捣鐨勶紝涓庤蒋浠舵垨鍏朵娇鐢ㄦ垨鍏朵粬浜ゆ槗鏈夊叧銆�
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace XiGang.Core.Model
+{
+
+    /// <summary>
+    /// 鎺у埗澶勭悊璇锋眰瀵硅薄
+    /// 闃叉PLC涓嶅仠鍦拌皟鐢紝瀵艰嚧鏁版嵁搴撴閿佺殑闂 
+    /// </summary>
+    public class ControlRequest
+    {
+        /// <summary>
+        /// 璇锋眰杩斿洖缁撴灉
+        /// </summary>
+        public bool IsSuccess { get; set; }
+
+        /// <summary>
+        /// 璁$畻娆℃暟
+        /// </summary>
+        public int Count { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栧彿 
+        /// </summary>
+        public string PlaceNo { get; set; }
+
+        /// <summary>
+        /// 閿欒娑堟伅
+        /// </summary>
+        public string ErrMsg { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庢洿鏂版椂闂�
+        /// </summary>
+        public DateTime LastTime { get; set; }
+
+    }
+}
\ No newline at end of file
diff --git a/CC/iWareModel/iWareModel.csproj b/CC/iWareModel/iWareModel.csproj
index 1965c43..a7d8fb1 100644
--- a/CC/iWareModel/iWareModel.csproj
+++ b/CC/iWareModel/iWareModel.csproj
@@ -78,6 +78,7 @@
     <Compile Include="Entity\ValidateModel.cs" />
     <Compile Include="Entity\ValidateResModel.cs" />
     <Compile Include="Entity\WMS\AddMainTaskPostParam.cs" />
+    <Compile Include="Entity\WMS\ControlRequest.cs" />
     <Compile Include="Entity\WMS\UpdateEngineInfoParam.cs" />
     <Compile Include="EnumType\EDbError.cs" />
     <Compile Include="EnumType\EDevice\AGV\AGVState.cs" />
diff --git a/CC/iWareUnitTest/CSharpTest.cs b/CC/iWareUnitTest/CSharpTest.cs
index 95d88a3..cf17e50 100644
--- a/CC/iWareUnitTest/CSharpTest.cs
+++ b/CC/iWareUnitTest/CSharpTest.cs
@@ -1,6 +1,7 @@
 锘�
 using iWareCommon.Utils;
 using iWareSql.DBModel;
+using iWareUnitTest.Entity;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
 using Newtonsoft.Json;
 using System;
@@ -140,6 +141,98 @@
             var txt1 = DESEncryptHelper.Encrypt("2025-02-25");//125B1E37E4C1F3C8DD1F36B342ED1307
             var txt2 = DESEncryptHelper.Encrypt("2025-03-30");//45BAF941111384BEE21F89FD18461EC1
 
+            List<NewPasswordEntity> list = new List<NewPasswordEntity>();
+            var startDate = DateTime.Parse("2025-04-25");
+            for (int i = 0; i < 11; i++)
+            {
+                var newPass = PasswordGenerator.GenerateRandomPassword(7);
+                var _date = startDate.ToString("yyy-MM-dd");
+                startDate = startDate.AddMonths(1);
+                list.Add(new NewPasswordEntity
+                {
+                    date = _date,
+                    password = newPass,
+                    encrypt_date = DESEncryptHelper.Encrypt(_date),
+                    encrypt_password = DESEncryptHelper.Encrypt(newPass)
+                });
+            }
+            StringBuilder sb = new StringBuilder();
+            foreach (var item in list)
+            {
+                sb.Append(item.date + "\r\n");
+            }
+            sb.Append("鍒嗗壊鍝�" + "\r\n");
+            foreach (var item in list)
+            {
+                sb.Append(item.password + "\r\n");
+            }
+            sb.Append("鍒嗗壊鍝�" + "\r\n");
+            foreach (var item in list)
+            {
+                sb.Append(item.encrypt_date + "\r\n");
+            }
+            sb.Append("鍒嗗壊鍝�" + "\r\n");
+            foreach (var item in list)
+            {
+                sb.Append(item.encrypt_password + "\r\n");
+            }
+
+
+            var cc = sb.ToString();
+
+
+            var txt4 = DESEncryptHelper.Encrypt("2025-04-25");
+            var txt5 = DESEncryptHelper.Encrypt("2025-05-25");
+            var txt6 = DESEncryptHelper.Encrypt("2025-06-25");
+            var txt7 = DESEncryptHelper.Encrypt("2025-07-25");
+            var txt8 = DESEncryptHelper.Encrypt("2025-08-25");
+            var txt9 = DESEncryptHelper.Encrypt("2025-09-25");
+            var txt10 = DESEncryptHelper.Encrypt("2025-10-25");
+            var txt11 = DESEncryptHelper.Encrypt("2025-11-25");
+            var txt12 = DESEncryptHelper.Encrypt("2025-12-25");
+            var txt13 = DESEncryptHelper.Encrypt("2026-01-25");
+            var txt14 = DESEncryptHelper.Encrypt("2026-02-25");
+
+            sb.Append(txt4 + "\r\n");
+            sb.Append(txt5 + "\r\n");
+            sb.Append(txt6 + "\r\n");
+            sb.Append(txt7 + "\r\n");
+            sb.Append(txt8 + "\r\n");
+            sb.Append(txt9 + "\r\n");
+            sb.Append(txt10 + "\r\n");
+            sb.Append(txt11 + "\r\n");
+            sb.Append(txt12 + "\r\n");
+            sb.Append(txt13 + "\r\n");
+            sb.Append(txt14 + "\r\n");
+
+            sb.Append("鍒嗗壊鍝�" + "\r\n");
+
+            var password_txt4 = DESEncryptHelper.Encrypt("8567sdc");
+            var password_txt5 = DESEncryptHelper.Encrypt("2025yyc");
+            var password_txt6 = DESEncryptHelper.Encrypt("jjkljlue5");
+            var password_txt7 = DESEncryptHelper.Encrypt("jh3njdi3");
+            var password_txt8 = DESEncryptHelper.Encrypt("jkncy632d");
+            var password_txt9 = DESEncryptHelper.Encrypt("kjl3oi8j4");
+            var password_txt10 = DESEncryptHelper.Encrypt("9i438d6");
+            var password_txt11 = DESEncryptHelper.Encrypt("0934kydht");
+            var password_txt12 = DESEncryptHelper.Encrypt("23hd6f");
+            var password_txt13 = DESEncryptHelper.Encrypt("8uj47d6d");
+            var password_txt14 = DESEncryptHelper.Encrypt("jjy74jdc3");
+
+            sb.Append(password_txt4 + "\r\n");
+            sb.Append(password_txt5 + "\r\n");
+            sb.Append(password_txt6 + "\r\n");
+            sb.Append(password_txt7 + "\r\n");
+            sb.Append(password_txt8 + "\r\n");
+            sb.Append(password_txt9 + "\r\n");
+            sb.Append(password_txt10 + "\r\n");
+            sb.Append(password_txt11 + "\r\n");
+            sb.Append(password_txt12 + "\r\n");
+            sb.Append(password_txt13 + "\r\n");
+            sb.Append(password_txt14 + "\r\n");
+
+           
+
 
             var to_txt = DESEncryptHelper.Decrypt("C3F3DD5F2C816041775DB87739E1F729");//
             var to_txt1 = DESEncryptHelper.Decrypt("125B1E37E4C1F3C8DD1F36B342ED1307");//
@@ -155,6 +248,10 @@
             var test_txt = DESEncryptHelper.Encrypt("2024-12-19");//46039E400A485A5B383F51212D562772
             var test_txt2 = DESEncryptHelper.Encrypt("2024-12-25");//46039E400A485A5B80BA4C2C44FEA6AF
 
+
+            to_txt2 = DESEncryptHelper.Decrypt("CB32534E34DD3273FCEA68A19F06C37F");//
+            to_txt2 = DESEncryptHelper.Decrypt("69D40723281D3406");//
+
             Assert.IsFalse(false);
 
         }
diff --git a/CC/iWareUnitTest/Entity/NewPasswordEntity.cs b/CC/iWareUnitTest/Entity/NewPasswordEntity.cs
new file mode 100644
index 0000000..fe7def2
--- /dev/null
+++ b/CC/iWareUnitTest/Entity/NewPasswordEntity.cs
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace iWareUnitTest.Entity
+{
+    public class NewPasswordEntity
+    {
+        public string date { get; set; }
+        public string password { get; set; }
+
+        public string encrypt_date { get; set; }
+        public string encrypt_password { get; set; }
+    }
+}
diff --git a/CC/iWareUnitTest/Entity/PasswordGenerator.cs b/CC/iWareUnitTest/Entity/PasswordGenerator.cs
new file mode 100644
index 0000000..f1079b0
--- /dev/null
+++ b/CC/iWareUnitTest/Entity/PasswordGenerator.cs
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Linq;
+using System.Security.Cryptography;
+using System.Text;
+using System.Threading;
+
+public class PasswordGenerator
+{
+    //private const string ValidChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()";
+    private const string ValidChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+    private static readonly RandomNumberGenerator _rng = RandomNumberGenerator.Create();
+    private static readonly object _lock = new object(); // 鐢ㄤ簬绾跨▼瀹夊叏
+    private static readonly char[] _chars = ValidChars.ToCharArray(); // 棰勫姞杞藉瓧绗︽暟缁勪互鎻愰珮鎬ц兘
+    private static readonly int _validCharsLength = ValidChars.Length; // 棰勫姞杞介暱搴︿互鎻愰珮鎬ц兘
+    private static readonly byte[] _randomBytesBuffer = new byte[4]; // 鐢ㄤ簬鐢熸垚闅忔満鏁颁互鍒濆鍖朢andom瀵硅薄锛堝彲閫夛紝鍙栧喅浜庨渶姹傦級
+    private static readonly Random _random = new Random(); // 浠呬负鍒濆鍖朢andom瀵硅薄锛堝彲閫夛紝鍙栧喅浜庨渶姹傦級
+    private static readonly ThreadLocal<Random> _threadRandom = new ThreadLocal<Random>(() => new Random(BitConverter.ToInt32(GetRandomBytes(), 0))); // 绾跨▼瀹夊叏鐨凴andom瀵硅薄锛堝彲閫夛紝鍙栧喅浜庨渶姹傦級
+    private static byte[] GetRandomBytes() { lock (_lock) { _rng.GetBytes(_randomBytesBuffer); return _randomBytesBuffer; } } // 鑾峰彇闅忔満瀛楄妭鏁扮粍鐨勬柟娉曪紝纭繚绾跨▼瀹夊叏銆傚鏋滀笉闇�瑕佺嚎绋嬪畨鍏紝鍙互绉婚櫎lock銆�
+    private static int GetRandomInt(int maxValue) => _threadRandom.Value.Next(maxValue); // 浣跨敤绾跨▼瀹夊叏鐨凴andom瀵硅薄鑾峰彇闅忔満鏁存暟銆傚鏋滀笉闇�瑕佺嚎绋嬪畨鍏紝鍙互浣跨敤鏅�氱殑_random.Next(maxValue)銆�
+    private static char GetRandomChar() => _chars[GetRandomInt(_validCharsLength)]; // 鑾峰彇闅忔満瀛楃銆傚鏋滀笉闇�瑕佺嚎绋嬪畨鍏紝鍙互浣跨敤_chars[random.Next(_validCharsLength)]銆�
+    public static string GenerateRandomPassword(int length) => new string(Enumerable.Range(0, length).Select(_ => GetRandomChar()).ToArray()); // 鐢熸垚瀵嗙爜瀛楃涓层�傚鏋滀笉闇�瑕佺嚎绋嬪畨鍏紝鍙互鐩存帴浣跨敤_chars[random.Next(_validCharsLength)]銆�
+}
\ No newline at end of file
diff --git a/CC/iWareUnitTest/iWareUnitTest.csproj b/CC/iWareUnitTest/iWareUnitTest.csproj
index fdfef53..2e2e300 100644
--- a/CC/iWareUnitTest/iWareUnitTest.csproj
+++ b/CC/iWareUnitTest/iWareUnitTest.csproj
@@ -69,6 +69,8 @@
   </Choose>
   <ItemGroup>
     <Compile Include="CSharpTest.cs" />
+    <Compile Include="Entity\PasswordGenerator.cs" />
+    <Compile Include="Entity\NewPasswordEntity.cs" />
     <Compile Include="OPCTest.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Service References\MesWebService\Reference.cs">

--
Gitblit v1.9.3