From 04611220d6ec06fb328c85210b5e3d3e305cfb3d Mon Sep 17 00:00:00 2001
From: liudl <673013083@qq.com>
Date: 星期一, 29 九月 2025 17:28:49 +0800
Subject: [PATCH] 结批功能修改

---
 Admin.NET/WCS.Application/PLC/PLCService.cs |  284 ++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 210 insertions(+), 74 deletions(-)

diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index eced7d0..2775a0f 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -29,6 +29,7 @@
     private static readonly ISqlSugarClient _db = SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId);
 
     private static int fendao = 1;
+    
 
     public static void OnChangeEvent(object sender, EventArgs e)
     {
@@ -218,11 +219,16 @@
 
                         //淇敼led灞忎俊鎭�
                         var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == taskInfo.EndStation && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business);
-                        ledText += $"浠诲姟绫诲瀷:{modTask.TaskType.GetDescription()}\n\n";
-                        ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n";
+                        //ledText += $"浠诲姟绫诲瀷:{modTask.TaskType.GetDescription()}\n\n";
+                        //ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n";
+                        //ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n";
+                        //ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n";
+                        //ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}";
+                        ledText += $"鍚嶇О:{modTask.SkuName}\n";
+                        ledText += $"鎵瑰彿:{modTask.LotNo}\n";
+                        ledText += $"鍏ュ簱鏁伴噺:{modTask.Qty}\n";
                         ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n";
-                        ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n";
-                        ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}";
+
                         LedDisplay(ledDevice.LedIP, ledText);
                     }
                 }
@@ -453,13 +459,18 @@
 
                                     // led鏄剧ず鍐呭
                                     var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modTask.StartLocate && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business);
-                                    ledText += $"鍏ュ簱瀹屾垚\n\n";
+                                    //ledText += $"鍏ュ簱瀹屾垚\n\n";
 
-                                    ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n";
+                                    //ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n";
+                                    //ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n";
+
+                                    //ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n";
+                                    //ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}";
+
+                                    ledText += $"鍚嶇О:{modTask.SkuName}\n";
+                                    ledText += $"鎵瑰彿:{modTask.LotNo}\n";
+                                    ledText += $"鍏ュ簱鏁伴噺:{modTask.Qty}\n";
                                     ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n";
-
-                                    ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n";
-                                    ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}";
 
                                     LedDisplay(ledDevice.LedIP, ledText);
                                     // 姝ゅ娣诲姞涓嶇┖璺戜笟鍔�
@@ -704,9 +715,9 @@
                         //listResult.Add(plcConn.SetPlcDBValue(modPosEndStorey.PosType, modDevice.DbNumber, modPosEndStorey.PlcPos, storey));
 
                         PlcTaskInfo taskInfo = new PlcTaskInfo();
-                        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));
+                        taskInfo = PLCCommon.GetEndPai(endLocat.Substring(1, 2), endLocat.Substring(2, 2),
+                                        endLocat.Substring(0, 2), endLocat.Substring(4, 2),
+                                        endLocat.Substring(6, 2));
 
                         // 缁橮LC鍐欏叆浠诲姟鏁版嵁
                         var listResult = new List<Result>();
