| | |
| | | switch (hIKROBOT.extra.values.method) |
| | | { |
| | | case "start": |
| | | if (task.TaskState == (int)TaskStatusEnum.CallingHKtransportation && task.TaskType == (int)TaskTypeEnum.Move) |
| | | if (task.TaskState == (int)TaskStatusEnum.CallingHKtransportation && task.TaskType == (int)TaskTypeEnum.MOVE) |
| | | { |
| | | task.TaskState = (int)TaskStatusEnum.HktransportIng; |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | else |
| | | { |
| | |
| | | break; |
| | | case "outbin"://离å¼èµ·ç¹ |
| | | { |
| | | ///夿任塿¯å¦è·è®¾å¤æå
³ |
| | | TaskFromCompleted(task, deviceTypeEnum); //ä»»å¡ç¶ä½æ¹ä¸º3åè´§å®æï¼æ´æ°èµ·ç¹è´§ä½ç¶æï¼å¹¶åé¦WMSèµ·ç¹å®æ |
| | | } |
| | | break; |
| | | case "finish"://ç¦»å¼æåæº |
| | | { |
| | | |
| | | //å
¥æåæº |
| | | if (task.TaskType == TaskTypeEnum.RK3F.ObjToInt() && task.TaskState == (int)TaskStatusEnum.CheckPalletCodeFinish) |
| | | { |
| | |
| | | if (device == null) task.ExceptionMessage = "æªæ¾å°æåæºä¿¡æ¯"; |
| | | else |
| | | { |
| | | DeviceProDTO? deviceProDTO = device.DeviceProDTOs.FirstOrDefault((DeviceProDTO x) => x.DeviceProParamName == HoistEnum.Inboundboxon.ToString()); |
| | | DeviceProDTO? deviceProDTO = device.DeviceProDTOs.FirstOrDefault((DeviceProDTO x) => x.DeviceProParamName == HoistEnum.Inboundboxon.ToString());//æ¾å°ä½äº |
| | | if (device.IsConnected) |
| | | device.SetValue(HoistEnum.Inboundboxon, 1); |
| | | else |
| | | task.ExceptionMessage = "æåæºä¿¡æ¯è®¾å¤è¿æ¥å¤±è´¥"; |
| | | } |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | |
| | | //åºæåæº |
| | | else if (task.TaskType == TaskTypeEnum.CK3F.ObjToInt() && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute) |
| | | //3 åºæåæº ä¹åæ¯AGV_ToExecute |
| | | else if (task.TaskType == TaskTypeEnum.CK3F.ObjToInt() && task.TaskState == (int)TaskStatusEnum.TakeFinish) |
| | | { |
| | | var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice; |
| | | if (device == null) task.ExceptionMessage = "æªæ¾å°æåæºä¿¡æ¯"; |
| | |
| | | else |
| | | task.ExceptionMessage = "æåæºä¿¡æ¯è®¾å¤è¿æ¥å¤±è´¥"; |
| | | } |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | //忥¼ åºåº |
| | | //忥¼ åºåº |
| | | else if ((task.TaskType == TaskTypeEnum.CHUKU1.ObjToInt() || task.TaskType == TaskTypeEnum.F04.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute) |
| | | { |
| | | var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice; |
| | |
| | | else |
| | | task.ExceptionMessage = "æåæºä¿¡æ¯è®¾å¤è¿æ¥å¤±è´¥"; |
| | | } |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | //忥¼ å
¥åº |
| | | // //忥¼åºæåæº å
¥åº ä¹åæ¯AGV_ToExecute //è¦åæåè´§å®æç¶æTakeFinish |
| | | else if ((task.TaskType == TaskTypeEnum.Q1TSJ4.ObjToInt() || task.TaskType == TaskTypeEnum.F03.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute) |
| | | { |
| | | var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice; |
| | |
| | | else |
| | | task.ExceptionMessage = "æåæºä¿¡æ¯è®¾å¤è¿æ¥å¤±è´¥"; |
| | | } |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | else if (task.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || task.TaskType == TaskTypeEnum.Q3CK.ObjToInt() && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute) |
| | | //è·¨æ¥¼å± |
| | | else if (task.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || task.TaskType == TaskTypeEnum.Q3CK.ObjToInt()/* && task.TaskState == (int)TaskStatusEnum.TakeFinish*/) |
| | | { |
| | | if (task.TaskType == TaskTypeEnum.Q3RK.ObjToInt()) |
| | | { |
| | | //妿æ¯å
楼å°ä¸æ¥¼å°±åä¸ä¸ªä¿¡å·ç»1楼plcåè¯ä»ææ¥å
¥åºäº |
| | | |
| | | } |
| | | var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "F1") as OtherDevice; |
| | | if (device == null) task.ExceptionMessage = "æªæ¾å°è´¨æ£é¨ä¿¡æ¯"; |
| | | else |
| | | { |
| | | //è¿ä¸ªå°±åä¸ä¸ªå¤ä½ç¶æï¼åè¯å®æåºåºäº |
| | | |
| | | bool Wok = false; |
| | | var Address = task.TaskType == TaskTypeEnum.Q3RK.ObjToInt() ? task.TargetAddress : task.SourceAddress; |
| | | if (device.IsConnected) |
| | | { |
| | | int i = 0; |
| | | while (!Wok && i <= 3) |
| | | { |
| | | i++; |
| | | Wok = device.SetValue(QualityInspectionCommandEnum.RequestToEnter, false, Address); |
| | | Thread.Sleep(500); |
| | | } |
| | | } |
| | | if (!Wok) |
| | | { |
| | | task.ExceptionMessage = $"ã{Address}ãå
³é请æ±è¿å
¥å¤±è´¥ï¼"; |
| | | task.Remark = $"{device.DeviceCode}_RequestToEnter_{false}_{Address}"; |
| | | } |
| | | } |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | } |
| | | break; |
| | |
| | | break; |
| | | case "wait"://æ«ç çå¾
|
| | | { |
| | | //è¦å
å¼å¯æ«ç ä¿¡å· |
| | | var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice; |
| | | if (device == null) task.ExceptionMessage = "æªæ¾å°æåæºä¿¡æ¯"; |
| | | else |
| | | { |
| | | if (device.IsConnected) |
| | | //æå¼æ«ç å¨ |
| | | device.SetValue<HoistEnum, short>(HoistEnum.Codereadingtriggered, 1); |
| | | else |
| | | task.ExceptionMessage = "æåæºä¿¡æ¯è®¾å¤è¿æ¥å¤±è´¥"; |
| | | } |
| | | task.TaskState = (int)TaskStatusEnum.CheckPalletCodeing; |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | break; |
| | | case "end"://ä»»å¡å®æéç¥ |
| | | { |
| | | if (task.TaskType == (int)TaskTypeEnum.Move && task.TaskState == (int)TaskStatusEnum.HkTransportCompleted) |
| | | if (task.TaskType == (int)TaskTypeEnum.MOVE) |
| | | { |
| | | task.TaskState = TaskStatusEnum.Finish.ObjToInt(); |
| | | TaskFeedback(task, 2); |
| | | BaseDal.DeleteAndMoveIntoHty(task, OperateTypeEnum.èªå¨å®æ); |
| | | var Task = BaseDal.QueryFirst(x => task.WMSTaskNum.Contains(x.WMSTaskNum)); |
| | | Task.TaskState = TaskStatusEnum.HkTransportCompleted.ObjToInt(); |
| | | BaseDal.UpdateData(Task); |
| | | } |
| | | else |
| | | { |
| | | ///夿任塿¯å¦è·è®¾å¤æå
³ |
| | | TaskCompleted(task, deviceTypeEnum); |
| | | } |
| | | } |
| | | break; |
| | | case "intolift": //è¿å
¥çµæ¢¯ |
| | | { |
| | | //å
楼å°ä¸æ¥¼çå
¥åºä»»å¡ |
| | | if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.MOVE || task.TaskType == (int)TaskTypeEnum.F01) |
| | | { |
| | | task.TaskState = TaskStatusEnum.Hkintolift.ObjToInt(); |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | } |
| | | break; |
| | | case "leavelift": //离å¼çµæ¢¯ |
| | | { |
| | | if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.MOVE || task.TaskType == (int)TaskTypeEnum.F01) |
| | | { |
| | | task.TaskState = TaskStatusEnum.HKleavelift.ObjToInt(); |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | } |
| | | break; |
| | |
| | | try |
| | | { |
| | | dt_Task.TaskState = TaskStatusEnum.Finish.ObjToInt(); |
| | | TaskFeedback(dt_Task, 2); |
| | | TaskFeedback(dt_Task, 2, string.IsNullOrEmpty(dt_Task.Remark)); |
| | | //Db.Ado.BeginTran(); |
| | | UpdateLocationStatus(dt_Task.TargetAddress, dt_Task.PalletCode, deviceTypeEnum, LocationStatusEnum.InStock); |
| | | |
| | |
| | | stationInfo.StationStatus = locationStatusEnum.ObjToInt(); |
| | | _stationInfo.UpdateData(stationInfo); |
| | | } |
| | | Dt_StationManger stationManger = _stationMangerService.Repository.QueryFirst(x => x.StationCode == locationCode); |
| | | if (stationManger != null) |
| | | { |
| | | if (locationStatusEnum == LocationStatusEnum.Free) //å¦æèµ·ç¹å®æå°±ç»è´§ä½èµå¼æçå· |
| | | { |
| | | stationManger.Remark = ""; |
| | | stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt(); |
| | | } |
| | | else |
| | | { |
| | | stationManger.Remark = palletCode; |
| | | stationManger.IsOccupied = LocationStatusEnum.Lock.ObjToInt(); |
| | | } |
| | | _stationMangerService.UpdateData(stationManger); |
| | | } |
| | | } |
| | | else if (deviceTypeEnum == DeviceTypeEnum.YuanLiJuHe) |
| | | { |
| | |
| | | } |
| | | #endregion |
| | | |
| | | #region æ´æ°ä¸æ¥¼ç«å°ç¶æ |
| | | public WebResponseContent UpdateStandStatus(Dt_Task task, string stationCode, LocationStatusEnum locationStatusEnum) |
| | | { |
| | | try |
| | | { |
| | | Dt_StationManger? stationManger = _stationMangerService.Repository.QueryFirst(x => x.StationCode == task.TargetAddress); |
| | | //stationManger.IsOccupied = LocationStatusEnum.Lock.ObjToInt(); |
| | | if (stationManger != null) |
| | | { |
| | | if (locationStatusEnum == LocationStatusEnum.Free) //å¦æèµ·ç¹å®æå°±ç»è´§ä½èµå¼æçå· |
| | | { |
| | | stationManger.IsOccupied = LocationStatusEnum.Lock.ObjToInt(); |
| | | } |
| | | else |
| | | { |
| | | stationManger.IsOccupied = LocationStatusEnum.Free.ObjToInt(); |
| | | } |
| | | _stationMangerService.UpdateData(stationManger); |
| | | } |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region 䏿¥WMS |
| | | public WebResponseContent TaskFeedback(Dt_Task dt_Task, int Status) |
| | | public WebResponseContent TaskFeedback(Dt_Task dt_Task, int Status, bool Del = true) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | WMSInOutBoundCompleteFeedback boundCompleteFeedback = new WMSInOutBoundCompleteFeedback(); |
| | |
| | | finally |
| | | { |
| | | _trackloginfoService.AddTrackLog(boundCompleteFeedback, content, "åºå
¥åºä»»å¡ç¶æåé¦WMS", "", ""); |
| | | if (agvContent != null && agvContent.code == 200 && Status == 2) |
| | | if (agvContent != null && agvContent.code == 200 && Del) |
| | | BaseDal.DeleteAndMoveIntoHty(dt_Task, OperateTypeEnum.èªå¨å®æ); |
| | | else |
| | | BaseDal.UpdateData(dt_Task); |