xiaojiao
2026-03-23 f02d3a8ffc05a10a64859b2a16d5d43c8abb0fb9
ÏîÄ¿´úÂë/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundAreaDispathAction.cs
@@ -95,6 +95,30 @@
                    LogRecord.WriteLog(LogEnum.Errer, str.ToString());
                }
            }
            // è¿™é‡Œè¦å†™ä¸€ä¸ª æœ‰ä¸€äº›æ‰˜ç›˜å·²ç»å‡ºåˆ°å¤–面去了 ä½†çŠ¶æ€è¿˜æ˜¯æå‡æœºè¿è¡Œä¸­ å¯¼è‡´åŽé¢çš„发不出去
            Dt_TaskWCSinfo OutTask = taskWCSinfoRepository.Find(r =>
            r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString()
            && endStationNo.Contains(r.wcstask_endPoint)
            ).FirstOrDefault();
            if (OutTask != null)
            {
                double secondsPassend = (DateTime.Now - OutTask.wcstask_dispatcherTime.Value).TotalSeconds;
                if (secondsPassend > 38) // å¦‚果大于38秒 è¿˜æ²¡ç”¨æå‡æœºå®Œæˆ å°±è¦æ‰‹åЍ
                {
                    string state = TaskState.TaskState_Box_Out_Line_Executing.ToString();
                    if (OutTask.wcstask_type == TaskType.TaskType_Empty_Pallet_Outbound.ToString())
                    {
                        state = TaskState.TaskState_Empty_Out_Line_Executing.ToString();
                    }
                    OutTask.wcstask_state = state;
                    OutTask.wcstask_dispatcherTime = DateTime.Now;
                    taskWCSinfoRepository.Update(OutTask, true);
                    string str = $"出库区 å‡ºåº“ æå‡æœºå·²ç»å†…的托盘已经出去 ä½†çŠ¶æ€è¿˜æ˜¯æå‡æœºæ‰§è¡Œä¸­... {DateTime.Now},托盘号:{OutTask.wcstask_barcode},任务号:{OutTask.wcstask_taskNumber}";
                    LogRecord.WriteLog(LogEnum.Errer, str.ToString());
                }
            }
        }
        public static void OutboundAreaDispathAction(IDt_TaskWCSinfoRepository taskWCSinfoRepository, IDt_TaskRGVinfoRepository taskRGVinfoRepository, PLCClient client)
        {
@@ -205,23 +229,20 @@
                        continue;
                    //同一层有执行中的任务不添加
                    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()));
                    //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;
                    // è‚–ä½¼ å°†ä¸Šé¢ä¿®æ”¹æˆä¸‹é¢
                    Dt_TaskWCSinfo executingTask = taskWCSinfoRepository.FindFirst(r =>
                    (r.wcstask_startPoint == wcsTask.wcstask_startPoint)
                    && (r.wcstask_state == TaskState.TaskState_RGV_Received.ToString()));
                    if (null != executingTask)
                        continue;
                    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 > 1)
                    //{
                    //    continue;
                    //}
                    //else
                    //{
                    //    wcsInfo = wcsTask;
                    //}
                    string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), wcsTask.wcstask_endPoint).ToString();
@@ -314,9 +335,6 @@
                {
                    string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), ReInboundRequestStationNo).ToString();
                    // è¿™é‡Œè¦åŠ ä¸€ä¸ªåˆ¤æ–­ï¼Œå¦‚æžœæ‹¿å›žæ¥çš„ç©ºæ‰˜ç›˜æ˜¯800001,但是我有一条这个托盘的任务是800001还没有到指定的压装台,所以我要完成这个任务
                    if (!string.IsNullOrEmpty(barcode) && !"0".Equals(barcode))
                    {
                        if (int.Parse(barcode) < 800000 || int.Parse(barcode) > 890000)
@@ -332,11 +350,12 @@
                            && (endStationNo.Contains(x.wcstask_endPoint)));
                            if (IsTask != null)
                            {
                                //在此完成该空托出库任务
                                // è¿™é‡Œè¦åŠ ä¸€ä¸ªåˆ¤æ–­ï¼Œå¦‚æžœæ‹¿å›žæ¥çš„ç©ºæ‰˜ç›˜æ˜¯800001,但是我有一条这个托盘的任务是800001还没有到指定的压装台,所以我要完成这个任务
                                // åœ¨æ­¤å®Œæˆè¯¥ç©ºæ‰˜å‡ºåº“任务
                                WebResponseContent content = taskWCSinfoRepository.DbContextBeginTransaction(() =>
                                {
                                    //上报WMS任务完成
                                    content = WMSApi.TellWmsTaskFinished(IsTask.wcstask_barcode);
                                    content = WMSApi.TellWmsTaskFinished(IsTask.wcstask_barcode,IsTask.wcstask_backUp_2);
                                    if (content.Status)
                                    {
                                        //移动任务到历史表