@@ -727,7 +738,7 @@
                         if (listResult.All(s => s.IsSucceed))
                         {
                             // 鍚戣泛鏈哄啓鍏ユ帶鍒舵祦绋嬪瓧
-                            var res = modDevice.PLCUtil.SetPlcDBValue(modDevice.PosType, modDevice.WcsPos, "862");
+                            var res = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "862");//鍐欏叆寮�濮嬫斁璐т俊鍙�
                             var modcTaskMonitor = new WcsTaskMonitor()
                             {
                                 TaskNo = modTask.TaskNo,
@@ -924,6 +935,7 @@
     private static void ConveyorLine(WcsDeviceDto modDevice)
     {
         var plcConn = modDevice.PLCUtil;
+        
         // 鑾峰彇妤煎眰鏁癱eshi
         var louCeng = PLCCommon.GetRoadwayByStationNew(modDevice.StationNum);
         if (louCeng == "") 
@@ -1069,13 +1081,18 @@
                             // led鏄剧ず鍐呭
                             try
                             {
-                                ledText += $"浠诲姟绫诲瀷:{taskInfo.TaskType.GetDescription()}\n\n";
+                                //ledText += $"浠诲姟绫诲瀷:{taskInfo.TaskType.GetDescription()}\n\n";
 
-                                ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n";
+                                //ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n";
+                                //ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n";
+
+                                //ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n";
+                                //ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}";
+                                ledText += $"鍚嶇О:{taskInfo.SkuName}\n";
+                                ledText += $"鎵瑰彿:{taskInfo.LotNo}\n";
+                                ledText += $"鍏ュ簱鏁伴噺:{taskInfo.Qty}\n";
                                 ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n";
 
-                                ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n";
-                                ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}";
                                 LedDisplay(modDevice.LedIP, ledText);
                                 
                             }
@@ -1251,11 +1268,15 @@
                             HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
                             
                             var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business);
-                            ledText += $"浠诲姟绫诲瀷:{taskInfo.TaskType.GetDescription()}\n\n";
-                            ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n";
+                            //ledText += $"浠诲姟绫诲瀷:{taskInfo.TaskType.GetDescription()}\n\n";
+                            //ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n";
+                            //ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n";
+                            //ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n";
+                            //ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}";
+                            ledText += $"鍚嶇О:{taskInfo.SkuName}\n\n";
+                            ledText += $"鎵瑰彿:{taskInfo.LotNo}\n";
+                            ledText += $"鍏ュ簱鏁伴噺:{taskInfo.Qty}\n";
                             ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n";
-                            ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n";
-                            ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}";
                             LedDisplay(modDevice.LedIP, ledText);
                         }
                     }
@@ -1280,16 +1301,16 @@
                     var modPosPallet = modDevice.listStation.FirstOrDefault(m => m.Text == "鎵樼洏鐮�");
                     var (res, palletVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos);
                     // 鑾峰彇宸ヤ綅浠诲姟鍙蜂俊鎭�
-                    var modPosTaskNo = modDevice.listStation.FirstOrDefault(m => m.Text == "浠诲姟鍙�");
-                    var (taskRes, taskNoVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosTaskNo.PlcPos);
-                    if (!res.IsSucceed || !taskRes.IsSucceed)
-                    {
-                        break;
-                    }
+                    //var modPosTaskNo = modDevice.listStation.FirstOrDefault(m => m.Text == "浠诲姟鍙�");
+                    //var (taskRes, taskNoVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosTaskNo.PlcPos);
+                    //if (!res.IsSucceed || !taskRes.IsSucceed)
+                    //{
+                    //    break;
+                    //}
                     string pallet = palletVal.ToString();
-                    string taskNo = taskNoVal.ToString();
+                    //string taskNo = taskNoVal.ToString();
                     // 鑾峰彇浠诲姟淇℃伅
-                    var modTask = _db.Queryable<WcsTask>().First(s => s.IsDelete == false && s.PalletNo == pallet && s.Status == TaskStatusEnum.Doing && s.TaskType == TaskTypeEnum.In && s.TaskNo == taskNo);
+                    var modTask = _db.Queryable<WcsTask>().OrderByDescending(s=>s.CreateTime).First(s => s.IsDelete == false && s.PalletNo == pallet && s.Status == TaskStatusEnum.Doing && s.TaskType == TaskTypeEnum.In );//&& s.TaskNo == taskNo
                     if (modTask == null)
                     {
                         // 姝ゆ墭鐩樻病鏈夊搴旂殑杞Щ浠诲姟 led鏄剧ず
@@ -1458,14 +1479,19 @@
 
                         // led鏄剧ず鍐呭
                         // 鏍规嵁鐩爣宸ヤ綅鍙疯幏鍙栧搴旂殑LEDIP鍦板潃
-                        var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business && m.PlcId == modDevice.PlcId);
+                        //var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business && m.PlcId == modDevice.PlcId);
                         
