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