海波 张
2 天以前 5b9da592f9bc117c88244f469418d5a5b29e4266
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
using HH.WCS.ZhongCeJinTan.api;
using HH.WCS.ZhongCeJinTan.device;
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.Reflection;
using System.Threading.Tasks;
using System.Web.Services.Description;
using Top.Api;
using static HH.WCS.ZhongCeJinTan.api.ApiModel;
using static HH.WCS.ZhongCeJinTan.util.Settings;
 
namespace HH.WCS.ZhongCeJinTan.core
{
    internal class TaskCore
    {
        public static void OperateTaskStatus(AgvTaskState model) {
            //var wmsTask = TaskHelper.GetTask(model.task_no);
            //var db = new SqlHelper<object>().GetInstance();
 
            //LogHelper.Info("OperateTaskStatus--任务信息" + JsonConvert.SerializeObject(wmsTask), "API");
            //LogHelper.Info("OperateTaskStatus--参数信息" + JsonConvert.SerializeObject(model), "API");
            //if (wmsTask != null)
            //    {
            //        if (model.state <= 7)
            //        {
            //            //有任务号请求
            //            switch (model.state)
            //            {
            //                case 1:
            //                    TaskHelper.Begin(wmsTask,model.forklift_no.ToString());
            //                    //胎面交互
            //                    TaskHelper.TmSafety(wmsTask);
            //                    break;
            //                case 3:
            //                    TaskHelper.UpdateStatus(wmsTask, "开始取货");
            //                break;
            //                case 4:
            //                    TaskHelper.UpdateStatus(wmsTask, "取货完成");
            //                    LocationHelper.UnLockLoc(wmsTask.S_START_LOC);
            //                    TaskProcess.OperateStatus(wmsTask, 4);
            //                break;
            //                case 5:
            //                    TaskHelper.UpdateStatus(wmsTask, "开始卸货");
            //                    break;
            //                case 6:
            //                    TaskHelper.UpdateStatus(wmsTask, "卸货完成");
            //                    LocationHelper.UnLockLoc(wmsTask.S_END_LOC);
            //                    TaskProcess.OperateStatus(wmsTask, 6);
 
            //                    //如果是二段任务则下发立库任务
            //                    var wcsTask = TaskHelper.GetTaskByState("未执行", "wcs", wmsTask.S_OP_CODE,"入库");
            //                    if (wcsTask!=null)
            //                    {
            //                        LocationHelper.LockLoc(wcsTask.S_START_LOC, "出库锁", 2);
            //                        WcsTask.WcsTaskEntity(wcsTask);
            //                    }                        
            //                break;
            //                case 2:
            //                //空托出或者满托出任务完成判断是否要提高入库优先级
 
            //                LogHelper.Info($"任务{wmsTask.S_CODE}完成,判断入库优先级", "入库优先级");
            //                TaskProcess.inPri(wmsTask);
            //                TaskHelper.End(wmsTask); 
            //                break;
            //                case 7:
 
            //                    var wcsTask1 = TaskHelper.GetTaskByWorkNo(wmsTask.S_OP_CODE, "wcs");
            //                    if (wcsTask1!=null)
            //                    {
            //                            //退库任务不通知
            //                            //agv执行通知 wcs取消  
            //                            if (wcsTask1.S_B_STATE!="未执行"&& wcsTask1.S_B_STATE != "完成"&& wcsTask1.S_B_STATE != "取消")
            //                            {
            //                                WcsTask.WcsCallback(wmsTask, model.state, model.forklift_no.ToString());
            //                            }
            //                            TaskHelper.Fail(wcsTask1);
            //                            TaskProcess.OperateStatus(wcsTask1, 7);
            //                    }
 
            //                    TaskHelper.Fail(wmsTask);
            //                    TaskProcess.OperateStatus(wmsTask, 7);
            //                    //入库或者回库任务取消删除托盘物料
            //                    if (wmsTask.S_TYPE.Contains("入库") || wmsTask.S_TYPE.Contains("回库"))
            //                    {
            //                        ContainerHelper.delCntr(wmsTask.S_CNTR_CODE);
            //                        ContainerHelper.delCntrItem(wmsTask.S_CNTR_CODE);
            //                    }
 
            //                    //出库取消判断接驳位是否有货,有货需要解绑
            //                    if (!WcsTask.WcsCvstate(wmsTask))
            //                    {
            //                        LogHelper.Info($"Wcs立库接驳位无货,解绑货位:{wmsTask.S_START_LOC}", "立库");
            //                        TaskProcess.OperateStatus(wmsTask, 4);
            //                        ContainerHelper.delCntr(wmsTask.S_CNTR_CODE);
            //                        ContainerHelper.delCntrItem(wmsTask.S_CNTR_CODE);
            //                    }
            //                break;
 
            //            }
            //             TaskHelper.AddActionRecord(wmsTask.S_CODE, model.state, model.forklift_no.ToString());          
            //    }
            //    else
            //    {
            //        //安全请求等
            //        TaskProcess.OperateReq(model.task_no, model.state, model.forklift_no.ToString());
            //    }
            //}
        }
 
        public static void addAgvActionState(AgvTaskState model)
        {
            var agvAction = new AgvActionState();
            agvAction.state = model.state;
            agvAction.task_no = model.task_no;
            agvAction.forklift_no = model.forklift_no.ToString();
 
            if (TaskHelper.CreateAgvActionState(agvAction))
            {
                LogHelper.Info("添加agv动作缓存成功信息" + JsonConvert.SerializeObject(agvAction), "agv动作缓存");
            }
            else {
                LogHelper.Info("添加agv动作缓存失败信息" + JsonConvert.SerializeObject(agvAction), "agv动作缓存");
            }
        }
            
            
 
            
 
 
        /// <summary>
        /// agv任务分发
        /// </summary>
        internal static void Dispatch() {
            //查询任务
            //获取所有未执行的agv任务
            var list = TaskHelper.GetTaskListByState("未执行", "agv");
            if (list.Count > 0) {
                list.ForEach(task => {
                    //任务拦截
                    if (TaskHelper.Intercept())
                    {
                        TaskProcess.SendTask(task);
                    }
                });     
            }
        }
 
        /// <summary>
        /// 立库任务分发
        /// </summary>
        internal static void Dispatch1()
        {
            //查询任务
            //获取所有未执行的wcs任务
            var list = TaskHelper.GetWcsTaskListByState("未执行", "wcs","出库");
            if (list.Count > 0)
            {
                list.ForEach(task => {
                        WcsTask.WcsTaskEntity(task);
                });
            }
        }
    }
}