-                        ledText += $"鍑哄簱瀹屾垚\n\n";
-                        ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n";
-                        ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n";
-                        ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n";
-                        ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}";
-                        LedDisplay(ledDevice.LedIP, ledText);
+                        //ledText += $"鍑哄簱瀹屾垚\n\n";
+                        ////ledText += $"浠诲姟鍙�:{taskInfo.TaskNo}\n";
+                        ////ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n";
+                        ////ledText += $"璧峰浣�:{taskInfo.StartRoadway + " " + taskInfo.StartLocate}\n";
+                        ////ledText += $"鐩爣浣�:{taskInfo.EndRoadway + " " + taskInfo.EndLocate}";
+                        //ledText += $"鍚嶇О:{taskInfo.SkuName}\n";
+                        //ledText += $"鎵瑰彿:{taskInfo.LotNo}\n";
+                        //ledText += $"鍑哄簱鏁伴噺:{taskInfo.Qty}\n";
+                        //ledText += $"鍒嗛厤鏁伴噺:{taskInfo.CompleteQty}\n";
+                        //ledText += $"鎵樼洏鍙�:{taskInfo.PalletNo}\n\n";
+                        //LedDisplay(ledDevice.LedIP, ledText);
                     }
                     // 鍙嶉WMS鍑哄簱瀹屾垚
                     //TaskReques taskReques = new TaskReques();
@@ -1545,11 +1571,17 @@
                         // led鏄剧ず鍐呭
                         var ledDevice = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business && m.PlcId == modDevice.PlcId);
                         
-                        ledText += $"鍑哄簱瀹屾垚\n\n";
-                        ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n";
+                        ledText += $"鍑哄簱瀹屾垚\n";
+                        //ledText += $"浠诲姟鍙�:{modTask.TaskNo}\n";
+                        //ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n";
+                        //ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n";
+                        //ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}";
+                        ledText += $"鍚嶇О:{modTask.SkuName}\n";
+                        ledText += $"鎵瑰彿:{modTask.LotNo}\n";
+                        ledText += $"鍑哄簱鏁伴噺:{modTask.Qty}\n";
+                        ledText += $"鍒嗛厤鏁伴噺:{modTask.CompleteQty}\n";
                         ledText += $"鎵樼洏鍙�:{modTask.PalletNo}\n\n";
-                        ledText += $"璧峰浣�:{modTask.StartRoadway + " " + modTask.StartLocate}\n";
-                        ledText += $"鐩爣浣�:{modTask.EndRoadway + " " + modTask.EndLocate}";
+
                         LedDisplay(ledDevice.LedIP, ledText);
                     }
                     #endregion
