From c827fe7b0c5b3b444d76ba0d96a2649c764630dd Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期四, 14 十一月 2024 16:36:08 +0800 Subject: [PATCH] 修改WCS、WMS出入库逻辑 --- 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs | 124 +++++++--------------------------------- 1 files changed, 23 insertions(+), 101 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs" index d4935de..3033440 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs" @@ -1,4 +1,5 @@ 锘縰sing AutoMapper; +using HslCommunication; using Newtonsoft.Json; using OfficeOpenXml.Drawing.Chart; using Quartz; @@ -16,6 +17,7 @@ using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob; +using WIDESEAWCS_QuartzJob.DTO; using WIDESEAWCS_QuartzJob.Service; using WIDESEAWCS_QuartzJob.StackerCrane.Enum; using WIDESEAWCS_TaskInfoService; @@ -26,17 +28,19 @@ namespace WIDESEAWCS_Tasks { [DisallowConcurrentExecution] - public class CommonShuttleCarJob : JobBase, IJob + partial class CommonShuttleCarJob : JobBase, IJob { private readonly ITaskService _taskService; + private readonly ITaskHtyService _taskHtyService; private readonly IShuttleCarService _shuttleCarService; private readonly ITaskExecuteDetailService _taskExecuteDetailService; private readonly IRouterService _routerService; private readonly IMapper _mapper; - public CommonShuttleCarJob(ITaskService taskService, IShuttleCarService shuttleCarService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper) + public CommonShuttleCarJob(ITaskService taskService, ITaskHtyService taskHtyService, IShuttleCarService shuttleCarService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper) { _taskService = taskService; + _taskHtyService = taskHtyService; _shuttleCarService = shuttleCarService; _taskExecuteDetailService = taskExecuteDetailService; _routerService = routerService; @@ -50,28 +54,25 @@ ShuttleCar shuttleCar = (ShuttleCar)context.JobDetail.JobDataMap.Get("JobParams"); if (shuttleCar != null) { - ShuttleCarTaskCommandR command = shuttleCar.Communicator.ReadCustomer<ShuttleCarTaskCommandR>(shuttleCar.DeviceCode);//璇诲彇绌挎杞︿俊鎭� + ShuttleCarTaskCommandR command = ReadCustomer<ShuttleCarTaskCommandR>(shuttleCar, shuttleCar.DeviceCode);//璇诲彇绌挎杞︿俊鎭� if (command != null && command.JoinStatus == 1) { #region 绌挎杞︿换鍔″畬鎴� if (command.TaskTypeComplete > (short)ShuttleCarTaskComplete.Standby) { - //鏌ユ壘浠诲姟锛屽垽鏂换鍔$姸鎬佸仛瀵瑰簲澶勭悊锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛� - var Status = _taskService.StackCraneTaskCompleted(command.number).Status;//闇�浼樺寲!!! + var Status = _taskService.ShuttleCarTaskCompleted(command.number, command.TaskTypeComplete).Status; shuttleCar.SetValue(ShuttleCarDBName.ConfirmComplete, Status, shuttleCar.DeviceCode); } #endregion - #region 绉诲簱鍏呯數浠诲姟 + #region 鍒涘缓绉昏溅鍏呯數浠诲姟 if (command.Err_Status == (short)ShuttleCarErr.LowBattery || command.ElectricQuantity == (short)ShuttleCarErr.LowBattery) { //鐢熸垚鍫嗗灈鏈虹Щ杞︿换鍔�&绌挎杞﹀厖鐢典换鍔� - var ShuttleCar = QueryCode(shuttleCar.DeviceCode); + var ShuttleCar = QueryCode(shuttleCar.DeviceCode);//鍏呯數缁堢偣寰呯‘璁わ紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒 _taskService.AddRelocationCarTask(ShuttleCar.ShuttleCarPosition, "", ShuttleCar.ShuttleCarCode, ShuttleCarTaskType.Charging.ToString()); } #endregion - - #region 绌挎杞︾Щ搴撲换鍔� #region 鑾峰彇鍫嗗灈鏈虹Щ杞﹀畬鎴愪换鍔� Dt_Task dt_Task = GetTask((int)TaskCarStatusEnum.SC_CarFinish, (int)TaskOtherTypeEnum.RelocationCar); @@ -81,20 +82,20 @@ ShuttleCar.ShuttleCarPosition = dt_Task.TargetAddress; _shuttleCarService.UpdateData(ShuttleCar); if (string.IsNullOrEmpty(dt_Task.Remark))//瀹屾垚绉诲簱浠诲姟 - { - //绉诲叆鍘嗗彶浠诲姟锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛� - //鍒犻櫎褰撳墠浠诲姟 - } + _taskService.AddTask_Hty(dt_Task, TaskOperateTypeEnum.AutoComplete.ToJson()); else//涓嬪彂鍏呯數浠诲姟 - { SendTask(dt_Task); - } } #endregion + #region 鑾峰彇绉昏溅浠诲姟 dt_Task = GetTask((int)TaskCarStatusEnum.CarNew, (int)TaskOtherTypeEnum.RelocationCar);//鑾峰彇鏂板缓绉昏溅浠诲姟 if (dt_Task != null) { + #region 鍒ゆ柇鏄惁瀛樺湪绌洪棽绌挎杞�,濡傞兘鍦ㄥ厖鐢�(閫夋嫨鐢甸噺楂樼殑骞惰秴杩�50%鐢甸噺鐨勭┛姊溅閫�鍑哄厖鐢�) + + #endregion + if (string.IsNullOrEmpty(dt_Task.SourceAddress)) { if (command.Status == (short)ShuttleCarStatus.Standby && command.TaskTypeComplete == (short)ShuttleCarTaskComplete.Standby && command.Err_Status == (short)ShuttleCarErr.Normal) @@ -139,32 +140,8 @@ if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound && !task.IsPickPlace) { var ShuttleCar = _shuttleCarService.QueryShuttleCar(task.SourceAddress);//鍑哄簱浠诲姟鍒ゆ柇鏄惁瀛樺湪绌挎杞� - if (ShuttleCar != null) - { - SendTask(task); - } - else - { - _taskService.AddRelocationCarTask("", task.SourceAddress); - } - #region 鍒涘缓鍫嗗灈鏈虹Щ杞︿换鍔� - //dt_Task = new Dt_Task() - //{ - // TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), - // Grade = 2, - // Roadway = "SC01", - // TaskType = (int)TaskOtherTypeEnum.RelocationCar, - // SourceAddress = "", - // TargetAddress = task.SourceAddress, - // CurrentAddress = "", - // NextAddress = task.SourceAddress, - // CreateDate = DateTime.Now, - // Creater = "WCS", - // TaskState = (int)TaskCarStatusEnum.CarNew, - // WMSId = 0, - //}; - //_taskService.AddData(dt_Task); - #endregion + if (ShuttleCar != null) SendTask(task); + else _taskService.AddRelocationCarTask("", task.SourceAddress); } } } @@ -187,7 +164,7 @@ ShuttleCar shuttleCar = Storage.Devices.FirstOrDefault(x => x.DeviceCode == task.ShuttleCarCode) as ShuttleCar; if (shuttleCar != null) { - ShuttleCarTaskCommandR command = shuttleCar.Communicator.ReadCustomer<ShuttleCarTaskCommandR>(shuttleCar.DeviceCode);//璇诲彇绌挎杞︿俊鎭� + ShuttleCarTaskCommandR command = ReadCustomer<ShuttleCarTaskCommandR>(shuttleCar, shuttleCar.DeviceCode);//璇诲彇绌挎杞︿俊鎭� if (command != null && command.Status == (short)ShuttleCarStatus.Standby && command.TaskTypeComplete == (short)ShuttleCarTaskComplete.Standby && command.Err_Status == (short)ShuttleCarErr.Normal) { //浠诲姟杞崲 @@ -221,68 +198,13 @@ } } } - - ///涓嬪彂閫�鍑哄厖鐢典换鍔″苟鐢熸垚绉诲簱浠诲姟 - if (command.ElectricQuantity > 50) - { - - } } } - private Dt_Task GetTask(int TaskState, int TaskType) - { - return _taskService.GetTaskState(TaskState, TaskType); - } - public Dt_ShuttleCar QueryCode(string ShuttleCarCode) - { - return _shuttleCarService.QueryCode(ShuttleCarCode); - } + ///涓嬪彂閫�鍑哄厖鐢典换鍔″苟鐢熸垚绉诲簱浠诲姟 + //if (command.ElectricQuantity > 50) + //{ - ShuttleCarTaskType GetCarTaskType(string remark) => remark switch - { - "Charging" => ShuttleCarTaskType.Charging, - "ExitCharge" => ShuttleCarTaskType.ExitCharge, - }; - - ShuttleCarTaskType GetCarTaskType(int TaskType, short Direction) - { - ShuttleCarTaskType taskType = new ShuttleCarTaskType(); - switch (TaskType) - { - case (int)TaskInboundTypeEnum.Inbound: - taskType = ShuttleCarTaskType.In; - break; - case (int)TaskOutboundTypeEnum.Outbound: - taskType = ShuttleCarTaskType.Out; - break; - case (int)TaskOtherTypeEnum.RelocationCar: - taskType = Direction == 1 ? ShuttleCarTaskType.ZeroA : ShuttleCarTaskType.ZeroB; - break; - default: - break; - } - return taskType; - } - - int GetTaskState(int TaskType) - { - int state = 0; - switch (TaskType) - { - case (int)TaskInboundTypeEnum.Inbound: - state = (int)TaskInStatusEnum.Car_InExecuting; - break; - case (int)TaskOutboundTypeEnum.Outbound: - state = (int)TaskOutStatusEnum.Car_OutExecuting; - break; - case (int)TaskOtherTypeEnum.RelocationCar: - state = (int)TaskCarStatusEnum.ShuttleCar_Executing; - break; - default: - break; - } - return state; - } + //} } } -- Gitblit v1.9.3