From 25184cadd4011856d95e76f1d79b37ce51a3e548 Mon Sep 17 00:00:00 2001
From: chengsc <Demo@DESKTOP-CPA90BF>
Date: 星期三, 30 十月 2024 11:34:12 +0800
Subject: [PATCH] 修改问题

---
 Admin.NET/WCS.Application/PLC/PLCService.cs |   99 ++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 85 insertions(+), 14 deletions(-)

diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index c946757..84810ce 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -85,7 +85,7 @@
                     PlcTaskInfo taskInfo = new PlcTaskInfo();
                     if (modTask.TaskType == TaskTypeEnum.Move)
                     {
-                        taskInfo = PLCCommon.GetEndPai(modTask.EndLocate.Substring(1, 2), modTask.EndLocate.Substring(2, 2),
+                        taskInfo = PLCCommon.GetEndPai(modTask.EndRoadway.Substring(1, 2), modTask.EndLocate.Substring(2, 2),
                                     modTask.EndLocate.Substring(0, 2), modTask.EndLocate.Substring(4, 2),
                                     modTask.EndLocate.Substring(6, 2));
                         
@@ -1437,7 +1437,7 @@
                             TaskNo = modTask.TaskNo,
                             PlcId = modDevice.Id,
                             PlcName = modDevice.Text,
-                            InteractiveMsg = $"鍐欏叆鎸囦护450锛歿modDevice.StationNum}鎷i�夊畬鎴�,鎵樼洏绂诲紑宸ヤ綅",
+                            InteractiveMsg = $"鍐欏叆鎸囦护450锛歿modDevice.StationNum}鍑哄簱瀹屾垚",
                             PalletNo = palletVal,
                             Status = TaskStatusEnum.Complete,
                             StartLocat = starVal.ToString(),
@@ -1473,7 +1473,7 @@
                         // led鏄剧ず鍐呭
                         var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business && m.PlcId == modDevice.PlcId);
                         
-                        ledText += $"鎷i�夊畬鎴愶紝鎵樼洏绂诲紑宸ヤ綅\n\n";
+                        ledText += $"鍑哄簱瀹屾垚\n\n";
                         ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n";
                         ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n";
                         ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n";
@@ -1723,7 +1723,7 @@
                                 else
                                 {
                                     // 涓巔lc浜や簰鍐欏叆鍒嗛亾鍙峰拰娴佺▼鎺у埗瀛�
-                                    var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, checkTaskInfo.RoboatNo);
+                                    var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, checkTaskInfo.LineNo);
                                     if (ret.IsSucceed)
                                     {
                                         // 鍐欏叆娴佺▼鎺у埗瀛� 2
@@ -1802,16 +1802,17 @@
                             string boxNo = boxVal.ToString();
                             if (string.IsNullOrEmpty(boxNo)) 
                             {
-                                Log.Error(string.Format("鐮佸灈宸ヤ綅{0}锛岀鐮佷负null鎻掔爜澶辫触!璇蜂汉宸ュ己鍒剁粨鎵广��"), modDevice.StationNum);
+                                Log.Error($"鐮佸灈宸ヤ綅{modDevice.StationNum}锛岀鐮佷负null鎻掔爜澶辫触!璇蜂汉宸ュ己鍒剁粨鎵广��" );
                                 // 鍐欏叆鎻掑叆缁撴灉 2锛氭彃鐮佸け璐�
                                 var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2");
+                                
                                 break;
                             }
                             // 楠岃瘉绠辩爜琛ㄦ槸鍚﹀瓨鍦ㄦ绠辩爜
-                            var boxInfo = _db.Queryable<WcsBoxInfo>().First(w => w.IsDelete == false && w.BoxNo == boxNo);
-                            if (boxInfo == null) 
+                            var boxInfo = _db.Queryable<WcsBoxInfo>().Where(w => w.IsDelete == false && w.BoxNo == boxNo).ToList();
+                            if (boxInfo.Count == 0) 
                             {
-                                Log.Error(string.Format("鐮佸灈宸ヤ綅{0}锛岀鐮亄1}涓嶅瓨鍦�!璇蜂汉宸ュ己鍒剁粨鎵广��"), modDevice.StationNum,boxNo);
+                                Log.Error($"鐮佸灈宸ヤ綅{modDevice.StationNum}锛岀鐮亄boxNo}涓嶅瓨鍦�!璇蜂汉宸ュ己鍒剁粨鎵广��");
                                 // 鍐欏叆鎻掑叆缁撴灉 2锛氭彃鐮佸け璐�
                                 var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2");
                                 break;
@@ -1830,26 +1831,42 @@
                                 break;
                             }
                             // 淇敼鎻掔爜琛�
-                            boxInfo.PalletNo = palletNo;
-                            boxInfo.UpdateTime = DateTime.Now;
+                            foreach (WcsBoxInfo item in boxInfo) 
+                            {
+                                item.PalletNo = palletNo;
+                                item.UpdateTime = DateTime.Now;
+                            }
+
                             var rowCount = _db.Updateable(boxInfo).ExecuteCommand();
                             if (rowCount > 0)
                             {
                                 // 鎻掔爜鎴愬姛
                                 var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "1");
+                                
+                                //鏄惁缁撴壒绠� 
+                                if (boxInfo[0].EndLotFlag == "1" && retVal.IsSucceed) 
+                                {
+                                    // 瑙﹀彂缁撴壒 瑙g粦鍒嗛亾
+                                    AutoEndLot(boxInfo[0].LotNo, plcConn, "0");
+                                }
                             }
                             else 
                             {
                                 // 鎻掔爜澶辫触
-                                Log.Error(string.Format("绠辩爜{0};鐮佸灈宸ヤ綅{1}锛屾彃鐮佸け璐ワ紝璇峰己鍒剁粨鎵�"),boxNo,modDevice.StationNum);
+                                Log.Error($"绠辩爜{boxNo};鐮佸灈宸ヤ綅{modDevice.StationNum}锛屾彃鐮佸け璐ワ紝璇峰己鍒剁粨鎵�");
                                 var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "2");
