using Admin.NET.Application; using iWareCC.Common.Helper; using iWareCC.StationService; using iWareCommon.Common.Globle; using iWareCommon.Utils; using iWareModel; using iWareSql.DataAccess; using iWareSql.DBModel; using iWareSql.WmsDBModel; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Remoting.Messaging; using System.ServiceModel.Configuration; using System.Text; using System.Threading; using System.Threading.Tasks; using WZ.Useful.Commons; using XiGang.Core.Model; namespace iWareCC.ThreadService { /// /// BZ30齐套验证 /// public static class DataProcess_ValidateQiTao { public static async void Handler() { var alertMsg = ""; LogType logType = LogType.DataProcess_ValidateQiTao; while (true) { Thread.Sleep(2000);//休眠2秒,将休眠写到前面,是为了下面的continue方法执行后不显示错误信息的提示!!!【EditBy shaocx,2022-05-24】 SystemWarningMsg._lbl_Alert_DataProcess_ValidateQiTao = string.Empty; try { //if (SystemValue.isAllowRuning_DataProcess_ValidateQiTao && SystemValue.isStartedModel) if (SystemValue.isStartedModel) { var rgvLocation = StationLocationEnum.BZ30.ToString(); using (WmsDBModel wmsDB = new WmsDBModel()) { var bz30Config = wmsDB.SysConfig.Where(x => x.Code == "wms_bz30_qitao").FirstOrDefault(); if (bz30Config == null) { SystemWarningMsg._lbl_Alert_DataProcess_ValidateQiTao = $"没有配置 wms_bz30_qitao 值"; continue; } var configValue = bz30Config.Value; if (string.IsNullOrEmpty(configValue) || configValue.IndexOf('|') <= -1) { SystemWarningMsg._lbl_Alert_DataProcess_ValidateQiTao = $"配置 wms_bz30_qitao 值{configValue}为空或不正确"; continue; } var configValues = configValue.Split('|'); var packageCode = configValues[0]; var qitaoValue = configValues[1];//齐套 不齐套 var _UnlinePerson = configValues[2]; bool iscomplete = false; if (qitaoValue.Equals("齐套")) { iscomplete = true; } //TODO:推送给PLC 去哪个方向? using (StationServiceClient client = new StationServiceClient()) { var res = client.WriteQiTaoInfo((int)EDevice.Station, rgvLocation, iscomplete); if (!res.result) { SystemWarningMsg._lbl_Alert_DataProcess_ValidateQiTao = $"{rgvLocation.ToString()}-推送给PLC是否齐套失败,ChangeModeAsync 返回:{res.resMsg}"; continue; } else { Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-推送给PLC是否齐套 成功,ChangeModeAsync,参数: 站点{rgvLocation}"); } } // //更新值 bz30Config.Value = ""; var package = wmsDB.mes_package_gather.Where(x => x.PackageCode == packageCode).FirstOrDefault(); if (package != null) { package.UpiStatus = (int)UpiStatusEnum.已下线; package.AreaCode = (int)AreaCodeEnum.下线区域; } var upiList = wmsDB.mes_batchOrderUPI_new.Where(x => x.PackageCode == packageCode).ToList(); foreach (var item in upiList) { item.UpiStatus = (int)UpiStatusEnum.已下线; item.AreaCode = (int)AreaCodeEnum.下线区域; item.UpdateTime = DateTime.Now; } //删除队列信息 var lineQueue = wmsDB.mes_package_linequeue.Where(x => x.PackageCode == packageCode).FirstOrDefault(); if (lineQueue != null) { wmsDB.mes_package_linequeue.Remove(lineQueue); } //处理表 mes_order_gather var errmsg = ""; var result = MyExtendHelper.HandlerOrderGather(wmsDB, package, qitaoValue, _UnlinePerson, out errmsg); if (result == false) { SystemWarningMsg._lbl_Alert_DataProcess_ValidateQiTao = errmsg; continue; } //新增下线记录 mes_package_unline_record record = new mes_package_unline_record(); record = ClassHelper.RotationMapping(package); record.Id = Yitter.IdGenerator.YitIdHelper.NextId(); record.CreateTime = DateTime.Now; record.UpdateTime = DateTime.Now; record.OpRemark = "下线"; wmsDB.mes_package_unline_record.Add(record); WmsRecordUpiProcessHandler.SaveWmsRecordPackageProcess(wmsDB, package, "BZ30", "齐套验证"); wmsDB.SaveChanges(); } } } catch (Exception ex) { SystemWarningMsg._lbl_Alert_DataProcess_ValidateQiTao += " 出现异常:" + ex.Message + SysGloble.SPLIT_STR; Log4NetHelper.WriteErrorLog(logType, " 出现异常:" + ex.Message, ex); } } } } }