@@ -1965,7 +1997,7 @@
                                     if (orderModel != null)
                                     {
                                         // 鏍规嵁boxinfo琛ㄤ骇绾垮瓧娈佃嚜鍔ㄧ粦瀹氬垎閬�(1绾夸骇鍝佸彧鑳界粦瀹氬埌8閬�)
-                                        if (boxInfo.LineNo != "1")
+                                        if (boxInfo.LineNo != "涓�绾�")
                                         {// 缁戝畾鍒伴櫎8閬撳鍏朵粬閬�
 
                                             // 鑾峰彇鏈粦瀹氶亾
@@ -2010,9 +2042,10 @@
                                                             lineNoModel.LotNo = boxInfo.LotNo;
                                                             lineNoModel.SkuNo = boxInfo.SkuNo;
                                                             lineNoModel.SkuName = boxInfo.SkuName;
-                                                            lineNoModel.Qty = orderModel.Qty;
+                                                            lineNoModel.Qty = 0;
                                                             lineNoModel.Status = "1";//宸茬粦瀹�
                                                             lineNoModel.PZNo = skuInfo.PZNo;
+                                                            lineNoModel.FinishQty = 0;
 
                                                             // 缁橮LC鍐欏叆鍝佽
                                                             var ret = plcConn.SetPlcDBValue(lineNoModel.PosType, lineNoModel.DbNumber, lineNoModel.PlcPos, skuInfo.PZNo);
@@ -2102,9 +2135,10 @@
                                                         lineNo8Model.LotNo = boxInfo.LotNo;
                                                         lineNo8Model.SkuNo = boxInfo.SkuNo;
                                                         lineNo8Model.SkuName = boxInfo.SkuName;
-                                                        lineNo8Model.Qty = orderModel.Qty;
+                                                        lineNo8Model.Qty = 0;
                                                         lineNo8Model.Status = "1";//宸茬粦瀹�
                                                         lineNo8Model.PZNo = skuInfo.PZNo;
+                                                        lineNo8Model.FinishQty = 0;
 
                                                         // 缁橮LC鍐欏叆鍝佽
                                                         var ret = plcConn.SetPlcDBValue(lineNo8Model.PosType, lineNo8Model.DbNumber, lineNo8Model.PlcPos, skuInfo.PZNo);
@@ -2357,7 +2391,8 @@
                                 break;
                             }
                             // 鑾峰彇褰撳墠鍒嗛亾鎵樼洏鍙�
-                            var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false);
+                            string port = modDevice.StationNum.ToString();
+                            var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == port && m.Status == "1");
                             if (checkTaskMedel == null)
                             {
                                 Log.Error(string.Format("鏍规嵁鐮佸灈宸ヤ綅{0}锛岃幏鍙栧垎閬撳け璐�!", modDevice.StationNum));
@@ -2376,7 +2411,9 @@
                                 item.UpdateTime = DateTime.Now;
                                 item.OrderCode = checkTaskMedel.OrderNo;
                             }
-
+                            
+                            checkTaskMedel.Qty += boxInfo.First().QtyCount;//璁板綍褰撳墠鎵樼洏涓婄墿鏂欐暟閲�
+                            _db.Updateable(checkTaskMedel).ExecuteCommand();
                             var rowCount = _db.Updateable(boxInfo).ExecuteCommand();
                             Log.Information(string.Format("鎻掔爜鎴愬姛锛岀鐮佹槸锛�" + boxNo, modDevice.StationNum));
                             if (rowCount > 0)
@@ -2385,18 +2422,85 @@
                                 var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "1");
 
                                 //鏄惁缁撴壒绠� 
-                                if (boxInfo[0].EndLotFlag == "1" && retVal.IsSucceed)
-                                {
-                                    // 瑙﹀彂缁撴壒 鍒嗛亾鍙樹负缁撴壒涓�
-                                    AutoEndLot(boxInfo[0].LotNo, plcConn, "2");
-                                }
-
-                                //妫�鏌ュ凡鐮佸灈绠辨暟锛岀爜鍨涙暟閲忎笌瀹屽伐鏁伴噺鐩哥瓑鍚庤嚜鍔ㄧ粨鎵�
-                                //var finishiqty = _db.Queryable<WcsBoxInfoLog>().Count(m => m.SkuNo = )
-                                //if (true)
+                                //if (boxInfo[0].EndLotFlag == "1" && retVal.IsSucceed)
                                 //{
-
+                                //    // 瑙﹀彂缁撴壒 鍒嗛亾鍙樹负缁撴壒涓�
+                                //    AutoEndLot(boxInfo[0].LotNo, plcConn, "2");
                                 //}
