| | |
| | | using Newtonsoft.Json; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using Masuit.Tools; |
| | | using Newtonsoft.Json; |
| | | using WIDESEAWCS_Common; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_DTO.TaskInfo; |
| | | using WIDESEAWCS_DTO.WMS; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_Tasks.ConveyorLineJob; |
| | | using HslCommunication; |
| | | using WIDESEAWCS_DTO.WMS; |
| | | using WIDESEAWCS_Common; |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | | { |
| | |
| | | } |
| | | break; |
| | | case 1: |
| | | case 6: |
| | | case 10: |
| | | ExecuteStationAction(stationManager, conveyorLine, command, childDeviceCode); |
| | | break; |
| | | //case 16: |
| | | // ExecuteStationAction(stationManager, conveyorLine, command, childDeviceCode); |
| | | // break; |
| | | } |
| | | |
| | | #region |
| | |
| | | // } |
| | | //} |
| | | #endregion |
| | | |
| | | } |
| | | |
| | | private void ExecuteStationAction(Dt_StationManager stationManager, CommonConveyorLine_GW conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) |
| | |
| | | case 8: |
| | | RequestInNextAddress(conveyorLine, command, childDeviceCode); |
| | | break; |
| | | |
| | | case 9: |
| | | ConveyorLineInFinish(conveyorLine, command, childDeviceCode); |
| | | break; |
| | | |
| | | case 10: |
| | | RequestOutbound(conveyorLine, command, childDeviceCode); |
| | | break; |
| | | |
| | | case 11: |
| | | RequestOutNextAddress(conveyorLine, command, childDeviceCode); |
| | | break; |
| | | |
| | | case 12: |
| | | ConveyorLineOutFinish(conveyorLine, command, childDeviceCode); |
| | | break; |
| | | |
| | | case 6: |
| | | CreateAndSendEmptyTrayTask(conveyorLine, command, childDeviceCode); |
| | | break; |
| | | |
| | | case 1: |
| | | if (stationManager.stationArea.Contains("GW")) |
| | | |
| | | //if (stationManager.stationArea.Contains("GW")) |
| | | //{ |
| | | //var taskGW = _taskRepository.QueryFirst(x => x.TargetAddress == childDeviceCode && (x.TaskState == (int)TaskOutStatusEnum.OutFinish || x.TaskState == (int)TaskOutStatusEnum.OutPending)); |
| | | //if (taskGW != null) |
| | | //{ |
| | | // command.ConveyorLineBarcode = taskGW.PalletCode; |
| | | //} |
| | | //} |
| | | //如高温出库后任务标记NG异常则将任务更新为异常排出任务 |
| | | Dt_Task NGtask = _taskRepository.QueryFirst(x => x.Remark == "NG" && x.Roadway == stationManager.Roadway && x.Roadway.Contains("GW")); |
| | | if (NGtask != null) |
| | | { |
| | | var taskGW = _taskRepository.QueryFirst(x => x.TargetAddress == childDeviceCode && x.TaskState == (int)TaskOutStatusEnum.OutFinish); |
| | | if (taskGW != null) |
| | | { |
| | | command.ConveyorLineBarcode = taskGW.PalletCode; |
| | | } |
| | | CreateAbNormalOutbound(conveyorLine, command, childDeviceCode, NGtask); |
| | | break; |
| | | } |
| | | |
| | | RequestWmsTask(conveyorLine, command, childDeviceCode); |
| | | break; |
| | | } |
| | |
| | | /// </summary> |
| | | private async void RequestWmsTask(CommonConveyorLine_GW conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) |
| | | { |
| | | var taskGW = _taskRepository.QueryFirst(x => x.TargetAddress == childDeviceCode && x.TaskState == (int)TaskOutStatusEnum.OutFinish); |
| | | if (taskGW != null) |
| | | _taskRepository.DeleteData(taskGW); |
| | | //var taskGW = _taskRepository.QueryFirst(x => x.TargetAddress == childDeviceCode && (x.TaskState == (int)TaskOutStatusEnum.OutFinish || x.TaskState == (int)TaskOutStatusEnum.OutPending)); |
| | | //if (taskGW != null) |
| | | // _taskRepository.DeleteData(taskGW); |
| | | if (command.ConveyorLineBarcode.IsNullOrEmpty()) return; |
| | | var content = await _taskService.RequestWMSTask(command.ConveyorLineBarcode, childDeviceCode); |
| | | if (content.Status) |
| | | { |
| | |
| | | else |
| | | { |
| | | WriteInfo(conveyorLine.DeviceName, content.Message); |
| | | _taskRepository.AddData(taskGW); |
| | | ConsoleHelper.WriteErrorLine($"【{conveyorLine.DeviceName}】托盘号:【{command.ConveyorLineBarcode}】请求点位:【{childDeviceCode}】异常信息【{content.Message}】"); |
| | | //_taskRepository.AddData(taskGW); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 高温出库后任务完成 如果任务标识NG则将任务改为异常排出任务 |
| | | /// </summary> |
| | | /// <param name="conveyorLine"></param> |
| | | /// <param name="command"></param> |
| | | /// <param name="childDeviceCode"></param> |
| | | /// <param name="task"></param> |
| | | /// <exception cref="Exception"></exception> |
| | | private void CreateAbNormalOutbound(CommonConveyorLine_GW conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode, Dt_Task task) |
| | | { |
| | | Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == childDeviceCode); |
| | | |
| | | if (stationManager == null || string.IsNullOrWhiteSpace(stationManager.stationNGChildCode) || string.IsNullOrWhiteSpace(stationManager.stationNGLocation)) |
| | | { |
| | | throw new Exception("未配置站台的对应NG口信息"); |
| | | } |
| | | |
| | | task.SourceAddress = task.TargetAddress; |
| | | task.TargetAddress = stationManager.stationNGLocation; |
| | | task.TaskState = (int)TaskOutStatusEnum.OutNew; |
| | | task.TaskType = (int)TaskOutboundTypeEnum.InToOut; |
| | | task.Grade = 10; //此处 出库至异常排出口的任务应除火警外最优先执行 |
| | | |
| | | _taskRepository.UpdateData(task); |
| | | //Dt_Task task= _taskRepository.QueryFirst(x=>) |
| | | //_taskRepository.QueryFirst() |
| | | } |
| | | } |
| | | } |
| | | } |