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
using IWareCC.CacheInfo;
using IWareCC.CacheInfo.Container;
using IWareCC.ChaiDie.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.Tasks;
 
namespace IWareCC.ChaiDie.Handle.DoChaiDieTaskAuto
{
    public class 选择一个未执行的拆叠机的任务 : IHandler
    {
        /// <summary>
        /// 该节点的下一个节点
        /// </summary>
        private IHandler nextHandler = null;
        public IHandler NextHandler
        {
            set { nextHandler = value; }
        }
 
        private ChaiDieEntity Chaidie;
 
        /// <summary>
        /// 任务容器
        /// </summary>
        private PartTaskContainer DecompositionTaskContainer;
 
 
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="resultContainer">结果容器</param>
        /// <param name="decompositionTaskContainer">WIP任务容器</param>
        public 选择一个未执行的拆叠机的任务(PartTaskContainer decompositionTaskContainer)
        {
            this.DecompositionTaskContainer = decompositionTaskContainer;
        }
 
 
        public void Handle()
        {
 
            using (var dbModel = new DbModel())
            {
                try
                {
 
                    string msg;
                    var task = dbModel.PartTasks.OrderBy(x => x.priority).ThenBy(x => x.updatetime).FirstOrDefault(x => x.eqtype == (int)EPartTaskType.拆叠机任务 && x.isreleased == (int)EYesOrNo.否 && x.isfinished == (int)EYesOrNo.否 );
 
                    if (task == null)
                    {
                      //  LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行拆叠机任务流程/", "选择一个未执行的拆叠机的任务:{0}", "未找到相应的拆叠机任务");
                        return;
                    }
                    else 
                    {
                        task.updatetime = DateTime.Now;
                        dbModel.SaveChanges();
                        int tdevid = (int)((EDeviceId)task.eqid);
                        var cd = CacheEntity.ChaiDies.FirstOrDefault(x => x.DeviceId == tdevid);
                        Chaidie = cd;
                    }
 
                    if (Chaidie.ChaiDieName == "ChaiDei1" || Chaidie.ChaiDieName == "ChaiDei2")
                    {
                        LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行拆叠机任务流程/" + Chaidie.ChaiDieName, "选择一个未执行的拆叠机的任务:拆叠盘机{0}不用执行任何任务", Chaidie.ChaiDieName);
                        return;
                    }
                  
                    if (Chaidie.ChaiDieName == "ChaiDei3")
                    {
                          string t2name = "Line1021";
                            var t2conveyor = CacheEntity.Conveyors.FirstOrDefault(x => x.ConveyorName == t2name);
                            if ((t2conveyor != null && (t2conveyor.RPh1 == 1 && t2conveyor.RPh2 == 1)))
                            {
                                LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行拆叠机任务流程/" + Chaidie.ChaiDieName, "选择一个未执行的拆叠机的任务:拆叠机{0}输送位{1}有货,不可下发任务", Chaidie.ChaiDieName, t2conveyor.ConveyorName);
                                return;
                            }
                            string t21name = "Line1022";
                            var t21conveyor = CacheEntity.Conveyors.FirstOrDefault(x => x.ConveyorName == t21name);
                            if ((t21conveyor != null && (t21conveyor.RPh1 == 1 && t21conveyor.RPh2 == 1)))
                            {
                                LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行拆叠机任务流程/" + Chaidie.ChaiDieName, "选择一个未执行的拆叠机的任务:拆叠机{0}输送位{1}有货,不可下发任务", Chaidie.ChaiDieName, t2conveyor.ConveyorName);
                                return;
 
                            }
                            var othertask = dbModel.PartTasks.OrderBy(x => x.priority).ThenBy(x => x.updatetime).FirstOrDefault(x => x.eqtype == (int)EPartTaskType.拆叠机任务 && x.isreleased == (int)EYesOrNo.是 && x.isfinished == (int)EYesOrNo.否&&x.eqid==Chaidie.DeviceId);
                            if (othertask!=null)
                           {
                               return;
                           }
                    }
                    else
                    {
                        string t2name = "Line1026";
                        var t2conveyor = CacheEntity.Conveyors.FirstOrDefault(x => x.ConveyorName == t2name);
                        if ((t2conveyor != null && (t2conveyor.RPh1 == 1 && t2conveyor.RPh2 == 1)))
                        {
                            LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行拆叠机任务流程/" + Chaidie.ChaiDieName, "选择一个未执行的拆叠机的任务:拆叠机{0}输送位{1}有货,不可下发任务", Chaidie.ChaiDieName, t2conveyor.ConveyorName);
                            return;
                        }
                        string t21name = "Line1027";
                        var t21conveyor = CacheEntity.Conveyors.FirstOrDefault(x => x.ConveyorName == t21name);
                        if ((t21conveyor != null && (t21conveyor.RPh1 == 1 && t21conveyor.RPh2 == 1)))
                        {
                            LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行拆叠机任务流程/" + Chaidie.ChaiDieName, "选择一个未执行的拆叠机的任务:拆叠机{0}输送位{1}有货,不可下发任务", Chaidie.ChaiDieName, t21conveyor.ConveyorName);
                            return;
                        }
                        var othertask = dbModel.PartTasks.OrderBy(x => x.priority).ThenBy(x => x.updatetime).FirstOrDefault(x => x.eqtype == (int)EPartTaskType.拆叠机任务 && x.isreleased == (int)EYesOrNo.是 && x.isfinished == (int)EYesOrNo.否 && x.eqid == Chaidie.DeviceId);
                        if (othertask != null)
                        {
                            return;
                        }
                    }
                    if (!Chaidie.CanSendTask(Chaidie.DeviceId, out msg))
                    {
                        LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行拆叠机任务流程/" + Chaidie.ChaiDieName, "选择一个未执行的拆叠机的任务:拆叠机{0}不能执行任务--{1}", Chaidie.ChaiDieName, msg);
                        return;
                    }
 
                    DecompositionTaskContainer.DecompositionTask = task;
 
                    LogTextHelper.WriteLine(Resources.LogDir + @"/自动执行拆叠机任务流程/" + Chaidie.ChaiDieName, "选择一个未执行的拆叠机的任务:{0}", DecompositionTaskContainer.DecompositionTask.id);
 
                    if (nextHandler != null)
                    {
                        nextHandler.Handle();
                    }
 
                }
                catch (Exception ex)
                {
                    LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "Handle", ex.Message);
                }
            }
 
 
        }
    }
}