using Newtonsoft.Json; using System.Web.Http; using static HH.WCS.Mobox3.ZS7412.api.ApiHelper; using static HH.WCS.Mobox3.ZS7412.api.ApiModel; using static HH.WCS.Mobox3.ZS7412.api.OtherModel; using HH.WCS.Mobox3.ZS7412.dispatch; using HH.WCS.Mobox3.ZS7412.wms; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using HH.WCS.Mobox3.ZS7412.util; using HH.WCS.Mobox3.ZS7412.models; namespace HH.WCS.Mobox3.ZS7412.api { /// /// 第三方调用的接口 /// [RoutePrefix("api")] public class WmsController : System.Web.Http.ApiController { /// /// 创建任务 /// /// /// /*[Route("AddTask")]*/ public WMSResponse AddTask(AddTaskInfo model) { LogHelper.Info("CreateTask Request:" + JsonConvert.SerializeObject(model), "ZS7412"); WMSResponse result = new WMSResponse() { taskNo = model.taskNo, }; int car_type = 0; try { var task = wms.WCSHelper.GetTaskBySrcNo(model.taskNo); if (task == null) { var crossLegList = new List(); crossLegList.Add("FUB"); crossLegList.Add("EMB"); var stowList = new List(); stowList.Add("LKZC"); stowList.Add("IN"); if (model.start != null && !model.start.Equals("") && model.end != null && !model.end.Equals("")) { foreach (var item in crossLegList) { if (model.start.Contains(item) || model.end.Contains(item)) { car_type = 1; } } foreach (var item in stowList) { if (model.start.Contains(item) || model.end.Contains(item)) { car_type = 2; } } } else { result.errCode = 1; result.errMsg = "起点和终点不能为空"; } if (car_type == 0) { result.errCode = 1; result.errMsg = "未匹配到相应车型"; } /*if (model.start.Contains("F-ZC-AGV")) { // 2F-ZC-AGV string startStr = model.start.Substring(0,6); string endStr = model.start.Substring(6); TrayStat trayStat = WCSHelper.GetTrayStat(startStr + 1 + "-" + endStr); if (trayStat.TRAY_NUM <= 0) { result.errCode = 2; result.errMsg = "创建搬运空托盘任务失败"; return result; } model.start = startStr + trayStat.TRAY_NUM +"-"+ endStr; trayStat.TRAY_NUM = trayStat.TRAY_NUM - 1; WCSHelper.updateTrayStatNum(trayStat); }*/ if (model.end.Contains("F-ZC-AGV")) { string startStr = model.end.Substring(0, 6); string endStr = model.end.Substring(6); model.end = startStr + 1 + "-" + endStr; } // 创建任务 var wcsTask = new WCSTask { S_OP_CODE = model.taskNo, S_OP_NAME = model.taskType, S_CODE = wms.WCSHelper.GenerateTaskNo(), S_TYPE = model.taskType, // 任务类型 N_PRIORITY = int.Parse(model.priority), // 优先级 S_START_LOC = model.start, // 起点货位 S_END_LOC = model.end, // 终点货位 S_SCHEDULE_TYPE = "国自", // 调度类型 N_SCHEDULE_TYPE = 2, T_START_TIME = DateTime.Now, S_CNTR_CODE = model.cntrCode, S_EQ_NO = car_type.ToString(), }; if (wms.WCSHelper.CreateTask(wcsTask)) { result.errCode = 0; result.errMsg = "创建任务成功"; } else { result.errCode = 1; result.errMsg = "创建任务失败"; } } else { result.errCode = 1; result.errMsg = "任务已存在,不可重复创建"; } } catch (Exception ex) { Console.WriteLine(ex.Message); result.errCode = 1; result.errMsg = "创建任务失败"; } LogHelper.Info("CreateTask response:" + JsonConvert.SerializeObject(result), "ZS7412"); return result; } /// /// 取消任务 /// /// /// public WMSResponse CancelTask(CancelTaskInfo model) { LogHelper.Info("CancelTask Request:" + JsonConvert.SerializeObject(model), "ZS7412"); WMSResponse result = new WMSResponse(); try { var task = wms.WCSHelper.GetTaskBySrcNo(model.taskNo); if (task != null) { int orderId; if (task.N_B_STATE < 3 && int.TryParse(task.S_EQ_TASK_CODE, out orderId)) { //修改状态为取消 wms.WCSHelper.UpdateStatus(task.S_CODE, "取消"); //给车子发送取消请求 GZRobot.CancelOrder(orderId); //同时添加一条动作记录 wms.WCSHelper.AddActionRecord(task.S_CODE, 7, null, null); result.errCode = 0; result.errMsg = "任务取消,已经发送给小车"; } else { result.errCode = 1; result.errMsg = "任务已结束"; } } else { result.errCode = 1; result.errMsg = "任务不存在"; } } catch (Exception ex) { Console.WriteLine(ex.Message); } LogHelper.Info("CancelTask response:" + JsonConvert.SerializeObject(result), "ZS7412"); return result; } /// /// 询问设备是否可放 /// /// /// public WMSResponse canIn(string stnNo) { WMSResponse result = new WMSResponse(); // 询问设备是否可放 if (HanAo.CanIn(stnNo)) { result.errCode = 0; } else { result.errCode = 1; result.errMsg = "设备不可放"; } return result; } /// /// 询问设备是否可取 /// /// /// public WMSResponse canOut(string stnNo) { WMSResponse result = new WMSResponse(); //询问设备是否可取 if (HanAo.CanOut(stnNo)) { result.errCode = 0; } else { result.errCode = 1; result.errMsg = "设备不可取"; } return result; } public class AddTaskInfo { public string cntrCode { get; set; } public string taskType { get; set; } public string taskNo { get; set; } public string start { get; set; } public string end { get; set; } public string priority { get; set; } } public class CancelTaskInfo { public string taskNo { get; set; } } public class WMSResponse { public int errCode { get; set; } public string errMsg { get; set; } public string taskNo { get; set; } } } }