| | |
| | | HaiKangOrderInfo model = (HaiKangOrderInfo)param1; |
| | | if (string.IsNullOrEmpty(model.taskCode)) |
| | | return; |
| | | // æ¥è¯¢ä»»å¡ï¼æ ¹æ®ä»»å¡å· |
| | | //var wcsTask = WCSHelper.GetTask(model.taskCode); |
| | | ITaskRepository MainMissionService = new TaskRepository(); |
| | | var wcsTask = MainMissionService.FindEntity(x => model.taskCode == x.S_TASK_NO); |
| | | if (wcsTask != null) |
| | | { |
| | | if (!string.IsNullOrWhiteSpace(model.method)) |
| | | { |
| | | ILocRepository locrep = new LocRepository(); |
| | | var startloc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_START_LOC); |
| | | var endLoc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_END_LOC); |
| | | |
| | | List<string> cntrs = wcsTask.S_CNTRS.Split(',').ToList(); |
| | | bool bobe = false; |
| | | //model.method = model.method?.ToLower(); |
| | | switch (model.method) |
| | | { |
| | | case "start": |
| | | LogHelper.Info($"海康车任å¡ç¶æåæ´ä¸ºæ§è¡ï¼ä»»å¡å·ä¸ºï¼{model.taskCode}", "agvæåäº¤äºæ¥å¿"); |
| | | if (wcsTask.S_B_STATE.Trim() == "å·²æ¨é") |
| | | { |
| | | wcsTask.S_B_STATE = "æ§è¡ä¸"; |
| | | wcsTask.T_START_TIME = DateTime.Now; |
| | | MainMissionService.Update(wcsTask); |
| | | bobe = true; |
| | | } |
| | | break; |
| | | case "outBin": |
| | | case "outbin": |
| | | model.method = model.method?.ToLower(); |
| | | LogHelper.Info($"海康车任å¡ç¶æåæ´ä¸ºåè´§å®æï¼ä»»å¡å·ä¸ºï¼{model.taskCode}", "agvæåäº¤äºæ¥å¿"); |
| | | wcsTask.S_B_STATE = "åè´§å®æ"; |
| | | |
| | | startloc.N_CURRENT_NUM = 0; |
| | | startloc.S_LOCK_STATE = "æ "; |
| | | startloc.T_MODIFY = DateTime.Now; |
| | | //ILocContainerRepository locContainerRepository = new LocContainerRepository(); |
| | | ////var cnr = locContainerRepository.FindList(x => cntrs.Contains(x.S_CNTR_CODE.Trim()) && x.S_LOC_CODE == wcsTask.S_START_LOC); |
| | | //locContainerRepository.Delete(x => cntrs.Contains(x.S_CNTR_CODE.Trim()) && x.S_LOC_CODE == wcsTask.S_START_LOC); |
| | | MainMissionService.Update(wcsTask); |
| | | locrep.Update(startloc); |
| | | |
| | | bobe = true; |
| | | var device = Settings.deviceInfos.Find(x => x.location.Contains(wcsTask.S_START_LOC)); |
| | | if (device != null) |
| | | { |
| | | if (device.deviceType == 1) |
| | | { |
| | | if (device.deviceName.Contains("ç»´å¸å°æè")) |
| | | { //å¸è´§è¿è¡æ¸
空ï¼è§¦åæ«ç |
| | | var inde = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0; |
| | | string V = inde ? "R05" : "R06"; |
| | | Conn.é»è®¤Redis.SetValue(device.deviceName + "." + V, "true", device.deviceName + "Queue", false); |
| | | |
| | | TcpServer.TrayIps.Remove(device.deviceNo[inde ? 0 : 1]); |
| | | } |
| | | } |
| | | else if (device.deviceType == 2) |
| | | { |
| | | //Task.Run(() => |
| | | //{ |
| | | // var inde = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0; |
| | | // string V = inde ? "D1224" : "D1225"; |
| | | // Conn.é»è®¤Redis.SetValue(device.deviceName + "." + V, "0", device.deviceName + "Queue"); |
| | | //}); |
| | | } |
| | | } |
| | | //LocationHelper.UnLockLoc(wcsTask.S_START_LOC); |
| | | break; |
| | | case "end": |
| | | LogHelper.Info($"海康车任å¡ç¶æåæ´ä¸ºå®æï¼ä»»å¡å·ä¸ºï¼{model.taskCode}", "agvæåäº¤äºæ¥å¿"); |
| | | wcsTask.S_B_STATE = "宿"; |
| | | wcsTask.T_END_TIME = DateTime.Now; |
| | | |
| | | bobe = true; |
| | | //ILocContainerRepository locContainerRepository2 = new LocContainerRepository(); |
| | | //List<LocContainerEntity> llls = new List<LocContainerEntity>(); |
| | | //foreach (var c in cntrs) |
| | | //{ |
| | | // var action = new LocContainerEntity() |
| | | // { |
| | | // S_ID = Guid.NewGuid().ToString(), |
| | | // S_STATE = "ç¼è¾", |
| | | // T_CREATE = DateTime.Now, |
| | | // T_MODIFY = DateTime.Now, |
| | | |
| | | // S_LOC_CODE = endLoc.S_LOC_CODE, |
| | | // S_CNTR_CODE = c, |
| | | // S_TYPE = "", |
| | | // }; |
| | | // llls.Add(action); |
| | | //} |
| | | |
| | | endLoc.S_LOCK_STATE = "æ "; |
| | | endLoc.N_CURRENT_NUM = 1; |
| | | endLoc.T_MODIFY = DateTime.Now; |
| | | MainMissionService.Update(wcsTask); |
| | | if (Settings.deviceInfos.Find(x => x.deviceType == 2 && (/*x.location.Contains(wcsTask.S_END_LOC)||*/x.deviceNo.Contains(wcsTask.S_END_LOC))) != null) |
| | | locrep.Update(endLoc); |
| | | //locContainerRepository2.Insert(llls); |
| | | |
| | | var device2 = Settings.deviceInfos.Find(x => x.location.Contains(wcsTask.S_END_LOC)); |
| | | if (device2 != null) |
| | | { |
| | | if (device2.deviceType == 1) |
| | | { |
| | | if (device2.deviceName.Contains("ç»´å¸å°æè")) |
| | | { |
| | | //string V = device2.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0 ? "R10" : "R11"; |
| | | //Conn.é»è®¤Redis.SetValue(device2.deviceName + "." + V, "true", device2.deviceName + "Queue"); |
| | | //å¸è´§ååæçåèµ°ã ç¶åè§¦åæ«ç è¿è¡æ ¡éªã |
| | | var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0; |
| | | //string V = inde ? "R05" : "R06"; |
| | | //Conn.é»è®¤Redis.SetValue(device2.deviceName + "." + V, "true", device2.deviceName + "Queue"); |
| | | string V2 = inde ? "R10_LAST" : "R11_LAST"; |
| | | //Conn.é»è®¤Redis.SetValue(device2.deviceName + "." + V2, "true", device2.deviceName + "Queue"); |
| | | |
| | | GZ.Modular.Redis.RedisHelper.Add(device2.deviceName + "." + V2, "true", out string msg1); |
| | | TcpServer.TrayIps.Remove(device2.deviceNo[inde ? 0 : 1]); |
| | | } |
| | | } |
| | | else if (device2.deviceType == 2) |
| | | { |
| | | if (device2.deviceName.Contains("Jsæ·é¡º")) |
| | | { |
| | | Task.Run(() => |
| | | { |
| | | var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0; |
| | | string V = inde ? "D1224" : "D1225"; |
| | | Conn.é»è®¤Redis.SetValue(device2.deviceName + "." + V, "1", device2.deviceName + "Queue"); |
| | | }); |
| | | |
| | | var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new |
| | | { |
| | | sceneType = 3, |
| | | cntrCode = cntrs.FirstOrDefault() |
| | | })); |
| | | //if (device2.deviceName.Contains("1")) |
| | | //{ |
| | | // if (inde) tag.Js1.D1224 = 1; |
| | | // else tag.Js1.D1225 = 1; |
| | | //}else |
| | | //{ |
| | | // if (inde) tag.Js2.D1224 = 1; |
| | | // else tag.Js2.D1225 = 1; |
| | | //} |
| | | } |
| | | var ssloc = device2.deviceNo[1]; |
| | | var endloc = locrep.FindEntity(x => x.S_LOC_CODE == ssloc); |
| | | LogHelper.Info($"æ·é¡ºå¸è´§åï¼ æ¥çç¼åä½ {ssloc}-{endloc?.N_CURRENT_NUM}>0? åç³è¯·mesæ¬èµ°ã"); |
| | | if (endloc != null && endloc.N_CURRENT_NUM == 1) |
| | | { |
| | | var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new |
| | | { |
| | | requestType = 3, |
| | | startBit = ssloc |
| | | })); |
| | | LogHelper.Info($"{ssloc}ç³è¯·mesä»»å¡ç»æ{str}"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //LocationMethod.JudgeLocation(wcsTask); |
| | | break; |
| | | case "cancel": |
| | | LogHelper.Info($"海康车任å¡ç¶æåæ´ä¸ºåæ¶ï¼ä»»å¡å·ä¸ºï¼{model.taskCode}", "agvæåäº¤äºæ¥å¿"); |
| | | wcsTask.S_B_STATE = "åæ¶"; |
| | | //startloc.S_LOCK_STATE = "æ "; |
| | | //endLoc.S_LOCK_STATE = "æ "; |
| | | MainMissionService.Update(wcsTask); |
| | | TaskActRepository taskActRepository = new TaskActRepository(); |
| | | var tare = taskActRepository.FindList(x => x.S_TASK_NO == wcsTask.S_TASK_NO); |
| | | if (tare.Any()) |
| | | { |
| | | if (tare.Find(x => x.S_ACTION_CODE == "outbin") == null) |
| | | { |
| | | startloc.S_LOCK_STATE = "æ "; |
| | | endLoc.S_LOCK_STATE = "æ "; |
| | | locrep.Update(startloc); |
| | | locrep.Update(endLoc); |
| | | } |
| | | else if (tare.Find(x => x.S_ACTION_CODE == "end") == null) |
| | | { |
| | | endLoc.S_LOCK_STATE = "æ "; |
| | | locrep.Update(endLoc); |
| | | } |
| | | } |
| | | |
| | | //locrep.Update(startloc); |
| | | //locrep.Update(endLoc); |
| | | //TaskProcess.OperateStatus(wcsTask, 7); |
| | | //WCSHelper.Fail(wcsTask); |
| | | break; |
| | | case "apply": |
| | | // å¤æè¯¥ä»»å¡çæ¥é©³ä½æ¯å¦æå
¶ä»å
¥åºæåºåºä»»å¡ï¼å¦ææï¼åå¨çä½çå¾
ï¼å¦ææ²¡æï¼åå
¥ |
| | | TaskisOk(wcsTask); |
| | | break; |
| | | } |
| | | |
| | | if (!string.IsNullOrEmpty(wcsTask.S_SRC_NO)) |
| | | { |
| | | var mestask = MainMissionService.FindEntity(x => x.S_TASK_NO == wcsTask.S_SRC_NO); |
| | | if (mestask != null && bobe) |
| | | { |
| | | if (model.method != "end") |
| | | { |
| | | if (mestask.S_START_LOC == wcsTask.S_START_LOC && mestask.S_B_STATE == "MES") |
| | | Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/201", JsonConvert.SerializeObject(new |
| | | { |
| | | reqCode = wcsTask.S_SRC_NO, |
| | | model.method |
| | | })); |
| | | } |
| | | else |
| | | { |
| | | if (mestask.S_END_LOC != wcsTask.S_END_LOC) |
| | | { |
| | | LogHelper.Info($"{wcsTask.S_SRC_NO}-{wcsTask.S_TASK_NO} ä¸é¶æ®µå®æï¼éç½®è¿è¡äºé¶æ®µã"); |
| | | mestask.N_PRIORITY = -88; |
| | | MainMissionService.Update(mestask); |
| | | } |
| | | else if (mestask.S_B_STATE == "MES") |
| | | { |
| | | var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/201", JsonConvert.SerializeObject(new |
| | | { |
| | | reqCode = wcsTask.S_SRC_NO, |
| | | model.method |
| | | })); |
| | | } |
| | | } |
| | | |
| | | } |
| | | else if (mestask != null && model.method == "cancel") |
| | | { |
| | | if (mestask.S_B_STATE == "MES") |
| | | Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/201", JsonConvert.SerializeObject(new |
| | | { |
| | | reqCode = wcsTask.S_SRC_NO, |
| | | model.method |
| | | })); |
| | | LogHelper.Info($"{wcsTask.S_SRC_NO}-{wcsTask.S_TASK_NO} ä¸é¶æ®µåæ¶ï¼éç½®ç¹ï¼çº¿ç¨å¤çã"); |
| | | mestask.N_PRIORITY = -1; |
| | | mestask.S_B_STATE = "MES_åæ¶"; |
| | | MainMissionService.Update(mestask); |
| | | } |
| | | } |
| | | TaskProcess.AddActionRecord(model.taskCode, model.method, model.eqpCode, model.data, wcsTask.S_START_LOC, wcsTask.S_END_LOC); |
| | | //è°ç¨ç¬¬ä¸æ¹æ¥å£ï¼å¦ææï¼TaskProcess.ReportStatus |
| | | } |
| | | else |
| | | { |
| | | // ææ¶è®¾å®ä¸º0 |
| | | wcsTask.S_B_STATE = "䏿¥ç¶æç©º"; |
| | | //å®å
¨è¯·æ±ç |
| | | //TaskProcess.OperateReq(model.taskCode, wcsTask.N_B_STATE, model.eqpCode, model.data); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"å½åä»»å¡å·ä»»å¡ä¸åå¨{model.taskCode} agvæåäº¤äºæ¥å¿"); |
| | | } |
| | | var hkr = AutoThread.InvokeMethod(AutoThread.Instance, "OperateHKTaskStatus", new object[] { model }); |
| | | //return JsonConvert.SerializeObject(hkr); |
| | | #endregion [èªå®ä¹æä»¤][20250324165239206][OperateHKTaskStatus] |
| | | } |
| | | public GZ.DB.Entity.OIDATABASE.TaskEntity Begin(GZ.DB.Entity.OIDATABASE.TaskEntity task) |