From f02d3a8ffc05a10a64859b2a16d5d43c8abb0fb9 Mon Sep 17 00:00:00 2001
From: xiaojiao <xiaojiao@kaokeziliao.com>
Date: 星期一, 23 三月 2026 11:13:36 +0800
Subject: [PATCH] 北京回长沙的最终版

---
 项目代码/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundRequestAction.cs |  110 ++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 89 insertions(+), 21 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundRequestAction.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundRequestAction.cs"
index 41b80df..df32697 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundRequestAction.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundRequestAction.cs"
@@ -5,6 +5,8 @@
 using System.Text;
 using System.Threading;
 using WIDESEA_Common;
+using WIDESEA_Common.LogEnum;
+using WIDESEA_Common.TaskEnum;
 using WIDESEA_Common.Tools;
 using WIDESEA_Core.Utilities;
 using WIDESEA_Entity.DomainModels;
@@ -19,8 +21,22 @@
     public partial class OutboundAreaDispatch
     {
 
+        public static void OutboundCZ_PLC(IDt_TaskWCSinfoRepository taskWCSinfoRepository, IDt_TaskRGVinfoRepository taskRGVinfoRepository, PLCClient client)
+        {
+            Dt_TaskWCSinfo hisTask = taskWCSinfoRepository.Find(r => 
+            r.wcstask_state == TaskState.TaskState_Box_Out_RGV_Finished.ToString()
+            || r.wcstask_state == TaskState.TaskState_Empty_Out_RGV_Finished.ToString()
+            || r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString())
+                .Where(r => OutboundStationLayerNo.Contains(r.wcstask_startPoint)
+                && (r.wcstask_type.Equals(TaskType.TaskType_Box_Pallet_Outbound.ToString()) || r.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Outbound.ToString()))).OrderBy(x => x.wcstask_dispatcherTime).FirstOrDefault();
+            if (null != hisTask)
+            {
+                OutboundRequestAction(taskWCSinfoRepository, client);
+            }
+        }
+
         /// <summary>
-        /// 鍑哄簱鍖虹┖鎵樼洏鍑哄簱
+        /// 鍑哄簱鍖虹┖鎵樼洏/瀹炴墭鍑哄簱
         /// </summary>
         /// <param name="taskWCSinfoRepository"></param>
         /// <param name="client"></param>
@@ -33,15 +49,28 @@
                 //鏌ヨ鍑哄簱寰呬换鍔�
                 Dt_TaskWCSinfo wcsInfo = null;
                 if (!string.IsNullOrEmpty(rfidResult) && !"0".Equals(rfidResult))
-                    wcsInfo = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == rfidResult && r.wcstask_state == TaskState.TaskState_RGV_Received.ToString());
+                    wcsInfo = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == rfidResult && (r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString()
+                    || r.wcstask_state == TaskState.TaskState_Box_Out_RGV_Finished.ToString() || r.wcstask_state == TaskState.TaskState_Empty_Out_RGV_Finished.ToString()));
                 //wcsInfo = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == rfidResult && r.wcstask_state == TaskState.TaskState_Assigned.ToString());
                 else
                 {
-                    wcsInfo = taskWCSinfoRepository.Find(r => r.wcstask_state == TaskState.TaskState_RGV_Received.ToString()
-                              && OutboundStationLayerNo.Contains(r.wcstask_startPoint)).OrderBy(r => r.wcstask_createTime).FirstOrDefault();
+                    wcsInfo = taskWCSinfoRepository.Find(r =>
+                    (r.wcstask_state == TaskState.TaskState_Box_Out_RGV_Finished.ToString()
+                    || r.wcstask_state == TaskState.TaskState_Empty_Out_RGV_Finished.ToString()
+                    || r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString())
+                    && OutboundStationLayerNo.Contains(r.wcstask_startPoint)).OrderBy(r => r.wcstask_createTime).FirstOrDefault();
                 }
                 if (null == wcsInfo)
                     return false;
+
+                // 杩欓噷鍔犱竴涓垽鏂�90201 鍒ゆ柇鎵樼洏鏄惁涓�0锛屽垽鏂槸鍚︾┖杞�
+
+                int Barcode = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), 90201.ToString()).ToString());
+                bool LoadSleep = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), 90201.ToString()).ToString());
+                if (Barcode != 0 || LoadSleep)
+                {
+                    return false;
+                }
 
                 //璇诲彇閫昏緫鎺у埗鍊�  鏌ョ湅绾夸綋鐘舵�侊紝鍑嗗缁欑嚎浣撲笅鍙戜换鍔′俊鎭�
                 int logicValue = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Logic.ToString(), lineCode).ToString());
