Admin
4 天以前 bd6818fc9d40f343547bafca0743658f3c0379dc
ÏîÄ¿´úÂë/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundAreaDispathAction.cs
@@ -24,7 +24,7 @@
        /// <summary>
        /// å‡ºåº“的层
        /// </summary>
        private static List<string> OutboundStationLayerNo = new List<string>() { "90100", "90200", "90300", "90400", "90500", "90600", "90700", "90800" };
        private static List<string> OutboundStationLayerNo = new List<string>() { "60100", "60200", "60300", "60400", "60500", "60600", "60700"};
        //入库托盘申请站台
        private static string ReInboundRequestStationNo = "90101";
        //出库站台交互
@@ -43,19 +43,17 @@
            try
            {
                //出库完成
                OutboundCompleteAction(taskWCSinfoRepository, client);
                //读取提升机是否正常
                //滚筒线状态
                string hoisterResult = client.ReadValue(CLineInfoDBName.R_Line_DeviceNormal.ToString(), hoisterResultNo).ToString();
                //提升机状态
                string result = client.Read("DB506.36.0", "bool").ToString();
                if (!bool.Parse(hoisterResult) || !bool.Parse(result))
                    return;
                //入库申请
                OutboundCompleteAction(taskWCSinfoRepository, client);  //压装出库口任务完成
                //空托入库申请
                InboundRequestAction(taskWCSinfoRepository, taskRGVinfoRepository, client);
                //测试阶段注释的内容(后续需要使用的)
                //增加补丁.增加车存储中有问题.再写
                int logicValue = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Logic.ToString(), "OutboundArea").ToString());
                /*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();
@@ -89,19 +87,28 @@
                    }
                }
                else
                {
                    flag = 0;
                }*/
                List<Dt_TaskWCSinfo> executingTask = taskWCSinfoRepository.Find(r => (r.wcstask_state == TaskState.TaskState_RGV_Received.ToString()
                || r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString())
                 && (OutboundStationLayerNo.Contains(r.wcstask_startPoint) || OutboundStationLayerNo.Contains(r.wcstask_endPoint)));
                if (executingTask.Count < 3)
                //测试阶段注释的内容*/
                //查询出库至压装台的任务有多少进行中
                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)
                {
                    //直接将任务添加到AGV任务
                    Dt_TaskWCSinfo outboundTask = GetOutboundTask(taskWCSinfoRepository, client);
                    if (null != outboundTask)
                    {
                        //查找是否有该托盘条码任务,如果没有则进行添加RGV任务
                        Dt_TaskRGVinfo rgvInfo = taskRGVinfoRepository.FindFirst(r => r.rgvtask_barCode == outboundTask.wcstask_barcode
                        && r.rgvtask_wcsTaskNumber == outboundTask.wcstask_taskNumber);
                        if (null == rgvInfo)
                        {
                            string rgvTaskType = RGVTaskType.RgvTaskType_Inbound.ToString();
@@ -128,8 +135,6 @@
                && (OutboundStationLayerNo.Contains(r.wcstask_startPoint) || OutboundStationLayerNo.Contains(r.wcstask_endPoint)));
                if (null != hisTask)
                {
                    //提升机层
                    string hoisterLayer = client.ReadValue(CLineInfoDBName.R_Line_Layer.ToString(), hoisterResultNo).ToString();
                    string[] locationArray = null;
                    //空托盘回库
                    if (hisTask.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Inbound.ToString()))
@@ -157,12 +162,12 @@
                            return;
                    }
                    //轴承出库
                    else if (hisTask.wcstask_type.Equals(TaskType.TaskType_Box_Pallet_Outbound.ToString())
                        || hisTask.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Outbound.ToString()))
                    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('-');
                    //说明提升机到达了目标层
                    if (int.Parse(locationArray[0]).ToString() == hoisterLayer)
                        WriteRGVState(client, false);// å†™å…¥RGV开始执行
                    }
                }
                else
                {
@@ -171,7 +176,7 @@
                    if (null != inboundTask)
                        ReInboundRequestStationAction(taskWCSinfoRepository, client, inboundTask);
                    else
                        OutboundRequestAction(taskWCSinfoRepository, client);
                        OutboundRequestAction(taskWCSinfoRepository, client);   //提升机出库的流程
                }
            }
            catch (Exception ex)
@@ -219,12 +224,26 @@
                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());
                    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)
                        continue;
                    //同一层有执行中的任务不添加
                    Dt_TaskWCSinfo executingTask = taskWCSinfoRepository.FindFirst(r => (r.wcstask_startPoint == wcsTask.wcstask_startPoint || r.wcstask_endPoint == wcsTask.wcstask_endPoint)
                    && (r.wcstask_state == TaskState.TaskState_RGV_Received.ToString() || r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString()));
                    if (null != executingTask)
                        continue;
                    List<Dt_TaskWCSinfo> listTarget = taskWCSinfoRepository.Find(r => r.wcstask_endPoint == wcsTask.wcstask_endPoint &&
                    r.wcstask_state != TaskState.TaskState_Assigned.ToString());