schangxiang@126.com
2025-07-23 ba449717184ae09590aaead8a7240103b26cec5e
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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
 
 
using Admin.NET.Application;
using iWareCommon.Utils;
using iWareModel.Entity.AGV;
using iWareModel.EnumType.EDevice.AGV;
using iWareSql.DBModel;
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace iWareSql.DataAccess
{
    public class TaskHandler
    {
        /// <summary>
        /// 验证 是否存在某个UPI的未结束的的任务
        /// </summary>
        /// <param name="wmsDB"></param>
        /// <returns></returns>
        public static bool ValidateIssueTaskForNoFinishTaskByUpi(WmsDBModel.WmsDBModel wmsDB, string UPI, bool isNeedAutoFinishTak)
        {
            var isExist = wmsDB.wms_rbline_task.Where(x => x.TaskStatus != (int)TaskStatusEnum.已完成
                 && x.TaskStatus != (int)TaskStatusEnum.已取消
                 && x.Upi == UPI
              ).ToList();
 
            if (isExist?.Count() > 0)
            {
                if (isNeedAutoFinishTak)
                {
                    using (WmsDBModel.WmsDBModel new_wmsDB = new WmsDBModel.WmsDBModel())
                    {
                        var updateTask = new_wmsDB.wms_rbline_task.Where(x => x.Id == isExist.First().Id).FirstOrDefault();
                        if (updateTask != null)
                        {
                            updateTask.TaskStatus = (int)TaskStatusEnum.已完成;
                            updateTask.TaskMsg = "任务被系统在合包工位自动完成(1)";
                            new_wmsDB.SaveChanges();
                        }
                    }
                }
                return false;
            }
            return true;
        }
 
        /// <summary>
        /// 验证 机器人缓存岛是否存在已下发的任务
        /// </summary>
        /// <param name="wmsDB"></param>
        /// <returns></returns>
        public static bool ValidateIssueTaskForRobotBuffer(WmsDBModel.WmsDBModel wmsDB, string UPI)
        {
            var isExist = wmsDB.wms_rbline_task.Where(x => x.TaskStatus == (int)TaskStatusEnum.已下发
                && (
                  x.RbTaskType == (int)RbTaskTypeEnum.入库任务
                  ||
                  (x.RbTaskType == (int)RbTaskTypeEnum.齐包出库任务 || x.RbTaskType == (int)RbTaskTypeEnum.强制出库任务)
                ) && x.Upi == UPI
              ).ToList();
 
            if (isExist?.Count() > 0)
            {
                return false;
            }
            return true;
        }
        /// <summary>
        /// 验证 机器人缓存岛是否存在已下发的任务
        /// </summary>
        /// <param name="wmsDB"></param>
        /// <returns></returns>
        public static bool ValidateIssueOutTaskForRobotBuffer(WmsDBModel.WmsDBModel wmsDB)
        {
            var isExist = wmsDB.wms_rbline_task.Where(x => x.TaskStatus == (int)TaskStatusEnum.已下发
                && (
                  x.RbTaskType == (int)RbTaskTypeEnum.入库任务
                  ||
                   (x.RbTaskType == (int)RbTaskTypeEnum.齐包出库任务 || x.RbTaskType == (int)RbTaskTypeEnum.强制出库任务)
                )
              ).ToList();
 
            if (isExist?.Count() > 0)
            {
                return false;
            }
            return true;
        }
 
        /// <summary>
        /// 验证 是否存在未结束的 出库 任务
        /// </summary>
        /// <param name="wmsDB"></param>
        /// <returns></returns>
        public static bool ValidateIssueTaskForNoFinishTaskByOutStore(WmsDBModel.WmsDBModel wmsDB)
        {
            var isExist = wmsDB.wms_rbline_task.Where(x => x.TaskStatus != (int)TaskStatusEnum.已完成
                 && x.TaskStatus != (int)TaskStatusEnum.已取消
                  && (
                   (x.RbTaskType == (int)RbTaskTypeEnum.齐包出库任务 || x.RbTaskType == (int)RbTaskTypeEnum.强制出库任务)
                )
              ).ToList();
 
            if (isExist?.Count() > 0)
            {
                return false;
            }
            return true;
        }
 
 
        /// <summary>
        /// 验证 码板是否有执行中任务
        /// </summary>
        /// <param name="wmsDB"></param>
        /// <returns></returns>
        public static bool ValidateIssueTaskForBZ12(WmsDBModel.WmsDBModel wmsDB, string UPI)
        {
            var isExist = wmsDB.wms_rbline_task.Where(x => x.TaskStatus == (int)TaskStatusEnum.已下发
                && x.RbTaskType == (int)RbTaskTypeEnum.码板任务 && x.Upi == UPI).ToList();
            if (isExist?.Count() > 0)
            {
                return false;
            }
            return true;
        }
        public static bool ValidateIssueTaskForBZ21(WmsDBModel.WmsDBModel wmsDB, string str)
        {
            var isExist = wmsDB.wms_rbline_task.Where(x => x.TaskStatus == (int)TaskStatusEnum.已下发
                && x.RbTaskType == (int)RbTaskTypeEnum.合包任务 && x.Upi == str).ToList();
            if (isExist?.Count() > 0)
            {
                return false;
            }
            return true;
        }
        /// <summary>
        /// 验证 机器人缓存岛是否存在 未结束  的出库任务
        /// </summary>
        /// <param name="wmsDB"></param>
        /// <returns>true:不存在 false:存在</returns>
        public static bool ValidateNoFinishOutTaskForRobotBuffer(WmsDBModel.WmsDBModel wmsDB)
        {
            var isExist = wmsDB.wms_rbline_task.Where(x => x.TaskStatus != (int)TaskStatusEnum.已完成
                && x.TaskStatus != (int)TaskStatusEnum.已取消
                && (
                  (x.RbTaskType == (int)RbTaskTypeEnum.齐包出库任务 || x.RbTaskType == (int)RbTaskTypeEnum.强制出库任务)
                )
              ).ToList();
 
            if (isExist?.Count() > 0)
            {
                return false;
            }
            return true;
        }
 
        /// <summary>
        /// 验证 码板任务是否存在 未结束  的任务
        /// </summary>
        /// <param name="wmsDB"></param>
        /// <returns>true:不存在 false:存在</returns>
        public static bool ValidateNoFinishOutTaskFor码板任务(WmsDBModel.WmsDBModel wmsDB)
        {
            var isExist = wmsDB.wms_rbline_task.Where(x => x.TaskStatus != (int)TaskStatusEnum.已完成
                && x.TaskStatus != (int)TaskStatusEnum.已取消
                && x.RbTaskType == (int)RbTaskTypeEnum.码板任务
              ).ToList();
 
            if (isExist?.Count() > 0)
            {
                return false;
            }
            return true;
        }
    }
}