From 7ca9651f81d7b84f054194d3d46fdbd1d9c8b922 Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期三, 09 七月 2025 22:55:27 +0800 Subject: [PATCH] 增加质检出入库逻辑 --- 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_AGV.cs | 79 +++++++++++++++++++++++++++++++++++++-- 1 files changed, 74 insertions(+), 5 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_AGV.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_AGV.cs" index 813408f..883ccd3 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_AGV.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/PartialTaskService_AGV.cs" @@ -1,13 +1,19 @@ 锘縰sing System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core; +using WIDESEAWCS_Core.Helper; using WIDESEAWCS_DTO.TaskInfo; +using WIDESEAWCS_DTO.WMSInfo; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; +using WIDESEAWCS_QuartzJob.Models; +using WIDESEAWCS_QuartzJob.StackerCrane.Enum; using WIDESEAWCS_TaskInfoService; namespace WIDESEAWCS_TaskInfoService @@ -27,12 +33,35 @@ if (saveModel == null) throw new Exception("鏇存柊浠诲姟淇℃伅涓虹┖"); Dt_Task dt_Task = GetTaskInfo(Convert.ToInt32(saveModel.outID)); if (dt_Task == null) throw new Exception($"鏈壘鍒颁换鍔″彿涓恒�恵saveModel.outID}銆戠殑浠诲姟"); - dt_Task.TaskState = saveModel.status switch + if (dt_Task.TaskState >= (int)TaskInStatusEnum.AGV_InFinish) { - "02" => (int)TaskInStatusEnum.AGV_InExecuting, - "08" => (int)TaskInStatusEnum.AGV_InFinish, - _ => throw new Exception($"鏈畾涔変换鍔$姸鎬併�恵saveModel.status}銆�"), - }; + return content = WebResponseContent.Instance.Error($"璇ヤ换鍔$姸鎬佷笉鍙烦杞埌涓嬩竴姝�,浠诲姟鍙�:銆恵dt_Task.TaskNum}銆�,浠诲姟鐘舵��:銆恵GetEnumDescription(Enum.Parse<TaskInStatusEnum>(Enum.GetName(typeof(TaskInStatusEnum), dt_Task.TaskState)))}銆�"); + } + switch (saveModel.status) + { + case "02": + dt_Task.TaskState = (int)TaskInStatusEnum.AGV_InExecuting; + break; + case "08": + { + dt_Task.TaskState = (int)TaskInStatusEnum.AGV_InFinish; + dt_Task.CurrentAddress = dt_Task.NextAddress; + List<Dt_Router> routers = _routerService.QueryNextRoutes(dt_Task.CurrentAddress, dt_Task.TargetAddress); + if (routers.Count > 0) + { + dt_Task.NextAddress = routers.FirstOrDefault().ChildPosi; + } + } + break; + default: + throw new Exception($"鏈畾涔変换鍔$姸鎬併�恵saveModel.status}銆�"); + } + //dt_Task.TaskState = saveModel.status switch + //{ + // "02" => (int)TaskInStatusEnum.AGV_InExecuting, + // "08" => (int)TaskInStatusEnum.AGV_InFinish, + // _ => throw new Exception($"鏈畾涔変换鍔$姸鎬併�恵saveModel.status}銆�"), + //}; content = UpdateData(dt_Task); } catch (Exception ex) @@ -46,5 +75,45 @@ // message = content.Message, //}; } + /// <summary> + /// 鍑哄簱浠诲姟瀹屾垚 + /// </summary> + /// <param name="Address"></param> + /// <returns></returns> + public WebResponseContent OutTaskFinish(string Address) + { + try + { + Dt_Task dt_Task = BaseDal.QueryFirst(x => x.TargetAddress == Address); + if (dt_Task != null && dt_Task.TaskState != TaskOutStatusEnum.AGV_OutFinish.ObjToInt()) + throw new Exception($"鍦板潃銆恵Address}銆戝瓨鍦ㄦ湭瀹屾垚AGV浠诲姟"); + Dt_Router _Router = _routerRepository.QueryFirst(x => x.NextPosi == Address); + if (_Router == null) throw new Exception($"鍦板潃銆恵Address}銆戞湭閰嶇疆璺敱"); + _Router.Remark = "鏈崰鐢�"; + Db.Ado.BeginTran(); + _routerRepository.UpdateData(_Router); + if (dt_Task != null) + { + dt_Task.TaskState = TaskOutStatusEnum.OutFinish.ObjToInt(); + WMSTaskDTO WMStask = _mapper.Map<WMSTaskDTO>(dt_Task); + AddTask_Hty(dt_Task, TaskOperateTypeEnum.AutoComplete); + HttpHelper.PostAsync(WMSInterfaceAddress.UpdateTaskStatus, WMStask.ToJson(), headers: new Dictionary<string, string>()); + } + Db.Ado.CommitTran(); + + return WebResponseContent.Instance.OK(); + } + catch (Exception ex) + { + Db.Ado.RollbackTran(); + return WebResponseContent.Instance.Error(ex.Message); + } + } + public static string GetEnumDescription<T>(T value) where T : Enum + { + FieldInfo fieldInfo = typeof(T).GetField(value.ToString()); + DescriptionAttribute attribute = (DescriptionAttribute)Attribute.GetCustomAttribute(fieldInfo, typeof(DescriptionAttribute)); + return attribute?.Description ?? value.ToString(); + } } } -- Gitblit v1.9.3