xiaojiao
2026-01-24 c5f01e9a882b16f534166d033312c5c8ba8d94dd
ÏîÄ¿´úÂë/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundAreaDispathAction.cs
@@ -50,6 +50,52 @@
            ["70104"] = "80104",
            ["70106"] = "80106"
        };
        // å‡ºåº“区域校准缓存架校准
        public static void OutboundAreaJZ(IDt_TaskWCSinfoRepository taskWCSinfoRepository, IDt_TaskRGVinfoRepository taskRGVinfoRepository, PLCClient client)
        {
            // å‡ºåº“区的出库任务 åˆ°ç¼“存架子了 å°±è¦æŠŠä»»åŠ¡å·å’Œæ‰˜ç›˜å·å†™å…¥åˆ°å¯¹åº”å±‚çš„ç¼“å­˜æž¶
            List<Dt_TaskWCSinfo> executingTasks = taskWCSinfoRepository.Find(r => (
            r.wcstask_state == TaskState.TaskState_Box_Out_RGV_Finished.ToString() ||
            r.wcstask_state == TaskState.TaskState_Empty_Out_RGV_Finished.ToString())
            && endStationNo.Contains(r.wcstask_endPoint)).ToList();
            foreach (var item in executingTasks)
            {
                bool LoadSleep = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), item.wcstask_startPoint.ToString()).ToString());
                int ReadNumber = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), item.wcstask_startPoint.ToString()).ToString());
                int ReadBarcode = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), item.wcstask_startPoint.ToString()).ToString());
                if (LoadSleep && (ReadNumber == 0 || ReadBarcode == 0))
                {
                    //写入托盘条码
                    bool writeTaskNumber = client.WriteValue(CLineInfoDBName.W_Line_TaskNumber.ToString(), item.wcstask_startPoint, item.wcstask_taskNumber);
                    bool writeBarcode = client.WriteValue(CLineInfoDBName.W_Line_Barcode.ToString(), item.wcstask_startPoint, item.wcstask_barcode);
                }
            }
            foreach (var item in OutboundStationLayerNo)
            {
                bool LoadSleep = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), item.ToString()).ToString());
                int ReadNumber = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), item.ToString()).ToString());
                int ReadBarcode = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), item.ToString()).ToString());
                Dt_TaskWCSinfo dt_TaskWCSinfo = taskWCSinfoRepository.Find(r =>
                r.wcstask_type == TaskType.TaskType_Empty_Pallet_Inbound.ToString()
                && r.wcstask_state == TaskState.TaskState_Assigned.ToString()
                && r.wcstask_startPoint == 90101.ToString()
                && r.wcstask_endPoint == item
                && r.wcstask_barcode == ReadBarcode.ToString()
                && r.wcstask_taskNumber == ReadNumber
                ).FirstOrDefault();
                if (LoadSleep && dt_TaskWCSinfo != null)
                {
                    // è¯æ˜Žè´§ç‰©å·²ç»åˆ°äº†ç¼“存架 ä½†ä»»åŠ¡çŠ¶æ€æ²¡æœ‰æ”¹å˜ è¿˜æ˜¯æ–°å»ºçŠ¶æ€ å°±è¦æ”¹ä¸º TaskState.TaskState_Empty_In_PLC_Finished.ToString()
                    dt_TaskWCSinfo.wcstask_state = TaskState.TaskState_Empty_In_PLC_Finished.ToString();
                    taskWCSinfoRepository.Update(dt_TaskWCSinfo, true);
                    string str = $"出库区域 ç©ºæ‰˜ç›˜å›žåº“ æ‰˜ç›˜éƒ½åˆ°ç¼“存架子 ä½†ä»»åŠ¡çŠ¶æ€æ²¡å˜ {DateTime.Now}【{dt_TaskWCSinfo.wcstask_state}】,托盘号:{dt_TaskWCSinfo.wcstask_barcode},任务号:{dt_TaskWCSinfo.wcstask_taskNumber}";
                    LogRecord.WriteLog(LogEnum.Errer, str.ToString());
                }
            }
        }
        public static void OutboundAreaDispathAction(IDt_TaskWCSinfoRepository taskWCSinfoRepository, IDt_TaskRGVinfoRepository taskRGVinfoRepository, PLCClient client)
        {
            try
@@ -78,7 +124,6 @@
                                || outboundTask.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Outbound.ToString()))
                                rgvTaskType = RGVTaskType.RgvTaskType_Outbound.ToString();
                            rgvInfo = GetRGVTask(taskRGVinfoRepository, outboundTask, rgvTaskType);
                            taskRGVinfoRepository.Add(rgvInfo, true);
