From b174ea476eb1afd872985b2c261241a814e0185d Mon Sep 17 00:00:00 2001
From: xiaojiao <xiaojiao@kaokeziliao.com>
Date: 星期四, 12 三月 2026 09:55:27 +0800
Subject: [PATCH] 一次大的提交,涉及,wms,wcs,pda

---
 项目代码/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/ReInboundRequestAction.cs |   71 +++++++++++++++++++++++++++++------
 1 files changed, 58 insertions(+), 13 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 599fde6..89daf98 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"
@@ -1,5 +1,6 @@
 锘縰sing HslCommunication;
 using Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.Numeric;
 using System;
 using System.Collections.Generic;
@@ -17,6 +18,7 @@
 using WIDESEA_Services.Repositories;
 using WIDESEA_Services.Services;
 using WIDESEA_WCS.WCSClient;
+using static System.Collections.Specialized.BitVector32;
 
 namespace WIDESEA_WCS.Jobs.ConveyorLine.OutboundArea
 {
@@ -93,8 +95,10 @@
         //鑾峰彇浠诲姟锛岀敓鎴愬叆搴撲换鍔�
         public static void RGV_InboundKTP(IDt_TaskWCSinfoRepository taskWCSinfoRepository, IDt_TaskRGVinfoRepository taskRGVinfoRepository, PLCClient client)
         {
-            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();
+            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)
             {
@@ -134,11 +138,12 @@
                 if (!string.IsNullOrEmpty(barcode) && !"0".Equals(barcode) && load)
                 {
                     //鏍规嵁瀵瑰簲鐨勬墭鐩樻潯鐮佽繘琛屽幓涓嬪彂浠诲姟
-                    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();
+                    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)
                     {
-                        if(inboundTask.wcstask_state== TaskState.TaskState_Assigned.ToString())
+                        if(inboundTask.wcstask_state == TaskState.TaskState_Assigned.ToString())
                         {
                             ReInAssignedKTP(taskWCSinfoRepository, client, inboundTask);
                         }
@@ -168,12 +173,17 @@
                     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 LineExecucount = executingTask.Count(x => 
+                    x.wcstask_state == TaskState.TaskState_Box_Out_Line_Executing.ToString() ||
+                    x.wcstask_state == TaskState.TaskState_Empty_Out_Line_Executing.ToString());
+
+                if (LineExecucount >= 8)
                 {
                     //鍒ゆ柇鏄惁鏈夊搴斿眰鐨勫嚭搴撲换鍔★紝
-                    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()));
+                    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() 
+                    && x.wcstask_state != TaskState.TaskState_Empty_Out_Line_Executing.ToString()));
                     if (Assrscount == 0)
                     {
                         ReInboundRequestStationAction(taskWCSinfoRepository, client, wcsInfo);
@@ -182,13 +192,26 @@
                 else
                 {
                     //鍒ゆ柇鏈夊灏戞潯鍦ㄧ紦瀛樻灦鐨�
-                    int RGV_Finishedcount = executingTask.Count(x => x.wcstask_state != TaskState.TaskState_Box_Out_Line_Executing.ToString()
-                    && x.wcstask_state != TaskState.TaskState_Assigned.ToString());
+                    int RGV_Finishedcount = executingTask.Count(x => 
+                    x.wcstask_state != TaskState.TaskState_Box_Out_Line_Executing.ToString() &&
+                    x.wcstask_state != TaskState.TaskState_Empty_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()));
+                        //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()) 
+                        //&& x.wcstask_state != TaskState.TaskState_Empty_Out_Line_Executing.ToString());
+
+                        // 鑲栦郊 2026-01-20 淇敼涓婇潰濡備笅
+                        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()
+                        && x.wcstask_state != TaskState.TaskState_Empty_Out_Line_Executing.ToString());
+
+
                         if (Assrscount == 0)
                         {
                             ReInboundRequestStationAction(taskWCSinfoRepository, client, wcsInfo);
@@ -216,7 +239,25 @@
                     int logicValue = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Logic.ToString(), lineCode).ToString());
                     if ((logicValue == 1 || logicValue == 2))
                     {
+                        client.WriteValue(CLineInfoDBName.R_Line_TargetPosition.ToString(), ReInboundRequestStationNo, wcsInfo.wcstask_endPoint);
+                        client.WriteValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), ReInboundRequestStationNo, wcsInfo.wcstask_taskNumber);
+
+                        int TaskTarget = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_TargetPosition.ToString(), ReInboundRequestStationNo).ToString());
+                        int TaskNumber = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), ReInboundRequestStationNo).ToString());
+
+                        if (TaskTarget == 0 || TaskNumber == 0 || TaskTarget.ToString() != wcsInfo.wcstask_endPoint.ToString() || TaskNumber != wcsInfo.wcstask_taskNumber) // 鍐欏叆鍚� 濡傛灉璇诲彇涓嶅埌 閭e氨閲嶆柊鍐欏叆
+                        {
+                            client.WriteValue(CLineInfoDBName.R_Line_TargetPosition.ToString(), ReInboundRequestStationNo, wcsInfo.wcstask_endPoint);
+                            client.WriteValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), ReInboundRequestStationNo, wcsInfo.wcstask_taskNumber);
+                        }
+
                         WriteTaskInfo.WriteTaskInfoAction(wcsInfo, client, lineCode);
+                        client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 2);
+
+                        if (RgvDispatchJob.TempHK) // 濡傛灉杩欎釜涓篢rue浜� 閭e氨璇佹槑鍥炵┖鎵樼洏鐨勪紭鍏堢骇琚彁楂樹簡 鐒跺悗灏变細杩炵画鍥炲洓涓紝杩欓噷姣忓洖涓�涓氨瑕�+1 鐩村埌鍥炲洓涓簡 杩欎釜浼樺厛绾у氨娑堝け浜�
+                        {
+                            RgvDispatchJob.HKNumber += 1;
+                        }
                     }
                     string rfidResult = client.ReadValue(CLineInfoDBName.W_Line_Barcode.ToString(), lineCode).ToString();
                     if (!wcsInfo.wcstask_barcode.Equals(rfidResult))
@@ -235,9 +276,13 @@
                             wcsInfo.wcstask_dispatcherTime = DateTime.Now;
                             taskWCSinfoRepository.Update(wcsInfo, true);
                         }
+
                     }
                     else if (logicValue == 4 || logicValue == 5)
                     {
+                        //client.WriteValue(CLineInfoDBName.R_Line_TargetPosition.ToString(), ReInboundRequestStationNo, wcsInfo.wcstask_endPoint);
+                        //client.WriteValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), ReInboundRequestStationNo, wcsInfo.wcstask_taskNumber);
+
                         //鎻愬崌鏈烘墽琛屼腑
                         if (wcsInfo.wcstask_state == TaskState.TaskState_Empty_In_PLC_Finished.ToString())
                             return;

--
Gitblit v1.9.3