From 18828b299d8208cfba1e70b08ba86b4e9c5b91f5 Mon Sep 17 00:00:00 2001
From: Admin <Admin@ADMIN>
Date: 星期二, 25 十一月 2025 14:51:09 +0800
Subject: [PATCH] 优化入库效率

---
 代码管理/WCS/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SpeStackerCraneJob/SpeStackerCraneJob.cs |  219 ++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 170 insertions(+), 49 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SpeStackerCraneJob/SpeStackerCraneJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SpeStackerCraneJob/SpeStackerCraneJob.cs"
index 6790f09..a3943da 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SpeStackerCraneJob/SpeStackerCraneJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SpeStackerCraneJob/SpeStackerCraneJob.cs"
@@ -64,6 +64,8 @@
         {
             try
             {
+                //WriteLog.Write_Log("23");
+
                 SpeStackerCrane speStackerCrane = (SpeStackerCrane)context.JobDetail.JobDataMap.Get("JobParams");
                 if (speStackerCrane != null)
                 {
@@ -76,6 +78,25 @@
                         {
                             CommonStackerCrane_AGVTaskCompletedEventHandler(getStackerObject, speStackerCrane);
                         }
+
+                        //鍒ゆ柇褰撳墠璁惧鏄叆搴撹繕鏄嚭搴�
+                        if (GetDeviceAddress.OutbounMotherChildCartbool(speStackerCrane.DeviceCode))
+                        {
+                            //鍒ゆ柇褰撳墠瀹夊叏闂ㄦ槸鍚︿负缁胯壊鐏�
+                            if (GetDeviceAddress.ReadAqmDecicStice(1))
+                            {
+                                return null;
+                            }
+                        }
+                        else
+                        {
+                            //鍒ゆ柇鍏ュ簱绔畨鍏ㄩ棬鏄惁姝e父
+                            if (GetDeviceAddress.ReadAqmDecicStice(2))
+                            {
+                                return null;
+                           }
+                        }
+
 
                         if (getStackerObject.RgvCraneAutoStatusValue == RgvCraneAutoStatus.Automatic &&
                         getStackerObject.StaclerkJobJobStatusValue == RGV_Rgvtaskstutas.Ready && getStackerObject.RgvCraneWorkStatusValue == RGVStepprocess.NoAction)
@@ -139,8 +160,15 @@
             }
             else if (getStackerObject.StaclerkJobJobStatusValue == RGV_Rgvtaskstutas.AbnormalCompletion && getStackerObject.CurrentRgvtaskid != 0 && getStackerObject.CurrentRgvtaskid != 30001)
             {
+
+                //淇敼浠诲姟鐘舵�佷负寮傚父瀹屾垚                                              
+                _taskService.HandleInAbnormal(getStackerObject.CurrentRgvtaskid);   
+
                 //鍐欏叆寮傚父瀹屾垚鎶ヨ淇℃伅
-                speStackerCrane.Communicator.Write<short>("DB101.36", 1);
+                //speStackerCrane.Communicator.Write<short>("DB101.36", 1);   //鍐欏叆鎶ヨ
+
+                speStackerCrane.SetValue(RGV_taskcoDBName.RGV_taskcomplete, 1);
+                speStackerCrane.SetValue(RGV_taskcoDBName.RGV_taskcomplete, 0);
             }
         }
         #endregion
@@ -179,7 +207,7 @@
                     => GoodsPlacedCorridor(RGVTaskdevice),    //瀛愯溅鏀捐揣浠诲姟(宸插畬鎴�)
 
                 ((int)RGVEquipment.Mothertrailer, RgvEquipmentStatus.HasCargo)
-                    => MotherVehicleMovement(RGVTaskdevice),        //锛堝凡瀹屾垚锛�
+                    => MotherVehicleMovement(RGVTaskdevice),        //姣嶈溅绉诲姩锛堝凡瀹屾垚锛�
 
                 _ => null
             };
