22
schangxiang@126.com
2024-12-24 c667629f6f7b9cdb15958fc560bd2bf83f36cdf6
CC/iWareCC_ASRS/ThreadService/03_BZ12(»úÆ÷ÈËÂë°ü¹¤Î»)/1¡¢DataProcess_BZ12.cs
@@ -23,7 +23,7 @@
            LogType logType = LogType.DataProcess_BZ12;
            while (true)
            {
                Thread.Sleep(2000);//休眠2秒,将休眠写到前面,是为了下面的continue方法执行后不显示错误信息的提示!!!【EditBy shaocx,2022-05-24】
                Thread.Sleep(600);//休眠2秒,将休眠写到前面,是为了下面的continue方法执行后不显示错误信息的提示!!!【EditBy shaocx,2022-05-24】
                SystemWarningMsg._lbl_alert_DataProcess_BZ12 = string.Empty;
                try
                {
@@ -69,20 +69,27 @@
                            }
                            var upiCode = result.Replace("/r", ""); ;
                            short lastnum = 0;//是否末板
                            //short isrotate = 0;//是否旋转
                            //short placeX = 0;
                            //short placeY = 0;
                            //short placeZ = 0;
                            string place = "";
                            using (WmsDBModel wmsDB = new WmsDBModel())
                            {
                                //要是有已下发的任务,就不要执行
                                var isValidate = TaskHandler.ValidateIssueTaskForNoFinishTaskByUpi(wmsDB, result);
                                var isValidate = TaskHandler.ValidateIssueTaskForNoFinishTaskByUpi(wmsDB, result, false);
                                if (!isValidate)
                                {
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()}-有‘已下发’的任务,不能处理,此次循环结束";
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()}-upi:{result}有‘已下发’的任务,不能处理,此次循环结束";
                                    continue;
                                }
                                /*
                                isValidate = TaskHandler.ValidateNoFinishOutTaskFor码板任务(wmsDB);
                                if (!isValidate)
                                {
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()}-有 æœªç»“束 çš„任务,不能处理,此次循环结束";
                                    continue;
                                }
                                //*/
                                var upiObj = wmsDB.mes_batchOrderUPI_new.Where(x => x.UPI == upiCode).FirstOrDefault();
                                if (upiObj == null)
                                {
@@ -109,58 +116,88 @@
                                //查处这包所有的数量
                                var upiList = wmsDB.mes_batchOrderUPI_new.Where(x => x.PackageCode == upiObj.PackageCode).ToList();
                                //查询是否末板并且判断有没有混批
                                var wms_rbline_runmode = wmsDB.wms_rbline_runmode.FirstOrDefault();
                                if (wms_rbline_runmode != null)
                                //增加对参数配置的管理 ã€Editby shaocx,2024-12-13】
                                var sysConfig = wmsDB.SysConfig.Where(x => x.Code == "LastPalletizingData").FirstOrDefault();
                                if (sysConfig == null)
                                {
                                    //查询是否混批
                                    if (!string.IsNullOrEmpty(wms_rbline_runmode.PalletizingUPI))
                                    {
                                        if (upiObj.PackageCode != wms_rbline_runmode.PalletizingUPI)
                                        {
                                            //写入报警信息
                                            await MyExtendHelper.WriteBoolPlcDataForWarning(PlcWarningAddressGloble.Num_BZ12_4);
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ01 = $"没有获取到 LastPalletizingData çš„配置信息 ";
                                    continue;
                                }
                                string palletizingUPI = "";
                                int palletizingStation = 0;
                                            SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()},UPI:{upiCode}码包部件混批 ";
                                            continue;
                                        }
                                    }
                                    //获取码垛目标位
                                    if (wms_rbline_runmode.PalletizingStation != 0)
                                var config_value = sysConfig.Value;
                                if (config_value.IndexOf('|') > -1)
                                {//格式为 åŒ…装号|站点
                                    var arr = config_value.Split('|');
                                    palletizingUPI = arr[0];
                                    palletizingStation = Convert.ToInt32(arr[1]);
                                }
                                else
                                {//表示还没有配置
                                }
                                //查询是否混批
                                if (!string.IsNullOrEmpty(palletizingUPI))
                                {
                                    if (upiObj.PackageCode != palletizingUPI)
                                    {
                                        place = wms_rbline_runmode.PalletizingStation.ToString();
                                        //写入报警信息
                                        await MyExtendHelper.WriteBoolPlcDataForWarning(PlcWarningAddressGloble.Num_BZ12_4);
                                        SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()},UPI:{upiCode}码包部件混批 ";
                                        continue;
                                    }
                                }
                                //获取码垛目标位
                                if (palletizingStation != 0)
                                {
                                    place = palletizingStation.ToString();
                                }
                                else
                                {//表示这是 åŒ…的第一块板
                                    palletizingUPI = upiObj.PackageCode;
                                    if (obj.R_PalletizingStation1 == 1)
                                    {
                                        place = "1";
                                    }
                                    else if (obj.R_PalletizingStation2 == 1)
                                    {
                                        place = "2";
                                    }
                                    else
                                    {
                                        lastnum = 1;
                                        wms_rbline_runmode.PalletizingUPI = upiObj.PackageCode;
                                        if (obj.R_PalletizingStation1 == 1)
                                        {
                                            place = "1";
                                        }
                                        else if (obj.R_PalletizingStation2 == 1)
                                        {
                                            place = "2";
                                        //去掉报警,不再校验这个了
                                        place = "1";
                                        /*
                                        //写入报警信息
                                        await MyExtendHelper.WriteBoolPlcDataForWarning(PlcWarningAddressGloble.Num_BZ12_6);
                                        }
                                        else
                                        {
                                            //写入报警信息
                                            await MyExtendHelper.WriteBoolPlcDataForWarning(PlcWarningAddressGloble.Num_BZ12_6);
                                            SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()},UPI:{upiCode}无可用码垛目标位 ";
                                            continue;
                                        }
                                        wms_rbline_runmode.PalletizingStation = int.Parse(place);
                                    }
                                    //如果次序等于当钱包总数量,是否末板置为true
                                    if (upiObj.Shelf == upiList.Count())
                                    {
                                        lastnum = 2;
                                        wms_rbline_runmode.PalletizingUPI = null;
                                        wms_rbline_runmode.PalletizingStation = 0;
                                        SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()},UPI:{upiCode}无可用码垛目标位 ";
                                        continue;
                                        //*/
                                    }
                                    palletizingStation = int.Parse(place);
                                }
                                //如果次序等于当钱包总数量,是否末板置为true
                                if (upiObj.Shelf == upiList.Count())
                                {
                                    lastnum = 2;//(1首件,2末件,0为中间板)
                                    palletizingUPI = null;
                                    palletizingStation = 0;
                                }
                                else if (upiObj.Shelf == 1)
                                {
                                    lastnum = 1;//(1首件,2末件,0为中间板)
                                }
                                else
                                {
                                    lastnum = 0;//(1首件,2末件,0为中间板)
                                }
                                //查询有没有次序小于当前次序并且没有码垛的
                                var oldupi = upiList.Where(x => x.Shelf < upiObj.Shelf && (x.UpiStatus != (int)UpiStatusEnum.已码垛 && x.UpiStatus != (int)UpiStatusEnum.码垛中)).FirstOrDefault();
                                if (oldupi != null)
@@ -174,7 +211,8 @@
                                //记录任务
                                var _id = Yitter.IdGenerator.YitIdHelper.NextId();
                                var plcTaskNo = BusinessHelper.CreatePlcTaskIdForSrmTask();
                                var plcTaskNo = BusinessHelper.CreatePlcTaskId();
                                plcTaskNo = MyExtendHelper.GetNewTaskNo(wmsDB, RbTaskTypeEnum.码板任务, plcTaskNo);
                                var task = new wms_rbline_task()
                                {
                                    Id = _id,
@@ -183,7 +221,7 @@
                                    Length = upiObj.Length,
                                    Width = upiObj.Width,
                                    Thk = upiObj.Thk,
                                    PlanNo = upiObj.PlanNo,
                                    OrderId = upiObj.OrderId,
                                    PackageCode = upiObj.PackageCode,
@@ -191,9 +229,9 @@
                                    TaskStatus = (int)TaskStatusEnum.新建,
                                    TaskMsg = "码板",
                                    CreateTime = DateTime.Now,
                                    CreateUserName = "CC",
                                    CreateUserName = SysGloble.WCSSystem,
                                    UpdateTime = DateTime.Now,
                                    UpdateUserName = "CC",
                                    UpdateUserName = SysGloble.WCSSystem,
                                    PlaceCode = place,
                                    LastNum = lastnum,
@@ -206,7 +244,8 @@
                                wmsDB.wms_rbline_task.Add(task);
                                //更新配置
                                sysConfig.Value = palletizingUPI + "|" + palletizingStation;
                                WmsRecordUpiProcessHandler.SaveWmsRecordUpiProcess(wmsDB, upiObj, "BZ12站点", "码包");
@@ -214,6 +253,10 @@
                                wmsDB.SaveChanges();
                            }
                        }
                        else
                        {
                            SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()}-没有要处理的数据";
                        }
                    }
                }
                catch (Exception ex)