//using Newtonsoft.Json; //using System; //using System.Collections.Generic; //using System.Linq; //using System.Text; //using System.Threading.Tasks; //using WIDESEAWCS_Common.TaskEnum; //using WIDESEAWCS_Common; //using WIDESEAWCS_Core.Helper; //using WIDESEAWCS_Core; //using WIDESEAWCS_DTO.TaskInfo; //using WIDESEAWCS_DTO.WMS; //using WIDESEAWCS_Model.Models; //using WIDESEAWCS_QuartzJob; //using WIDESEAWCS_Tasks.ConveyorLineJob; //using WIDESEAWCS_QuartzJob.DeviceBase; //using WIDESEAWCS_QuartzJob.DTO; //using AutoMapper; //using WIDESEAWCS_IProcessRepository; //using WIDESEAWCS_ISystemServices; //using WIDESEAWCS_ITaskInfoRepository; //using WIDESEAWCS_ITaskInfoService; //using WIDESEAWCS_QuartzJob.Service; //using HslCommunication; //namespace WIDESEAWCS_Tasks.Public //{ // public class PublicCommonTask // { // public readonly ITaskService _taskService; // private readonly ITaskRepository _taskRepository; // private readonly ITaskExecuteDetailService _taskExecuteDetailService; // private readonly IRouterService _routerService; // private readonly IPlatFormRepository _platFormRepository; // private readonly ISys_ConfigService _sys_ConfigService; // private readonly IMapper _mapper; // public PublicCommonTask(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository, IPlatFormRepository platFormRepository, ISys_ConfigService sys_ConfigService) // { // _taskService = taskService; // _taskExecuteDetailService = taskExecuteDetailService; // _routerService = routerService; // _mapper = mapper; // _taskRepository = taskRepository; // _platFormRepository = platFormRepository; // _sys_ConfigService = sys_ConfigService; // } // /// // /// 处理出库任务 // /// // public static void HandleTaskOut(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue, Dt_Task taskOut) // { // if (taskOut == null) return; // //var taskCommand = MapTaskCommand(taskOut, command); // bool isOutTray = taskOut.TaskType == (int)TaskOutboundTypeEnum.OutTray; // bool isOutboundAndOutFinish = taskOut.TaskType == (int)TaskOutboundTypeEnum.Outbound && taskOut.TaskState == (int)TaskOutStatusEnum.SC_OutFinish; // bool isOutboundAndLineOutExecuting = taskOut.TaskType == (int)TaskOutboundTypeEnum.Outbound && taskOut.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting; // if (isOutTray || isOutboundAndOutFinish || !isOutboundAndLineOutExecuting) // { // conveyorLine.SendCommand(taskCommand, childDeviceCode); // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); // _taskService.UpdateTaskStatusToNext(taskOut); // } // else if (taskOut.TaskType == (int)TaskOutboundTypeEnum.OutTray && taskOut.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) // { // CompleteWmsTask(taskOut, command, conveyorLine, childDeviceCode, ProtocalDetailValue); // } // } // /// // /// 处理新任务 // /// // private void HandleNewTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) // { // if ((conveyorLine.DeviceCode == "1003" && childDeviceCode == "1016") || (conveyorLine.DeviceCode == "1005" && childDeviceCode == "1048")) // { // CreateAndSendEmptyTrayTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue); // } // else if ((conveyorLine.DeviceCode == "1001" && childDeviceCode == "1088") || (conveyorLine.DeviceCode == "1004" && childDeviceCode == "1339")) // { // RequestWmsTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue); // } // //else if ((conveyorLine.DeviceCode == "1001" && childDeviceCode == "1068")) // //{ // // ConveyorLineOutFinish(conveyorLine, command, childDeviceCode, ProtocalDetailValue); // //} // } // /// // /// 完成WMS任务 // /// // private void CompleteWmsTask(Dt_Task taskOut, ConveyorLineTaskCommand command, CommonConveyorLine conveyorLine, string childDeviceCode, int ProtocalDetailValue) // { // if (command.Barcode == "NoRead") // { // var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == taskOut.TargetAddress).Capacity; // taskOut.TargetAddress = NGAddress.ToString(); // } // var keys = new Dictionary() // { // {"taskNum", taskOut.TaskNum} // }; // var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); // var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; // var completeTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue; // if (wmsBase == null || completeTask == null) // { // throw new InvalidOperationException("WMS IP 未配置"); // } // var wmsIpAddress = wmsBase + completeTask; // var result = HttpHelper.GetAsync(wmsIpAddress, keys).Result; // WebResponseContent content = JsonConvert.DeserializeObject(result); // if (content.Status) // { // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); // _taskService.UpdateTaskStatusToNext(taskOut); // } // } // /// // /// 创建并发送空托盘任务 // /// // public void CreateAndSendEmptyTrayTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) // { // if (command.Barcode != "NoRead") // { // var taskDTO = CreateEmptyTrayTaskDto(command.Barcode, childDeviceCode); // if (_taskRepository.QueryFirst(x => x.PalletCode == taskDTO.PalletCode) != null) // { // //WriteInfo(conveyorLine.DeviceName, "当前托盘存在任务"); // return; // } // var content = CreateAndSendTask(taskDTO); // if (content.Status) // { // var task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); // if (task != null) // { // var taskCommand = MapTaskCommand(task, command); // conveyorLine.SendCommand(taskCommand, childDeviceCode); // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); // _taskService.UpdateTaskStatusToNext(task); // } // } // } // } // /// // /// 创建空托盘任务DTO // /// // private WMSTaskDTO CreateEmptyTrayTaskDto(string barcode, string childDeviceCode) // { // var request = new RequestTaskDto() // { // Position = childDeviceCode, // PalletCode = barcode, // }; // var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); // var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; // var requestTrayInTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestTrayInTask)?.ConfigValue; // if (wmsBase == null || requestTrayInTask == null) // { // throw new InvalidOperationException("WMS IP 未配置"); // } // var wmsIpAddrss = wmsBase + requestTrayInTask; // var result = HttpHelper.PostAsync(wmsIpAddrss, request.ToJsonString()).Result; // if (result == null) // return new WMSTaskDTO(); // WebResponseContent content = JsonConvert.DeserializeObject(result); // if (!content.Status) // return new WMSTaskDTO(); // return JsonConvert.DeserializeObject(content.Data.ToString()); // } // /// // /// 请求WMS任务 // /// // private async void RequestWmsTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) // { // var content = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode); // if (content.Status) // { // var task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode); // if (task != null) // { // var taskCommand = MapTaskCommand(task, command); // conveyorLine.SendCommand(taskCommand, childDeviceCode); // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); // _taskService.UpdateTaskStatusToNext(task); // } // } // } // /// // /// 输送线交互完成 // /// // /// 输送线实例对象 // /// 子设备编号 // /// 线体当前bool读取偏移地址 // /// 值 // public void ConveyorLineSendFinish(CommonConveyorLine conveyorLine, string childDeviceCode, int ProtocalDetailValue, bool value) // { // DeviceProDTO? devicePro = conveyorLine.DeviceProDTOs.Where(x => x.DeviceProParamType == nameof(DeviceCommand) && x.DeviceChildCode == childDeviceCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); // string[] x = devicePro.DeviceProAddress.Split('.'); // x[x.Length - 1] = (ProtocalDetailValue + 1).ToString(); // string DeviceProAddress = string.Join(".", x); // conveyorLine.Communicator.Write(DeviceProAddress, value); // } // /// // /// 输送线入库完成 // /// // /// 输送线实例对象 // /// 读取的请求信息 // /// 子设备编号 // /// 线体当前bool读取偏移地址 // public void ConveyorLineInFinish(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) // { // var task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); // if (task != null && task.TaskState != (int)TaskInStatusEnum.Line_InFinish) // { // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); // WebResponseContent content = _taskService.UpdateTaskStatusToNext(task); // Console.Out.WriteLine(content.Serialize()); // } // } // /// // /// 创建任务 // /// // public WebResponseContent CreateAndSendTask(WMSTaskDTO taskDTO) // { // var content = _taskService.ReceiveWMSTask(new List { taskDTO }); // if (content.Status) // { // Console.WriteLine($"{taskDTO.TaskType}呼叫成功"); // } // return content; // } // } //}