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 |  134 ++++++++++++++++++++++++++++++++++++--------
 1 files changed, 110 insertions(+), 24 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 d8bac0e..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)
                 {
@@ -78,7 +80,7 @@
                         }
 
                         //鍒ゆ柇褰撳墠璁惧鏄叆搴撹繕鏄嚭搴�
-                        /*if (GetDeviceAddress.OutbounMotherChildCartbool(speStackerCrane.DeviceCode))
+                        if (GetDeviceAddress.OutbounMotherChildCartbool(speStackerCrane.DeviceCode))
                         {
                             //鍒ゆ柇褰撳墠瀹夊叏闂ㄦ槸鍚︿负缁胯壊鐏�
                             if (GetDeviceAddress.ReadAqmDecicStice(1))
@@ -92,11 +94,8 @@
                             if (GetDeviceAddress.ReadAqmDecicStice(2))
                             {
                                 return null;
-                            }
-                        }*/
-
-                        
-                        
+                           }
+                        }
 
 
                         if (getStackerObject.RgvCraneAutoStatusValue == RgvCraneAutoStatus.Automatic &&
@@ -166,7 +165,10 @@
                 _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
@@ -216,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;
         }
@@ -244,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)
@@ -270,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)    //鍒欓渶瑕佸垽鏂袱涓瘝杞︾殑浣嶅瓙
@@ -350,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宸烽亾姣嶈溅鏄惁鍦ㄥ彇璐х珯鍙�
@@ -462,7 +497,7 @@
                     {
                         //鍒ゆ柇姣嶈溅鏄惁鏈変换鍔�
                         Dt_Task _Task1 = _taskService.MothermacTask(Muche.ChildPosiDeviceCode);
-                        if (task == null)
+                        if (_Task1 == null)
                         {
                             RGVMovetask(Muche.ZicheMotherinlaw, Muche.ChildPosiDeviceCode);  //濡傛灉娌℃湁浠诲姟锛屽垯鍙互杩涜绉诲姩鍑烘潵
                         }
@@ -512,8 +547,8 @@
                 Dt_Task task = _taskService.MothermachinemovementTask2(Muche2.ChildPosiDeviceCode);   //鑾峰彇鍒版瘝杞︾Щ鍔ㄤ换鍔�
                 if (task == null)
                 {
-                    Dt_Task _Task1 = _taskService.MothermacTask(Muche.ChildPosiDeviceCode);
-                    if (task == null)
+                    Dt_Task _Task1 = _taskService.MothermacTask(Muche2.ChildPosiDeviceCode);
+                    if (_Task1 == null)
                     {
                         RGVMovetask(Muche2.ZicheMotherinlaw, Muche2.ChildPosiDeviceCode);  //濡傛灉娌℃湁浠诲姟锛屽垯鍙互杩涜绉诲姩鍑烘潵
                     }
@@ -731,6 +766,16 @@
                             {
                                 return dtTasks;
                             }
+                            else
+                            {
+                                //濡傛灉姣嶈溅鏃犺揣锛屽垯涓嬪埌閲岄潰鍘�
+                                bool NoCargobool = GetDeviceAddress.Mucheywhaddres(muchestation.ChildPosiDeviceCode);
+                                if (NoCargobool)
+                                {
+                                    //涓嬪彂姣嶈溅绉诲姩浠诲姟
+                                    RGVMovetask(muchestation.Motherinlaw, muchestation.ChildPosiDeviceCode);
+                                }
+                            }
                         }
                     }
                 }
@@ -767,6 +812,16 @@
                             {
                                 return dtTasks;
                             }
+                            else
+                            {
+                                //濡傛灉姣嶈溅鏃犺揣锛屽垯涓嬪埌閲岄潰鍘�
+                                bool NoCargobool = GetDeviceAddress.Mucheywhaddres(muchestation.ChildPosiDeviceCode);
+                                if (NoCargobool)
+                                {
+                                    //涓嬪彂姣嶈溅绉诲姩浠诲姟
+                                    RGVMovetask(muchestation.Motherinlaw, muchestation.ChildPosiDeviceCode);
+                                }
+                            }
                         }
 
                     }
@@ -784,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)
                                 {
@@ -849,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;
+                                }
                             }
 
                         }
@@ -987,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