@@ -90,7 +135,7 @@
                //缓存口(缓存架)至输送线
                OutboundCZ_PLC(taskWCSinfoRepository, taskRGVinfoRepository, client);
                //空托入库申请(生成了空托入库任务)
                InboundRequestAction(taskWCSinfoRepository, taskRGVinfoRepository, client);
@@ -104,7 +149,7 @@
            }
            catch (Exception ex)
            {
                WriteLog.Info("OutboundArea").Write($"{ DateTime.Now }出库区域调度失败:{ex.Message}", "OutboundArea");
                WriteLog.Info("OutboundArea").Write($"{DateTime.Now}出库区域调度失败:{ex.Message}", "OutboundArea");
            }
        }
        public static bool WriteRGVState(PLCClient client, bool value)
@@ -140,7 +185,7 @@
            List<Dt_TaskWCSinfo> listTask = taskWCSinfoRepository.Find(r => r.wcstask_state == TaskState.TaskState_Assigned.ToString() &&
          (r.wcstask_type == TaskType.TaskType_Box_Pallet_Outbound.ToString() || r.wcstask_type == TaskType.TaskType_Empty_Pallet_Outbound.ToString())
          && OutboundStationLayerNo.Contains(r.wcstask_startPoint)).OrderBy(r => r.wcstask_createTime).ToList();//
          && endStationNo.Contains(r.wcstask_endPoint)).OrderBy(r => r.wcstask_createTime).ToList();//
            foreach (var item in listTask.GroupBy(r => r.wcstask_endPoint))
            {
@@ -154,13 +199,14 @@
                        continue;
                    //判断缓存架是否有货 
                    bool flag = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(),wcsTask.wcstask_startPoint).ToString());
                    bool flag = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), wcsTask.wcstask_startPoint).ToString());
                    bool noflag = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_NoLoadSleep.ToString(), wcsTask.wcstask_startPoint).ToString());
                    if (flag || !noflag)
                        continue;
                    //同一层有执行中的任务不添加
                    Dt_TaskWCSinfo executingTask = taskWCSinfoRepository.FindFirst(r => (r.wcstask_startPoint == wcsTask.wcstask_startPoint || r.wcstask_endPoint == wcsTask.wcstask_endPoint)
                    Dt_TaskWCSinfo executingTask = taskWCSinfoRepository.FindFirst(r =>
                    (r.wcstask_startPoint == wcsTask.wcstask_startPoint || r.wcstask_endPoint == wcsTask.wcstask_endPoint)
                    && (r.wcstask_state == TaskState.TaskState_RGV_Received.ToString() || r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString()));
                    if (null != executingTask)
                        continue;
@@ -168,37 +214,37 @@
                    List<Dt_TaskWCSinfo> listTarget = taskWCSinfoRepository.Find(r => r.wcstask_endPoint == wcsTask.wcstask_endPoint &&
                    r.wcstask_state != TaskState.TaskState_Assigned.ToString());
                    if(listTarget != null && listTarget.Count >= 2)
                    {
                        continue;
                    }
                    else
                    {
                        wcsInfo = wcsTask;
                    }
                    string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), wcsTask.wcstask_endPoint).ToString();
                    //if (string.IsNullOrEmpty(barcode) || "0".Equals(barcode))
                    //if (listTarget != null && listTarget.Count > 1)
                    //{
                    //    if (null != listTarget && listTarget.Count > 2)
                    //        continue;
                    //    else
                    //    {
                    //        wcsInfo = wcsTask;
                    //        break;
                    //    }
                    //    continue;
                    //}
                    //else
                    //{
                    //    if (null != listTarget && listTarget.Count > 1)
                    //        continue;
                    //    else
                    //    {
                    //        wcsInfo = wcsTask;
                    //        break;
                    //    }
                    //    wcsInfo = wcsTask;
                    //}
                    string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), wcsTask.wcstask_endPoint).ToString();
                    if (string.IsNullOrEmpty(barcode) || "0".Equals(barcode))
                    {
                        if (null != listTarget && listTarget.Count > 1)
                            continue;
                        else
                        {
                            wcsInfo = wcsTask;
                            break;
                        }
                    }
                    else
                    {
                        if (null != listTarget && listTarget.Count > 0)
                            continue;
                        else
                        {
                            wcsInfo = wcsTask;
                            break;
                        }
                    }
                }
            }
            return wcsInfo;
