海波 张
2025-05-19 a99ceecce8c9a2521ac1fc167f4eff764cbdb123
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
using HH.WCS.ZhongCeJinTan.api;
using HH.WCS.ZhongCeJinTan.dispatch;
using HH.WCS.ZhongCeJinTan.process;
using HH.WCS.ZhongCeJinTan.util;
using HH.WCS.ZhongCeJinTan.wms;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Services.Description;
using static HH.WCS.ZhongCeJinTan.api.ApiModel;
 
namespace HH.WCS.ZhongCeJinTan.core
{
    /// <summary>
    /// 定时轮询任务
    /// </summary>
    internal class Monitor
    {
        /// <summary>
        /// 根据作业创建对应任务
        /// </summary>
        public static void CreateTask()
        {
            var db = new SqlHelper<object>().GetInstance();
 
            // 获取所有等待中的作业
            var operations = db.Queryable<WmsWork>().Where(p => p.N_B_STATE == 0).ToList();
            foreach (var operation in operations)
            {
                TaskHelper.CreateTask(operation);
            }
        }
 
 
        /// <summary>
        /// 根据任务状态更新作业状态
        /// </summary>
        public static void UpdateWorkState() {
 
            var db = new SqlHelper<object>().GetInstance();
 
            var operations = db.Queryable<WmsWork>().Where(p => p.N_B_STATE == 1).ToList();
 
            foreach (var operation in operations)
            {
                // 判断该任务是否全部完成
                var tasks = db.Queryable<WMSTask>().Where(p => p.S_OP_CODE == operation.S_CODE).ToList();
 
 
 
                if (tasks.Count >1 && tasks.Count(p => p.N_B_STATE == 3) == 1)
                {
                    operation.S_B_STATE = "完成一半";
                    operation.T_MODIFY = DateTime.Now;
                    db.Updateable(operation).UpdateColumns(it => new { it.S_B_STATE, it.T_MODIFY }).ExecuteCommand();
                }
 
                if (tasks.Count == tasks.Count(p => p.N_B_STATE == 3))
                {
                    operation.N_B_STATE = 2;
                    operation.S_B_STATE = "完成";
                    operation.T_MODIFY = DateTime.Now;
                    operation.T_END_TIME = DateTime.Now;
                    db.Updateable(operation).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE,it.T_MODIFY,it.T_END_TIME }).ExecuteCommand();
                  
                }
                else if (tasks.Count(p => p.N_B_STATE == 5) > 0)
                {
                    operation.N_B_STATE = 7;
                    operation.S_B_STATE = "取消";
                    operation.T_MODIFY = DateTime.Now;
                    operation.T_END_TIME = DateTime.Now;
 
                    db.Updateable(operation).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_MODIFY, it.T_END_TIME }).ExecuteCommand();
                }
            }
        }
 
 
 
 
    }
}