| | |
| | | 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; |
| | |
| | | { |
| | | if (Interlocked.Exchange(ref _readGFBUPSignalso, 1) == 0) |
| | | { |
| | | try |
| | | Task.Run(() => |
| | | { |
| | | VOLContext Context = new VOLContext(); |
| | | Ibase_ware_locationRepository locRepository = new base_ware_locationRepository(Context); |
| | | Ibase_routing_tableRepository routingRepository = new base_routing_tableRepository(Context); |
| | | Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context); |
| | | Idt_agvtask_htyRepository agvhtyRepository = new dt_agvtask_htyRepository(Context); |
| | | List<string> GFSBS = new List<string> { "辊分机正极1", "辊分机正极2", "辊分机正极3", "辊分机正极4" }; |
| | | //WriteLog.GetLog($"{GFSBS}下料呼叫").Write($"--------------开始----------- 时间记录:{DateTime.Now}", $"{GFSBS}下料呼叫"); |
| | | foreach (var GFSB in GFSBS) |
| | | try |
| | | { |
| | | //string SBID = GFSB.Replace("辊分机正极", "");//设备号 |
| | | PLCClient plc = WCSService.Clients.Find(v => v.PLCName == GFSB); |
| | | if (plc == null) |
| | | VOLContext Context = new VOLContext(); |
| | | Ibase_ware_locationRepository locRepository = new base_ware_locationRepository(Context); |
| | | Ibase_routing_tableRepository routingRepository = new base_routing_tableRepository(Context); |
| | | Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context); |
| | | Idt_agvtask_htyRepository agvhtyRepository = new dt_agvtask_htyRepository(Context); |
| | | List<string> GFSBS = new List<string> { "辊分机正极1", "辊分机正极2", "辊分机正极3", "辊分机正极4" }; |
| | | //WriteLog.GetLog($"{GFSBS}下料呼叫").Write($"--------------开始----------- 时间记录:{DateTime.Now}", $"{GFSBS}下料呼叫"); |
| | | foreach (var GFSB in GFSBS) |
| | | { |
| | | //WriteLog.GetLog($"{GFSBS}下料呼叫").Write($"设备:{GFSB} 内容:未连接PLC 时间记录:{DateTime.Now}", $"{GFSBS}下料呼叫"); |
| | | //WriteLog.GetLog($"{GFSBS}下料呼叫").Write($"--------------结束----------- 时间记录:{DateTime.Now}{Environment.NewLine}", $"{GFSBS}下料呼叫"); |
| | | continue; |
| | | } |
| | | //bool GYC_RFX1 = Convert.ToBoolean(plc.ReadValue("R_Feedingrequest1".ToString(), plc.PLCDescroption));//下料口一下料信号 |
| | | //bool GYC_RFX2 = Convert.ToBoolean(plc.ReadValue("R_Feedingrequest2".ToString(), plc.PLCDownLoc));//下料口二下料信号 |
| | | OperateResult<bool> GYC_RFX1 = plc.MelsecPLCClient.MelsecMcNetClient.ReadBool("D5693.0"); |
| | | if (!GYC_RFX1.IsSuccess) |
| | | { |
| | | //WriteLog.GetLog($"{GFSBS}下料呼叫").Write($"{GFSBS}下料一口断开连接 时间:{DateTime.Now} -------------- {Environment.NewLine}", $"{GFSBS}下料呼叫"); |
| | | continue; |
| | | } |
| | | |
| | | if (GYC_RFX1.Content) |
| | | { |
| | | //WriteLog.GetLog($"{GFSBS}下料呼叫").Write($"读取 设备:{GFSB}下料一口 DB偏移值:D5693.0,读取值:{GYC_RFX1.Content} 时间记录:{DateTime.Now}", $"{GFSBS}下料呼叫"); |
| | | //查看当前辊分机设备是否有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) { |
| | | //WriteLog.GetLog($"{GFSBS}下料呼叫").Write($"读取 设备:{GFSB}下料一口,AGV任务列表中存在任务,无法继续下发任务,时间记录:{DateTime.Now}", $"{GFSBS}下料呼叫"); |
| | | } |
| | | else |
| | | //string SBID = GFSB.Replace("辊分机正极", "");//设备号 |
| | | PLCClient plc = WCSService.Clients.Find(v => v.PLCName == GFSB); |
| | | if (plc == null) |
| | | { |
| | | List<base_routing_table> Routing_Table = routingRepository.Find(d => d.route_began == plc.PLCDescroption); |
| | | //WriteLog.GetLog($"{GFSBS}下料呼叫").Write($"设备:{GFSB} 内容:未连接PLC 时间记录:{DateTime.Now}", $"{GFSBS}下料呼叫"); |
| | | //WriteLog.GetLog($"{GFSBS}下料呼叫").Write($"--------------结束----------- 时间记录:{DateTime.Now}{Environment.NewLine}", $"{GFSBS}下料呼叫"); |
| | | continue; |
| | | } |
| | | //bool GYC_RFX1 = Convert.ToBoolean(plc.ReadValue("R_Feedingrequest1".ToString(), plc.PLCDescroption));//下料口一下料信号 |
| | | //bool GYC_RFX2 = Convert.ToBoolean(plc.ReadValue("R_Feedingrequest2".ToString(), plc.PLCDownLoc));//下料口二下料信号 |
| | | OperateResult<bool> GYC_RFX1 = plc.MelsecPLCClient.MelsecMcNetClient.ReadBool("D5693.0"); |
| | | if (!GYC_RFX1.IsSuccess) |
| | | { |
| | | //WriteLog.GetLog($"{GFSBS}下料呼叫").Write($"{GFSBS}下料一口断开连接 时间:{DateTime.Now} -------------- {Environment.NewLine}", $"{GFSBS}下料呼叫"); |
| | | continue; |
| | | } |
| | | |
| | | base_ware_location Location = null; //绑定设备的货架 |
| | | foreach (var item in Routing_Table) |
| | | if (GYC_RFX1.Content) |
| | | { |
| | | //WriteLog.GetLog($"{GFSBS}下料呼叫").Write($"读取 设备:{GFSB}下料一口 DB偏移值:D5693.0,读取值:{GYC_RFX1.Content} 时间记录:{DateTime.Now}", $"{GFSBS}下料呼叫"); |
| | | //查看当前辊分机设备是否有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) |
| | | { |
| | | //查找绑定设备的货架 |
| | | base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.light_color == plc.PLCName.ToString()); |
| | | if (ware_Locations != null) |
| | | { |
| | | Location = ware_Locations; |
| | | break; |
| | | } |
| | | //WriteLog.GetLog($"{GFSBS}下料呼叫").Write($"读取 设备:{GFSB}下料一口,AGV任务列表中存在任务,无法继续下发任务,时间记录:{DateTime.Now}", $"{GFSBS}下料呼叫"); |
| | | } |
| | | if (Location != null) |
| | | else |
| | | { |
| | | if (Location.gd1 == 1 && Location.gd4 == 1)//代表下料1,2口下的料无法在这个货架装料了,货架就取消设备绑定 |
| | | { |
| | | var upper_code = Location.upper_code.Split('-'); |
| | | string tasknum = upper_code[0] + "-" + upper_code[1]; |
| | | var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress.Contains(tasknum)); |
| | | if (loctionNUM == null) |
| | | { |
| | | Location.light_color = "无"; |
| | | locRepository.Update(Location,d=>d.light_color, true); |
| | | } |
| | | #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); |
| | | |
| | | } |
| | | else if (Location.gd1 == 0)//代表这个货架还能给下料1口装料 |
| | | base_ware_location Location = null; //绑定设备的货架 |
| | | foreach (var item in Routing_Table) |
| | | { |
| | | var a = ""; |
| | | var upper_code = Location.upper_code.Split('-'); |
| | | if (Location.gd1 == 0 && Location.gd2 == 0 && a == "")//内侧外侧都没有料优先放内侧 |
| | | //查找绑定设备的货架 |
| | | base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.light_color == plc.PLCName.ToString()); |
| | | if (ware_Locations != null) |
| | | { |
| | | //string tasknumwc = upper_code[0] + "-" + upper_code[1] + "-2";//外侧 1-1 防止异常情况(AGV执行中异常,把光电挡了或手动送料在这个工位上,导致外侧任务未完成,就下发内侧任务) |
| | | //var loctionwc = agvRepository.FindFirst(f => f.agv_toaddress == tasknumwc); |
| | | //if (loctionwc == null) |
| | | //{ |
| | | string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-2";//外侧 1-2 |
| | | var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum); |
| | | if (WCloctionNUM == null) |
| | | { |
| | | string tasknum = upper_code[0] + "-" + upper_code[1] + "-1";//内侧 1-1 |
| | | var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum); |
| | | if (loctionNUM == null) |
| | | { |
| | | a = tasknum; |
| | | } |
| | | } |
| | | //} |
| | | |
| | | } |
| | | else if (Location.gd2 == 1 && Location.gd1 == 0 && a == "")//内侧有料时放外侧 |
| | | { |
| | | string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-1";//内侧 1-1 |
| | | var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum); |
| | | if (NCloctionNUM == null) |
| | | { |
| | | string tasknum = upper_code[0] + "-" + upper_code[1] + "-2";//外侧 1-2 |
| | | var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum); |
| | | if (loctionNUM == null) |
| | | { |
| | | a = tasknum; |
| | | } |
| | | } |
| | | } |
| | | if (a != "") |
| | | { |
| | | dt_agvtask_hty agvtask_Hty = agvhtyRepository.Find(d => d.agv_toaddress == a && d.agv_taskstate == AGVTaskStateEnum.TaskState_Finished.ToString()).OrderByDescending(d => d.agv_finishedtime ).FirstOrDefault(); |
| | | if (agvtask_Hty != null) |
| | | { |
| | | bool interval = (DateTime.Now - agvtask_Hty.agv_finishedtime).Value.TotalSeconds < 100; |
| | | if (interval) |
| | | { |
| | | continue; |
| | | } |
| | | } |
| | | //生成辊分机下料任务 |
| | | dt_agvtask agvtask = new dt_agvtask() |
| | | { |
| | | agv_id = Guid.NewGuid(), |
| | | agv_tasknum = "KH-" + IdenxManager.GetTaskNo(), |
| | | agv_fromaddress = plc.PLCDescroption, |
| | | agv_toaddress = a, |
| | | agv_code = "组装AGV调度", |
| | | agv_remark = "辊分下料任务", |
| | | agv_taskstate = AGVTaskStateEnum.Create.ToString(), |
| | | agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(), |
| | | agv_worktype = 1,//工作类型 |
| | | agv_materielid = "", |
| | | agv_qty = 1, |
| | | agv_createtime = DateTime.Now, |
| | | agv_grade = 0,//任务优先级 |
| | | agv_userid = "WCS", |
| | | agv_barcode = "", |
| | | }; |
| | | |
| | | //Location.update_time = DateTime.Now; |
| | | Location.task = 1; |
| | | Location.logic_col = 0; |
| | | var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entry != null) |
| | | { |
| | | entry.State = EntityState.Detached; |
| | | } |
| | | int zone= locRepository.Update(Location, d => new { d.task, d.logic_col }, true); |
| | | 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}】下料一口任务生成"); |
| | | } |
| | | |
| | | Location = ware_Locations; |
| | | break; |
| | | } |
| | | } |
| | | else |
| | | if (Location != null) |
| | | { |
| | | //代表这个货架无法装下料1口的料了,但是下料2口还可以装料在这个货架上,货架不能取消设备绑定 |
| | | } |
| | | }//代表有这个设备绑定的货架 |
| | | else //代表没有这个设备绑定的货架,进行找一个没有设备绑定的货架进行绑定,来给这台设备装料 |
| | | { |
| | | List<base_ware_location> loctionList = new List<base_ware_location>(); |
| | | foreach (var item in Routing_Table) |
| | | { |
| | | base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.gd1 == 0 && d.gd2 == 0 && d.gd3 == 0 && d.gd4 == 0 && d.light_color == "无"); |
| | | if (ware_Locations == null) |
| | | if (Location.gd1 == 1 && Location.gd4 == 1)//代表下料1,2口下的料无法在这个货架装料了,货架就取消设备绑定 |
| | | { |
| | | continue; |
| | | } |
| | | loctionList.Add(ware_Locations); |
| | | } |
| | | var upper_code = Location.upper_code.Split('-'); |
| | | string tasknum = upper_code[0] + "-" + upper_code[1]; |
| | | var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress.Contains(tasknum)); |
| | | if (loctionNUM == null) |
| | | { |
| | | Location.light_color = "无"; |
| | | locRepository.Update(Location, d => d.light_color, true); |
| | | } |
| | | |
| | | if (loctionList.Count != 0) |
| | | { |
| | | List<base_ware_location> Locationlist = loctionList.OrderBy(d => d.update_time).ToList(); |
| | | foreach (var xLocation in Locationlist) |
| | | } |
| | | else if (Location.gd1 == 0)//代表这个货架还能给下料1口装料 |
| | | { |
| | | var a = ""; |
| | | var upper_code = xLocation.upper_code.Split('-'); |
| | | if (xLocation.gd1 == 0 && xLocation.gd2 == 0 && a == "")//内侧外侧都没有料优先放内侧 |
| | | var upper_code = Location.upper_code.Split('-'); |
| | | if (Location.gd1 == 0 && Location.gd2 == 0 && a == "")//内侧外侧都没有料优先放内侧 |
| | | { |
| | | |
| | | //string tasknumwc = upper_code[0] + "-" + upper_code[1] + "-2";//外侧 1-1 防止异常情况(AGV执行中异常,把光电挡了或手动送料在这个工位上,导致外侧任务未完成,就下发内侧任务) |
| | | //var loctionwc = agvRepository.FindFirst(f => f.agv_toaddress == tasknumwc); |
| | | //if (loctionwc == null) |
| | | //{ |
| | | string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-2";//外侧 1-2 |
| | | var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum); |
| | | if (WCloctionNUM == null) |
| | | { |
| | | string tasknum = upper_code[0] + "-" + upper_code[1] + "-1";//内侧 1-1 |
| | | |
| | | var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum); |
| | | if (loctionNUM == null) |
| | | { |
| | | a = tasknum; |
| | | } |
| | | } |
| | | //} |
| | | |
| | | } |
| | | if (xLocation.gd2 == 1 && xLocation.gd1 == 0 && a == "")//内侧有料时放外侧 |
| | | else if (Location.gd2 == 1 && Location.gd1 == 0 && a == "")//内侧有料时放外侧 |
| | | { |
| | | string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-1";//内侧 1-1 |
| | | |
| | | var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum); |
| | | if (NCloctionNUM == null) |
| | | { |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (a != "") |
| | | { |
| | | dt_agvtask_hty agvtask_Hty= agvhtyRepository.Find(d => d.agv_toaddress== a && d.agv_taskstate == AGVTaskStateEnum.TaskState_Finished.ToString()).OrderByDescending(d=>d.agv_finishedtime).FirstOrDefault(); |
| | | if (agvtask_Hty!=null) |
| | | dt_agvtask_hty agvtask_Hty = agvhtyRepository.Find(d => d.agv_toaddress == a && d.agv_taskstate == AGVTaskStateEnum.TaskState_Finished.ToString()).OrderByDescending(d => d.agv_finishedtime).FirstOrDefault(); |
| | | if (agvtask_Hty != null) |
| | | { |
| | | bool interval = (DateTime.Now - agvtask_Hty.agv_finishedtime).Value.TotalSeconds < 100; |
| | | if (interval) |
| | |
| | | continue; |
| | | } |
| | | } |
| | | //生成辊分机下料任务 |
| | | dt_agvtask agvtask = new dt_agvtask() |
| | | //生成辊分机下料任务 |
| | | dt_agvtask agvtask = new dt_agvtask() |
| | | { |
| | | agv_id = Guid.NewGuid(), |
| | | agv_tasknum = "KH-" + IdenxManager.GetTaskNo(), |
| | |
| | | agv_userid = "WCS", |
| | | agv_barcode = "", |
| | | }; |
| | | |
| | | |
| | | //Location.update_time = DateTime.Now; |
| | | xLocation.task = 1; |
| | | xLocation.logic_col = 0; |
| | | xLocation.light_color = plc.PLCName; |
| | | Location.task = 1; |
| | | Location.logic_col = 0; |
| | | var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entry != null) |
| | | { |
| | | entry.State = EntityState.Detached; |
| | | } |
| | | int zone= locRepository.Update(xLocation, d => new { d.task, d.light_color, d.logic_col }, true); |
| | | if (zone==1) |
| | | int zone = locRepository.Update(Location, d => new { d.task, d.logic_col }, true); |
| | | 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}】状态:托盘光电检测:{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; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //代表这个货架无法装下料1口的料了,但是下料2口还可以装料在这个货架上,货架不能取消设备绑定 |
| | | } |
| | | }//代表有这个设备绑定的货架 |
| | | else //代表没有这个设备绑定的货架,进行找一个没有设备绑定的货架进行绑定,来给这台设备装料 |
| | | { |
| | | List<base_ware_location> loctionList = new List<base_ware_location>(); |
| | | foreach (var item in Routing_Table) |
| | | { |
| | | base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.gd1 == 0 && d.gd2 == 0 && d.gd3 == 0 && d.gd4 == 0 && d.light_color == "无"); |
| | | if (ware_Locations == null) |
| | | { |
| | | continue; |
| | | } |
| | | loctionList.Add(ware_Locations); |
| | | } |
| | | |
| | | if (loctionList.Count != 0) |
| | | { |
| | | List<base_ware_location> Locationlist = loctionList.OrderBy(d => d.update_time).ToList(); |
| | | foreach (var xLocation in Locationlist) |
| | | { |
| | | var a = ""; |
| | | var upper_code = xLocation.upper_code.Split('-'); |
| | | if (xLocation.gd1 == 0 && xLocation.gd2 == 0 && a == "")//内侧外侧都没有料优先放内侧 |
| | | { |
| | | |
| | | string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-2";//外侧 1-2 |
| | | var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum); |
| | | if (WCloctionNUM == null) |
| | | { |
| | | string tasknum = upper_code[0] + "-" + upper_code[1] + "-1";//内侧 1-1 |
| | | |
| | | var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum); |
| | | if (loctionNUM == null) |
| | | { |
| | | a = tasknum; |
| | | } |
| | | } |
| | | |
| | | } |
| | | if (xLocation.gd2 == 1 && xLocation.gd1 == 0 && a == "")//内侧有料时放外侧 |
| | | { |
| | | string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-1";//内侧 1-1 |
| | | |
| | | var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum); |
| | | if (NCloctionNUM == null) |
| | | { |
| | | string tasknum = upper_code[0] + "-" + upper_code[1] + "-2";//外侧 1-2 |
| | | var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum); |
| | | if (loctionNUM == null) |
| | | { |
| | | a = tasknum; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (a != "") |
| | | { |
| | | dt_agvtask_hty agvtask_Hty = agvhtyRepository.Find(d => d.agv_toaddress == a && d.agv_taskstate == AGVTaskStateEnum.TaskState_Finished.ToString()).OrderByDescending(d => d.agv_finishedtime).FirstOrDefault(); |
| | | if (agvtask_Hty != null) |
| | | { |
| | | bool interval = (DateTime.Now - agvtask_Hty.agv_finishedtime).Value.TotalSeconds < 100; |
| | | if (interval) |
| | | { |
| | | continue; |
| | | } |
| | | } |
| | | //生成辊分机下料任务 |
| | | dt_agvtask agvtask = new dt_agvtask() |
| | | { |
| | | agv_id = Guid.NewGuid(), |
| | | agv_tasknum = "KH-" + IdenxManager.GetTaskNo(), |
| | | agv_fromaddress = plc.PLCDescroption, |
| | | agv_toaddress = a, |
| | | agv_code = "组装AGV调度", |
| | | agv_remark = "辊分下料任务", |
| | | agv_taskstate = AGVTaskStateEnum.Create.ToString(), |
| | | agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(), |
| | | agv_worktype = 1,//工作类型 |
| | | agv_materielid = "", |
| | | agv_qty = 1, |
| | | agv_createtime = DateTime.Now, |
| | | agv_grade = 0,//任务优先级 |
| | | agv_userid = "WCS", |
| | | agv_barcode = "", |
| | | }; |
| | | |
| | | //Location.update_time = DateTime.Now; |
| | | xLocation.task = 1; |
| | | xLocation.logic_col = 0; |
| | | xLocation.light_color = plc.PLCName; |
| | | var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entry != null) |
| | | { |
| | | entry.State = EntityState.Detached; |
| | | } |
| | | int zone = locRepository.Update(xLocation, d => new { d.task, d.light_color, d.logic_col }, true); |
| | | 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}】下料一口任务生成"); |
| | | } |
| | | break; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | OperateResult<bool> GYC_RFX2 = plc.MelsecPLCClient.MelsecMcNetClient.ReadBool("D5893.0"); |
| | | if (!GYC_RFX2.IsSuccess) |
| | | { |
| | | //WriteLog.GetLog($"{GFSBS}下料呼叫").Write($"{GFSBS}二口断开连接 时间:{DateTime.Now} -------------- {Environment.NewLine}", $"{GFSBS}下料呼叫"); |
| | | continue; |
| | | |
| | | } |
| | | if (GYC_RFX2.Content) |
| | | { |
| | | |
| | | //查看当前辊分机设备是否有AGV任务 |
| | | var SBtask = agvRepository.FindFirst(f => f.agv_fromaddress == plc.PLCDownLoc && (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) { } |
| | | else |
| | | OperateResult<bool> GYC_RFX2 = plc.MelsecPLCClient.MelsecMcNetClient.ReadBool("D5893.0"); |
| | | if (!GYC_RFX2.IsSuccess) |
| | | { |
| | | List<base_routing_table> Routing_Table = routingRepository.Find(d => d.route_began == plc.PLCDownLoc); |
| | | //WriteLog.GetLog($"{GFSBS}下料呼叫").Write($"{GFSBS}二口断开连接 时间:{DateTime.Now} -------------- {Environment.NewLine}", $"{GFSBS}下料呼叫"); |
| | | continue; |
| | | |
| | | base_ware_location Location = null; //找绑定设备的货架 |
| | | foreach (var item in Routing_Table) |
| | | } |
| | | if (GYC_RFX2.Content) |
| | | { |
| | | |
| | | //查看当前辊分机设备是否有AGV任务 |
| | | var SBtask = agvRepository.FindFirst(f => f.agv_fromaddress == plc.PLCDownLoc && (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) { } |
| | | else |
| | | { |
| | | //绑定设备的货架 |
| | | base_ware_location ware_Locations = locRepository.FindFirst(d => d.upper_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.light_color == plc.PLCName.ToString()); |
| | | if (ware_Locations != null) |
| | | { |
| | | Location = ware_Locations; |
| | | break; |
| | | } |
| | | } |
| | | if (Location != null) |
| | | { |
| | | if (Location.gd1 == 1 && Location.gd4 == 1)//代表下料1,2口下的料无法在这个货架装料了,货架就取消设备绑定 |
| | | { |
| | | var upper_code = Location.upper_code.Split('-'); |
| | | string tasknum = upper_code[0] + "-" + upper_code[1]; |
| | | var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress.Contains(tasknum)); |
| | | if (loctionNUM == null) |
| | | { |
| | | Location.light_color = "无"; |
| | | locRepository.Update(Location,d=>d.light_color, true); |
| | | } |
| | | } |
| | | else if (Location.gd4 == 0)//代表这个货架还能给下料1口装料 |
| | | { |
| | | var a = ""; |
| | | var upper_code = Location.upper_code.Split('-'); |
| | | #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); |
| | | |
| | | if (Location.gd4 == 0 && Location.gd3 == 0 && a == "") |
| | | base_ware_location Location = null; //找绑定设备的货架 |
| | | foreach (var item in Routing_Table) |
| | | { |
| | | //绑定设备的货架 |
| | | base_ware_location ware_Locations = locRepository.FindFirst(d => d.upper_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.light_color == plc.PLCName.ToString()); |
| | | if (ware_Locations != null) |
| | | { |
| | | string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-3";//外侧 |
| | | var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum); |
| | | if (WCloctionNUM == null) |
| | | { |
| | | string tasknum = upper_code[0] + "-" + upper_code[1] + "-4";//内侧 |
| | | var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum); |
| | | if (loctionNUM == null) |
| | | { |
| | | a = tasknum; |
| | | } |
| | | } |
| | | //} |
| | | } |
| | | if (Location.gd3 == 1 && Location.gd4 == 0 && a == "") |
| | | { |
| | | string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-4";//内侧 |
| | | var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum); |
| | | if (NCloctionNUM == null) |
| | | { |
| | | string tasknum = upper_code[0] + "-" + upper_code[1] + "-3";//外侧 |
| | | var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum); |
| | | if (loctionNUM == null) |
| | | { |
| | | a = tasknum; |
| | | } |
| | | |
| | | } |
| | | } |
| | | if (a != "") |
| | | { |
| | | dt_agvtask_hty agvtask_Hty = agvhtyRepository.Find(d => d.agv_toaddress == a && d.agv_taskstate == AGVTaskStateEnum.TaskState_Finished.ToString()).OrderByDescending(d => d.agv_finishedtime).FirstOrDefault(); |
| | | if (agvtask_Hty != null) |
| | | { |
| | | bool interval = (DateTime.Now - agvtask_Hty.agv_finishedtime).Value.TotalSeconds < 100; |
| | | if (interval) |
| | | { |
| | | continue; |
| | | } |
| | | } |
| | | //生成辊分机下料任务 |
| | | dt_agvtask agvtask = new dt_agvtask() |
| | | { |
| | | agv_id = Guid.NewGuid(), |
| | | agv_tasknum = "KH-" + IdenxManager.GetTaskNo(), |
| | | agv_fromaddress = plc.PLCDownLoc, |
| | | agv_toaddress = a, |
| | | agv_code = "组装AGV调度", |
| | | agv_remark = "辊分下料任务", |
| | | agv_taskstate = AGVTaskStateEnum.Create.ToString(), |
| | | agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(), |
| | | agv_worktype = 1,//工作类型 |
| | | agv_materielid = "", |
| | | agv_qty = 1, |
| | | agv_createtime = DateTime.Now, |
| | | agv_grade = 0,//任务优先级 |
| | | agv_userid = "WCS", |
| | | agv_barcode = "", |
| | | }; |
| | | //Location.update_time = DateTime.Now; |
| | | Location.task = 1; |
| | | Location.logic_col = 0; |
| | | var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entry != null) |
| | | { |
| | | entry.State = EntityState.Detached; |
| | | } |
| | | int ztwo= locRepository.Update(Location, d => new { d.task, d.logic_col }, true); |
| | | 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}】下料二口任务生成"); |
| | | } |
| | | Location = ware_Locations; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | }//代表有这个设备绑定的货架 |
| | | else //代表没有这个设备绑定的货架,进行找一个没有设备绑定的货架进行绑定,来给这台设备装料 |
| | | { |
| | | List<base_ware_location> loctionList = new List<base_ware_location>(); |
| | | foreach (var item in Routing_Table) |
| | | if (Location != null) |
| | | { |
| | | base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.gd1 == 0 && d.gd2 == 0 && d.gd3 == 0 && d.gd4 == 0 && d.light_color == "无"); |
| | | if (ware_Locations == null) |
| | | if (Location.gd1 == 1 && Location.gd4 == 1)//代表下料1,2口下的料无法在这个货架装料了,货架就取消设备绑定 |
| | | { |
| | | continue; |
| | | var upper_code = Location.upper_code.Split('-'); |
| | | string tasknum = upper_code[0] + "-" + upper_code[1]; |
| | | var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress.Contains(tasknum)); |
| | | if (loctionNUM == null) |
| | | { |
| | | Location.light_color = "无"; |
| | | locRepository.Update(Location, d => d.light_color, true); |
| | | } |
| | | } |
| | | loctionList.Add(ware_Locations); |
| | | } |
| | | |
| | | if (loctionList.Count != 0) |
| | | { |
| | | List<base_ware_location> Locationlist = loctionList.OrderBy(d => d.update_time).ToList(); |
| | | foreach (var xLocation in Locationlist) |
| | | else if (Location.gd4 == 0)//代表这个货架还能给下料1口装料 |
| | | { |
| | | var a = ""; |
| | | var upper_code = xLocation.upper_code.Split('-'); |
| | | if (xLocation.gd4 == 0 && xLocation.gd3 == 0 && a == "") |
| | | var upper_code = Location.upper_code.Split('-'); |
| | | |
| | | if (Location.gd4 == 0 && Location.gd3 == 0 && a == "") |
| | | { |
| | | string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-3";//外侧 |
| | | var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum); |
| | | if (NCloctionNUM == null) |
| | | string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-3";//外侧 |
| | | var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum); |
| | | if (WCloctionNUM == null) |
| | | { |
| | | string tasknum = upper_code[0] + "-" + upper_code[1] + "-4";//内侧 |
| | | var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum); |
| | |
| | | } |
| | | //} |
| | | } |
| | | if (xLocation.gd3 == 1 && xLocation.gd4 == 0 && a == "") |
| | | if (Location.gd3 == 1 && Location.gd4 == 0 && a == "") |
| | | { |
| | | string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-4";//内侧 |
| | | var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum); |
| | | if (WCloctionNUM == null) |
| | | string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-4";//内侧 |
| | | var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum); |
| | | if (NCloctionNUM == null) |
| | | { |
| | | string tasknum = upper_code[0] + "-" + upper_code[1] + "-3";//外侧 |
| | | var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum); |
| | |
| | | { |
| | | a = tasknum; |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | if (a != "") |
| | | { |
| | | dt_agvtask_hty agvtask_Hty = agvhtyRepository.Find(d => d.agv_toaddress == a && d.agv_taskstate == AGVTaskStateEnum.TaskState_Finished.ToString()).OrderByDescending(d => d.agv_finishedtime).FirstOrDefault(); |
| | |
| | | agv_userid = "WCS", |
| | | agv_barcode = "", |
| | | }; |
| | | |
| | | //Location.update_time = DateTime.Now; |
| | | xLocation.task = 1; |
| | | xLocation.logic_col = 0; |
| | | xLocation.light_color = plc.PLCName; |
| | | Location.task = 1; |
| | | Location.logic_col = 0; |
| | | var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entry != null) |
| | | { |
| | | entry.State = EntityState.Detached; |
| | | } |
| | | int ztwo= locRepository.Update(xLocation, d => new { d.task, d.light_color, d.logic_col }, true); |
| | | int ztwo = locRepository.Update(Location, d => new { d.task, d.logic_col }, true); |
| | | 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}】下料二口任务生成"); |
| | | |
| | | //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($"----------------任务生成成功 {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; |
| | | } |
| | | } |
| | | |
| | | }//代表有这个设备绑定的货架 |
| | | else //代表没有这个设备绑定的货架,进行找一个没有设备绑定的货架进行绑定,来给这台设备装料 |
| | | { |
| | | List<base_ware_location> loctionList = new List<base_ware_location>(); |
| | | foreach (var item in Routing_Table) |
| | | { |
| | | base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.gd1 == 0 && d.gd2 == 0 && d.gd3 == 0 && d.gd4 == 0 && d.light_color == "无"); |
| | | if (ware_Locations == null) |
| | | { |
| | | continue; |
| | | } |
| | | loctionList.Add(ware_Locations); |
| | | } |
| | | |
| | | if (loctionList.Count != 0) |
| | | { |
| | | List<base_ware_location> Locationlist = loctionList.OrderBy(d => d.update_time).ToList(); |
| | | foreach (var xLocation in Locationlist) |
| | | { |
| | | var a = ""; |
| | | var upper_code = xLocation.upper_code.Split('-'); |
| | | if (xLocation.gd4 == 0 && xLocation.gd3 == 0 && a == "") |
| | | { |
| | | string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-3";//外侧 |
| | | var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum); |
| | | if (NCloctionNUM == null) |
| | | { |
| | | string tasknum = upper_code[0] + "-" + upper_code[1] + "-4";//内侧 |
| | | var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum); |
| | | if (loctionNUM == null) |
| | | { |
| | | a = tasknum; |
| | | } |
| | | } |
| | | //} |
| | | } |
| | | if (xLocation.gd3 == 1 && xLocation.gd4 == 0 && a == "") |
| | | { |
| | | string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-4";//内侧 |
| | | var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum); |
| | | if (WCloctionNUM == null) |
| | | { |
| | | string tasknum = upper_code[0] + "-" + upper_code[1] + "-3";//外侧 |
| | | var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum); |
| | | if (loctionNUM == null) |
| | | { |
| | | a = tasknum; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (a != "") |
| | | { |
| | | dt_agvtask_hty agvtask_Hty = agvhtyRepository.Find(d => d.agv_toaddress == a && d.agv_taskstate == AGVTaskStateEnum.TaskState_Finished.ToString()).OrderByDescending(d => d.agv_finishedtime).FirstOrDefault(); |
| | | if (agvtask_Hty != null) |
| | | { |
| | | bool interval = (DateTime.Now - agvtask_Hty.agv_finishedtime).Value.TotalSeconds < 100; |
| | | if (interval) |
| | | { |
| | | continue; |
| | | } |
| | | } |
| | | //生成辊分机下料任务 |
| | | dt_agvtask agvtask = new dt_agvtask() |
| | | { |
| | | agv_id = Guid.NewGuid(), |
| | | agv_tasknum = "KH-" + IdenxManager.GetTaskNo(), |
| | | agv_fromaddress = plc.PLCDownLoc, |
| | | agv_toaddress = a, |
| | | agv_code = "组装AGV调度", |
| | | agv_remark = "辊分下料任务", |
| | | agv_taskstate = AGVTaskStateEnum.Create.ToString(), |
| | | agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(), |
| | | agv_worktype = 1,//工作类型 |
| | | agv_materielid = "", |
| | | agv_qty = 1, |
| | | agv_createtime = DateTime.Now, |
| | | agv_grade = 0,//任务优先级 |
| | | agv_userid = "WCS", |
| | | agv_barcode = "", |
| | | }; |
| | | |
| | | //Location.update_time = DateTime.Now; |
| | | xLocation.task = 1; |
| | | xLocation.logic_col = 0; |
| | | xLocation.light_color = plc.PLCName; |
| | | var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entry != null) |
| | | { |
| | | entry.State = EntityState.Detached; |
| | | } |
| | | int ztwo = locRepository.Update(xLocation, d => new { d.task, d.light_color, d.logic_col }, true); |
| | | 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}】下料二口任务生成"); |
| | | |
| | | //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($"----------------任务生成成功 {DateTime.Now} -------------- {Environment.NewLine}", $"【{GFSB}】下料二口任务生成"); |
| | | } |
| | | break; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | catch (Exception) |
| | | { |
| | | |
| | | throw; |
| | | } |
| | | finally |
| | | { |
| | | Interlocked.Exchange(ref _readGFBUPSignalso, 0); |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteLog.GetLog().Write($"正极棍分下料:{DateTime.Now} --------------{ex}", $"正极棍分下料"); |
| | | } |
| | | finally |
| | | { |
| | | Interlocked.Exchange(ref _readGFBUPSignalso, 0); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | |