From 44b83f33ff3a35edced78d89927a734f19de81ba Mon Sep 17 00:00:00 2001
From: xiaojiao <xiaojiao@kaokeziliao.com>
Date: 星期日, 28 十二月 2025 18:00:02 +0800
Subject: [PATCH] 更改空托入库,更改出库测量对应楼层禁用,

---
 项目代码/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/ReInboundRequestAction.cs |  134 +++++++++++++++++++++++++++++---------------
 1 files changed, 87 insertions(+), 47 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/ReInboundRequestAction.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/ReInboundRequestAction.cs"
index f9f2740..599fde6 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/ReInboundRequestAction.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/ReInboundRequestAction.cs"
@@ -93,23 +93,30 @@
         //鑾峰彇浠诲姟锛岀敓鎴愬叆搴撲换鍔�
         public static void RGV_InboundKTP(IDt_TaskWCSinfoRepository taskWCSinfoRepository, IDt_TaskRGVinfoRepository taskRGVinfoRepository, PLCClient client)
         {
-            Dt_TaskWCSinfo inboundTask = taskWCSinfoRepository.FindFirst(r => OutboundStationLayerNo.Contains(r.wcstask_endPoint) && r.wcstask_type ==
-                                TaskType.TaskType_Empty_Pallet_Inbound.ToString() && r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString());
-            if(inboundTask == null)
+            Dt_TaskWCSinfo inboundTask = taskWCSinfoRepository.Find(r => OutboundStationLayerNo.Contains(r.wcstask_endPoint) && r.wcstask_type ==
+                                TaskType.TaskType_Empty_Pallet_Inbound.ToString() && r.wcstask_state == TaskState.TaskState_Empty_In_PLC_Finished.ToString()).OrderBy(x => x.wcstask_dispatcherTime).FirstOrDefault();
+
+            if (inboundTask != null)
             {
-                //鏌ユ壘鏄惁鏈夎鎵樼洏鏉$爜浠诲姟锛屽鏋滄病鏈夊垯杩涜娣诲姞RGV浠诲姟
-                Dt_TaskRGVinfo rgvInfo = taskRGVinfoRepository.FindFirst(r => r.rgvtask_barCode == inboundTask.wcstask_barcode
+                //鍒ゆ柇鏄惁鏈夎揣锛屾湁鎵樼洏鏉$爜
+                string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), inboundTask.wcstask_startLocation).ToString();
+                bool load = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), inboundTask.wcstask_startLocation).ToString());
+                if (!string.IsNullOrEmpty(barcode) && !"0".Equals(barcode) && load && inboundTask.wcstask_barcode== barcode)
+                {
+                    //鏌ユ壘鏄惁鏈夎鎵樼洏鏉$爜浠诲姟锛屽鏋滄病鏈夊垯杩涜娣诲姞RGV浠诲姟
+                    Dt_TaskRGVinfo rgvInfo = taskRGVinfoRepository.FindFirst(r => r.rgvtask_barCode == inboundTask.wcstask_barcode
                 && r.rgvtask_wcsTaskNumber == inboundTask.wcstask_taskNumber);
 
-                if (null == rgvInfo)
-                {
-                    string rgvTaskType = RGVTaskType.RgvTaskType_Inbound.ToString();
-                    
-                    rgvInfo = GetRGVTask(taskRGVinfoRepository, inboundTask, rgvTaskType);
-                    taskRGVinfoRepository.Add(rgvInfo, true);
+                    if (null == rgvInfo)
+                    {
+                        string rgvTaskType = RGVTaskType.RgvTaskType_Inbound.ToString();
 
-                    inboundTask.wcstask_state = TaskState.TaskState_RGV_Received.ToString();
-                    taskWCSinfoRepository.Update(inboundTask, x => x.wcstask_state, true);
+                        rgvInfo = GetRGVTask(taskRGVinfoRepository, inboundTask, rgvTaskType);
+                        taskRGVinfoRepository.Add(rgvInfo, true);
+
+                        inboundTask.wcstask_state = TaskState.TaskState_RGV_Received.ToString();
+                        taskWCSinfoRepository.Update(inboundTask, x => x.wcstask_state, true);
+                    }
                 }
             }
 
