From de7dbe7cf85aa01abb64040aae1c04dfba74c135 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周二, 01 4月 2025 10:48:50 +0800
Subject: [PATCH] 优化 和plc交互问题

---
 CC/iWareCC_ASRS/ThreadService/02_BZ39工位(补板后工位)/Outbound/3、DataProcess_RobotBuffer_FinishTaskForOutbound.cs |  196 +++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 173 insertions(+), 23 deletions(-)

diff --git "a/CC/iWareCC_ASRS/ThreadService/02_BZ39\345\267\245\344\275\215\357\274\210\350\241\245\346\235\277\345\220\216\345\267\245\344\275\215\357\274\211/Outbound/3\343\200\201DataProcess_RobotBuffer_FinishTaskForOutbound.cs" "b/CC/iWareCC_ASRS/ThreadService/02_BZ39\345\267\245\344\275\215\357\274\210\350\241\245\346\235\277\345\220\216\345\267\245\344\275\215\357\274\211/Outbound/3\343\200\201DataProcess_RobotBuffer_FinishTaskForOutbound.cs"
index 457148f..d5b63ec 100644
--- "a/CC/iWareCC_ASRS/ThreadService/02_BZ39\345\267\245\344\275\215\357\274\210\350\241\245\346\235\277\345\220\216\345\267\245\344\275\215\357\274\211/Outbound/3\343\200\201DataProcess_RobotBuffer_FinishTaskForOutbound.cs"
+++ "b/CC/iWareCC_ASRS/ThreadService/02_BZ39\345\267\245\344\275\215\357\274\210\350\241\245\346\235\277\345\220\216\345\267\245\344\275\215\357\274\211/Outbound/3\343\200\201DataProcess_RobotBuffer_FinishTaskForOutbound.cs"
@@ -1,4 +1,5 @@
 锘縰sing Admin.NET.Application;
+using iWareCC.StationService;
 using iWareCommon.Common.Globle;
 using iWareCommon.Utils;
 using iWareModel;
@@ -7,6 +8,7 @@
 using System;
 using System.Linq;
 using System.Threading;
