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 { /// /// mobox3调用,脚本中调用 /// public class MoboxController : System.Web.Http.ApiController { /// /// 任务取消(目前支持ndc) /// /// /// [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 { 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; } /// /// 强制取消,正常取消收到车子返回7,判断已经取货的判定为完成 /// 强制取消的意思是车子取货了,人工拉走了,任务还是取消,直接标记任务为取消,后续收到任务状态7也不再处理 /// /// /// [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 { task.S_CNTR_CODE }); LocationHelper.UnBindingLoc(task.S_END_LOC, new List { 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; } /// /// 强制完成 /// /// /// 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; } } }