| | |
| | | |
| | | using AutoMapper; |
| | | using SqlSugar; |
| | | using System.Net; |
| | | using System.Reflection; |
| | | using WIDESEA_Common.LocationEnum; |
| | | using WIDESEA_Common.OtherEnum; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Common.TaskEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_DTO.Inbound; |
| | | using WIDESEA_DTO.Task; |
| | | using WIDESEA_IBasicService; |
| | | using WIDESEA_IInboundService; |
| | |
| | | |
| | | public List<int> TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList(); |
| | | |
| | | public TaskService(IRepository<Dt_Task> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) |
| | | public TaskService(IRepository<Dt_Task> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockInfoService stockInfoService, ILocationInfoService locationInfoService, |
| | | IWarehouseService warehouseService, IRoadWayinfoService roadWayinfoService) : base(BaseDal) |
| | | { |
| | | _mapper = mapper; |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | _stockInfoService = stockInfoService; |
| | | _locationInfoService = locationInfoService; |
| | | _warehouseService = warehouseService; |
| | | _roadWayinfoService=roadWayinfoService; |
| | | |
| | | } |
| | | public string MES_InReporttask = WIDESEA_Core.Helper.AppSettings.Configuration["MES_InReporttask"]; //å
¥åºåé¦ä¿¡æ¯ |
| | | public string MES_OutReporttask = WIDESEA_Core.Helper.AppSettings.Configuration["MES_OutReporttask"]; //åºåºåé¦ä¿¡æ¯ |
| | |
| | | /// <returns></returns> |
| | | public WebResponseContent TaskCompleted(WCSTaskDTO wCSTask) |
| | | { |
| | | WebResponseContent webResponse= new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == wCSTask.TaskNum && x.PalletCode == wCSTask.PalletCode); |
| | | if (task == null) |
| | | return WebResponseContent.Instance.Error("æªæ¾å°ä»»å¡ä¿¡æ¯"); |
| | | return webResponse.Error("æªæ¾å°ä»»å¡ä¿¡æ¯"); |
| | | |
| | | switch ((TaskTypeEnum)task.TaskType) |
| | | { |
| | |
| | | case TaskTypeEnum.Relocation: |
| | | return HandleRelocationTask(task, wCSTask.TaskType); |
| | | default: |
| | | return WebResponseContent.Instance.Error($"ä»»å¡ç±»åé误ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode},ç±»åï¼{task.TaskType}"); |
| | | return webResponse.Error($"ä»»å¡ç±»åé误ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode},ç±»åï¼{task.TaskType}"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return WebResponseContent.Instance.Error($"WMSä»»å¡å®æé误ï¼{ex.Message}"); |
| | | return webResponse.Error($"WMSä»»å¡å®æé误ï¼{ex.Message}"); |
| | | } |
| | | } |
| | | |
| | | private WebResponseContent HandleInboundTask(Dt_Task task, int wcsTaskType) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | switch (wcsTaskType) |
| | | { |
| | | case 1: |
| | | task.TaskStatus = (int)InTaskStatusEnum.PLC_InFinish; |
| | | int loctype = 0; |
| | | if (task.Roadway == "1" || task.Roadway == "2") |
| | | { |
| | | if(task.PalletType=="1") loctype = (int)LocationTypeEnum.SmallPallet; |
| | | else if(task.PalletType=="2") loctype = (int)LocationTypeEnum.MediumPallet; |
| | | } |
| | | else |
| | | { |
| | | loctype = (int)LocationTypeEnum.LargePallet; |
| | | } |
| | | //æ¥æ¾è´§ä½ï¼æ´æ°ä»»å¡ |
| | | Dt_LocationInfo dt_Location=_locationInfoService.GetLocation(task.Roadway, loctype); |
| | | 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}"); |
| | | |
| | | task.TargetAddress = dt_Location.LocationCode; |
| | | task.CurrentAddress = task.NextAddress; |
| | | task.NextAddress= dt_Location.LocationCode; |
| | | task.TaskStatus = (int)InTaskStatusEnum.PLC_InFinish; |
| | | dt_Location.LocationStatus = (int)LocationStatusEnum.Lock; |
| | | |
| | | _locationInfoService.UpdateData(dt_Location); |
| | | BaseDal.UpdateData(task); |
| | | return WebResponseContent.Instance.OK($"å·²æ¥æ¶å
¥åºè¾éçº¿å®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | return content.OK($"å·²æ¥æ¶å
¥åºè¾éçº¿å®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | |
| | | |
| | | case 2: |
| | | task.TaskStatus = (int)InTaskStatusEnum.SC_OutFinish; |
| | | BaseDal.UpdateData(task); |
| | | return WebResponseContent.Instance.OK($"å·²æ¥æ¶å
¥åºå åæºå®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | //䏿¥MESä»»å¡å®æ |
| | | MES_parameter mES_Parameter = InStoreDocCallback(task.TaskNum, "Finish", "æä½æå", task.PalletCode, task.TargetAddress); |
| | | if (mES_Parameter.Result == "Y") |
| | | { |
| | | |
| | | task.TaskStatus = (int)InTaskStatusEnum.SC_OutFinish; |
| | | BaseDal.DeleteData(task); |
| | | return content.OK($"å·²æ¥æ¶å
¥åºå åæºå®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg); |
| | | } |
| | | default: |
| | | return WebResponseContent.Instance.Error($"WCS䏿¥ç±»åé误ï¼{wcsTaskType}"); |
| | | } |
| | |
| | | |
| | | private WebResponseContent HandleOutboundTask(Dt_Task task, int wcsTaskType) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | switch (wcsTaskType) |
| | | { |
| | | case 1: |
| | | task.TaskStatus = (int)OutTaskStatusEnum.PLC_OutFinish; |
| | | BaseDal.UpdateData(task); |
| | | return WebResponseContent.Instance.OK($"å·²æ¥æ¶åºåºè¾éçº¿å®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | //䏿¥MESä»»å¡å®æ |
| | | MES_parameter mES_Parameter = OutStoreDocCallback(task.TaskNum, "Finish", "æä½æå"); |
| | | if (mES_Parameter.Result == "Y") |
| | | { |
| | | task.TaskStatus = (int)OutTaskStatusEnum.PLC_OutFinish; |
| | | BaseDal.DeleteData(task); |
| | | return content.OK($"å·²æ¥æ¶åºåºè¾éçº¿å®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | } |
| | | else |
| | | { |
| | | return content.Error("ä¸ä¼ MES失败ï¼åå ï¼" + mES_Parameter.ResultMsg); |
| | | } |
| | | case 2: |
| | | //è·å对åºPLCç«å°ä¿¡æ¯ |
| | | Dt_roadwayinfo _Roadwayinfo = _roadWayinfoService.QbtainPlatform(task.Roadway); |
| | | task.CurrentAddress = _Roadwayinfo.OutStationCode; |
| | | task.NextAddress = task.TargetAddress; |
| | | task.TaskStatus = (int)OutTaskStatusEnum.SC_OutFinish; |
| | | BaseDal.UpdateData(task); |
| | | return WebResponseContent.Instance.OK($"å·²æ¥æ¶åºåºå åæºå®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | return content.OK($"å·²æ¥æ¶åºåºå åæºå®æä¿¡æ¯ï¼ä»»å¡å·ï¼{task.TaskId},æçç¼å·ï¼{task.PalletCode}"); |
| | | default: |
| | | return WebResponseContent.Instance.Error($"WCS䏿¥ç±»åé误ï¼{wcsTaskType}"); |
| | | return content.Error($"WCS䏿¥ç±»åé误ï¼{wcsTaskType}"); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | return WebResponseContent.Instance.Error($"WCS䏿¥ç±»åé误ï¼{wcsTaskType}"); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |