From 0dfb009511d5265194d9162008e0faf60961b666 Mon Sep 17 00:00:00 2001 From: 陈勇 <chenyong@hnkhzn.com> Date: 星期四, 14 十一月 2024 09:51:19 +0800 Subject: [PATCH] WCS合并 WMS分容接口 --- Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/RequsetCellInfo.cs | 24 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MCS/MCSController.cs | 39 + Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/NotifyFinishTest.cs | 32 + Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/WorkState.cs | 31 + Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/NotifyFinishTest.cs | 83 ++ Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/NotityInFinish.cs | 27 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ManageEnum.cs | 6 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/ConveyorLineTaskCommand_After.cs | 71 ++ Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/RequsetCellInfo.cs | 39 + Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/ConveyorLineDBName_After.cs | 79 ++ Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine_After.cs | 333 +++++++++++ Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs | 702 +++++++++++++++++++++++++ Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/ConfigConst.cs | 15 Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Filter/CustomProfile.cs | 1 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/MCS/IMCSService.cs | 20 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/MCSService.cs | 26 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/ModifyAccessStatus.cs | 58 ++ Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/RequestChangeLocation.cs | 38 + Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/RequestReMove.cs | 32 + 19 files changed, 1,656 insertions(+), 0 deletions(-) diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine_After.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine_After.cs new file mode 100644 index 0000000..6be648e --- /dev/null +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine_After.cs @@ -0,0 +1,333 @@ +锘�#region << 鐗� 鏈� 娉� 閲� >> + +/*---------------------------------------------------------------- + * 鍛藉悕绌洪棿锛歐IDESEAWCS_QuartzJob + * 鍒涘缓鑰咃細鑳$搴� + * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36 + * 鐗堟湰锛歏1.0.0 + * 鎻忚堪锛氫竴鑸緭閫佺嚎瀹炵幇绫� + * + * ---------------------------------------------------------------- + * 淇敼浜猴細 + * 淇敼鏃堕棿锛� + * 鐗堟湰锛歏1.0.1 + * 淇敼璇存槑锛� + * + *----------------------------------------------------------------*/ + +#endregion << 鐗� 鏈� 娉� 閲� >> + +using HslCommunication; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WIDESEAWCS_Communicator; +using WIDESEAWCS_QuartzJob.ConveyorLine.Enum; +using WIDESEAWCS_QuartzJob.DeviceBase; +using WIDESEAWCS_QuartzJob.DTO; +using WIDESEAWCS_QuartzJob.StackerCrane.Enum; + +namespace WIDESEAWCS_QuartzJob +{ + [Description("杈撻�佺嚎")] + public class CommonConveyorLine_After : IConveyorLine + { + #region Private Member + + /// <summary> + /// 鍫嗗灈鏈洪�氳瀵硅薄 + /// </summary> + private readonly BaseCommunicator _communicator; + + /// <summary> + /// 鍫嗗灈鏈哄崗璁俊鎭� + /// </summary> + private readonly List<DeviceProDTO> _deviceProDTOs; + + /// <summary> + /// 鍫嗗灈鏈哄崗璁槑缁嗕俊鎭� + /// </summary> + private readonly List<DeviceProtocolDetailDTO> _deviceProtocolDetailDTOs; + + /// <summary> + /// 璁惧缂栧彿 + /// </summary> + public readonly string _deviceCode; + + /// <summary> + /// 璁惧鍚嶇О + /// </summary> + public readonly string _deviceName; + + private bool _heartStatr = true; + + private bool _isConnected = true; + + #endregion + + #region Public Member + + /// <summary> + /// 杈撻�佺嚎閫氳瀵硅薄 + /// </summary> + public BaseCommunicator Communicator => _communicator; + + /// <summary> + /// 杈撻�佺嚎鍗忚淇℃伅 + /// </summary> + public List<DeviceProDTO> DeviceProDTOs => _deviceProDTOs; + + /// <summary> + /// 杈撻�佺嚎鍗忚鏄庣粏淇℃伅 + /// </summary> + public List<DeviceProtocolDetailDTO> DeviceProtocolDetailDTOs => _deviceProtocolDetailDTOs; + + /// <summary> + /// 璁惧缂栧彿 + /// </summary> + public string DeviceCode => _deviceCode; + + /// <summary> + /// 璁惧鍚嶇О + /// </summary> + public string DeviceName => _deviceName; + + /// <summary> + /// 鏄惁鏈夋晠闅� + /// </summary> + public bool IsFault => false; + + /// <summary> + /// 閫氳鏄惁宸茶繛鎺� + /// </summary> + public bool IsConnected => Communicator.IsConnected && _isConnected; + + /// <summary> + /// 璁惧鐘舵�� + /// </summary> + public DeviceStatus Status => DeviceStatus.Offline; + + #endregion + + #region Constructor Function + + /// <summary> + /// 鏋勯�犲嚱鏁� + /// </summary> + /// <param name="communicator">鍫嗗灈鏈洪�氳瀵硅薄</param> + /// <param name="deviceProDTOs">鍫嗗灈鏈哄崗璁俊鎭�</param> + /// <param name="deviceProtocolDetailDTOs">鍫嗗灈鏈哄崗璁槑缁嗕俊鎭�</param> + /// <param name="deviceCode">璁惧缂栧彿</param> + /// <param name="deviceName">璁惧鍚嶇О</param> + public CommonConveyorLine_After(BaseCommunicator communicator, List<DeviceProDTO> deviceProDTOs, List<DeviceProtocolDetailDTO> deviceProtocolDetailDTOs, string deviceCode, string deviceName) + { + _communicator = communicator; + _deviceProDTOs = deviceProDTOs; + _deviceProtocolDetailDTOs = deviceProtocolDetailDTOs; + _deviceCode = deviceCode; + _deviceName = deviceName; + CheckConnect(); + } + + #endregion + + #region Private Method + + private void CheckConnect() + { + Task.Run(() => + { + while (_heartStatr) + { + try + { + DeviceProDTO? devicePro = _deviceProDTOs.FirstOrDefault(); + if (devicePro == null) + _isConnected = false; + else + Communicator.ReadAsObj(devicePro.DeviceProAddress, devicePro.DeviceDataType); + _isConnected = true; + } + catch (Exception ex) + { + _isConnected = false; + } + Thread.Sleep(500); + } + }); + } + + #endregion + + #region Public Method + + /// <summary> + /// 璇诲彇PLC鍗忚鍦板潃鐨勬暟鎹� + /// </summary> + /// <typeparam name="TEnum">鍗忚淇℃伅鐨勬灇涓惧璞′俊鎭��</typeparam> + /// <typeparam name="TRsult">璇诲彇鏁版嵁鐨勭被鍨嬪璞′俊鎭��</typeparam> + /// <param name="value">鏋氫妇鍊�</param> + /// <param name="deviceChildCode">璁惧瀛愮紪鍙�</param> + /// <returns>璇诲彇鍒扮殑鏁版嵁</returns> + public TRsult GetValue<TEnum, TRsult>(TEnum value, string deviceChildCode) where TEnum : Enum + { + if (!IsConnected) throw new Exception($"閫氳杩炴帴閿欒锛岃妫�鏌ョ綉缁�"); + DeviceProDTO? devicePro = _deviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == value.ToString() && x.DeviceChildCode == deviceChildCode); + return devicePro == null ? throw new Exception() : (TRsult)Communicator.ReadAsObj(devicePro.DeviceProAddress, devicePro.DeviceDataType); + } + + /// <summary> + /// 涓庤澶囩殑蹇冭烦 + /// </summary> + public void Heartbeat() + { + throw new NotImplementedException(); + } + + /// <summary> + /// + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="command"></param> + /// <param name="deviceChildCode"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public bool SendCommand<T>(T command, string deviceChildCode) where T : IDataTransfer, new() + { + if (!IsConnected) throw new Exception($"閫氳杩炴帴閿欒锛岃妫�鏌ョ綉缁�"); + DeviceProDTO? devicePro = _deviceProDTOs.Where(x => x.DeviceProParamType == nameof(DeviceCommand) && x.DeviceChildCode == deviceChildCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); + if (devicePro == null) + { + return false; + } + if (Communicator.WriteCustomer(devicePro.DeviceProAddress, command)) + { + return true; + } + return false; + } + + /// <summary> + /// 璇诲彇PLC鏁版嵁锛岃繑鍥炶嚜瀹氫箟瀵硅薄 + /// </summary> + /// <typeparam name="T">娉涘瀷</typeparam> + /// <param name="deviceChildCode">瀛愯澶囩紪鍙�</param> + /// <returns>杩斿洖鑷畾涔夊璞℃垨鎶涘嚭寮傚父</returns> + /// <exception cref="Exception"></exception> + public T ReadCustomer<T>(string deviceChildCode) where T : IDataTransfer, new() + { + if (!IsConnected) throw new Exception($"閫氳杩炴帴閿欒锛岃妫�鏌ョ綉缁�"); + DeviceProDTO? devicePro = _deviceProDTOs.Where(x => x.DeviceProParamType == "ReadDeviceCommand" && x.DeviceChildCode == deviceChildCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); + + if (devicePro == null) + { + throw new Exception("鏈壘鍒板崗璁俊鎭�"); + } + else + { + return Communicator.ReadCustomer<T>(devicePro.DeviceProAddress); + } + } + + /// <summary> + /// 璇诲彇PLC鏁版嵁锛岃繑鍥炶嚜瀹氫箟瀵硅薄 + /// </summary> + /// <typeparam name="T">娉涘瀷</typeparam> + /// <param name="deviceChildCode">瀛愯澶囩紪鍙�</param> + /// <param name="deviceProParamType">鍙傛暟绫诲瀷</param> + /// <returns>杩斿洖鑷畾涔夊璞℃垨鎶涘嚭寮傚父</returns> + /// <exception cref="Exception"></exception> + public T ReadCustomer<T>(string deviceChildCode, string deviceProParamType) where T : IDataTransfer, new() + { + if (!IsConnected) throw new Exception($"閫氳杩炴帴閿欒锛岃妫�鏌ョ綉缁�"); + DeviceProDTO? devicePro = _deviceProDTOs.Where(x => x.DeviceProParamType == deviceProParamType && x.DeviceChildCode == deviceChildCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); + + if (devicePro == null) + { + throw new Exception("鏈壘鍒板崗璁俊鎭�"); + } + else + { + return Communicator.ReadCustomer<T>(devicePro.DeviceProAddress); + } + } + + /// <summary> + /// 鏍规嵁鍙傛暟鍚嶇О銆佽澶囧瓙缂栧彿鍐欏叆瀵瑰簲鐨勬暟鎹�� + /// </summary> + /// <typeparam name="TEnum">鍙傛暟鍚嶇О鏋氫妇绫诲瀷銆�</typeparam> + /// <typeparam name="TValue">瑕佸啓鍏ョ殑鏁版嵁绫诲瀷銆�</typeparam> + /// <param name="enum">鍙傛暟鍚嶇О銆�</param> + /// <param name="value">瑕佸啓鍏ョ殑鏁版嵁銆�</param> + /// <param name="deviceChildCode">璁惧瀛愮紪鍙峰啓</param> + /// <returns>杩斿洖鍐欏叆鎴愬姛鎴栧け璐�</returns> + public bool SetValue<TEnum, TValue>(TEnum @enum, TValue value, string deviceChildCode) + where TEnum : Enum + where TValue : notnull + { + if (!IsConnected) throw new Exception($"閫氳杩炴帴閿欒锛岃妫�鏌ョ綉缁�"); + DeviceProDTO? devicePro = _deviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == @enum.ToString() && x.DeviceChildCode == deviceChildCode); + return devicePro == null ? throw new Exception() : Communicator.WriteObj(devicePro.DeviceProAddress, devicePro.DeviceDataType, value); + } + + /// <summary> + /// 鏍规嵁鍙傛暟鍚嶇О銆佽澶囧瓙缂栧彿璇诲彇瀵瑰簲鐨勬暟鎹�� + /// </summary> + /// <typeparam name="TEnum">鍙傛暟鍚嶇О鏋氫妇绫诲瀷銆�</typeparam> + /// <param name="enum">鍙傛暟鍚嶇О銆�</param> + /// <param name="deviceChildCode">璁惧瀛愮紪鍙峰啓</param> + /// <returns>杩斿洖鍐欏叆鎴愬姛鎴栧け璐�</returns> + public object ReadValue<TEnum>(TEnum @enum, string deviceChildCode) + where TEnum : Enum + { + if (!IsConnected) throw new Exception($"閫氳杩炴帴閿欒锛岃妫�鏌ョ綉缁�"); + DeviceProDTO? devicePro = _deviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == @enum.ToString() && x.DeviceChildCode == deviceChildCode); + return devicePro == null ? throw new Exception() : Communicator.ReadAsObj(devicePro.DeviceProAddress, devicePro.DeviceDataType); + } + + /// <summary> + /// + /// </summary> + /// <param name="deviceChildCode"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public bool IsOccupied(string deviceChildCode) + { + if (Communicator.IsConnected) + { + List<DeviceProDTO> devicePros = _deviceProDTOs.Where(x => x.DeviceProParamType == ConveyorLineStatus.IsOccupied.ToString()).ToList(); + if (devicePros.Count == 0) + { + //todo 鍗忚淇℃伅鏈幏鍙栧埌鏃舵姏鍑哄紓甯� + throw new Exception(); + } + for (int i = 0; i < devicePros.Count; i++) + { + object readStatus = Communicator.ReadAsObj(devicePros[i].DeviceProAddress, devicePros[i].DeviceDataType); + //todo 鍗忚鏄庣粏淇℃伅鏈幏鍙栧埌鏃舵姏鍑哄紓甯� + DeviceProtocolDetailDTO? deviceProtocolDetail = _deviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == devicePros[i].DeviceProParamName) ?? throw new Exception(); + deviceProtocolDetail = _deviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == devicePros[i].DeviceProParamType && x.ProtocalDetailValue.Equals(readStatus.ToString())); + if (deviceProtocolDetail != null) + { + return true; + } + return false; + } + } + //todo 閫氳鏈繛鎺ユ椂鎶涘嚭寮傚父 + return false; + } + + public void Dispose() + { + _heartStatr = false; + _communicator.Dispose(); + GC.SuppressFinalize(this); + } + + #endregion + } +} \ No newline at end of file diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Filter/CustomProfile.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Filter/CustomProfile.cs index a76f5cd..194348a 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Filter/CustomProfile.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Filter/CustomProfile.cs @@ -22,6 +22,7 @@ CreateMap<Dt_DeviceInfo,DeviceInfoDTO>(); CreateMap<WMSTaskDTO, Dt_Task>().ForMember(a => a.WMSId, b => b.MapFrom(b => b.Id)); CreateMap<Dt_Task, ConveyorLineTaskCommand>().ForMember(a => a.TargetAddress, b => b.MapFrom(b => b.NextAddress)).ForMember(a => a.Barcode, b => b.MapFrom(b => b.PalletCode)).ForMember(a => a.TaskNum, b => b.MapFrom(b => b.TaskNum)); + CreateMap<Dt_Task,ConveyorLineTaskCommand_After>().ForMember(a => a.ConveyorLineTargetAddress, b => b.MapFrom(b => b.NextAddress)).ForMember(a => a.ConveyorLineBarcode, b => b.MapFrom(b => b.PalletCode)).ForMember(a => a.ConveyorLineTaskNum, b => b.MapFrom(b => b.TaskNum)); } } } diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs new file mode 100644 index 0000000..99de6e7 --- /dev/null +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs @@ -0,0 +1,702 @@ +锘�#region MyRegion +#region << 鐗� 鏈� 娉� 閲� >> + +/*---------------------------------------------------------------- + * 鍛藉悕绌洪棿锛歐IDESEAWCS_Tasks.ConveyorLineJob + * 鍒涘缓鑰咃細鑳$搴� + * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36 + * 鐗堟湰锛歏1.0.0 + * 鎻忚堪锛� + * + * ---------------------------------------------------------------- + * 淇敼浜猴細 + * 淇敼鏃堕棿锛� + * 鐗堟湰锛歏1.0.1 + * 淇敼璇存槑锛� + * + *----------------------------------------------------------------*/ + +#endregion << 鐗� 鏈� 娉� 閲� >> + +using AutoMapper; +using HslCommunication; +using Microsoft.AspNetCore.Server.HttpSys; +using Newtonsoft.Json; +using Quartz; +using SqlSugar; +using System.Diagnostics.CodeAnalysis; +using System.Reflection; +using System.Threading.Tasks; +using WIDESEAWCS_Common.TaskEnum; +using WIDESEAWCS_Core; +using WIDESEAWCS_Core.Helper; +using WIDESEAWCS_DTO.TaskInfo; +using WIDESEAWCS_ITaskInfoRepository; +using WIDESEAWCS_ITaskInfoService; +using WIDESEAWCS_Model.Models; +using WIDESEAWCS_QuartzJob; +using WIDESEAWCS_QuartzJob.DeviceBase; +using WIDESEAWCS_QuartzJob.DTO; +using WIDESEAWCS_QuartzJob.Service; +using WIDESEAWCS_Tasks.ConveyorLineJob; + +namespace WIDESEAWCS_Tasks +{ + [DisallowConcurrentExecution] + public class CommonConveyorLine_AfterJob : JobBase, IJob + { + private readonly ITaskService _taskService; + private readonly ITaskRepository _taskRepository; + private readonly ITaskExecuteDetailService _taskExecuteDetailService; + private readonly IRouterService _routerService; + private readonly IMapper _mapper; + + public CommonConveyorLine_AfterJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository) + { + _taskService = taskService; + _taskExecuteDetailService = taskExecuteDetailService; + _routerService = routerService; + _mapper = mapper; + _taskRepository = taskRepository; + } + + public Task Execute(IJobExecutionContext context) + { + try + { + CommonConveyorLine_After conveyorLine = (CommonConveyorLine_After)context.JobDetail.JobDataMap.Get("JobParams"); + if (conveyorLine != null) + { + List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode); + //List<Task> tasks = new List<Task>(); + foreach (string childDeviceCode in childDeviceCodes) + { + ConveyorLineTaskCommand_After command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand_After>(childDeviceCode); + + if (command.ConveyorLineBarcode.Trim().Contains("\0")) command.ConveyorLineBarcode = ""; + + DeviceProtocolDetailDTO? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand_After.InteractiveSignal) && x.ProtocalDetailValue == command.InteractiveSignal.ToString()); + if (deviceProtocolDetails != null) + { + MethodInfo? method = GetType().GetMethod(deviceProtocolDetails.ProtocolDetailType); + if (method != null) + { + method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode }); + } + } + } + //Task.WaitAll(tasks.ToArray()); + } + } + catch (Exception ex) + { + Console.Out.WriteLine(nameof(CommonConveyorLineJob) + ":" + ex.ToString()); + } + finally + { + //WriteDebug("CommonConveyorLineJob", "test"); + //Console.Out.WriteLine(DateTime.Now); + } + return Task.CompletedTask; + } + + /// <summary> + /// 杈撻�佺嚎璇锋眰鍏ュ簱 + /// </summary> + /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> + /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> + /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> + /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> + public void RequestInbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) + { + var taskNew = _taskService.QueryCraneConveyorLineTask(command.ConveyorLineTaskNum.ObjToInt(), childDeviceCode); + if (taskNew == null) + { + string barcode = command.ConveyorLineBarcode.TrimEnd(); + if (_taskService.RequestWMSTask(command.ConveyorLineBarcode, childDeviceCode).Status) + { + Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); + if (task != null) + { + ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); + //taskCommand.InteractiveSignal = command.InteractiveSignal; + taskCommand.ResponState = 1; + taskCommand.ConveyorLineTaskNum = task.TaskNum; + taskCommand.ConveyorLineTargetAddress = Convert.ToInt16(task.NextAddress); + conveyorLine.SendCommand(taskCommand, childDeviceCode); + + //ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); + + _taskService.UpdateTaskStatusToNext(task); + } + } + } + + var inTask = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum.ObjToInt(), childDeviceCode); + if (inTask != null) + { + ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(inTask); + //taskCommand.InteractiveSignal = command.InteractiveSignal; + taskCommand.ResponState = 1; + conveyorLine.SendCommand(taskCommand, childDeviceCode); + + _taskService.UpdateTaskStatusToNext(inTask); + } + + + } + + /// <summary> + /// 杈撻�佺嚎璇锋眰鍏ュ簱涓嬩竴鍦板潃 + /// </summary> + /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> + /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> + /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> + public void RequestInNextAddress(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) + { + //if(command) + Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode); + if (task != null) + { + Dt_Task? newTask = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress); + if (newTask != null) + { + ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(newTask); + //taskCommand.InteractiveSignal = command.InteractiveSignal; + conveyorLine.SendCommand(taskCommand, childDeviceCode); + } + } + } + + /// <summary> + /// 杈撻�佺嚎鍏ュ簱瀹屾垚 + /// </summary> + /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> + /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> + /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> + /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> + public void ConveyorLineInFinish(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) + { + Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode); + if (task != null && task.TaskState != (int)TaskInStatusEnum.Line_InFinish) + { + //ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); + + //conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode); + WebResponseContent content = _taskService.UpdateTaskStatusToNext(task); + Console.Out.WriteLine(content.Serialize()); + } + } + + /// <summary> + /// 杈撻�佺嚎璇锋眰鍑轰俊鎭� + /// </summary> + /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> + /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> + /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> + public void RequestOutbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) + { + Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); + if (task != null) + { + // ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); + //taskCommand.InteractiveSignal = command.InteractiveSignal; + // conveyorLine.SendCommand(taskCommand, childDeviceCode); + + _taskService.UpdateTaskStatusToNext(task); + } + } + + /// <summary> + /// 杈撻�佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃 + /// </summary> + /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> + /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> + /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> + public void RequestOutNextAddress(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) + { + Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode); + if (task != null) + { + Dt_Task? newTask = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress); + if (newTask != null) + { + ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(newTask); + //taskCommand.InteractiveSignal = command.InteractiveSignal; + conveyorLine.SendCommand(taskCommand, childDeviceCode); + } + } + } + + /// <summary> + /// 杈撻�佺嚎鍑哄簱瀹屾垚 + /// </summary> + /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> + /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> + /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> + public void ConveyorLineOutFinish(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) + { + Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode); + if (task != null) + { + conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode); + WebResponseContent content = _taskService.UpdateTaskStatusToNext(task); + Console.Out.WriteLine(content.Serialize()); + } + } + + /// <summary> + /// 杈撻�佺嚎浜や簰瀹屾垚 + /// </summary> + /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> + /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> + /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> + /// <param name="value">鍊�</param> + public void ConveyorLineSendFinish(CommonConveyorLine_After 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); + } + } +} +#endregion + + + +#region MyRegion +//using AutoMapper; +//using HslCommunication; +//using Newtonsoft.Json; +//using Quartz; +//using SqlSugar; +//using System.Reflection; +//using WIDESEAWCS_Common.TaskEnum; +//using WIDESEAWCS_Core; +//using WIDESEAWCS_Core.Helper; +//using WIDESEAWCS_DTO.TaskInfo; +//using WIDESEAWCS_ITaskInfoRepository; +//using WIDESEAWCS_ITaskInfoService; +//using WIDESEAWCS_Model.Models; +//using WIDESEAWCS_QuartzJob; +//using WIDESEAWCS_QuartzJob.DeviceBase; +//using WIDESEAWCS_QuartzJob.DTO; +//using WIDESEAWCS_QuartzJob.Service; +//using WIDESEAWCS_Tasks.ConveyorLineJob; + +//namespace WIDESEAWCS_Tasks +//{ +// [DisallowConcurrentExecution] +// public class CommonConveyorLine_AfterJob : JobBase, IJob +// { +// private readonly List<string> _deviceCodes1 = new List<string>() { "1063", "1061", "1060" }; +// private readonly List<string> _deviceCodes2 = new List<string>() { "1067", "1069", "1068" }; +// private readonly string[] HCTrayCode = { "1012", "1013" }; +// private readonly ITaskService _taskService; +// private readonly ITaskRepository _taskRepository; +// private readonly ITaskExecuteDetailService _taskExecuteDetailService; +// private readonly IRouterService _routerService; +// private readonly IMapper _mapper; + +// public CommonConveyorLine_AfterJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository) +// { +// _taskService = taskService; +// _taskExecuteDetailService = taskExecuteDetailService; +// _routerService = routerService; +// _mapper = mapper; +// _taskRepository = taskRepository; +// } + +// public Task Execute(IJobExecutionContext context) +// { +// try +// { +// CommonConveyorLine_After conveyorLine = (CommonConveyorLine_After)context.JobDetail.JobDataMap.Get("JobParams"); +// if (conveyorLine != null) +// { +// List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode); +// List<Task> tasks = new List<Task>(); +// foreach (string childDeviceCode in childDeviceCodes) +// { +// //Task task = Task.Run(() => +// //{ +// ConveyorLineTaskCommand_After command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand_After>(childDeviceCode); +// if (command != null) +// { +// var structs = BitConverter.GetBytes(command.InteractiveSignal).Reverse().ToArray().ToBoolArray(); + +// List<DeviceProtocolDetailDTO>? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.Where(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand_After.InteractiveSignal)).ToList(); + +// if (deviceProtocolDetails != null) +// { +// foreach (var item in deviceProtocolDetails) +// { +// var outDeviceCodes = _routerService.QueryOutDeviceCodes(conveyorLine.DeviceCode); +// if (structs[item.ProtocalDetailValue.ObjToInt()] == true) +// { +// MethodInfo? method = GetType().GetMethod(item.ProtocolDetailType); +// if (method != null) +// { +// method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, item.ProtocalDetailValue.ObjToInt() }); +// } +// } +// else +// { +// //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] = (item.ProtocalDetailValue.ObjToInt() + 1).ToString(); +// //string DeviceProAddress = string.Join(".", x); +// //var writeRead = conveyorLine.Communicator.Read<bool>(DeviceProAddress); +// //if (writeRead) +// //{ +// // ConveyorLineSendFinish(conveyorLine, childDeviceCode, item.ProtocalDetailValue.ObjToInt(), false); +// //} +// } +// } +// } +// } +// //}); +// //tasks.Add(task); +// } +// Task.WaitAll(tasks.ToArray()); +// } +// } +// catch (Exception ex) +// { +// Console.Out.WriteLine(nameof(CommonConveyorLineJob) + ":" + ex.ToString()); +// } +// finally +// { +// //WriteDebug("CommonConveyorLineJob", "test"); +// //Console.Out.WriteLine(DateTime.Now); +// } +// return Task.CompletedTask; +// } + +// /// <summary> +// /// 杈撻�佺嚎璇锋眰鍏ュ簱 +// /// </summary> +// /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> +// /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> +// /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> +// /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> +// public void RequestInbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode, int ProtocalDetailValue) +// { +// var taskNew = _taskService.QueryCraneConveyorLineTask(command.Barcode.ObjToInt(), childDeviceCode); +// var Taskout = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); +// if (Taskout != null) +// { +// // 绌烘墭鐩樹换鍔� +// if (Taskout.TaskType == (int)TaskOutboundTypeEnum.OutTray) +// { +// if (Taskout.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) +// { +// ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(Taskout); +// taskCommand.InteractiveSignal = command.InteractiveSignal; +// if (command.Barcode == "") +// { +// taskCommand.TargetAddress = 1092; +// } +// conveyorLine.SendCommand(taskCommand, childDeviceCode); + +// ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); + +// _taskService.UpdateTaskStatusToNext(Taskout); +// } +// else if (Taskout.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) +// { +// if (command.Barcode == "") +// { +// ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(Taskout); +// taskCommand.InteractiveSignal = command.InteractiveSignal; +// taskCommand.TargetAddress = 1092; +// conveyorLine.SendCommand(taskCommand, childDeviceCode); + +// ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); +// _taskService.UpdateTaskStatusToNext(Taskout); +// } +// } +// } +// else if (Taskout.TaskType == (int)TaskOutboundTypeEnum.Outbound) +// { +// if (Taskout.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting) +// { +// ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(Taskout); +// taskCommand.InteractiveSignal = command.InteractiveSignal; +// if (command.Barcode == "") +// { +// //todo 娌℃湁鏄庣‘寮傚父鍙o紝閫佸埌鐩爣宸烽亾鐨凬G鍙� +// //taskCommand.TargetAddress = 1092; +// } +// conveyorLine.SendCommand(taskCommand, childDeviceCode); + +// ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); + +// _taskService.UpdateTaskStatusToNext(Taskout); +// } +// else if (Taskout.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) +// { +// if (command.Barcode == "") +// { +// ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(Taskout); +// taskCommand.InteractiveSignal = command.InteractiveSignal; +// // todo 閫佸埌鐩爣宸烽亾鐨凬G鍙� +// taskCommand.TargetAddress = 1092; +// conveyorLine.SendCommand(taskCommand, childDeviceCode); + +// ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); +// _taskService.UpdateTaskStatusToNext(Taskout); +// } +// else +// { +// // todo 璋冪敤WMS浠诲姟瀹屾垚鎺ュ彛 +// var x = new { taskNum = Taskout.TaskNum }; +// var result = HttpHelper.GetAsync("http:127.0.0.1:8098/api/Task/CompleteTaskAsync", x.ToJsonString()).Result; +// WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result); +// if (content.Status) +// { +// ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); +// _taskService.UpdateTaskStatusToNext(Taskout); +// } +// } +// } +// } +// } +// if (taskNew == null) +// { +// if (_taskService.RequestWMSTask(command.Barcode, childDeviceCode).Status) +// { +// Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); +// if (task != null) +// { +// ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); +// taskCommand.InteractiveSignal = command.InteractiveSignal; +// conveyorLine.SendCommand(taskCommand, childDeviceCode); + +// ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); + +// _taskService.UpdateTaskStatusToNext(task); +// } +// } +// } +// } + +// // +// /// <summary> +// /// 绌烘墭鐩樺洖娴� +// /// </summary> +// /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> +// /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> +// /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> +// /// <param name="index">璇诲彇鐨勭涓�涓綅缃�</param> +// public void EmptyTrayReturn(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode, int index) +// { +// var tasks = _taskRepository.QueryData(x => (x.TaskState == (int)TaskOutStatusEnum.OutNew || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) && x.TaskType == (int)TaskOutboundTypeEnum.OutTray); +// if (tasks.Count <= index) +// { +// WMSTaskDTO taskDTO = new WMSTaskDTO() +// { +// TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), +// Grade = 1, +// PalletCode = DateTime.Now.ToString("yyyyMMddHHmmss"), +// RoadWay = "CHSC01", +// SourceAddress = "001-001-001", +// TargetAddress = childDeviceCode, +// TaskState = (int)TaskOutStatusEnum.OutNew, +// Id = 0, +// TaskType = (int)TaskOutboundTypeEnum.OutTray +// }; + +// #region 鐪熷疄鏁版嵁 + +// // TODO: 璋冪敤鎺ュ彛鑾峰彇涓嬩竴涓湴鍧� +// //RequestTaskDto request = new RequestTaskDto() +// //{ +// // Position = sourceAddress, +// // PalletCode = palletCode, +// //}; + +// //// 鍙戦�佽姹傚苟绛夊緟鍝嶅簲 +// //var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", request.ToJsonString()).Result; + +// //// 鍙嶅簭鍒楀寲鍝嶅簲鍐呭 +// //WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result); + +// //// 妫�鏌ョ姸鎬佸苟杩斿洖 +// ////if (!content.Status) +// //// return content; + +// //// 鍙嶅簭鍒楀寲浠诲姟鏁版嵁 +// //WMSTaskDTO task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); + +// #endregion + +// var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); +// if (content.Status) +// { +// Console.WriteLine("绌烘墭鐩樺懠鍙垚鍔�"); +// } +// } +// } + +// ///// <summary> +// ///// 闄堝寲鍑哄簱 +// ///// </summary> +// ///// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> +// ///// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> +// ///// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> +// ///// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> +// //public void ChuanhuaOutbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode, int index) +// //{ +// // var tasks = _taskRepository.QueryData(x => (x.TaskState == (int)TaskOutStatusEnum.OutNew || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) && x.TaskType == (int)TaskOutboundTypeEnum.Outbound); +// // if (tasks.Count <= index) +// // { +// // WMSTaskDTO taskDTO = new WMSTaskDTO() +// // { +// // TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), +// // Grade = 1, +// // PalletCode = DateTime.Now.ToString("MMddHHmmss"), +// // RoadWay = "CHSC01", +// // SourceAddress = "001-001-001", +// // TargetAddress = childDeviceCode, +// // TaskState = (int)TaskOutStatusEnum.OutNew, +// // Id = 0, +// // TaskType = (int)TaskOutboundTypeEnum.Outbound, +// // }; + +// // var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); +// // if (content.Status) +// // { +// // Console.WriteLine("鍑哄簱鍛煎彨鎴愬姛"); +// // } +// // } +// // else +// // { +// // Dt_Task task = tasks[index]; +// // if (task != null) +// // { +// // ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); +// // taskCommand.InteractiveSignal = command.InteractiveSignal; +// // conveyorLine.SendCommand(taskCommand, childDeviceCode); +// // } +// // } +// //} + +// /// <summary> +// /// 杈撻�佺嚎璇锋眰鍏ュ簱涓嬩竴鍦板潃 +// /// </summary> +// /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> +// /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> +// /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> +// public void RequestInNextAddress(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) +// { +// Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); +// if (task != null) +// { +// Dt_Task? newTask = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress); +// if (newTask != null) +// { +// ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(newTask); +// taskCommand.InteractiveSignal = command.InteractiveSignal; +// conveyorLine.SendCommand(taskCommand, childDeviceCode); +// } +// } +// } + +// /// <summary> +// /// 杈撻�佺嚎鍏ュ簱瀹屾垚 +// /// </summary> +// /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> +// /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> +// /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> +// /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> +// public void ConveyorLineInFinish(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode, int ProtocalDetailValue) +// { +// Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); +// if (task != null && task.TaskState != (int)TaskInStatusEnum.Line_InFinish) +// { +// ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); + +// //conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode); +// WebResponseContent content = _taskService.UpdateTaskStatusToNext(task); +// Console.Out.WriteLine(content.Serialize()); +// } +// } + +// /// <summary> +// /// 杈撻�佺嚎璇锋眰鍑轰俊鎭� +// /// </summary> +// /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> +// /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> +// /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> +// public void RequestOutbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) +// { +// Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); +// if (task != null) +// { +// ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); +// taskCommand.InteractiveSignal = command.InteractiveSignal; +// conveyorLine.SendCommand(taskCommand, childDeviceCode); + +// _taskService.UpdateTaskStatusToNext(task); +// } +// } + +// /// <summary> +// /// 杈撻�佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃 +// /// </summary> +// /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> +// /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> +// /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> +// public void RequestOutNextAddress(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) +// { +// Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); +// if (task != null) +// { +// Dt_Task? newTask = _taskService.UpdatePosition(task.TaskNum, task.CurrentAddress); +// if (newTask != null) +// { +// ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(newTask); +// taskCommand.InteractiveSignal = command.InteractiveSignal; +// conveyorLine.SendCommand(taskCommand, childDeviceCode); +// } +// } +// } + +// /// <summary> +// /// 杈撻�佺嚎鍑哄簱瀹屾垚 +// /// </summary> +// /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> +// /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> +// /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> +// public void ConveyorLineOutFinish(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) +// { +// Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); +// if (task != null) +// { +// conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode); +// WebResponseContent content = _taskService.UpdateTaskStatusToNext(task); +// Console.Out.WriteLine(content.Serialize()); +// } +// } + +// /// <summary> +// /// 杈撻�佺嚎浜や簰瀹屾垚 +// /// </summary> +// /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> +// /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> +// /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> +// /// <param name="value">鍊�</param> +// public void ConveyorLineSendFinish(CommonConveyorLine_After 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); +// } +// } +//} +#endregion \ No newline at end of file diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/ConveyorLineDBName_After.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/ConveyorLineDBName_After.cs new file mode 100644 index 0000000..88dbe2c --- /dev/null +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/ConveyorLineDBName_After.cs @@ -0,0 +1,79 @@ +锘�#region << 鐗� 鏈� 娉� 閲� >> + +/*---------------------------------------------------------------- + * 鍛藉悕绌洪棿锛歐IDESEAWCS_Tasks.ConveyorLineJob + * 鍒涘缓鑰咃細鑳$搴� + * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36 + * 鐗堟湰锛歏1.0.0 + * 鎻忚堪锛� + * + * ---------------------------------------------------------------- + * 淇敼浜猴細 + * 淇敼鏃堕棿锛� + * 鐗堟湰锛歏1.0.1 + * 淇敼璇存槑锛� + * + *----------------------------------------------------------------*/ + +#endregion << 鐗� 鏈� 娉� 閲� >> + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEAWCS_Tasks.ConveyorLineJob +{ + public enum ConveyorLineDBName_After + { + #region ReadDevice + + /// <summary> + /// 鐩殑鍦板潃 + /// </summary> + ConveyorLineTargetAddress, + + /// <summary> + /// 浠诲姟鍙� + /// </summary> + ConveyorLineTaskNum, + + /// <summary> + /// 鎵樼洏鍙� + /// </summary> + ConveyorLineBarcode, + + /// <summary> + /// 璇锋眰鍙嶉 + /// </summary> + ResponState, + + Reserve2, + Reserve3, + + /// <summary> + /// 璇锋眰淇″彿 + /// </summary> + InteractiveSignal, + + /// <summary> + /// 鏈夌洏淇″彿 + /// </summary> + HasPallet, + + /// <summary> + /// 鎶ヨ浠g爜 + /// </summary> + ConveyorLineAlarm, + + Reserve4, + Reserve5, + + #endregion + + #region WriteDevice + + #endregion + } +} \ No newline at end of file diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/ConveyorLineTaskCommand_After.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/ConveyorLineTaskCommand_After.cs new file mode 100644 index 0000000..34d8573 --- /dev/null +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/ConveyorLineTaskCommand_After.cs @@ -0,0 +1,71 @@ +锘�#region << 鐗� 鏈� 娉� 閲� >> + +/*---------------------------------------------------------------- + * 鍛藉悕绌洪棿锛歐IDESEAWCS_Tasks.ConveyorLineJob + * 鍒涘缓鑰咃細鑳$搴� + * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36 + * 鐗堟湰锛歏1.0.0 + * 鎻忚堪锛� + * + * ---------------------------------------------------------------- + * 淇敼浜猴細 + * 淇敼鏃堕棿锛� + * 鐗堟湰锛歏1.0.1 + * 淇敼璇存槑锛� + * + *----------------------------------------------------------------*/ + +#endregion << 鐗� 鏈� 娉� 閲� >> + +using System.Runtime.CompilerServices; +using WIDESEAWCS_QuartzJob.DeviceBase; + +namespace WIDESEAWCS_Tasks.ConveyorLineJob +{ + //public class ConveyorLineTaskCommand_After : DeviceCommand + //{ + + // public short TargetAddress { get; set; } + + // public short TaskNum { get; set; } + // public ushort InteractiveSignal { get; set; } + + // [DataLength(25)] + // public string Barcode { get; set; } + + // public short ConveyorLineAlarm { get; set; } + + + //} + + public class ConveyorLineTaskCommand_After : DeviceCommand + { + + public short ConveyorLineTargetAddress { get; set; } + public int ConveyorLineTaskNum { get; set; } + + [DataLength(25)] + public string ConveyorLineBarcode { get; set; } + + public short ResponState { get; set; } + public short Reserved2 { get; set; } + public short Reserved3 { get; set; } + public byte InteractiveSignal { get; set; } + public short HasPallet { get; set; } + public short ConveyorLineAlarm { get; set; } + public short Reserved4 { get; set; } + public short Reserved5 { get; set; } + } + + //public class ConveyorLineTaskCommandWrite : DeviceCommand + //{ + // public ushort WriteInteractiveSignal { get; set; } + + // [DataLength(25)] + // public string Barcode { get; set; } + + // public short TargetAddress { get; set; } + + // public short TaskNum { get; set; } + //} +} \ No newline at end of file diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/ConfigConst.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/ConfigConst.cs index e6c0f07..93d08c3 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/ConfigConst.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/ConfigConst.cs @@ -20,6 +20,11 @@ /// 閭閰嶇疆 /// </summary> public const string CONFIG_SYS_RegExmail = "Sys_RegExmail"; + + /// <summary> + /// IP鎺ュ彛鍦板潃 + /// </summary> + public const string CONFIG_SYS_IPAddress = "CONFIG_SYS_IPAddress"; } /// <summary> @@ -60,5 +65,15 @@ /// 閭鍐呭鏍囬 /// </summary> public const string SMTP_RegUser = "smtpRegUser"; + + /// <summary> + /// WCS IP + /// </summary> + public const string WCSIPAddress = "WCSIPAddress"; + + /// <summary> + /// HK IP + /// </summary> + public const string HKIPAddress = "HKIPAddress"; } } \ No newline at end of file diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ManageEnum.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ManageEnum.cs index 45e2fd8..24d78ad 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ManageEnum.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ManageEnum.cs @@ -143,6 +143,12 @@ /// </summary> [Description("绌烘墭鐩樺嚭搴�")] OutTray = 104, + + /// <summary> + /// NG鍑哄簱 + /// </summary> + [Description("NG鍑哄簱")] + OutNG =105, } public enum TaskRelocationTypeEnum diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/NotifyFinishTest.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/NotifyFinishTest.cs new file mode 100644 index 0000000..77a1d6b --- /dev/null +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/NotifyFinishTest.cs @@ -0,0 +1,32 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEA_DTO +{ + public class NotifyFinishTest + { + /// <summary> + /// 搴撳尯 + /// </summary> + public int LocationArea { get; set; } + + /// <summary> + /// 鎵樼洏鍙� + /// </summary> + public string PalletBarcode { get; set; } + + /// <summary> + /// 搴撲綅鍙� + /// </summary> + public string LocationID { get; set; } + + /// <summary> + /// 鏄惁瀛樺湪NG (1-鏈�;2-鏃�) + /// </summary> + public int IsNG { get; set; } + + } +} diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/NotityInFinish.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/NotityInFinish.cs new file mode 100644 index 0000000..650963a --- /dev/null +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/NotityInFinish.cs @@ -0,0 +1,27 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEA_DTO +{ + public class NotityInFinish + { + /// <summary> + /// 搴撳尯 + /// </summary> + public int LocationArea { get; set; } + + /// <summary> + /// 鎵樼洏鍙� + /// </summary> + public string PalletBarcode { get; set; } + + /// <summary> + /// 搴撲綅鍙� + /// </summary> + public string LocationID { get; set; } + + } +} diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/RequestReMove.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/RequestReMove.cs new file mode 100644 index 0000000..43695b1 --- /dev/null +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/RequestReMove.cs @@ -0,0 +1,32 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEA_DTO +{ + public class RequestReMove + { + /// <summary> + /// 搴撳尯 + /// </summary> + public int LocationArea { get; set; } + + /// <summary> + /// 鎵樼洏鍙� + /// </summary> + public string PalletBarcode { get; set; } + + /// <summary> + /// 搴撲綅鍙� + /// </summary> + public string LocationID { get; set; } + + /// <summary> + /// 绉诲簱绫诲瀷(1-姝e父绉诲簱/妫�淇Щ搴� 2-杞Щ鍒板紓甯歌涪鍑哄彛(绉诲叆Ng绔�) 5-娑堥槻绉诲簱(鐏)) + /// </summary> + public int MoveType { get; set; } + + } +} diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/RequsetCellInfo.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/RequsetCellInfo.cs new file mode 100644 index 0000000..d57d1c5 --- /dev/null +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/RequsetCellInfo.cs @@ -0,0 +1,24 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEA_DTO +{ + /// <summary> + /// 璇锋眰搴撲綅淇℃伅 + /// </summary> + public class RequsetCellInfo + { + /// <summary> + /// 搴撳尯 + /// </summary> + public int LocationArea { get; set; } + + /// <summary> + /// 搴撲綅鍙� + /// </summary> + public string LocationID { get; set; } + } +} diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/WorkState.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/WorkState.cs new file mode 100644 index 0000000..af63fe9 --- /dev/null +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MCS/WorkState.cs @@ -0,0 +1,31 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEA_DTO +{ + public class WorkState + { + /// <summary> + /// 搴撲綅鏁版嵁锛堝純鐢�,2024骞�11鏈�5鏃ラ潰璋� 灏嗛泦鍚堝簱浣嶆暟鎹敼涓哄崟涓簱浣嶆暟鎹悓姝ワ級 + /// </summary> + public List<LocationWorkState> workStates { get; set; } + } + + public class LocationWorkState + { + public int LocationArea { get; set; } + + /// <summary> + /// 鐘舵�� + /// </summary> + public int StateCode { get; set; } + + /// <summary> + /// 搴撲綅缂栧彿 + /// </summary> + public string LocationID { get; set; } + } +} diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/MCS/IMCSService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/MCS/IMCSService.cs new file mode 100644 index 0000000..823bd3b --- /dev/null +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/MCS/IMCSService.cs @@ -0,0 +1,20 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WIDESEA_Core; + +namespace WIDESEA_IStoragIntegrationServices +{ + public interface IMCSService : IDependency + { + WebResponseContent NotifyFinishTest(object json); + + WebResponseContent RequestChangeLocation(object json); + + WebResponseContent ModifyAccessStatus(object json); + + WebResponseContent RequsetCellInfo(object json); + } +} diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/MCSService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/MCSService.cs new file mode 100644 index 0000000..99d1fa7 --- /dev/null +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/MCSService.cs @@ -0,0 +1,26 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WIDESEA_IStorageBasicRepository; +using WIDESEA_IStorageTaskRepository; +using WIDESEA_IStoragIntegrationServices; + +namespace WIDESEA_StoragIntegrationServices +{ + public partial class MCSService : IMCSService + { + private readonly ILocationInfoRepository _locationRepository; + private readonly IDt_TaskRepository _taskRepository; + private readonly IStockInfoRepository _stockInfoRepository; + + + public MCSService(ILocationInfoRepository locationRepository,IDt_TaskRepository taskRepository,IStockInfoRepository stockInfoRepository) + { + _locationRepository = locationRepository; + _taskRepository = taskRepository; + _stockInfoRepository = stockInfoRepository; + } + } +} diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/ModifyAccessStatus.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/ModifyAccessStatus.cs new file mode 100644 index 0000000..22c7dfd --- /dev/null +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/ModifyAccessStatus.cs @@ -0,0 +1,58 @@ +锘縰sing MailKit; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WIDESEA_Core; +using WIDESEA_DTO; + +namespace WIDESEA_StoragIntegrationServices +{ + public partial class MCSService + { + public WebResponseContent ModifyAccessStatus(object json) + { + WebResponseContent content = new WebResponseContent(); + try + { + if (string.IsNullOrEmpty(json.ToString())) throw new Exception("涓婁紶鍙傛暟涓虹┖"); + + var result = JsonConvert.DeserializeObject<LocationWorkState>(json.ToString()); + + var locationinfo = _locationRepository.QueryFirst(x => x.AreaId == result.LocationArea && x.LocationCode == result.LocationID); + if (locationinfo != null) + { + //妫�娴嬫煖鎻愪緵鐨勮揣浣嶇姸鎬侊紝鍙湁wms鏈攣瀹氫笖鎻愪緵鐨勭姸鎬佷负鍏佽鎵嶅厑璁告斁璐� + if (locationinfo.Remark != LocationStatusByCode(result.StateCode)) + { + locationinfo.Remark = LocationStatusByCode(result.StateCode); + _locationRepository.UpdateData(locationinfo); + } + } + else + throw new Exception("璐т綅涓嶅瓨鍦�"); + + return content.OK(); + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + } + private static string LocationStatusByCode(int code) + { + string str = null; + switch (code) + { + case 1: str = "LocationState_Allows"; break; + case 2: str = "LocationState_NotAllows"; break; + //case 2: str = LocationState.LocationLock.ToString(); break; + default: + str = "LocationState_NotAllows"; break; + } + return str; + } + } +} diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/NotifyFinishTest.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/NotifyFinishTest.cs new file mode 100644 index 0000000..01ba41e --- /dev/null +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/NotifyFinishTest.cs @@ -0,0 +1,83 @@ +锘縰sing Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WIDESEA_Core; +using WIDESEA_Core.Enums; +using WIDESEA_Core.Helper; +using WIDESEA_DTO; +using WIDESEA_DTO.WMS; +using WIDESEA_Model.Models; +using WIDESEA_StorageBasicRepository; + +namespace WIDESEA_StoragIntegrationServices +{ + + public partial class MCSService + { + public WebResponseContent NotifyFinishTest(object json) + { + WebResponseContent content = new WebResponseContent(); + try + { + if (string.IsNullOrEmpty(json.ToString())) throw new Exception("涓婁紶鍙傛暟涓虹┖"); + + var result = JsonConvert.DeserializeObject<NotifyFinishTest>(json.ToString()); + + if (string.IsNullOrEmpty(result?.PalletBarcode)) + throw new Exception("涓婁紶鎵樼洏鍙蜂负绌�"); + + var location = _locationRepository.QueryFirst(x => x.AreaId == result.LocationArea && x.LocationCode == result.LocationID); + + if (location == null) throw new Exception("鏈煡搴撲綅"); + + int taskNum = _taskRepository.GetTaskNo().Result; + + Dt_Task task = new Dt_Task + { + CreateDate = DateTime.Now, + Creater = "HK", + CurrentAddress = result.LocationID, + Grade = 1, + PalletCode = result.PalletBarcode, + Roadway = location.RoadwayNo, + SourceAddress = result.LocationID, + TaskState = (int)TaskOutStatusEnum.OutNew, + TaskType = result.IsNG == 1 ? (int)TaskOutboundTypeEnum.OutNG : (int)TaskOutboundTypeEnum.Outbound, + TargetAddress = "", + TaskNum = taskNum, //_taskRepository.GetTaskNo().Result, + TaskId = 0, + }; + + + WMSTaskDTO taskDTO = new WMSTaskDTO + { + Id = 0, + Grade = 1, + PalletCode = result.PalletBarcode, + RoadWay = location.RoadwayNo, + SourceAddress = result.LocationID, + TargetAddress = result.LocationID, + TaskNum = taskNum, //_taskRepository.GetTaskNo().Result, + TaskState = (int)TaskOutStatusEnum.OutNew, + TaskType = result.IsNG == 1 ? (int)TaskOutboundTypeEnum.OutNG : (int)TaskOutboundTypeEnum.Outbound, + }; + + var respon = HttpHelper.Post("http://localhost:9291/api/Task/ReceiveTask", JsonConvert.SerializeObject(taskDTO)); + if (respon != null) + { + + } + + + return content.OK(); + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + } + } +} diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/RequestChangeLocation.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/RequestChangeLocation.cs new file mode 100644 index 0000000..f4a39da --- /dev/null +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/RequestChangeLocation.cs @@ -0,0 +1,38 @@ +锘縰sing Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WIDESEA_Core; +using WIDESEA_DTO; + +namespace WIDESEA_StoragIntegrationServices +{ + public partial class MCSService + { + /// <summary> + /// 璇锋眰绉诲簱 + /// </summary> + /// <param name="json"></param> + /// <returns></returns> + public WebResponseContent RequestChangeLocation(object json) + { + WebResponseContent content = new WebResponseContent(); + try + { + if (string.IsNullOrEmpty(json.ToString())) throw new Exception("涓婁紶鍙傛暟涓虹┖"); + + var result = JsonConvert.DeserializeObject<RequestReMove>(json.ToString()); + + + + return content.OK(); + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + } + } +} \ No newline at end of file diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/RequsetCellInfo.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/RequsetCellInfo.cs new file mode 100644 index 0000000..340e770 --- /dev/null +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/RequsetCellInfo.cs @@ -0,0 +1,39 @@ +锘縰sing Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WIDESEA_Core; +using WIDESEA_DTO; + +namespace WIDESEA_StoragIntegrationServices +{ + public partial class MCSService + { + /// <summary> + /// 鑾峰彇搴撲綅淇℃伅 + /// </summary> + /// <param name="json"></param> + /// <returns></returns> + public WebResponseContent RequsetCellInfo(object json) + { + WebResponseContent content = new WebResponseContent(); + try + { + if (string.IsNullOrEmpty(json.ToString())) throw new Exception("涓婁紶鍙傛暟涓虹┖"); + + var result = JsonConvert.DeserializeObject<RequsetCellInfo>(json.ToString()); + + //_stockInfoRepository.QueryFirst(x=>x.LocationCode == result.LocationID && x) + //todo + + return content.OK(); + } + catch (Exception ex) + { + return content.Error(ex.Message); + } + } + } +} \ No newline at end of file diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MCS/MCSController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MCS/MCSController.cs new file mode 100644 index 0000000..636959b --- /dev/null +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/MCS/MCSController.cs @@ -0,0 +1,39 @@ +锘縰sing Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using WIDESEA_DTO; +using WIDESEA_IStoragIntegrationServices; + +namespace WIDESEA_WMSServer.Controllers; + +[Route("api/[controller]")] +[ApiController] +public class MCSController : Controller +{ + private readonly IMCSService _MCSService; + + public MCSController(IMCSService MCSService) { _MCSService = MCSService; } + + [HttpPost("NotifyFinishTest")] + public WebResponseContent NotifyFinishTest([FromBody] object input) + { + return _MCSService.NotifyFinishTest(input); + } + + [HttpPost("RequestChangeLocation")] + public WebResponseContent RequestChangeLocation([FromBody] object input) + { + return _MCSService.RequestChangeLocation(input); + } + + [HttpPost("ModifyAccessStatus")] + public WebResponseContent ModifyAccessStatus([FromBody] object input) + { + return _MCSService.ModifyAccessStatus(input); + } + + [HttpPost("RequsetCellInfo")] + public WebResponseContent RequsetCellInfo([FromBody] object input) + { + return _MCSService.RequsetCellInfo(input); + } +} \ No newline at end of file -- Gitblit v1.9.3