wangxinhui
2024-11-06 8f392cc88b0768b74efca3b68785cf5aa1c38e70
wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/Z_GFSB_DownTask.cs
@@ -6,6 +6,7 @@
using System.Linq;
using System.Security.Policy;
using System.Threading;
using System.Threading.Tasks;
using WIDESEA_Common;
using WIDESEA_Common.LoctionEnum;
using WIDESEA_Common.Tools;
@@ -29,6 +30,8 @@
        public static void Z_GFSB_DownTask()
        {
            if (Interlocked.Exchange(ref _readGFBUPSignalso, 1) == 0)
            {
                Task.Run(() =>
            {
                try
                {
@@ -64,11 +67,15 @@
                            //查看当前辊分机设备是否有AGV任务
                            var SBtask = agvRepository.FindFirst(f => f.agv_fromaddress == plc.PLCDescroption && (f.agv_taskstate == AGVTaskStateEnum.Create.ToString() || f.agv_taskstate == AGVTaskStateEnum.SendOut.ToString() || f.agv_taskstate == AGVTaskStateEnum.Executing.ToString() || f.agv_taskstate == AGVTaskStateEnum.Complete.ToString()));
                            //有结束本次循环
                            if (SBtask != null) {
                                if (SBtask != null)
                                {
                                //WriteLog.GetLog($"{GFSBS}下料呼叫").Write($"读取 设备:{GFSB}下料一口,AGV任务列表中存在任务,无法继续下发任务,时间记录:{DateTime.Now}", $"{GFSBS}下料呼叫");
                            }
                            else
                            {
                                    #region 记录下料请求信号
                                    WriteLog.GetLog().Write($"下料口1请求:{GYC_RFX1.Content}---{DateTime.Now}", $"{plc.PLCName}下料请求");
                                    #endregion
                                List<base_routing_table> Routing_Table = routingRepository.Find(d => d.route_began == plc.PLCDescroption);
                                base_ware_location Location = null; //绑定设备的货架
@@ -177,8 +184,8 @@
                                            if (zone==1)
                                            {
                                                agvRepository.Add(agvtask, true);
                                                WriteDBLog.Info($"【{GFSB}】下料一口任务生成").Write($"生成任务:{agvtask.agv_tasknum},终点货位【{a}】状态:托盘光电检测:{Location.tpgd},-1光电:{Location.gd2},-2光电:{Location.gd1},-3光电:{Location.gd4},-4光电:{Location.gd3},状态:{Location.location_state},设备绑定:{Location.light_color},更新时间:{Location.wireless_time}", $"【{GFSB}】下料一口任务生成");
                                                WriteDBLog.Info($"【{GFSB}】下料一口任务生成").Write($"----------------任务生成成功  {DateTime.Now} -------------- {Environment.NewLine}", $"【{GFSB}】下料一口任务生成");
                                                    //WriteDBLog.Info($"【{GFSB}】下料一口任务生成").Write($"生成任务:{agvtask.agv_tasknum},终点货位【{a}】状态:托盘光电检测:{Location.tpgd},-1光电:{Location.gd2},-2光电:{Location.gd1},-3光电:{Location.gd4},-4光电:{Location.gd3},状态:{Location.location_state},设备绑定:{Location.light_color},更新时间:{Location.wireless_time}", $"【{GFSB}】下料一口任务生成");
                                                    //WriteDBLog.Info($"【{GFSB}】下料一口任务生成").Write($"----------------任务生成成功  {DateTime.Now} -------------- {Environment.NewLine}", $"【{GFSB}】下料一口任务生成");
                                            }
                                    
                                            break;
@@ -286,8 +293,8 @@
                                                if (zone==1)
                                                {
                                                    agvRepository.Add(agvtask, true);
                                                    WriteDBLog.Info($"【{GFSB}】下料一口任务生成").Write($"生成任务:{agvtask.agv_tasknum},终点货位【{a}】状态:托盘光电检测:{xLocation.tpgd},-1光电:{xLocation.gd2},-2光电:{xLocation.gd1},-3光电:{xLocation.gd4},-4光电:{xLocation.gd3},状态:{xLocation.location_state},设备绑定:{xLocation.light_color},更新时间:{Location.wireless_time}", $"【{GFSB}】下料一口任务生成");
                                                    WriteDBLog.Info($"【{GFSB}】下料一口任务生成").Write($"----------------任务生成成功  {DateTime.Now} -------------- {Environment.NewLine}", $"【{GFSB}】下料一口任务生成");
                                                        ////WriteDBLog.Info($"【{GFSB}】下料一口任务生成").Write($"生成任务:{agvtask.agv_tasknum},终点货位【{a}】状态:托盘光电检测:{xLocation.tpgd},-1光电:{xLocation.gd2},-2光电:{xLocation.gd1},-3光电:{xLocation.gd4},-4光电:{xLocation.gd3},状态:{xLocation.location_state},设备绑定:{xLocation.light_color},更新时间:{Location.wireless_time}", $"【{GFSB}】下料一口任务生成");
                                                        //WriteDBLog.Info($"【{GFSB}】下料一口任务生成").Write($"----------------任务生成成功  {DateTime.Now} -------------- {Environment.NewLine}", $"【{GFSB}】下料一口任务生成");
                                                }
                                                break;
                                            }
@@ -315,6 +322,9 @@
                            if (SBtask != null) { }
                            else
                            {
                                    #region 记录下料请求信号
                                    WriteLog.GetLog().Write($"下料口2请求:{GYC_RFX2.Content}---{DateTime.Now}", $"{plc.PLCName}下料请求");
                                    #endregion
                                List<base_routing_table> Routing_Table = routingRepository.Find(d => d.route_began == plc.PLCDownLoc);
                                base_ware_location Location = null; //找绑定设备的货架
@@ -418,8 +428,8 @@
                                            if (ztwo==1)
                                            {
                                                    agvRepository.Add(agvtask, true);
                                                    WriteDBLog.Info($"【{GFSB}】下料二口任务生成").Write($"生成任务:{agvtask.agv_tasknum},终点货位【{a}】状态:托盘光电检测:{Location.tpgd},-1光电:{Location.gd2},-2光电:{Location.gd1},-3光电:{Location.gd4},-4光电:{Location.gd3},状态:{Location.location_state},设备绑定:{Location.light_color},更新时间:{Location.wireless_time}", $"【{GFSB}】下料二口任务生成");
                                                    WriteDBLog.Info($"【{GFSB}】下料二口任务生成").Write($"----------------任务生成成功  {DateTime.Now} -------------- {Environment.NewLine}", $"【{GFSB}】下料二口任务生成");
                                                    //WriteDBLog.Info($"【{GFSB}】下料二口任务生成").Write($"生成任务:{agvtask.agv_tasknum},终点货位【{a}】状态:托盘光电检测:{Location.tpgd},-1光电:{Location.gd2},-2光电:{Location.gd1},-3光电:{Location.gd4},-4光电:{Location.gd3},状态:{Location.location_state},设备绑定:{Location.light_color},更新时间:{Location.wireless_time}", $"【{GFSB}】下料二口任务生成");
                                                    //WriteDBLog.Info($"【{GFSB}】下料二口任务生成").Write($"----------------任务生成成功  {DateTime.Now} -------------- {Environment.NewLine}", $"【{GFSB}】下料二口任务生成");
                                            }
                                            break;
                                        }
@@ -520,14 +530,14 @@
                                                if (ztwo == 1)
                                                {
                                                    agvRepository.Add(agvtask, true);
                                                    WriteDBLog.Info($"【{GFSB}】下料二口任务生成").Write($"生成任务:{agvtask.agv_tasknum},终点货位【{a}】状态:托盘光电检测:{xLocation.tpgd},-1光电:{xLocation.gd2},-2光电:{xLocation.gd1},-3光电:{xLocation.gd4},-4光电:{xLocation.gd3},状态:{xLocation.location_state},设备绑定:{xLocation.light_color},更新时间:{xLocation.wireless_time}", $"【{GFSB}】下料二口任务生成");
                                                        //WriteDBLog.Info($"【{GFSB}】下料二口任务生成").Write($"生成任务:{agvtask.agv_tasknum},终点货位【{a}】状态:托盘光电检测:{xLocation.tpgd},-1光电:{xLocation.gd2},-2光电:{xLocation.gd1},-3光电:{xLocation.gd4},-4光电:{xLocation.gd3},状态:{xLocation.location_state},设备绑定:{xLocation.light_color},更新时间:{xLocation.wireless_time}", $"【{GFSB}】下料二口任务生成");
                                                    //base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == xLocation.upper_code );
                                                    //if (ware_Locations!=null)
                                                    //{
                                                    //    WriteDBLog.Info($"【{GFSB}】下料任务生成").Write($"货位【{ware_Locations.upper_code}】:货位任务状态:{ware_Locations.task}", $"【{GFSB}】下料任务生成");
                                                        //    //WriteDBLog.Info($"【{GFSB}】下料任务生成").Write($"货位【{ware_Locations.upper_code}】:货位任务状态:{ware_Locations.task}", $"【{GFSB}】下料任务生成");
                                                    //}
                                                    WriteDBLog.Info($"【{GFSB}】下料二口任务生成").Write($"----------------任务生成成功  {DateTime.Now} -------------- {Environment.NewLine}", $"【{GFSB}】下料二口任务生成");
                                                        //WriteDBLog.Info($"【{GFSB}】下料二口任务生成").Write($"----------------任务生成成功  {DateTime.Now} -------------- {Environment.NewLine}", $"【{GFSB}】下料二口任务生成");
                                                }
                                                break;
                                            }
@@ -542,15 +552,16 @@
                
                    }
                }
                catch (Exception)
                    catch (Exception ex)
                {
                    throw;
                        WriteLog.GetLog().Write($"正极棍分下料:{DateTime.Now} --------------{ex}", $"正极棍分下料");
                }
                finally
                {
                    Interlocked.Exchange(ref _readGFBUPSignalso, 0);
                }
                });
            }