´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/HoistEnum.cs
@@ -74,5 +74,19 @@ /// 4楼åºåºåç®±å®æ /// </summary> Outboundboxretrievalcompleted, /// <summary> /// 3æ¥¼å ¥åºæ«ç å®æä¿¡å· /// </summary> RInScanningCompletionSignal, /// <summary> /// 4楼åºåºæ«ç å®æä¿¡å· /// </summary> ROutScanningCompletionSignal } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/RgvCommand.cs
@@ -64,6 +64,19 @@ /// </summary> R_Spare, /// <summary> /// 请æ±è¿å ¥ /// </summary> RequestToEnter, /// <summary> /// å±è½ä¸ /// </summary> Blocking } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs
@@ -148,6 +148,20 @@ [Description("海康AGVæ¬è¿å®æ")] HkTransportCompleted, /// <summary> /// 海康AGVè¿å ¥çµæ¢¯ 23 /// </summary> [Description("海康AGVè¿å ¥çµæ¢¯")] Hkintolift, /// <summary> /// 海康AGV离å¼çµæ¢¯ 24 /// </summary> [Description("海康AGV离å¼çµæ¢¯")] HKleavelift, #endregion #region ååè½¦å ¶ä»ä»»å¡ç¶æ ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs
@@ -102,6 +102,11 @@ /// </summary> [Description("æåæºå°çº¿è¾¹")] F03, /// <summary> /// 线边å°åºå /// </summary> [Description("线边å°åºå ")] STURR } public enum TaskInboundTypeEnum ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/HIKROBOT/CancelHIKROBOTTask.cs
@@ -23,34 +23,34 @@ /// </summary> public string cancelType { get; set; } /// <summary> /// ååºçè½½å ·ç¼å· /// </summary> public string carrierCode { get; set; } ///// <summary> ///// ååºçè½½å ·ç¼å· ///// </summary> //public string carrierCode { get; set; } /// <summary> /// æºå¨äººç¼å· /// </summary> public string robotCode { get; set; } ///// <summary> ///// æºå¨äººç¼å· ///// </summary> //public string robotCode { get; set; } /// <summary> /// åæ¶åå /// </summary> public string reason { get; set; } ///// <summary> ///// åæ¶åå ///// </summary> //public string reason { get; set; } /// <summary> /// è½¯åæ¶çååºä»»å¡ç±»å /// </summary> public string returnTaskType { get; set; } ///// <summary> ///// è½¯åæ¶çååºä»»å¡ç±»å ///// </summary> //public string returnTaskType { get; set; } /// <summary> /// ååºç®æ è·¯å¾ /// </summary> public List<TargetRouteDto> targetRoute { get; set; } = new List<TargetRouteDto>(); ///// <summary> ///// ååºç®æ è·¯å¾ ///// </summary> //public List<TargetRouteDto> targetRoute { get; set; } = new List<TargetRouteDto>(); /// <summary> /// èªå®ä¹æ©å±å段 /// </summary> public object extra { get; set; } ///// <summary> ///// èªå®ä¹æ©å±å段 ///// </summary> //public object extra { get; set; } } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_HKLocationInfo.cs
@@ -75,7 +75,7 @@ public int Depth { get; set; } /// <summary> /// è´§ä½ç±»å /// è´§ä½ç±»å 1大 3å° /// </summary> [SugarColumn(IsNullable = true, ColumnDescription = "è´§ä½ç±»å")] public int LocationType { get; set; } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs
@@ -266,6 +266,7 @@ hIKROBOTTaskSubmit.targetRoute.Add(targetRoute); } break; case TaskTypeEnum.STURR: case TaskTypeEnum.Q1TSJ4: { TargetRouteDto target = new TargetRouteDto() ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs
@@ -82,6 +82,12 @@ { task.TaskState = (int)TaskStatusEnum.HktransportIng; } else if (task.TaskType == (int)TaskTypeEnum.Q3RK|| task.TaskType == (int)TaskTypeEnum.Q3CK) { UpdateStandStatus(task, task.TargetAddress, LocationStatusEnum.Lock); task.TaskState = (int)TaskStatusEnum.Takeing; TaskFeedback(task, 1); } else { task.TaskState = (int)TaskStatusEnum.Takeing; @@ -90,8 +96,17 @@ break; case "outbin"://离å¼èµ·ç¹ { if (task.TaskType == (int)TaskTypeEnum.Q3RK|| task.TaskType == (int)TaskTypeEnum.Q3CK) { UpdateStandStatus(task, task.TargetAddress, LocationStatusEnum.Free); task.TaskState = TaskStatusEnum.TakeFinish.ObjToInt(); TaskFeedback(task, 1); } else { TaskFromCompleted(task, deviceTypeEnum); //ä»»å¡ç¶ä½æ¹ä¸º3åè´§å®æï¼æ´æ°èµ·ç¹è´§ä½ç¶æï¼å¹¶åé¦WMSèµ·ç¹å®æ } ///夿任塿¯å¦è·è®¾å¤æå ³ TaskFromCompleted(task, deviceTypeEnum); //ä»»å¡ç¶ä½æ¹ä¸º3åè´§å®æï¼æ´æ°èµ·ç¹è´§ä½ç¶æï¼å¹¶åé¦WMSèµ·ç¹å®æ } break; case "finish"://ç¦»å¼æåæº @@ -104,7 +119,7 @@ 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 @@ -154,16 +169,22 @@ } else if (task.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || task.TaskType == TaskTypeEnum.Q3CK.ObjToInt() && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute) { if (task.TaskType == TaskTypeEnum.Q3RK.ObjToInt()) if (task.TaskType == TaskTypeEnum.Q3RK.ObjToInt()|| task.TaskType == TaskTypeEnum.Q3RK.ObjToInt()) { //妿æ¯å 楼å°ä¸æ¥¼å°±åä¸ä¸ªä¿¡å·ç»1楼plcåè¯ä»ææ¥å ¥åºäº var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "F1") as OtherDevice; if (device == null) task.ExceptionMessage = "æªæ¾å°è´¨æ£é¨ä¿¡æ¯"; else { if (device.IsConnected) //å以ä¸ä¸ªåºåºå®æä¿¡å· device.SetValue(QualityInspectionCommandEnum.RequestToEnter, false, task.TargetAddress); else task.ExceptionMessage = "è´¨æ£é¨ä¿¡æ¯è®¾å¤è¿æ¥å¤±è´¥"; } } else { //è¿ä¸ªå°±åä¸ä¸ªå¤ä½ç¶æï¼åè¯å®æåºåºäº } } } break; @@ -175,22 +196,56 @@ 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.Outboundboxretrievalcompleted, 1, task.SourceAddress); 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==(int)TaskStatusEnum.HKleavelift) { task.TaskState = TaskStatusEnum.Finish.ObjToInt(); TaskFeedback(task, 2); BaseDal.DeleteAndMoveIntoHty(task,OperateTypeEnum.èªå¨å®æ); } else if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.Q3CK) { task.TaskState = TaskStatusEnum.Finish.ObjToInt(); TaskFeedback(task, 2); BaseDal.DeleteAndMoveIntoHty(task, OperateTypeEnum.èªå¨å®æ); } else { ///夿任塿¯å¦è·è®¾å¤æå ³ TaskCompleted(task, deviceTypeEnum); } } break; case "intolift": //è¿å ¥çµæ¢¯ { //å æ¥¼å°ä¸æ¥¼çå ¥åºä»»å¡ if (task.TaskType==(int)TaskTypeEnum.Q3RK) { task.TaskState = TaskStatusEnum.Hkintolift.ObjToInt(); } } break; case "leavelift": //离å¼çµæ¢¯ { if (task.TaskType == (int)TaskTypeEnum.Q3RK) { task.TaskState = TaskStatusEnum.HKleavelift.ObjToInt(); } } break; @@ -491,6 +546,34 @@ } #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) { @@ -509,7 +592,7 @@ boundCompleteFeedback.toLocationCode = dt_Task.TargetAddress; boundCompleteFeedback.status = Status; boundCompleteFeedback.custStatus = ""; string response = HttpHelper.Post(apiInfo.ApiAddress, boundCompleteFeedback.Serialize()); string response = HttpHelper.Post(apiInfo.ApiAddress,boundCompleteFeedback.Serialize()); agvContent = response.DeserializeObject<WMSReturn>(); content.OK(data: agvContent); if (agvContent.code != 200) ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -168,6 +168,7 @@ break; #endregion #region 海康AGV case(int)TaskTypeEnum.STURR: case (int)TaskTypeEnum.Q1TSJ4: content = CreateHKNewInTask(task, item.taskType); objects.Add(content.Data); @@ -183,6 +184,7 @@ content = CarryTask(task, item.taskType); objects.Add(content.Data); break; case (int)TaskTypeEnum.F04: case (int)TaskTypeEnum.F02: case (int)TaskTypeEnum.RK3F: case (int)TaskTypeEnum.CK3F: @@ -237,7 +239,7 @@ //åå车 bool isAGV = dt_Task.TaskType == (int)TaskTypeEnum.CPInbound || dt_Task.TaskType == (int)TaskTypeEnum.CPOutbound; //海康 bool isHK = dt_Task.TaskType == (int)TaskTypeEnum.F01 || dt_Task.TaskType == (int)TaskTypeEnum.RK3F || dt_Task.TaskType == (int)TaskTypeEnum.CK3F || dt_Task.TaskType == (int)TaskTypeEnum.Q1TSJ4 || dt_Task.TaskType == (int)TaskTypeEnum.STU0003 || dt_Task.TaskType == (int)TaskTypeEnum.F02 || dt_Task.TaskType == (int)TaskTypeEnum.CHUKU1 || dt_Task.TaskType == (int)TaskTypeEnum.Q3RK || dt_Task.TaskType == (int)TaskTypeEnum.Q3CK; bool isHK = dt_Task.TaskType == (int)TaskTypeEnum.F01 || dt_Task.TaskType == (int)TaskTypeEnum.RK3F || dt_Task.TaskType == (int)TaskTypeEnum.CK3F || dt_Task.TaskType == (int)TaskTypeEnum.Q1TSJ4 || dt_Task.TaskType == (int)TaskTypeEnum.STU0003 || dt_Task.TaskType == (int)TaskTypeEnum.F02 || dt_Task.TaskType == (int)TaskTypeEnum.CHUKU1 || dt_Task.TaskType == (int)TaskTypeEnum.Q3RK || dt_Task.TaskType == (int)TaskTypeEnum.Q3CK||dt_Task.TaskType==(int)TaskTypeEnum.STURR; //è¿éå°ç¶ææ¹åäº198åæ¶ä»»å¡ dt_Task.TaskType = TaskStatusEnum.WMSCancel.ObjToInt(); #region å¯ä¹å£« @@ -316,7 +318,7 @@ cancelHIKROBOTTask = new CancelHIKROBOTTask { robotTaskCode = dt_Task.WMSTaskNum, cancelType = "CANCEL"//åè½¯åæ¶ï¼DROP人工ä»å ¥ï¼åç¡¬åæ¶ï¼ cancelType = "DROP"//åè½¯åæ¶ï¼DROP人工ä»å ¥ï¼åç¡¬åæ¶ï¼ }; var headers = new Dictionary<string, string> { @@ -325,7 +327,7 @@ Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(CancelHIKROBOTTask)); if (apiInfo == null) throw new Exception("æªæ¾å°åå车AGVä»»å¡ä¸åæ¥å£é 置信æ¯ï¼è¯·æ£æ¥æ¥å£é ç½®"); string response = HttpHelper.Post(apiInfo.ApiAddress, cancelHIKROBOTTask.Serialize(),headers:headers); string response = HttpHelper.Post(apiInfo.ApiAddress, cancelHIKROBOTTask.Serialize(),headers: headers); HIKROBOTReturn hIKROBOTReturn = response.DeserializeObject<HIKROBOTReturn>(); content.OK(data: hIKROBOTReturn); if (hIKROBOTReturn.code == "SUCCESS" && hIKROBOTReturn.message == "æå") ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs
@@ -30,7 +30,7 @@ { [DisallowConcurrentExecution] public class TSJJob : JobBase, IJob { { private readonly ITaskService _taskService; private readonly IStationMangerService _stationMangerService; public TSJJob(ITaskService taskService, IStationMangerService stationMangerService) @@ -146,6 +146,15 @@ } continue; } if (device.GetValue<HoistEnum, short>(HoistEnum.ROutScanningCompletionSignal, task.SourceAddress) != 1) { if (task.ExceptionMessage != "4楼æåæºåºå£æ«ç å®æä¿¡å·æ²¡æå®æ") { task.ExceptionMessage = "4楼æåæºåºå£æ«ç å®æä¿¡å·æ²¡æå®æ"; Uptasks.Add(task); } continue; } } //ç¶åè°ç¨è¾é线æ¥å£ï¼éç¥è¾é线ææç®±éè¦å ¥åºï¼ä»»å¡ä¸¾è¡æ§è¡ var result = _taskService.Hikvisiontaskscontinue(task.WMSTaskNum); @@ -174,30 +183,37 @@ var Barcode = device.SetValue<HoistEnum, short>(HoistEnum.Codereadingtriggered, 1); //æ£æ¥3æ¥¼å ¥åºç®±å·æ¯å¤å°ï¼ç¶åä¼ ç»wms var BinNumber = device.GetValue<HoistEnum, string>(HoistEnum.Inboxnumber, RK3FTasks.TargetAddress); //æ ¹æ®è¯»å°çç®±å·è¿è¡æç®±æ£éªï¼æ£éªéè¿å°±è§¦å读ç å¨è¯»åï¼å¦æä¸éè¿å°±æåºå¼å¸¸ //var Verification = _taskService.MaterialBoxInspection(RK3FTasks.WMSTaskNum, BinNumber.ToString()); //if (!Verification.Status) //{ // if (!(RK3FTasks.ExceptionMessage == Verification.Message)) // { // RK3FTasks.ExceptionMessage = Verification.Message; // Uptasks.Add(RK3FTasks); // } // //æç®±éªè¯å好åï¼éè¦æ´æ¹ // RK3FTasks.TargetAddress = Verification.Data.ToString(); //} //妿æç®±æ£éªæåå°±åå ¥è¯»ç å¨çå¼ var result = _taskService.Hikvisiontaskscontinue(RK3FTasks.WMSTaskNum, RK3FTasks.TargetAddress); if (result.Status == false) if (device.GetValue<HoistEnum, short>(HoistEnum.RInScanningCompletionSignal, RK3FTasks.TargetAddress ) !=1 ) { if (RK3FTasks.ExceptionMessage != result.Message) { RK3FTasks.ExceptionMessage = result.Message; Uptasks.Add(RK3FTasks); } RK3FTasks.ExceptionMessage = "3楼æ«ç å®æä¿¡å·æ²¡æå®æ"; } RK3FTasks.TaskState = (int)TaskStatusEnum.CheckPalletCodeFinish; else //宿就æä»»å¡ç¶ææ¹ææçå·ç¡®è®¤å®æ { //æ ¹æ®è¯»å°çç®±å·è¿è¡æç®±æ£éªï¼æ£éªéè¿å°±è§¦å读ç å¨è¯»åï¼å¦æä¸éè¿å°±æåºå¼å¸¸ //var Verification = _taskService.MaterialBoxInspection(RK3FTasks.WMSTaskNum, BinNumber.ToString()); //if (!Verification.Status) //{ // if (!(RK3FTasks.ExceptionMessage == Verification.Message)) // { // RK3FTasks.ExceptionMessage = Verification.Message; // Uptasks.Add(RK3FTasks); // } // //æç®±éªè¯å好åï¼éè¦æ´æ¹ // RK3FTasks.TargetAddress = Verification.Data.ToString(); //} //妿æç®±æ£éªæåå°±åå ¥è¯»ç å¨çå¼ var result = _taskService.Hikvisiontaskscontinue(RK3FTasks.WMSTaskNum, RK3FTasks.TargetAddress); if (result.Status == false) { if (RK3FTasks.ExceptionMessage != result.Message) { RK3FTasks.ExceptionMessage = result.Message; Uptasks.Add(RK3FTasks); } } RK3FTasks.TaskState = (int)TaskStatusEnum.CheckPalletCodeFinish; } Uptasks.Add(RK3FTasks); } #endregion ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs
@@ -47,7 +47,7 @@ desStationCodes = task.SourceAddress, desType = 5 }; fOURBOTnewMovePodTask.requestID += i; fOURBOTnewMovePodTask.requestID += task.TaskId; try { string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize()); @@ -643,7 +643,7 @@ autoToRest = 1 }; fOURBOTnewMovePodTask.desType = 5; fOURBOTnewMovePodTask.requestID = DateTime.Now.ToString("yyyyMMddHHmmss") + i; fOURBOTnewMovePodTask.requestID = DateTime.Now.ToString("yyyyMMddHHmmss") + item.TaskId; string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize()); FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); content.OK(data: fOURBOTReturn); ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs
@@ -99,22 +99,31 @@ } foreach (var item in AGVtaskList) { var result = _taskService.Hikvisiontaskscontinue(item.WMSTaskNum); if (result.Status == false) //intoè¿å ¥ä¸æ¥¼ä½ç½®çæ¶åï¼åå ¥è¿å ¥ä¿¡å· device.SetValue(QualityInspectionCommandEnum.RequestToEnter, true, item.TargetAddress); if (!device.GetValue<QualityInspectionCommandEnum,bool>(QualityInspectionCommandEnum.Blocking)==true) { item.ExceptionMessage = $"{item.TargetAddress}ç«å°å æ ä¸ä¸ºtrueï¼1ï¼!"; } var result = _taskService.Hikvisiontaskscontinue(item.WMSTaskNum); if (result.Status == false) { if (item.ExceptionMessage != result.Message) { if (item.ExceptionMessage != result.Message) { item.ExceptionMessage = result.Message; Uptasks.Add(item); } continue; Uptasks.Add(item); } item.TaskState = (int)TaskStatusEnum.AGV_ToExecute; item.ExceptionMessage = ""; Uptasks.Add(item); continue; } item.TaskState = (int)TaskStatusEnum.AGV_ToExecute; item.ExceptionMessage = ""; Uptasks.Add(item); } _taskService.UpdateData(Uptasks); WriteInfo(device.DeviceName, "infoLog");