| | |
| | | using System.Text; |
| | | using System.Threading; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Common.LogEnum; |
| | | using WIDESEA_Common.TaskEnum; |
| | | using WIDESEA_Common.Tools; |
| | | using WIDESEA_Core.Utilities; |
| | |
| | | public partial class OutboundAreaDispatch |
| | | { |
| | | |
| | | public static void OutboundCZ_PLC(IDt_TaskWCSinfoRepository taskWCSinfoRepository,IDt_TaskRGVinfoRepository taskRGVinfoRepository, PLCClient client) |
| | | public static void OutboundCZ_PLC(IDt_TaskWCSinfoRepository taskWCSinfoRepository, IDt_TaskRGVinfoRepository taskRGVinfoRepository, PLCClient client) |
| | | { |
| | | //车轴å¨åºåºå£ä¸åè¾éçº¿ä»»å¡ |
| | | Dt_TaskWCSinfo hisTask = taskWCSinfoRepository.FindFirst(r => (r.wcstask_state == TaskState.TaskState_Box_Out_RGV_Finished.ToString() || r.wcstask_state == TaskState.TaskState_Empty_Out_RGV_Finished.ToString() || r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString()) |
| | | && (OutboundStationLayerNo.Contains(r.wcstask_startPoint))); |
| | | Dt_TaskWCSinfo hisTask = taskWCSinfoRepository.Find(r => |
| | | r.wcstask_state == TaskState.TaskState_Box_Out_RGV_Finished.ToString() |
| | | || r.wcstask_state == TaskState.TaskState_Empty_Out_RGV_Finished.ToString() |
| | | || r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString()) |
| | | .Where(r => OutboundStationLayerNo.Contains(r.wcstask_startPoint) |
| | | && (r.wcstask_type.Equals(TaskType.TaskType_Box_Pallet_Outbound.ToString()) || r.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Outbound.ToString()))).OrderBy(x => x.wcstask_dispatcherTime).FirstOrDefault(); |
| | | if (null != hisTask) |
| | | { |
| | | if (hisTask.wcstask_type.Equals(TaskType.TaskType_Box_Pallet_Outbound.ToString()) || hisTask.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Outbound.ToString())) |
| | | { |
| | | OutboundRequestAction(taskWCSinfoRepository, client); |
| | | } |
| | | |
| | | |
| | | OutboundRequestAction(taskWCSinfoRepository, client); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// åºåºåºç©ºæçåºåº |
| | | /// åºåºåºç©ºæç/宿åºåº |
| | | /// </summary> |
| | | /// <param name="taskWCSinfoRepository"></param> |
| | | /// <param name="client"></param> |
| | |
| | | //æ¥è¯¢åºåºå¾
ä»»å¡ |
| | | Dt_TaskWCSinfo wcsInfo = null; |
| | | if (!string.IsNullOrEmpty(rfidResult) && !"0".Equals(rfidResult)) |
| | | wcsInfo = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == rfidResult && (r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString() |
| | | || r.wcstask_state == TaskState.TaskState_Box_Out_RGV_Finished.ToString())); |
| | | wcsInfo = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == rfidResult && (r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString() |
| | | || r.wcstask_state == TaskState.TaskState_Box_Out_RGV_Finished.ToString() || r.wcstask_state == TaskState.TaskState_Empty_Out_RGV_Finished.ToString())); |
| | | //wcsInfo = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == rfidResult && r.wcstask_state == TaskState.TaskState_Assigned.ToString()); |
| | | else |
| | | { |
| | | wcsInfo = taskWCSinfoRepository.Find(r => r.wcstask_state == TaskState.TaskState_Box_Out_RGV_Finished.ToString() |
| | | && OutboundStationLayerNo.Contains(r.wcstask_startPoint)).OrderBy(r => r.wcstask_createTime).FirstOrDefault(); |
| | | wcsInfo = taskWCSinfoRepository.Find(r => |
| | | (r.wcstask_state == TaskState.TaskState_Box_Out_RGV_Finished.ToString() |
| | | || r.wcstask_state == TaskState.TaskState_Empty_Out_RGV_Finished.ToString() |
| | | || r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString()) |
| | | && OutboundStationLayerNo.Contains(r.wcstask_startPoint)).OrderBy(r => r.wcstask_createTime).FirstOrDefault(); |
| | | } |
| | | if (null == wcsInfo) |
| | | return false; |
| | | |
| | | // è¿éå ä¸ä¸ªå¤æ90201 夿æçæ¯å¦ä¸º0ï¼å¤ææ¯å¦ç©ºè½½ |
| | | |
| | | int Barcode = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), 90201.ToString()).ToString()); |
| | | bool LoadSleep = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), 90201.ToString()).ToString()); |
| | | if (Barcode != 0 || LoadSleep) |
| | | { |
| | | return false; |
| | | } |
| | | |
| | | //读åé»è¾æ§å¶å¼ æ¥ç线ä½ç¶æï¼åå¤ç»çº¿ä½ä¸åä»»å¡ä¿¡æ¯ |
| | | int logicValue = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Logic.ToString(), lineCode).ToString()); |
| | |
| | | else if (logicValue == 3) |
| | | { |
| | | //å¯å¨ä»»å¡ |
| | | bool plclogicbool=client.WriteValue(CLineInfoDBName.W_Line_Logic.ToString(), lineCode, 1); |
| | | if(plclogicbool) |
| | | { |
| | | bool plclogicbool = client.WriteValue(CLineInfoDBName.W_Line_Logic.ToString(), lineCode, 1); |
| | | if (plclogicbool) |
| | | { |
| | | string state = TaskState.TaskState_HoisterExecuting.ToString(); |
| | | if (wcsInfo.wcstask_state == state) |
| | | return true; |
| | |
| | | wcsInfo.wcstask_dispatcherTime = DateTime.Now; |
| | | taskWCSinfoRepository.Update(wcsInfo, true); |
| | | } |
| | | |
| | | } |
| | | else if (logicValue == 4 || logicValue == 5) |
| | | else if (logicValue == 5) |
| | | { |
| | | string taskplc_Result = client.ReadValue(CLineInfoDBName.W_Line_Barcode.ToString(), lineCode).ToString(); |
| | | if(taskplc_Result== wcsInfo.wcstask_barcode) |
| | | if (taskplc_Result == wcsInfo.wcstask_barcode) |
| | | { |
| | | string state = TaskState.TaskState_Box_Out_Line_Executing.ToString(); |
| | | if (wcsInfo.wcstask_type == TaskType.TaskType_Empty_Pallet_Outbound.ToString()) |
| | | { |
| | | state = TaskState.TaskState_Empty_Out_Line_Executing.ToString(); |
| | | } |
| | | if (wcsInfo.wcstask_state == state) |
| | | return true; |
| | | wcsInfo.wcstask_state = state; |
| | |
| | | } |
| | | else |
| | | { |
| | | Dt_TaskWCSinfo wcsInfoPLC = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == rfidResult && r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString()); |
| | | Dt_TaskWCSinfo wcsInfoPLC = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == rfidResult |
| | | && r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString()); |
| | | |
| | | if (wcsInfoPLC != null) |
| | | { |
| | | string state = TaskState.TaskState_Box_Out_Line_Executing.ToString(); |
| | | if (wcsInfoPLC.wcstask_type == TaskType.TaskType_Empty_Pallet_Outbound.ToString()) |
| | | { |
| | | state = TaskState.TaskState_Empty_Out_Line_Executing.ToString(); |
| | | } |
| | | |
| | | |
| | | if (wcsInfoPLC.wcstask_state == state) |
| | | return true; |
| | | wcsInfoPLC.wcstask_state = state; |
| | | wcsInfoPLC.wcstask_dispatcherTime = DateTime.Now; |
| | | taskWCSinfoRepository.Update(wcsInfoPLC, true); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteLog.Info(lineCode).Write($"{ DateTime.Now }åºåºç«å°è°åº¦å¤±è´¥:{ex.Message}", lineCode); |
| | | WriteLog.Info(lineCode).Write($"{DateTime.Now}åºåºç«å°è°åº¦å¤±è´¥:{ex.Message}", lineCode); |
| | | } |
| | | return true; |
| | | } |