@@ -121,46 +128,73 @@
         {
             try
             {
-                //鍙互杩涜鍒ゆ柇涓嬪彂鍏ュ簱浠诲姟
-                Dt_TaskWCSinfo inboundTask = taskWCSinfoRepository.FindFirst(r => OutboundStationLayerNo.Contains(r.wcstask_endPoint) && r.wcstask_type ==
-                                TaskType.TaskType_Empty_Pallet_Inbound.ToString() && r.wcstask_state == TaskState.TaskState_Assigned.ToString());
-                if(inboundTask != null)
+                //鑾峰彇鏄惁鏈夎揣
+                bool load = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), ReInboundRequestStationNo).ToString());
+                string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), ReInboundRequestStationNo).ToString();
+                if (!string.IsNullOrEmpty(barcode) && !"0".Equals(barcode) && load)
                 {
-                    //鑾峰彇杞﹁酱鍑哄簱
-                    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());
-                    if (LineExecucount >= 4)
+                    //鏍规嵁瀵瑰簲鐨勬墭鐩樻潯鐮佽繘琛屽幓涓嬪彂浠诲姟
+                    Dt_TaskWCSinfo inboundTask = taskWCSinfoRepository.Find(r => r.wcstask_barcode == barcode).Where(r => r.wcstask_type ==
+                                TaskType.TaskType_Empty_Pallet_Inbound.ToString() && (r.wcstask_state == TaskState.TaskState_Assigned.ToString() || r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString())).FirstOrDefault();
+                    if(inboundTask != null)
                     {
-                        //鍒ゆ柇鏄惁鏈夊搴斿眰鐨勫嚭搴撲换鍔★紝
-                        int Assrscount = executingTask.Count(x => x.wcstask_endLocation == inboundTask.wcstask_startLocation && (x.wcstask_state != TaskState.TaskState_Box_Out_Line_Executing.ToString()
-                        || x.wcstask_state == TaskState.TaskState_Assigned.ToString()));
-                        if (Assrscount == 0)
+                        if(inboundTask.wcstask_state== TaskState.TaskState_Assigned.ToString())
+                        {
+                            ReInAssignedKTP(taskWCSinfoRepository, client, inboundTask);
+                        }
+                        else
                         {
                             ReInboundRequestStationAction(taskWCSinfoRepository, client, inboundTask);
                         }
                     }
