using System; using System.Collections.Generic; using System.Threading; using WIDESEA_Common; using WIDESEA_Common.Tools; using WIDESEA_Core.EFDbContext; using WIDESEA_Entity.DomainModels; using WIDESEA_Services.IRepositories; using WIDESEA_Services.Repositories; using WIDESEA_Services.Services; using WIDESEA_WCS.WCSClient; namespace WIDESEA_WCS.Jobs { public partial class EquipmentExecutor : SchedulerExecuteBase { private static int _readKPHLSignalso = 0; /// /// 正极和负极空盘回流线入物流线逻辑 /// /// public static void ZF_KPHLX_DownTask() { if (Interlocked.Exchange(ref _readKPHLSignalso, 1) == 0) { try { VOLContext Context = new VOLContext(); Idt_task_numberRepository tasknumberRep = new dt_task_numberRepository(Context); dt_task_numberService tasknumber = new dt_task_numberService(tasknumberRep); Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context); List KPHLXS = new List { "ZJXL-KPHLX001", "FJXL-KPHLX001" }; foreach (var item in KPHLXS) { PLCClient plc = WCSService.Clients.Find(v => v.PLCName == "正极提升机"); //获取空盘回流线正极货位是否有料 string isZWork = plc.ReadValue(ConveyorLineInfoDBName.R_ZKPHLXLocation.ToString(), plc.PLCDescroption).ToString(); //获取空盘回流线负极货位是否有料 string isFWork = plc.ReadValue(ConveyorLineInfoDBName.R_FKPHLXLocation.ToString(), plc.PLCDescroption).ToString(); if (bool.Parse(isZWork) && item.Contains("Z")) { string ZWLXWork= plc.ReadValue(ConveyorLineInfoDBName.R_ZWLX2_UPrequest.ToString(), plc.PLCDescroption).ToString(); string isZGMWork = plc.ReadValue(ConveyorLineInfoDBName.R_ZGMWork.ToString(), plc.PLCDescroption).ToString(); string isZState = plc.ReadValue(ConveyorLineInfoDBName.R_ZGMState.ToString(), plc.PLCDescroption).ToString(); if (bool.Parse(ZWLXWork)) { dt_agvtask agvtask = new dt_agvtask { agv_materbarcode = "", agv_barcode = "", agv_code = "负极2号AGV", agv_createtime = DateTime.Now, agv_fromaddress = item, agv_grade = 1, agv_materielid = "空托盘", agv_qty = 1, agv_tasknum = "KH-" + tasknumber.GetTaskNumber(tasknumberRep), agv_taskstate = "WaitBind", agv_tasktype = "TaskType_Outbound", agv_toaddress = "nou", agv_userid = "WCS", agv_worktype = 2 }; agvRepository.Add(agvtask, true); WriteLog.Info("ZF_KPHLX_DownTask").Write("ZF_KPHLX_DownTask" + agvtask.agv_tasknum + DateTime.Now, "ZF_KPHLX_DownTask"); } else if (bool.Parse(isZGMWork)&&int.Parse(isZState)==1) { dt_agvtask agvtask = new dt_agvtask { agv_materbarcode = "", agv_barcode = "", agv_code = "负极2号AGV", agv_createtime = DateTime.Now, agv_fromaddress = item, agv_grade = 1, agv_materielid = "隔膜空托盘", agv_qty = 1, agv_tasknum = "KH-" + tasknumber.GetTaskNumber(tasknumberRep), agv_taskstate = "WaitBind", agv_tasktype = "TaskType_Outbound", agv_toaddress ="nou", agv_userid = "WCS", agv_worktype = 2 }; agvRepository.Add(agvtask, true); WriteLog.Info("ZF_KPHLX_DownTask").Write("ZF_KPHLX_DownTask" + agvtask.agv_tasknum + DateTime.Now, "ZF_KPHLX_DownTask"); } } else if (bool.Parse(isFWork) && item.Contains("F")) { string FWLXWork = plc.ReadValue(ConveyorLineInfoDBName.R_FWLX2_UPrequest.ToString(), plc.PLCDescroption).ToString(); string isFGMWork = plc.ReadValue(ConveyorLineInfoDBName.R_FGMWork.ToString(), plc.PLCDescroption).ToString(); string isFState = plc.ReadValue(ConveyorLineInfoDBName.R_FGMState.ToString(), plc.PLCDescroption).ToString(); if (bool.Parse(FWLXWork)) { dt_agvtask agvtask = new dt_agvtask { agv_materbarcode = "", agv_barcode = "", agv_code = "负极2号AGV", agv_createtime = DateTime.Now, agv_fromaddress = item, agv_grade = 1, agv_materielid = "空托盘", agv_qty = 1, agv_tasknum = "KH-" + tasknumber.GetTaskNumber(tasknumberRep), agv_taskstate = "WaitBind", agv_tasktype = "TaskType_Outbound", agv_toaddress = "nou", agv_userid = "WCS", agv_worktype = 2 }; agvRepository.Add(agvtask, true); WriteLog.Info("ZF_KPHLX_DownTask").Write("ZF_KPHLX_DownTask" + agvtask.agv_tasknum + DateTime.Now, "ZF_KPHLX_DownTask"); } else if (bool.Parse(isFGMWork) && int.Parse(isFState) == 1) { dt_agvtask agvtask = new dt_agvtask { agv_materbarcode = "", agv_barcode = "", agv_code = "负极2号AGV", agv_createtime = DateTime.Now, agv_fromaddress = item, agv_grade = 1, agv_materielid = "隔膜空托盘", agv_qty = 1, agv_tasknum = "KH-" + tasknumber.GetTaskNumber(tasknumberRep), agv_taskstate = "WaitBind", agv_tasktype = "TaskType_Outbound", agv_toaddress = "nou", agv_userid = "WCS", agv_worktype = 2 }; agvRepository.Add(agvtask, true); WriteLog.Info("ZF_KPHLX_DownTask").Write("ZF_KPHLX_DownTask" + agvtask.agv_tasknum + DateTime.Now, "ZF_KPHLX_DownTask"); } } else { continue; } } } catch (Exception ex) { } finally { Interlocked.Exchange(ref _readKPHLSignalso, 0); } } } } }