From 1cd9280bbecf557f8978ad3839f14827ff9f4d34 Mon Sep 17 00:00:00 2001
From: Admin <Admin@ADMIN>
Date: 星期三, 17 十二月 2025 22:23:26 +0800
Subject: [PATCH] 最新

---
 项目代码/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundRequestAction.cs |   77 +++++++++++++++++++++++++++++++-------
 1 files changed, 62 insertions(+), 15 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 962fb47..2ad7646 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,7 @@
 using System.Text;
 using System.Threading;
 using WIDESEA_Common;
+using WIDESEA_Common.TaskEnum;
 using WIDESEA_Common.Tools;
 using WIDESEA_Core.Utilities;
 using WIDESEA_Entity.DomainModels;
@@ -18,6 +19,22 @@
 {
     public partial class OutboundAreaDispatch
     {
+
+        public static void OutboundCZ_PLC(IDt_TaskWCSinfoRepository taskWCSinfoRepository,IDt_TaskRGVinfoRepository taskRGVinfoRepository, PLCClient client)
+        {
+            //杞﹁酱鍦ㄥ嚭搴撳彛涓嬪彂杈撻�佺嚎浠诲姟
+            Dt_TaskWCSinfo hisTask = taskWCSinfoRepository.FindFirst(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)));
+            if (null != hisTask)
+            {
+                if (hisTask.wcstask_type.Equals(TaskType.TaskType_Box_Pallet_Outbound.ToString()) || hisTask.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Outbound.ToString()))
+                {
+                    OutboundRequestAction(taskWCSinfoRepository, client);
+                }
+
+
+            }
+        }
 
         /// <summary>
         /// 鍑哄簱鍖虹┖鎵樼洏鍑哄簱
@@ -33,11 +50,12 @@
                 //鏌ヨ鍑哄簱寰呬换鍔�
                 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()));
                 //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()
+                    wcsInfo = taskWCSinfoRepository.Find(r => r.wcstask_state == TaskState.TaskState_Box_Out_RGV_Finished.ToString()
                               && OutboundStationLayerNo.Contains(r.wcstask_startPoint)).OrderBy(r => r.wcstask_createTime).FirstOrDefault();
                 }
                 if (null == wcsInfo)
@@ -49,26 +67,55 @@
                 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)
                 {
-                    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);
+                    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_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 (wcsInfoPLC != null)
+                        {
+                            string state = TaskState.TaskState_Box_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)

--
Gitblit v1.9.3