-                    else
+                }
+
+
+            }
+            catch (Exception ex)
+            {
+                WriteLog.Info(ReInboundRequestStationNo).Write($"{DateTime.Now}鍥炲簱绔欏彴浠诲姟涓嬪彂,璋冨害澶辫触:{ex.Message}", ReInboundRequestStationNo);
+                throw;
+            }
+        }
+
+
+        public static void ReInAssignedKTP(IDt_TaskWCSinfoRepository taskWCSinfoRepository,  PLCClient client, Dt_TaskWCSinfo wcsInfo)
+        {
+            try
+            {
+                //鑾峰彇杞﹁酱鍑哄簱
+                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());
+                if (LineExecucount >= 4)
+                {
+                    //鍒ゆ柇鏄惁鏈夊搴斿眰鐨勫嚭搴撲换鍔★紝
+                    int Assrscount = executingTask.Count(x => x.wcstask_endLocation == wcsInfo.wcstask_startLocation && (x.wcstask_state != TaskState.TaskState_Box_Out_Line_Executing.ToString()
+                    || x.wcstask_state == TaskState.TaskState_Assigned.ToString()));
+                    if (Assrscount == 0)
                     {
-                        //鍒ゆ柇鏈夊灏戞潯鍦ㄧ紦瀛樻灦鐨�
-                        int RGV_Finishedcount = executingTask.Count(x => x.wcstask_state != TaskState.TaskState_Box_Out_Line_Executing.ToString()
-                        && x.wcstask_state != TaskState.TaskState_Assigned.ToString());
-                        if (RGV_Finishedcount == 0)
+                        ReInboundRequestStationAction(taskWCSinfoRepository, client, wcsInfo);
+                    }
+                }
+                else
+                {
+                    //鍒ゆ柇鏈夊灏戞潯鍦ㄧ紦瀛樻灦鐨�
+                    int RGV_Finishedcount = executingTask.Count(x => x.wcstask_state != TaskState.TaskState_Box_Out_Line_Executing.ToString()
+                    && x.wcstask_state != TaskState.TaskState_Assigned.ToString());
+                    if (RGV_Finishedcount == 0)
+                    {
+                        //鍙互杩涜鍒ゆ柇涓嬪彂鍏ュ簱浠诲姟
+                        int Assrscount = executingTask.Count(x => x.wcstask_endLocation == wcsInfo.wcstask_startLocation && (x.wcstask_state != TaskState.TaskState_Box_Out_Line_Executing.ToString()
+                        || x.wcstask_state == TaskState.TaskState_Assigned.ToString()));
+                        if (Assrscount == 0)
                         {
-                            //鍙互杩涜鍒ゆ柇涓嬪彂鍏ュ簱浠诲姟
-                            int Assrscount = executingTask.Count(x => x.wcstask_endLocation == inboundTask.wcstask_startLocation && (x.wcstask_state != TaskState.TaskState_Box_Out_Line_Executing.ToString()
-                            || x.wcstask_state == TaskState.TaskState_Assigned.ToString()));
-                            if (Assrscount == 0)
-                            {
-                                ReInboundRequestStationAction(taskWCSinfoRepository, client, inboundTask);
-                            }
+                            ReInboundRequestStationAction(taskWCSinfoRepository, client, wcsInfo);
                         }
                     }
                 }
-
-                
             }
             catch (Exception ex)
             {
@@ -168,9 +202,7 @@
                 throw;
             }
 
-
         }
-
 
 
         public static void ReInboundRequestStationAction(IDt_TaskWCSinfoRepository taskWCSinfoRepository, PLCClient client, Dt_TaskWCSinfo wcsInfo)
@@ -194,14 +226,22 @@
                     if (logicValue == 3)
                     {
                         //鍚姩浠诲姟
-                        client.WriteValue(CLineInfoDBName.W_Line_Logic.ToString(), lineCode, 1);
+                        bool logicbool= client.WriteValue(CLineInfoDBName.W_Line_Logic.ToString(), lineCode, 1);
+                        if (logicbool)
+                        {
+                            if (wcsInfo.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString())
+                                return;
+                            wcsInfo.wcstask_state = TaskState.TaskState_HoisterExecuting.ToString();
+                            wcsInfo.wcstask_dispatcherTime = DateTime.Now;
+                            taskWCSinfoRepository.Update(wcsInfo, true);
+                        }
                     }
                     else if (logicValue == 4 || logicValue == 5)
                     {
                         //鎻愬崌鏈烘墽琛屼腑
-                        if (wcsInfo.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString())
+                        if (wcsInfo.wcstask_state == TaskState.TaskState_Empty_In_PLC_Finished.ToString())
                             return;
-                        wcsInfo.wcstask_state = TaskState.TaskState_HoisterExecuting.ToString();
+                        wcsInfo.wcstask_state = TaskState.TaskState_Empty_In_PLC_Finished.ToString();
                         wcsInfo.wcstask_dispatcherTime = DateTime.Now;
                         taskWCSinfoRepository.Update(wcsInfo, true);
                     }

--
Gitblit v1.9.3