@@ -190,23 +218,32 @@
         public Dt_Task? ForkliftUnloading(AGVStation RGVTaskdevice)
         {
             Dt_Task dt_Task = _taskService.GetInkouFinhuoTask(RGVTaskdevice.ChildPosiDeviceCode);
-
+            if (dt_Task == null) return null;
             //鍒ゆ柇HCJ鏄惁鏈夎揣
             if (GetDeviceAddress.HCJIsstock(dt_Task.NextAddress))
             {
                 //鍒ゆ柇瀛愯溅鏄惁鍦ㄦ帴椹冲彴涓�
                 var zichestation = _agvStationService.OutGetZicheDeepHCJ(1061);
                 int ziche = GetDeviceAddress.GetEquipmentlocation(zichestation.ChildPosiDeviceCode);
-                if ((ziche == zichestation.WaitmomentOne || ziche == zichestation.WaitmomentTwo || ziche == zichestation.MotherCarDeviceCode || ziche == zichestation.MotherCardeputy || ziche == zichestation.HCJStorageaddress) && ziche != 1021)
+                if ((ziche == zichestation.WaitmomentOne || ziche == zichestation.WaitmomentTwo || ziche == zichestation.MotherCarDeviceCode || ziche == zichestation.MotherCardeputy || ziche == zichestation.HCJStorageaddress) && ziche != 1021 && ziche !=0)
                 {
                     //鑾峰彇杩欎釜鎺ラ┏鍙版槸鍚︽湁鍙栬揣浠诲姟
                     Dt_Task zitask = _taskService.ViceChariotPickupTask2(RGVTaskdevice.ChildPosiDeviceCode);
                     if (zitask == null)
                     {
-
                         return dt_Task;
                     }
                 }
+                else
+                {
+                    //濡傛灉娌¤揣锛屽垯涓嬪彂绉诲姩浠诲姟
+                    RGVMovetask(RGVTaskdevice.HCJStorageaddress, RGVTaskdevice.ChildPosiDeviceCode);
+                }
+            }
+            else
+            {
+                //濡傛灉娌¤揣锛屽垯涓嬪彂绉诲姩浠诲姟
+                RGVMovetask(RGVTaskdevice.HCJStorageaddress, RGVTaskdevice.ChildPosiDeviceCode);
             }
             return null;
         }
@@ -218,6 +255,10 @@
             //鑾峰彇瀛愯溅鍙栬揣浠诲姟
             Dt_Task dt_Task = _taskService.ViceChariotPickupTask(RGVTaskdevice.ChildPosiDeviceCode);
             if (dt_Task == null) return null;
+
+            //鍒ゆ柇HCJ绔欏彴鏄惁鏈夎揣
+            if (GetDeviceAddress.HCJIsstock(dt_Task.CurrentAddress)) return null;
+
             if (RGVTaskdevice.Station_Area == 6)    //澶栦晶杩涘彇璐э紝鍒欓渶瑕佸垽鏂瓙杞﹀綋鍓嶄綅缃�
             {
                 if (getStackerObject.RGVCurrentlocation == RGVTaskdevice.WaitmomentOne)
@@ -244,22 +285,19 @@
                                 }
                                 else if (mu2 == InMotherVehicle.Motherinlaw)
                                 {
-                                    RGVMovetask(InMotherVehicle.ZicheMotherinlaw, InMotherVehicle.ChildPosiDeviceCode);
+
+                                    //鍒ゆ柇姣嶈溅鏄惁鏈変换鍔�
+                                    Dt_Task muche1task = _taskService.MothermachinemovementTask2(InMotherVehicle.ChildPosiDeviceCode);
+                                    if (muche1task == null)
+                                    {
+                                        RGVMovetask(InMotherVehicle.ZicheMotherinlaw, InMotherVehicle.ChildPosiDeviceCode);
+                                    }
                                 }
                             }
                         }
                         //=============================鏂板褰撳幓鍙栬揣鏃惰繘琛屽垽鏂贩閬擄紝鐪嬭兘涓嶈兘鎻愬墠鎷夊嚭姣嶈溅
                         return dt_Task;
                     }
