From 02dd21ca9a064b98aacfdc8c6ffec5a2b575967d Mon Sep 17 00:00:00 2001
From: xiaojiao <xiaojiao@kaokeziliao.com>
Date: 星期四, 26 三月 2026 09:54:56 +0800
Subject: [PATCH] PDA优化选配确认页面

---
 项目代码/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundAreaDispathAction.cs |   76 +++++++++++++++++++++++++++-----------
 1 files changed, 54 insertions(+), 22 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundAreaDispathAction.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundAreaDispathAction.cs"
index 97d65eb..ac3d80d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundAreaDispathAction.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundAreaDispathAction.cs"
@@ -1,5 +1,6 @@
 锘縰sing HslCommunication;
 using Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -95,6 +96,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 +230,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();
 
@@ -303,19 +325,28 @@
                 return BarcodeLockDict[barcode].Item1;
             }
         }
-
+        public static bool KtpHkflag = false; // 璁板綍绌烘墭鐩樺洖搴撶殑閿欒
+        public static DateTime curDate; // 璁板綍閿欒鍙戠敓鐨勬椂闂�
         public static void InboundRequestAction(IDt_TaskWCSinfoRepository taskWCSinfoRepository, IDt_TaskRGVinfoRepository taskRGVinfoRepository, PLCClient client)
         {
             try
             {
+                if (KtpHkflag)
+                {
+                    double secondsPassend = (DateTime.Now - curDate).TotalSeconds;
+                    if (secondsPassend > 6) 
+                    {
+                        client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 1);
+                        KtpHkflag = false;
+                    }
+                }
+
+
                 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)
                 {
                     string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), ReInboundRequestStationNo).ToString();
-
-                    // 杩欓噷瑕佸姞涓�涓垽鏂紝濡傛灉鎷垮洖鏉ョ殑绌烘墭鐩樻槸800001锛屼絾鏄垜鏈変竴鏉¤繖涓墭鐩樼殑浠诲姟鏄�800001杩樻病鏈夊埌鎸囧畾鐨勫帇瑁呭彴锛屾墍浠ユ垜瑕佸畬鎴愯繖涓换鍔�
-
 
                     if (!string.IsNullOrEmpty(barcode) && !"0".Equals(barcode))
                     {
@@ -332,11 +363,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)
                                     {
                                         //绉诲姩浠诲姟鍒板巻鍙茶〃
@@ -376,10 +408,6 @@
                                     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);
-                                        //client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 2);
                                         try
                                         {
                                             WmsTaskInfo wmsTask = JsonConvert.DeserializeObject<WmsTaskInfo>(content.Data.ToString());
@@ -468,6 +496,10 @@
             catch (Exception ex)
             {
                 client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 3);
+                KtpHkflag = true;
+                curDate = DateTime.Now; // 鎶ラ敊浜嗭紝璁板綍涓�涓嬭繖涓敊璇拰鏃堕棿锛�
+                LogRecord.WriteLog(LogEnum.Errer, DateTime.Now.ToString() + ex.Message.ToString());
+
                 Console.Out.WriteLine(DateTime.Now + ex.Message);
             }
         }

--
Gitblit v1.9.3