| | |
| | | *----------------------------------------------------------------*/ |
| | | #endregion << ç æ¬ 注 é >> |
| | | |
| | | using Autofac.Core; |
| | | using AutoMapper; |
| | | using Microsoft.AspNetCore.Authorization; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using Microsoft.Extensions.Logging; |
| | | using Org.BouncyCastle.Math.EC; |
| | | using SixLabors.ImageSharp; |
| | |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | |
| | | public WebResponseContent MESManualUpload(SaveModel saveModel) |
| | | { |
| | | WebResponseContent response = new WebResponseContent(); |
| | | |
| | | try |
| | | { |
| | | foreach (var key in saveModel.DelKeys) |
| | | { |
| | | int taskId = int.Parse(key.ToString()); |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == taskId); |
| | | |
| | | WebResponseContent taskResult = ProcessTask(task); |
| | | if (!taskResult.Status) |
| | | { |
| | | return taskResult; |
| | | } |
| | | } |
| | | |
| | | return response.OK("ææä»»å¡å¤çæå"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return response.Error($"WMSä»»å¡å®æé误ï¼{ex.Message}"); |
| | | } |
| | | } |
| | | |
| | | private WebResponseContent ProcessTask(Dt_Task task) |
| | | { |
| | | WebResponseContent response = new WebResponseContent(); |
| | | |
| | | switch ((TaskTypeEnum)task.TaskType) |
| | | { |
| | | case TaskTypeEnum.Inbound: |
| | | if (task.TaskStatus != (int)InTaskStatusEnum.InPLCException && |
| | | task.TaskStatus != (int)InTaskStatusEnum.InSCException) |
| | | { |
| | | return response.Error($"ä»»å¡ç±»åé误ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | return HandleInboundTask(task, |
| | | GetWcsType(task.TaskStatus, |
| | | (int)InTaskStatusEnum.InPLCException, |
| | | (int)InTaskStatusEnum.InSCException) |
| | | ); |
| | | |
| | | case TaskTypeEnum.Outbound: |
| | | if (task.TaskStatus != (int)OutTaskStatusEnum.OutPLCException && |
| | | task.TaskStatus != (int)OutTaskStatusEnum.OutSCException) |
| | | { |
| | | return response.Error($"ä»»å¡ç±»åé误ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | return HandleOutboundTask(task, GetWcsType(task.TaskStatus, |
| | | (int)OutTaskStatusEnum.OutPLCException, |
| | | (int)OutTaskStatusEnum.OutSCException)); |
| | | |
| | | case TaskTypeEnum.Relocation: |
| | | return HandleRelocationTask(task, 2); |
| | | |
| | | default: |
| | | return response.Error($"ä»»å¡ç±»åé误ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode},ç±»åï¼{task.TaskType}"); |
| | | } |
| | | } |
| | | |
| | | private int GetWcsType(int taskStatus, int plcStatus, int scStatus) |
| | | { |
| | | if (taskStatus == plcStatus) return 1; |
| | | if (taskStatus == scStatus) return 2; |
| | | return 0; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// ä»»å¡å®ææ¥å£ |
| | |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == wCSTask.TaskNum && x.PalletCode == wCSTask.PalletCode); |
| | | if (task == null) |
| | | return webResponse.Error("æªæ¾å°ä»»å¡ä¿¡æ¯"); |
| | | return TaskCompletedtask(task, wCSTask.TaskType); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return webResponse.Error($"WMSä»»å¡å®æé误ï¼{ex.Message}"); |
| | | } |
| | | } |
| | | |
| | | public WebResponseContent TaskCompletedtask(Dt_Task task,int wcstype) |
| | | { |
| | | WebResponseContent webResponse = new WebResponseContent(); |
| | | try |
| | | { |
| | | switch ((TaskTypeEnum)task.TaskType) |
| | | { |
| | | case TaskTypeEnum.Inbound: |
| | | return HandleInboundTask(task, wCSTask.TaskType); |
| | | return HandleInboundTask(task, wcstype); |
| | | case TaskTypeEnum.Outbound: |
| | | return HandleOutboundTask(task, wCSTask.TaskType); |
| | | return HandleOutboundTask(task, wcstype); |
| | | case TaskTypeEnum.Relocation: |
| | | return HandleRelocationTask(task, wCSTask.TaskType); |
| | | return HandleRelocationTask(task, wcstype); |
| | | default: |
| | | return webResponse.Error($"ä»»å¡ç±»åé误ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode},ç±»åï¼{task.TaskType}"); |
| | | } |
| | |
| | | return webResponse.Error($"WMSä»»å¡å®æé误ï¼{ex.Message}"); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | private WebResponseContent HandleInboundTask(Dt_Task task, int wcsTaskType) |
| | | { |
| | |
| | | |
| | | if (string.IsNullOrEmpty(task.TargetAddress)) |
| | | { |
| | | if(task.TaskStatus == (int)InTaskStatusEnum.PLC_InExecuting) |
| | | if(task.TaskStatus == (int)InTaskStatusEnum.PLC_InExecuting || task.TaskStatus == (int)InTaskStatusEnum.InPLCException) |
| | | { |
| | | int loctype = 0; |
| | | if (task.Roadway == "1" || task.Roadway == "2") |
| | |
| | | |
| | | //æ¥æ¾è´§ä½ï¼æ´æ°ä»»å¡ |
| | | Dt_LocationInfo dt_Location = _locationInfoService.GetLocation(task.Roadway, loctype); |
| | | if(dt_Location==null) return content.Error($"æªæ¾å°è¯¥è´§ä½ä¿¡æ¯,æçç¼å·ï¼{task.PalletCode}"); |
| | | Dt_LocationInfo ShallowCargoHold = _locationInfoService.ShallowGetLocation(dt_Location.RoadwayNo, dt_Location.LocationType, dt_Location.Row, dt_Location.Layer, dt_Location.Column); |
| | | if (ShallowCargoHold == null) return content.Error($"æªæ¾å°è¯¥è´§ä½ä¿¡æ¯,è´§ä½ç¼å·:{dt_Location.LocationCode}çæµ
è´§ä½"); |
| | | if (ShallowCargoHold.LocationStatus != (int)LocationStatusEnum.Free) return content.Error($"ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode},æ¥æ¾çè´§ä½æµ
è´§ä½æè´§ï¼è´§ä½ç¼å·ï¼{ShallowCargoHold.LocationCode}"); |
| | |
| | | dt_StockInfo.StockStatus = (int)StockStatusEmun.å
¥åºä¸; |
| | | dt_StockInfo.Creater = "MWS"; |
| | | dt_StockInfo.CreateDate = DateTime.Now; |
| | | dt_StockInfo.Roadway = task.Roadway; |
| | | |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | | _stockInfoService.AddData(dt_StockInfo); |
| | |
| | | else |
| | | { |
| | | //夿æ¯å¦æè¯¥ç«å° |
| | | if (task.TaskStatus == (int)InTaskStatusEnum.PLC_InExecuting) |
| | | if (task.TaskStatus == (int)InTaskStatusEnum.PLC_InExecuting || task.TaskStatus == (int)InTaskStatusEnum.InPLCException) |
| | | { |
| | | string Resultplc = MesInTaskStatusEnum.Finish.GetDescription(); |
| | | MES_parameter mES_PCLParameter = InStoreDocCallback(task.TaskNum, Resultplc, "æä½æå", task.PalletCode, task.TargetAddress); |
| | |
| | | } |
| | | else |
| | | { |
| | | task.NumberSsuances = task.NumberSsuances + 1; |
| | | if (task.NumberSsuances == 3) |
| | | { |
| | | task.TaskStatus = (int)InTaskStatusEnum.InPLCException; |
| | | task.Remark = "è¾é线å
¥åºï¼ä¸ä¼ MES失败ï¼åå ï¼" + mES_PCLParameter.ResultMsg; |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | return content.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_PCLParameter.ResultMsg); |
| | | } |
| | | } |
| | |
| | | |
| | | } |
| | | case 2: |
| | | if (task.TaskStatus == (int)InTaskStatusEnum.SC_IntExecuting) |
| | | if (task.TaskStatus == (int)InTaskStatusEnum.SC_IntExecuting || task.TaskStatus == (int)InTaskStatusEnum.InSCException) |
| | | { |
| | | string Resultsc = MesInTaskStatusEnum.Finish.GetDescription(); |
| | | //䏿¥MESä»»å¡å®æ |
| | |
| | | } |
| | | else |
| | | { |
| | | task.NumberSsuances = task.NumberSsuances + 1; |
| | | if (task.NumberSsuances == 3) |
| | | { |
| | | task.TaskStatus = (int)InTaskStatusEnum.InSCException; |
| | | task.Remark = "å åæºå
¥åºï¼ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg; |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | return content.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg); |
| | | } |
| | | } |
| | |
| | | switch (wcsTaskType) |
| | | { |
| | | case 1: |
| | | if(task.TaskStatus == (int)OutTaskStatusEnum.PLC_OutExecuting) |
| | | if(task.TaskStatus == (int)OutTaskStatusEnum.PLC_OutExecuting || task.TaskStatus == (int)OutTaskStatusEnum.OutPLCException) |
| | | { |
| | | string Resultplc = MesOutTaskStatusEnum.Finish.GetDescription(); |
| | | //䏿¥MESä»»å¡å®æ |
| | |
| | | } |
| | | else |
| | | { |
| | | task.NumberSsuances = task.NumberSsuances + 1; |
| | | if (task.NumberSsuances == 3) |
| | | { |
| | | task.TaskStatus = (int)OutTaskStatusEnum.OutPLCException; |
| | | task.Remark = "åºåºï¼è¾é线ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg; |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | return content.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg); |
| | | } |
| | | |
| | |
| | | |
| | | case 2: |
| | | |
| | | if (task.TaskStatus == (int)OutTaskStatusEnum.SC_OutExecuting) |
| | | if (task.TaskStatus == (int)OutTaskStatusEnum.SC_OutExecuting || task.TaskStatus == (int)OutTaskStatusEnum.OutSCException) |
| | | { |
| | | //è·å对åºPLCç«å°ä¿¡æ¯ |
| | | Dt_roadwayinfo _Roadwayinfo = _roadWayinfoService.QbtainPlatform(task.Roadway); |
| | |
| | | } |
| | | else |
| | | { |
| | | task.NumberSsuances = task.NumberSsuances + 1; |
| | | if (task.NumberSsuances == 3) |
| | | { |
| | | task.TaskStatus = (int)OutTaskStatusEnum.OutSCException; |
| | | task.Remark = "å åæºåºåºï¼ä¸ä¼ MES失败ï¼åå ï¼" + mES_SCParameter.ResultMsg; |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | return content.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_SCParameter.ResultMsg); |
| | | } |
| | | } |
| | |
| | | } |
| | | else |
| | | { |
| | | task.NumberSsuances = task.NumberSsuances + 1; |
| | | if (task.NumberSsuances == 3) |
| | | { |
| | | task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationException; |
| | | task.Remark = "ç§»åºï¼ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg; |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | return responseContent.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg); |
| | | } |
| | | } |
| | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |