| | |
| | | /// <summary> |
| | | /// åºåºçå± |
| | | /// </summary> |
| | | private static List<string> OutboundStationLayerNo = new List<string>() { "60100", "60200", "60300", "60400", "60500", "60600", "60700"}; |
| | | private static List<string> OutboundStationLayerNo = new List<string>() { "60101", "60102", "60103", "60104", "60105", "60106", "60107" }; |
| | | //å
¥åºæçç³è¯·ç«å° |
| | | private static string ReInboundRequestStationNo = "90101"; |
| | | //åºåºç«å°äº¤äº |
| | |
| | | //åºåºå®æ |
| | | OutboundCompleteAction(taskWCSinfoRepository, client); //åè£
åºåºå£ä»»å¡å®æ |
| | | |
| | | |
| | | |
| | | //空æå
¥åºç³è¯· |
| | | InboundRequestAction(taskWCSinfoRepository, taskRGVinfoRepository, client); |
| | | |
| | | |
| | | //æµè¯é¶æ®µæ³¨éçå
容ï¼åç»éè¦ä½¿ç¨çï¼ |
| | | //å¢å è¡¥ä¸.å¢å 车åå¨ä¸æé®é¢.åå |
| | | /*int logicValue = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Logic.ToString(), "OutboundArea").ToString()); |
| | | if (logicValue == 4) |
| | | { |
| | | string rfidResult = client.ReadValue(CLineInfoDBName.W_Line_Barcode.ToString(), "OutboundArea").ToString(); |
| | | if (!string.IsNullOrEmpty(rfidResult) && !"0".Equals(rfidResult)) |
| | | { |
| | | Dt_TaskWCSinfo wcsInfo = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == rfidResult |
| | | && (r.wcstask_state == TaskState.TaskState_Empty_Out_Line_Executing.ToString() |
| | | || r.wcstask_state == TaskState.TaskState_Box_Out_Line_Executing.ToString())); |
| | | |
| | | if (null != wcsInfo) |
| | | { |
| | | //æåæºå± |
| | | string hoisterLayer = client.ReadValue(CLineInfoDBName.R_Line_Layer.ToString(), hoisterResultNo).ToString(); |
| | | string[] locationArray = wcsInfo.wcstask_startLocation.Split('-'); |
| | | if (int.Parse(locationArray[0]).ToString() == hoisterLayer) |
| | | { |
| | | Dt_TaskRGVinfo rgvTask = taskRGVinfoRepository.FindFirst(r => r.rgvtask_barCode == wcsInfo.wcstask_barcode); |
| | | if (null == rgvTask) |
| | | { |
| | | flag++;//é¿å
å宿éå¤å |
| | | if (flag == 10) |
| | | { |
| | | WriteRGVState(client, false); |
| | | WriteRGVState(client, true); |
| | | flag = 0; |
| | | return; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | flag = 0; |
| | | }*/ |
| | | |
| | | |
| | | //æµè¯é¶æ®µæ³¨éçå
容*/ |
| | | |
| | | |
| | | |
| | | //æ¥è¯¢åºåºè³åè£
å°ç任塿å¤å°è¿è¡ä¸ |
| | | List<Dt_TaskWCSinfo> executingTask = taskWCSinfoRepository.Find(r => (r.wcstask_state != TaskState.TaskState_Assigned.ToString() |
| | | && (OutboundStationLayerNo.Contains(r.wcstask_startPoint) || OutboundStationLayerNo.Contains(r.wcstask_endPoint)))); |
| | | if (executingTask.Count < 4) |
| | | //çæå¯ä¸åçRGVä»»å¡ï¼è³ç¼åå£ |
| | | List<Dt_TaskWCSinfo> executingTask = taskWCSinfoRepository.Find(r => r.wcstask_state != TaskState.TaskState_Assigned.ToString() |
| | | && endStationNo.Contains(r.wcstask_endPoint)); |
| | | if (executingTask.Count < 4) //å°äº4ï¼åå¯çæå»è¿è¾¹çä»»å¡ |
| | | { |
| | | //ç´æ¥å°ä»»å¡æ·»å å°AGVä»»å¡ |
| | | Dt_TaskWCSinfo outboundTask = GetOutboundTask(taskWCSinfoRepository, client); |
| | |
| | | if (null == rgvInfo) |
| | | { |
| | | string rgvTaskType = RGVTaskType.RgvTaskType_Inbound.ToString(); |
| | | //空æçååº |
| | | if (outboundTask.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Inbound.ToString())) |
| | | rgvTaskType = RGVTaskType.RgvTaskType_Inbound.ToString(); |
| | | //è½´æ¿åºåº |
| | | else if (outboundTask.wcstask_type.Equals(TaskType.TaskType_Box_Pallet_Outbound.ToString()) |
| | | if (outboundTask.wcstask_type.Equals(TaskType.TaskType_Box_Pallet_Outbound.ToString()) |
| | | || outboundTask.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Outbound.ToString())) |
| | | rgvTaskType = RGVTaskType.RgvTaskType_Outbound.ToString(); |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | //æåæºè¿è¡çä»»å¡ |
| | | Dt_TaskWCSinfo hisTask = taskWCSinfoRepository.FindFirst(r => r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString() |
| | | && (OutboundStationLayerNo.Contains(r.wcstask_startPoint) || OutboundStationLayerNo.Contains(r.wcstask_endPoint))); |
| | | if (null != hisTask) |
| | | { |
| | | string[] locationArray = null; |
| | | //空æçååº |
| | | if (hisTask.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Inbound.ToString())) |
| | | { |
| | | locationArray = hisTask.wcstask_endLocation.Split('-'); |
| | | //RGV䏿¥åè´§å®æç´æ¥æ§è¡ä¸ä¸ä¸ª |
| | | Dt_TaskRGVinfo rgvTask = taskRGVinfoRepository.FindFirst(r => r.rgvtask_wcsTaskNumber == hisTask.wcstask_taskNumber); |
| | | if (null != rgvTask && "2" == rgvTask.rgvtask_backup_2) |
| | | { |
| | | if (rgvTask.rgvtask_taskType.Contains(RGVTaskType.RgvTaskType_Inbound.ToString())) |
| | | { |
| | | Dt_TaskWCSinfo inboundTask = taskWCSinfoRepository.FindFirst(r => OutboundStationLayerNo.Contains(r.wcstask_endPoint) && r.wcstask_type == |
| | | TaskType.TaskType_Empty_Pallet_Inbound.ToString() && r.wcstask_state == TaskState.TaskState_RGV_Received.ToString()); |
| | | if (null != inboundTask) |
| | | ReInboundRequestStationAction(taskWCSinfoRepository, client, inboundTask); |
| | | else |
| | | OutboundRequestAction(taskWCSinfoRepository, client); |
| | | return; |
| | | } |
| | | } |
| | | string hoisterTaskNumber = client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), hoisterResultNo).ToString(); |
| | | string hoisterBarcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), hoisterResultNo).ToString(); |
| | | //é¿å
æåæºè¿æ²¡åå°±åæ¢äº |
| | | if (string.IsNullOrEmpty(hoisterTaskNumber) || string.IsNullOrEmpty(hoisterBarcode)) |
| | | return; |
| | | } |
| | | //è½´æ¿åºåº |
| | | else if (hisTask.wcstask_type.Equals(TaskType.TaskType_Box_Pallet_Outbound.ToString()) || hisTask.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Outbound.ToString())) |
| | | { |
| | | locationArray = hisTask.wcstask_startLocation.Split('-'); |
| | | } |
| | | //ç¼åå£è³è¾é线 |
| | | OutboundCZ_PLC(taskWCSinfoRepository, taskRGVinfoRepository, client); |
| | | |
| | | |
| | | } |
| | | else |
| | | { |
| | | Dt_TaskWCSinfo inboundTask = taskWCSinfoRepository.FindFirst(r => OutboundStationLayerNo.Contains(r.wcstask_endPoint) && r.wcstask_type == |
| | | TaskType.TaskType_Empty_Pallet_Inbound.ToString() && r.wcstask_state == TaskState.TaskState_RGV_Received.ToString()); |
| | | if (null != inboundTask) |
| | | ReInboundRequestStationAction(taskWCSinfoRepository, client, inboundTask); |
| | | else |
| | | OutboundRequestAction(taskWCSinfoRepository, client); //æåæºåºåºçæµç¨ |
| | | } |
| | | //空æå
¥åºç³è¯·(çæäºç©ºæå
¥åºä»»å¡) |
| | | InboundRequestAction(taskWCSinfoRepository, taskRGVinfoRepository, client); |
| | | |
| | | //空æå°ç¼åå£ |
| | | ReInboundKTP(taskWCSinfoRepository, client); |
| | | |
| | | //空æå
¥åºå£ï¼çæRGVä»»å¡,è¿è¡å
¥åº |
| | | RGV_InboundKTP(taskWCSinfoRepository, taskRGVinfoRepository, client); |
| | | |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | //夿åè£
å°æ¯å¦æè´§ |
| | | bool yzflag = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), wcsTask.wcstask_endPoint).ToString()); |
| | | bool yznoflag = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_NoLoadSleep.ToString(), wcsTask.wcstask_endPoint).ToString()); |
| | | if (!yzflag || yznoflag) |
| | | if (yzflag || !yznoflag) |
| | | continue; |
| | | |
| | | //夿ç¼åæ¶æ¯å¦æè´§ |
| | | bool flag = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), wcsTask.wcstask_startPoint).ToString()); |
| | | bool noflag = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_NoLoadSleep.ToString(), wcsTask.wcstask_startPoint).ToString()); |
| | | if (!flag || noflag) |
| | | if (flag || !noflag) |
| | | continue; |
| | | |
| | | |
| | |
| | | Dt_TaskWCSinfo wcsInfo = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == barcode && r.wcstask_type == TaskType.TaskType_Empty_Pallet_Inbound.ToString()); |
| | | if (null == wcsInfo) |
| | | { |
| | | //æåºåºä»»å¡,ä¸è½ä¸å |
| | | Dt_TaskRGVinfo executingRgvTask = taskRGVinfoRepository.FindFirst(r => r.rgvtask_areaCode == "OutboundArea" |
| | | && OutboundStationLayerNo.Contains(r.rgvtask_endNode)); |
| | | if (null != executingRgvTask) |
| | | return; |
| | | //è·å车轴åºåº |
| | | List<Dt_TaskWCSinfo> executingTask = taskWCSinfoRepository.Find(r => (r.wcstask_type.Equals(TaskType.TaskType_Box_Pallet_Outbound.ToString()) || |
| | | r.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Outbound.ToString())) && endStationNo.Contains(r.wcstask_endPoint)); |
| | | |
| | | //å½åå卿ªå®æçä»»å¡ å
¥åº |
| | | wcsInfo = taskWCSinfoRepository.FindFirst(r => OutboundStationLayerNo.Contains(r.wcstask_endPoint)); |
| | | if (null != wcsInfo) |
| | | //è·åæå¤å°æ¡åºåºçä»»å¡ |
| | | int LineExecucount = executingTask.Count(x => x.wcstask_state == TaskState.TaskState_Box_Out_Line_Executing.ToString()); |
| | | if (LineExecucount >= 4) |
| | | { |
| | | Dt_TaskRGVinfo rgvTask = taskRGVinfoRepository.FindFirst(r => r.rgvtask_wcsTaskNumber == wcsInfo.wcstask_taskNumber); |
| | | if (null != rgvTask) |
| | | { |
| | | //åè´§å®æ |
| | | if ("2" != rgvTask.rgvtask_backup_2) |
| | | return; |
| | | } |
| | | else |
| | | return; |
| | | } |
| | | |
| | | //夿æ¯å¦æå¯¹åºå±çåºåºä»»å¡ï¼ |
| | | //ç³è¯·å
¥åºä»»å¡ |
| | | WebResponseContent content = WMSApi.PostInboundRequstToWMS(barcode); |
| | | if (content.Status) |
| | | { |
| | | WmsTaskInfo wmsTask = JsonConvert.DeserializeObject<WmsTaskInfo>(content.Data.ToString()); |
| | | wcsInfo = CommonFunction.AddWCSEmptyInboundTask(wmsTask, taskWCSinfoRepository); |
| | | |
| | | string rgvTaskType = string.Empty; |
| | | if (wcsInfo.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Inbound.ToString())) |
| | | rgvTaskType = RGVTaskType.RgvTaskType_Inbound.ToString(); |
| | | //è½´æ¿åºåº |
| | | else if (wcsInfo.wcstask_type.Equals(TaskType.TaskType_Box_Pallet_Outbound.ToString()) |
| | | || wcsInfo.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Outbound.ToString())) |
| | | rgvTaskType = RGVTaskType.RgvTaskType_Outbound.ToString(); |
| | | |
| | | taskWCSinfoRepository.DbContextBeginTransaction(() => |
| | | { |
| | | Dt_TaskRGVinfo rgvInfo = GetRGVTask(taskRGVinfoRepository, wcsInfo, rgvTaskType); |
| | | taskRGVinfoRepository.Add(rgvInfo, true); |
| | | |
| | | wcsInfo.wcstask_state = TaskState.TaskState_RGV_Received.ToString(); |
| | | taskWCSinfoRepository.Add(wcsInfo, true); |
| | | return content.OK(); |
| | | }); |
| | | client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 1); |
| | | |
| | | |
| | | } |
| | | else |
| | | { |
| | | client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 2); |
| | | throw new Exception("å
¥åºç³è¯·å¤±è´¥:" + content.Message); |
| | | |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | //夿æå¤å°æ¡å¨ç¼åæ¶ç |
| | | int RGV_Finishedcount = executingTask.Count(x => x.wcstask_state != TaskState.TaskState_Box_Out_Line_Executing.ToString() |
| | | && x.wcstask_state != TaskState.TaskState_Assigned.ToString()); |
| | | if (RGV_Finishedcount == 0) |
| | | { |
| | | //ç³è¯·å
¥åºä»»å¡ |
| | | WebResponseContent content = WMSApi.PostInboundRequstToWMS(barcode); |
| | | if (content.Status) |
| | | { |
| | | WmsTaskInfo wmsTask = JsonConvert.DeserializeObject<WmsTaskInfo>(content.Data.ToString()); |
| | | wcsInfo = CommonFunction.AddWCSEmptyInboundTask(wmsTask, taskWCSinfoRepository); |
| | | taskWCSinfoRepository.Add(wcsInfo, true); |
| | | client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 1); |
| | | |
| | | } |
| | | else |
| | | { |
| | | client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 2); |
| | | throw new Exception("å
¥åºç³è¯·å¤±è´¥:" + content.Message); |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |