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工位(补板后工位)/Inbound/3、DataProcess_RobotBuffer_FinishTask.cs |  240 +++++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 180 insertions(+), 60 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/Inbound/3\343\200\201DataProcess_RobotBuffer_FinishTask.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/Inbound/3\343\200\201DataProcess_RobotBuffer_FinishTask.cs"
index de3358c..333df92 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/Inbound/3\343\200\201DataProcess_RobotBuffer_FinishTask.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/Inbound/3\343\200\201DataProcess_RobotBuffer_FinishTask.cs"
@@ -1,5 +1,6 @@
 锘縰sing Admin.NET.Application;
 using iWareCC.Common.Helper;
+using iWareCC.SrmService;
 using iWareCC.StationService;
 using iWareCommon.Common.Globle;
 using iWareCommon.Utils;
@@ -9,6 +10,7 @@
 using iWareSql.WmsDBModel;
 using System;
 using System.Collections.Generic;
+using System.Data.Entity.Core.Metadata.Edm;
 using System.Linq;
 using System.ServiceModel.Configuration;
 using System.Text;
@@ -16,6 +18,7 @@
 using System.Threading.Tasks;
 using WZ.Useful.Commons;
 using XiGang.Core.Model;
+using LogType = iWareCommon.Utils.LogType;
 
 namespace iWareCC.ThreadService
 {
@@ -34,20 +37,17 @@
                 SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask = string.Empty;
                 try
                 {
-                    if ( SystemValue.isStartedModel)//SystemValue.isAllowRuning_DataProcess_RobotBuffer_FinishTask &&
+                    if (SystemValue.isStartedModel)//SystemValue.isAllowRuning_DataProcess_RobotBuffer_FinishTask &&
                     {
                         var rgvLocation = StationLocationEnum.BZ39.ToString();
+                        if (FormCC.stationView == null)
+                        {
+                            SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask = $"{rgvLocation.ToString()}-鑾峰彇PLC瀵硅薄涓簄ull";
+                            continue;
+                        }
                         var obj = FormCC.stationView.R_StationForReadCommList.Where(x => x.StationCode == rgvLocation.ToString()).FirstOrDefault();
                         if (obj.R_InboundFinish)
-                        //if (true)//妯℃嫙
                         {
-                            //var result = obj.R_InboundNumber;
-                            //if (string.IsNullOrEmpty(result))
-                            //{
-                            //    SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask = $"{rgvLocation.ToString()}- 鍏ュ簱搴撲綅鍙锋槸绌虹殑,姝ゆ寰幆缁撴潫";
-                            //    continue;
-                            //}
-                            //obj.R_Inbound_TaskID = 17797;//妯℃嫙
                             var result2 = obj.R_Inbound_TaskID;
                             if (result2 == 0)
                             {
@@ -55,88 +55,91 @@
                                 continue;
                             }
 
-
-                            var qitaoReault = false;
                             using (WmsDBModel wmsDB = new WmsDBModel())
                             {
                                 var task = wmsDB.wms_rbline_task.Where(x =>
                                  x.TaskNo == obj.R_Inbound_TaskID.ToString()
                                 && x.RbTaskType == (int)RbTaskTypeEnum.鍏ュ簱浠诲姟
-                                ).OrderByDescending(x=>x.Id).FirstOrDefault();
+                                ).OrderByDescending(x => x.Id).FirstOrDefault();
                                 if (task == null)
                                 {
                                     SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask = $"{rgvLocation.ToString()},鏍规嵁 R_InboundNumber:{obj.R_InboundNumber}娌℃湁鎵惧埌宸蹭笅鍙戠殑浠诲姟 ";
                                     continue;
                                 }
-                                else 
+                                else
                                 {
                                     if (task.TaskStatus == (int)TaskStatusEnum.宸插畬鎴�)
                                     {
                                         using (StationServiceClient client = new StationServiceClient())
                                         {
                                             var res = await client.InboundFinishConfirmAsync((int)EDevice.Station, true, rgvLocation);
-                             
+
                                         }
                                         continue;
                                     }
                                 }
 
-                                var upiCode = task.UPI;
-                                var upiObj = wmsDB.mes_batchOrderUPI_new.Where(x => x.UPI == upiCode).FirstOrDefault();
-                                if (upiObj == null)
+                                var isSuccess = await HandlerData(wmsDB, task, rgvLocation, logType, false);
+                                if (isSuccess == false)
                                 {
-                                    SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask = $"{rgvLocation.ToString()},鏍规嵁UPI:{upiCode}娌℃湁鎵惧埌瀵硅薄 ";
                                     continue;
                                 }
-                                //澧炲姞搴撳瓨
-                                wms_stock_quan qun = new wms_stock_quan()
-                                {
-                                    Id = Yitter.IdGenerator.YitIdHelper.NextId(),
-                                    Upi = upiCode,
-                                    PlanNo = task.PlanNo,
-                                    DetailName = upiObj.DetailName,
-                                    OrderId = task.OrderId,
-                                    CreateTime = DateTime.Now,
-                                    CreateUserName = "CC",
-                                    InTime = DateTime.Now,
-                                    OperReason = "鍏ュ簱",
-                                    PackageCode = task.PackageCode,
-                                    Length = task.Length,
-                                    Width = task.Width,
-                                    Thk = task.Thk,
-                                    PlaceCode = task.PlaceCode,
-                                    StockStatus = (int)StockStatusEnum.鍦ㄥ簱,
-                                    StockStatusName = StockStatusEnum.鍦ㄥ簱.ToString(),
 
-                                };
-                                wmsDB.wms_stock_quan.Add(qun);
+                                //var upiCode = task.Upi;
+                                //var upiObj = wmsDB.mes_batchOrderUPI_new.Where(x => x.UPI == upiCode).FirstOrDefault();
+                                //if (upiObj == null)
+                                //{
+                                //    SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask = $"{rgvLocation.ToString()},鏍规嵁UPI:{upiCode}娌℃湁鎵惧埌瀵硅薄 ";
+                                //    continue;
+                                //}
+                                ////澧炲姞搴撳瓨
+                                //wms_stock_quan qun = new wms_stock_quan()
+                                //{
+                                //    Id = Yitter.IdGenerator.YitIdHelper.NextId(),
+                                //    Upi = upiCode,
+                                //    PlanNo = task.PlanNo,
+                                //    DetailName = upiObj.DetailName,
+                                //    OrderId = task.OrderId,
+                                //    CreateTime = DateTime.Now,
+                                //    CreateUserName = SysGloble.WCSSystem,
+                                //    InTime = DateTime.Now,
+                                //    OperReason = "鍏ュ簱",
+                                //    PackageCode = task.PackageCode,
+                                //    Length = task.Length,
+                                //    Width = task.Width,
+                                //    Thk = task.Thk,
+                                //    PlaceCode = task.PlaceCode,
+                                //    StockStatus = (int)StockStatusEnum.鍦ㄥ簱,
+                                //    StockStatusName = StockStatusEnum.鍦ㄥ簱.ToString(),
 
-                                task.TaskStatus = (int)TaskStatusEnum.宸插畬鎴�;
-                                task.TaskStatusName = TaskStatusEnum.宸插畬鎴�.ToString();
-                                task.FinishedTime = DateTime.Now;
+                                //};
+                                //wmsDB.wms_stock_quan.Add(qun);
+
+                                //task.TaskStatus = (int)TaskStatusEnum.宸插畬鎴�;
+                                //task.FinishedTime = DateTime.Now;
 
 
-                                var place = StationHandler.GetPlaceByPlaceCode(task.PlaceCode, wmsDB);
-                                place.PlaceStatus = (int)PlaceStatusEnum.姝e父;
+                                //var place = StationHandler.GetPlaceByPlaceCode(task.PlaceCode, wmsDB);
+                                //place.PlaceStatus = (int)PlaceStatusEnum.姝e父;
 
-                                //缁橮LC鎺ㄩ�佷换鍔″畬鎴愮‘璁や俊鍙�
-                                using (StationServiceClient client = new StationServiceClient())
-                                {
-                                    var res = await client.InboundFinishConfirmAsync((int)EDevice.Station, true, rgvLocation);
-                                    if (!res.result)
-                                    {
-                                        SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask = $"{rgvLocation.ToString()}-涓嬪彂鍏ュ簱浠诲姟 澶辫触,InboundFinishConfirmAsync 杩斿洖:{res.resMsg}";
-                                        continue;
-                                    }
-                                    else
-                                    {
-                                        Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-涓嬪彂鍏ュ簱浠诲姟 鎴愬姛,InboundFinishConfirmAsync锛屽弬鏁�: 绔欑偣{rgvLocation}");
-                                    }
-                                }
+                                ////缁橮LC鎺ㄩ�佷换鍔″畬鎴愮‘璁や俊鍙�
+                                //using (StationServiceClient client = new StationServiceClient())
+                                //{
+                                //    var res = await client.InboundFinishConfirmAsync((int)EDevice.Station, true, rgvLocation);
+                                //    if (!res.result)
+                                //    {
+                                //        SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask = $"{rgvLocation.ToString()}-涓嬪彂鍏ュ簱浠诲姟 澶辫触,InboundFinishConfirmAsync 杩斿洖:{res.resMsg}";
+                                //        continue;
+                                //    }
+                                //    else
+                                //    {
+                                //        Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-涓嬪彂鍏ュ簱浠诲姟 鎴愬姛,InboundFinishConfirmAsync锛屽弬鏁�: 绔欑偣{rgvLocation}");
+                                //    }
+                                //}
 
-                                WmsRecordUpiProcessHandler.SaveWmsRecordUpiProcess(wmsDB, upiObj, task.PlaceCode, "缂撳瓨鍏ュ簱瀹屾垚:"+ task.PlaceCode);
+                                //WmsRecordUpiProcessHandler.SaveWmsRecordUpiProcess(wmsDB, upiObj, task.PlaceCode, "缂撳瓨鍏ュ簱瀹屾垚:" + task.PlaceCode);
 
-                                wmsDB.SaveChanges();
+                                //wmsDB.SaveChanges();
                             }
                         }
                         else
@@ -150,6 +153,26 @@
 
                             }
 
+                            using (WmsDBModel wmsDB = new WmsDBModel())
+                            {
+                                var task = wmsDB.wms_rbline_task.Where(x =>
+                                 x.IsFlagFinish == true
+                                && x.RbTaskType == (int)RbTaskTypeEnum.鍏ュ簱浠诲姟
+                                && x.TaskStatus == (int)TaskStatusEnum.宸蹭笅鍙�
+                                ).OrderByDescending(x => x.Id).FirstOrDefault();
+                                if (task == null)
+                                {
+                                    SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask = $"{rgvLocation.ToString()},娌℃湁鎵惧埌宸蹭笅鍙�,骞朵笖鏍囪寮哄埗瀹屾垚鐨勪换鍔� ";
+                                    continue;
+                                }
+
+                                var isSuccess = await HandlerData(wmsDB, task, rgvLocation, logType, true);
+                                if (isSuccess == false)
+                                {
+                                    continue;
+                                }
+                            }
+
                         }
                     }
                 }