+                                if (retVal.IsSucceed) 
+                                {
+                                    // 瑙﹀彂缁撴壒 涓嶈В缁戝垎閬�
+                                    AutoEndLot(boxInfo[0].LotNo, plcConn, "1");
+                                }
                             }
                         }
                     }
                     break;
                 case "40":
                     // 璇锋眰缁勬墭锛岀敵璇峰叆搴�
-                    {
+                     {
                         // 鏍规嵁宸ヤ綅鍙凤紝鑾峰彇鎵樼洏鍙�
                         var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false);
                         // 鏍规嵁宸ヤ綅鍙疯幏鍙� 鎵樼洏绾胯宸ヤ綅鍙风殑閰嶇疆淇℃伅
@@ -1967,7 +1984,8 @@
                             int insertCount = _db.Ado.ExecuteCommand(sqlStr);
                             if (insertCount > 0)
                             {
-                                string sqlStr2 = $"delete from WCSBoxInfo where  IsDelete=0 and PalletNo='{palletNo}'";
+                                // 缁勬墭鎴愬姛鍚庡皢淇℃伅瀛樺埌log琛�
+                                string sqlStr2 = $"delete from WCSBoxInfoLog where  IsDelete=0 and PalletNo='{palletNo}'";
                                 _db.Ado.ExecuteCommand(sqlStr2);
                             }
                             // 鍚慦MS鐢宠宸烽亾
@@ -2074,7 +2092,11 @@
             Log.Error(ex.Message);
         }
     }
-
+    /// <summary>
+    /// LED淇℃伅灞曠ず
+    /// </summary>
+    /// <param name="ip"></param>
+    /// <param name="text"></param>
     private static void LedDisplay(string ip,string text) 
     {
         try
@@ -2090,6 +2112,55 @@
         }
     }
 
+    /// <summary>
+    /// 鑷姩缁撴壒
+    /// </summary>
+    /// <param name="lotNo">鎵规鍙�</param>
+    /// <param name="plcConn">Plc杩炴帴</param>
+    /// <param name="status">鏄惁瑙g粦鍒嗛亾 0锛氳В缁�  1锛氱粦瀹�</param>
+    private static void AutoEndLot(string lotNo,PLCUtil plcConn,string status) 
+    {
+        try
+        {
+            if (string.IsNullOrWhiteSpace(lotNo))
+            {
+                Console.WriteLine("鎵规鍙蜂负nul");
+            }
+            var checkTaskList = _db.Queryable<WcsCheckTask>().Where(w => w.LotNo == lotNo && w.Status == "1").ToList();
+            if (checkTaskList.Count <= 0)
+            {
+                Console.WriteLine("鏈壘鍒板垎閬撶粦瀹氫俊鎭�");
+            }
+            foreach (var item in checkTaskList)
+            {
+                #region#缁橮LC鍐欏叆缁撴壒鎵规鍙�
+                var ret = plcConn.SetPlcDBValue(item.PosTypeLot, item.DbNumber, item.PosLot, "1");
+                if (ret.IsSucceed)
+                {
+                    //鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟
+                    item.OrderNo = "";
+                    item.TaskNo = "";
+                    item.LotNo = "";
+                    item.SkuNo = "";
+                    item.SkuName = "";
+                    item.BoxType = "";
+                    item.Qty = 0;
+                    item.PZNo = "";
+                    item.Status = status;      // 缁戝畾鍒嗛亾 0锛氳В缁�  1锛氱粦瀹� 
+
+                    //鏇存柊鍒嗘嫞浠诲姟
+                    _db.Updateable(item).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
+                }
+                #endregion
+            }
+        }
+        catch (Exception ex)
+        {
+            Log.Error(ex.Message);
+            throw;
+        }
+    }
+
     private static void Test(WcsDeviceDto modDevice)
     {
         //鍐欐娴嬭瘯璇籹tring

--
Gitblit v1.8.0