333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
using IWareCC.CacheInfo;
using IWareCC.CacheInfo.Container;
using IWareCC.Conveyor.Entity;
using IWareCC.ORM;
using IWareCC.Properties;
using IWareCommon.Enum.Common;
using IWareCommon.Help;
using IWareCommon.Util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
 
namespace IWareCC.Conveyor.Handle.FinishConveyorTaskAuto
{
    public class 等待输送线完成任务 : IHandler
    {
        /// <summary>
        /// 该节点的下一个节点
        /// </summary>
        private IHandler nextHandler = null;
        public IHandler NextHandler
        {
            set { nextHandler = value; }
        }
 
        private ConveyorEntity Conveyor;
 
        /// <summary>
        /// 任务容器
        /// </summary>
        private PartTaskContainer DecompositionTaskContainer;
 
 
        public 等待输送线完成任务(PartTaskContainer decompositionTaskContainer)
        {
 
            this.DecompositionTaskContainer = decompositionTaskContainer;
        }
 
 
        public void Handle()
        {
            using (var dbModel = new DbModel())
            {
                try
                {
                    string toname = "";
 
                    if (DecompositionTaskContainer.DecompositionTask.sourceplace == "1008" || DecompositionTaskContainer.DecompositionTask.sourceplace == "1003" || DecompositionTaskContainer.DecompositionTask.sourceplace == "1001")
                    {
                        toname = "Line" + DecompositionTaskContainer.DecompositionTask.sourceplace;
                    }
                    else
                    {
                        if (DecompositionTaskContainer.DecompositionTask.toplace == "1011" || DecompositionTaskContainer.DecompositionTask.toplace == "1005")//此两处要判断的是后一位的位置的光电信号
                        {
                            toname = "Line" + (int.Parse(DecompositionTaskContainer.DecompositionTask.toplace) + 1).ToString();
                        }
                        else
                        {
                            toname = "Line" + DecompositionTaskContainer.DecompositionTask.toplace;
                        }
                    }
                    var TConveyor = CacheEntity.Conveyors.FirstOrDefault(x => x.ConveyorName == toname);
                    if (TConveyor != null)
                    {
                        Conveyor = TConveyor;
                    }
                    else
                    {
                        return;
                    }
 
 
                    bool flag1 = false;
                    if ((DecompositionTaskContainer.DecompositionTask.toplace == DecompositionTaskContainer.DecompositionTask.sourceplace) || (DecompositionTaskContainer.DecompositionTask.toplace == "1007" && DecompositionTaskContainer.DecompositionTask.sourceplace == "1008") || (DecompositionTaskContainer.DecompositionTask.toplace == "1002" && DecompositionTaskContainer.DecompositionTask.sourceplace == "1003"))
                    {
                        flag1 = true;
                    }
                    else
                    {
                        if (Conveyor != null && (Conveyor.RPh1 == 1 && Conveyor.RPh2 == 1))//传感器已检测到有小托盘
                        {
                            flag1 = true;
                        }
                        LogTextHelper.WriteLine(Resources.LogDir + @"/完成输送线任务/" + Conveyor.ConveyorName, "等待输送线完成任务:获取到光电1{0},光电2{2}", Conveyor.RPh1, Conveyor.RPh2);
                    }
                    if (!flag1)
                    {
                        LogTextHelper.WriteLine(Resources.LogDir + @"/完成输送线任务/" + Conveyor.ConveyorName, "等待输送线完成任务:{0}", "发送OPC失败");
                        string msg = String.Format("未检测到广电到位,获取到光电1{0},光电2{2}", Conveyor.RPh1, Conveyor.RPh2);
                        if (DecompositionTaskContainer.DecompositionTask.filereason != msg)
                        {
                            DecompositionTaskContainer.DecompositionTask.filereason = msg;
                            dbModel.SaveChanges();
                        }
                        return;
                    }
                    ///测试任务号是否匹配
                    if (TConveyor.ConveyorName != "Line1003" && TConveyor.ConveyorName != "Line1008")
                    {
                        if (Conveyor.RTaskNo != int.Parse(DecompositionTaskContainer.DecompositionTask.taskcode))
                        {
                            LogTextHelper.WriteLine(Resources.LogDir + @"/完成输送线任务/" + Conveyor.ConveyorName, "等待输送线完成任务WCSId={0},STAKERID={1}:{2}", DecompositionTaskContainer.DecompositionTask.taskcode, Conveyor.RTaskNo, "任务号不匹配");
                            string msg = String.Format("任务号不一致:发送任务号{0},收到任务号{2}", DecompositionTaskContainer.DecompositionTask.taskcode, Conveyor.RTaskNo);
                            if (DecompositionTaskContainer.DecompositionTask.filereason != msg)
                            {
                                DecompositionTaskContainer.DecompositionTask.filereason = msg;
                                dbModel.SaveChanges();
                            }
 
                            return;
                        }
                    }
 
                    LogTextHelper.WriteLine(Resources.LogDir + @"/完成输送线任务/" + Conveyor.ConveyorName, "等待输送线完成任务:{0},收到任务号:{1},本任务号:{2}", "任务已完成", Conveyor.RTaskNo, DecompositionTaskContainer.DecompositionTask.taskcode);
                    if (Conveyor.ConveyorName == "Line1027" || Conveyor.ConveyorName == "Line1022")
                    {
                        if (Conveyor.RHeight != 0)
                        {
                            DecompositionTaskContainer.DecompositionTask.heighttype = Conveyor.RHeight;
                            LogTextHelper.WriteLine(Resources.LogDir + @"/完成输送线任务/" + Conveyor.ConveyorName, "等待输送线完成任务:获取获取高度{0}", Conveyor.RHeight);
                        }
                        else
                        {
                            LogTextHelper.WriteLine(Resources.LogDir + @"/完成输送线任务/" + Conveyor.ConveyorName, "等待输送线完成任务:获取获取高度不正确{0}", Conveyor.ConveyorType);
                            string msg = String.Format("高度检测未反馈正确值:收到高度{0}", Conveyor.RHeight);
                            if (DecompositionTaskContainer.DecompositionTask.filereason != msg)
                            {
                                DecompositionTaskContainer.DecompositionTask.filereason = msg;
                                dbModel.SaveChanges();
                            }
 
                            return;
                        }
                    }
 
 
                    if (nextHandler != null)
                    {
                        nextHandler.Handle();
                    }
                }
                catch (Exception ex)
                {
                    LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "Handle", ex.Message);
                }
            }
        }
    }
}