| | |
| | | using System.Threading; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Common.CutomerModel; |
| | | using WIDESEA_Common.LogEnum; |
| | | using WIDESEA_Common.TaskEnum; |
| | | using WIDESEA_Common.Tools; |
| | | using WIDESEA_Core.Utilities; |
| | |
| | | /// åºåºçå± |
| | | /// </summary> |
| | | private static List<string> OutboundStationLayerNo = new List<string>() { "60101", "60102", "60103", "60104", "60105", "60106", "60107" }; |
| | | //å
¥åºæçç³è¯·ç«å° |
| | | /// <summary> |
| | | /// å
¥åºæçç³è¯·ç«å° |
| | | /// </summary> |
| | | private static string ReInboundRequestStationNo = "90101"; |
| | | //åºåºç«å°äº¤äº |
| | | //private static string OutboundStationNo = "90201"; |
| | |
| | | /// <param name="client"></param> |
| | | public static string currentModel = "Inbound"; |
| | | static int flag = 0; |
| | | // åè£
å°ç¼åä½åå
¸ |
| | | public static Dictionary<string, string> PlatformDict = new Dictionary<string, string> |
| | | { |
| | | ["70101"] = "80101", |
| | | ["70103"] = "80103", |
| | | ["70104"] = "80104", |
| | | ["70106"] = "80106" |
| | | }; |
| | | public static void OutboundAreaDispathAction(IDt_TaskWCSinfoRepository taskWCSinfoRepository, IDt_TaskRGVinfoRepository taskRGVinfoRepository, PLCClient client) |
| | | { |
| | | try |
| | |
| | | //çæå¯ä¸åç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ï¼åå¯çæå»è¿è¾¹çä»»å¡ |
| | | // è¿éè¦åä¸ä¸ªé»è¾ï¼å°±æ¯æè·åçä»»å¡ï¼åªæå¯¹åºçç«å°ä¸ºç©ºï¼ææè½ä¸åï¼è¿æ ·æ¹çè¯ï¼ç©ºæçå
¥åºä¹è¦æ¹ |
| | | if (executingTask.Count < 8) //å°äº8ï¼åå¯çæå»è¿è¾¹çä»»å¡ |
| | | { |
| | | //ç´æ¥å°ä»»å¡æ·»å å°AGVä»»å¡ |
| | | Dt_TaskWCSinfo outboundTask = GetOutboundTask(taskWCSinfoRepository, client); |
| | |
| | | } |
| | | } |
| | | |
| | | //ç¼åå£è³è¾é线 |
| | | //ç¼åå£(ç¼åæ¶)è³è¾é线 |
| | | OutboundCZ_PLC(taskWCSinfoRepository, taskRGVinfoRepository, client); |
| | | |
| | | //空æå
¥åºç³è¯·(çæäºç©ºæå
¥åºä»»å¡) |
| | | InboundRequestAction(taskWCSinfoRepository, taskRGVinfoRepository, client); |
| | | |
| | | //空æå°ç¼åå£ |
| | | //空æå°ç¼åå£(ç¼åæ¶) |
| | | ReInboundKTP(taskWCSinfoRepository, client); |
| | | |
| | | //空æå
¥åºå£ï¼çæRGVä»»å¡,è¿è¡å
¥åº |
| | |
| | | Dt_TaskWCSinfo wcsTask = item.OrderBy(r => r.wcstask_createTime).FirstOrDefault(); |
| | | if (null != wcsTask) |
| | | { |
| | | //夿åè£
å°æ¯å¦æè´§ |
| | | 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()); |
| | | //夿åè£
å°æ¯å¦æè´§ ä¹å°±æ¯å¤æ80101é£è¾¹ |
| | | bool yzflag = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), PlatformDict[wcsTask.wcstask_endPoint]).ToString()); |
| | | bool yznoflag = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_NoLoadSleep.ToString(), PlatformDict[wcsTask.wcstask_endPoint]).ToString()); |
| | | if (yzflag || !yznoflag) |
| | | continue; |
| | | |
| | | //夿ç¼åæ¶æ¯å¦æè´§ |
| | | bool flag = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), wcsTask.wcstask_startPoint).ToString()); |
| | | //夿ç¼åæ¶æ¯å¦æè´§ |
| | | 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) |
| | | continue; |
| | | |
| | | |
| | | //åä¸å±ææ§è¡ä¸çä»»å¡ä¸æ·»å |
| | | Dt_TaskWCSinfo executingTask = taskWCSinfoRepository.FindFirst(r => (r.wcstask_startPoint == wcsTask.wcstask_startPoint || r.wcstask_endPoint == wcsTask.wcstask_endPoint) |
| | |
| | | if (null != executingTask) |
| | | continue; |
| | | |
| | | |
| | | List<Dt_TaskWCSinfo> listTarget = taskWCSinfoRepository.Find(r => r.wcstask_endPoint == wcsTask.wcstask_endPoint && |
| | | r.wcstask_state != TaskState.TaskState_Assigned.ToString()); |
| | | |
| | | string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), wcsTask.wcstask_endPoint).ToString(); |
| | | if (string.IsNullOrEmpty(barcode) || "0".Equals(barcode)) |
| | | if(listTarget != null && listTarget.Count >= 2) |
| | | { |
| | | if (null != listTarget && listTarget.Count > 1) |
| | | continue; |
| | | else |
| | | { |
| | | wcsInfo = wcsTask; |
| | | break; |
| | | } |
| | | continue; |
| | | } |
| | | else |
| | | { |
| | | if (null != listTarget && listTarget.Count > 0) |
| | | continue; |
| | | else |
| | | { |
| | | wcsInfo = wcsTask; |
| | | break; |
| | | } |
| | | wcsInfo = wcsTask; |
| | | } |
| | | |
| | | string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), wcsTask.wcstask_endPoint).ToString(); |
| | | |
| | | //if (string.IsNullOrEmpty(barcode) || "0".Equals(barcode)) |
| | | //{ |
| | | // if (null != listTarget && listTarget.Count > 2) |
| | | // continue; |
| | | // else |
| | | // { |
| | | // wcsInfo = wcsTask; |
| | | // break; |
| | | // } |
| | | //} |
| | | //else |
| | | //{ |
| | | // if (null != listTarget && listTarget.Count > 1) |
| | | // continue; |
| | | // else |
| | | // { |
| | | // wcsInfo = wcsTask; |
| | | // break; |
| | | // } |
| | | //} |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | //foreach (var item in listTask) |
| | | //{ |
| | | // //åä¸å±ææ§è¡ä¸çä»»å¡ä¸æ·»å |
| | | // Dt_TaskWCSinfo executingTask = taskWCSinfoRepository.FindFirst(r => (r.wcstask_startPoint == item.wcstask_startPoint || r.wcstask_endPoint == item.wcstask_endPoint) |
| | | // && (r.wcstask_state == TaskState.TaskState_RGV_Received.ToString() || r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString())); |
| | | // if (null != executingTask) |
| | | // continue; |
| | | |
| | | // //åä¸ç®æ ä½ç½®çä¸è½åæ¶åº |
| | | // // Dt_TaskWCSinfo endTask = taskWCSinfoRepository.FindFirst(r => r.wcstask_endPoint == item.wcstask_endPoint && |
| | | // //(r.wcstask_state == TaskState.TaskState_RGV_Received.ToString() || r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString())); |
| | | // // if (null != endTask) |
| | | // // continue; |
| | | |
| | | // List<Dt_TaskWCSinfo> listTarget = taskWCSinfoRepository.Find(r => r.wcstask_endPoint == item.wcstask_endPoint && |
| | | // r.wcstask_state != TaskState.TaskState_Assigned.ToString()); |
| | | |
| | | // string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), item.wcstask_endPoint).ToString(); |
| | | // if (string.IsNullOrEmpty(barcode) || "0".Equals(barcode)) |
| | | // { |
| | | // if (null != listTarget && listTarget.Count > 1) |
| | | // continue; |
| | | // else |
| | | // { |
| | | // wcsInfo = item; |
| | | // break; |
| | | // } |
| | | // } |
| | | // else |
| | | // { |
| | | // if (null != listTarget && listTarget.Count > 0) |
| | | // continue; |
| | | // else |
| | | // { |
| | | // wcsInfo = item; |
| | | // break; |
| | | // } |
| | | // } |
| | | //} |
| | | return wcsInfo; |
| | | } |
| | | |
| | |
| | | { |
| | | try |
| | | { |
| | | string barcode = "901010"; |
| | | //string barcode = "901010"; |
| | | int R_Line_PLCDispatch = int.Parse(client.ReadValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo).ToString()); |
| | | bool load = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), ReInboundRequestStationNo).ToString()); |
| | | if (R_Line_PLCDispatch ==1 && load) |
| | | if (R_Line_PLCDispatch == 1 && load) |
| | | { |
| | | //string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), ReInboundRequestStationNo).ToString(); |
| | | |
| | | string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), ReInboundRequestStationNo).ToString(); |
| | | // è¿éè¦å ä¸ä¸ªå¤æï¼å¦ææ¿åæ¥ç空æçæ¯800001ï¼ä½æ¯ææä¸æ¡è¿ä¸ªæçç任塿¯800001è¿æ²¡æå°æå®çåè£
å°ï¼æä»¥æè¦å®æè¿ä¸ªä»»å¡ |
| | | Dt_TaskWCSinfo IsTask = taskWCSinfoRepository.FindFirst(x => x.wcstask_barcode == barcode && x.wcstask_state == TaskState.TaskState_Empty_Out_Line_Executing.ToString()); |
| | | if (IsTask != null) |
| | | { |
| | | //卿¤å®æè¯¥ç©ºæåºåºä»»å¡ |
| | | WebResponseContent content = taskWCSinfoRepository.DbContextBeginTransaction(() => |
| | | { |
| | | //䏿¥WMSä»»å¡å®æ |
| | | content = WMSApi.TellWmsTaskFinished(IsTask.wcstask_barcode); |
| | | if (content.Status) |
| | | { |
| | | //ç§»å¨ä»»å¡å°åå²è¡¨ |
| | | Dt_TaskWCSinfo_HtyRepository taskWCSinfo_HtyRepository = new Dt_TaskWCSinfo_HtyRepository(taskWCSinfoRepository.DbContext); |
| | | IsTask.wcstask_state = TaskState.TaskState_Finished.ToString(); |
| | | CommonFunction.AddWcsTaskToHistory(IsTask, taskWCSinfoRepository, taskWCSinfo_HtyRepository); |
| | | } |
| | | else |
| | | throw new Exception($"{DateTime.Now}䏿¥WMSä»»å¡å®æåºéï¼åå ï¼ã{content.Message}ã"); |
| | | |
| | | return content; |
| | | }); |
| | | string str = string.Empty; |
| | | if (content.Status) |
| | | str = $" {DateTime.Now}䏿¥WMSåºåºå®ææå,ãæå¨å¹²æ°åºåºæ²¡æå°è¾¾æå®åè£
å°ç¹ä½ï¼æå¨æ¿å90101ããTaskState_ConveyorLineExecutingãï¼æçå·:{IsTask.wcstask_barcode},ä»»å¡å·ï¼{IsTask.wcstask_taskNumber}"; |
| | | else |
| | | str = $" {DateTime.Now}䏿¥WMSåºåºå®æå¤±è´¥ãæå¨å¹²æ°åºåºæ²¡æå°è¾¾æå®åè£
å°ç¹ä½ï¼æå¨æ¿å90101ããTaskState_ConveyorLineExecutingãï¼æçå·:{IsTask.wcstask_barcode},ä»»å¡å·ï¼{IsTask.wcstask_taskNumber}"; |
| | | |
| | | WriteLog.Info(IsTask.wcstask_endPoint).Write(str, IsTask.wcstask_endPoint); |
| | | } |
| | | |
| | | if (!string.IsNullOrEmpty(barcode) && !"0".Equals(barcode)) |
| | | { |
| | | Dt_TaskWCSinfo wcsInfo = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == barcode && r.wcstask_type == TaskType.TaskType_Empty_Pallet_Inbound.ToString()); |
| | |
| | | r.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Outbound.ToString())) && endStationNo.Contains(r.wcstask_endPoint)); |
| | | |
| | | //è·åæå¤å°æ¡åºåºçä»»å¡ |
| | | int LineExecucount = executingTask.Count(x => x.wcstask_state == TaskState.TaskState_Box_Out_Line_Executing.ToString()); |
| | | if (LineExecucount >= 4) |
| | | int LineExecucount = executingTask.Count(x => x.wcstask_state == TaskState.TaskState_Box_Out_Line_Executing.ToString() || x.wcstask_state == TaskState.TaskState_Empty_Out_Line_Executing.ToString()); |
| | | if (LineExecucount >= 8) |
| | | { |
| | | //夿æ¯å¦æå¯¹åºå±çåºåºä»»å¡ï¼ |
| | | //ç³è¯·å
¥åºä»»å¡ |
| | |
| | | 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, 2); |
| | | //client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 2); |
| | | } |
| | | else |
| | | { |
| | | 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_Empty_Out_Line_Executing.ToString() |
| | | && x.wcstask_state != TaskState.TaskState_Assigned.ToString()); |
| | | if (RGV_Finishedcount == 0) |
| | | { |
| | |
| | | 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, 2); |
| | | //client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 2); |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("å
¥åºç³è¯·å¤±è´¥:" + content.Message); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |