schangxiang@126.com
2025-09-17 ff43ddf18764629ff875478e4e47a7281cbd230a
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
using Admin.NET.Core.TaskModule.Enum;
using iWareSql.MyDbContext;
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace iWareSql.DataAccess
{
    public class TaskHandler
    {
        /// <summary>
        /// 查找该库位是否存在 未结束的任务
        /// </summary>
        /// <param name="dbContext"></param>
        /// <param name="location"></param>
        /// <returns></returns>
        public static wms_task IsExistNoFinishedTask(MyDbContext.MyDbContext dbContext, string location)
        {
            var wms_tasks = dbContext.wms_task
                .Where(CommonFilterExpressionForNoFinishAndNoCancel())
                .Where(x => ( x.IsDelete == false)
            && (x.SourcePlaceCode == location || x.ToPlaceCode == location)
             ).FirstOrDefault();
            return wms_tasks;
        }
 
        /// <summary>
        /// 获取当前未结束的任务的站点集合(包括起点和终点)
        /// </summary>
        /// <param name="dbContext"></param>
        /// <returns></returns>
        public static List<string> GetLocationListByNoFinishedTask(MyDbContext.MyDbContext dbContext)
        {
            List<string> locationList = new List<string>();
            var wms_tasks = dbContext.wms_task
                .Where(CommonFilterExpressionForNoFinishAndNoCancel())
                .Where(x =>
              //x.AreaType == (int)AreaTypeEnum.立体库
           // &&
            ( x.IsDelete == false)).ToList();
            locationList.AddRange(wms_tasks.Select(x => x.SourcePlaceCode).ToList());
            locationList.AddRange(wms_tasks.Select(x => x.ToPlaceCode).ToList());
            return locationList;
        }
 
        ///// <summary>
        ///// 某巷道 是否存在 未结束,但是已下发WCS  的任务
        ///// </summary>
        ///// <param name="repository"></param>
        ///// <param name="locationCode"></param>
        ///// <returns></returns>
        //public static wms_task IsExistNoFinishedAndHasIssueWCSTaskByLane(MyDbContext.MyDbContext dbContext, int lane)
        //{
        //    var wms_tasks = dbContext.wms_task
        //        .Where(CommonFilterExpressionForNoFinishAndNoCancel())
        //        .Where(x =>
        //      x.State == 1
        //     && x.Lane == lane
        //     && x.AreaType == (int)AreaTypeEnum.立体库
        //     && (x.IsDeleted == null || x.IsDeleted == false)
        //    )
        //        .OrderByDescending(x => x.TaskPriority)
        //        .FirstOrDefault();
        //    return wms_tasks;
        //}
 
 
 
        /// <summary>
        /// 更新任务表的任务消息
        /// </summary>
        /// <param name="taskId"></param>
        /// <param name="errMsg"></param>
        public static void UpdateTaskMsg(long taskId, string errMsg)
        {
            using (MyDbContext.MyDbContext dbContext = new MyDbContext.MyDbContext())
            {
                var singleTask = dbContext.wms_task.Where(x => x.Id == taskId).FirstOrDefault();
                singleTask.TaskMsg = errMsg;
                singleTask.UpdateTime = DateTime.Now;
 
                dbContext.SaveChanges();
            }
        }
 
 
        /// <summary>
        /// 获取 任务 不是 已完成,并且不是 已取消 的任务筛选条件
        /// </summary>
        /// <returns></returns>
        public static Func<wms_task, bool> CommonFilterExpressionForNoFinishAndNoCancel()
        {
            Func<wms_task, bool> predicate = m =>
              (m.TaskStatus!= Convert.ToInt32(TaskStatusEnum.已完成)
               && m.TaskStatus != Convert.ToInt32(TaskStatusEnum.已取消)
              )
             ;
            return predicate;
        }
 
        ///// <summary>
        ///// 获取 任务 不是 已完成,并且不是 已取消 的任务,并且是 未下发WCS的筛选条件
        ///// </summary>
        ///// <returns></returns>
        //public static Func<wms_task, bool> CommonFilterExpressionForNoFinishAndNoCancelWithNoIssueWCS()
        //{
        //    Func<wms_task, bool> predicate = m =>
        //      //任务状态 0-未下发WCS ,1-已下发WCS 
        //      m.State != 1 &&
        //      (m.TaskState != Convert.ToInt32(WareTaskStateEnum.已完成)
        //       && m.TaskState != Convert.ToInt32(WareTaskStateEnum.已取消)
        //      )
        //     ;
        //    return predicate;
        //}
 
        ///// <summary>
        ///// 获取 任务 不是 已完成,并且不是 已取消 ,并且是 已暂停的 的任务筛选条件
        ///// </summary>
        ///// <returns></returns>
        //public static Func<wms_task, bool> CommonFilterExpressionForNoFinishAndNoCancelAndNoStop()
        //{
        //    Func<wms_task, bool> predicate = m =>
        //      (m.TaskState != Convert.ToInt32(WareTaskStateEnum.已完成)
        //       && m.TaskState != Convert.ToInt32(WareTaskStateEnum.已取消)
        //       && m.TaskState != Convert.ToInt32(WareTaskStateEnum.已暂停)
        //      )
        //     ;
        //    return predicate;
        //}
    }
}