-                    //鍘绘帀鍘熷洜锛氬湪璇ュ嚭瀛愯溅鍘诲彇璐э紝鍙洿鎺ョ┛杩囨棤璐ф瘝杞︼紝鎷栬溅
-                    /*else 
-                    {
-                        Dt_Task task = _taskService.MothermachinemovementTask2(RGVTaskdevice.ChildPosiDeviceCode);
-                        if (task == null)
-                        {
-                            RGVMovetask(mu1rgv.Motherinlaw, mu1rgv.ChildPosiDeviceCode);
-                        }
-                    }*/
 
                 }
                 else if (getStackerObject.RGVCurrentlocation == RGVTaskdevice.WaitmomentTwo)    //鍒欓渶瑕佸垽鏂袱涓瘝杞︾殑浣嶅瓙
@@ -324,6 +362,29 @@
                     {
                         return dt_Task;
                     }
+
+                    //鍒ゆ柇鍐呬晶鏄惁鏈夎揣锛屾槸鍚︽湁浠诲姟
+
+                    if (int.Parse(dt_Task.TargetAddress) == (int)StorageAisleEnum.LaneThree || int.Parse(dt_Task.TargetAddress) == (int)StorageAisleEnum.LaneFour)
+                    {
+                        int taraddress = int.Parse(dt_Task.TargetAddress);
+                        var InMotherVehicle = _agvStationService.ObtainCcordingTunnel(taraddress);    //鑾峰彇鍒伴渶瑕佸叆搴撶殑姣嶈溅(2宸烽亾)
+                        int mu2 = GetDeviceAddress.GetEquipmentlocation(InMotherVehicle.ChildPosiDeviceCode); //姝ゆ椂鐨凴GV搴旇鏃犺揣
+                        if (GetDeviceAddress.Mucheywhaddres(InMotherVehicle.ChildPosiDeviceCode))   //鍒ゆ柇鏃犺揣
+                        {
+                            if (mu2 == InMotherVehicle.Motherinlaw)
+                            {
+                                //鍒ゆ柇姣嶈溅鏄惁鏈変换鍔�
+                                Dt_Task muche1task = _taskService.MothermachinemovementTask2(InMotherVehicle.ChildPosiDeviceCode);
+                                if (muche1task == null)
+                                {
+                                    RGVMovetask(InMotherVehicle.ZicheMotherinlaw, InMotherVehicle.ChildPosiDeviceCode);
+                                }
+                            }
+                            
+                        }
+                    }
+
 
                 }
                 else if (getStackerObject.RGVCurrentlocation == RGVTaskdevice.WaitmomentTwo)    //闇�瑕佸垽鏂�3宸烽亾姣嶈溅鏄惁鍦ㄥ彇璐х珯鍙�
@@ -434,7 +495,13 @@
                     }
                     else
                     {
-                        RGVMovetask(Muche.ZicheMotherinlaw, Muche.ChildPosiDeviceCode);  //濡傛灉娌℃湁浠诲姟锛屽垯鍙互杩涜绉诲姩鍑烘潵
+                        //鍒ゆ柇姣嶈溅鏄惁鏈変换鍔�
+                        Dt_Task _Task1 = _taskService.MothermacTask(Muche.ChildPosiDeviceCode);
+                        if (_Task1 == null)
+                        {
+                            RGVMovetask(Muche.ZicheMotherinlaw, Muche.ChildPosiDeviceCode);  //濡傛灉娌℃湁浠诲姟锛屽垯鍙互杩涜绉诲姩鍑烘潵
+                        }
+                            
                     }
                 }
             }