@@ -222,102 +268,200 @@
            return rgvInfo;
        }
        // åªç”¨ä¸€ä¸ªå­—典:Key=托盘号,Value=Tuple<锁对象, æœ€åŽä½¿ç”¨æ—¶é—´>
        // Tuple<object, DateTime>:Item1=锁对象,Item2=最后使用时间
        private static readonly Dictionary<string, Tuple<object, DateTime>> BarcodeLockDict = new Dictionary<string, Tuple<object, DateTime>>();
        private static readonly object GlobalLock = new object(); // ä¿æŠ¤å­—典的全局锁
        private const int ExpireMinutes = 1; // è¿‡æœŸæ—¶é—´ï¼š1分钟
        /// <summary>
        /// èŽ·å–æ‰˜ç›˜å·ä¸“å±žé”ï¼ˆå•å­—å…¸+1分钟过期+懒清理)
        /// </summary>
        private static object GetBarcodeLock(string barcode)
        {
            lock (GlobalLock) // å…¨å±€é”ä¿æŠ¤å­—典操作
            {
                // ========== ç¬¬ä¸€æ­¥ï¼šæ‡’清理(每次获取锁时,清理超过1分钟的闲置托盘号) ==========
                var expiredBarcodes = BarcodeLockDict
                    .Where(kv => (DateTime.Now - kv.Value.Item2).TotalMinutes > ExpireMinutes)
                    .Select(kv => kv.Key)
                    .ToList();
                foreach (var expiredBarcode in expiredBarcodes)
                {
                    BarcodeLockDict.Remove(expiredBarcode);
                }
                // ========== ç¬¬äºŒæ­¥ï¼šå¤„理当前托盘号的锁和时间 ==========
                if (!BarcodeLockDict.ContainsKey(barcode))
                {
                    // æ— è¯¥æ‰˜ç›˜å·ï¼šæ–°å¢žé”å¯¹è±¡+当前时间
                    BarcodeLockDict[barcode] = Tuple.Create(new object(), DateTime.Now);
                }
                // è¿”回当前托盘号的锁对象
                return BarcodeLockDict[barcode].Item1;
            }
        }
        public static void InboundRequestAction(IDt_TaskWCSinfoRepository taskWCSinfoRepository, IDt_TaskRGVinfoRepository taskRGVinfoRepository, PLCClient client)
        {
            try
            {
                //string barcode = "901010";
                int R_Line_PLCDispatch = int.Parse(client.ReadValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo).ToString());
                bool load = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), ReInboundRequestStationNo).ToString());
                if (R_Line_PLCDispatch == 1 && load)
                if (R_Line_PLCDispatch == 1 && load)
                {
                    string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), ReInboundRequestStationNo).ToString();
                    // è¿™é‡Œè¦åŠ ä¸€ä¸ªåˆ¤æ–­ï¼Œå¦‚æžœæ‹¿å›žæ¥çš„ç©ºæ‰˜ç›˜æ˜¯800001,但是我有一条这个托盘的任务是800001还没有到指定的压装台,所以我要完成这个任务
                    Dt_TaskWCSinfo IsTask = taskWCSinfoRepository.FindFirst(x => x.wcstask_barcode == barcode && x.wcstask_state == TaskState.TaskState_Empty_Out_Line_Executing.ToString());
                    if (IsTask != null)
                    {
                        //在此完成该空托出库任务
                        WebResponseContent content = taskWCSinfoRepository.DbContextBeginTransaction(() =>
                        {
                            //上报WMS任务完成
                            content = WMSApi.TellWmsTaskFinished(IsTask.wcstask_barcode);
                            if (content.Status)
                            {
                                //移动任务到历史表
                                Dt_TaskWCSinfo_HtyRepository taskWCSinfo_HtyRepository = new Dt_TaskWCSinfo_HtyRepository(taskWCSinfoRepository.DbContext);
                                IsTask.wcstask_state = TaskState.TaskState_Finished.ToString();
                                CommonFunction.AddWcsTaskToHistory(IsTask, taskWCSinfoRepository, taskWCSinfo_HtyRepository);
                            }
                            else
                                throw new Exception($"{DateTime.Now}上报WMS任务完成出错,原因:【{content.Message}】");
                            return content;
                        });
                        string str = string.Empty;
                        if (content.Status)
                            str = $" {DateTime.Now}上报WMS出库完成成功,【手动干扰出库没有到达指定压装台点位,手动拿回90101】【TaskState_ConveyorLineExecuting】,托盘号:{IsTask.wcstask_barcode},任务号:{IsTask.wcstask_taskNumber}";
                        else
                            str = $" {DateTime.Now}上报WMS出库完成失败【手动干扰出库没有到达指定压装台点位,手动拿回90101】【TaskState_ConveyorLineExecuting】,托盘号:{IsTask.wcstask_barcode},任务号:{IsTask.wcstask_taskNumber}";
                        WriteLog.Info(IsTask.wcstask_endPoint).Write(str, IsTask.wcstask_endPoint);
                    }
                    if (!string.IsNullOrEmpty(barcode) && !"0".Equals(barcode))
                    {
                        Dt_TaskWCSinfo wcsInfo = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == barcode && r.wcstask_type == TaskType.TaskType_Empty_Pallet_Inbound.ToString());
                        if (null == wcsInfo)
                        if (int.Parse(barcode) < 800000 || int.Parse(barcode) > 890000)
                        {
                            //获取车轴出库
                            List<Dt_TaskWCSinfo> executingTask = taskWCSinfoRepository.Find(r => (r.wcstask_type.Equals(TaskType.TaskType_Box_Pallet_Outbound.ToString()) ||
                                r.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Outbound.ToString())) && endStationNo.Contains(r.wcstask_endPoint));
                            return;
                        }
                        object barcodeLock = GetBarcodeLock(barcode);
                        lock (barcodeLock)
                        {
                            Dt_TaskWCSinfo IsTask = taskWCSinfoRepository.FindFirst(x => x.wcstask_barcode == barcode
                            && (x.wcstask_type == TaskType.TaskType_Empty_Pallet_Outbound.ToString() || x.wcstask_type == TaskType.TaskType_Box_Pallet_Outbound.ToString())
                            && (x.wcstask_state == TaskState.TaskState_Box_Out_Line_Executing.ToString() || x.wcstask_state == TaskState.TaskState_Empty_Out_Line_Executing.ToString())
                            && (endStationNo.Contains(x.wcstask_endPoint)));
                            if (IsTask != null)
                            {
                                //在此完成该空托出库任务
                                WebResponseContent content = taskWCSinfoRepository.DbContextBeginTransaction(() =>
                                {
                                    //上报WMS任务完成
                                    content = WMSApi.TellWmsTaskFinished(IsTask.wcstask_barcode);
                                    if (content.Status)
                                    {
                                        //移动任务到历史表
                                        Dt_TaskWCSinfo_HtyRepository taskWCSinfo_HtyRepository = new Dt_TaskWCSinfo_HtyRepository(taskWCSinfoRepository.DbContext);
                                        IsTask.wcstask_state = TaskState.TaskState_Finished.ToString();
                                        CommonFunction.AddWcsTaskToHistory(IsTask, taskWCSinfoRepository, taskWCSinfo_HtyRepository);
                                    }
                                    else
                                        throw new Exception($"{DateTime.Now}上报WMS任务完成出错,原因:【{content.Message}】");
                            //获取有多少条出库的任务
                            int LineExecucount = executingTask.Count(x => x.wcstask_state == TaskState.TaskState_Box_Out_Line_Executing.ToString() || x.wcstask_state == TaskState.TaskState_Empty_Out_Line_Executing.ToString());
                            if (LineExecucount >= 8)
                            {
                                //判断是否有对应层的出库任务,
                                //申请入库任务
                                WebResponseContent content = WMSApi.PostInboundRequstToWMS(barcode);
                                    return content;
                                });
                                string str = string.Empty;
                                if (content.Status)
                                {
                                    WmsTaskInfo wmsTask = JsonConvert.DeserializeObject<WmsTaskInfo>(content.Data.ToString());
                                    wcsInfo = CommonFunction.AddWCSEmptyInboundTask(wmsTask, taskWCSinfoRepository);
                                    taskWCSinfoRepository.Add(wcsInfo, true);
                                    //client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 2);
                                }
                                    str = $" {DateTime.Now}上报WMS出库完成成功,【手动干扰出库没有到达指定压装台点位,手动拿回90101】【TaskState_ConveyorLineExecuting】,托盘号:{IsTask.wcstask_barcode},任务号:{IsTask.wcstask_taskNumber}";
                                else
                                {
                                    throw new Exception("入库申请失败:" + content.Message);
                                }
                                    str = $" {DateTime.Now}上报WMS出库完成失败【手动干扰出库没有到达指定压装台点位,手动拿回90101】【TaskState_ConveyorLineExecuting】,托盘号:{IsTask.wcstask_barcode},任务号:{IsTask.wcstask_taskNumber}";
                                WriteLog.Info(IsTask.wcstask_endPoint).Write(str, IsTask.wcstask_endPoint);
                                LogRecord.WriteLog(LogEnum.Errer, str.ToString());
                            }
                            else
                            Dt_TaskWCSinfo wcsInfo = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == barcode);
                            if (null == wcsInfo)
                            {
                                //判断有多少条在缓存架的
                                int RGV_Finishedcount = executingTask.Count(x => x.wcstask_state != TaskState.TaskState_Box_Out_Line_Executing.ToString()
                                && x.wcstask_state != TaskState.TaskState_Empty_Out_Line_Executing.ToString()
                                && x.wcstask_state != TaskState.TaskState_Assigned.ToString());
                                if (RGV_Finishedcount == 0)
                                //获取车轴出库
                                List<Dt_TaskWCSinfo> executingTask = taskWCSinfoRepository.Find(r => (r.wcstask_type.Equals(TaskType.TaskType_Box_Pallet_Outbound.ToString()) ||
                                    r.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Outbound.ToString())) && endStationNo.Contains(r.wcstask_endPoint));
                                //获取有多少条出库的任务
                                int LineExecucount = executingTask.Count(x => x.wcstask_state == TaskState.TaskState_Box_Out_Line_Executing.ToString()
                                || x.wcstask_state == TaskState.TaskState_Empty_Out_Line_Executing.ToString());
                                if (LineExecucount >= 8)
                                {
                                    //判断是否有对应层的出库任务,
                                    //申请入库任务
                                    WebResponseContent content = WMSApi.PostInboundRequstToWMS(barcode);
                                    if (content.Status)
                                    {
                                        WmsTaskInfo wmsTask = JsonConvert.DeserializeObject<WmsTaskInfo>(content.Data.ToString());
                                        wcsInfo = CommonFunction.AddWCSEmptyInboundTask(wmsTask, taskWCSinfoRepository);
                                        taskWCSinfoRepository.Add(wcsInfo, true);
                                        //WmsTaskInfo wmsTask = JsonConvert.DeserializeObject<WmsTaskInfo>(content.Data.ToString());
                                        //wcsInfo = CommonFunction.AddWCSEmptyInboundTask(wmsTask, taskWCSinfoRepository);
                                        //taskWCSinfoRepository.Add(wcsInfo, true);
                                        //client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 2);
                                        try
                                        {
                                            WmsTaskInfo wmsTask = JsonConvert.DeserializeObject<WmsTaskInfo>(content.Data.ToString());
                                            wcsInfo = CommonFunction.AddWCSEmptyInboundTask(wmsTask, taskWCSinfoRepository);
                                            taskWCSinfoRepository.Add(wcsInfo, true);
                                        }
                                        catch (Exception)
                                        {
                                            string str = $"这里可能是出现了并发的情况托盘码 åœ¨æ·»åŠ çš„æ—¶å€™æ‹¦æˆªçš„ã€{wcsInfo.wcstask_barcode}】" +
                                                         $"任务号【{wcsInfo.wcstask_taskNumber}】,任务状态:【{wcsInfo.wcstask_state}】";
                                            LogRecord.WriteLog(LogEnum.Errer, str.ToString());
                                            //throw;
                                        }
                                    }
                                    else
                                    {
                                        if (content.Message.Contains("当前托盘号已存在库里"))
                                        {
                                            client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 4);
                                        }
                                        throw new Exception("入库申请失败:" + content.Message);
                                    }
                                }
                                else
                                {
                                    //判断有多少条在缓存架的
                                    int RGV_Finishedcount = executingTask.Count(x =>
                                    x.wcstask_state != TaskState.TaskState_Box_Out_Line_Executing.ToString()
                                    && x.wcstask_state != TaskState.TaskState_Empty_Out_Line_Executing.ToString()
                                    && x.wcstask_state != TaskState.TaskState_Assigned.ToString());
                                    if (RGV_Finishedcount == 0)
                                    {
                                        // æ ¸å¿ƒï¼šèŽ·å–å½“å‰æ‰˜ç›˜å·çš„ä¸“å±žé”ï¼ŒåŒä¸€æ‰˜ç›˜å·ä¸²è¡Œå¤„ç†
                                        //申请入库任务
                                        WebResponseContent content = WMSApi.PostInboundRequstToWMS(barcode);
                                        if (content.Status)
                                        {
                                            try
                                            {
                                                WmsTaskInfo wmsTask = JsonConvert.DeserializeObject<WmsTaskInfo>(content.Data.ToString());
                                                wcsInfo = CommonFunction.AddWCSEmptyInboundTask(wmsTask, taskWCSinfoRepository);
                                                taskWCSinfoRepository.Add(wcsInfo, true);
                                            }
                                            catch (Exception)
                                            {
                                                string str = $"这里可能是出现了并发的情况托盘码,在添加的时候拦截的【{wcsInfo.wcstask_barcode}】" +
                                                             $"任务号【{wcsInfo.wcstask_taskNumber}】,任务状态:【{wcsInfo.wcstask_state}】";
                                                LogRecord.WriteLog(LogEnum.Errer, str.ToString());
                                                //throw;
                                            }
                                        }
                                        else
                                        {
                                            if (content.Message.Contains("当前托盘号已存在库里"))
                                            {
                                                client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 4);
                                            }
                                            else if (content.Message.Contains("暂无货位可分配"))
                                            {
                                            }
                                            else
                                            {
                                                throw new Exception("入库申请失败:" + content.Message);
                                            }
                                        }
                                    }
                                }
                            }
                            else
                            {
                                string str = $"这里可能是出现了并发的情况托盘码 åœ¨æŸ¥è¯¢çš„æ—¶å€™æ‹¦æˆªçš„【{wcsInfo.wcstask_barcode}】" +
                                        $"任务号【{wcsInfo.wcstask_taskNumber}】,任务状态:【{wcsInfo.wcstask_state}】";
                                LogRecord.WriteLog(LogEnum.Errer, str.ToString());
                            }
                        }
                    }
                    else
                    {
                        throw new Exception("入库申请失败:读取到的空托盘条码为空,读取内容:"+ barcode);
                        throw new Exception("入库申请失败:读取到的空托盘条码为空,读取内容:" + barcode);
                    }
                }
            }