+using System.Threading.Tasks;
 
 namespace iWareCC.ThreadService
 {
@@ -21,54 +23,144 @@
             LogType logType = LogType.DataProcess_RobotBuffer_FinishTaskForOutbound;
             while (true)
             {
-                Thread.Sleep(2000);//浼戠湢2绉掞紝灏嗕紤鐪犲啓鍒板墠闈紝鏄负浜嗕笅闈㈢殑continue鏂规硶鎵ц鍚庝笉鏄剧ず閿欒淇℃伅鐨勬彁绀猴紒锛侊紒銆怑ditBy shaocx,2022-05-24銆�
+                Thread.Sleep(500);//浼戠湢2绉掞紝灏嗕紤鐪犲啓鍒板墠闈紝鏄负浜嗕笅闈㈢殑continue鏂规硶鎵ц鍚庝笉鏄剧ず閿欒淇℃伅鐨勬彁绀猴紒锛侊紒銆怑ditBy shaocx,2022-05-24銆�
                 SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound = string.Empty;
                 try
-                {
-                    if (SystemValue.isAllowRuning_DataProcess_RobotBuffer_FinishTaskForOutbound && SystemValue.isStartedModel)
+                {//SystemValue.isAllowRuning_DataProcess_RobotBuffer_FinishTaskForOutbound &&
+                    if (SystemValue.isStartedModel)
                     {
                         var rgvLocation = StationLocationEnum.BZ39.ToString();
+                        if (FormCC.stationView == null)
+                        {
+                            SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound = $"{rgvLocation.ToString()}-鑾峰彇PLC瀵硅薄涓簄ull";
+                            continue;
+                        }
                         var obj = FormCC.stationView.R_StationForReadCommList.Where(x => x.StationCode == rgvLocation.ToString()).FirstOrDefault();
                         if (obj.R_OutboundFinish)
                         {
-                            var result = obj.R_OutboundNumber;
-                            if (string.IsNullOrEmpty(result))
+                            //var result = obj.R_OutboundNumber;
+                            //if (string.IsNullOrEmpty(result))
+                            //{
+                            //    SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound = $"{rgvLocation.ToString()}- 鍑哄簱搴撲綅鍙锋槸绌虹殑,姝ゆ寰幆缁撴潫";
+                            //    continue;
+                            //}
+
+                            var result2 = obj.R_Outbound_TaskID;
+                            if (result2 == 0)
                             {
-                                SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound = $"{rgvLocation.ToString()}- 鍑哄簱搴撲綅鍙锋槸绌虹殑,姝ゆ寰幆缁撴潫";
+                                SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound = $"{rgvLocation.ToString()}- 鍑哄簱浠诲姟鍙锋槸绌虹殑,姝ゆ寰幆缁撴潫";
                                 continue;
                             }
 
 
+
                             using (WmsDBModel wmsDB = new WmsDBModel())
                             {
-                                var task = wmsDB.wms_rbline_task.Where(x => x.PlaceCode == obj.R_OutboundNumber
-                                && x.RbTaskType == (int)RbTaskTypeEnum.鍑哄簱浠诲姟
-                                && x.TaskStatus == (int)TaskStatusEnum.宸蹭笅鍙�).FirstOrDefault();
+                                var task = wmsDB.wms_rbline_task.Where(x =>
+                                 x.TaskNo == obj.R_Outbound_TaskID.ToString()
+                                //澧炲姞杩欎袱涓檺鍒舵潯浠� 銆怑ditby shaocx,2025-03-27銆�
+                                && x.TaskStatus == (int)TaskStatusEnum.宸蹭笅鍙�
+                                && (x.IsFlagFinish == false)
+                                && (x.RbTaskType == (int)RbTaskTypeEnum.榻愬寘鍑哄簱浠诲姟 || x.RbTaskType == (int)RbTaskTypeEnum.寮哄埗鍑哄簱浠诲姟)
+                                ).OrderByDescending(x => x.Id).FirstOrDefault();
                                 if (task == null)
                                 {
                                     SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound = $"{rgvLocation.ToString()},鏍规嵁 R_OutboundNumber:{obj.R_OutboundNumber}娌℃湁鎵惧埌宸蹭笅鍙戠殑浠诲姟 ";
                                     continue;
                                 }
-
-                                var upiCode = task.UPI;
-                                var upiObj = wmsDB.mes_batchOrderUPI_new.Where(x => x.UPI == upiCode).FirstOrDefault();
-                                if (upiObj == null)
+                                else
                                 {
-                                    SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound = $"{rgvLocation.ToString()},鏍规嵁UPI:{upiCode}娌℃湁鎵惧埌瀵硅薄 ";
+                                    if (task.TaskStatus == (int)TaskStatusEnum.宸插畬鎴�)
+                                    {
+                                        using (StationServiceClient client = new StationServiceClient())
+                                        {
+                                            var res = await client.OutboundFinishConfirmAsync((int)EDevice.Station, true, rgvLocation, false);
+                                        }
+                                        continue;
+                                    }
+
+                                }
+
+                                var isSuccess = await HandlerData(wmsDB, task, rgvLocation, logType, false);
+                                if (isSuccess == false)
+                                {
                                     continue;
                                 }
-                                //搴撳瓨鍑忓皯
-                                wms_stock_quan qun = wmsDB.wms_stock_quan.Where(x => x.PlaceCode == task.PlaceCode).FirstOrDefault();
-                                wmsDB.wms_stock_quan.Remove(qun);
 
-                                task.TaskStatus = (int)TaskStatusEnum.宸插畬鎴�;
-                                task.TaskStatusName = TaskStatusEnum.宸插畬鎴�.ToString();
-                                task.FinishedTime = DateTime.Now;
+                                //var upiCode = task.Upi;
+                                //var upiObj = wmsDB.mes_batchOrderUPI_new.Where(x => x.UPI == upiCode).FirstOrDefault();
+                                //if (upiObj == null)
+                                //{
+                                //    SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound = $"{rgvLocation.ToString()},鏍规嵁UPI:{upiCode}娌℃湁鎵惧埌瀵硅薄 ";
+                                //    continue;
+                                //}
+                                ////鏇存柊鏉夸欢鐨勭姸鎬佸拰鍖哄煙
+                                //if (task.RbTaskType == (int)RbTaskTypeEnum.榻愬寘鍑哄簱浠诲姟)
+                                //{
+                                //    upiObj.UpiStatus = (int)UpiStatusEnum.宸查綈鍖�;
+                                //    upiObj.AreaCode = (int)AreaCodeEnum.鐮佸灈鍖哄煙;
+                                //}
+                                //else if (task.RbTaskType == (int)RbTaskTypeEnum.寮哄埗鍑哄簱浠诲姟)
+                                //{
+                                //    upiObj.UpiStatus = (int)UpiStatusEnum.宸蹭笅绾�;
+                                //    upiObj.AreaCode = (int)AreaCodeEnum.涓嬬嚎鍖哄煙;
+                                //}
 
-                                var place = StationHandler.GetPlaceByPlaceCode(task.PlaceCode, wmsDB);
-                                place.PlaceStatus = (int)PlaceStatusEnum.姝e父;
+                                ////搴撳瓨鍑忓皯
+                                //wms_stock_quan qun = wmsDB.wms_stock_quan.Where(x => x.PlaceCode == task.PlaceCode).FirstOrDefault();
+                                //wmsDB.wms_stock_quan.Remove(qun);
 
-                                wmsDB.SaveChanges();
+                                //task.TaskStatus = (int)TaskStatusEnum.宸插畬鎴�;
+                                //task.FinishedTime = DateTime.Now;
+
+                                //var place = StationHandler.GetPlaceByPlaceCode(task.PlaceCode, wmsDB);
+                                //place.PlaceStatus = (int)PlaceStatusEnum.姝e父;
+
+                                ////缁橮LC鎺ㄩ�佷换鍔″畬鎴愮‘璁や俊鍙�
+                                //using (StationServiceClient client = new StationServiceClient())
+                                //{
+                                //    var res = await client.OutboundFinishConfirmAsync((int)EDevice.Station, true, rgvLocation, true);
+                                //    if (!res.result)
+                                //    {
+                                //        SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound = $"{rgvLocation.ToString()}-涓嬪彂鍑哄簱浠诲姟 澶辫触,OutboundFinishConfirmAsync 杩斿洖:{res.resMsg}";
+                                //        continue;
+                                //    }
+                                //    else
+                                //    {
+                                //        Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-涓嬪彂鍑哄簱浠诲姟 鎴愬姛,OutboundFinishConfirmAsync锛屽弬鏁�: 绔欑偣{rgvLocation}");
+                                //    }
+                                //}
+
+                                //WmsRecordUpiProcessHandler.SaveWmsRecordUpiProcess(wmsDB, upiObj, task.PlaceCode, $"鍑虹紦瀛樺簱锛歿task.PlaceCode}," + task.TaskMsg);
+
+                                //wmsDB.SaveChanges();
+                            }
+                        }
+                        else
+                        {
+                            using (StationServiceClient client = new StationServiceClient())
+                            {
+                                var res = await client.OutboundFinishConfirmAsync((int)EDevice.Station, false, rgvLocation, false);
+                            }
+
+                            using (WmsDBModel wmsDB = new WmsDBModel())
+                            {
+                                var task = wmsDB.wms_rbline_task.Where(x =>
+                                 x.IsFlagFinish == true
+                               && (x.RbTaskType == (int)RbTaskTypeEnum.榻愬寘鍑哄簱浠诲姟 || x.RbTaskType == (int)RbTaskTypeEnum.寮哄埗鍑哄簱浠诲姟)
+                                && x.TaskStatus == (int)TaskStatusEnum.宸蹭笅鍙�
+                                ).OrderByDescending(x => x.Id).FirstOrDefault();
+                                if (task == null)
+                                {
+                                    SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound = $"{rgvLocation.ToString()},娌℃湁鎵惧埌宸蹭笅鍙�,骞朵笖鏍囪寮哄埗瀹屾垚鐨勪换鍔� ";
+                                    continue;
+                                }
+
+                                var isSuccess = await HandlerData(wmsDB, task, rgvLocation, logType, true);
+                                if (isSuccess == false)
+                                {
+                                    continue;
+                                }
                             }
                         }
                     }
@@ -81,5 +173,63 @@
             }
         }
 
+
+        public static async Task<bool> HandlerData(WmsDBModel wmsDB, wms_rbline_task task, string rgvLocation, iWareCommon.Utils.LogType logType, bool isFlagFinish)
+        {
+            var upiCode = task.Upi;
+            var upiObj = wmsDB.mes_batchOrderUPI_new.Where(x => x.UPI == upiCode).FirstOrDefault();
+            if (upiObj == null)
+            {
+                SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound = $"{rgvLocation.ToString()},鏍规嵁UPI:{upiCode}娌℃湁鎵惧埌瀵硅薄 ";
+                return false;
+            }
+            //鏇存柊鏉夸欢鐨勭姸鎬佸拰鍖哄煙
+            if (task.RbTaskType == (int)RbTaskTypeEnum.榻愬寘鍑哄簱浠诲姟)
+            {
+                upiObj.UpiStatus = (int)UpiStatusEnum.宸查綈鍖�;
+                upiObj.AreaCode = (int)AreaCodeEnum.鐮佸灈鍖哄煙;
+            }
+            else if (task.RbTaskType == (int)RbTaskTypeEnum.寮哄埗鍑哄簱浠诲姟)
+            {
+                upiObj.UpiStatus = (int)UpiStatusEnum.宸蹭笅绾�;
+                upiObj.AreaCode = (int)AreaCodeEnum.涓嬬嚎鍖哄煙;
+            }
+
+            //搴撳瓨鍑忓皯
+            wms_stock_quan qun = wmsDB.wms_stock_quan.Where(x => x.PlaceCode == task.PlaceCode).FirstOrDefault();
+            wmsDB.wms_stock_quan.Remove(qun);
+
+            task.TaskStatus = (int)TaskStatusEnum.宸插畬鎴�;
+            task.FinishedTime = DateTime.Now;
+
+            var place = StationHandler.GetPlaceByPlaceCode(task.PlaceCode, wmsDB);
+            place.PlaceStatus = (int)PlaceStatusEnum.姝e父;
+
+            if (isFlagFinish == false)
+            {
+                //缁橮LC鎺ㄩ�佷换鍔″畬鎴愮‘璁や俊鍙�
+                using (StationServiceClient client = new StationServiceClient())
+                {
+                    var res = await client.OutboundFinishConfirmAsync((int)EDevice.Station, true, rgvLocation, true);
+                    if (!res.result)
+                    {
+                        SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound = $"{rgvLocation.ToString()}-涓嬪彂鍑哄簱浠诲姟 澶辫触,OutboundFinishConfirmAsync 杩斿洖:{res.resMsg}";
+                        return false;
+                    }
+                    else
+                    {
+                        Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-涓嬪彂鍑哄簱浠诲姟 鎴愬姛,OutboundFinishConfirmAsync锛屽弬鏁�: 绔欑偣{rgvLocation}");
+                    }
+                }
+            }
+
+            var flag = isFlagFinish ? "浜哄伐寮哄埗瀹屾垚" : "锛堣嚜鍔ㄥ畬鎴愶級";
+            WmsRecordUpiProcessHandler.SaveWmsRecordUpiProcess(wmsDB, upiObj, task.PlaceCode, $"鍑虹紦瀛樺簱锛歿task.PlaceCode}(" + flag + ")," + task.TaskMsg);
+
+            wmsDB.SaveChanges();
+
+            return true;
+        }
+
     }
 }

--
Gitblit v1.9.3