| | |
| | | using System.Text; |
| | | using System.Threading; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Common.TaskEnum; |
| | | using WIDESEA_Common.Tools; |
| | | using WIDESEA_Core.Utilities; |
| | | using WIDESEA_Entity.DomainModels; |
| | |
| | | { |
| | | public partial class OutboundAreaDispatch |
| | | { |
| | | |
| | | 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))); |
| | | 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); |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// åºåºåºç©ºæçåºåº |
| | |
| | | //æ¥è¯¢åºåºå¾
ä»»å¡ |
| | | Dt_TaskWCSinfo wcsInfo = null; |
| | | if (!string.IsNullOrEmpty(rfidResult) && !"0".Equals(rfidResult)) |
| | | wcsInfo = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == rfidResult && r.wcstask_state == TaskState.TaskState_RGV_Received.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())); |
| | | //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_RGV_Received.ToString() |
| | | 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(); |
| | | } |
| | | if (null == wcsInfo) |
| | |
| | | if (logicValue == 1 || logicValue == 2) |
| | | { |
| | | if (!wcsInfo.wcstask_state.Contains("Executing")) |
| | | { |
| | | //åå
¥æçæ¡ç |
| | | bool writeTaskNumber = client.WriteValue(CLineInfoDBName.W_Line_TaskNumber.ToString(), wcsInfo.wcstask_startPoint, wcsInfo.wcstask_taskNumber); |
| | | bool writeBarcode = client.WriteValue(CLineInfoDBName.W_Line_Barcode.ToString(), wcsInfo.wcstask_startPoint, wcsInfo.wcstask_barcode); |
| | | WriteTaskInfo.WriteTaskInfoAction(wcsInfo, client, lineCode); |
| | | } |
| | | } |
| | | rfidResult = client.ReadValue(CLineInfoDBName.W_Line_Barcode.ToString(), lineCode).ToString(); |
| | | if (!wcsInfo.wcstask_barcode.Equals(rfidResult)) |
| | | return true; |
| | | logicValue = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Logic.ToString(), lineCode).ToString()); |
| | | //说æç«å°å·²ç»æ¶å°ä»»å¡æ°æ®ï¼çå¾
WCSçå¯å¨æä»¤ |
| | | if (logicValue == 3) |
| | | else if (logicValue == 3) |
| | | { |
| | | //å¯å¨ä»»å¡ |
| | | client.WriteValue(CLineInfoDBName.W_Line_Logic.ToString(), lineCode, 1); |
| | | 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_state = state; |
| | | wcsInfo.wcstask_dispatcherTime = DateTime.Now; |
| | | taskWCSinfoRepository.Update(wcsInfo, true); |
| | | } |
| | | |
| | | } |
| | | else if (logicValue == 4 || logicValue == 5) |
| | | { |
| | | string state = TaskState.TaskState_HoisterExecuting.ToString(); |
| | | if (wcsInfo.wcstask_state == state) |
| | | return true; |
| | | string taskplc_Result = client.ReadValue(CLineInfoDBName.W_Line_Barcode.ToString(), lineCode).ToString(); |
| | | if(taskplc_Result== wcsInfo.wcstask_barcode) |
| | | { |
| | | string state = TaskState.TaskState_Box_Out_Line_Executing.ToString(); |
| | | if (wcsInfo.wcstask_state == state) |
| | | return true; |
| | | wcsInfo.wcstask_state = state; |
| | | wcsInfo.wcstask_dispatcherTime = DateTime.Now; |
| | | taskWCSinfoRepository.Update(wcsInfo, true); |
| | | } |
| | | else |
| | | { |
| | | 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_state == state) |
| | | return true; |
| | | wcsInfoPLC.wcstask_state = state; |
| | | wcsInfoPLC.wcstask_dispatcherTime = DateTime.Now; |
| | | taskWCSinfoRepository.Update(wcsInfoPLC, true); |
| | | } |
| | | } |
| | | |
| | | if (!WriteRGVState(client, true)) |
| | | return true; |
| | | wcsInfo.wcstask_state = state; |
| | | wcsInfo.wcstask_dispatcherTime = DateTime.Now; |
| | | taskWCSinfoRepository.Update(wcsInfo, true); |
| | | |
| | | } |
| | | } |
| | | catch (Exception ex) |