@@ -480,7 +547,12 @@
                 Dt_Task task = _taskService.MothermachinemovementTask2(Muche2.ChildPosiDeviceCode);   //鑾峰彇鍒版瘝杞︾Щ鍔ㄤ换鍔�
                 if (task == null)
                 {
-                    RGVMovetask(Muche2.ZicheMotherinlaw, Muche2.ChildPosiDeviceCode);  //濡傛灉娌℃湁浠诲姟锛屽垯鍙互杩涜绉诲姩鍑烘潵
+                    Dt_Task _Task1 = _taskService.MothermacTask(Muche2.ChildPosiDeviceCode);
+                    if (_Task1 == null)
+                    {
+                        RGVMovetask(Muche2.ZicheMotherinlaw, Muche2.ChildPosiDeviceCode);  //濡傛灉娌℃湁浠诲姟锛屽垯鍙互杩涜绉诲姩鍑烘潵
+                    }
+                        
                 }
             }
             return null;
@@ -511,7 +583,7 @@
                 AGVStation Muche2 = _agvStationService.GetMothervehicle(aGVStation.MotherCardeputy);    //鍐呬晶姣嶈溅
                 int mucheaddre2 = GetDeviceAddress.GetEquipmentlocation(Muche2.ChildPosiDeviceCode);
 
-                if ((neizichecurraddres == neiziche.WaitmomentOne || neizichecurraddres == neiziche.WaitmomentTwo) && task == null && mucheaddre1 == Muche.Motherinlaw && mucheaddre2 == Muche2.Motherinlaw)
+                if ((neizichecurraddres == neiziche.WaitmomentOne || neizichecurraddres == neiziche.WaitmomentTwo) && task == null && neizichecurraddres != neiziche.HCJStorageaddress && mucheaddre1 == Muche.Motherinlaw && mucheaddre2 == Muche2.Motherinlaw)
                 {
                     return _Task;
                 }
@@ -624,8 +696,14 @@
             Dt_Task Muche2Task = _taskService.ObtainMuChetask(ZicheinnerSide.MotherCardeputy.ToString());
             if (Muche2Task == null) return null;
 
+            //鑾峰彇瀛愯溅鏄惁鏈変换鍔�
             Dt_Task zicheTASK = _taskService.GetChariotTaskBool(ZicheinnerSide.ChildPosiDeviceCode);
             if (zicheTASK != null) return null;
+
+            //鑾峰彇2宸烽亾瀛愯溅鏄惁鏈変换鍔�
+            var muche1 = _agvStationService.GetMothervehicle(ZicheinnerSide.MotherCarDeviceCode);
+            Dt_Task Muche1 = _taskService.GetChariotTaskBool(muche1.ChildPosiDeviceCode.ToString());
+            if(Muche1!=null) return null;
 
             return Muche2Task;
         }
@@ -635,15 +713,11 @@
             Dt_Task Muche3Task = _taskService.ObtainMuChetask(ZicheinnerSide.MotherCarDeviceCode.ToString());
             if (Muche3Task == null) return null;
 
-            //鍒ゆ柇瀛愯溅鏄惁鏈夋湁闇�瑕佸彇璐х殑浠诲姟
-            Dt_Task zicheTASK = _taskService.GetChariotTaskBool(ZicheinnerSide.ChildPosiDeviceCode);
+            //鍒ゆ柇瀛愯溅鏄惁鏈夎鍙朒CJ浠诲姟
+            Dt_Task zicheTASK = _taskService.GetHCJTaskBool(ZicheinnerSide.ChildPosiDeviceCode, ZicheinnerSide.HCJStorageaddress);
             if (zicheTASK != null) return null;
 