+                                if (retVal.IsSucceed)
+                                {
+                                    //鍒よ鏄惁鎺ユ敹瀹屽伐鏁伴噺
+                                    var models = _db.Queryable<WcsCheckTask>().First(w => w.SkuNo == boxInfo.First().SkuNo && w.LotNo == boxInfo.First().LotNo);
+                                    if (models.FinishQty>0)
+                                    {
+                                        //妫�鏌ュ凡鐮佸灈绠辨暟(涓嶅惈闆剁)锛岀爜鍨涙暟閲忎笌瀹屽伐鏁伴噺鐩哥瓑鍚庤嚜鍔ㄧ粨鎵�:鍐欏叆PLC淇″彿鈥斺�旂粨鎵逛腑
+                                        int Fqty = (int)models.FinishQty;//瀹屽伐鏁伴噺
+                                        int Jpqty = 0;//宸茬爜鍨涙暟閲�
+
+                                        //鑾峰彇宸茬粍鐩樻暟閲�
+                                        var checkNum = _db.Queryable<WcsBoxInfoLog>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo && m.OrderCode == checkTaskMedel.OrderNo).ToList();//缁勭洏琛ㄧ鐮佷俊鎭�
+                                        if (checkNum.Count > 0)
+                                        {
+                                            if (!string.IsNullOrEmpty(checkNum.First().BoxNo2) || !string.IsNullOrEmpty(checkNum.First().BoxNo3))//鏈夋敮鐮�
+                                            {
+                                                foreach (var item in checkNum)
+                                                {
+                                                    Jpqty = (int)(Jpqty + item.Qty);
+                                                }
+                                            }
+                                            else//鏃犳敮鐮�
+                                            {
+                                                foreach (var item in checkNum)
+                                                {
+                                                    Jpqty = (int)(Jpqty + item.QtyCount);
+                                                }
+                                            }
+                                        }
+                                        //鑾峰彇宸叉彃鐮佹暟閲�
+                                        var checkNum2 = _db.Queryable<WcsBoxInfo>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo &&(m.PalletNo != null || m.PalletNo != "") && m.OrderCode == checkTaskMedel.OrderNo).ToList();//绠辩爜琛ㄥ凡鐮佸灈绠辩爜淇℃伅
+                                        if (checkNum2.Count > 0)
+                                        {
+                                            if (!string.IsNullOrEmpty(checkNum2.First().BoxNo2) || !string.IsNullOrEmpty(checkNum2.First().BoxNo3))//鏈夋敮鐮�
+                                            {
+                                                foreach (var item2 in checkNum2)
+                                                {
+                                                    Jpqty = (int)(Jpqty + item2.Qty);
+                                                }
+                                            }
+                                            else//鏃犳敮鐮�
+                                            {
+                                                foreach (var item2 in checkNum2)
+                                                {
+                                                    Jpqty = (int)(Jpqty + item2.QtyCount);
+                                                }
+                                            }
+                                        }
+                                        //鑾峰彇闆剁鏁伴噺
+                                        var checkNum3 = _db.Queryable<WcsBoxInfo>().Where(m => m.BitBoxMark == "1" && m.SkuNo == models.SkuNo && m.LotNo == models.LotNo).ToList();
+                                        if (checkNum3.Count > 0)
+                                        {
+                                            if (!string.IsNullOrEmpty(checkNum3.First().BoxNo2) || !string.IsNullOrEmpty(checkNum3.First().BoxNo3))//鏈夋敮鐮�
+                                            {
+                                                foreach (var item3 in checkNum3)
+                                                {
+                                                    Jpqty = (int)(Jpqty + item3.Qty);
+                                                }
+                                            }
+                                            else//鏃犳敮鐮�
+                                            {
+                                                foreach (var item3 in checkNum3)
+                                                {
+                                                    Jpqty = (int)(Jpqty + item3.QtyCount);
+                                                }
+                                            }
+                                        }
+                                        if (Jpqty == Fqty)
+                                        {
+                                            // 瑙﹀彂缁撴壒 鍒嗛亾鍙樹负缁撴壒涓�
+                                            AutoEndLot(boxInfo[0].LotNo, plcConn, "2");
+                                        }
+                                    }
+                                }
                             }
                             else
                             {
@@ -2417,6 +2521,7 @@
                     {
                         lock (OLock)
                         {
+                            Thread.Sleep(2000);
                             // 鏍规嵁宸ヤ綅鍙凤紝鑾峰彇鎵樼洏鍙�
                             var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false);
                             // 鏍规嵁宸ヤ綅鍙疯幏鍙� 鎵樼洏绾胯宸ヤ綅鍙风殑閰嶇疆淇℃伅
@@ -2515,6 +2620,10 @@
                             }
                             else
                             {
+                                if (string.IsNullOrEmpty(palletNo))
+                                {
+                                    break;
+                                }
                                 // 鏍规嵁鎵樼洏鍙凤紝灏嗙粍鎵樹俊鎭彃鍏oxinfolog琛� 骞跺垹闄oxinfo琛ㄦ暟鎹�
                                 var boxInfoList = _db.Queryable<WcsBoxInfo>().Where(w => w.IsDelete == false && w.PalletNo == palletNo).ToList();
                                 if (boxInfoList.Count <= 0)
@@ -2525,29 +2634,30 @@
                                     var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, "234");
                                     if (retVal.IsSucceed)
                                     {
+                                        //鏇存柊浠诲姟琛ㄦ暟閲忎俊鎭�
+                                        checkTaskMedel.Qty = 0;
+                                        _db.Updateable(checkTaskMedel).ExecuteCommand();
                                         // 鍐欏叆缁勬墭鍥炲娴佺▼瀛�
                                         retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50");
                                     }
                                     break;
                                 }
