//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;
|
// }
|
|
// /// <summary>
|
// /// 处理出库任务
|
// /// </summary>
|
// 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);
|
// }
|
// }
|
|
// /// <summary>
|
// /// 处理新任务
|
// /// </summary>
|
// 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);
|
// //}
|
// }
|
|
// /// <summary>
|
// /// 完成WMS任务
|
// /// </summary>
|
// 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<string, object>()
|
// {
|
// {"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<WebResponseContent>(result);
|
// if (content.Status)
|
// {
|
// ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
|
// _taskService.UpdateTaskStatusToNext(taskOut);
|
// }
|
// }
|
|
// /// <summary>
|
// /// 创建并发送空托盘任务
|
// /// </summary>
|
// 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);
|
// }
|
// }
|
// }
|
// }
|
|
// /// <summary>
|
// /// 创建空托盘任务DTO
|
// /// </summary>
|
// 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<WebResponseContent>(result);
|
// if (!content.Status)
|
// return new WMSTaskDTO();
|
|
// return JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
|
// }
|
|
// /// <summary>
|
// /// 请求WMS任务
|
// /// </summary>
|
// 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);
|
// }
|
// }
|
// }
|
|
|
// /// <summary>
|
// /// 输送线交互完成
|
// /// </summary>
|
// /// <param name="conveyorLine">输送线实例对象</param>
|
// /// <param name="childDeviceCode">子设备编号</param>
|
// /// <param name="ProtocalDetailValue">线体当前bool读取偏移地址</param>
|
// /// <param name="value">值</param>
|
// 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);
|
// }
|
|
|
// /// <summary>
|
// /// 输送线入库完成
|
// /// </summary>
|
// /// <param name="conveyorLine">输送线实例对象</param>
|
// /// <param name="command">读取的请求信息</param>
|
// /// <param name="childDeviceCode">子设备编号</param>
|
// /// <param name="ProtocalDetailValue">线体当前bool读取偏移地址</param>
|
// 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());
|
// }
|
// }
|
|
// /// <summary>
|
// /// 创建任务
|
// /// </summary>
|
// public WebResponseContent CreateAndSendTask(WMSTaskDTO taskDTO)
|
// {
|
// var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
|
// if (content.Status)
|
// {
|
// Console.WriteLine($"{taskDTO.TaskType}呼叫成功");
|
// }
|
// return content;
|
// }
|
// }
|
//}
|