@@ -49,34 +78,73 @@
                 if (logicValue == 1 || logicValue == 2)
                 {
                     if (!wcsInfo.wcstask_state.Contains("Executing"))
+                    {
+                        //鍐欏叆鎵樼洏鏉$爜
+                        bool writeTaskNumber = client.WriteValue(CLineInfoDBName.W_Line_TaskNumber.ToString(), wcsInfo.wcstask_startPoint, wcsInfo.wcstask_taskNumber);
+                        bool writeBarcode = client.WriteValue(CLineInfoDBName.W_Line_Barcode.ToString(), wcsInfo.wcstask_startPoint, wcsInfo.wcstask_barcode);
                         WriteTaskInfo.WriteTaskInfoAction(wcsInfo, client, lineCode);
+                    }
                 }
-                rfidResult = client.ReadValue(CLineInfoDBName.W_Line_Barcode.ToString(), lineCode).ToString();
-                if (!wcsInfo.wcstask_barcode.Equals(rfidResult))
-                    return true;
-                logicValue = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Logic.ToString(), lineCode).ToString());
-                //璇存槑绔欏彴宸茬粡鏀跺埌浠诲姟鏁版嵁锛岀瓑寰匴CS鐨勫惎鍔ㄦ寚浠�
-                if (logicValue == 3)
+                else if (logicValue == 3)
                 {
                     //鍚姩浠诲姟
-                    client.WriteValue(CLineInfoDBName.W_Line_Logic.ToString(), lineCode, 1);
+                    bool plclogicbool = client.WriteValue(CLineInfoDBName.W_Line_Logic.ToString(), lineCode, 1);
+                    if (plclogicbool)
+                    {
+                        string state = TaskState.TaskState_HoisterExecuting.ToString();
+                        if (wcsInfo.wcstask_state == state)
+                            return true;
+                        wcsInfo.wcstask_state = state;
+                        wcsInfo.wcstask_dispatcherTime = DateTime.Now;
+                        taskWCSinfoRepository.Update(wcsInfo, true);
+                    }
                 }
-                else if (logicValue == 4 || logicValue == 5)
+                else if (logicValue == 5)
                 {
-                    string state = TaskState.TaskState_HoisterExecuting.ToString();
-                    if (wcsInfo.wcstask_state == state)
-                        return true;
+                    string taskplc_Result = client.ReadValue(CLineInfoDBName.W_Line_Barcode.ToString(), lineCode).ToString();
+                    if (taskplc_Result == wcsInfo.wcstask_barcode)
+                    {
+                        string state = TaskState.TaskState_Box_Out_Line_Executing.ToString();
+                        if (wcsInfo.wcstask_type == TaskType.TaskType_Empty_Pallet_Outbound.ToString())
+                        {
+                            state = TaskState.TaskState_Empty_Out_Line_Executing.ToString();
+                        }
+                        if (wcsInfo.wcstask_state == state)
+                            return true;
+                        wcsInfo.wcstask_state = state;
+                        wcsInfo.wcstask_dispatcherTime = DateTime.Now;
+                        taskWCSinfoRepository.Update(wcsInfo, true);
+                    }
+                    else
+                    {
+                        Dt_TaskWCSinfo wcsInfoPLC = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == rfidResult
+                        && r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString());
 
-                    if (!WriteRGVState(client, true))
-                        return true;
-                    wcsInfo.wcstask_state = state;
-                    wcsInfo.wcstask_dispatcherTime = DateTime.Now;
-                    taskWCSinfoRepository.Update(wcsInfo, true);
+                        if (wcsInfoPLC != null)
+                        {
+                            string state = TaskState.TaskState_Box_Out_Line_Executing.ToString();
+                            if (wcsInfoPLC.wcstask_type == TaskType.TaskType_Empty_Pallet_Outbound.ToString())
+                            {
+                                state = TaskState.TaskState_Empty_Out_Line_Executing.ToString();
+                            }
+
+
+                            if (wcsInfoPLC.wcstask_state == state)
+                                return true;
+                            wcsInfoPLC.wcstask_state = state;
+                            wcsInfoPLC.wcstask_dispatcherTime = DateTime.Now;
+                            taskWCSinfoRepository.Update(wcsInfoPLC, true);
+                        }
+
+
+                    }
+
+
                 }
             }
             catch (Exception ex)
             {
-                WriteLog.Info(lineCode).Write($"{ DateTime.Now }鍑哄簱绔欏彴璋冨害澶辫触:{ex.Message}", lineCode);
+                WriteLog.Info(lineCode).Write($"{DateTime.Now}鍑哄簱绔欏彴璋冨害澶辫触:{ex.Message}", lineCode);
             }
             return true;
         }

--
Gitblit v1.9.3