| | |
| | | using HH.WCS.DaYang.dispatch; |
| | | using HH.WCS.DaYang.util; |
| | | using HH.WCS.DaYang.wms; |
| | | using HH.WCS.JunzhouNongfu.device; |
| | | using Newtonsoft.Json; |
| | | using NLog.Fluent; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Reflection.Emit; |
| | | using System.Security.Cryptography; |
| | | using System.Text; |
| | | using static HH.WCS.DaYang.api.ApiModel; |
| | |
| | | { |
| | | Result<DeviceStatusModel> DeviceStatu = httpHelper.GetDeviceStatus(new string[] { mst.S_END_LOC }, tableUrl.url); |
| | | //设备状态空则允许推送 |
| | | if (DeviceStatu != null && DeviceStatu.Data[0].PhotoStatus == 0) |
| | | if (DeviceStatu != null && DeviceStatu.Data.PhotoStatus == 0) |
| | | { |
| | | result = true; |
| | | |
| | | |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"Intercept:设备状态不允许推送"); |
| | | result = true; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"Intercept:获取接口url失败"); |
| | | result = true; |
| | | } |
| | | } |
| | | } |
| | | if (mst.N_SCHEDULE_TYPE == 2) |
| | | { |
| | | var task = WCSHelper.GetTaskByOpName(mst.S_OP_CODE, 3); |
| | | if (task != null) |
| | | { result = true; } |
| | | if (task == null) |
| | | { |
| | | result = true; |
| | | } |
| | | } |
| | | } |
| | | if (mst.S_TYPE == "出库") |
| | | if (mst.S_TYPE.Contains("出库")) |
| | | { |
| | | |
| | | //推送agv任务,判断设备任务是否完成 |
| | | if (mst.N_SCHEDULE_TYPE == 1) |
| | | { |
| | | var task = WCSHelper.GetTaskByOpName(mst.S_OP_CODE, 3); |
| | | if (task != null) |
| | | { result = true; } |
| | | if (task == null) |
| | | { |
| | | result = true; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //如果当前任务不是移库任务,需要判断移库任务是否完成 |
| | | if (!mst.S_TYPE.Contains("移库")) |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var ykmst = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == mst.S_OP_NAME && a.N_B_STATE == 3 && a.S_TYPE == "移库").First(); |
| | | if (ykmst != null) |
| | | { |
| | | result = true; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //出库任务判断外侧有没有锁 |
| | | var startLoc = LocationHelper.GetLoc(mst.S_START_LOC); |
| | | if (startLoc != null && startLoc.N_POS == 1) |
| | | { |
| | | var db = new SqlHelper<WCSTask>().GetInstance(); |
| | | var OutLoc = db.Queryable<Location>().Where(b => b.S_AREA_CODE == startLoc.S_AREA_CODE && b.N_LAYER == startLoc.N_LAYER && b.N_POS == 2).First(); |
| | | if (OutLoc != null && OutLoc.N_LOCK_STATE != 0) |
| | | { |
| | | result = true; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | #endregion |
| | |
| | | var start = "0"; var end = "0"; |
| | | var taskType = mst.S_TYPE.Trim(); |
| | | |
| | | if (mst.N_SCHEDULE_TYPE == 1)//agv任务 |
| | | if (mst.N_SCHEDULE_TYPE == 1) |
| | | { |
| | | LogHelper.Info($"任务推送数据:{JsonConvert.SerializeObject(mst)}"); |
| | | if (string.IsNullOrEmpty(mst.S_START_LOC) || string.IsNullOrEmpty(mst.S_END_LOC)) |
| | | { |
| | | LogHelper.Info($"任务{mst.S_CODE},起点终点有空参数,不推送任务"); |
| | | } |
| | | |
| | | |
| | | start = LocationHelper.GetAgvSite(mst.S_START_LOC); |
| | | end = LocationHelper.GetAgvSite(mst.S_END_LOC); |
| | | //if (mst.N_START_LAYER > 1) |
| | | //{ |
| | | // start = LocationHelper.GetAgvSite(mst.S_START_LOC, mst.N_START_LAYER.ToString()).ToString(); |
| | | //} |
| | | if (mst.N_END_LAYER > 1) |
| | | { |
| | | end = LocationHelper.GetAgvSite(mst.S_END_LOC, mst.N_END_LAYER.ToString()).ToString(); |
| | | LogHelper.Info($"任务推送:终点层数为{mst.N_END_LAYER},推送站点为:{end}"); |
| | | } |
| | | Console.WriteLine($"SendTask {mst.S_CODE}"); |
| | | Console.WriteLine("start=" + start); |
| | | Console.WriteLine("end= " + end); |
| | | List<param> dic = new List<param>(); |
| | | dic.Add(new param() { name = "From", value = start.ToString() }); |
| | | dic.Add(new param() { name = "To", value = end.ToString() }); |
| | | dic.Add(new param() { name = "FUNC", value = "0" }); |
| | | dic.Add(new param() { name = "DATA", value = "0" }); |
| | | dic.Add(new param() { name = "Ctype", value = "0" }); |
| | | |
| | | |
| | | //Console.WriteLine($"SendTask {mst.S_CODE}"); |
| | | //Console.WriteLine("start=" + start); |
| | | //Console.WriteLine("end= " + end); |
| | | var dic = new Dictionary<string, string>(); |
| | | var sb1 = new StringBuilder(); |
| | | var res = NDCApi.AddOrderNew(1, 1, mst.S_CODE, dic);//添加新命令 |
| | | //dic.Add("Pri", mst.N_PRIORITY.ToString()); |
| | | //dic.Add("From", start.ToString()); |
| | | //dic.Add("To", end.ToString()); |
| | | //dic.Add("task_no", mst.S_CODE.Trim());// dic.Add("Ext1", "1"); dic.Add("Ext2", "CALLADDAGV"); dic.Add("N_CNTR_COUNT", ""); |
| | | //var res = NDC.AddNewOrder(1, dic); |
| | | |
| | | //dic.Add("No", mst.S_CODE.Trim()); |
| | | //dic.Add("Pri", mst.N_PRIORITY.ToString()); |
| | | dic.Add("From", start.ToString()); |
| | | dic.Add("To", end.ToString()); |
| | | dic.Add("Func", "0"); |
| | | dic.Add("DATA", "0"); |
| | | dic.Add("ItemHeight", "0"); |
| | | dic.Add("CntrType", "1"); |
| | | dic.Add("FromCol", "0"); |
| | | dic.Add("ToCol", "0"); |
| | | dic.Add("Ctype", "0"); |
| | | |
| | | // dic.Add("Ext1", "1"); dic.Add("Ext2", "CALLADDAGV"); dic.Add("N_CNTR_COUNT", ""); |
| | | var res = NDC.AddNewOrderNew(5, mst.N_PRIORITY, mst.S_CODE.Trim(), dic); |
| | | if (res != null && (res.Res.ErrCode == 0 || res.Res.ErrCode == 50009)) |
| | | |
| | | if (res != null && (res.err_code == 0 || res.err_code == 50009)) |
| | | { |
| | | //推送成功,修改任务优先级 |
| | | mst.N_B_STATE = 1; |
| | | WCSHelper.UpdateStatus(mst); |
| | | mst.S_B_STATE = WCSTask.GetStateStr(1); |
| | | WCSHelper.UpdateStatus(mst);//更新任务状态 |
| | | result = true; |
| | | LogHelper.Info($"NDC推送任务成功 {mst.S_CODE}start= {mst.S_START_LOC} + end = {mst.S_END_LOC}"); |
| | | |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"NDC推送任务失败 {mst.S_CODE};Res:" + JsonConvert.SerializeObject(res)); |
| | | } |
| | | } |
| | | else if (mst.N_SCHEDULE_TYPE == 2)//输送线任务 |
| | |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |