xiaojiao
7 天以前 b532ba8806996246ab7a0896bf34b884c47dee7e
ÏîÄ¿´úÂë/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundAreaDispathAction.cs
@@ -1,5 +1,6 @@
using HslCommunication;
using Newtonsoft.Json;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -95,6 +96,30 @@
                    LogRecord.WriteLog(LogEnum.Errer, str.ToString());
                }
            }
            // è¿™é‡Œè¦å†™ä¸€ä¸ª æœ‰ä¸€äº›æ‰˜ç›˜å·²ç»å‡ºåˆ°å¤–面去了 ä½†çŠ¶æ€è¿˜æ˜¯æå‡æœºè¿è¡Œä¸­ å¯¼è‡´åŽé¢çš„发不出去
            Dt_TaskWCSinfo OutTask = taskWCSinfoRepository.Find(r =>
            r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString()
            && endStationNo.Contains(r.wcstask_endPoint)
            ).FirstOrDefault();
            if (OutTask != null)
            {
                double secondsPassend = (DateTime.Now - OutTask.wcstask_dispatcherTime.Value).TotalSeconds;
                if (secondsPassend > 38) // å¦‚果大于38秒 è¿˜æ²¡ç”¨æå‡æœºå®Œæˆ å°±è¦æ‰‹åЍ
                {
                    string state = TaskState.TaskState_Box_Out_Line_Executing.ToString();
                    if (OutTask.wcstask_type == TaskType.TaskType_Empty_Pallet_Outbound.ToString())
                    {
                        state = TaskState.TaskState_Empty_Out_Line_Executing.ToString();
                    }
                    OutTask.wcstask_state = state;
                    OutTask.wcstask_dispatcherTime = DateTime.Now;
                    taskWCSinfoRepository.Update(OutTask, true);
                    string str = $"出库区 å‡ºåº“ æå‡æœºå·²ç»å†…的托盘已经出去 ä½†çŠ¶æ€è¿˜æ˜¯æå‡æœºæ‰§è¡Œä¸­... {DateTime.Now},托盘号:{OutTask.wcstask_barcode},任务号:{OutTask.wcstask_taskNumber}";
                    LogRecord.WriteLog(LogEnum.Errer, str.ToString());
                }
            }
        }
        public static void OutboundAreaDispathAction(IDt_TaskWCSinfoRepository taskWCSinfoRepository, IDt_TaskRGVinfoRepository taskRGVinfoRepository, PLCClient client)
        {
@@ -205,23 +230,20 @@
                        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()));
                    //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;
                    // è‚–ä½¼ å°†ä¸Šé¢ä¿®æ”¹æˆä¸‹é¢
                    Dt_TaskWCSinfo executingTask = taskWCSinfoRepository.FindFirst(r =>
                    (r.wcstask_startPoint == wcsTask.wcstask_startPoint)
                    && (r.wcstask_state == TaskState.TaskState_RGV_Received.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());
                    //if (listTarget != null && listTarget.Count > 1)
                    //{
                    //    continue;
                    //}
                    //else
                    //{
                    //    wcsInfo = wcsTask;
                    //}
                    string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), wcsTask.wcstask_endPoint).ToString();
@@ -303,7 +325,6 @@
                return BarcodeLockDict[barcode].Item1;
            }
        }
        public static void InboundRequestAction(IDt_TaskWCSinfoRepository taskWCSinfoRepository, IDt_TaskRGVinfoRepository taskRGVinfoRepository, PLCClient client)
        {
            try
@@ -313,9 +334,6 @@
                if (R_Line_PLCDispatch == 1 && load)
                {
                    string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), ReInboundRequestStationNo).ToString();
                    // è¿™é‡Œè¦åŠ ä¸€ä¸ªåˆ¤æ–­ï¼Œå¦‚æžœæ‹¿å›žæ¥çš„ç©ºæ‰˜ç›˜æ˜¯800001,但是我有一条这个托盘的任务是800001还没有到指定的压装台,所以我要完成这个任务
                    if (!string.IsNullOrEmpty(barcode) && !"0".Equals(barcode))
                    {
@@ -332,11 +350,12 @@
                            && (endStationNo.Contains(x.wcstask_endPoint)));
                            if (IsTask != null)
                            {
                                //在此完成该空托出库任务
                                // è¿™é‡Œè¦åŠ ä¸€ä¸ªåˆ¤æ–­ï¼Œå¦‚æžœæ‹¿å›žæ¥çš„ç©ºæ‰˜ç›˜æ˜¯800001,但是我有一条这个托盘的任务是800001还没有到指定的压装台,所以我要完成这个任务
                                // åœ¨æ­¤å®Œæˆè¯¥ç©ºæ‰˜å‡ºåº“任务
                                WebResponseContent content = taskWCSinfoRepository.DbContextBeginTransaction(() =>
                                {
                                    //上报WMS任务完成
                                    content = WMSApi.TellWmsTaskFinished(IsTask.wcstask_barcode);
                                    content = WMSApi.TellWmsTaskFinished(IsTask.wcstask_barcode,IsTask.wcstask_backUp_2);
                                    if (content.Status)
                                    {
                                        //移动任务到历史表
@@ -376,10 +395,6 @@
                                    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);
                                        try
                                        {
                                            WmsTaskInfo wmsTask = JsonConvert.DeserializeObject<WmsTaskInfo>(content.Data.ToString());
@@ -468,6 +483,8 @@
            catch (Exception ex)
            {
                client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 3);
                LogRecord.WriteLog(LogEnum.Errer, DateTime.Now.ToString() + ex.Message.ToString());
                Console.Out.WriteLine(DateTime.Now + ex.Message);
            }
        }