using iWareCC.Common.Helper; using iWareCommon.Common.Globle; using iWareCommon.Utils; using iWareModel; using iWareModel.EnumType.XiGangPublicCommon; using iWareSql; using iWareSql.DataAccess; using iWareSql.DBModel; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using XiGang.Core.Model; using XiGang.Core.Model.PostParamModels.Task; using static WZ.Useful.Commons.NativeMethods; namespace iWareCC { /// /// 自动组盘下发 任务 /// public static class AutoIssueInStoreTask { /// /// 自动组盘下发 /// public static void Handler() { var alertMsg = ""; while (true) { Thread.Sleep(2000);//休眠2秒,将休眠写到前面,是为了下面的continue方法执行后不显示错误信息的提示!!!【EditBy shaocx,2022-05-24】 SystemWarningMsg._lbl_alert_AutoIssueInStoreTask = string.Empty; try { if (SystemValue.isAllowRuning_AutoIssueInStoreTask && SystemValue.isStartedModel) { EDevice rgvLocation = EDevice.入库口1019; var stationCode = Convert.ToInt32(rgvLocation).ToString(); var queryTaskState = (int)MainTaskStatusEnum.已组盘; using (DbModel context = new DbModel()) { var needIssueTask = context.Task_Main.Where(x => x.RealSourcePlace == stationCode && x.TaskState == queryTaskState).OrderBy(x => x.Id).FirstOrDefault(); if (needIssueTask == null) { SystemWarningMsg._lbl_alert_AutoIssueInStoreTask = $"{rgvLocation.ToString()}-没有要下发的‘已组盘’任务,此次循环结束"; continue; } //符合条件,即将进行自动组盘下发 var _scan_salverCode = needIssueTask.SalverCode; alertMsg = $"读取的{rgvLocation.ToString()}位置,发动机码为{needIssueTask.SerialNumber},托盘码为{_scan_salverCode},符合条件,即将进行自动组盘下发"; SystemWarningMsg._lbl_alert_AutoIssueInStoreTask = alertMsg; Log4NetHelper.WriteInfoLog(LogType.AutoIssueInStoreTask, alertMsg); try { //调用API MessageModel ret = WmsRequestHelper.IssueInStoreTask(needIssueTask.Id); if (ret.success) { alertMsg = $"读取的{rgvLocation.ToString()}位置,发动机码为{needIssueTask.SerialNumber},托盘码为{_scan_salverCode},自动组盘下发请求WMSAPI成功!"; SystemWarningMsg._lbl_alert_AutoIssueInStoreTask = alertMsg; Log4NetHelper.WriteInfoLog(LogType.AutoIssueInStoreTask, alertMsg); Thread.Sleep(10000);//休眠10秒, } else { alertMsg = $"读取的{rgvLocation.ToString()}位置,发动机码为{needIssueTask.SerialNumber},托盘码为{_scan_salverCode},自动组盘下发请求WMSAPI失败:WMS返回消息为->{ret.msg}"; SystemWarningMsg._lbl_alert_AutoIssueInStoreTask = alertMsg; Log4NetHelper.WriteInfoLog(LogType.AutoIssueInStoreTask, alertMsg); Log4NetHelper.WriteErrorLog(LogType.AutoIssueInStoreTask, alertMsg, null); Thread.Sleep(5000);//休眠5秒, } } catch (Exception ex) { alertMsg = $"读取的{rgvLocation.ToString()}位置,发动机码为{needIssueTask.SerialNumber},托盘码为{_scan_salverCode},自动组盘下发请求WMSAPI失败:出现异常->{ex.Message}"; SystemWarningMsg._lbl_alert_AutoIssueInStoreTask = alertMsg; Log4NetHelper.WriteInfoLog(LogType.AutoIssueInStoreTask, alertMsg); Log4NetHelper.WriteErrorLog(LogType.AutoIssueInStoreTask, alertMsg, ex); Thread.Sleep(10000);//休眠10秒, } } } } catch (Exception ex) { SystemWarningMsg._lbl_alert_AutoIssueInStoreTask += "自动组盘下发 出现异常:" + ex.Message + SysGloble.SPLIT_STR; Log4NetHelper.WriteErrorLog(LogType.AutoIssueInStoreTask, "AutoIssueInStoreTask 出现异常:" + ex.Message, ex); Thread.Sleep(10000);//休眠10秒, } } } } }