+                                #region
                                 //鍒ゆ柇鎵樼洏涓婄殑绠辩爜鏄惁宸茬粍鐩�
-                                foreach (var item in boxInfoList)
-                                {
-                                    var groupBoxno = _db.Queryable<WcsBoxInfoLog>().Where(w => w.BoxNo == item.BoxNo).ToList();
-                                    if (groupBoxno.Count>0)
-                                    {
-                                        Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0}锛岀鐮佷俊鎭笉瀛樺湪", modDevice.StationNum));
-                                        // 鍐欏叆浜や簰宸ヤ綅鐩爣鍦板潃
-                                        var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, "234");
-                                        if (retVal.IsSucceed)
-                                        {
-                                            // 鍐欏叆缁勬墭鍥炲娴佺▼瀛�
-                                            retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50");
-                                        }
-                                        break;
-                                    }
-                                }
-                                
+                                //var groupBoxno = _db.Queryable<WcsBoxInfoLog>().Where(w => w.BoxNo == item.BoxNo).ToList();
+                                //if (groupBoxno.Count>0)
+                                //{
+                                //    Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0}锛岀鐮佷俊鎭笉瀛樺湪", modDevice.StationNum));
+                                //    // 鍐欏叆浜や簰宸ヤ綅鐩爣鍦板潃
+                                //    var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, "234");
+                                //    if (retVal.IsSucceed)
+                                //    {
+                                //        // 鍐欏叆缁勬墭鍥炲娴佺▼瀛�
+                                //        retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50");
+                                //    }
+                                //    break;
+                                //}
+                                #endregion
                                 // 缁勬墭鎴愬姛鍚庡皢淇℃伅瀛樺埌log琛�
                                 string sqlStr = $"insert into WCSBoxInfoLog select * from WCSBoxInfo where IsDelete=0 and PalletNo='{palletNo}'";
                                 int insertCount = _db.Ado.ExecuteCommand(sqlStr);
@@ -2556,19 +2666,31 @@
                                     string sqlStr2 = $"delete from WCSBoxInfo where  IsDelete=0 and PalletNo='{palletNo}'";
                                     _db.Ado.ExecuteCommand(sqlStr2);
                                 }