@@ -161,5 +184,102 @@
             }
         }
 
+
+        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_FinishTask = $"{rgvLocation.ToString()},鏍规嵁UPI:{upiCode}娌℃湁鎵惧埌瀵硅薄 ";
+                return false;
+            }
+            //澧炲姞搴撳瓨
+            wms_stock_quan qun = new wms_stock_quan()
+            {
+                Id = Yitter.IdGenerator.YitIdHelper.NextId(),
+                Shelf = upiObj.Shelf,
+                Upi = upiCode,
+                PlanNo = task.PlanNo,
+                DetailName = upiObj.DetailName,
+                OrderId = task.OrderId,
+                CreateTime = DateTime.Now,
+                CreateUserName = SysGloble.WCSSystem,
+                InTime = DateTime.Now,
+                OperReason = "鍏ュ簱",
+                PackageCode = task.PackageCode,
+                Length = task.Length,
+                Width = task.Width,
+                Thk = task.Thk,
+                PlaceCode = task.PlaceCode,
+                StockStatus = (int)StockStatusEnum.鍦ㄥ簱,
+                StockStatusName = StockStatusEnum.鍦ㄥ簱.ToString(),
+
+            };
+            wmsDB.wms_stock_quan.Add(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.InboundFinishConfirmAsync((int)EDevice.Station, true, rgvLocation);
+            //        if (!res.result)
+            //        {
+            //            SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask = $"{rgvLocation.ToString()}-涓嬪彂鍏ュ簱浠诲姟 澶辫触,InboundFinishConfirmAsync 杩斿洖:{res.resMsg}";
+            //            return false;
+            //        }
+            //        else
+            //        {
+            //            Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-涓嬪彂鍏ュ簱浠诲姟 鎴愬姛,InboundFinishConfirmAsync锛屽弬鏁�: 绔欑偣{rgvLocation}");
+            //        }
+            //    }
+            //}
+
+            var flag = isFlagFinish ? "浜哄伐寮哄埗瀹屾垚" : "锛堣嚜鍔ㄥ畬鎴愶級";
+            WmsRecordUpiProcessHandler.SaveWmsRecordUpiProcess(wmsDB, upiObj, task.PlaceCode, "缂撳瓨鍏ュ簱瀹屾垚(" + flag + "):" + task.PlaceCode);
+
+            int changeNum = wmsDB.SaveChanges();
+            if (changeNum > 0)
+            {
+                //蹇呴』瑕佺粰PLC涓嬪彂鎴愬姛,瑙e喅鍙兘浼氱粰PLC閲嶅涓嬪彂浠诲姟鐨勬儏鍐�
+                var isRight = true;
+
+                if (isFlagFinish == false)
+                {
+                    while (isRight)
+                    {
+                        var obj = FormCC.stationView.R_StationForReadCommList.Where(x => x.StationCode == rgvLocation.ToString()).FirstOrDefault();
+                        isRight = obj.R_InboundFinish;
+                        //缁橮LC鎺ㄩ�佷换鍔″畬鎴愮‘璁や俊鍙�
+                        using (StationServiceClient client = new StationServiceClient())
+                        {
+                            var res = await client.InboundFinishConfirmAsync((int)EDevice.Station, true, rgvLocation);
+                            if (!res.result)
+                            {
+                                SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask = $"{rgvLocation.ToString()}-涓嬪彂鍏ュ簱浠诲姟 澶辫触,InboundFinishConfirmAsync 杩斿洖:{res.resMsg}";
+                                Log4NetHelper.WriteErrorLog(logType, $"{rgvLocation.ToString()}-瀹屾垚鍏ュ簱浠诲姟鍐欏叆銆恡rue銆� 澶辫触,InboundFinishConfirmAsync锛岃繑鍥�:{res.resMsg}锛屽弬鏁�:TaskNo:{task.TaskNo}, PlaceCode锛歿task.PlaceCode},鏉$爜:{task.Upi}");
+                            }
+                            else
+                            {
+                                Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-瀹屾垚鍏ュ簱浠诲姟鍐欏叆銆恡rue銆� 鎴愬姛,InboundFinishConfirmAsync锛屽弬鏁�:TaskNo:{task.TaskNo}, PlaceCode锛歿task.PlaceCode},鏉$爜:{task.Upi}");
+                                //isRight = false;
+                            }
+                        }
+                        Thread.Sleep(1000);
+                    }
+                }
+            }
+
+            return true;
+        }
+
     }
 }

--
Gitblit v1.9.3