From a23691d54a0142ba9a0668788d366638bd82349e Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期二, 26 八月 2025 08:25:41 +0800 Subject: [PATCH] 更新最新代码,码垛,伸缩货叉等 --- 项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs | 275 ++++++++++++++++++++++++++++++------------------------ 1 files changed, 154 insertions(+), 121 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" index c3c168d..8110c69 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" @@ -80,6 +80,8 @@ public List<int> TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList().Where(x => x >= 100 && x < 500).ToList(); + public List<int> TaskRelocationTypes => typeof(TaskTypeEnum).GetEnumIndexList().Where(x => x >= 900 && x < 1000).ToList(); + public TaskService(ITaskRepository BaseDal, IMapper mapper, ICacheService cacheService, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IApiInfoRepository apiInfoRepository) : base(BaseDal) { _mapper = mapper; @@ -139,53 +141,6 @@ return WebResponseContent.Instance.Error(ex.Message); } } - public WebResponseContent AgvCarrying(int row,int startColumn, int endColumn, int startlayer,int targetLayer) - { - try - { - List<Dt_Task> tasks = new List<Dt_Task>(); - for (int i = startColumn; i <= endColumn; i++) - { - string column = i.ToString(); - if (i<10) - { - column = "0" + i.ToString(); - } - string layer = targetLayer.ToString(); - if (targetLayer<10) - { - layer = "0"+targetLayer.ToString(); - } - Dt_Task task = new Dt_Task() - { - WarehouseId = 7, - TaskNum = DateTime.Now.ToString("yyMMddHHmm").ObjToInt() + i, - PalletCode= DateTime.Now.ToString("yyMMddHHmm") +i, - PalletType=0, - DeviceCode="AGV_CP", - Roadway= "AGV_CP", - TaskType =999, - SourceAddress=string.Format($"AGV_CP-00{row}-0{column}-00{startlayer}-01"), - CurrentAddress=string.Format($"AGV_CP-00{row}-0{column}-00{startlayer}-01"), - TargetAddress= string.Format($"AGV_CP-00{row}-0{column}-00{layer}-01"), - NextAddress= string.Format($"AGV_CP-00{row}-0{column}-00{layer}-01"), - Grade=0, - WMSId=0, - AgvTaskNum = "CP" + DateTime.Now.ToString("yyMMddHHmm").ObjToInt() + i, - TaskState = TaskStatusEnum.New.ObjToInt(), - Remark= "娴嬭瘯绌烘" - }; - tasks.Add(task); - } - BaseDal.AddData(tasks); - return WebResponseContent.Instance.OK(""); - } - catch (Exception ex) - { - return WebResponseContent.Instance.Error(ex.Message); - } - - } /// <summary> /// 鎺ユ敹WMS浠诲姟淇℃伅 /// </summary> @@ -211,10 +166,18 @@ task.CurrentAddress = item.SourceAddress; Dt_Router? router; - + if (task.TaskType==TaskTypeEnum.Relocation.ObjToInt()) + { + task.DeviceCode = task.Roadway; + task.NextAddress = task.TargetAddress; + task.TaskState = TaskStatusEnum.SC_Execute.ObjToInt(); + tasks.Add(task); + break; + } TaskTypeGroup taskTypeGroup = item.TaskType.GetTaskTypeGroup(); if (string.IsNullOrEmpty(item.AGVArea)) { + Dt_StationManger stationManger; //鑾峰彇绔欏彴淇℃伅 if (taskTypeGroup == TaskTypeGroup.InboundGroup) @@ -239,17 +202,51 @@ if (routers.Count == 1) { + //鍏ュ簱 if (taskTypeGroup == TaskTypeGroup.InboundGroup) { task.CurrentAddress = router.StartPosi; task.NextAddress = router.NextPosi; task.DeviceCode = router.ChildPosiDeviceCode; + if (task.TaskType == TaskTypeEnum.ProductMD.ObjToInt()) + { + task.TaskState = TaskStatusEnum.Line_Executing.ObjToInt(); + } } - else + else //鍑哄簱 { task.DeviceCode = stationManger.StackerCraneCode; task.NextAddress = router.NextPosi; + task.TaskState = (int)TaskStatusEnum.SC_Execute; } + } + else + { + //鎴愬搧鐮佸灈浠诲姟鐢熸垚 + if (taskTypeGroup == TaskTypeGroup.InboundGroup && !task.Roadway.Contains("YL")) + { + task.CurrentAddress = router.StartPosi; + task.NextAddress = ""; + task.DeviceCode = router.ChildPosiDeviceCode; + } + else if(taskTypeGroup == TaskTypeGroup.InboundGroup && task.Roadway.Contains("YL")) //鍘熸枡鍏ュ簱 + { + router = routers.FirstOrDefault(x=>x.ChildPosiDeviceCode==task.Roadway); + task.CurrentAddress = router.StartPosi; + task.NextAddress = router.NextPosi; + task.DeviceCode = router.ChildPosi; + } + } + } + else + { + //鎴愬搧鍏ュ簱 + List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == item.TaskType && x.StartPosi=="AGV" && x.ChildPosiDeviceCode==item.RoadWay); + router = routers.FirstOrDefault(); + if (routers.Count == 1) + { + task.NextAddress = router.NextPosi; + task.DeviceCode = router.ChildPosi; } } tasks.Add(task); @@ -314,14 +311,107 @@ } return content; } - - /// <summary> - /// + // <summary> + /// 璇锋眰鍏ュ簱浠诲姟 /// </summary> - /// <param name="palletCode"></param> - /// <param name="sourceAddress"></param> + /// <param name="palletCode">鎵樼洏鍙�</param> + /// <param name="sourceAddress">璧峰鍦板潃</param> + /// /// <param name="roadWay">宸烽亾</param> /// <returns></returns> - public WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress, int taskType=630) + public WebResponseContent RequestYLWMSTaskSimple(string palletCode, string sourceAddress,int taskNum=0) + { + WebResponseContent content = new WebResponseContent(); + try + { + string address = AppSettings.Get("WMSApiAddress"); + if (string.IsNullOrEmpty(address)) + { + return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃"); + } + string responseStr = HttpHelper.Get($"{address}/api/Task/RequestYLWMSTaskSimple?stationCode={sourceAddress}&palletCode={palletCode}&taskNum{taskNum}"); + WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr); + if (responseContent != null && responseContent.Status && responseContent.Data != null) + { + WMSTaskDTO? taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(responseContent.Data.ToString()); + if (taskDTO != null) + { + content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); + } + } + + } + catch (Exception ex) + { + content = WebResponseContent.Instance.Error(ex.Message); + } + return content; + } + + // <summary> + /// 璇锋眰鎴愬搧鍏ュ簱宸烽亾 + /// </summary> + /// <returns></returns> + public WebResponseContent AssignCPRoadwayNo() + { + WebResponseContent content = new WebResponseContent(); + try + { + string address = AppSettings.Get("WMSApiAddress"); + if (string.IsNullOrEmpty(address)) + { + return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃"); + } + string responseStr = HttpHelper.Get($"{address}/api/Task/AssignCPRoadwayNo"); + + if (!responseStr.IsNullOrEmpty()) + { + content.OK("鎴愬姛", responseStr); + } + + } + catch (Exception ex) + { + content = WebResponseContent.Instance.Error(ex.Message); + } + return content; + } + + // <summary> + /// 璇锋眰鍘熸枡鍏ュ簱宸烽亾 + /// </summary> + /// <returns></returns> + public WebResponseContent AssignYLRoadwayNo(string palletCode) + { + WebResponseContent content = new WebResponseContent(); + try + { + string address = AppSettings.Get("WMSApiAddress"); + if (string.IsNullOrEmpty(address)) + { + return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃"); + } + string responseStr = HttpHelper.Get($"{address}/api/Task/AssignYLRoadwayNo?palletCode={palletCode}"); + WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr); + if (responseContent != null && responseContent.Status && responseContent.Data != null) + { + content = responseContent; + } + + } + catch (Exception ex) + { + content = WebResponseContent.Instance.Error(ex.Message); + } + return content; + } + // <summary> + /// 璇锋眰鍏ュ簱浠诲姟 + /// </summary> + /// <param name="palletCode">鎵樼洏鍙�</param> + /// <param name="sourceAddress">璧峰鍦板潃</param> + /// /// <param name="roadWay">宸烽亾</param> + /// <returns></returns> + public WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress,string roadWay="", int taskType=630, int taskNum = 0, string targetAddress = "") { WebResponseContent content = new WebResponseContent(); try @@ -340,16 +430,15 @@ // { WMSTaskDTO? taskDTO = new WMSTaskDTO() { - Id = 1, - TaskNum = DateTime.Now.ToString("mmss").ObjToInt(), - PalletCode="", - RoadWay="", + TaskNum = taskNum ==0 ? DateTime.Now.ToString("mmss").ObjToInt(): taskNum, + PalletCode= palletCode, + RoadWay= roadWay, TaskType= taskType, PalletType=1, - TaskStatus=TaskStatusEnum.New.ObjToInt(), + TaskStatus= TaskStatusEnum.New.ObjToInt(), SourceAddress= sourceAddress, - TargetAddress="", - WarehouseId=1, + TargetAddress= targetAddress, + WarehouseId=2, Grade=0, }; content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); @@ -400,42 +489,6 @@ // return content; //} - /// <summary> - /// - /// </summary> - /// <param name="sourceAddress"></param> - /// <param name="palletCode"></param> - /// <param name="heightType"></param> - /// <param name="roadways"></param> - /// <returns></returns> - public WebResponseContent RequestWMSTask(string palletCode, string sourceAddress, int heightType, List<string> roadways) - { - WebResponseContent content = new WebResponseContent(); - try - { - string address = AppSettings.Get("WMSApiAddress"); - if (string.IsNullOrEmpty(address)) - { - return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃"); - } - string responseStr = HttpHelper.Post($"{address}/api/Task/DeviceRequestInboundTaskByRoadways?stationCode={sourceAddress}&palletCode={palletCode}&heightType={heightType}", roadways.Serialize()); - WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr); - if (responseContent != null && responseContent.Status && responseContent.Data != null) - { - WMSTaskDTO? taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(responseContent.Data.ToString()); - if (taskDTO != null) - { - content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); - } - } - - } - catch (Exception ex) - { - content = WebResponseContent.Instance.Error(ex.Message); - } - return content; - } /// <summary> /// 鍒嗛厤宸烽亾 @@ -584,29 +637,6 @@ } /// <summary> - /// 鍚慦MS鐢宠鍒嗛厤璐т綅 - /// </summary> - /// <param name="taskNum"></param> - /// <param name="roadwayNo"></param> - /// <param name="heightType"></param> - /// <returns></returns> - /// <exception cref="Exception"></exception> - public string? RequestAssignLocationByHeight(int taskNum, string roadwayNo, int heightType) - { - string address = AppSettings.Get("WMSApiAddress"); - if (string.IsNullOrEmpty(address)) throw new Exception("鏈壘鍒癢MSApi鍦板潃"); - string responseStr = HttpHelper.Get($"{address}/api/Task/AssignInboundTaskLocationByHeight?taskNum={taskNum}&roadwayNo={roadwayNo}&heightType={heightType}"); - - WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr); - if (responseContent != null && responseContent.Status && responseContent.Data != null) - { - return responseContent.Data.ToString(); - } - - return ""; - } - - /// <summary> /// 鏍规嵁璁惧缂栧彿銆佷换鍔$被鍨嬪垎缁�(鍙��)鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鏂板鐨勪换鍔� /// </summary> /// <param name="deviceNo">璁惧缂栧彿</param> @@ -620,6 +650,8 @@ return BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskStatusEnum.SC_Execute, TaskOrderBy); if (taskTypeGroup.Value == TaskTypeGroup.OutbondGroup) return BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskStatusEnum.SC_Execute, TaskOrderBy); + if (taskTypeGroup.Value == TaskTypeGroup.RelocationGroup) + return BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && TaskRelocationTypes.Contains(x.TaskType) && x.TaskState == (int)TaskStatusEnum.SC_Execute, TaskOrderBy); return null; } @@ -631,6 +663,7 @@ /// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄锛屽彲鑳戒负null</returns> public Dt_Task QueryStackerCraneTask(string deviceNo, string currentAddress = "") { + //鍒ゆ柇鏄惁涓虹┖ if (string.IsNullOrEmpty(currentAddress)) return BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && x.TaskState == (int)TaskStatusEnum.SC_Execute, TaskOrderBy); else -- Gitblit v1.9.3