xiaojiao
2026-01-24 c5f01e9a882b16f534166d033312c5c8ba8d94dd
ÏîÄ¿´úÂë/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundRequestAction.cs
@@ -20,7 +20,7 @@
    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.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();
@@ -44,16 +44,29 @@
                //查询出库待任务
                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()
                    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() || 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();
                    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;
                }
                // è¿™é‡Œè¦åŠ ä¸€ä¸ªåˆ¤æ–­ æˆ‘先去70101的 è‚¯å®šè¦å…ˆå‡ºåŽ»ï¼Œå“ªæ€•è¿™ä¸ªå…ˆç”Ÿæˆçš„ä»»åŠ¡å—æ¢å±‚çš„å½±å“
                //读取逻辑控制值  æŸ¥çœ‹çº¿ä½“状态,准备给线体下发任务信息
                int logicValue = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Logic.ToString(), lineCode).ToString());
@@ -71,9 +84,9 @@
                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;
@@ -86,7 +99,7 @@
                else if (logicValue == 4 || 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())
@@ -110,7 +123,7 @@
                                state = TaskState.TaskState_Empty_Out_Line_Executing.ToString();
                            }
                            if (wcsInfoPLC.wcstask_state == state)
                                return true;
                            wcsInfoPLC.wcstask_state = state;
@@ -119,12 +132,12 @@
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                WriteLog.Info(lineCode).Write($"{ DateTime.Now }出库站台调度失败:{ex.Message}", lineCode);
                WriteLog.Info(lineCode).Write($"{DateTime.Now}出库站台调度失败:{ex.Message}", lineCode);
            }
            return true;
        }