-            if (curraddZiChe == ZicheinnerSide.WaitmomentTwo || curraddZiChe == ZicheinnerSide.WaitmomentOne)
-            {
-                return Muche3Task;
-            }
-            return null;
+            return Muche3Task;
         }
         public Dt_Task? OutboundSideAisle4(int curraddZiChe, AGVStation ZicheinnerSide)
         {
@@ -651,25 +725,16 @@
             Dt_Task Muche4Task = _taskService.ObtainMuChetask(ZicheinnerSide.MotherCardeputy.ToString());
             if (Muche4Task == null) return null;
 
+            //鍒ゆ柇鏄惁鏈夐渶瑕佸彇HCJ鐨勪换鍔�
             Dt_Task zicheTASK = _taskService.GetChariotTaskBool(ZicheinnerSide.ChildPosiDeviceCode);
             if (zicheTASK != null) return null;
 
-            if (curraddZiChe == ZicheinnerSide.WaitmomentOne)
-            {
+            //鍒ゆ柇3宸烽亾鏄惁鏈夊嚭搴撶殑浠诲姟
+            var muche3 = _agvStationService.GetMothervehicle(ZicheinnerSide.MotherCarDeviceCode);
+            Dt_Task muchetask = _taskService.OutMothermaTask(muche3.ChildPosiDeviceCode);
+            if (muchetask != null) return null;
 
-            }
-
-            
-
-            
-
-
-
-            if ( || curraddZiChe == ZicheinnerSide.WaitmomentTwo)
-            {
-                return Muche4Task;
-            }
-            return null;
+            return Muche4Task;
         }
 
         #endregion
@@ -700,6 +765,16 @@
                             if (muche2addres == muchestation.Motherinlaw)
                             {
                                 return dtTasks;
+                            }
+                            else
+                            {
+                                //濡傛灉姣嶈溅鏃犺揣锛屽垯涓嬪埌閲岄潰鍘�
+                                bool NoCargobool = GetDeviceAddress.Mucheywhaddres(muchestation.ChildPosiDeviceCode);
+                                if (NoCargobool)
+                                {
+                                    //涓嬪彂姣嶈溅绉诲姩浠诲姟
+                                    RGVMovetask(muchestation.Motherinlaw, muchestation.ChildPosiDeviceCode);
+                                }
                             }
                         }
                     }
@@ -737,6 +812,16 @@
                             {
                                 return dtTasks;
                             }
+                            else
+                            {
+                                //濡傛灉姣嶈溅鏃犺揣锛屽垯涓嬪埌閲岄潰鍘�
+                                bool NoCargobool = GetDeviceAddress.Mucheywhaddres(muchestation.ChildPosiDeviceCode);
+                                if (NoCargobool)
+                                {
+                                    //涓嬪彂姣嶈溅绉诲姩浠诲姟
+                                    RGVMovetask(muchestation.Motherinlaw, muchestation.ChildPosiDeviceCode);
+                                }
+                            }
                         }
 
                     }
@@ -754,6 +839,25 @@
 
                                 var mu2rgv = _agvStationService.GetMothervehicle(GdZiche.MotherCardeputy);
                                 int mu2 = GetDeviceAddress.GetEquipmentlocation(mu2rgv.ChildPosiDeviceCode);
+
+                                //闇�瑕佸垽鏂瘝杞︽槸鍚︽湁璐э紝鏃犺揣鍒欎笅鏂硅嚦绉诲姩浠诲姟
+                                bool NoCargobool = GetDeviceAddress.Mucheywhaddres(mu1rgv.ChildPosiDeviceCode);
+                                if (NoCargobool)
+                                {
+                                    //涓嬪彂姣嶈溅绉诲姩浠诲姟
+                                    RGVMovetask(mu1rgv.Motherinlaw, mu1rgv.ChildPosiDeviceCode);
+                                }
+
+
+                                bool NoCargobool2 = GetDeviceAddress.Mucheywhaddres(mu2rgv.ChildPosiDeviceCode);
+                                if (NoCargobool2)
+                                {
+                                    //涓嬪彂姣嶈溅绉诲姩浠诲姟
+                                    RGVMovetask(mu2rgv.Motherinlaw, mu2rgv.ChildPosiDeviceCode);
+                                }
+
+
+
 
                                 if (mu1 == mu1rgv.Motherinlaw && mu2 == mu2rgv.Motherinlaw)
                                 {
@@ -819,7 +923,12 @@
                             int mucboject4 = GetDeviceAddress.GetEquipmentlocation(muchestation2.ChildPosiDeviceCode);
                             if (mucboject4 == muchestation2.Motherinlaw)
                             {
-                                return task;
+                                //鍒ゆ柇鍙夎溅鏄惁鏈夊彇璐т换鍔�
+                                Dt_Task chachetask = _taskService.ChacheGetFinhuoTask("RGV118");
+                                if(chachetask == null)
+                                {
+                                    return task;
+                                }
                             }
 
                         }
