´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/AGVCartInfoService.cs
@@ -91,7 +91,8 @@ dataList.Add(new HIKROBOTQueryData { singleRobotCode = item.AGVCode, mapCode = queryData?.mapCode ?? string.Empty mapCode = queryData?.mapCode ?? string.Empty, CarType = item.HkagvType // 仿¬å°æ°æ®åºè·åå°è½¦ç±»å }); successMessages.Add($"AGVå°è½¦-{item.AGVCode}æå¨æ¥¼å±{queryData?.mapCode}æ¥è¯¢æå"); ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/HoistEnum.cs
@@ -29,7 +29,7 @@ Outboundmaterialbox, /// <summary> /// 4æ¥¼ç©ºç®±ç®±å· /// 4楼åºåºç®±ç®± /// </summary> Emptycontainernumber, ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs
@@ -124,7 +124,7 @@ /// <summary> /// å¼å«æµ·åº·æ¬è¿ä¸ 19 /// çå¾ æµ·åº·AGVæ¬è¿å°ä½ 19 /// </summary> [Description("çå¾ æµ·åº·AGVæ¬è¿å°ä½")] WaitingHkAGVMovePosition, ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs
@@ -84,7 +84,7 @@ /// ç©ºè½¦è·¨æ¥¼å± /// </summary> [Description("空车跨楼å±")] Move, MOVE, /// <summary> /// æåç§»åº ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/HIKROBOT/HIKROBOTQuery.cs
@@ -32,7 +32,29 @@ /// å°è½¦ç¼å· /// </summary> public string singleRobotCode { get; set; } /// <summary> /// å°è½¦ç±»å /// </summary> public string CarType { get; set; } } public class FloorMapping { public static Dictionary<string, FloorInfo> FloorMap = new Dictionary<string, FloorInfo> { { "AA", new FloorInfo { Floor = "1楼", PointCode = "1A" } }, { "BB", new FloorInfo { Floor = "2楼", PointCode = "2B" } }, { "CC", new FloorInfo { Floor = "3楼", PointCode = "3C" } }, { "DD", new FloorInfo { Floor = "4楼", PointCode = "4D" } }, { "EE", new FloorInfo { Floor = "5楼", PointCode = "5E" } }, { "FF", new FloorInfo { Floor = "6楼", PointCode = "6F" } } }; } public class FloorInfo { public string Floor { get; set; } public string PointCode { get; set; } } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/RGV/FOURBOT/FOURBOTInfo.cs
@@ -10,6 +10,6 @@ { public string warehouseID { get; set; } = "HETU"; public string clientCode { get; set; } = "WCS"; public string requestID { get; set; } = DateTime.Now.ToString("yyyyMMddHHmmss"); public string requestID { get; set; } = DateTime.Now.ToString("yyyyMMddHHmmssfff"); } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_AGVCartInfo.cs
@@ -20,8 +20,15 @@ /// <summary> /// å°è½¦ç¼å· /// </summary> [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "ç«å°ç¼å·")] [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "å°è½¦ç¼å·")] public string AGVCode { get; set; } /// <summary> /// å°è½¦ç±»å /// </summary> [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "å°è½¦ç±»å")] public string HkagvType { get; set; } /// <summary> /// 夿³¨ /// </summary> ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs
@@ -9,7 +9,7 @@ { public class Dt_Task_Hty : Dt_Task, IBaseHistoryEntity { public new DateTime CreateDate { get; set; } = DateTime.Now; public new DateTime CreateDate { get; set; } public int SourceId { get; set; } public string OperateType { get; set; } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs
@@ -14,6 +14,7 @@ using WIDESEAWCS_DTO.AGV.HIKROBOT; using System.Diagnostics.CodeAnalysis; using System.Reflection.PortableExecutable; using WIDESEAWCS_QuartzJob; namespace WIDESEAWCS_TaskInfoService { @@ -43,6 +44,23 @@ //è·åè´§ä½ä¿¡æ¯ else hKLocationInfo = _hKLocationInfoService.GetFreeLocationInfo(taskDTO.toAreaCode) ?? throw new Exception($"æªæ¾å°ç»ç¹åºåºã{taskDTO.toAreaCode}ãå¯ç¨ç©ºè´§ä½ï¼"); if (taskType==(int)TaskTypeEnum.Q1TSJ4) { var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice; if (device.IsConnected) { var reslu = device.GetValue<HoistEnum, string>(HoistEnum.Emptycontainernumber); var result = reslu?.TrimEnd('\0')?.Substring(2); if (reslu== taskDTO.containerCode&&result!=null) { throw new Exception($"å½åçæç®±å·ä¸º{reslu}ä¸{taskDTO.containerCode}æç®±å·ä¸å¹é "); } } else { throw new Exception("æåæºä¿¡æ¯è®¾å¤è¿æ¥å¤±è´¥"); } } Dt_Task dt_Task = new Dt_Task() { TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), @@ -111,6 +129,8 @@ Dt_HKLocationInfo? hKLocationInfo = _hKLocationInfoService.Repository.QueryFirst(x => x.LocationCode == taskDTO.fromLocationCode) ?? throw new Exception($"æªæ¾å°èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãï¼"); if (hKLocationInfo.LocationStatus != LocationStatusEnum.InStock.ObjToInt()) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãå½ååºä½ç¶æä¸å¯åºåºï¼"); if (hKLocationInfo.PalletCode != taskDTO.containerCode) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãç»å®æç®±å·ã{hKLocationInfo.PalletCode}ãä¸ä»»å¡æç®±å·ã{taskDTO.containerCode}ãä¸å¹é ï¼"); //åºå å°åºå¤çç¹å°ç¹ä»»å¡ï¼æ¯å¦éè¦å¤æè´§ä½ç¶æï¼ Dt_Task dt_Task = new Dt_Task() { TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), @@ -226,6 +246,9 @@ hIKROBOTTaskSubmit.initPriority = task.Grade; hIKROBOTTaskSubmit.robotTaskCode = task.WMSTaskNum; hIKROBOTTaskSubmit.taskType = tasktype.ToString(); ExtraDto extraDto = new ExtraDto(); if (task.TaskType != (int)TaskTypeEnum.MOVE &&task.TaskType != (int)TaskTypeEnum.Q3RK && task.TaskType != (int)TaskTypeEnum.Q3CK && task.TaskType != (int)TaskTypeEnum.F01) { CarrierInfoDto carrierInfoDto = new CarrierInfoDto() { carrierCode = task.PalletCode, @@ -233,14 +256,13 @@ }; extraDto.carrierInfo.Add(carrierInfoDto); hIKROBOTTaskSubmit.extra = extraDto; } switch (tasktype) { case TaskTypeEnum.CPInbound: case TaskTypeEnum.CPOutbound: case TaskTypeEnum.MLInbound: case TaskTypeEnum.MLOutbound: break; case TaskTypeEnum.F01: break; case TaskTypeEnum.RK3F: case TaskTypeEnum.CK3F: @@ -310,7 +332,8 @@ break; case TaskTypeEnum.Q3RK: case TaskTypeEnum.Q3CK: case TaskTypeEnum.Move: case TaskTypeEnum.MOVE: case TaskTypeEnum.F01: { TargetRouteDto target = new TargetRouteDto() { ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs
@@ -14,6 +14,7 @@ using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_QuartzJob; using System.Reflection.Metadata; namespace WIDESEAWCS_TaskInfoService { @@ -208,8 +209,7 @@ WebResponseContent content = new WebResponseContent(); try { Dt_HKLocationInfo? hKLocationInfo = null; Dt_StationInfo? stationInfo = null; Dt_StationManger? stationInfo = null; Dt_Task dt_Task = null; //å ¥åº å°ä¸æ¥¼ä¸ä¸ªç«å°çä½ç½® if (taskType == (int)TaskTypeEnum.Q3RK) @@ -229,7 +229,7 @@ WMSTaskNum = taskDTO.taskCode, Grade = taskDTO.taskPriority, PalletCode = taskDTO.containerCode, Roadway = hKLocationInfo.RoadwayNo, Roadway = "1", TaskState = (int)TaskStatusEnum.New, TaskType = taskType, SourceAddress = taskDTO.fromLocationCode, @@ -238,14 +238,12 @@ TargetAddress = taskDTO.toLocationCode, Creater = "WMS", }; } //åºåº if (taskType == (int)TaskTypeEnum.Q3CK) { stationInfo = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.toLocationCode) ?? throw new Exception($"æªæ¾å°èµ·ç¹åºä½ã{taskDTO.toLocationCode}ãï¼"); if (stationInfo.StationName != LocationStatusEnum.InStock.ToString()) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.toLocationCode}ãå½ååºä½ç¶æä¸å¯åºåºï¼"); if (stationInfo.PalletCode != taskDTO.containerCode) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.toLocationCode}ãç»å®æç®±å·ã{stationInfo.PalletCode}ãä¸ä»»å¡æç®±å·ã{taskDTO.containerCode}ãä¸å¹é ï¼"); //stationInfo = _stationMangerService.Repository.QueryFirst(x => x.StationCode == taskDTO.fromLocationCode) ?? throw new Exception($"æªæ¾å°èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãï¼"); //if (stationInfo.IsOccupied != (int)LocationStatusEnum.InStock) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãå½ååºä½ç¶æä¸å¯åºåºï¼"); dt_Task = new Dt_Task() { TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), @@ -253,7 +251,7 @@ //WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), Grade = taskDTO.taskPriority, PalletCode = taskDTO.containerCode, Roadway = hKLocationInfo.RoadwayNo, Roadway = "1", TaskState = (int)TaskStatusEnum.New, TaskType = taskType, SourceAddress = taskDTO.fromLocationCode, @@ -267,8 +265,6 @@ { Db.Ado.BeginTran(); BaseDal.AddData(dt_Task); _hKLocationInfoService.Repository.UpdateData(hKLocationInfo); _stationInfo.Repository.UpdateData(stationInfo); Db.Ado.CommitTran(); } catch (Exception ex) @@ -295,8 +291,23 @@ public WebResponseContent CJCarryTaske(TaskDTO taskDTO, int taskType) { WebResponseContent content = new WebResponseContent(); Dt_StationInfo? stationInfo = null; try { //#region æ¯å¦éè¦å¤æå¹³åºåºä½ç¶æ //if (taskType!= (int)TaskTypeEnum.CK3F) //{ // stationInfo = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.fromLocationCode) ?? throw new Exception($"æªæ¾å°èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãï¼"); // if (stationInfo.StationName != LocationStatusEnum.InStock.ToString()) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãå½ååºä½ç¶æä¸å¯åºåºï¼"); // if (stationInfo.PalletCode != taskDTO.containerCode) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãç»å®æç®±å·ã{stationInfo.PalletCode}ãä¸ä»»å¡æç®±å·ã{taskDTO.containerCode}ãä¸å¹é ï¼"); //} //else //{ // stationInfo = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.toLocationCode) ?? throw new Exception($"æªæ¾å°ç»ç¹åºä½ã{taskDTO.toLocationCode}ãï¼"); // if (stationInfo.StationName != LocationStatusEnum.InStock.ToString()) throw new Exception($"èµ·ç¹åºä½ã{taskDTO.toLocationCode}ãå½ååºä½ç¶æä¸å¯åºåºï¼"); //} //#endregion Dt_Task dt_Task = new Dt_Task() { TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), @@ -326,5 +337,44 @@ return content; } #endregion #region 5ç©ºè½¦è½¬è¿ public WebResponseContent HKF01Transport(TaskDTO taskDTO, int taskType) { WebResponseContent content = new WebResponseContent(); try { var stationInfo = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.fromLocationCode) ?? throw new Exception($"æªæ¾å°èµ·ç¹åºä½ã{taskDTO.fromLocationCode}ãï¼"); var dt_Task = new Dt_Task() { TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), WMSTaskNum = taskDTO.taskCode, //WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), Grade = taskDTO.taskPriority, PalletCode = taskDTO.containerCode, Roadway = "1", TaskState = (int)TaskStatusEnum.New, TaskType = taskType, SourceAddress = taskDTO.fromLocationCode, CurrentAddress = taskDTO.fromLocationCode, NextAddress = taskDTO.toLocationCode, TargetAddress = taskDTO.toLocationCode, Creater = "WMS", }; content = SendHIKROBOTTask(dt_Task); if (!content.Status) throw new Exception(content.Message); dt_Task.TaskState = (int)TaskStatusEnum.Execut; dt_Task.Dispatchertime = DateTime.Now; BaseDal.AddData(dt_Task); } catch (Exception ex) { content.Error(ex.Message); } return content; } #endregion } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/RGVTaskMethods.cs
@@ -53,6 +53,7 @@ CurrentAddress = taskDTO.fromLocationCode, NextAddress = stationManger.RGVStationCode, TargetAddress = "", Dispatchertime=DateTime.Now, Creater = "WMS", }; BaseDal.AddData(dt_Task); @@ -104,6 +105,7 @@ CurrentAddress = taskDTO.fromLocationCode, NextAddress = taskDTO.toLocationCode, TargetAddress = taskDTO.toLocationCode, Dispatchertime = DateTime.Now, Creater = "WMS", }; rGVLocationInfo.LocationStatus = LocationStatusEnum.OutLock.ObjToInt(); @@ -134,6 +136,7 @@ }; return content.Error(ex.Message); } } #endregion /// <summary> ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs
@@ -78,11 +78,18 @@ 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 if (task.TaskType == (int)TaskTypeEnum.Q3RK|| task.TaskType == (int)TaskTypeEnum.Q3CK) else if (task.TaskType == (int)TaskTypeEnum.Q3CK) { UpdateStandStatus(task, task.SourceAddress, LocationStatusEnum.Lock); task.TaskState = (int)TaskStatusEnum.Takeing; TaskFeedback(task, 1); } else if (task.TaskType == (int)TaskTypeEnum.Q3RK) { UpdateStandStatus(task, task.TargetAddress, LocationStatusEnum.Lock); task.TaskState = (int)TaskStatusEnum.Takeing; @@ -98,12 +105,14 @@ { if (task.TaskType == (int)TaskTypeEnum.Q3RK|| task.TaskType == (int)TaskTypeEnum.Q3CK) { UpdateStandStatus(task, task.TargetAddress, LocationStatusEnum.Free); UpdateStandStatus(task, task.SourceAddress, LocationStatusEnum.Free); task.TaskState = TaskStatusEnum.TakeFinish.ObjToInt(); BaseDal.UpdateData(task); TaskFeedback(task, 1); } else { TaskFromCompleted(task, deviceTypeEnum); //ä»»å¡ç¶ä½æ¹ä¸º3åè´§å®æï¼æ´æ°èµ·ç¹è´§ä½ç¶æï¼å¹¶åé¦WMSèµ·ç¹å®æ } ///夿任塿¯å¦è·è®¾å¤æå ³ @@ -125,10 +134,11 @@ 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 = "æªæ¾å°æåæºä¿¡æ¯"; @@ -139,6 +149,7 @@ else task.ExceptionMessage = "æåæºä¿¡æ¯è®¾å¤è¿æ¥å¤±è´¥"; } BaseDal.UpdateData(task); } //忥¼ åºåº else if ((task.TaskType == TaskTypeEnum.CHUKU1.ObjToInt() || task.TaskType == TaskTypeEnum.F04.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute) @@ -152,9 +163,10 @@ else task.ExceptionMessage = "æåæºä¿¡æ¯è®¾å¤è¿æ¥å¤±è´¥"; } BaseDal.UpdateData(task); } //忥¼ å ¥åº else if ((task.TaskType == TaskTypeEnum.Q1TSJ4.ObjToInt() || task.TaskType == TaskTypeEnum.F03.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute) // //忥¼åºæåæº å ¥åº ä¹åæ¯AGV_ToExecute if ((task.TaskType == TaskTypeEnum.Q1TSJ4.ObjToInt() || task.TaskType == TaskTypeEnum.F03.ObjToInt()) && task.TaskState == (int)TaskStatusEnum.TakeFinish) { var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice; if (device == null) task.ExceptionMessage = "æªæ¾å°æåæºä¿¡æ¯"; @@ -166,14 +178,15 @@ 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()|| task.TaskType == TaskTypeEnum.Q3RK.ObjToInt()) { var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "F1") as OtherDevice; if (device == null) task.ExceptionMessage = "æªæ¾å°è´¨æ£é¨ä¿¡æ¯"; else { if (device.IsConnected) @@ -184,7 +197,7 @@ } } BaseDal.UpdateData(task); } } break; @@ -202,8 +215,8 @@ else { if (device.IsConnected) //å以ä¸ä¸ªåºåºå®æä¿¡å· device.SetValue(HoistEnum.Outboundboxretrievalcompleted, 1, task.SourceAddress); //æå¼æ«ç å¨ device.SetValue<HoistEnum, short>(HoistEnum.Codereadingtriggered, 1); else task.ExceptionMessage = "æåæºä¿¡æ¯è®¾å¤è¿æ¥å¤±è´¥"; } @@ -213,15 +226,10 @@ break; case "end"://ä»»å¡å®æéç¥ { if (task.TaskType==(int)TaskTypeEnum.Move &&task.TaskState==(int)TaskStatusEnum.HkTransportCompleted) if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.Q3CK|| task.TaskType == (int)TaskTypeEnum.MOVE) { 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(); BaseDal.UpdateData(task); TaskFeedback(task, 2); BaseDal.DeleteAndMoveIntoHty(task, OperateTypeEnum.èªå¨å®æ); } @@ -235,17 +243,19 @@ case "intolift": //è¿å ¥çµæ¢¯ { //å æ¥¼å°ä¸æ¥¼çå ¥åºä»»å¡ if (task.TaskType==(int)TaskTypeEnum.Q3RK) if (task.TaskType==(int)TaskTypeEnum.Q3RK||task.TaskType==(int)TaskTypeEnum.MOVE) { task.TaskState = TaskStatusEnum.Hkintolift.ObjToInt(); BaseDal.UpdateData(task); } } break; case "leavelift": //离å¼çµæ¢¯ { if (task.TaskType == (int)TaskTypeEnum.Q3RK) if (task.TaskType == (int)TaskTypeEnum.Q3RK || task.TaskType == (int)TaskTypeEnum.MOVE) { task.TaskState = TaskStatusEnum.HKleavelift.ObjToInt(); BaseDal.UpdateData(task); } } break; ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -178,13 +178,17 @@ content = CreateHKNewOutTask(task, item.taskType); objects.Add(content.Data); break; case (int)TaskTypeEnum.F01: case (int)TaskTypeEnum.Q3RK: case (int)TaskTypeEnum.Q3CK: content = CarryTask(task, item.taskType); objects.Add(content.Data); break; case (int)TaskTypeEnum.F01: content = HKF01Transport(task, item.taskType); break; case (int)TaskTypeEnum.F04: case (int)TaskTypeEnum.F03: case (int)TaskTypeEnum.F02: case (int)TaskTypeEnum.RK3F: case (int)TaskTypeEnum.CK3F: @@ -1153,13 +1157,14 @@ var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice; if (device == null) throw new Exception("æªæ¾å°æåæºè®¾å¤ä¿¡æ¯"); if (!device.IsConnected) throw new Exception("PLC1æåæºè®¾å¤è¿æ¥å¤±è´¥"); var value = device.GetValue<HoistEnum, short>(HoistEnum.Outboundmaterialbox, "TSJ"); var value = device.GetValue<HoistEnum, short>(HoistEnum.Outboundmaterialbox, "TSJC3F"); list.Add(new { LoctionCode = value, LocationStatus = value!=0? 100 : 0, EnableStatus = 0, }); content.OK(data: list); } else if (getLocationInfo.WarehouseId == 4) { ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs
@@ -146,6 +146,7 @@ } continue; } if (device.GetValue<HoistEnum, short>(HoistEnum.ROutScanningCompletionSignal, task.SourceAddress) != 1) { if (task.ExceptionMessage != "4楼æåæºåºå£æ«ç å®æä¿¡å·æ²¡æå®æ") @@ -180,9 +181,9 @@ var RK3FTasks = _taskService.Repository.QueryFirst(x => x.TaskType == TaskTypeEnum.RK3F.ObjToInt() && x.TaskState == (int)TaskStatusEnum.CheckPalletCodeing); if (RK3FTasks != null) { var Barcode = device.SetValue<HoistEnum, short>(HoistEnum.Codereadingtriggered, 1); //æ£æ¥3æ¥¼å ¥åºç®±å·æ¯å¤å°ï¼ç¶åä¼ ç»wms var BinNumber = device.GetValue<HoistEnum, string>(HoistEnum.Inboxnumber, RK3FTasks.TargetAddress); BinNumber = BinNumber?.TrimEnd('\0')?.Substring(2); if (device.GetValue<HoistEnum, short>(HoistEnum.RInScanningCompletionSignal, RK3FTasks.TargetAddress ) !=1 ) { RK3FTasks.ExceptionMessage = "3楼æ«ç å®æä¿¡å·æ²¡æå®æ"; @@ -212,6 +213,7 @@ Uptasks.Add(RK3FTasks); } } RK3FTasks.ExceptionMessage = ""; RK3FTasks.TaskState = (int)TaskStatusEnum.CheckPalletCodeFinish; } Uptasks.Add(RK3FTasks); ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs
@@ -1,6 +1,8 @@ using System; using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; using System; using System.Collections.Generic; using System.Linq; using System.Reflection.Emit; using System.Reflection.Metadata; using System.Text; using System.Threading.Tasks; @@ -47,78 +49,225 @@ { foreach (var item in tasks) { if (item.TaskState == (int)TaskTypeEnum.Q3CK) // åºåºä»»å¡å¤ç (ä»1楼åºåºå°6楼) if (item.TaskType == (int)TaskTypeEnum.Q3CK) { // è°ç¨æ¥å£è·åå°è½¦ä¿¡æ¯ var result = _agvcartInfoService.CheckTheCar(); // 夿æ¯å¦æ AA æ FF bool hasAAOrFF = false; if (item.TaskState == (int)TaskTypeEnum.Q3CK) { if (result != null && result.Status) { var dataList = result.Data as List<HIKROBOTQueryData>; if (dataList != null && dataList.Any()) { // æ£æ¥è¿åç mapCode åè¡¨ä¸æ¯å¦æ AA hasAAOrFF = dataList.Any(d => d.mapCode == "AA"); if (hasAAOrFF) { var content = _taskService.SendHIKROBOTTask(item); item.TaskState = (int)TaskStatusEnum.Execut; } else//è¿éæå°±è¦å¼å«ç©ºè½¦æ¥ { //æ·»å 空车è¿è¾ä»»å¡ AddAGVCartInfo(item); item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition; } } // åºåºä»»å¡ï¼æ£æ¥æ¯å¦æå¨1楼(AA)çå°è½¦ // Q3CK æ¯AAâFFç跨楼å±ä»»å¡ï¼åªè½ä½¿ç¨ä¸ç¨å°è½¦ var specialCarInAA = dataList.FirstOrDefault(d => d.mapCode == "AA" && d.CarType == "MR-Q3-600LE-D(M)(YWGP)"); if (specialCarInAA != null) { // æå¨1楼çå°è½¦ï¼ç´æ¥æ§è¡ä»»å¡ var content = _taskService.SendHIKROBOTTask(item); if (content.Status) { item.TaskState = (int)TaskStatusEnum.Execut; } } else { if (result != null && result.Status) // 没æä¸ç¨å°è½¦å¨1楼ï¼éè¦å¼å«ä¸ç¨å°è½¦æ¥å°1楼 var anySpecialCar = dataList.FirstOrDefault(d => d.CarType == "MR-Q3-600LE-D(M)(YWGP)"); if (anySpecialCar != null) { if (hasAAOrFF) // èµ·ç¹ï¼å°è½¦å½åæå¨æ¥¼å±çç¹ä½ï¼ç®æ ï¼1楼ç¹ä½ var callCarResult = AddAGVCartInfo(item, anySpecialCar.mapCode, "AA"); if (callCarResult.Status) { var content = _taskService.SendHIKROBOTTask(item); item.TaskState = (int)TaskStatusEnum.Execut; } else//è¿éæå°±è¦å¼å«ç©ºè½¦æ¥ { //æ·»å 空车è¿è¾ä»»å¡ AddAGVCartInfo(item); // åä»»å¡ç¶ææ¹ä¸ºçå¾ ç©ºè½¦ item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition; } } else { item.ExceptionMessage = "æªæ¾å°å¯ç¨AGVå°è½¦"; } } } _taskService.UpdateData(tasks); } else { item.ExceptionMessage = "è·åAGVå°è½¦ä¿¡æ¯å¤±è´¥"; } } // å ¥åºä»»å¡å¤ç (ä»6æ¥¼å ¥åºå°1楼) else if (item.TaskType == (int)TaskTypeEnum.Q3RK) { var result = _agvcartInfoService.CheckTheCar(); if (result != null && result.Status) { var dataList = result.Data as List<HIKROBOTQueryData>; if (dataList != null && dataList.Any()) { // Q3RK æ¯FFâAAç跨楼å±ä»»å¡ï¼åªè½ä½¿ç¨ä¸ç¨å°è½¦ var specialCarInFF = dataList.FirstOrDefault(d => d.mapCode == "FF" && d.CarType == "MR-Q3-600LE-D(M)(YWGP)"); if (specialCarInFF!=null) { // æå¨1楼çå°è½¦ï¼ç´æ¥æ§è¡ä»»å¡ var content = _taskService.SendHIKROBOTTask(item); item.TaskState = (int)TaskStatusEnum.Execut; } else { // 没æä¸ç¨å°è½¦å¨6楼ï¼éè¦å¼å«ä¸ç¨å°è½¦æ¥å°6楼 var anySpecialCar = dataList.FirstOrDefault(d => d.CarType == "MR-Q3-600LE-D(M)(YWGP)"); if (anySpecialCar != null) { // èµ·ç¹ï¼å°è½¦å½åæå¨æ¥¼å±çç¹ä½ï¼ç®æ ï¼6楼ç¹ä½ var callCarResult = AddAGVCartInfo(item, anySpecialCar.mapCode, "FF"); if (callCarResult.Status) { item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition; } } else { item.ExceptionMessage = "æªæ¾å°å¯ç¨AGVå°è½¦"; } } } } else { item.ExceptionMessage = "è·åAGVå°è½¦ä¿¡æ¯å¤±è´¥"; } } else if (item.TaskType == (int)TaskTypeEnum.F01) { // F01ä»»å¡å¤çï¼æ ¹æ®ç®æ å°å夿éè¦åªä¸ªæ¥¼å±çå°è½¦ var result = _agvcartInfoService.CheckTheCar(); if (result != null && result.Status) { var dataList = result.Data as List<HIKROBOTQueryData>; if (dataList != null && dataList.Any()) { // ä»ä»»å¡çèµ·å§å°å䏿åéè¦ç楼å±ä»£ç string requiredMapCode = GetMapCodeFromAddress(item.SourceAddress); if (string.IsNullOrEmpty(requiredMapCode)) { item.ExceptionMessage = $"æ æ³ä»ç®æ å°å {item.SourceAddress} ä¸è¯å«æ¥¼å±ä¿¡æ¯"; _taskService.UpdateData(item); continue; } // æ£æ¥æ¯å¦æå¨ç®æ 楼å±çå°è½¦ var hasRequiredCar = dataList.FirstOrDefault(d => d.mapCode == requiredMapCode&&d.CarType== "MR-Q3-600LE-D(M)"); if (hasRequiredCar!=null) { // æå¨ç®æ 楼å±çå°è½¦ï¼ç´æ¥æ§è¡ä»»å¡ var content = _taskService.SendHIKROBOTTask(item); if (content.Status) { item.TaskState = (int)TaskStatusEnum.Execut; } } else { // 没æç®æ 楼å±çå°è½¦ï¼éè¦å¼å«ç©ºè½¦ä»å½åä½ç½®å°ç®æ æ¥¼å± var anySpecialCar = dataList.FirstOrDefault(d => d.CarType == "MR-Q3-600LE-D(M)"); if (anySpecialCar != null) { var callCarResult = AddAGVCartInfo(item, anySpecialCar.mapCode, requiredMapCode); if (callCarResult.Status) { item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition; } } else { item.ExceptionMessage = "æªæ¾å°å¯ç¨AGVå°è½¦"; } } } } } _taskService.UpdateData(item); } } #endregion #region å¤ç海康agvæ¬è¿ä»»å¡ public WebResponseContent AddAGVCartInfo(Dt_Task task) /// <summary> /// å建空车å¼å«ä»»å¡ï¼æ ¹æ®å°è½¦å½åä½ç½®åç®æ 楼å±ï¼è®¾ç½®ä»»å¡çèµ·ç¹ãå½åä½ç½®åç®æ ç¹ï¼å¹¶ä¸åç»æµ·åº·æ¥å£ /// </summary> /// <param name="task"></param> /// <param name="currentMapCode">å½åä½ç½®</param> /// <param name="targetMapCode">ç®æ å°å</param> /// <returns></returns> public WebResponseContent AddAGVCartInfo(Dt_Task task, string currentMapCode, string targetMapCode) { WebResponseContent content = new WebResponseContent(); try { task.TaskNum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)); task.WMSTaskNum = null; task.TaskType = (int)TaskTypeEnum.Move;//æ¢å±ä»»å¡ task.TaskState = (int)TaskStatusEnum.CallingHKtransportation; var result = _taskService.SendHIKROBOTTask(task); _taskService.AddData(task); // è·åèµ·ç¹æ¥¼å±ä¿¡æ¯ if (!FloorMapping.FloorMap.ContainsKey(currentMapCode)) { content.Error($"æ æçèµ·ç¹æ¥¼å±ä»£ç ï¼{currentMapCode}"); return content; } // è·åç®æ 楼å±ä¿¡æ¯ if (!FloorMapping.FloorMap.ContainsKey(targetMapCode)) { content.Error($"æ æçç®æ 楼å±ä»£ç ï¼{targetMapCode}"); return content; } var currentFloorInfo = FloorMapping.FloorMap[currentMapCode]; var targetFloorInfo = FloorMapping.FloorMap[targetMapCode]; // 设置任å¡ä¿¡æ¯ //task.SourceAddress = currentFloorInfo.PointCode; // èµ·ç¹ï¼å°è½¦å½åä½ç½®çç¹ä½ //task.CurrentAddress = currentFloorInfo.PointCode; // å½åä½ç½®ï¼å°è½¦å½åä½ç½®çç¹ä½ //task.TargetAddress = targetFloorInfo.PointCode; // ç®æ ç¹ï¼ç®æ 楼å±ç¹ä½ //task.NextAddress = targetFloorInfo.PointCode; // è®°å½ç®æ 楼å±ä»£ç Dt_Task newTask = new Dt_Task { WMSTaskNum="HKkc"+ DateTime.Now.ToString("yyyyMMddHHmmss"), // çæå¯ä¸çWMSä»»å¡å· TaskNum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), SourceAddress = currentFloorInfo.PointCode, CurrentAddress = currentFloorInfo.PointCode, TargetAddress = targetFloorInfo.PointCode, NextAddress = targetFloorInfo.PointCode, TaskType = (int)TaskTypeEnum.MOVE, Grade = task.Grade, PalletCode = null, TaskState = (int)TaskStatusEnum.CallingHKtransportation, // å¤å¶å ¶ä»å¿ è¦å段 CreateDate = DateTime.Now, Creater = "System" }; _taskService.AddData(newTask); // æ·»å æ°ä»»å¡ var result = _taskService.SendHIKROBOTTask(newTask); if (result.Status) { content.OK("空车å¼å«ä»»å¡å建æå", newTask); } else { content.Error("空车å¼å«ä»»å¡ä¸å失败"); } return content; } catch (Exception ex) { content.Error($"å建失败ï¼{ex.Message}"); content.Error($"å建空车å¼å«ä»»å¡å¤±è´¥ï¼{ex.Message}"); } return content; } @@ -129,10 +278,11 @@ { try { List<Dt_Task> reslut = _taskService.Repository.QueryData(x => x.TaskType == (int)TaskTypeEnum.Move); if (reslut.Count<0) List<Dt_Task> reslut = _taskService.Repository.QueryData(x => x.TaskType == (int)TaskTypeEnum.MOVE); if (reslut.Count<=0) { foreach (var item in reslut) List<Dt_Task> reslut2 = _taskService.Repository.QueryData(x => x.TaskType == (int)TaskTypeEnum.Q3RK||x.TaskType==(int)TaskTypeEnum.Q3CK || x.TaskType == (int)TaskTypeEnum.F01); foreach (var item in reslut2) { var content = _taskService.SendHIKROBOTTask(item); } @@ -151,5 +301,30 @@ } } #endregion /// <summary> /// ä»å°å䏿忥¼å±ä»£ç ï¼AAãBBãCCãDDãEEãFFï¼ /// </summary> /// <param name="address">ç¹ä½å°å</param> /// <returns>楼å±ä»£ç </returns> private string GetMapCodeFromAddress(string address) { if (string.IsNullOrEmpty(address)) return null; // å°åæ ¼å¼ç¤ºä¾ ï¼AA å¯¹åº 0339050AA0309145 // keys æ¯ AAãBBãCCãDDãEEãFFï¼vuleæ¯å¯¹åºçç¹ä½ä¿¡æ¯ foreach (var floorCode in FloorMapping.FloorMap.Keys) { if (address.Contains(floorCode)) { return floorCode;//è¿åçå°±æ¯AAãBBãCCãDDãEEãFFä¸çä¸ä¸ªï¼ä»£è¡¨å¯¹åºçæ¥¼å± } } return null; } } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/RGVTaskExtend.cs
@@ -65,6 +65,7 @@ task.RGVTaskId = fOURBO.taskID; task.ExceptionMessage = ""; task.TaskState = (int)TaskStatusEnum.Execut; task.Dispatchertime=DateTime.Now; } catch (Exception ex) { @@ -119,6 +120,7 @@ keepRobot = 1, keepRobotTimeout = 1 }; fOURBOTnewMovePodTask.requestID += item.TaskId; fOURBOTnewMovePodTask.desType = 1; fOURBOTnewMovePodTask.desNodeID = item.NextAddress; string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize()); @@ -134,6 +136,7 @@ } //FOURBOTnewMovePodTaskResponseData fOURBO = fOURBOTReturn.data as FOURBOTnewMovePodTaskResponseData ?? throw new Exception("æªè·åå°åå车è¿åçä»»å¡ID"); item.RGVTaskId = fOURBO.taskID; item.Dispatchertime = DateTime.Now; item.TaskState = (int)TaskStatusEnum.TakeFinish; } } @@ -206,7 +209,10 @@ #endregion var responseContent = AddMoveTask(item.blockPods, task);//æ·»å ç§»åºä»»å¡ if (!responseContent.Status) task.ExceptionMessage = responseContent.Message; else task.TaskState = (int)TaskStatusEnum.RGV_WaitMoveToExecute; else { task.TaskState = (int)TaskStatusEnum.RGV_WaitMoveToExecute; } dt_Tasks.Add(task); } else @@ -274,6 +280,7 @@ { autoToRest = 1 }; fOURBOTnewMovePodTask.requestID = DateTime.Now.ToString("yyyyMMddHHmmssfff") + item.TaskId; item.CurrentAddress = item.NextAddress; item.NextAddress = rGVLocationInfo.LocationCode; item.TargetAddress = rGVLocationInfo.LocationCode; @@ -288,8 +295,8 @@ var fOURBO = data.DeserializeObject<FOURBOTnewMovePodTaskResponseData>(); item.RGVTaskId = fOURBO.taskID; item.TaskState = (int)TaskStatusEnum.Puting; rGVLocationInfo.LocationStatus = LocationStatusEnum.InLock.ObjToInt(); item.Dispatchertime = DateTime.Now; locationsToUpdate.Add(rGVLocationInfo); #region éæ¾å ¥åºç«å° @@ -316,6 +323,10 @@ item.ExceptionMessage = $"å¤çä»»å¡å¼å¸¸ï¼{ex.Message}"; //WriteError($"{nameof(TaskJob)}-{item.TaskId}", ex.Message, ex); content.Error($"åå车æ¥å£è¿åé误ï¼{ex.Message}"); } finally { } } #region MyRegion @@ -467,6 +478,7 @@ } item.RGVTaskId = fOURBO.taskID; item.TaskState = (int)TaskStatusEnum.Puting; item.Dispatchertime = DateTime.Now; } } _taskService.UpdateData(tasks); @@ -571,6 +583,7 @@ var task = tasks.First(x => x.PalletCode == item.podID); task.RGVTaskId = item.taskID; task.TaskState = TaskStatusEnum.RGV_MoveTaskSend.ObjToInt(); task.Dispatchertime = DateTime.Now; dt_Tasks.Add(task); } _taskService.UpdateData(dt_Tasks); @@ -599,6 +612,7 @@ if (takes == null) { item.TaskState = (int)TaskStatusEnum.RGV_WaitSend; item.Dispatchertime = DateTime.Now; } } _taskService.UpdateData(tasks); @@ -643,7 +657,7 @@ autoToRest = 1 }; fOURBOTnewMovePodTask.desType = 5; fOURBOTnewMovePodTask.requestID = DateTime.Now.ToString("yyyyMMddHHmmss") + item.TaskId; fOURBOTnewMovePodTask.requestID = DateTime.Now.ToString("yyyyMMddHHmmssfff") + item.TaskId; string response = HttpHelper.Post(apiInfo.ApiAddress, fOURBOTnewMovePodTask.Serialize()); FOURBOTReturn fOURBOTReturn = response.DeserializeObject<FOURBOTReturn>(); content.OK(data: fOURBOTReturn); @@ -657,6 +671,7 @@ } item.RGVTaskId = fOURBO.taskID; item.TaskState = (int)TaskStatusEnum.Execut; item.Dispatchertime = DateTime.Now; //stationManger.IsOccupied = LocationStatusEnum.Lock.ObjToInt(); //_stationMangerService.UpdateData(stationManger); } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs
@@ -67,10 +67,6 @@ var R_RightWideWarning = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_RightWideWarning, task.SourceAddress); //è¶ é«è¦å var R_ExtremeWarning = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_ExtremeWarning, task.SourceAddress); //åå ¥åæ¢è´¨æ£ä¿¡å· device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, true, task.SourceAddress); Thread.Sleep(500); device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress); if (qualityResult) { //å¦æè´¨æ£éè¿äºï¼å°±æä»»å¡ç¶ææ¹ä¸ºè´¨æ£å®æ @@ -89,6 +85,10 @@ //åå ¥å¤ä½ä¿¡å· //device.SetValue(QualityInspectionCommandEnum.FaultReset, true, task.SourceAddress); } //åå ¥åæ¢è´¨æ£ä¿¡å· device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, true, task.SourceAddress); Thread.Sleep(500); device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress); } //else //{ @@ -96,12 +96,18 @@ // device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress); // device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, true, task.SourceAddress); //} else { task.TaskState = TaskStatusEnum.CheckShapeingNG.ObjToInt(); task.ExceptionMessage = "æªæ£æµå°è´¨æ£å®æä¿¡å·"; Uptasks.Add(task); } } foreach (var item in AGVtaskList) { //intoè¿å ¥ä¸æ¥¼ä½ç½®çæ¶åï¼åå ¥è¿å ¥ä¿¡å· device.SetValue(QualityInspectionCommandEnum.RequestToEnter, true, item.TargetAddress); device.SetValue(QualityInspectionCommandEnum.RequestToEnter, true, item.SourceAddress); if (!device.GetValue<QualityInspectionCommandEnum,bool>(QualityInspectionCommandEnum.Blocking)==true) { item.ExceptionMessage = $"{item.TargetAddress}ç«å°å æ ä¸ä¸ºtrueï¼1ï¼!";