33
schangxiang@126.com
2024-12-08 7285fd041c9ed732ae2039c4cc54f3eb382d9112
CC/iWareCC_ASRS/ThreadService/01_BZ01¹¤Î»£¨Çå»Ò£¬Ï´°åºó¹¤Î»£©/DataProcess_BZ01.cs
@@ -65,12 +65,15 @@
                                continue;
                            }
                            var upiCode = result;
                            var qitaoReault = false;
                            var qitaoReault = false;//齐包结果
                            using (WmsDBModel wmsDB = new WmsDBModel())
                            {
                                var upiObj = wmsDB.mes_batchOrderUPI_new.Where(x => x.UPI == upiCode).FirstOrDefault();
                                if (upiObj == null)
                                {
                                    //写入报警信息
                                    await MyExtendHelper.WriteBoolPlcDataForWarning(PlcWarningGloble.Num_BZ01_1);
                                    SystemWarningMsg._lbl_alert_DataProcess_BZ01 = $"{rgvLocation.ToString()},根据UPI:{upiCode}没有找到对象 ";
                                    continue;
                                }
@@ -89,8 +92,6 @@
                                x.AreaCode == (int)AreaCodeEnum.缓存分拣区
                                 ||
                                x.AreaCode == (int)AreaCodeEnum.码垛区域
                                  ||
                                x.AreaCode == (int)AreaCodeEnum.机器人岛缓存区域
                                ).ToList();
                                if (isQiTaoList.Count() != allList.Count())
                                {//不齐包
@@ -99,8 +100,32 @@
                                }
                                else
                                {//齐包
                                    qitaoReault = true;
                                    upiObj.AreaCode = (int)AreaCodeEnum.码垛区域;
                                 //这里再增加个逻辑,必须是按照次序进入的才真正的算齐包 [Editby shaocx,2024-12-06]
                                 //寻找本包内的前一块板的位置
                                    int queryAreaCode = (int)AreaCodeEnum.待缓存分拣区;
                                    var lastUpiLineQueue = wmsDB.mes_upi_linequeue.Where(x => x.PackageCode == upiObj.PackageCode && x.AreaCode == queryAreaCode)
                                        .OrderBy(x => x.Id).FirstOrDefault();//查询该包队列的第一块板
                                    if (lastUpiLineQueue == null)
                                    {//说明 é˜Ÿåˆ—中没有该包的数据
                                        qitaoReault = false;
                                        upiObj.AreaCode = (int)AreaCodeEnum.缓存分拣区;
                                    }
                                    else
                                    {
                                        if (lastUpiLineQueue.Shelf != upiObj.Shelf)
                                        {
                                            qitaoReault = false;
                                            upiObj.AreaCode = (int)AreaCodeEnum.缓存分拣区;
                                        }
                                        else
                                        {
                                            qitaoReault = true;
                                            upiObj.AreaCode = (int)AreaCodeEnum.码垛区域;
                                        }
                                        //注意:要删除该队列数据哦
                                        wmsDB.mes_upi_linequeue.Remove(lastUpiLineQueue);
                                    }
                                }
                                using (StationServiceClient client = new StationServiceClient())
@@ -168,7 +193,8 @@
        private static bool IsAllloRunOutTaskMode(WmsDBModel wmsDB, mes_batchOrderUPI_new curUpiObj)
        {
            //首先查询数据库中是否有 è¦å‡ºåº“的数据
            var isExistOutTaskForNewCreated = wmsDB.wms_rbline_task.Where(x => x.RbTaskType == (int)RbTaskTypeEnum.出库任务
            var isExistOutTaskForNewCreated = wmsDB.wms_rbline_task.Where(x =>
            (x.RbTaskType == (int)RbTaskTypeEnum.齐包出库任务 || x.RbTaskType == (int)RbTaskTypeEnum.强制出库任务)
               && x.TaskStatus == (int)TaskStatusEnum.新建
              ).Count();
            if (isExistOutTaskForNewCreated == 0)