1
schangxiang@126.com
2024-12-02 607fa9a9dec5ff4fe780231d635bbd62e1740f37
CC/iWareCC_ASRS/ThreadService/03_BZ12(»úÆ÷ÈËÂë°ü¹¤Î»)/DataProcess_BZ12.cs
@@ -26,7 +26,7 @@
                SystemWarningMsg._lbl_alert_DataProcess_BZ12 = string.Empty;
                try
                {
                    if (SystemValue.isAllowRuning_DataProcess_BZ39 && SystemValue.isStartedModel)
                    if (SystemValue.isStartedModel)
                    {
                        var rgvLocation = StationLocationEnum.BZ12.ToString();
                        /*
@@ -34,6 +34,25 @@
                         * 2、根据齐套结果,推送给PLC
                         */
                        var obj = FormCC.stationView.R_StationForReadCommList.Where(x => x.StationCode == rgvLocation.ToString()).FirstOrDefault();
                        if (obj.R_PalletizingAck)
                        {
                            //给PLC推送任务完接收完成复位信号
                            using (StationServiceClient client = new StationServiceClient())
                            {
                                var res = client.WriteStation_ACK((int)EDevice.Station, false, rgvLocation);
                                if (!res.result)
                                {
                                    SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask = $"{rgvLocation.ToString()}-下发码板任务 å¤±è´¥,SetPalletizingTaskFinishAck è¿”回:{res.resMsg}";
                                    continue;
                                }
                                else
                                {
                                    Log4NetHelper.WriteInfoLog(logType, $"{rgvLocation.ToString()}-下发入库任务 æˆåŠŸ,SetPalletizingTaskFinishAck,参数: ç«™ç‚¹{rgvLocation}");
                                }
                            }
                        }
                        if (obj.R_ReqParseData)
                        {
                            var result = obj.R_ReadCodeResult;
@@ -42,16 +61,17 @@
                                SystemWarningMsg._lbl_alert_DataProcess_BZ39 = $"{rgvLocation.ToString()}-请求了解码,但是结果是空的,此次循环结束";
                                continue;
                            }
                            var upiCode = result;
                            bool islast = false;//是否末板
                            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.ValidateIssueTaskForBZ12(wmsDB);
                                var isValidate = TaskHandler.ValidateIssueTaskForBZ12(wmsDB, result);
                                if (!isValidate)
                                {
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()}-有‘已下发’的任务,不能处理,此次循环结束";
@@ -63,9 +83,16 @@
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()},根据UPI:{upiCode}没有找到对象 ";
                                    continue;
                                }
                                isrotate = 1;
                                isrotate = short.Parse(upiObj.Info17);
                                placeX = (short)upiObj.MachineXCenter;
                                placeY = (short)upiObj.MachineYCenter;
                                placeZ = (short)upiObj.MachineZCenter;
                                if (upiObj.UpiStatus == (int)UpiStatusEnum.已码垛 || upiObj.UpiStatus == (int)UpiStatusEnum.码垛中)
                                {
                                    continue;
                                }
                                upiObj.UpiStatus = (int)UpiStatusEnum.码垛中;
                                upiObj.AreaCode = (int)AreaCodeEnum.码垛区域;
                                //查处这包所有的数量
                                var upiList = wmsDB.mes_batchOrderUPI_new.Where(x => x.PackageCode == upiObj.PackageCode).ToList();
                                //查询是否末板并且判断有没有混批
@@ -75,7 +102,7 @@
                                    //查询是否混批
                                    if (!string.IsNullOrEmpty(wms_rbline_runmode.PalletizingUPI))
                                    {
                                        if (upiCode != wms_rbline_runmode.PalletizingUPI)
                                        if (upiObj.PackageCode != wms_rbline_runmode.PalletizingUPI)
                                        {
                                            SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()},UPI:{upiCode}码包部件混批 ";
                                            continue;
@@ -88,6 +115,8 @@
                                    }
                                    else
                                    {
                                        lastnum = 1;
                                        wms_rbline_runmode.PalletizingUPI = upiObj.PackageCode;
                                        if (obj.R_PalletizingStation1 == 1)
                                        {
                                            place = "1";
@@ -102,18 +131,19 @@
                                            SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()},UPI:{upiCode}无可用码垛目标位 ";
                                            continue;
                                        }
                                        wms_rbline_runmode.PalletizingStation = int.Parse(place);
                                    }
                                    //如果次序等于当钱包总数量,是否末板置为true
                                    if (upiObj.Shelf == upiList.Count())
                                    {
                                        islast = true;
                                        lastnum = 2;
                                        wms_rbline_runmode.PalletizingUPI = null;
                                        wms_rbline_runmode.PalletizingStation = 0;
                                    }
                                }
                                //查询有没有次序小于当前次序并且没有码垛的
                                var oldupi = upiList.Where(x => x.Shelf < upiObj.Shelf && x.UpiStatus != (int)UpiStatusEnum.已码垛).FirstOrDefault();
                                var oldupi = upiList.Where(x => x.Shelf < upiObj.Shelf && (x.UpiStatus != (int)UpiStatusEnum.已码垛 && x.UpiStatus != (int)UpiStatusEnum.码垛中)).FirstOrDefault();
                                if (oldupi != null)
                                {
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()},UPI:{upiCode}码包顺序错误 ";
@@ -144,7 +174,7 @@
                                    CreateUserName = "CC",
                                    UpdateTime = DateTime.Now,
                                    UpdateUserName = "CC",
                                    PlaceCode=place
                                    PlaceCode = place
                                };
                                wmsDB.wms_rbline_task.Add(task);
@@ -152,8 +182,8 @@
                                using (StationServiceClient client = new StationServiceClient())
                                {
                                    var res = client.WritePalletizingTaskInfo((int)EDevice.Station, rgvLocation, Convert.ToInt32(task.TaskNo), islast,
                                          (short)upiObj.Length, (short)upiObj.Width, (short)upiObj.Thk, isrotate, short.Parse(task.PlaceCode), placeX, placeY);
                                    var res = client.WritePalletizingTaskInfo((int)EDevice.Station, rgvLocation, Convert.ToInt32(task.TaskNo),
                                          (short)upiObj.Length, (short)upiObj.Width, (short)upiObj.Thk, isrotate, short.Parse(task.PlaceCode), placeX, placeY, placeZ, lastnum);
                                    if (!res.result)
                                    {
                                        SystemWarningMsg._lbl_alert_DataProcess_BZ12 = $"{rgvLocation.ToString()}-下发入库任务 å¤±è´¥,WriteInStoreTaskInfoAsync è¿”回:{res.resMsg}";
@@ -165,6 +195,9 @@
                                    }
                                }
                                WmsRecordUpiProcessHandler.SaveWmsRecordUpiProcess(wmsDB, upiObj, "BZ12站点", "码包");
                                wmsDB.SaveChanges();
                            }
                        }