杨前锦
2025-05-26 d0a265713fd18162f3a82bdcd22e267df7298c7b
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
using HH.WCS.Mobox3.YNJT_PT.dispatch;
using HH.WCS.Mobox3.YNJT_PT.process;
using HH.WCS.Mobox3.YNJT_PT.wms;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Reflection;
using System.Threading.Tasks;
using HH.WCS.Mobox3.YNJT_PT.util;
using System.Web.Http;
using static HH.WCS.Mobox3.YNJT_PT.api.ApiModel;
using static HH.WCS.Mobox3.YNJT_PT.api.OtherModel;
 
namespace HH.WCS.Mobox3.YNJT_PT.api {
    /// <summary>
    /// mobox3调用,脚本中调用
    /// </summary>
    public class MoboxController : System.Web.Http.ApiController {
        /// <summary>
        /// 任务取消(目前支持ndc)
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public SimpleResult CancelTask(MoboxTaskBase model) {
            LogHelper.Info("CancelTask Request:" + JsonConvert.SerializeObject(model), "TSSG");
            var result = new SimpleResult();
            var task = WCSHelper.GetTask(model.TaskNo);
            if (task != null) {
                if (task.N_B_STATE == 0) {
                    //等待直接修改状态为取消
                    WCSHelper.UpdateStatus(model.TaskNo, "取消");
                    LocationHelper.UnLockLoc(task.S_START_LOC);
                    LocationHelper.UnLockLoc(task.S_END_LOC);
                    //货位容器解绑
                    /*LocationHelper.UnBindingLoc(task.S_START_LOC, new List<string> { task.S_CNTR_CODE });*/
                    result.resultMsg = "任务等待,直接取消";
                }
                else if (task.N_B_STATE < 3) {
                    //已推送但是没有完成或者取消,通知hosttoagv
                    NDCHelper.Cancel(task.S_CODE);
                    result.resultMsg = "任务取消已经发送给小车";
                }
                else {
                    result.resultCode = 1;
                    result.resultMsg = "任务已结束";
                }
            }
            else {
                result.resultCode = 1;
                result.resultMsg = "任务不存在";
            }
            LogHelper.Info("CancelTask response:" + JsonConvert.SerializeObject(result), "TSSG");
            return result;
        }
       
 
        /// <summary>
        /// 强制取消,正常取消收到车子返回7,判断已经取货的判定为完成
        /// 强制取消的意思是车子取货了,人工拉走了,任务还是取消,直接标记任务为取消,后续收到任务状态7也不再处理
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [HttpPost]
        public SimpleResult ForceCancelTask(MoboxTaskBase model) {
            LogHelper.Info("ForceCancelTask Request:" + JsonConvert.SerializeObject(model), "TSSG");
            var result = new SimpleResult();
            var task = WCSHelper.GetTask(model.TaskNo);
            if (task != null)
            {
                if (task.N_B_STATE < 3)
                {
                    //修改状态为取消
                    WCSHelper.UpdateStatus(model.TaskNo, "强制取消");
                    //给车子发送取消请求
                    NDCHelper.Cancel(task.S_CODE);
                    //起点终点解锁
                    LocationHelper.UnLockLoc(task.S_START_LOC);
                    LocationHelper.UnLockLoc(task.S_END_LOC);
                    //货位容器解绑
                    /*LocationHelper.UnBindingLoc(task.S_START_LOC, new List<string> { task.S_CNTR_CODE });
                    LocationHelper.UnBindingLoc(task.S_END_LOC, new List<string> { task.S_CNTR_CODE });*/
                    //同时添加一条动作记录
                    WCSHelper.AddActionRecord(task.S_CODE, 17, null, null);
                    result.resultMsg = "任务强制取消,已经发送给小车";
                }
                else
                {
                        result.resultCode = 1;
                        result.resultMsg = "任务已结束";
                }
            }
            else
            {
                result.resultCode = 1;
                result.resultMsg = "任务不存在";
            }
            LogHelper.Info("ForceCancelTask response:" + JsonConvert.SerializeObject(result), "TSSG");
            return result;
        }
 
        /// <summary>
        /// 强制完成
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public SimpleResult ForceFinishTask(MoboxTaskBase model)
        {
            LogHelper.Info("ForceFinishTask Request:" + JsonConvert.SerializeObject(model), "TSSG");
            SimpleResult result = new SimpleResult();
            var task = WCSHelper.GetTask(model.TaskNo);
            if (task != null)
            {
                if (WCSHelper.CheckActionRecordExist(task.S_CODE, 4)) {
                    task.N_B_STATE = 2;
                    WCSHelper.UpdateStatus(task, "强制完成");
                    TaskProcess.CacheBitUpdate(task, false);
                }
                else
                {
                    result.resultCode = 1;
                    result.resultMsg = "取货未完成,无法强制完成";
                }
            }
            else
            {
                result.resultCode = 1;
                result.resultMsg = "任务不存在";
            }
            return result;
        }
 
 
            
 
      
 
    }
}