| | |
| | | using System; |
| | | using System.Linq; |
| | | using System.Threading; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Common.DBHelper; |
| | | using WIDESEA_Common.Tools; |
| | |
| | | { |
| | | if (Interlocked.Exchange(ref _readFBCKSignalsoZBCK, 1) == 0) |
| | | { |
| | | |
| | | try |
| | | Task.Run(() => |
| | | { |
| | | FreeDB freeDB = new FreeDB(); |
| | | VOLContext Context = new VOLContext(); |
| | | Ibase_ware_locationRepository locRepository = new base_ware_locationRepository(Context); |
| | | Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context); |
| | | |
| | | //34出口,供给辊分上料口 |
| | | var location_34 = freeDB.Select<base_ware_location>().Where(t => t.upper_code == "FJ-BCHCJ34" && t.location_state == "LocationState_Empty" && t.status == 1 && t.task == 2 && t.tpgd == 0).First(); |
| | | //36空架立即补料 |
| | | //34空架立即补料 |
| | | if (location_34 != null) |
| | | try |
| | | { |
| | | FreeDB freeDB = new FreeDB(); |
| | | VOLContext Context = new VOLContext(); |
| | | Ibase_ware_locationRepository locRepository = new base_ware_locationRepository(Context); |
| | | Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context); |
| | | |
| | | var location_34_cp = freeDB.Select<base_ware_location>().Where(t => t.location_state == "LocationState_Stored" && t.logic_row.ToString() == "TBXL-BCK" && t.logic_col == 1/*正常料*/ && t.upper_code.Contains("FJ-BCHCJ") && t.light_color != "SB" && t.status == 1 && t.task == 2).OrderBy(t => t.update_time).First(); |
| | | //dt_agvtask task_34 = agvRepository.Find(t => t.agv_fromaddress == "FJ-BCHCJ34" || t.agv_toaddress == "FJ-BCHCJ34").FirstOrDefault(); |
| | | |
| | | if (location_34_cp != null)//找到合适货位,生成补料搬运任务 |
| | | //34出口,供给辊分上料口 |
| | | var location_34 = freeDB.Select<base_ware_location>().Where(t => t.upper_code == "FJ-BCHCJ34" && t.location_state == "LocationState_Empty" && t.status == 1 && t.task == 2 && t.tpgd == 0).First(); |
| | | //36空架立即补料 |
| | | //34空架立即补料 |
| | | dt_agvtask dt_Agvtask34 = agvRepository.FindFirst(x=>x.agv_toaddress== "FJ-BCHCJ34"); |
| | | if (dt_Agvtask34 != null && location_34.task==2) |
| | | { |
| | | //34货位补料任务 |
| | | dt_agvtask agvtask = new dt_agvtask(); |
| | | agvtask.agv_id = Guid.NewGuid(); |
| | | agvtask.agv_tasknum = "KH-" + IdenxManager.GetTaskNo(); |
| | | agvtask.agv_fromaddress = location_34_cp.upper_code; |
| | | agvtask.agv_toaddress = location_34.upper_code; |
| | | agvtask.agv_code = "负极AGV调度"; |
| | | agvtask.agv_remark = "负极箔材库搬运(34补料)"; |
| | | agvtask.agv_taskstate = AGVTaskStateEnum.Create.ToString(); |
| | | agvtask.agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(); |
| | | agvtask.agv_worktype = 1;//工作类型 |
| | | agvtask.agv_materielid = ""; |
| | | agvtask.agv_qty = 1; |
| | | agvtask.agv_createtime = DateTime.Now; |
| | | agvtask.agv_grade = 0;//任务优先级 |
| | | agvtask.agv_userid = "WCS"; |
| | | agvtask.agv_barcode = ""; |
| | | |
| | | location_34_cp.update_time = DateTime.Now; |
| | | location_34_cp.task = 1; |
| | | var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entry != null) |
| | | { |
| | | entry.State = EntityState.Detached; |
| | | } |
| | | int begin= locRepository.Update(location_34_cp, d => new { d.update_time, d.task }, true); |
| | | |
| | | location_34.update_time = DateTime.Now; |
| | | location_34.task = 1; |
| | | location_34.logic_col = 1; |
| | |
| | | { |
| | | entrys.State = EntityState.Detached; |
| | | } |
| | | int end= locRepository.Update(location_34, d => new { d.update_time, d.task, d.logic_col }, true); |
| | | if (begin==1&& end==1) |
| | | { |
| | | agvRepository.Add(agvtask, true); |
| | | |
| | | WriteDBLog.Info($"箔材库任务生成").Write($"生成任务:{agvtask.agv_tasknum}", $"箔材库任务生成"); |
| | | WriteDBLog.Info($"箔材库任务生成").Write($"起点货位【{location_34_cp.upper_code}】状态:托盘光电检测:{location_34_cp.tpgd},状态:{location_34_cp.location_state},更新时间:{location_34_cp.wireless_time}", $"箔材库任务生成"); |
| | | |
| | | WriteDBLog.Info($"箔材库任务生成").Write($"终点货位【{location_34.upper_code}】状态:托盘光电检测:{location_34.tpgd},状态:{location_34.location_state},更新时间:{location_34.wireless_time}", $"箔材库任务生成"); |
| | | |
| | | WriteDBLog.Info($"箔材库任务生成").Write($"----------------任务生成成功 {DateTime.Now} -------------- {Environment.NewLine}", $"箔材库任务生成"); |
| | | } |
| | | |
| | | int end = locRepository.Update(location_34, true); |
| | | } |
| | | |
| | | } |
| | | |
| | | //36出口,供给涂布上料口 |
| | | var location_36 = freeDB.Select<base_ware_location>().Where(t => t.upper_code == "FJ-BCHCJ36" && t.location_state == "LocationState_Empty" && t.status == 1 && t.task == 2 && t.tpgd == 0).First(); |
| | | //36空架立即补料 |
| | | if (location_36 != null) |
| | | { |
| | | |
| | | |
| | | var location_36_cp = freeDB.Select<base_ware_location>().Where(t => t.location_state == "LocationState_Stored" && t.logic_row.ToString() == "TSJXL-BCK" && t.logic_col == 1 && t.upper_code.Contains("FJ-BCHCJ") && t.light_color != "SB" && t.status == 1 && t.task == 2).OrderBy(t => t.update_time).First(); |
| | | //dt_agvtask task_36 = agvRepository.Find(t => t.agv_fromaddress == "FJ-BCHCJ36" || t.agv_toaddress == "FJ-BCHCJ36").FirstOrDefault(); |
| | | |
| | | if (location_36_cp != null)//找到合适货位,生成补料搬运任务 |
| | | if (location_34 != null && dt_Agvtask34==null) |
| | | { |
| | | |
| | | //36货位补料任务 |
| | | dt_agvtask agvtask = new dt_agvtask(); |
| | | agvtask.agv_id = Guid.NewGuid(); |
| | | agvtask.agv_tasknum = "KH-" + IdenxManager.GetTaskNo(); |
| | | agvtask.agv_fromaddress = location_36_cp.upper_code; |
| | | agvtask.agv_toaddress = location_36.upper_code; |
| | | agvtask.agv_code = "负极AGV调度"; |
| | | agvtask.agv_remark = "负极箔材库搬运(36补料)"; |
| | | agvtask.agv_taskstate = AGVTaskStateEnum.Create.ToString(); |
| | | agvtask.agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(); |
| | | agvtask.agv_worktype = 1;//工作类型 |
| | | agvtask.agv_materielid = ""; |
| | | agvtask.agv_qty = 1; |
| | | agvtask.agv_createtime = DateTime.Now; |
| | | agvtask.agv_grade = 0;//任务优先级 |
| | | agvtask.agv_userid = "WCS"; |
| | | agvtask.agv_barcode = ""; |
| | | var location_34_cp = freeDB.Select<base_ware_location>().Where(t => t.location_state == "LocationState_Stored" && t.logic_row.ToString() == "TBXL-BCK" && t.logic_col == 1/*正常料*/ && t.upper_code.Contains("FJ-BCHCJ") && t.light_color != "SB" && t.status == 1 && t.task == 2).OrderBy(t => t.update_time).First(); |
| | | //dt_agvtask task_34 = agvRepository.Find(t => t.agv_fromaddress == "FJ-BCHCJ34" || t.agv_toaddress == "FJ-BCHCJ34").FirstOrDefault(); |
| | | |
| | | if (location_34_cp != null)//找到合适货位,生成补料搬运任务 |
| | | { |
| | | //34货位补料任务 |
| | | dt_agvtask agvtask = new dt_agvtask(); |
| | | agvtask.agv_id = Guid.NewGuid(); |
| | | agvtask.agv_tasknum = "KH-" + IdenxManager.GetTaskNo(); |
| | | agvtask.agv_fromaddress = location_34_cp.upper_code; |
| | | agvtask.agv_toaddress = location_34.upper_code; |
| | | agvtask.agv_code = "负极AGV调度"; |
| | | agvtask.agv_remark = "负极箔材库搬运(34补料)"; |
| | | agvtask.agv_taskstate = AGVTaskStateEnum.Create.ToString(); |
| | | agvtask.agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(); |
| | | agvtask.agv_worktype = 1;//工作类型 |
| | | agvtask.agv_materielid = ""; |
| | | agvtask.agv_qty = 1; |
| | | agvtask.agv_createtime = DateTime.Now; |
| | | agvtask.agv_grade = 0;//任务优先级 |
| | | agvtask.agv_userid = "WCS"; |
| | | agvtask.agv_barcode = ""; |
| | | |
| | | location_36_cp.update_time = DateTime.Now; |
| | | location_36_cp.task = 1; |
| | | location_34_cp.update_time = DateTime.Now; |
| | | location_34_cp.task = 1; |
| | | var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entry != null) |
| | | { |
| | | entry.State = EntityState.Detached; |
| | | } |
| | | int begin = locRepository.Update(location_34_cp, d => new { d.update_time, d.task }, true); |
| | | |
| | | location_34.update_time = DateTime.Now; |
| | | location_34.task = 1; |
| | | location_34.logic_col = 1; |
| | | var entrys = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entrys != null) |
| | | { |
| | | entrys.State = EntityState.Detached; |
| | | } |
| | | int end = locRepository.Update(location_34, d => new { d.update_time, d.task, d.logic_col }, true); |
| | | if (begin == 1 && end == 1) |
| | | { |
| | | agvRepository.Add(agvtask, true); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | //36出口,供给涂布上料口 |
| | | var location_36 = freeDB.Select<base_ware_location>().Where(t => t.upper_code == "FJ-BCHCJ36" && t.location_state == "LocationState_Empty" && t.status == 1 && t.task == 2 && t.tpgd == 0).First(); |
| | | //36空架立即补料 |
| | | dt_agvtask dt_Agvtask36 = agvRepository.FindFirst(x => x.agv_toaddress == "FJ-BCHCJ36"); |
| | | if (dt_Agvtask36 != null && location_36.task == 2) |
| | | { |
| | | location_36.update_time = DateTime.Now; |
| | | location_36.task = 1; |
| | | location_36.logic_col = 1; |
| | | var entrys = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entrys != null) |
| | | { |
| | | entrys.State = EntityState.Detached; |
| | | } |
| | | int begin= locRepository.Update(location_36_cp, d => new { d.update_time, d.task }, true); |
| | | |
| | | location_36.update_time = DateTime.Now; |
| | | location_36.task = 1; |
| | | location_36.logic_col = 1; |
| | | var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entry != null) |
| | | { |
| | | entry.State = EntityState.Detached; |
| | | } |
| | | int end= locRepository.Update(location_36, d => new { d.update_time, d.task, d.logic_col }, true); |
| | | |
| | | if (begin == 1 && end == 1) |
| | | { |
| | | agvRepository.Add(agvtask, true); |
| | | WriteDBLog.Info($"箔材库任务生成").Write($"生成任务:{agvtask.agv_tasknum}", $"箔材库任务生成"); |
| | | |
| | | WriteDBLog.Info($"箔材库任务生成").Write($"起点货位【{location_36_cp.upper_code}】状态:托盘光电检测:{location_36_cp.tpgd},状态:{location_36_cp.location_state},更新时间:{location_36_cp.wireless_time}", $"箔材库任务生成"); |
| | | |
| | | WriteDBLog.Info($"箔材库任务生成").Write($"终点货位【{location_36.upper_code}】状态:托盘光电检测:{location_36.tpgd},状态:{location_36.location_state},更新时间:{location_36.wireless_time}", $"箔材库任务生成"); |
| | | |
| | | WriteDBLog.Info($"箔材库任务生成").Write($"----------------任务生成成功 {DateTime.Now} -------------- {Environment.NewLine}", $"箔材库任务生成"); |
| | | } |
| | | int end = locRepository.Update(location_36, true); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | //35入口,供涂布下料 |
| | | var location_35 = freeDB.Select<base_ware_location>().Where(t => t.upper_code == "FJ-BCHCJ35" && t.location_state == "LocationState_Stored" && t.status == 1 && t.task == 2 && t.tpgd == 1 && (t.logic_row == "TBXL-BCK" || t.logic_col == 1)).First(); |
| | | //35有料立即搬走 |
| | | if (location_35 != null) |
| | | { |
| | | |
| | | int index = 0; |
| | | int b = 7; |
| | | DateTime time = DateTime.Now; |
| | | Double STAMP = 0; |
| | | do |
| | | if (location_36 != null && dt_Agvtask36 == null) |
| | | { |
| | | DateTime time2 = DateTime.Now; |
| | | STAMP = (time2 - time).TotalSeconds; |
| | | base_ware_location ware_Location = locRepository.FindFirst(d => d.upper_code == location_35.upper_code |
| | | && d.location_state == "LocationState_Stored" && location_35.tpgd == 1 && d.status == 1 && (location_35.logic_row == "TBXL-BCK" || location_35.logic_col == 1)); |
| | | if (ware_Location == null) |
| | | { |
| | | index = 3; |
| | | break; |
| | | } |
| | | |
| | | } while (STAMP < b); |
| | | if (index != 3) |
| | | { |
| | | var location_35_cp = freeDB.Select<base_ware_location>().Where(t => t.location_state == "LocationState_Empty" && t.upper_code.Contains("FJ-BCHCJ") && t.light_color != "SB" && t.status == 1 && t.task == 2).First(); |
| | | if (location_35_cp != null)//找到合适货位,生成搬运任务 |
| | | |
| | | var location_36_cp = freeDB.Select<base_ware_location>().Where(t => t.location_state == "LocationState_Stored" && t.logic_row.ToString() == "TSJXL-BCK" && t.logic_col == 1 && t.upper_code.Contains("FJ-BCHCJ") && t.light_color != "SB" && t.status == 1 && t.task == 2).OrderBy(t => t.update_time).First(); |
| | | //dt_agvtask task_36 = agvRepository.Find(t => t.agv_fromaddress == "FJ-BCHCJ36" || t.agv_toaddress == "FJ-BCHCJ36").FirstOrDefault(); |
| | | |
| | | if (location_36_cp != null)//找到合适货位,生成补料搬运任务 |
| | | { |
| | | //35货位补料任务 |
| | | |
| | | //36货位补料任务 |
| | | dt_agvtask agvtask = new dt_agvtask(); |
| | | agvtask.agv_id = Guid.NewGuid(); |
| | | agvtask.agv_tasknum = "KH-" + IdenxManager.GetTaskNo(); |
| | | agvtask.agv_fromaddress = location_35.upper_code; |
| | | agvtask.agv_toaddress = location_35_cp.upper_code; |
| | | agvtask.agv_fromaddress = location_36_cp.upper_code; |
| | | agvtask.agv_toaddress = location_36.upper_code; |
| | | agvtask.agv_code = "负极AGV调度"; |
| | | agvtask.agv_remark = "负极箔材库搬运(35)"; |
| | | agvtask.agv_remark = "负极箔材库搬运(36补料)"; |
| | | agvtask.agv_taskstate = AGVTaskStateEnum.Create.ToString(); |
| | | agvtask.agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(); |
| | | agvtask.agv_worktype = 1;//工作类型 |
| | |
| | | agvtask.agv_barcode = ""; |
| | | |
| | | |
| | | location_35_cp.update_time = DateTime.Now; |
| | | location_35_cp.task = 1; |
| | | //location_35_cp.logic_row = "TBXL-BCK"; |
| | | var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entry != null) |
| | | { |
| | | entry.State = EntityState.Detached; |
| | | } |
| | | int end= locRepository.Update(location_35_cp, d => new { d.update_time, d.task }, true); |
| | | |
| | | location_35.update_time = DateTime.Now; |
| | | location_35.task = 1; |
| | | location_36_cp.update_time = DateTime.Now; |
| | | location_36_cp.task = 1; |
| | | var entrys = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entrys != null) |
| | | { |
| | | entrys.State = EntityState.Detached; |
| | | } |
| | | int begin= locRepository.Update(location_35, d => new { d.update_time, d.task }, true); |
| | | int begin = locRepository.Update(location_36_cp, d => new { d.update_time, d.task }, true); |
| | | |
| | | location_36.update_time = DateTime.Now; |
| | | location_36.task = 1; |
| | | location_36.logic_col = 1; |
| | | var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entry != null) |
| | | { |
| | | entry.State = EntityState.Detached; |
| | | } |
| | | int end = locRepository.Update(location_36, d => new { d.update_time, d.task, d.logic_col }, true); |
| | | |
| | | if (begin == 1 && end == 1) |
| | | { |
| | | agvRepository.Add(agvtask, true); |
| | | |
| | | WriteDBLog.Info($"箔材库任务生成").Write($"生成任务:{agvtask.agv_tasknum}", $"箔材库任务生成"); |
| | | |
| | | WriteDBLog.Info($"箔材库任务生成").Write($"起点货位【{location_35.upper_code}】状态:托盘光电检测:{location_35.tpgd},状态:{location_35.location_state},更新时间:{location_35.wireless_time}", $"箔材库任务生成"); |
| | | |
| | | WriteDBLog.Info($"箔材库任务生成").Write($"终点货位【{location_35_cp.upper_code}】状态:托盘光电检测:{location_35_cp.tpgd},状态:{location_35_cp.location_state},更新时间:{location_35_cp.wireless_time}", $"箔材库任务生成"); |
| | | |
| | | WriteDBLog.Info($"箔材库任务生成").Write($"----------------任务生成成功 {DateTime.Now} -------------- {Environment.NewLine}", $"箔材库任务生成"); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | //35入口,供涂布下料 |
| | | var location_35 = freeDB.Select<base_ware_location>().Where(t => t.upper_code == "FJ-BCHCJ35" && t.location_state == "LocationState_Stored" && t.status == 1 && t.task == 2 && t.tpgd == 1 && (t.logic_row == "TBXL-BCK" || t.logic_col == 1)).First(); |
| | | //35有料立即搬走 |
| | | if (location_35 != null) |
| | | { |
| | | |
| | | int index = 0; |
| | | int b = 7; |
| | | DateTime time = DateTime.Now; |
| | | Double STAMP = 0; |
| | | do |
| | | { |
| | | DateTime time2 = DateTime.Now; |
| | | STAMP = (time2 - time).TotalSeconds; |
| | | base_ware_location ware_Location = locRepository.FindFirst(d => d.upper_code == location_35.upper_code |
| | | && d.location_state == "LocationState_Stored" && location_35.tpgd == 1 && d.status == 1 && (location_35.logic_row == "TBXL-BCK" || location_35.logic_col == 1)); |
| | | if (ware_Location == null) |
| | | { |
| | | index = 3; |
| | | break; |
| | | } |
| | | |
| | | } while (STAMP < b); |
| | | if (index != 3) |
| | | { |
| | | var location_35_cp = freeDB.Select<base_ware_location>().Where(t => t.location_state == "LocationState_Empty" && t.upper_code.Contains("FJ-BCHCJ") && t.light_color != "SB" && t.status == 1 && t.task == 2).First(); |
| | | if (location_35_cp != null)//找到合适货位,生成搬运任务 |
| | | { |
| | | //35货位补料任务 |
| | | dt_agvtask agvtask = new dt_agvtask(); |
| | | agvtask.agv_id = Guid.NewGuid(); |
| | | agvtask.agv_tasknum = "KH-" + IdenxManager.GetTaskNo(); |
| | | agvtask.agv_fromaddress = location_35.upper_code; |
| | | agvtask.agv_toaddress = location_35_cp.upper_code; |
| | | agvtask.agv_code = "负极AGV调度"; |
| | | agvtask.agv_remark = "负极箔材库搬运(35)"; |
| | | agvtask.agv_taskstate = AGVTaskStateEnum.Create.ToString(); |
| | | agvtask.agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(); |
| | | agvtask.agv_worktype = 1;//工作类型 |
| | | agvtask.agv_materielid = ""; |
| | | agvtask.agv_qty = 1; |
| | | agvtask.agv_createtime = DateTime.Now; |
| | | agvtask.agv_grade = 0;//任务优先级 |
| | | agvtask.agv_userid = "WCS"; |
| | | agvtask.agv_barcode = ""; |
| | | |
| | | |
| | | location_35_cp.update_time = DateTime.Now; |
| | | location_35_cp.task = 1; |
| | | //location_35_cp.logic_row = "TBXL-BCK"; |
| | | var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entry != null) |
| | | { |
| | | entry.State = EntityState.Detached; |
| | | } |
| | | int end = locRepository.Update(location_35_cp, d => new { d.update_time, d.task }, true); |
| | | |
| | | location_35.update_time = DateTime.Now; |
| | | location_35.task = 1; |
| | | var entrys = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entrys != null) |
| | | { |
| | | entrys.State = EntityState.Detached; |
| | | } |
| | | int begin = locRepository.Update(location_35, d => new { d.update_time, d.task }, true); |
| | | |
| | | if (begin == 1 && end == 1) |
| | | { |
| | | agvRepository.Add(agvtask, true); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | //37入口,供提升机下料 |
| | | var location_37 = freeDB.Select<base_ware_location>().Where(t => t.upper_code == "FJ-BCHCJ37" && t.location_state == "LocationState_Stored" && t.status == 1 && t.task == 2 && t.tpgd == 1 && (t.logic_row == "TSJXL-BCK" || t.logic_col == 1)).First(); |
| | | |
| | | //37有料立即搬走 |
| | | if (location_37 != null) |
| | | { |
| | | |
| | | int index = 0; |
| | | int b = 7; |
| | | DateTime time = DateTime.Now; |
| | | Double STAMP = 0; |
| | | do |
| | | { |
| | | DateTime time2 = DateTime.Now; |
| | | STAMP = (time2 - time).TotalSeconds; |
| | | base_ware_location ware_Location = locRepository.FindFirst(d => d.upper_code == location_37.upper_code |
| | | && d.location_state == LocationStateEnum.LocationState_Stored.ToString() && location_37.tpgd == 1 && d.status == 1 && (location_37.logic_row == "TSJXL-BCK" || location_37.logic_col == 1)); |
| | | if (ware_Location == null) |
| | | { |
| | | index = 3; |
| | | break; |
| | | } |
| | | |
| | | } while (STAMP < b); |
| | | if (index != 3) |
| | | { |
| | | var location_37_cp = freeDB.Select<base_ware_location>().Where(t => t.location_state == "LocationState_Empty" && t.upper_code.Contains("FJ-BCHCJ") && t.light_color != "SB" && t.status == 1 && t.task == 2).First(); |
| | | //dt_agvtask task_37 = agvRepository.Find(t => t.agv_fromaddress == "FJ-BCHCJ37" || t.agv_toaddress == "FJ-BCHCJ37").FirstOrDefault(); |
| | | if (location_37_cp != null)//找到合适货位,生成搬运任务 |
| | | { |
| | | //37货位搬运任务 |
| | | dt_agvtask agvtask = new dt_agvtask(); |
| | | agvtask.agv_id = Guid.NewGuid(); |
| | | agvtask.agv_tasknum = "KH-" + IdenxManager.GetTaskNo(); |
| | | agvtask.agv_fromaddress = location_37.upper_code; |
| | | agvtask.agv_toaddress = location_37_cp.upper_code; |
| | | agvtask.agv_code = "负极AGV调度"; |
| | | agvtask.agv_remark = "负极箔材库搬运(37)"; |
| | | agvtask.agv_taskstate = AGVTaskStateEnum.Create.ToString(); |
| | | agvtask.agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(); |
| | | agvtask.agv_worktype = 1;//工作类型 |
| | | agvtask.agv_materielid = ""; |
| | | agvtask.agv_qty = 1; |
| | | agvtask.agv_createtime = DateTime.Now; |
| | | agvtask.agv_grade = 0;//任务优先级 |
| | | agvtask.agv_userid = "WCS"; |
| | | agvtask.agv_barcode = ""; |
| | | |
| | | location_37_cp.update_time = DateTime.Now; |
| | | location_37_cp.task = 1; |
| | | //location_37_cp.logic_row = "TSJXL-BCK"; |
| | | var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entry != null) |
| | | { |
| | | entry.State = EntityState.Detached; |
| | | } |
| | | int end = locRepository.Update(location_37_cp, d => new { d.task, d.update_time }, true); |
| | | |
| | | location_37.update_time = DateTime.Now; |
| | | location_37.task = 1; |
| | | var entrys = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entrys != null) |
| | | { |
| | | entrys.State = EntityState.Detached; |
| | | } |
| | | int begin = locRepository.Update(location_37, d => new { d.task, d.update_time }, true); |
| | | if (begin == 1 && end == 1) |
| | | { |
| | | agvRepository.Add(agvtask, true); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | //37入口,供提升机下料 |
| | | var location_37 = freeDB.Select<base_ware_location>().Where(t => t.upper_code == "FJ-BCHCJ37" && t.location_state == "LocationState_Stored" && t.status == 1 && t.task == 2 && t.tpgd == 1 && (t.logic_row == "TSJXL-BCK" || t.logic_col == 1)).First(); |
| | | |
| | | //37有料立即搬走 |
| | | if (location_37 != null) |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | int index = 0; |
| | | int b = 7; |
| | | DateTime time = DateTime.Now; |
| | | Double STAMP = 0; |
| | | do |
| | | { |
| | | DateTime time2 = DateTime.Now; |
| | | STAMP = (time2 - time).TotalSeconds; |
| | | base_ware_location ware_Location = locRepository.FindFirst(d => d.upper_code == location_37.upper_code |
| | | && d.location_state == LocationStateEnum.LocationState_Stored.ToString() && location_37.tpgd == 1 && d.status == 1 && (location_37.logic_row == "TSJXL-BCK" || location_37.logic_col == 1)); |
| | | if (ware_Location == null) |
| | | { |
| | | index = 3; |
| | | break; |
| | | } |
| | | |
| | | } while (STAMP < b); |
| | | if (index != 3) |
| | | { |
| | | var location_37_cp = freeDB.Select<base_ware_location>().Where(t => t.location_state == "LocationState_Empty" && t.upper_code.Contains("FJ-BCHCJ") && t.light_color != "SB" && t.status == 1 && t.task == 2).First(); |
| | | //dt_agvtask task_37 = agvRepository.Find(t => t.agv_fromaddress == "FJ-BCHCJ37" || t.agv_toaddress == "FJ-BCHCJ37").FirstOrDefault(); |
| | | if (location_37_cp != null)//找到合适货位,生成搬运任务 |
| | | { |
| | | //37货位搬运任务 |
| | | dt_agvtask agvtask = new dt_agvtask(); |
| | | agvtask.agv_id = Guid.NewGuid(); |
| | | agvtask.agv_tasknum = "KH-" + IdenxManager.GetTaskNo(); |
| | | agvtask.agv_fromaddress = location_37.upper_code; |
| | | agvtask.agv_toaddress = location_37_cp.upper_code; |
| | | agvtask.agv_code = "负极AGV调度"; |
| | | agvtask.agv_remark = "负极箔材库搬运(37)"; |
| | | agvtask.agv_taskstate = AGVTaskStateEnum.Create.ToString(); |
| | | agvtask.agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(); |
| | | agvtask.agv_worktype = 1;//工作类型 |
| | | agvtask.agv_materielid = ""; |
| | | agvtask.agv_qty = 1; |
| | | agvtask.agv_createtime = DateTime.Now; |
| | | agvtask.agv_grade = 0;//任务优先级 |
| | | agvtask.agv_userid = "WCS"; |
| | | agvtask.agv_barcode = ""; |
| | | |
| | | location_37_cp.update_time = DateTime.Now; |
| | | location_37_cp.task = 1; |
| | | //location_37_cp.logic_row = "TSJXL-BCK"; |
| | | var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entry != null) |
| | | { |
| | | entry.State = EntityState.Detached; |
| | | } |
| | | int end= locRepository.Update(location_37_cp, d => new { d.task, d.update_time }, true); |
| | | |
| | | location_37.update_time = DateTime.Now; |
| | | location_37.task = 1; |
| | | var entrys = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault(); |
| | | if (entrys != null) |
| | | { |
| | | entrys.State = EntityState.Detached; |
| | | } |
| | | int begin= locRepository.Update(location_37, d => new { d.task, d.update_time }, true); |
| | | if (begin == 1 && end == 1) |
| | | { |
| | | agvRepository.Add(agvtask, true); |
| | | |
| | | WriteDBLog.Info($"箔材库任务生成").Write($"生成任务:{agvtask.agv_tasknum}", $"箔材库任务生成"); |
| | | |
| | | WriteDBLog.Info($"箔材库任务生成").Write($"起点货位【{location_37.upper_code}】状态:托盘光电检测:{location_37.tpgd},状态:{location_37.location_state},更新时间:{location_37.wireless_time}", $"箔材库任务生成"); |
| | | |
| | | WriteDBLog.Info($"箔材库任务生成").Write($"终点货位【{location_37_cp.upper_code}】状态:托盘光电检测:{location_37_cp.tpgd},状态:{location_37_cp.location_state},更新时间:{location_37_cp.wireless_time}", $"箔材库任务生成"); |
| | | |
| | | WriteDBLog.Info($"箔材库任务生成").Write($"----------------任务生成成功 {DateTime.Now} -------------- {Environment.NewLine}", $"箔材库任务生成"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | WriteLog.GetLog().Write($"负极泊材:{DateTime.Now} --------------{ex}", $"负极泊材调度"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | finally |
| | | { |
| | | |
| | | throw new Exception(ex.Message); |
| | | } |
| | | finally |
| | | { |
| | | |
| | | Interlocked.Exchange(ref _readFBCKSignalsoZBCK, 0); |
| | | } |
| | | Interlocked.Exchange(ref _readFBCKSignalsoZBCK, 0); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | } |
| | | |