| | |
| | | else |
| | | { |
| | | logger = LogFactory.CreateLogger(name); |
| | | if (logger != null) |
| | | if (logger != null && !loggers.Keys.Contains(name)) |
| | | { |
| | | loggers.Add(name, logger); |
| | | } |
| | |
| | | /// </summary> |
| | | static LogFactory() |
| | | { |
| | | var loggerNames = new List<string>() { "HosttoagvTask", "HosttoagvCar", "NDC", "æå¥¥" }; |
| | | var loggerNames = new List<string>() { "HosttoagvTask", "HosttoagvCar", "NDC", "æå¥¥","IPå¨çº¿æ£æµ" }; |
| | | LogManager.Configuration = DefaultConfig(loggerNames); |
| | | } |
| | | public static ILogger CreateLogger(string name) |
| | |
| | | /// <summary> |
| | | /// 1 ç»´å¸å°æºæ¢°è |
| | | /// 2 æ·ç¬æºæ¢°èè |
| | | /// 3 æ·ç¬è¾é线 |
| | | /// 3 é«å²æºæ¢°æ |
| | | /// 4 SSXaAGV 交äºçè¾é线 纤ä½ç¼å· |
| | | /// 5 å®åä¸ææºæ¢°æ |
| | | /// 6 转åä¸ææºæ¢°æ |
| | | /// </summary> |
| | | public int deviceType { get; set; } |
| | | public int enable { get; set; } |
| | |
| | | { |
| | | #region [èªå®ä¹ç±»][20250325131633664][SYSHelper] |
| | | private static object locker = new object(); |
| | | internal static int GetSerialNumber(string snType, string prefix, string Vend = "0") |
| | | internal static int GetSerialNumber(string snType, string prefix) |
| | | { |
| | | if (Vend == "1") |
| | | Vend = DateTime.Now.ToString("yyMMdd"); |
| | | int result = 0; |
| | | lock (locker) |
| | | { |
| | | SYSRepository sysservice = new SYSRepository(); |
| | | var sId = sysservice.FindEntity(a => a.CN_S_TYPE.Trim() == snType && a.CN_S_PRE.Trim() == prefix + Vend); |
| | | var sId = sysservice.FindEntity(a => a.CN_S_TYPE.Trim() == snType && a.CN_S_PRE.Trim() == prefix); |
| | | |
| | | if (sId != null) |
| | | { |
| | |
| | | } |
| | | else |
| | | { |
| | | sId = new SYSEntity { CN_S_TYPE = snType, CN_T_LAST = DateTime.Now, CN_S_PRE = prefix + Vend, CN_N_MAX = 0, CN_S_APP_TYPE = "WCS" }; |
| | | sId = new SYSEntity { CN_S_TYPE = snType, CN_T_LAST = DateTime.Now, CN_S_PRE = prefix , CN_N_MAX = 0, CN_S_APP_TYPE = "WCS" }; |
| | | sysservice.Insert(sId); |
| | | } |
| | | } |
| | |
| | | public class TaskProcess |
| | | { |
| | | #region [èªå®ä¹ç±»][20250325152141671][TaskProcess] |
| | | internal static bool CreateTask(string no, string from, string to, string taskType, int pri, List<string> cntrs, string workMode = "AGV", int cntrCount = 1, int startLayer = 1, int endLayer = 1) |
| | | internal static bool CreateTask(string no, string from, string to, string taskType, int pri, List<string> cntrs, string workMode = "AGV", string S_INDEX = "", int cntrCount = 1, int startLayer = 1, int endLayer = 1) |
| | | { |
| | | LogHelper.Info($"è¾é线RGV空æä»»å¡ from:{from}>to {to}å¼å§å建>"); |
| | | |
| | | LogHelper.Info($"åå»ºä»»å¡ from:{from}>to {to}å¼å§å建>"); |
| | | var cntrInfo = string.Join(",", cntrs); |
| | | ILocRepository locc = new LocRepository(); |
| | | var fromLoc = locc.FindEntity(x => x.S_LOC_CODE == from); |
| | | var endLoc = locc.FindEntity(x => x.S_LOC_CODE == to); |
| | | |
| | | var s = Settings.deviceInfos.Find(x => x.location.Contains(from)) != null; |
| | | var e = Settings.deviceInfos.Find(x => x.location.Contains(to)) != null; |
| | | string t = "F01"; |
| | | if (s && !e) t = "A002"; |
| | | if (!s && e) t = "A003"; |
| | | if (s && e) t = "A004"; |
| | | string t = ""; |
| | | if (workMode == "AGV" && string.IsNullOrEmpty(S_INDEX)) |
| | | { |
| | | var s = Settings.deviceInfos.Find(x => x.location.Contains(from)) != null; |
| | | var e = Settings.deviceInfos.Find(x => x.location.Contains(to)) != null; |
| | | |
| | | t = "F01"; |
| | | if (s && !e) t = "A002"; |
| | | if (!s && e) t = "A003"; |
| | | if (s && e) t = "A004"; |
| | | } |
| | | try |
| | | { |
| | | |
| | |
| | | }; |
| | | ITaskRepository taskserice = new TaskRepository(); |
| | | taskserice.Insert(wmsTask); |
| | | |
| | | if (workMode == "AGV") |
| | | { |
| | | fromLoc.S_LOCK_STATE = "åºåºé"; |
| | |
| | | locc.Update(endLoc); |
| | | } |
| | | |
| | | LogHelper.Info($"è¾é线RGV空æä»»å¡ from:{from}>to {to} å建{wmsTask.S_TASK_NO}æå"); |
| | | LogHelper.Info($"åå»ºä»»å¡ from:{from}>to {to} å建{wmsTask.S_TASK_NO}æå"); |
| | | return true; |
| | | } |
| | | catch (Exception ex) |
| | |
| | | taskserice.Insert(action); |
| | | } |
| | | |
| | | public static System.String GenerateTaskNo() |
| | | public static System.String GenerateTaskNo(string snType = "ä»»å¡å·") |
| | | { |
| | | var id = SYSHelper.GetSerialNumber("ä»»å¡å·", "TN", "1"); |
| | | var date = DateTime.Now.ToString("yyMMdd"); |
| | | var id = SYSHelper.GetSerialNumber(snType, date); |
| | | return $"TN{date}{id.ToString().PadLeft(4, '0')}"; |
| | | } |
| | | #endregion [èªå®ä¹ç±»][20250325152141671][TaskProcess] |
| | |
| | | public string endBit { get; set; } |
| | | public string reqCode { get; set; } |
| | | public string cntrCode { get; set; } |
| | | public string materialCode { get; set; } |
| | | |
| | | internal static ReturnMsg CreatemesTask(CreateTask model) |
| | | { |
| | |
| | | S_DEPART_NAME = "", |
| | | S_START_LOC = model.startBit, |
| | | S_END_LOC = model.endBit, |
| | | S_TYPE = model.reqCode, |
| | | S_TYPE = model.taskType, |
| | | S_SRC_NO = "",// |
| | | N_PRIORITY = -88, |
| | | S_WORK_MODE = "agv", |
| | | S_B_STATE = "MES", |
| | | S_CNTRS = model.cntrCode, |
| | | S_INDEX = model.materialCode,//mesä»»å¡ä¸ S_INDEXæ¯ ç©æç¼ç ã agvä»»å¡ä¸æ¯ agvä»»å¡ç±»å |
| | | N_START_LAYER = 1, |
| | | N_END_LAYER = 1, |
| | | N_CNTR_COUNT = 1 |
| | |
| | | } |
| | | } |
| | | } |
| | | public static void ResMesTask() |
| | | public static void ResMesTask(Tag tag) |
| | | { |
| | | ///1. |
| | | TaskRepository taskservice = new TaskRepository(); |
| | | var tasks = taskservice.FindList(x => (x.S_B_STATE == "MES" || x.S_B_STATE == "People") && x.N_PRIORITY == -88); |
| | | var VERXs = Settings.deviceInfos?.FindAll(x => x.deviceType == 2); |
| | | //if (VERXs.Any()) |
| | | foreach (var task in tasks) |
| | | { |
| | | var sx = VERXs?.Find(x => x.location.Contains(task.S_END_LOC)); |
| | | if (sx == null) |
| | | { |
| | | //ç´æ¥çæå¯¹åºä»»å¡ã |
| | | var res = TaskProcess.CreateTask(task.S_TASK_NO, task.S_START_LOC, task.S_END_LOC, task.S_TYPE, 6, task.S_CNTRS.Split(',').ToList()); |
| | | if (res) |
| | | { |
| | | //task.N_PRIORITY = 0; |
| | | taskservice.dbcontext.Set<TaskEntity>().Attach(task); |
| | | taskservice.dbcontext.Entry(task).Property(x => x.N_PRIORITY).CurrentValue = 0; |
| | | taskservice.dbcontext.Entry(task).Property(x => x.N_PRIORITY).IsModified = true; |
| | | taskservice.dbcontext.SaveChanges(); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | var sindex = sx.location.ToList().IndexOf(task.S_END_LOC); |
| | | LocRepository locRepository = new LocRepository(); |
| | | //çæè·³è·ä»»å¡ã -- æçè´§ä½è¡¨ã |
| | | var t1s = taskservice.FindList(x => x.S_SRC_NO == task.S_TASK_NO); |
| | | if (t1s.Any()) |
| | | { |
| | | var t1 = t1s.OrderBy(x => x.T_CREATE).LastOrDefault(); |
| | | if (t1.S_END_LOC == task.S_END_LOC) |
| | | { |
| | | task.N_PRIORITY = 0; |
| | | task.S_B_STATE = "MES_宿"; |
| | | taskservice.Update(task); |
| | | continue; |
| | | } |
| | | if (t1.S_B_STATE == "宿") |
| | | { |
| | | //1.ç»ç¹æ¯å¦ææçã 便®æ¯ç»ç¹ç任塿¯ ä½ä¸ºç»ç¹ï¼è¿æ¯èµ·ç¹ã |
| | | //var ec = taskservice.FindList(x => (x.S_START_LOC == task.S_START_LOC || x.S_END_LOC == task.S_END_LOC) /*&& DateTime.Now.Subtract(x.T_CREATE).TotalHours < 5*/).OrderByDescending(x => x.T_CREATE).FirstOrDefault();//($"select top 1 * from TN_TASK WHERE S_START_LOC='{task.S_END_LOC}' OR S_END_LOC='{task.S_END_LOC}' ORDER BY T_CREATE DESC"); |
| | | //var ec = taskservice.FindList(x => x.S_START_LOC == task.S_START_LOC && x.S_END_LOC == task.S_START_LOC, new Common.Data.Pagination |
| | | // { |
| | | // page = 1, |
| | | // sidx = "T_CREATE", |
| | | // sord = "desc", |
| | | // rows = 1 |
| | | // }).FirstOrDefault(); |
| | | TaskEntity ec = null; |
| | | var dev = Conn.é»è®¤Redis.GetValue(sx.deviceName + "." + (sindex == 0 ? "D1224" : "D1225")); |
| | | if (dev?.Trim() == "1") |
| | | ec = taskservice.FindList(x => x.S_END_LOC == task.S_END_LOC && x.S_B_STATE == "宿", new Common.Data.Pagination |
| | | { |
| | | page = 1, |
| | | sidx = "T_CREATE", |
| | | sord = "desc", |
| | | rows = 1 |
| | | }).FirstOrDefault(); |
| | | if (t1.S_START_LOC == task.S_START_LOC && ec != null)//!= task.S_END_LOC) |
| | | { |
| | | //ç¬¬äºæ®µã |
| | | LocEntity endLoc = null; |
| | | var di = sx; |
| | | if (di != null) |
| | | { |
| | | foreach (var ssloc in di.deviceNo) |
| | | { |
| | | var endloc = locRepository.FindEntity(x => x.S_LOC_CODE == ssloc); |
| | | if (endloc != null && endloc.N_CURRENT_NUM == 0 && endloc.S_LOCK_STATE == "æ ") |
| | | { |
| | | endLoc = endloc; |
| | | break; |
| | | } |
| | | } |
| | | if (endLoc != null) |
| | | { |
| | | var res = TaskProcess.CreateTask(task.S_TASK_NO, task.S_END_LOC, endLoc.S_LOC_CODE, task.S_TYPE + "ä¸ç©º", 7, ec.S_CNTRS.Split(',').ToList()); |
| | | if (res) |
| | | { |
| | | task.N_PRIORITY = 0; taskservice.Update(task); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | var res = TaskProcess.CreateTask(task.S_TASK_NO, t1.S_END_LOC, task.S_END_LOC, task.S_TYPE + "补满", 6, task.S_CNTRS.Split(',').ToList()); |
| | | if (res) |
| | | { |
| | | task.N_PRIORITY = 0; taskservice.Update(task); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //çæç¬¬ä¸æ®µã |
| | | LocEntity endLoc = null; |
| | | var di = sx; |
| | | if (di != null) |
| | | { |
| | | foreach (var ssloc in di.deviceNo) |
| | | { |
| | | var endloc = locRepository.FindEntity(x => x.S_LOC_CODE == ssloc); |
| | | if (endloc != null && endloc.N_CURRENT_NUM == 0 && endloc.S_LOCK_STATE == "æ ") |
| | | { |
| | | endLoc = endloc; |
| | | break; |
| | | } |
| | | } |
| | | if (endLoc != null) |
| | | { |
| | | var res = TaskProcess.CreateTask("", task.S_START_LOC, endLoc.S_LOC_CODE, task.S_TYPE + "满转", 8, task.S_CNTRS.Split(',').ToList()); |
| | | if (res) |
| | | { |
| | | task.N_PRIORITY = 0; taskservice.Update(task); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | AutoThread.InvokeMethod(AutoThread.Instance, "ResolveMesTask", new object[] { tag }); |
| | | //var VERX = Settings.deviceInfos?.FindAll(x => x.deviceName.Contains("æ·ç¬æè")); |
| | | //if () |
| | | ///2 çç¼ååºã 没满çã |
| | |
| | | |
| | | #endregion [èªå®ä¹ç±»][20250531152402452][ToWMSMES] |
| | | } |
| | | public class ConsoleInterceptor : TextWriter |
| | | { |
| | | #region [èªå®ä¹ç±»][20250702112833751][ConsoleInterceptor] |
| | | private readonly TextWriter _originalOut; |
| | | |
| | | public ConsoleInterceptor() |
| | | { |
| | | _originalOut = Console.Out; |
| | | } |
| | | |
| | | public override Encoding Encoding => Encoding.UTF8; |
| | | |
| | | public override void WriteLine(string value = "") |
| | | { |
| | | string values = (string)AutoThread.InvokeMethod(AutoThread.Instance, "WriteLine", new object[] { value }); |
| | | //// å¯ä»¥éæ©ç»§ç»è¾åºå°åæ§å¶å° |
| | | if (!string.IsNullOrEmpty(values)) |
| | | _originalOut.WriteLine(values); |
| | | } |
| | | #endregion [èªå®ä¹ç±»][20250702112833751][ConsoleInterceptor] |
| | | } |
| | | } |