@@ -876,7 +985,7 @@
                 GetStackerObject getStackerObject = GetDeviceAddress.GetChildDeviceCode(zichestation.ChildPosiDeviceCode);
 
                 if (getStackerObject.StaclerkJobJobStatusValue != RGV_Rgvtaskstutas.Executing && getStackerObject.RgvCraneAutoStatusValue == RgvCraneAutoStatus.Automatic
-                     && (getStackerObject.RGVCurrentlocation == zichestation.WaitmomentOne || getStackerObject.RGVCurrentlocation == zichestation.WaitmomentTwo) && getStackerObject.RGVCurrentlocation != zichestation.ZicheMotherinlaw)
+                     && (getStackerObject.RGVCurrentlocation == zichestation.WaitmomentOne || getStackerObject.RGVCurrentlocation == zichestation.WaitmomentTwo || getStackerObject.RGVCurrentlocation==1171) && getStackerObject.RGVCurrentlocation != zichestation.ZicheMotherinlaw)
                 {
                     RGVMovetask(GdZiche.Motherinlaw, GdZiche.ChildPosiDeviceCode);
                 }
@@ -901,7 +1010,7 @@
                     {
                         RGVMovetask(GdZiche.WaitmomentOne, GdZiche.ChildPosiDeviceCode);
                     }
-                    else if (GdZiche.MotherCardeputy == RGVCurrentlocation && RGVCurrentlocation == 1171)
+                    else if (GdZiche.MotherCardeputy == RGVCurrentlocation || RGVCurrentlocation == 1171)
                     {
                         RGVMovetask(GdZiche.WaitmomentTwo, GdZiche.ChildPosiDeviceCode);
                     }
@@ -918,14 +1027,19 @@
             {
                 if (GdZiche.Station_Area == 5)
                 {
-                    if (GdZiche.MotherCarDeviceCode == RGVCurrentlocation || GdZiche.HCJStorageaddress == RGVCurrentlocation)
+                    Dt_Task task = _taskService.GetChariotTaskBool(GdZiche.ChildPosiDeviceCode);
+                    if (task == null && RgvCraneStatusValue == (int)RgvEquipmentStatus.NoCargo)
                     {
-                        RGVMovetask(GdZiche.WaitmomentOne, GdZiche.ChildPosiDeviceCode);
+                        if (GdZiche.MotherCarDeviceCode == RGVCurrentlocation || GdZiche.HCJStorageaddress == RGVCurrentlocation)
+                        {
+                            RGVMovetask(GdZiche.WaitmomentOne, GdZiche.ChildPosiDeviceCode);
+                        }
+                        else if (GdZiche.MotherCardeputy == RGVCurrentlocation)
+                        {
+                            RGVMovetask(GdZiche.WaitmomentTwo, GdZiche.ChildPosiDeviceCode);
+                        }
                     }
-                    else if (GdZiche.MotherCardeputy == RGVCurrentlocation)
-                    {
-                        RGVMovetask(GdZiche.WaitmomentTwo, GdZiche.ChildPosiDeviceCode);
-                    }
+                        
                 }
                 else
                 {
@@ -952,6 +1066,13 @@
                             }
 
                         }
+                    }else if(task != null && RgvCraneStatusValue == (int)RgvEquipmentStatus.NoCargo)
+                    {
+                        if (GdZiche.HCJStorageaddress == RGVCurrentlocation)
+                        {
+                            //濡傛灉鍦�2宸烽亾鐨勬瘝杞︼紝鍒欏彲浠ユ斁瀛愯溅鏉�1鍙风瓑寰呯偣锛屽鏋滃湪HCJ鍒欏彲浠ヨ瀛愯溅鍘�2鍙�
+                            RGVMovetask(GdZiche.WaitmomentTwo, GdZiche.ChildPosiDeviceCode);
+                        }
                     }
                 }
             }

--
Gitblit v1.9.3