-
                                 // 鍚慦MS鐢宠宸烽亾
                                 var http = new HttpService();
                                 string TaskNo = "", EndLocate = "";
-                                string strMsg = http.BindRequestRoadWay(checkTaskMedel.OrderNo, palletNo, checkTaskMedel.BoxCount.ToDecimal(), "0", checkTaskMedel.SkuNo, checkTaskMedel.LotNo, "", "", boxInfoList,
+                                string strMsg = http.BindRequestRoadWay(checkTaskMedel.OrderNo, palletNo, checkTaskMedel.Qty.ToDecimal(), "0", checkTaskMedel.SkuNo, checkTaskMedel.LotNo, "", "", boxInfoList,
                                     modDevice.StationNum, "1", "2", ref EndLocate, ref TaskNo);
                                 if (strMsg.Contains("-1"))
                                 {
                                     Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0};鍘熷洜{1}", modDevice.StationNum, strMsg));
+                                    // 鍐欏叆浜や簰宸ヤ綅鐩爣鍦板潃
+                                    var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, "234");
+                                    if (retVal.IsSucceed)
+                                    {
+                                        //鏇存柊浠诲姟琛ㄦ暟閲忎俊鎭�
+                                        checkTaskMedel.Qty = 0;
+                                        _db.Updateable(checkTaskMedel).ExecuteCommand();
+                                        // 鍐欏叆缁勬墭鍥炲娴佺▼瀛�
+                                        retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50");
+                                    }
                                     break;
                                 }
                                 else
                                 {
+                                    //缁勭洏鎴愬姛鍚庢竻绌哄垎鎷h〃褰撳墠鎵樼洏涓婄墿鏂欐暟閲�
+                                    checkTaskMedel.Qty = 0;
+                                    _db.Updateable(checkTaskMedel).ExecuteCommand();
                                     //鍒ゆ柇鏄惁缁撴壒涓�
                                     var (res, jiepi) = plcConn.GetPlcDBValue(checkTaskMedel.PosType, modDevice.DbNumber, checkTaskMedel.PosLot);
                                     if (jiepi == 2)//缁撴壒涓�
@@ -2577,6 +2699,17 @@
                                         var ret1 = plcConn.SetPlcDBValue(checkTaskMedel.PosTypeLot, modDevice.DbNumber, checkTaskMedel.PlcPos, "0");
                                         if (ret1.IsSucceed)
                                         {
+                                            //鏇存柊鍏ュ簱璁㈠崟
+                                            var orderTask = _db.Queryable<WcsOderTask>().Where(w => w.SkuNo == checkTaskMedel.SkuNo && w.LotNo == checkTaskMedel.LotNo && w.IsDelete == false).ToList();
+                                            if (orderTask.Count >0)
+                                            {
+                                                foreach (var item in orderTask)
+                                                {
+                                                    item.Status = TaskStatusEnum.Complete;
+                                                    _db.Updateable(item).ExecuteCommand();
+                                                }
+                                            }
+
                                             //鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟    liudl 鏈�鍚庝竴鎵樼洏鐢宠瀹屽叆搴撴墠鍙竻绌�
                                             checkTaskMedel.OrderNo = "";
                                             checkTaskMedel.TaskNo = "";
@@ -2587,9 +2720,12 @@
                                             checkTaskMedel.Qty = 0;
                                             checkTaskMedel.PZNo = "";
                                             checkTaskMedel.Status = "0";      // 缁戝畾鍒嗛亾 0锛氳В缁�  1锛氱粦瀹� 
+                                            checkTaskMedel.FinishQty = 0;
 
                                             //鏇存柊鍒嗘嫞浠诲姟
                                             _db.Updateable(checkTaskMedel).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
+
+                                            
                                         }
                                     }
                                     // 鑾峰彇鍏ュ簱浠诲姟淇℃伅

--
Gitblit v1.8.0