Admin
2025-12-23 3f016f3de352db04e5c2d99dae9e4b7472198359
ÏîÄ¿´úÂë/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundAreaDispathAction.cs
@@ -3,6 +3,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Metadata;
using System.Text;
using System.Threading;
using WIDESEA_Common;
@@ -248,48 +249,25 @@
        {
            try
            {
                string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), ReInboundRequestStationNo).ToString();
                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 (!string.IsNullOrEmpty(barcode) && !"0".Equals(barcode) && load)
                if (R_Line_PLCDispatch ==1 && load)
                {
                    Dt_TaskWCSinfo wcsInfo = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == barcode && r.wcstask_type == TaskType.TaskType_Empty_Pallet_Inbound.ToString());
                    if (null == wcsInfo)
                    string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), ReInboundRequestStationNo).ToString();
                    if (!string.IsNullOrEmpty(barcode) && !"0".Equals(barcode))
                    {
                        //获取车轴出库
                        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));
                        //获取有多少条出库的任务
                        int LineExecucount = executingTask.Count(x => x.wcstask_state == TaskState.TaskState_Box_Out_Line_Executing.ToString());
                        if (LineExecucount >= 4)
                        Dt_TaskWCSinfo wcsInfo = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == barcode && r.wcstask_type == TaskType.TaskType_Empty_Pallet_Inbound.ToString());
                        if (null == wcsInfo)
                        {
                            //判断是否有对应层的出库任务,
                            //申请入库任务
                            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);
                            //获取车轴出库
                            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));
                            }
                            else
                            //获取有多少条出库的任务
                            int LineExecucount = executingTask.Count(x => x.wcstask_state == TaskState.TaskState_Box_Out_Line_Executing.ToString());
                            if (LineExecucount >= 4)
                            {
                                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)
@@ -297,24 +275,48 @@
                                    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);
                                    client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 2);
                                }
                                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, 2);
                                    }
                                    else
                                    {
                                        throw new Exception("入库申请失败:" + content.Message);
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        throw new Exception("入库申请失败:读取到的空托盘条码为空,读取内容:"+ barcode);
                    }
                }
            }
            catch (Exception ex)
            {
                client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 3);
                Console.Out.WriteLine(DateTime.Now + ex.Message);
            }
        }