| | |
| | | using S7.Net; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.IO; |
| | | using System.Linq; |
| | | using System.Threading; |
| | | using static HH.WCS.JiaTong.LISTA.process.HttpModel; |
| | |
| | | /// <summary> |
| | | /// 叠盘机空托返回 |
| | | /// </summary> |
| | | internal static void Traystacker(string loc, int qty, int type) |
| | | internal static void Traystacker(string loc, int qty, int type,string cntrcode="") |
| | | { |
| | | try |
| | | { |
| | |
| | | HttpHelper httpHelper = new HttpHelper(); |
| | | Result result = new Result(); |
| | | string date = JsonConvert.SerializeObject(result1); |
| | | var url = Settings.tableUrls.Find(a => a.id == 2); |
| | | var url = Settings.tableUrls.Find(a => a.id == 3); |
| | | if (url != null) |
| | | { |
| | | LogHelper.Info($"叠盘机空托返回:地址:{url.url},内容:{date}"); |
| | |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"叠盘机空托:根据id=2,未找到配置链接,请检查配置文件"); |
| | | LogHelper.Info($"叠盘机空托:根据id=3,未找到配置链接,请检查配置文件"); |
| | | } |
| | | |
| | | } |
| | |
| | | /// </summary> |
| | | internal static void Traffic() |
| | | { |
| | | Console.WriteLine("开始原材料叠盘位置判断"); |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | List<string> locs = new List<string>() { "LCDP-001" }; |
| | | List<string> locs = new List<string>() { "LCDP-001", "BADPW-01" }; |
| | | var location = db.Queryable<Location>().Where(a => locs.Contains(a.S_CODE)).ToList(); |
| | | if (location.Count > 0) |
| | | { |
| | |
| | | var cntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == item.S_CODE).ToList(); |
| | | if (cntr.Count > 0) |
| | | { |
| | | var cntrcodes = cntr.Select(a => a.S_CNTR_CODE).ToArray(); |
| | | cntrcode = string.Join(",", cntrcodes); |
| | | cntrcode = cntr.OrderBy(a=>a.T_CREATE).First().S_CNTR_CODE; |
| | | // cntrcode = string.Join(",", cntrcodes); |
| | | } |
| | | |
| | | //创建过未完成的任务不发起请求 |
| | |
| | | internal static void KjTraffic() |
| | | { |
| | | |
| | | |
| | | Console.WriteLine("开始井松agv叠盘回库位置判断"); |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | List<string> locs = new List<string>() { "PMDDW-001" }; |
| | | List<string> locs = new List<string>() { "AGV12DP-001", "AGV01DP-001", "AGV05DP-001" }; |
| | | var location = db.Queryable<Location>().Where(a => locs.Contains(a.S_CODE)).ToList(); |
| | | if (location.Count > 0) |
| | | { |
| | |
| | | // var cntrcodes = cntr.Select(a => a.S_CNTR_CODE).ToArray(); |
| | | // cntrcode = string.Join(",", cntrcodes); |
| | | //} |
| | | |
| | | string cntrcode = ""; |
| | | var cntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == item.S_CODE).ToList(); |
| | | if (cntr.Count > 0) |
| | | { |
| | | cntrcode = cntr.OrderBy(a => a.T_CREATE).First().S_CNTR_CODE; |
| | | // cntrcode = string.Join(",", cntrcodes); |
| | | } |
| | | LogHelper.Info($"货位{item}叠满6个开始回调接口"); |
| | | //创建过未完成的任务不发起请求 |
| | | var mst = WCSHelper.GetTaskByStartloc(item.S_CODE); |
| | | if (mst == null) |
| | | { |
| | | Traystacker(item.S_CODE, item.N_CURRENT_NUM, 1); |
| | | Traystacker(item.S_CODE, item.N_CURRENT_NUM, 2, cntrcode); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | public static Dictionary<string, DpjErrorInfo> DpjInfoDirectory = new Dictionary<string, DpjErrorInfo>(); |
| | | /// <summary> |
| | | /// 井松叠盘机叠盘回库 |
| | | /// </summary> |
| | | internal static void DpjTraffic() |
| | | { |
| | | string startBti = "CMB17-DP-001"; |
| | | var devices = Settings.deviceInfos.Where(a => a.deviceType == 1).ToList(); |
| | | //var db = new SqlHelper<object>().GetInstance(); |
| | | //var list = db.Queryable<Location>().Where(a => a.N_CURRENT_NUM > 0 && a.N_LOCK_STATE == 0).OrderByDescending(a => a.N_COL).Take(1).PartitionBy(a => a.N_ROW).ToList(); |
| | | try |
| | | { |
| | | var IsDp = S7Helper.ReadDpj(2001, S7.Net.VarType.Byte); |
| | | var value = S7Helper.ReadDpj(2014, S7.Net.VarType.Int); |
| | | |
| | | if (value >= 1 && IsDp == 1) |
| | | if (devices.Count > 0) |
| | | { |
| | | //var cntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == item.S_CODE).ToList(); |
| | | //if (cntr.Count > 0) |
| | | //{ |
| | | // var cntrcodes = cntr.Select(a => a.S_CNTR_CODE).ToArray(); |
| | | // cntrcode = string.Join(",", cntrcodes); |
| | | //} |
| | | |
| | | //创建过未完成的任务不发起请求 |
| | | var mst = WCSHelper.GetTaskByStartloc(startBti); |
| | | if (mst == null) |
| | | foreach (var device in devices) |
| | | { |
| | | Traystacker(startBti, value, 2); |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"有执行中的叠盘回库任务{mst.S_CODE},不触发叠盘任务"); |
| | | } |
| | | var IsDp = S7Helper.ReadDpj(device.address, 2001, S7.Net.VarType.Byte); |
| | | var value = S7Helper.ReadDpj(device.address, 2014, S7.Net.VarType.Int); |
| | | var ErrorCode = S7Helper.ReadDpj(device.address, 2016, S7.Net.VarType.Int); |
| | | //记录叠盘机报错信息 |
| | | if (DpjInfoDirectory.ContainsKey(device.address)) |
| | | { |
| | | DpjInfoDirectory[device.address].Address = device.address; |
| | | DpjInfoDirectory[device.address].DeviceName = device.deviceName; |
| | | var ErrorInfo = Settings.dpjErrorInfos.Where(a => a.ErrorCode == ErrorCode).First(); |
| | | if (ErrorInfo != null) |
| | | { |
| | | DpjInfoDirectory[device.address].ErrorInfo = ErrorInfo.ErrorInfo; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | string errorinfo = ""; |
| | | var ErrorInfo = Settings.dpjErrorInfos.Where(a => a.ErrorCode == ErrorCode).First(); |
| | | if (ErrorInfo != null) |
| | | { |
| | | errorinfo = ErrorInfo.ErrorInfo; |
| | | } |
| | | DpjInfoDirectory.Add(device.address, new DpjErrorInfo() { Address = device.address, DeviceName = device.deviceName, ErrorInfo = errorinfo }); |
| | | } |
| | | if (value >= 1 && IsDp == 1) |
| | | { |
| | | //var cntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == item.S_CODE).ToList(); |
| | | //if (cntr.Count > 0) |
| | | //{ |
| | | // var cntrcodes = cntr.Select(a => a.S_CNTR_CODE).ToArray(); |
| | | // cntrcode = string.Join(",", cntrcodes); |
| | | //} |
| | | |
| | | //创建过未完成的任务不发起请求 |
| | | var mst = WCSHelper.GetTaskByStartloc(device.TN_Location); |
| | | if (mst == null) |
| | | { |
| | | Traystacker(device.TN_Location, value, 2); |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"有执行中的叠盘回库任务{mst.S_CODE},不触发叠盘任务"); |
| | | } |
| | | //var loc = LocationHelper.GetLocByLoc(device.TN_Location); |
| | | //if (loc != null) |
| | | //{ |
| | | // if (loc.N_LOCK_STATE == 0) { |
| | | // Traystacker(device.TN_Location, value, 2); |
| | | // } |
| | | // else |
| | | // { |
| | | // LogHelper.Info($"设备起点:{device.TN_Location}有锁,不生成任务"); |
| | | // } |
| | | //} |
| | | //else |
| | | //{ |
| | | // LogHelper.Info($"根据设备:{device.deviceName},起点:{device.TN_Location},未找到货位"); |
| | | //} |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"叠盘机数量:{value},叠盘信号:{IsDp},不触发叠盘任务"); |
| | | } |
| | | Thread.Sleep(8000); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"叠盘机数量:{value},叠盘信号:{IsDp},不触发叠盘任务"); |
| | | } |
| | | Thread.Sleep(8000); |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | LogHelper.Error($"ReadDpj DpjTraffic:{ex}", ex); |
| | | |
| | | } |
| | |
| | | LogHelper.Info($"空托返回 Error=>{ex.ToString()}"); |
| | | } |
| | | } |
| | | |
| | | public class DpjErrorInfo |
| | | { |
| | | |
| | | public string Address { get; set; } |
| | | public string DeviceName { get; set; } |
| | | public string ErrorInfo { get; set; } |
| | | } |
| | | } |
| | | } |