´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/144011e2-42f0-4bb3-91f4-4f3faf1287db.vsidxBinary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/6dfb708c-1dce-481d-8fd0-9391b26c11ff.vsidxBinary files differ
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/APIEnum/APIEnum.cs
@@ -9,13 +9,34 @@ { public enum APIEnum { /// <summary> /// AGVåé任塿¥å£ /// </summary> [Description("AGVåé任塿¥å£")] AgvSendTask, /// <summary> /// AGVå®å ¨ä¿¡å·åå¤ /// </summary> [Description("AGVå®å ¨ä¿¡å·åå¤")] AgvSecureReply, /// <summary> /// åè°WMSä»»å¡å®æ /// </summary> [Description("åè°WMSä»»å¡å®æ")] FeedBackWMSTaskCompleted, UploadWMSTaskStatus /// <summary> /// 䏿¥WMSä»»å¡ç¶æ /// </summary> [Description("䏿¥WMSä»»å¡ç¶æ")] UploadWMSTaskStatus, /// <summary> /// WMSæ¯å¦ç§»åºå¤æ /// </summary> [Description("WMSæ¯å¦ç§»åºå¤æ")] WMSIsReloaction } } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/HostedService/WarehouseHostedService.cs
@@ -39,6 +39,10 @@ _dbContext.Db.Insertable(warehouses).ExecuteCommand(); List<Dt_ApiInfo> apiInfos = _dbContext.Db.Queryable<Dt_ApiInfo>().ToList(); _cacheService.AddOrUpdate(nameof(apiInfos), apiInfos); return Task.CompletedTask; } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Program.cs
@@ -63,7 +63,7 @@ builder.Services.AddHttpContextSetup(); //builder.Services.AddHostedService<QuartzJobHostedService>(); builder.Services.AddHostedService<QuartzJobHostedService>(); builder.Services.AddMvc(options => { ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -87,6 +87,24 @@ } public WebResponseContent TaskCompleted(int taskNum) { try { Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); if (task != null) { } return WebResponseContent.Instance.OK(); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } } /// <summary> /// æ¥æ¶WMSä»»å¡ä¿¡æ¯ /// </summary> ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/WIDESEAWCS_Tasks.csproj
@@ -7,15 +7,17 @@ </PropertyGroup> <ItemGroup> <Compile Remove="HoisterJob\**" /> <EmbeddedResource Remove="HoisterJob\**" /> <None Remove="HoisterJob\**" /> </ItemGroup> <ItemGroup> <PackageReference Include="WIDESEAWCS_QuartzJob" Version="3.0.1" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\WIDESEAWCS_TaskInfoService\WIDESEAWCS_TaskInfoService.csproj" /> </ItemGroup> <ItemGroup> <Folder Include="HoisterJob\" /> </ItemGroup> </Project> ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ÓÍÄ«²Ö/StackerCraneJob_YM.cs
@@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Components.Routing; using Newtonsoft.Json; using Quartz; using System; using System.Collections.Generic; @@ -6,8 +7,10 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Common.APIEnum; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core; using WIDESEAWCS_Core.Caches; using WIDESEAWCS_Core.Enums; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_IBasicInfoRepository; @@ -30,19 +33,32 @@ [DisallowConcurrentExecution] public class StackerCraneJob_YM : JobBase, IJob { private readonly ICacheService _cacheService; private readonly ITaskService _taskService; private readonly ITaskExecuteDetailService _taskExecuteDetailService; private readonly ITaskRepository _taskRepository; private readonly IRouterService _routerService; private readonly IStationMangerRepository _stationMangerRepository; private List<Dt_ApiInfo> apiInfos; public StackerCraneJob_YM(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository) public StackerCraneJob_YM(ITaskService taskService, ICacheService cacheService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository) { _cacheService = cacheService; _taskService = taskService; _taskExecuteDetailService = taskExecuteDetailService; _taskRepository = taskRepository; _routerService = routerService; _stationMangerRepository = stationMangerRepository; string? apiInfoStr = _cacheService.Get("apiInfos"); if (!string.IsNullOrEmpty(apiInfoStr)) { apiInfos = JsonConvert.DeserializeObject<List<Dt_ApiInfo>>(apiInfoStr); if (apiInfos == null || apiInfos.Count == 0) { apiInfos = new List<Dt_ApiInfo>(); } } } public Task Execute(IJobExecutionContext context) @@ -102,9 +118,17 @@ Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == e.TaskNum); if (task != null) { string? url = apiInfos.FirstOrDefault(x => x.ApiCode == APIEnum.FeedBackWMSTaskCompleted.ToString())?.ApiAddress; if (string.IsNullOrEmpty(url)) { _taskExecuteDetailService.AddTaskExecuteDetail(e.TaskNum, $"æªæ¾å°åè°WMSä»»å¡å®ææ¥å£"); WriteInfo(commonStackerCrane.DeviceName, $"æªæ¾å°åè°WMSä»»å¡å®ææ¥å£"); return; } HttpHelper.Post($"{url}?taskNum={e.TaskNum}", "");//todo è°ç¨WMSä»»å¡å®ææ¹æ³ _taskExecuteDetailService.AddTaskExecuteDetail(e.TaskNum, $"ç³»ç»èªå¨æµç¨,ä»»å¡å®æ"); _taskRepository.DeleteAndMoveIntoHty(task, OperateTypeEnum.èªå¨å®æ); HttpHelper.Post("", "");//todo è°ç¨WMSä»»å¡å®ææ¹æ³ } else { @@ -187,7 +211,7 @@ OtherDevice client = (OtherDevice)device; if (client.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanPut, stationManger.StationCode))//åºåºç«å°æªè¢«å ç¨ { task.TargetAddress = stationManger.StackerCraneStationCode; task.NextAddress = stationManger.StackerCraneStationCode; _taskRepository.UpdateData(task); return task; } ´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/²âÊԼܲÖ/StackerCraneJob_CSJ.cs
@@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Components.Routing; using Newtonsoft.Json; using Quartz; using System; using System.Collections.Generic; @@ -6,8 +7,10 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Common.APIEnum; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core; using WIDESEAWCS_Core.Caches; using WIDESEAWCS_Core.Enums; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_IBasicInfoRepository; @@ -27,19 +30,36 @@ [DisallowConcurrentExecution] public class StackerCraneJob_CSJ : JobBase, IJob { private readonly ICacheService _cacheService; private readonly ITaskService _taskService; private readonly ITaskExecuteDetailService _taskExecuteDetailService; private readonly ITaskRepository _taskRepository; private readonly IRouterService _routerService; private readonly IStationMangerRepository _stationMangerRepository; private List<Dt_ApiInfo> apiInfos; public StackerCraneJob_CSJ(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository) public StackerCraneJob_CSJ(ITaskService taskService, ICacheService cacheService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository) { _taskService = taskService; _taskExecuteDetailService = taskExecuteDetailService; _taskRepository = taskRepository; _routerService = routerService; _stationMangerRepository = stationMangerRepository; _cacheService = cacheService; string? apiInfoStr = _cacheService.Get("apiInfos"); if (!string.IsNullOrEmpty(apiInfoStr)) { List<Dt_ApiInfo>? infos = JsonConvert.DeserializeObject<List<Dt_ApiInfo>>(apiInfoStr); if (infos == null || infos.Count == 0) { apiInfos = new List<Dt_ApiInfo>(); } else { apiInfos = infos; } } } public Task Execute(IJobExecutionContext context) @@ -101,13 +121,13 @@ if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5) { Console.Out.WriteLine("TaskCompleted" + e.TaskNum); StackerCraneTaskCompleted(e.TaskNum, commonStackerCrane.DeviceName); StackerCraneTaskCompleted(e.TaskNum, commonStackerCrane.DeviceCode); commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5); } } } public WebResponseContent StackerCraneTaskCompleted(int taskNum, string deviceName) public WebResponseContent StackerCraneTaskCompleted(int taskNum, string deviceCode) { try { @@ -124,16 +144,30 @@ _taskRepository.UpdateData(task); _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"ç³»ç»èªå¨æµç¨,ï¼ä»»å¡ç¶æä»ã{oldStatus}ã转å°ã{task.TaskState}ã"); } else if (task.TaskType.GetTaskTypeGroup() != TaskTypeGroup.InboundGroup) else if (task.TaskType.GetTaskTypeGroup() != TaskTypeGroup.InboundGroup || task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) { _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"ç³»ç»èªå¨æµç¨,ï¼ä»»å¡å®æ"); string? url = apiInfos.FirstOrDefault(x => x.ApiCode == APIEnum.FeedBackWMSTaskCompleted.ToString())?.ApiAddress; if (string.IsNullOrEmpty(url)) { _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"æªæ¾å°åè°WMSä»»å¡å®ææ¥å£"); WriteInfo(deviceCode, $"æªæ¾å°åè°WMSä»»å¡å®ææ¥å£"); return WebResponseContent.Instance.Error(); } HttpHelper.Post($"{url}?taskNum={taskNum}", "");//todo è°ç¨WMSä»»å¡å®ææ¹æ³ _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"ç³»ç»èªå¨æµç¨,ä»»å¡å®æ"); _taskRepository.DeleteAndMoveIntoHty(task, OperateTypeEnum.èªå¨å®æ); HttpHelper.Post("", "");//todo è°ç¨WMSä»»å¡å®ææ¹æ³ } else { WriteInfo(deviceCode, $"æªæ¾å°è¯¥ä»»å¡ç±»ååè°WMSä»»å¡å®ææ¥å£,{task.TaskType}"); _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"æªæ¾å°è¯¥ä»»å¡ç±»ååè°WMSä»»å¡å®ææ¥å£,{task.TaskType}"); _taskService.UpdateTaskExceptionMessage(taskNum, $"æªæ¾å°è¯¥ä»»å¡ç±»ååè°WMSä»»å¡å®ææ¥å£,{task.TaskType}"); } } else { WriteInfo(deviceName, $"æªæ¾å°ä»»å¡ä¿¡æ¯,ä»»å¡å·:{taskNum}"); WriteInfo(deviceCode, $"æªæ¾å°ä»»å¡ä¿¡æ¯,ä»»å¡å·:{taskNum}"); return WebResponseContent.Instance.Error($"æªæ¾å°ä»»å¡ä¿¡æ¯,ä»»å¡å·:{taskNum}"); } @@ -141,7 +175,7 @@ } catch (Exception ex) { WriteError(deviceName, $"ä»»å¡å®æé误", ex); WriteError(deviceCode, $"ä»»å¡å®æé误", ex); return WebResponseContent.Instance.Error(ex.Message); } } @@ -199,9 +233,17 @@ } } if(task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) { HttpHelper.Post("", ""); string? url = apiInfos.FirstOrDefault(x => x.ApiCode == APIEnum.FeedBackWMSTaskCompleted.ToString())?.ApiAddress; if (string.IsNullOrEmpty(url)) { _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, $"æªæ¾å°WMSç§»åºå¤ææ¥å£"); WriteInfo(commonStackerCrane.DeviceCode, $"æªæ¾å°WMSç§»åºå¤ææ¥å£"); _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"æªæ¾å°WMSç§»åºå¤ææ¥å£"); return null; } HttpHelper.Post($"{url}?taskNum={task.TaskNum}&locationCode={task.NextAddress}", "");//todo è°ç¨WMSä»»å¡å®ææ¹æ³ } return task; @@ -223,7 +265,7 @@ OtherDevice client = (OtherDevice)device; if (client.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanPut, stationManger.StationCode))//åºåºç«å°æªè¢«å ç¨ { task.TargetAddress = stationManger.StackerCraneStationCode; task.NextAddress = stationManger.StackerCraneStationCode; _taskRepository.UpdateData(task); client.SetValue(GroundStationDBName.R_IsCanPut, true, stationManger.StationCode); return task; @@ -231,11 +273,13 @@ } else { WriteInfo(task.DeviceCode, $"æªæ¾å°åºåºç«å°ã{stationManger.StationDeviceCode}ã对åºçéè®¯å¯¹è±¡ï¼æ æ³å¤æåºåºç«å°æ¯å¦è¢«å ç¨"); _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"æªæ¾å°åºåºç«å°ã{stationManger.StationDeviceCode}ã对åºçéè®¯å¯¹è±¡ï¼æ æ³å¤æåºåºç«å°æ¯å¦è¢«å ç¨"); } } else { WriteInfo(task.DeviceCode, $"æªæ¾å°ç«å°ã{task.NextAddress}ãä¿¡æ¯ï¼æ æ³æ ¡éªç«å°"); _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"æªæ¾å°ç«å°ã{task.NextAddress}ãä¿¡æ¯ï¼æ æ³æ ¡éªç«å°"); } return null; @@ -264,7 +308,7 @@ stackerCraneTaskCommand.StartLayer = Convert.ToInt16(startCodes[2]); string[] targetCodes = task.NextAddress.Split("-"); if (targetCodes.Length == 3) if (targetCodes.Length == 5) { stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]); stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]); @@ -274,6 +318,7 @@ { //æ°æ®é ç½®é误 _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"å ¥åºä»»å¡ç»ç¹é误ï¼èµ·ç¹ï¼ã{task.NextAddress}ã"); WriteInfo(task.DeviceCode, $"å ¥åºä»»å¡ç»ç¹é误ï¼èµ·ç¹ï¼ã{task.NextAddress}ã"); return null; } } @@ -286,7 +331,7 @@ stackerCraneTaskCommand.EndLayer = Convert.ToInt16(targetCodes[2]); string[] sourceCodes = task.CurrentAddress.Split("-"); if (sourceCodes.Length == 3) if (sourceCodes.Length == 5) { stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[0]); stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[1]); @@ -296,13 +341,14 @@ { //æ°æ®é ç½®é误 _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"åºåºä»»å¡èµ·ç¹é误ï¼èµ·ç¹ï¼ã{task.CurrentAddress}ã"); WriteInfo(task.DeviceCode, $"åºåºä»»å¡èµ·ç¹é误ï¼èµ·ç¹ï¼ã{task.CurrentAddress}ã"); return null; } } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) { string[] targetCodes = task.NextAddress.Split("-"); if (targetCodes.Length == 3) if (targetCodes.Length == 5) { stackerCraneTaskCommand.EndRow = Convert.ToInt16(targetCodes[0]); stackerCraneTaskCommand.EndColumn = Convert.ToInt16(targetCodes[1]); @@ -312,10 +358,11 @@ { //æ°æ®é ç½®é误 _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"ç§»åºä»»å¡ç»ç¹é误ï¼èµ·ç¹ï¼ã{task.NextAddress}ã"); WriteInfo(task.DeviceCode, $"ç§»åºä»»å¡ç»ç¹é误ï¼èµ·ç¹ï¼ã{task.NextAddress}ã"); return null; } string[] sourceCodes = task.CurrentAddress.Split("-"); if (sourceCodes.Length == 3) if (sourceCodes.Length == 5) { stackerCraneTaskCommand.StartRow = Convert.ToInt16(sourceCodes[0]); stackerCraneTaskCommand.StartColumn = Convert.ToInt16(sourceCodes[1]); @@ -325,6 +372,7 @@ { //æ°æ®é ç½®é误 _taskService.UpdateTaskExceptionMessage(task.TaskNum, $"ç§»åºä»»å¡èµ·ç¹é误ï¼èµ·ç¹ï¼ã{task.CurrentAddress}ã"); WriteInfo(task.DeviceCode, $"ç§»åºä»»å¡èµ·ç¹é误ï¼èµ·ç¹ï¼ã{task.CurrentAddress}ã"); return null; } } ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3273c20c-b49e-4f5e-9b68-3a0c163bfb0d.vsidxBinary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/3391ef1a-b377-4e97-8ef2-e56d3ee99c44.vsidxBinary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/50a4a68c-d15a-4c06-92d2-58d3ca8fbb54.vsidxBinary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/52d14652-9578-4d37-be69-82ece695e359.vsidxBinary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/6f175d71-07e6-45dd-8008-da0dcbb0a76c.vsidxBinary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/82bf8887-9a08-48ab-8128-b1344527468e.vsidxBinary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/9a102d22-50b2-4a33-9ca7-fb3c6c8dea03.vsidxBinary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/cf601b15-8665-4e91-bf55-55e9b66ed6a7.vsidxBinary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/read.lock
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/AssignLocation/LocationInfoService_CSJ.cs
@@ -30,7 +30,8 @@ /// 4ï¼ç¹é¿ <br/> /// 1å2齿¯3æ·±ï¼ä¸å¯ä»¥æ··æ¾ã <br/> /// 3å4齿¯2æ·±ï¼ä¸å¯ä»¥æ··æ¾ã <br/> /// ç§»åºæ¶åªè½æ¯åä¾§è´§ä½ã /// ç§»åºæ¶åªè½æ¯åä¾§è´§ä½ã <br/> /// 6æ43å13å±---13å±ä¸å¯ç¨ /// </summary> /// <param name="roadwayNo">å··éå·</param> /// <param name="palletType"> ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_External/ERPService/InvokeERPService.cs
@@ -21,7 +21,7 @@ private readonly IApiInfoRepository _apiInfoRepository; public InvokeERPService(IApiInfoRepository apiInfoRepository) { _apiInfoRepository= apiInfoRepository; _apiInfoRepository = apiInfoRepository; } // å建ä¸ä¸ªä½¿ç¨å°é©¼å³°å½åæ³çåºåå设置 JsonSerializerSettings settings = new JsonSerializerSettings @@ -35,7 +35,7 @@ /// <returns></returns> public string InvokeMatReceiveApi(ERPReceiveModel receiveModel) { Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x=>x.ApiCode==APIEnum.InvokeErpApi.ToString()); Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeMatReceiveApi.ToString()); ERPBaseModel<ERPReceiveModel> model = new ERPBaseModel<ERPReceiveModel>() { Data = receiveModel, ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs
@@ -401,6 +401,7 @@ } return content; } public WebResponseContent MaterielGroup(int inboundOrderId, string palletCode, List<string> serNums) { try ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Reloaction.cs
@@ -32,6 +32,7 @@ { return WebResponseContent.Instance.Error($"æªæ¾å°å¯¹åºçè´§ä½ä¿¡æ¯"); } Dt_Task task = Repository.QueryFirst(x => x.TaskNum == taskNum); if (task == null) { @@ -57,7 +58,7 @@ Dt_Task taskTemp = Repository.QueryFirst(x => x.PalletCode == stockInfo.PalletCode); if (taskTemp != null) { return WebResponseContent.Instance.OK(data: taskTemp); return WebResponseContent.Instance.OK(data: _mapper.Map<WMSTaskDTO>(taskTemp)); } Dt_LocationInfo? newLocation = _basicService.LocationInfoService.AssignLocation(needRelocationItem.RoadwayNo, (PalletTypeEnum)task.PalletType, task.WarehouseId); ÏîÄ¿×ÊÁÏ/É豸ÐÒé/¸ÉĤ²Ö¶Ñ¶â»úͨÐÅÐÒé.xlsxBinary files differ