| | |
| | | #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) |
| | | { |
| | | |
| | | LogHelper.Debug($"è¾é线RGV空æä»»å¡ 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"; |
| | | try |
| | | { |
| | | |
| | | TaskEntity wmsTask = new TaskEntity() |
| | | { |
| | | S_ID = Guid.NewGuid().ToString(), |
| | | S_STATE = "ç¼è¾", |
| | | T_CREATE = DateTime.Now, |
| | | T_MODIFY = DateTime.Now, |
| | | 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); |
| | | |
| | | S_TASK_NO = GenerateTaskNo(), |
| | | S_START_LAREA = fromLoc.S_AREA_CODE, |
| | | S_END_LAREA = endLoc.S_AREA_CODE, |
| | | S_DEPART_NAME = "", |
| | | S_START_LOC = from, |
| | | S_END_LOC = to, |
| | | S_TYPE = taskType, |
| | | S_SRC_NO = no,// |
| | | N_PRIORITY = pri, |
| | | S_WORK_MODE = workMode, |
| | | S_B_STATE = "æªæ§è¡", |
| | | S_CNTRS = cntrInfo, |
| | | N_START_LAYER = startLayer, |
| | | N_END_LAYER = endLayer, |
| | | N_CNTR_COUNT = cntrCount, |
| | | S_INDEX=t, |
| | | }; |
| | | ITaskRepository taskserice = new TaskRepository(); |
| | | taskserice.Insert(wmsTask); |
| | | |
| | | if (workMode == "AGV") |
| | | { |
| | | fromLoc.S_LOCK_STATE = "åºåºé"; |
| | | endLoc.S_LOCK_STATE = "å
¥åºé"; |
| | | locc.Update(fromLoc); |
| | | locc.Update(endLoc); |
| | | } |
| | | |
| | | LogHelper.Debug($"è¾é线RGV空æä»»å¡ from:{from}>to {to} å建{wmsTask.S_TASK_NO}æå"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error("CreateTask" + ex.Message, ex); |
| | | return false; |
| | | } |
| | | var s = Settings.deviceInfos.Find(x => x.location.Contains(from)) != null; |
| | | var e = Settings.deviceInfos.Find(x => x.location.Contains(to)) != null; |
| | | string t = ""; |
| | | if (workMode == "AGV") |
| | | { |
| | | t = "F01"; |
| | | if (s && !e) t = "A002"; |
| | | if (!s && e) t = "A003"; |
| | | if (s && e) t = "A004"; |
| | | } |
| | | try |
| | | { |
| | | |
| | | TaskEntity wmsTask = new TaskEntity() |
| | | { |
| | | S_ID = Guid.NewGuid().ToString(), |
| | | S_STATE = "ç¼è¾", |
| | | T_CREATE = DateTime.Now, |
| | | T_MODIFY = DateTime.Now, |
| | | |
| | | S_TASK_NO = GenerateTaskNo(), |
| | | S_START_LAREA = fromLoc.S_AREA_CODE, |
| | | S_END_LAREA = endLoc.S_AREA_CODE, |
| | | S_DEPART_NAME = "", |
| | | S_START_LOC = from, |
| | | S_END_LOC = to, |
| | | S_TYPE = taskType, |
| | | S_SRC_NO = no,// |
| | | N_PRIORITY = pri, |
| | | S_WORK_MODE = workMode, |
| | | S_B_STATE = "æªæ§è¡", |
| | | S_CNTRS = cntrInfo, |
| | | N_START_LAYER = startLayer, |
| | | N_END_LAYER = endLayer, |
| | | N_CNTR_COUNT = cntrCount, |
| | | S_INDEX = t, |
| | | }; |
| | | ITaskRepository taskserice = new TaskRepository(); |
| | | taskserice.Insert(wmsTask); |
| | | |
| | | if (workMode == "AGV") |
| | | { |
| | | fromLoc.S_LOCK_STATE = "åºåºé"; |
| | | endLoc.S_LOCK_STATE = "å
¥åºé"; |
| | | locc.Update(fromLoc); |
| | | locc.Update(endLoc); |
| | | } |
| | | |
| | | LogHelper.Info($"åå»ºä»»å¡ from:{from}>to {to} å建{wmsTask.S_TASK_NO}æå"); |
| | | return true; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error("CreateTask" + ex.Message, ex); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | 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", |
| | |
| | | } |
| | | } |
| | | } |
| | | public static void ResMesTask() |
| | | { |
| | | ///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); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | //var VERX = Settings.deviceInfos?.FindAll(x => x.deviceName.Contains("æ·ç¬æè")); |
| | | //if () |
| | | ///2 çç¼ååºã 没满çã |
| | | |
| | | |
| | | } |
| | | public static void ResMesTask(Tag tag) |
| | | { |
| | | ///1. |
| | | |
| | | 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] |
| | | } |
| | | } |