ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/Http/HttpHelperh.cs
@@ -2,8 +2,6 @@ using Newtonsoft.Json; using System.Net; using System.Text; using WIDESEA_Common.Log; namespace WIDESEA_Comm.Http { public class HttpHelperh @@ -62,7 +60,6 @@ } catch (Exception ex) { WriteLog.Write_Log("System/API请æ±", rquestName, "请æ±å¼å¸¸", new { è¯·æ±æ¥æ = parm, æ¥æ¶æ¥æ = responseContent, é误 = ex.Message }); throw ex; } } @@ -119,7 +116,6 @@ } catch (Exception ex) { WriteLog.Write_Log("System/API请æ±", rquestName, "请æ±å¼å¸¸", new { è¯·æ±æ¥æ = parm, æ¥æ¶æ¥æ = responseContent, é误 = ex.Message }); throw ex; } } @@ -183,13 +179,10 @@ { throw new Exception("å¼å¸¸ï¼ååºç ï¼" + statsCode.ToString()); } WriteLog.Write_Log("System/API请æ±", rquestName, "è¯·æ±æå", new { è¯·æ±æ¥æ = parm, æ¥æ¶æ¥æ = responseContent }); return JsonConvert.DeserializeObject<T>(responseContent); } catch (Exception ex) { WriteLog.Write_Log("System/API请æ±", rquestName, "请æ±å¼å¸¸", new { è¯·æ±æ¥æ = parm, æ¥æ¶æ¥æ = responseContent, é误 = ex.Message }); throw ex; } } ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj
@@ -6,4 +6,8 @@ <Nullable>enable</Nullable> </PropertyGroup> <ItemGroup> <PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> </ItemGroup> </Project> ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -238,5 +238,11 @@ /// <param name="sourceAddress">èµ·å§å°å</param> /// <returns></returns> Dt_Task RequestWMSTaskMovelibrary(Dt_Task _Task); /// <summary> /// åºåºå£è·åå½åå åæºå®æä»»å¡ /// </summary> /// <returns></returns> Dt_Task GetOutTaskInfo(string PLCaddress); } } ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/appsettings.json
@@ -8,8 +8,8 @@ }, "dics": "deviceType,devicePlcType,jobAssembly,jobClassName,deviceStatus,taskType,taskState,inOutType", "urlWMSMovelibraryTask": "http://10.50.11.65:8098/api/Task/IsRelocations", //请æ±ç§»åºæ¥å£ "urlTaskCompleted": "http://10.50.11.65:8098/api/Task/TaskCompleted", //ä»»å¡åé¦ "urlWMSMovelibraryTask": "http://127.0.0.1:9290/api/Task/IsRelocations", //请æ±ç§»åºæ¥å£ "urlTaskCompleted": "http://127.0.0.1:9290/api/Task/TaskCompleted", //ä»»å¡åé¦ "AllowedHosts": "*", "ConnectionStringsEncryption": false, ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -16,6 +16,7 @@ #endregion << ç æ¬ 注 é >> using AutoMapper; using HslCommunication.Enthernet; using Newtonsoft.Json; using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; using SqlSugar; @@ -397,34 +398,36 @@ try { int oldState = task.TaskState; if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound) { if (task.TaskState >= (int)TaskOutStatusEnum.OutFinish) { return content = WebResponseContent.Instance.Error($"该任å¡ç¶æä¸å¯è·³è½¬å°ä¸ä¸æ¥,ä»»å¡å·:ã{task.TaskNum}ã,ä»»å¡ç¶æ:ã{task.TaskState}ã"); } int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>(); //int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>(); task.TaskState = nextStatus; task.TaskState = (int)TaskOutStatusEnum.SC_OutExecuting; task.Dispatchertime = DateTime.Now; } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) else if (task.TaskType == (int)TaskInboundTypeEnum.Inbound) { if (task.TaskState >= (int)TaskInStatusEnum.InFinish) { return content = WebResponseContent.Instance.Error($"该任å¡ç¶æä¸å¯è·³è½¬å°ä¸ä¸æ¥,ä»»å¡å·:ã{task.TaskNum}ã,ä»»å¡ç¶æ:ã{task.TaskState}ã"); } int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>(); task.TaskState = nextStatus; if (task.TaskState == (int)TaskInStatusEnum.Line_InFinish) //int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>(); task.TaskState = (int)TaskInStatusEnum.SC_InExecuting; task.Dispatchertime = DateTime.Now; } else if (task.TaskType == (int)TaskRelocationTypeEnum.Relocation) { if (task.TaskState != (int)TaskRelocationStatusEnum.RelocationNew) { Random random = new Random(); task.CurrentAddress = task.NextAddress; task.NextAddress = $"{random.Next(1, 100).ToString().PadLeft(3, '0')}-{random.Next(1, 100).ToString().PadLeft(3, '0')}-{random.Next(1, 100).ToString().PadLeft(3, '0')}"; task.TargetAddress = task.NextAddress; return content = WebResponseContent.Instance.Error($"该任å¡ç¶æä¸å¯è·³è½¬å°ä¸ä¸æ¥,ä»»å¡å·:ã{task.TaskNum}ã,ä»»å¡ç¶æ:ã{task.TaskState}ã"); } task.TaskState = (int)TaskRelocationStatusEnum.SC_RelocationExecuting; //ä¸åç§»åºä»»å¡ } else { @@ -435,6 +438,7 @@ { return content = WebResponseContent.Instance.Error($"该任å¡ç¶æä¸å¯è·³è½¬å°ä¸ä¸æ¥,ä»»å¡å·:ã{task.TaskNum}ã,ä»»å¡ç¶æ:ã{task.TaskState}ã"); } task.ModifyDate = DateTime.Now; task.Modifier = "System"; @@ -503,28 +507,22 @@ if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting) { /*List<Dt_Router> routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress); if (!routers.Any()) return WebResponseContent.Instance.Error($"æªæ¾å°è®¾å¤è·¯ç±ä¿¡æ¯");*/ task.TaskState = (int)TaskOutStatusEnum.OutFinish; BaseDal.UpdateData(task); content = HttpHelperh.Get<WebResponseContent>($"{urlTaskCompleted}?TaskNum={task.TaskNum}&HowWorks=2"); task.TaskState = (int)TaskOutStatusEnum.SC_OutFinish; task.ModifyDate = DateTime.Now; BaseDal.DeleteData(task); BaseDal.UpdateData(task); content = HttpHelperh.Get<WebResponseContent>($"{urlTaskCompleted}?TaskNum={task.TaskNum}"); Console.WriteLine("ä»»å¡å®æ"); //BaseDal.DeleteData(task); // _task_HtyService.AddTaskHty(task); éè¦æ·»å ç§»å ¥åå² _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"åºåºå®æ"); //todo 忥å°WMS //_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"åºåºå®æ"); //æä¸èèå¤ä¸ªåºåºå£ } else if (task.TaskType == (int)TaskInboundTypeEnum.Inbound && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting) { task.TaskState = (int)TaskInStatusEnum.InFinish; BaseDal.UpdateData(task); content = HttpHelperh.Get<WebResponseContent>($"{urlTaskCompleted}?TaskNum={task.TaskNum}&HowWorks=2"); content = HttpHelperh.Get<WebResponseContent>($"{urlTaskCompleted}?TaskNum={task.TaskNum}"); task.ModifyDate = DateTime.Now; task.Modifier = "System"; @@ -538,7 +536,7 @@ task.TaskState = (int)TaskRelocationStatusEnum.SC_RelocationFinish; BaseDal.UpdateData(task); content = HttpHelperh.Get<WebResponseContent>($"{urlTaskCompleted}?TaskNum={task.TaskNum}&HowWorks=2"); content = HttpHelperh.Get<WebResponseContent>($"{urlTaskCompleted}?TaskNum={task.TaskNum}"); task.ModifyDate = DateTime.Now; @@ -714,5 +712,11 @@ return null; } public Dt_Task GetOutTaskInfo(string PLCaddress) { return BaseDal.QueryFirst(x => x.TargetAddress== PLCaddress && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish, TaskOrderBy); } } } ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -146,17 +146,20 @@ } } } else if (!conveyorLineSignalRead.STB && !conveyorLineSignalRead.ACK && conveyorLineStatus.Online && conveyorLineStatus.Goods && !conveyorLineStatus.Alarm && !STB && !ACK && conveyorLineInfoRead.TaskNo == 0)//åºåº else if (!conveyorLineSignalRead.STB && !conveyorLineSignalRead.ACK && conveyorLineStatus.Online && conveyorLineStatus.Goods && !conveyorLineStatus.Alarm && !STB && !ACK)//åºåº { Dt_Task task = _taskRepository.QueryFirst(x => x.CurrentAddress == item.StationCode && _taskService.TaskOutboundTypes.Contains(x.TaskType) && x.DeviceCode == item.StationDeviceCode && x.TaskState == TaskStatusEnum.Line_Execute.ObjToInt()); if (task != null) Dt_Task dt_Ta = _taskService.GetOutTaskInfo(item.StationCode); if (dt_Ta != null) { Dt_Router dt_Router = _routerRepository.QueryFirst(x => x.StartPosi == dt_Ta.TargetAddress); //å åæºä»»å¡å®æä¸ä¸å°åæ¹æè¾é线ä¸ä¸å°åï¼è®¾å¤ç¼å·æ¹æè¾é线 _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing); device.SetValue(W_ConveyorLineDB.TaskNo, task.TaskNum, item.StationCode); device.SetValue(W_ConveyorLineDB.EndPos, task.NextAddress, item.StationCode); _taskService.UpdateTaskStatusToNext(dt_Ta.TaskNum); device.SetValue(W_ConveyorLineDB.TaskNo, dt_Ta.TaskNum, item.StationCode); device.SetValue(W_ConveyorLineDB.EndPos, dt_Router.NextPosi, item.StationCode); device.SetValue(W_ConveyorLineDB.STB, true, item.StationCode); //å é¤ä»»å¡ _taskRepository.DeleteData(dt_Ta); } } @@ -177,10 +180,12 @@ Dt_Task dt_Ta = _taskService.GetTaskIninfo(conveyorLineInfoRead.Barcode); if(dt_Ta != null) { device.SetValue(W_ConveyorLineDB.ACK, true, item.StationCode); device.SetValue(W_ConveyorLineDB.EndPos, dt_Ta.SourceAddress, item.StationCode); device.SetValue(W_ConveyorLineDB.TaskNo, dt_Ta.TaskNum, item.StationCode); device.SetValue(W_ConveyorLineDB.ACK, true, item.StationCode); } } ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -60,6 +60,7 @@ { try { SpeStackerCrane speStackerCrane = (SpeStackerCrane)context.JobDetail.JobDataMap.Get("JobParams"); if (speStackerCrane != null) { @@ -89,7 +90,7 @@ speStackerCrane.LastTaskType = task.TaskType; task.Dispatchertime = DateTime.Now; task.ExceptionMessage = ""; _taskService.UpdateTask(task, TaskStatusEnum.SC_Executing); WebResponseContent webResponseContent = _taskService.UpdateTaskStatusToNext(task.TaskNum); //å»¶æ¶1s Thread.Sleep(1000); } @@ -123,7 +124,7 @@ } } } /// <summary> /// è·åä»»å¡ /// </summary> @@ -140,7 +141,7 @@ } task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); //è·åå ¥åºä»»å¡ if(task != null) if (task != null) { return task; //妿æä»»å¡åç´æ¥ä¸åç»å åæº } @@ -152,11 +153,11 @@ { if (OutTaskStationIsOccupied(item) != null) { if(item.Roadway== "SC01") if (item.Roadway == "SC01") { if (item.Depth == 1) return item; //è°åWMSæ¥å£è¿è¡å¤ææ¯å¦éè¦è¿è¡ç§»åº Dt_Task dt_Task= OutTaskMovelibrary(item); Dt_Task dt_Task = OutTaskMovelibrary(item); if (dt_Task != null) return dt_Task; } @@ -187,7 +188,7 @@ string SourceAddress = string.Join("-", targetCodes); //ç»è£ æµ åºä½å°å Dt_Task? tasks = _taskService.QueryStationIsOccupiedOutTasks(task.Roadway, SourceAddress); //æ¾æµ åºä½æ¯å¦æä»»å¡ if (tasks != null) return tasks; //åwmsç³è¯·å¤ææµ åºä½æ¯å¦æè´§ï¼æ¯å¦éè¦è¿è¡ç§»åº //åwmsç³è¯·å¤ææµ åºä½æ¯å¦æè´§ï¼æ¯å¦éè¦è¿è¡ç§»åº Dt_Task? taskst = _taskService.RequestWMSTaskMovelibrary(task); if (taskst != null) return taskst; return null; @@ -203,26 +204,27 @@ /// <returns>妿æªè¢«å ç¨ï¼è¿åä¼ å ¥çä»»å¡ä¿¡æ¯ï¼å¦åï¼è¿ånull</returns> private Dt_Task? OutTaskStationIsOccupied([NotNull] Dt_Task task) { Dt_Router? router = _routerService.QueryNextRoutes(task.Roadway, task.NextAddress).FirstOrDefault(); if (router != null) try { IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == router.ChildPosiDeviceCode); IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "CL01"); if (device != null) { CommonConveyorLine conveyorLine = (CommonConveyorLine)device; if (conveyorLine.IsOccupied(router.ChildPosi))//åºåºç«å°æªè¢«å ç¨ OtherDevice conveyorLine = (OtherDevice)device; DeviceProDTO? deviceProDTO = conveyorLine.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == task.NextAddress && x.DeviceProParamName == "IsOccupied"); //æ ¹æ®å åæºå°åï¼å°ååç§°æ¾åè®® if (deviceProDTO != null) { return task; bool B_Event_Test = conveyorLine.Communicator.Read<bool>(deviceProDTO.DeviceProAddress); //夿è¾é线æ¯å¦å 许æ¾è´§ä¿¡å· if (!B_Event_Test) { return task; } } } else { _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"æªæ¾å°åºåºç«å°ã{router.ChildPosiDeviceCode}ã对åºçéè®¯å¯¹è±¡ï¼æ æ³å¤æåºåºç«å°æ¯å¦è¢«å ç¨"); } } else catch (Exception ex) { _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"æªæ¾å°ç«å°ã{task.NextAddress}ãä¿¡æ¯ï¼æ æ³æ ¡éªç«å°"); throw; } return null; } @@ -241,10 +243,10 @@ stackerCraneTaskCommand.TaskNum = task.TaskNum; stackerCraneTaskCommand.WorkType = 1; stackerCraneTaskCommand.TrayType = 1; if (task.TaskType==(int)TaskInboundTypeEnum.Inbound)//夿æ¯å¦æ¯å ¥åºä»»å¡ if (task.TaskType == (int)TaskInboundTypeEnum.Inbound)//夿æ¯å¦æ¯å ¥åºä»»å¡ { Dt_StationManger dt_StationManger=_stationMangerRepository.QueryFirst(x=>x.StationCode==task.SourceAddress); Dt_StationManger dt_StationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == task.SourceAddress); string[] startCodes = dt_StationManger.StackerCraneStationCode.Split("-"); ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs
@@ -96,9 +96,9 @@ _unitOfWorkManage.BeginTran(); _stockRepository.AddData(Adddtstockt); _locationInfoRepository.AddData(Addlocations); BaseDal.AddData(Addtaskdt); _stockRepository.DeleteData(Adddtstockt); _locationInfoRepository.UpdateData(Addlocations); BaseDal.DeleteData(Addtaskdt); var respon = PushTasksToWCS(Addtaskdt,""); if (respon.Status) ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -323,12 +323,13 @@ //å é¤ä»»å¡æ·»å åå² BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.äººå·¥å®æ : OperateTypeEnum.èªå¨å®æ); WebResponseContent content = TaskCompletionFeedback(task); /*WebResponseContent content = TaskCompletionFeedback(task); if (!content.Status) { _unitOfWorkManage.RollbackTran(); return content; } }*/ _unitOfWorkManage.CommitTran(); } @@ -359,20 +360,21 @@ stockInfo.StockStatus = StockStatusEmun.åºåºå®æ.ObjToInt(); int beforeStatus = locationInfo.LocationStatus; locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt(); locationInfo.LocationStatus =(int)LocationStatusEnum.Free; task.TaskStatus = TaskOutStatusEnum.OutFinish.ObjToInt(); _unitOfWorkManage.BeginTran(); _stockRepository.DeleteData(stockInfo); _locationInfoRepository.UpdateData(locationInfo); //ä¿®æ¹æç©ºè´§ä½ BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.èªå¨å®æ : OperateTypeEnum.äººå·¥å®æ); _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockStatusEmun.åºåºå®æ.ObjToInt(), stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", task.TaskNum); WebResponseContent content = TaskCompletionFeedback(task); /*WebResponseContent content = TaskCompletionFeedback(task); if (!content.Status) { _unitOfWorkManage.RollbackTran(); return content; } }*/ _unitOfWorkManage.CommitTran(); return webResponse.OK();