Admin
3 天以前 bd6818fc9d40f343547bafca0743658f3c0379dc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
using HslCommunication;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using WIDESEA_Common;
using WIDESEA_Common.CutomerModel;
using WIDESEA_Common.Tools;
using WIDESEA_Core.Utilities;
using WIDESEA_Entity.DomainModels;
using WIDESEA_Services;
using WIDESEA_Services.IRepositories;
using WIDESEA_Services.Repositories;
using WIDESEA_Services.Services;
using WIDESEA_WCS.WCSClient;
 
namespace WIDESEA_WCS.Jobs.ConveyorLine.OutboundArea
{
    public partial class OutboundAreaDispatch
    {
 
        /// <summary>
        /// 出库区空托盘回库
        /// </summary>
        /// <param name="taskWCSinfoRepository"></param>
        /// <param name="client"></param>
        //public static void ReInboundRequestStationAction(IDt_TaskWCSinfoRepository taskWCSinfoRepository, PLCClient client, string barcode)
        //{
        //    try
        //    {
        //        //查询任务
        //        Dt_TaskWCSinfo wcsInfo = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == barcode && r.wcstask_type == TaskType.TaskType_Empty_Pallet_Inbound.ToString());
        //        if (null == wcsInfo)
        //        {
        //            //当前存在未完成的任务
        //            wcsInfo = taskWCSinfoRepository.FindFirst(r => OutboundStationLayerNo.Contains(r.wcstask_endPoint));
        //            if (null != wcsInfo)
        //                return;
 
        //            //申请入库任务
        //            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);
        //            }
        //            else
        //                throw new Exception("入库申请失败:" + content.Message);
        //        }
        //        string lineCode = "ReIboundArea";
        //        if (null != wcsInfo)
        //        {
        //            //读取逻辑控制值
        //            int logicValue = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Logic.ToString(), lineCode).ToString());
        //            if ((logicValue == 1 || logicValue == 2))
        //            {
        //                WriteTaskInfo.WriteTaskInfoAction(wcsInfo, client, lineCode);
        //            }
        //            string rfidResult = client.ReadValue(CLineInfoDBName.W_Line_Barcode.ToString(), lineCode).ToString();
        //            if (!wcsInfo.wcstask_barcode.Equals(rfidResult))
        //                return;
        //            logicValue = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Logic.ToString(), lineCode).ToString());
        //            //说明站台已经收到任务数据,等待WCS的启动指令
        //            if (logicValue == 3)
        //            {
        //                //启动任务
        //                client.WriteValue(CLineInfoDBName.W_Line_Logic.ToString(), lineCode, 1);
        //            }
        //            else if (logicValue == 4 || logicValue == 5)
        //            {
        //                //提升机执行中
        //                if (wcsInfo.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString())
        //                    return;
        //                if (!WriteRGVState(client, true))
        //                    return;
        //                wcsInfo.wcstask_state = TaskState.TaskState_HoisterExecuting.ToString();
        //                wcsInfo.wcstask_dispatcherTime = DateTime.Now;
        //                taskWCSinfoRepository.Update(wcsInfo, true);
        //            }
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        WriteLog.Info(ReInboundRequestStationNo).Write($"{ DateTime.Now }回库站台调度失败:{ex.Message}", ReInboundRequestStationNo);
        //    }
        //}
 
 
 
        public static void ReInboundRequestStationAction(IDt_TaskWCSinfoRepository taskWCSinfoRepository, PLCClient client, Dt_TaskWCSinfo wcsInfo)
        {
            try
            {
                string lineCode = "ReIboundArea";
                if (null != wcsInfo)
                {
                    //读取逻辑控制值
                    int logicValue = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Logic.ToString(), lineCode).ToString());
                    if ((logicValue == 1 || logicValue == 2))
                    {
                        WriteTaskInfo.WriteTaskInfoAction(wcsInfo, client, lineCode);
                    }
                    string rfidResult = client.ReadValue(CLineInfoDBName.W_Line_Barcode.ToString(), lineCode).ToString();
                    if (!wcsInfo.wcstask_barcode.Equals(rfidResult))
                        return;
                    logicValue = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Logic.ToString(), lineCode).ToString());
                    //说明站台已经收到任务数据,等待WCS的启动指令
                    if (logicValue == 3)
                    {
                        //启动任务
                        client.WriteValue(CLineInfoDBName.W_Line_Logic.ToString(), lineCode, 1);
                    }
                    else if (logicValue == 4 || logicValue == 5)
                    {
                        //提升机执行中
                        if (wcsInfo.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString())
                            return;
                        wcsInfo.wcstask_state = TaskState.TaskState_HoisterExecuting.ToString();
                        wcsInfo.wcstask_dispatcherTime = DateTime.Now;
                        taskWCSinfoRepository.Update(wcsInfo, true);
                    }
                }
            }
            catch (Exception ex)
            {
                WriteLog.Info(ReInboundRequestStationNo).Write($"{ DateTime.Now }回库站台调度失败:{ex.Message}", ReInboundRequestStationNo);
            }
        }
 
 
    }
}