| | |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_Core.Utilities; |
| | | using WIDESEA_DTO.Inbound; |
| | | using WIDESEA_DTO.Task; |
| | | using WIDESEA_IBasicService; |
| | |
| | | private readonly ILocationInfoService _locationInfoService; |
| | | private readonly IWarehouseService _warehouseService; |
| | | private readonly IRoadWayinfoService _roadWayinfoService; |
| | | private readonly ITask_HtyService _task_HtyService; |
| | | private Timer _timer; |
| | | public IRepository<Dt_Task> Repository => BaseDal; |
| | | |
| | |
| | | public List<int> TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList(); |
| | | |
| | | public TaskService(ILogger<TaskService> logger, IRepository<Dt_Task> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockInfoService stockInfoService, ILocationInfoService locationInfoService, |
| | | IWarehouseService warehouseService, IRoadWayinfoService roadWayinfoService) : base(BaseDal) |
| | | IWarehouseService warehouseService, IRoadWayinfoService roadWayinfoService, ITask_HtyService task_HtyService) : base(BaseDal) |
| | | { |
| | | _logger = logger; |
| | | _mapper = mapper; |
| | |
| | | _stockInfoService = stockInfoService; |
| | | _locationInfoService = locationInfoService; |
| | | _warehouseService = warehouseService; |
| | | _roadWayinfoService=roadWayinfoService; |
| | | |
| | | _roadWayinfoService = roadWayinfoService; |
| | | _task_HtyService = task_HtyService; |
| | | } |
| | | public string MES_InReporttask = WIDESEA_Core.Helper.AppSettings.Configuration["MES_InReporttask"]; //å
¥åºåé¦ä¿¡æ¯ |
| | | public string MES_OutReporttask = WIDESEA_Core.Helper.AppSettings.Configuration["MES_OutReporttask"]; //åºåºåé¦ä¿¡æ¯ |
| | |
| | | |
| | | public WebResponseContent CESTEXT() |
| | | { |
| | | WriteLog.Write_Log("æ¥æ¶MESå
¥åºä»»å¡ä¸å", $"任塿¥æ¶åæ°", "æå", $"åæ°ï¼234jkljsldafjlasdf"); |
| | | |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | |
| | | |
| | | //æå¨ï¼ä»»å¡ä¸æ¥ |
| | | #region |
| | | public WebResponseContent MESManualUpload(SaveModel saveModel) |
| | | { |
| | | WebResponseContent response = new WebResponseContent(); |
| | | |
| | | List<Dt_Task> stdata=new List<Dt_Task>(); |
| | | 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) |
| | | { |
| | | WriteLog.Write_Log("WMS_æå¨ä¸æ¥ä»»å¡", $"ä»»å¡ä¸æ¥", $"失败ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode},", $"åå ï¼{taskResult.Message}"); |
| | | return taskResult; |
| | | } |
| | | stdata.Add(task); |
| | | } |
| | | |
| | | WriteLog.Write_Log("WMS_æå¨ä¸æ¥ä»»å¡", $"ä»»å¡ä¸æ¥", $"æå", $"䏿¥çæ°æ®ï¼{stdata.ToJson()}"); |
| | | return response.OK("ææä»»å¡å¤çæå"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteLog.Write_Log("WMS_æå¨ä¸æ¥ä»»å¡", $"ä»»å¡ä¸æ¥", $"失败", $"WMSä»»å¡å®æé误ï¼{ex.Message}"); |
| | | return response.Error($"WMSä»»å¡å®æé误ï¼{ex.Message}"); |
| | | } |
| | | } |
| | |
| | | { |
| | | return response.Error($"ä»»å¡ç±»åé误ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | return HandleInboundTask(task, |
| | | return HandleInboundTask(task, |
| | | GetWcsType(task.TaskStatus, |
| | | (int)InTaskStatusEnum.InPLCException, |
| | | (int)InTaskStatusEnum.InSCException) |
| | |
| | | return 0; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | /// <summary> |
| | | /// ä»»å¡å®ææ¥å£ |
| | | /// </summary> |
| | | /// <param name="wCSTask"></param> |
| | | /// <returns></returns> |
| | | |
| | | #region ä»»å¡å®æ |
| | | public WebResponseContent TaskCompleted(WCSTaskDTO wCSTask) |
| | | { |
| | | WebResponseContent webResponse= new WebResponseContent(); |
| | | WebResponseContent webResponse = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == wCSTask.TaskNum && x.PalletCode == wCSTask.PalletCode); |
| | | if (task == null) |
| | | return webResponse.Error("æªæ¾å°ä»»å¡ä¿¡æ¯"); |
| | | return webResponse.Error("æªæ¾å°ä»»å¡ä¿¡æ¯", 404); |
| | | return TaskCompletedtask(task, wCSTask.TaskType); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | } |
| | | } |
| | | |
| | | public WebResponseContent TaskCompletedtask(Dt_Task task,int wcstype) |
| | | public WebResponseContent TaskCompletedtask(Dt_Task task, int wcstype) |
| | | { |
| | | WebResponseContent webResponse = new WebResponseContent(); |
| | | try |
| | |
| | | |
| | | if (string.IsNullOrEmpty(task.TargetAddress)) |
| | | { |
| | | if(task.TaskStatus == (int)InTaskStatusEnum.PLC_InExecuting || task.TaskStatus == (int)InTaskStatusEnum.InPLCException) |
| | | 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}"); |
| | | if (dt_Location == null) |
| | | { |
| | | WriteLog.Write_Log("WCS_å
¥åº_䏿¥å®æ", $"è¾éçº¿å®æ", $"失败ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"æªæ¾å°è¯¥è´§ä½ä¿¡æ¯,æçç¼å·ï¼{task.PalletCode}"); |
| | | 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 == null) |
| | | { |
| | | WriteLog.Write_Log("WCS_å
¥åº_䏿¥å®æ", $"è¾éçº¿å®æ", $"失败ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"æªæ¾å°è¯¥è´§ä½ä¿¡æ¯,è´§ä½ç¼å·:{dt_Location.LocationCode}çæµ
è´§ä½"); |
| | | return content.Error($"æªæ¾å°è¯¥è´§ä½ä¿¡æ¯,è´§ä½ç¼å·:{dt_Location.LocationCode}çæµ
è´§ä½"); |
| | | } |
| | | if (ShallowCargoHold.LocationStatus != (int)LocationStatusEnum.Free) return content.Error($"ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode},æ¥æ¾çè´§ä½æµ
è´§ä½æè´§ï¼è´§ä½ç¼å·ï¼{ShallowCargoHold.LocationCode}"); |
| | | |
| | | if (task.PalletCode[0] == 1 && (dt_Location.RoadwayNo == "1" || dt_Location.RoadwayNo == "2") && dt_Location.Column < 4) |
| | | { |
| | | WriteLog.Write_Log("WCS_å
¥åº_䏿¥å®æ", $"è¾éçº¿å®æ", $"失败,æçæ¡ç ï¼{task.PalletCode},è´§ä½ç¼å·:{dt_Location.LocationCode}", $"æ¡ç ä¸ºé«æçï¼ä½æ¯æ¥æ¾çè´§ä½è¦å
¥å¨ä½æçä¸"); |
| | | return content.Error($"æ¡ç ä¸ºé«æçï¼ä½æ¯æ¥æ¾çè´§ä½è¦å
¥å¨ä½æçä¸ï¼æ
é,æçæ¡ç ï¼{task.PalletCode},è´§ä½ç¼å·:{dt_Location.LocationCode}"); |
| | | } |
| | | |
| | |
| | | dt_StockInfo.Creater = "MWS"; |
| | | dt_StockInfo.CreateDate = DateTime.Now; |
| | | dt_StockInfo.Roadway = task.Roadway; |
| | | |
| | | |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | | _stockInfoService.AddData(dt_StockInfo); |
| | | _locationInfoService.UpdateData(dt_Location); |
| | | BaseDal.UpdateData(task); |
| | | _unitOfWorkManage.CommitTran(); |
| | | WriteLog.Write_Log("WCS_å
¥åº_䏿¥å®æ", $"è¾éçº¿å®æ", $"æåï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"å·²æ¥æ¶å
¥åºè¾éçº¿å®æä¿¡æ¯,æ·»å åºåä¿¡æ¯ï¼{dt_StockInfo.ToJson()}ï¼ä¿®æ¹è´§ä½ï¼{dt_Location.ToJson()}"); |
| | | |
| | | return content.OK($"å·²æ¥æ¶å
¥åºè¾éçº¿å®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | else |
| | | { |
| | | WriteLog.Write_Log("WCS_å
¥åº_䏿¥å®æ", $"è¾éçº¿å®æ", $"æåï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"䏿¥å¤±è´¥ï¼å½åä»»å¡ä¸æ¯è¾é线æ§è¡ä¸ï¼WCS䏿¥å®æå¤±è´¥"); |
| | | return content.Error("䏿¥å¤±è´¥ï¼å½åä»»å¡ä¸æ¯è¾é线æ§è¡ä¸ï¼WCS䏿¥å®æå¤±è´¥"); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | else |
| | | { |
| | |
| | | _unitOfWorkManage.BeginTran(); |
| | | BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.èªå¨å®æ : OperateTypeEnum.äººå·¥å®æ); |
| | | _unitOfWorkManage.CommitTran(); |
| | | WriteLog.Write_Log("WCS_å
¥åº_䏿¥å®æ", $"è¾é线ç¹å°ç¹å®æ", $"æåï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"è¾é线任å¡å·²åé¦è³ä¸æ¸¸"); |
| | | return content.OK($"è¾é线任å¡å·²åé¦è³ä¸æ¸¸ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | else |
| | | { |
| | | task.NumberSsuances = task.NumberSsuances + 1; |
| | | if (task.NumberSsuances == 3) |
| | | { |
| | | task.TaskStatus = (int)InTaskStatusEnum.InPLCException; |
| | | task.Remark = "è¾é线å
¥åºï¼ä¸ä¼ MES失败ï¼åå ï¼" + mES_PCLParameter.ResultMsg; |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | task.NumberSsuances = 3; |
| | | task.TaskStatus = (int)InTaskStatusEnum.InPLCException; |
| | | task.Remark = "è¾é线å
¥åºï¼ä¸ä¼ MES失败ï¼åå ï¼" + mES_PCLParameter.ResultMsg; |
| | | BaseDal.UpdateData(task); |
| | | WriteLog.Write_Log("WCS_å
¥åº_䏿¥å®æ", $"è¾é线ç¹å°ç¹å®æ", $"失败ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"è¾é线任å¡å·²åé¦è³ä¸æ¸¸"); |
| | | return content.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_PCLParameter.ResultMsg); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteLog.Write_Log("WCS_å
¥åº_䏿¥å®æ", $"è¾é线ç¹å°ç¹å®æ", $"失败ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"䏿¥å¤±è´¥ï¼å½åä»»å¡ä¸æ¯è¾é线æ§è¡ä¸ï¼WCS䏿¥å®æå¤±è´¥"); |
| | | return content.Error($"䏿¥å¤±è´¥ï¼å½åä»»å¡ä¸æ¯è¾é线æ§è¡ä¸ï¼WCS䏿¥å®æå¤±è´¥ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | |
| | |
| | | _locationInfoService.UpdateData(dt_LocationInfo); |
| | | BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.èªå¨å®æ : OperateTypeEnum.äººå·¥å®æ); |
| | | _unitOfWorkManage.CommitTran(); |
| | | |
| | | WriteLog.Write_Log("WCS_å
¥åº_䏿¥å®æ", $"å åæºå®æ", $"æåï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"ä¿®æ¹åçåºåï¼{dt_Stockowc.ToJson()},ä¿®æ¹åçåºä½ä¿¡æ¯ï¼{dt_LocationInfo.ToJson()}"); |
| | | return content.OK($"å·²æ¥æ¶å
¥åºå åæºå®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | else |
| | | { |
| | | task.NumberSsuances = task.NumberSsuances + 1; |
| | | if (task.NumberSsuances == 3) |
| | | { |
| | | task.TaskStatus = (int)InTaskStatusEnum.InSCException; |
| | | task.Remark = "å åæºå
¥åºï¼ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg; |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | task.NumberSsuances = 3; |
| | | task.TaskStatus = (int)InTaskStatusEnum.InSCException; |
| | | task.Remark = "å åæºå
¥åºï¼ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg; |
| | | BaseDal.UpdateData(task); |
| | | WriteLog.Write_Log("WCS_å
¥åº_䏿¥å®æ", $"å åæºå®æ", $"失败ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"ä¸ä¼ MES失败ï¼åå ï¼{mES_Parameter.ResultMsg}"); |
| | | return content.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteLog.Write_Log("WCS_å
¥åº_䏿¥å®æ", $"å åæºå®æ", $"失败ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"䏿¥å¤±è´¥ï¼å½åä»»å¡ä¸æ¯å åæºæ§è¡ä¸ï¼WCS䏿¥å®æå¤±è´¥"); |
| | | return content.Error($"䏿¥å¤±è´¥ï¼å½åä»»å¡ä¸æ¯å åæºæ§è¡ä¸ï¼WCS䏿¥å®æå¤±è´¥ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | |
| | | |
| | | default: |
| | | WriteLog.Write_Log("WCS_å
¥åº_䏿¥å®æ", $"å åæºå®æ", $"失败ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"WCS䏿¥ç±»åé误ï¼{wcsTaskType}"); |
| | | return content.Error($"WCS䏿¥ç±»åé误ï¼{wcsTaskType}"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | WriteLog.Write_Log("WCS_å
¥åº_䏿¥å®æ", $"å åæºå®æ", $"失败,ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"WCSä»»å¡å®ææ¥å£æ
éï¼åå ï¼{ex.Message}"); |
| | | return content.Error($"WCSä»»å¡å®ææ¥å£æ
éï¼åå ï¼{ex.Message}"); |
| | | } |
| | | } |
| | |
| | | switch (wcsTaskType) |
| | | { |
| | | case 1: |
| | | if(task.TaskStatus == (int)OutTaskStatusEnum.PLC_OutExecuting || task.TaskStatus == (int)OutTaskStatusEnum.OutPLCException) |
| | | if (task.TaskStatus == (int)OutTaskStatusEnum.PLC_OutExecuting || task.TaskStatus == (int)OutTaskStatusEnum.OutPLCException) |
| | | { |
| | | string Resultplc = MesOutTaskStatusEnum.Finish.GetDescription(); |
| | | //䏿¥MESä»»å¡å®æ |
| | |
| | | { |
| | | task.TaskStatus = (int)OutTaskStatusEnum.PLC_OutFinish; |
| | | BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.èªå¨å®æ : OperateTypeEnum.äººå·¥å®æ); |
| | | |
| | | WriteLog.Write_Log("WCS_åºåº_䏿¥å®æ", $"è¾éçº¿å®æ",$"æå,ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"å·²æ¥æ¶åºåºè¾éçº¿å®æä¿¡æ¯"); |
| | | return content.OK($"å·²æ¥æ¶åºåºè¾éçº¿å®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | else |
| | | { |
| | | task.NumberSsuances = task.NumberSsuances + 1; |
| | | if (task.NumberSsuances == 3) |
| | | { |
| | | task.TaskStatus = (int)OutTaskStatusEnum.OutPLCException; |
| | | task.Remark = "åºåºï¼è¾é线ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg; |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | task.NumberSsuances =3; |
| | | task.TaskStatus = (int)OutTaskStatusEnum.OutPLCException; |
| | | task.Remark = "åºåºï¼è¾é线ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg; |
| | | BaseDal.UpdateData(task); |
| | | WriteLog.Write_Log("WCS_åºåº_䏿¥å®æ", $"è¾éçº¿å®æ", $"失败ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"ä¸ä¼ MES失败ï¼åå ï¼{mES_Parameter.ResultMsg}"); |
| | | return content.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg); |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | WriteLog.Write_Log("WCS_åºåº_䏿¥å®æ", $"è¾éçº¿å®æ", $"失败ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"䏿¥å¤±è´¥ï¼WMSå½åä»»å¡ä¸æ¯è¾é线æ§è¡ä¸ï¼WCS䏿¥å®æå¤±è´¥"); |
| | | return content.Error($"䏿¥å¤±è´¥ï¼WMSå½åä»»å¡ä¸æ¯è¾é线æ§è¡ä¸ï¼WCS䏿¥å®æå¤±è´¥ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | |
| | | |
| | | case 2: |
| | | |
| | | if (task.TaskStatus == (int)OutTaskStatusEnum.SC_OutExecuting || task.TaskStatus == (int)OutTaskStatusEnum.OutSCException) |
| | |
| | | _locationInfoService.UpdateData(dt_LocationInfo); |
| | | BaseDal.UpdateData(task); |
| | | _unitOfWorkManage.CommitTran(); |
| | | WriteLog.Write_Log("WCS_åºåº_䏿¥å®æ", $"å åæºå®æ",$"æåï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"å é¤çåºåï¼{dt_Stockowc.ToJson()},ä¿®æ¹çè´§ä½ï¼{dt_LocationInfo.ToJson()}"); |
| | | |
| | | return content.OK($"å·²æ¥æ¶åºåºå åæºå®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | else |
| | | { |
| | | task.NumberSsuances = task.NumberSsuances + 1; |
| | | if (task.NumberSsuances == 3) |
| | | { |
| | | task.TaskStatus = (int)OutTaskStatusEnum.OutSCException; |
| | | task.Remark = "å åæºåºåºï¼ä¸ä¼ MES失败ï¼åå ï¼" + mES_SCParameter.ResultMsg; |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | task.NumberSsuances = 3; |
| | | task.TaskStatus = (int)OutTaskStatusEnum.OutSCException; |
| | | task.Remark = "å åæºåºåºï¼ä¸ä¼ MES失败ï¼åå ï¼" + mES_SCParameter.ResultMsg; |
| | | BaseDal.UpdateData(task); |
| | | WriteLog.Write_Log("WCS_åºåº_䏿¥å®æ", $"å åæºå®æ", $"失败ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"ä¸ä¼ MES失败ï¼åå ï¼{mES_SCParameter.ResultMsg}"); |
| | | return content.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_SCParameter.ResultMsg); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteLog.Write_Log("WCS_åºåº_䏿¥å®æ", $"å åæºå®æ", $"失败,ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"䏿¥å¤±è´¥ï¼WMSå½åä»»å¡ä¸æ¯å åæºæ§è¡ä¸ï¼WCS䏿¥å®æå¤±è´¥"); |
| | | return content.Error($"䏿¥å¤±è´¥ï¼WMSå½åä»»å¡ä¸æ¯å åæºæ§è¡ä¸ï¼WCS䏿¥å®æå¤±è´¥ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | |
| | | |
| | | default: |
| | | WriteLog.Write_Log("WCS_åºåº_䏿¥å®æ", $"å åæºå®æ", $"失败ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"WCS䏿¥ç±»åé误ï¼{wcsTaskType}"); |
| | | return content.Error($"WCS䏿¥ç±»åé误ï¼{wcsTaskType}"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | WriteLog.Write_Log("WCS_åºåº_䏿¥å®æ", $"å åæºå®æ", $"失败ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"WCSä»»å¡å®ææ¥å£æ
éï¼åå ï¼{ex.Message}"); |
| | | return content.Error($"WCSä»»å¡å®ææ¥å£æ
éï¼åå ï¼{ex.Message}"); |
| | | } |
| | | } |
| | |
| | | { |
| | | if (wcsTaskType == 2) |
| | | { |
| | | if(task.TaskStatus == (int)RelocationTaskStatusEnum.RelocationExecuting) |
| | | if (task.TaskStatus == (int)RelocationTaskStatusEnum.RelocationExecuting) |
| | | { |
| | | //䏿¥MESä»»å¡å®æ |
| | | MES_parameter mES_Parameter = AbnormalStorageLocation(task.PalletCode, task.SourceAddress, task.TargetAddress); |
| | | if (mES_Parameter.Result == "Y") |
| | | { |
| | | Dt_Task dtOutWit=BaseDal.QueryData(x=>x.PalletCode==task.PalletCode && x.TaskStatus== (int)OutTaskStatusEnum.OutWait).FirstOrDefault(); |
| | | |
| | | Dt_LocationInfo OriginalLocation = _locationInfoService.Repository.QueryData(x => x.LocationCode == task.SourceAddress).FirstOrDefault(); |
| | | Dt_LocationInfo NewLocation = _locationInfoService.Repository.QueryData(x => x.LocationCode == task.TargetAddress).FirstOrDefault(); |
| | | Dt_StockInfo dt_StockInfo = _stockInfoService.Repository.QueryData(x => x.LocationCode == task.SourceAddress).FirstOrDefault(); |
| | |
| | | List<Dt_LocationInfo> dt_Locations = new List<Dt_LocationInfo>(); |
| | | |
| | | OriginalLocation.LocationStatus = (int)LocationStatusEnum.Free; |
| | | NewLocation.LocationStatus = (int)LocationStatusEnum.InStock; |
| | | NewLocation.LocationStatus = dtOutWit != null? (int)LocationStatusEnum.Lock:(int)LocationStatusEnum.InStock; |
| | | dt_StockInfo.LocationCode = NewLocation.LocationCode; |
| | | dt_StockInfo.StockStatus = (int)StockStatusEmun.å·²å
¥åº; |
| | | dt_StockInfo.StockStatus = dtOutWit != null? (int)StockStatusEmun.åºåºä¸:(int)StockStatusEmun.å·²å
¥åº; |
| | | task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationFinish; |
| | | |
| | | if(dtOutWit != null) |
| | | { |
| | | dtOutWit.TaskStatus = (int)OutTaskStatusEnum.OutNew; |
| | | dtOutWit.SourceAddress = NewLocation.LocationCode; |
| | | dtOutWit.CurrentAddress = NewLocation.LocationCode; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | dt_Locations.Add(OriginalLocation); |
| | | dt_Locations.Add(NewLocation); |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | | if(dtOutWit!=null) BaseDal.UpdateData(dtOutWit); |
| | | |
| | | _locationInfoService.UpdateData(dt_Locations); |
| | | _stockInfoService.UpdateData(dt_StockInfo); |
| | | BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.èªå¨å®æ : OperateTypeEnum.äººå·¥å®æ); |
| | | _unitOfWorkManage.CommitTran(); |
| | | |
| | | WriteLog.Write_Log("WCS_ç§»åº_䏿¥å®æ", $"å åæºå®æ", $"æå,ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"ä¿®æ¹çè´§ä½ï¼{dt_Locations.ToJson()},ä¿®æ¹çåºåï¼{dt_StockInfo.ToJson()}"); |
| | | return responseContent.OK($"å·²æ¥æ¶ç§»åºå åæºå®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | else |
| | | { |
| | | task.NumberSsuances = task.NumberSsuances + 1; |
| | | if (task.NumberSsuances == 3) |
| | | { |
| | | task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationException; |
| | | task.Remark = "ç§»åºï¼ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg; |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | task.NumberSsuances = 3; |
| | | task.TaskStatus = (int)RelocationTaskStatusEnum.RelocationException; |
| | | task.Remark = "ç§»åºï¼ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg; |
| | | BaseDal.UpdateData(task); |
| | | WriteLog.Write_Log("WCS_ç§»åº_䏿¥å®æ", $"å åæºå®æ", $"失败ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"ä¸ä¼ MES失败ï¼åå ï¼{mES_Parameter.ResultMsg}"); |
| | | return responseContent.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteLog.Write_Log("WCS_ç§»åº_䏿¥å®æ", $"å åæºå®æ", $"失败ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"䏿¥å¤±è´¥ï¼WMSå½åä»»å¡ä¸æ¯å åæºæ§è¡ä¸ï¼WCS䏿¥å®æå¤±è´¥"); |
| | | return responseContent.Error($"䏿¥å¤±è´¥ï¼WMSå½åä»»å¡ä¸æ¯å åæºæ§è¡ä¸ï¼WCS䏿¥å®æå¤±è´¥ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | |
| | | |
| | | } |
| | | else |
| | | { |
| | | WriteLog.Write_Log("WCS_ç§»åº_䏿¥å®æ", $"å åæºå®æ", $"失败ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"WCS䏿¥ç±»åé误ï¼{wcsTaskType}"); |
| | | return responseContent.Error($"WCS䏿¥ç±»åé误ï¼{wcsTaskType}"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | WriteLog.Write_Log("WCS_ç§»åº_䏿¥å®æ", $"å åæºå®æ", $"失败ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}", $"WCSä»»å¡å®ææ¥å£æ
éï¼åå ï¼{ex.Message}"); |
| | | return responseContent.Error($"WMSç³»ç»é误ï¼åå ï¼{ex.Message}"); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | |
| | | //ä»»å¡ä»»å¡æ¢å¤ |
| | | public WebResponseContent WMSTaskRecovery(SaveModel saveModel) |
| | | { |
| | | WebResponseContent response = new WebResponseContent(); |
| | | List<Dt_Task> dt_Task = new List<Dt_Task>(); |
| | | try |
| | | { |
| | | foreach (var key in saveModel.DelKeys) |
| | | { |
| | | int taskId = int.Parse(key.ToString()); |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == taskId); |
| | | if (task == null) |
| | | return response.Error("æªæ¾å°ä»»å¡ä¿¡æ¯"); |
| | | task.NumberSsuances = 0; |
| | | task.Remark = ""; |
| | | dt_Task.Add(task); |
| | | } |
| | | bool updatetask= BaseDal.UpdateData(dt_Task); |
| | | if (updatetask) |
| | | { |
| | | WriteLog.Write_Log("WMS_任塿¢å¤", $"WMS_任塿¢å¤", "ä¿®æ¹æå", $"ä¿®æ¹çæ°æ®ï¼{dt_Task.ToJson()}"); |
| | | return response.OK("ææä»»å¡å¤çæå"); |
| | | } |
| | | else |
| | | { |
| | | WriteLog.Write_Log("WMS_任塿¢å¤", $"WMS_任塿¢å¤", "ä¿®æ¹å¤±è´¥", $"ä¿®æ¹çæ°æ®ï¼{dt_Task.ToJson()}"); |
| | | return response.Error("å¤ç失败ï¼ä¿®æ¹ä»»å¡å¤±è´¥"); |
| | | } |
| | | |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteLog.Write_Log("WMS_任塿¢å¤", $"WMS_任塿¢å¤", "ä¿®æ¹å¤±è´¥", $"ä¿®æ¹çæ°æ®ï¼{dt_Task.ToJson()}ï¼å¤±è´¥åå ï¼{ex.Message}"); |
| | | return response.Error($"WMS任塿¢å¤é误ï¼{ex.Message}"); |
| | | } |
| | | } |
| | | |
| | | |
| | | public virtual WebResponseContent UpdateData(SaveModel saveModel) |
| | | { |
| | | try |
| | | { |
| | | List<string>? list = UpdateIgnoreColOnExecute?.Invoke(saveModel); |
| | | if (saveModel == null || saveModel.MainData == null || saveModel.MainData.Count == 0)//夿忰æ¯å¦ä¼ å
¥ |
| | | { |
| | | return WebResponseContent.Instance.Error("ä¼ åé误,åæ°ä¸è½ä¸ºç©º"); |
| | | } |
| | | string validResult = typeof(Dt_Task).ValidateDicInEntity(saveModel.MainData, false, TProperties, list?.ToArray() ?? null); |
| | | |
| | | if (!string.IsNullOrEmpty(validResult)) |
| | | { |
| | | return WebResponseContent.Instance.Error(validResult); |
| | | } |
| | | |
| | | PropertyInfo keyPro = typeof(Dt_Task).GetKeyProperty(); |
| | | if (keyPro == null) |
| | | { |
| | | return WebResponseContent.Instance.Error("请å
设置主é®"); |
| | | } |
| | | |
| | | Dt_Task entity = saveModel.MainData.DicToModel<Dt_Task>(); |
| | | Dt_Task Dt_Custask= BaseDal.QueryFirst(x=>x.TaskId==entity.TaskId); |
| | | |
| | | List<string> listCol = new List<string>(); |
| | | foreach (var item in saveModel.MainData) |
| | | { |
| | | PropertyInfo? propertyInfo = typeof(Dt_Task).GetProperty(item.Key); |
| | | if (propertyInfo == null) |
| | | { |
| | | propertyInfo = typeof(Dt_Task).GetProperty(item.Key.FirstLetterToLower()); |
| | | if (propertyInfo == null) |
| | | { |
| | | propertyInfo = typeof(Dt_Task).GetProperty(item.Key.FirstLetterToUpper()); |
| | | } |
| | | } |
| | | |
| | | listCol.Add(propertyInfo?.Name); |
| | | } |
| | | |
| | | if (saveModel.DetailData == null || saveModel.DetailData.Count == 0) |
| | | { |
| | | if (list != null) |
| | | listCol = listCol.Where(x => !list.Contains(x)).ToList(); |
| | | bool result = BaseDal.UpdateData(entity, listCol, list); |
| | | WriteLog.Write_Log("WMS_ä»»å¡ä¿®æ¹", $"ä»»å¡ä¿®æ¹", $"ä»»å¡ç¼å·:{entity.TaskId},æçæ¡ç ï¼{entity.PalletCode},æ¯å¦æåï¼{result}", $"åæ¥æ°æ®ï¼{Dt_Custask.ToJson()}======>>>>>>ä¿®æ¹åçæ°æ®ï¼{entity.ToJson()}"); |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | |
| | | if (typeof(Dt_Task).GetNavigatePro() == null) |
| | | { |
| | | return WebResponseContent.Instance.Error("æªé
置导èªå±æ§"); |
| | | } |
| | | |
| | | Type detailType = typeof(Dt_Task).GetDetailType(); |
| | | MethodInfo? methodInfo = GetType().GetMethod("UpdateDataInculdesDetail"); |
| | | methodInfo = methodInfo?.MakeGenericMethod(new Type[] { detailType }); |
| | | object? obj = methodInfo?.Invoke(this, new object[] { entity, detailType, saveModel.DetailData, saveModel.DelKeys }); |
| | | return obj as WebResponseContent; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | //ä»»å¡è·å |
| | | public List<Dt_Task> GetaskQueue(string deviceId) |
| | | { |
| | | return BaseDal.QueryData(x => x.Roadway == deviceId && (x.TaskStatus == (int)InTaskStatusEnum.PLC_InFinish || x.TaskStatus == (int)OutTaskStatusEnum.OutNew) && x.NumberSsuances==0); |
| | | } |
| | | |
| | | //è·åå½åå åæºæ§è¡çä»»å¡ |
| | | public bool CurrentTaskProgress(string deviceId) |
| | | { |
| | | int taskcount=BaseDal.QueryData(x => x.Roadway == deviceId && (x.TaskStatus == (int)InTaskStatusEnum.SC_IntExecuting || x.TaskStatus == (int)OutTaskStatusEnum.SC_OutExecuting || x.TaskStatus == (int)RelocationTaskStatusEnum.RelocationExecuting)).Count(); |
| | | if (taskcount == 0) return false; |
| | | return true; |
| | | } |
| | | |
| | | //è·åå åæºå®æï¼ä¸åè¾é线çä»»å¡ |
| | | public static List<string> OutSCList = new List<string>() { "1109", "1105", "1210", "1212", "1214" }; |
| | | public List<Dt_Task> GetaskQueuePLC() |
| | | { |
| | | return BaseDal.QueryData(x => x.TaskStatus == (int)OutTaskStatusEnum.SC_OutFinish && OutSCList.Contains(x.CurrentAddress)); |
| | | } |
| | | |
| | | //è·åæ¯å¦æç§»åºçä»»å¡ |
| | | public Dt_Task GeRelocationTaskQueue(string LocationCode) |
| | | { |
| | | return BaseDal.QueryData(x => x.TaskStatus == (int)RelocationTaskStatusEnum.RelocationNew && x.CurrentAddress == LocationCode).FirstOrDefault(); |
| | | } |
| | | |
| | | public Dt_Task GeOutCuTaskQueue(string LocationCode) |
| | | { |
| | | return BaseDal.QueryData(x => x.TaskStatus == (int)OutTaskStatusEnum.OutNew && x.SourceAddress == LocationCode).FirstOrDefault(); |
| | | } |
| | | |
| | | public bool RelocationTaskProgress(string deviceId) |
| | | { |
| | | int taskcount = BaseDal.QueryData(x => x.Roadway == deviceId && (x.TaskStatus == (int)RelocationTaskStatusEnum.RelocationExecuting || x.TaskStatus == (int)RelocationTaskStatusEnum.RelocationNew) ).Count(); |
| | | if (taskcount == 0) return false; |
| | | return true; |
| | | } |
| | | |
| | | //ä»åºå®¹éç¶æ |
| | | public WebResponseContent GetWarehouseCapacity() |
| | | { |
| | | return _locationInfoService.GetWarehouseCapacity(); |
| | | } |
| | | |
| | | //åºå
¥åºç±»ååå¸ |
| | | public WebResponseContent GetInOutTypeStats() |
| | | { |
| | | return _task_HtyService.GetInOutTypeStats(); |
| | | } |
| | | //æµéæ
åµç»è®¡ |
| | | |
| | | public WebResponseContent GetTodayTrafficStats() |
| | | { |
| | | return _task_HtyService.GetTodayInOutStats(); |
| | | } |
| | | //å½åè¿è¡çä»»å¡ |
| | | public WebResponseContent GetCurrentTasks() |
| | | { |
| | | // æ¥è¯¢æä»¥è¿åTaskNumï¼TaskTypeï¼CreateDateï¼TaskStatusï¼ |
| | | var tasks = BaseDal.QueryData() |
| | | .Select(t => new |
| | | { |
| | | WarehouseId = t.Roadway == "1" || t.Roadway == "2" ? 1 : 2, |
| | | PalletType = t.PalletType, |
| | | TaskNum = t.TaskId, |
| | | TaskType = t.TaskType, |
| | | CreateDate = t.CreateDate, |
| | | TaskStatus = t.TaskStatus, |
| | | TargetAddress = t.TargetAddress |
| | | }) |
| | | .ToList(); |
| | | return WebResponseContent.Instance.OK("æå", tasks); |
| | | } |
| | | //æ»ä½è¿åº¦ |
| | | public WebResponseContent GetWarehouseOperationStatistics() |
| | | { |
| | | /// <summary> |
| | | /// åæä»ï¼æ»åºå
¥åºä»»å¡æ°éï¼ä»æ¥å
¥åºï¼ä»æ¥åºåºï¼ä»æ¥å¾
宿ï¼ä»æ¥å¼å¸¸ä»»å¡ï¼æåä»ï¼æ»åºå
¥åºæ°éï¼ä»æ¥å
¥åºï¼ä»æ¥åºåºï¼ä»æ¥å¾
宿 |
| | | /// </summary> |
| | | return _task_HtyService.GetWarehouseOperationStatistics(); |
| | | } |
| | | |
| | | public WebResponseContent GetTaskDestination(string targetAddress) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | // åæ°æ ¡éª |
| | | if (string.IsNullOrWhiteSpace(targetAddress)) |
| | | { |
| | | return content.Error("ç®æ å°åä¸è½ä¸ºç©º"); |
| | | } |
| | | try |
| | | { |
| | | // æ¥è¯¢æ°æ® |
| | | var queryResult = BaseDal.QueryData(x => x.TargetAddress == targetAddress); |
| | | // 夿æ¥è¯¢ç»æ |
| | | if (queryResult == null || !queryResult.Any()) |
| | | { |
| | | return content.Error($"æªæ¾å°ç®æ å°å为[{targetAddress}]çä»»å¡"); |
| | | } |
| | | return content.OK($"æç®æ å°å为[{targetAddress}]çä»»å¡ï¼è¯·æ¦æª"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error($"è·åä»»å¡ç®çå°å¤±è´¥: {ex.Message}"); |
| | | } |
| | | } |
| | | } |
| | | } |