From 73a077d76b715aee6b9f384b087a6792a84989d8 Mon Sep 17 00:00:00 2001 From: huangxiaoqiang <1247017146@qq.com> Date: 星期二, 03 六月 2025 11:35:52 +0800 Subject: [PATCH] 代码提交 --- 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/AGV/AGVService.cs | 325 ++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 245 insertions(+), 80 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/AGV/AGVService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/AGV/AGVService.cs" index 2292f84..61d7523 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/AGV/AGVService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/AGV/AGVService.cs" @@ -27,8 +27,6 @@ private readonly ILocationInfoRepository _locationRepository; private readonly IDt_TaskRepository BaseDal; private readonly IDt_TaskService _taskService; - private readonly IStockInfoRepository _stockInfoRepository; - private readonly ISys_ConfigService _configService; private readonly IDt_StationManagerRepository _stationManagerRepository; private readonly LogFactory LogFactory = new LogFactory(); public SocketClientService _Socket { get; set; } @@ -36,12 +34,10 @@ private readonly IDt_DeviceInfoRepository _deviceInfoRepository; private readonly IDt_HandAutomaticRepository _handAutomaticRepository; - public AGVService(ILocationInfoRepository locationRepository, IDt_TaskRepository taskRepository, IStockInfoRepository stockInfoRepository, ISys_ConfigService configService, IDt_StationManagerRepository stationManagerRepository, IDt_DeviceInfoRepository deviceInfoRepository, IMapper mapper, SocketClientService socketClientService, IDt_TaskService taskService, IDt_HandAutomaticRepository handAutomaticRepository) + public AGVService(ILocationInfoRepository locationRepository, IDt_TaskRepository taskRepository, IDt_StationManagerRepository stationManagerRepository, IDt_DeviceInfoRepository deviceInfoRepository, IMapper mapper, SocketClientService socketClientService, IDt_TaskService taskService, IDt_HandAutomaticRepository handAutomaticRepository) { _locationRepository = locationRepository; BaseDal = taskRepository; - _stockInfoRepository = stockInfoRepository; - _configService = configService; _stationManagerRepository = stationManagerRepository; _deviceInfoRepository = deviceInfoRepository; _mapper = mapper; @@ -62,10 +58,10 @@ WebResponseContent content = new WebResponseContent(); try { - var HandAutomatic = _handAutomaticRepository.QueryFirst(x => true && x.HandAutomatic == "Automatic"); - if (HandAutomatic == null) + var location = _locationRepository.QueryData(x => x.LocationStatus==(int)LocationEnum.Free).ToList(); + if (location.Count == 0) { - return content.Error("褰撳墠涓嶆槸鑷姩妯″紡涓嶅彲涓嬪彂浠诲姟"); + return content.Error("搴撳唴鏃犲彲鐢ㄥ簱浣�"); } Dt_StationManager Instation = _stationManagerRepository.QueryFirst(x => x.stationName == aGVDTO.SourceAddress && x.stationType == 1); List<Dt_StationManager> Outstation = _stationManagerRepository.QueryData(x => x.stationType == 2).ToList(); @@ -132,12 +128,12 @@ WebResponseContent content = new WebResponseContent(); try { - var HandAutomatic = _handAutomaticRepository.QueryFirst(x => true && x.HandAutomatic == "Automatic"); - if (HandAutomatic == null) - { - _Socket.DeviceAutoStatusReport("1"); - return content.OK(); - } + //var HandAutomatic = _handAutomaticRepository.QueryFirst(x => true && x.HandAutomatic == "Automatic"); + //if (HandAutomatic == null) + //{ + // _Socket.DeviceAutoStatusReport("1"); + // return content.OK(); + //} Dt_DeviceInfo device = _deviceInfoRepository.QueryFirst(x => x.DeviceName == Status.AGVName); if (device != null) { @@ -239,118 +235,245 @@ WebResponseContent content = new WebResponseContent(); try { - Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == aGVDTO.TaskNum); + Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == Convert.ToInt32(aGVDTO.TaskNum)); if (task != null) { - if (task.Roadway == "PDA") + switch (task.TaskType) { - LogFactory.GetLog("AGV鍔ㄤ綔鐘舵�佸彉鏇碢DA浠诲姟").InfoFormat(true, $"璇锋眰鍙傛暟锛歿JsonConvert.SerializeObject(aGVDTO)}", ""); - if (aGVDTO.Status == "Start") - { - _taskService.TaskStatus(task); - return content.OK(); - } - else if (aGVDTO.Status == "Unload") - { - return _taskService.TaskComplete(task.TaskNum); - } - else - { - return content.OK(); - } - } - else - { - switch (task.TaskType) - { - case (int)TaskInboundTypeEnum.Inbound: - //鍏ュ簱 - var station = _stationManagerRepository.QueryFirst(x => x.stationName == task.SourceAddress); - if (aGVDTO.Status == "Start") + case (int)TaskInboundTypeEnum.Inbound: + //鍏ュ簱 + var station = _stationManagerRepository.QueryFirst(x => x.stationName == task.SourceAddress); + if (aGVDTO.Status == "Start") + { + if (task.Roadway == "PDA") + { + _taskService.TaskStatus(task); + return content.OK(); + } + else { _Socket.JobStartOrEnd(aGVDTO.Status.Substring(0, 1), "0000" + station.HostName, task.TargetAddress, "I", task.PalletCode); task.TaskState = (int)TaskInStatusEnum.AGV_InExecuting; } - else if (aGVDTO.Status == "Loadel") + + } + else if (aGVDTO.Status == "Loadel") + { + _Socket.PalletActionReport(aGVDTO.Status.Substring(0, 1), "0000" + station.HostName, task.TargetAddress, "I", task.PalletCode); + } + else + { + if (task.Roadway == "PDA") { - _Socket.PalletActionReport(aGVDTO.Status.Substring(0, 1), "0000" + station.HostName, task.TargetAddress, "I", task.PalletCode); + _Socket.PalletActionReportPDA("0000" + station.HostName, task.TargetAddress, "I", task.PalletCode); } else { _Socket.PalletActionReport(aGVDTO.Status.Substring(0, 1), "0000" + station.HostName, task.TargetAddress, "I", task.PalletCode); Thread.Sleep(2000); _Socket.PalletActionReport("0000" + station.HostName, task.TargetAddress, "I", task.PalletCode); - task.TaskState = (int)TaskInStatusEnum.AGV_InFinish; - _taskService.CompleteInboundTask(task); } - break; - case (int)TaskOutboundTypeEnum.Outbound: - //鍑哄簱 - var stationOut = _stationManagerRepository.QueryFirst(x => x.stationName == task.TargetAddress); - if (aGVDTO.Status == "Start") + task.TaskState = (int)TaskInStatusEnum.AGV_InFinish; + _taskService.CompleteInboundTask(task); + } + break; + case (int)TaskOutboundTypeEnum.Outbound: + //鍑哄簱 + var stationOut = _stationManagerRepository.QueryFirst(x => x.stationName == task.TargetAddress); + if (aGVDTO.Status == "Start") + { + if (task.Roadway == "PDA") + { + _taskService.TaskStatus(task); + return content.OK(); + } + else { _Socket.JobStartOrEnd(aGVDTO.Status.Substring(0, 1), task.SourceAddress, "0000" + stationOut.HostName, "O", task.PalletCode); task.TaskState = (int)TaskOutStatusEnum.AGV_OutExecuting; } - else if (aGVDTO.Status == "Loadel") + } + else if (aGVDTO.Status == "Loadel") + { + _Socket.PalletActionReport(aGVDTO.Status.Substring(0, 1), task.SourceAddress, "0000" + stationOut.HostName, "O", task.PalletCode); + } + else + { + if (task.Roadway == "PDA") { - _Socket.PalletActionReport(aGVDTO.Status.Substring(0, 1), task.SourceAddress, "0000" + stationOut.HostName, "O", task.PalletCode); + _Socket.PalletActionReportPDA(task.SourceAddress, "0000" + stationOut.HostName, "O", task.PalletCode); } else { _Socket.PalletActionReport(aGVDTO.Status.Substring(0, 1), task.SourceAddress, "0000" + stationOut.HostName, "O", task.PalletCode); Thread.Sleep(2000); _Socket.PalletActionReport(task.SourceAddress, "0000" + stationOut.HostName, "O", task.PalletCode); - task.TaskState = (int)TaskOutStatusEnum.AGV_OutFinish; - _taskService.CompleteOutboundTask(task); } - break; - case (int)TaskRelocationTypeEnum.Relocation: - if (aGVDTO.Status == "Start") + task.TaskState = (int)TaskOutStatusEnum.AGV_OutFinish; + _taskService.CompleteOutboundTask(task); + } + break; + case (int)TaskRelocationTypeEnum.Relocation: + if (aGVDTO.Status == "Start") + { + if (task.Roadway == "PDA") + { + _taskService.TaskStatus(task); + return content.OK(); + } + else { _Socket.JobStartOrEnd(aGVDTO.Status.Substring(0, 1), task.SourceAddress, task.TargetAddress, "R", task.PalletCode); task.TaskState = (int)TaskRelocationStatusEnum.AGV_RelocationExecuting; } - else if (aGVDTO.Status == "Loadel") + } + else if (aGVDTO.Status == "Loadel") + { + _Socket.PalletActionReport(aGVDTO.Status.Substring(0, 1), task.SourceAddress, task.TargetAddress, "R", task.PalletCode); + } + else + { + if (task.Roadway == "PDA") { - _Socket.PalletActionReport(aGVDTO.Status.Substring(0, 1), task.SourceAddress, task.TargetAddress, "R", task.PalletCode); + _Socket.PalletActionReportPDA(task.SourceAddress, task.TargetAddress, "R", task.PalletCode); } else { _Socket.PalletActionReport(aGVDTO.Status.Substring(0, 1), task.SourceAddress, task.TargetAddress, "R", task.PalletCode); Thread.Sleep(2000); _Socket.PalletActionReport(task.SourceAddress, task.TargetAddress, "R", task.PalletCode); - task.TaskState = (int)TaskRelocationStatusEnum.AGV_RelocationFinish; - _taskService.CompleteRelocationboundTask(task); } - break; - case (int)TaskStationTypeEnum.StationToStation: - var stationIn = _stationManagerRepository.QueryFirst(x => x.stationName == task.SourceAddress); - var stationout = _stationManagerRepository.QueryFirst(x => x.stationName == task.TargetAddress); - if (aGVDTO.Status == "Start") + task.TaskState = (int)TaskRelocationStatusEnum.AGV_RelocationFinish; + _taskService.CompleteRelocationboundTask(task); + } + break; + case (int)TaskStationTypeEnum.StationToStation: + var stationIn = _stationManagerRepository.QueryFirst(x => x.stationName == task.SourceAddress); + var stationout = _stationManagerRepository.QueryFirst(x => x.stationName == task.TargetAddress); + if (aGVDTO.Status == "Start") + { + if (task.Roadway == "PDA") + { + _taskService.TaskStatus(task); + return content.OK(); + } + else { _Socket.JobStartOrEnd(aGVDTO.Status.Substring(0, 1), "0000" + stationIn.HostName, "0000" + stationout.HostName, "S", task.PalletCode); task.TaskState = (int)TaskOutStatusEnum.AGV_OutExecuting; } - else if (aGVDTO.Status == "Loadel") + } + else if (aGVDTO.Status == "Loadel") + { + _Socket.PalletActionReport(aGVDTO.Status.Substring(0, 1), "0000" + stationIn.HostName, "0000" + stationout.HostName, "S", task.PalletCode); + } + else + { + if (task.Roadway == "PDA") { - _Socket.PalletActionReport(aGVDTO.Status.Substring(0, 1), "0000" + stationIn.HostName, "0000" + stationout.HostName, "S", task.PalletCode); + _Socket.PalletActionReportPDA("0000" + stationIn.HostName, "0000" + stationout.HostName, "S", task.PalletCode); } else { _Socket.PalletActionReport(aGVDTO.Status.Substring(0, 1), "0000" + stationIn.HostName, "0000" + stationout.HostName, "S", task.PalletCode); Thread.Sleep(2000); _Socket.PalletActionReport("0000" + stationIn.HostName, "0000" + stationout.HostName, "S", task.PalletCode); - task.TaskState = (int)TaskOutStatusEnum.AGV_OutFinish; - _taskService.TaskMoveHty(task); } - break; - default: break; - } - BaseDal.Update(task); - LogFactory.GetLog("AGV鍔ㄤ綔鐘舵�佸彉鏇�").InfoFormat(true, $"璇锋眰鍙傛暟锛歿JsonConvert.SerializeObject(aGVDTO)}", ""); - return content.OK(); - } + task.TaskState = (int)TaskOutStatusEnum.AGV_OutFinish; + _taskService.TaskMoveHty(task); + } + break; + case (int)TaskFireAlarmTypeEnum.FireAlarmOut: + if (aGVDTO.Status == "Start") + { + _taskService.AddStcokHty(task.PalletCode, task.SourceAddress); + task.TaskState = (int)TaskFireAlarmStatusEnum.AGV_FireAlarmExecuting; + BaseDal.Update(task); + } + else if (aGVDTO.Status == "Loadel") + { + + } + else + { + + var stationFireAlarm = _stationManagerRepository.QueryFirst(x => x.stationName == task.TargetAddress); + if (task.Roadway == "PDA") + { + _Socket.PalletActionReportFrie(task.SourceAddress, "0000" + stationFireAlarm.HostName, "F", task.PalletCode); ; + } + task.TaskState = (int)TaskFireAlarmStatusEnum.AGV_FireAlarmFinish; + _taskService.TaskMoveHty(task); + } + break; + case (int)TaskOutboundTypeEnum.OutQuality: + //鎶芥 + var stationC = _stationManagerRepository.QueryFirst(x => x.stationName == task.TargetAddress); + if (aGVDTO.Status == "Start") + { + if (task.Roadway == "PDA") + { + _taskService.TaskStatus(task); + return content.OK(); + } + else + { + _Socket.JobStartOrEnd(aGVDTO.Status.Substring(0, 1), task.SourceAddress, "0000" + stationC.HostName, "C", task.PalletCode); + task.TaskState = (int)TaskOutStatusEnum.AGV_OutExecuting; + } + } + else if (aGVDTO.Status == "Loadel") + { + if (task.Roadway == "PDA") + { + return content.OK(); + } + _Socket.PalletActionReport(aGVDTO.Status.Substring(0, 1), task.SourceAddress, "0000" + stationC.HostName, "C", task.PalletCode); + } + else + { + if (task.Roadway == "PDA") + { + _taskService.TaskComplete(task.TaskNum); + _Socket.PalletActionReportPDA(task.SourceAddress, "0000" + stationC.HostName, "O", task.PalletCode); + } + else + { + _Socket.PalletActionReport(aGVDTO.Status.Substring(0, 1), task.SourceAddress, "0000" + stationC.HostName, "C", task.PalletCode); + Thread.Sleep(2000); + _Socket.PalletActionReport(task.SourceAddress, "0000" + stationC.HostName, "C", task.PalletCode); + task.TaskState = (int)TaskOutStatusEnum.AGV_OutFinish; + _taskService.CompleteOutboundTask(task); + } + } + break; + case (int)TaskInboundTypeEnum.InQuality: + //鎶芥 + if (aGVDTO.Status == "Start") + { + if (task.Roadway == "PDA") + { + _taskService.TaskStatus(task); + return content.OK(); + } + } + else if (aGVDTO.Status == "Loadel") + { + return content.OK(); + } + else + { + if (task.Roadway == "PDA") + { + _taskService.TaskComplete(task.TaskNum); + } + } + break; + default: break; + } + BaseDal.Update(task); + LogFactory.GetLog("AGV鍔ㄤ綔鐘舵�佸彉鏇�").InfoFormat(true, $"璇锋眰鍙傛暟锛歿JsonConvert.SerializeObject(aGVDTO)}", ""); + return content.OK(); } else { @@ -369,20 +492,49 @@ WebResponseContent content = new WebResponseContent(); try { - var task = BaseDal.QueryFirst(x => x.TaskNum == aGVDTO.TaskNum); + var task = BaseDal.QueryFirst(x => x.TaskNum ==Convert.ToInt32( aGVDTO.TaskNum)); if (task != null) { + + string HostType = string.Empty; + if (task.TaskType == (int)TaskInboundTypeEnum.Inbound) + { + HostType = "I"; + } + else if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound) + { + HostType = "O"; + } + else if (task.TaskType == (int)TaskOutboundTypeEnum.OutQuality) + { + HostType = "C"; + } + else if (task.TaskType == (int)TaskRelocationTypeEnum.Relocation) + { + HostType = "R"; + } + else if (task.TaskType == (int)TaskStationTypeEnum.StationToStation) + { + HostType = "S"; + } switch (aGVDTO.Message) { - case "RepeatInbound": - + //绌哄嚭搴� + case "0000400": + _Socket.EmptyOutBound(task.SourceAddress, "0000" + StationParse(task.TargetAddress), task.PalletCode); + _taskService.AddStcokHty(task.PalletCode, task.SourceAddress); + _taskService.TaskMoveHty(task); + _Socket.AddErrorMessage("2101", "AGV", ""); break; - case "EmptyOutbound": - + //閲嶅叆搴� + case "0000200": + _Socket.RecreateGetLocation("0000" + StationParse(task.SourceAddress), task.TargetAddress, HostType, task.PalletCode); + _Socket.AddErrorMessage("2100", "AGV", ""); break; default: break; } } + LogFactory.GetLog("AGV寮傚父淇℃伅").InfoFormat(true, $"璇锋眰鍙傛暟锛歿JsonConvert.SerializeObject(aGVDTO)}", ""); return content.OK(); } catch (Exception ex) @@ -390,6 +542,19 @@ return content.Error(ex.Message); } } + + public string StationParse(string station) + { + var Station = SqlSugarHelper.DbWMS.Queryable<Dt_StationManager>().Where(x => x.stationName == station).First(); + if (Station != null) + { + return Station.HostName; + } + else + { + return ""; + } + } #endregion 澶栭儴鎺ュ彛鏂规硶 } } -- Gitblit v1.9.3