| | |
| | | #endregion << ç æ¬ 注 é >> |
| | | |
| | | using AutoMapper; |
| | | using Newtonsoft.Json; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; |
| | | using SqlSugar; |
| | | using System; |
| | |
| | | using System.Diagnostics.CodeAnalysis; |
| | | using System.Linq; |
| | | using System.Reflection; |
| | | using System.Security.Policy; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_Common.Http; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.BaseRepository; |
| | | using WIDESEAWCS_Core.BaseServices; |
| | | using WIDESEAWCS_Core.Enums; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_DTO.TaskInfo; |
| | | using WIDESEAWCS_ITaskInfoRepository; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | |
| | | private readonly IRouterService _routerService; |
| | | private readonly ITaskExecuteDetailService _taskExecuteDetailService; |
| | | private readonly ITaskExecuteDetailRepository _taskExecuteDetailRepository; |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | private readonly IMapper _mapper; |
| | | |
| | | private Dictionary<string, OrderByType> _taskOrderBy = new() |
| | |
| | | public List<int> TaskInboundTypes => typeof(TaskInboundTypeEnum).GetEnumIndexList(); |
| | | |
| | | public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList(); |
| | | |
| | | public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper) : base(BaseDal) |
| | | public string url = AppSettings.Configuration["WMS"]; |
| | | public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) |
| | | { |
| | | _routerService = routerService; |
| | | _taskExecuteDetailService = taskExecuteDetailService; |
| | | _taskExecuteDetailRepository = taskExecuteDetailRepository; |
| | | _mapper = mapper; |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¥æ¶WMSä»»å¡ä¿¡æ¯ |
| | | /// </summary> |
| | |
| | | List<Dt_Task> tasks = new List<Dt_Task>(); |
| | | foreach (var item in taskDTOs) |
| | | { |
| | | if (BaseDal.QueryFirst(x => x.TaskNum == item.TaskNum || x.PalletCode == item.PalletCode) != null) |
| | | Dt_Task tasktemp = BaseDal.QueryFirst(x => x.TaskNum == item.TaskNum || x.PalletCode == item.PalletCode); |
| | | if (tasktemp != null) |
| | | { |
| | | continue; |
| | | if (tasktemp.TaskState != (int)TaskInStatusEnum.InFinish && tasktemp.TaskState != (int)TaskOutStatusEnum.OutFinish) |
| | | { |
| | | continue; |
| | | } |
| | | } |
| | | Dt_Task task = _mapper.Map<Dt_Task>(item); |
| | | task.Creater = "WMS"; |
| | | if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) |
| | | if(item.TaskType==(int)TaskOutboundTypeEnum.OutInventory) |
| | | { |
| | | List<Dt_Router> routers = _routerService.QueryNextRoutes(item.RoadWay, item.TargetAddress); |
| | | //æä¸èèå¤è·¯å¾ |
| | | if (routers.Count > 0) |
| | | { |
| | | task.TaskState = (int)TaskOutStatusEnum.OutNew; |
| | | task.CurrentAddress = item.SourceAddress; |
| | | task.NextAddress = routers.FirstOrDefault().ChildPosi; |
| | | } |
| | | task.TaskType=(int)TaskOutboundTypeEnum.OutInventory; |
| | | task.TaskState=(int)TaskOutStatusEnum.OutNew; |
| | | |
| | | } |
| | | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) |
| | | else if (item.TaskType == (int)TaskOutboundTypeEnum.Outbound) |
| | | { |
| | | List<Dt_Router> routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress); |
| | | //æä¸èèå¤è·¯å¾ |
| | | if (routers.Count > 0) |
| | | { |
| | | task.TaskState = (int)TaskInStatusEnum.InNew; |
| | | task.CurrentAddress = item.SourceAddress; |
| | | task.NextAddress = routers.FirstOrDefault().ChildPosi; |
| | | } |
| | | task.TaskType = (int)TaskOutboundTypeEnum.Outbound; |
| | | task.TaskState = (int)TaskOutStatusEnum.OutNew; |
| | | } |
| | | else if (item.TaskType == (int)TaskInboundTypeEnum.Inbound) |
| | | { |
| | | task.TaskType = (int)TaskInboundTypeEnum.Inbound; |
| | | task.TaskState = (int)TaskInStatusEnum.InNew; |
| | | } |
| | | else if (item.TaskType == (int)TaskInboundTypeEnum.InInventory) |
| | | { |
| | | task.TaskType = (int)TaskInboundTypeEnum.InInventory; |
| | | task.TaskState = (int)TaskInStatusEnum.InNew; |
| | | } |
| | | else if (item.TaskType == (int)TaskInboundTypeEnum.InPick) |
| | | { |
| | | task.TaskType = (int)TaskInboundTypeEnum.InPick; |
| | | task.TaskState = (int)TaskInStatusEnum.InNew; |
| | | } |
| | | tasks.Add(task); |
| | | } |
| | |
| | | /// <param name="deviceNo">设å¤ç¼å·</param> |
| | | /// <param name="currentAddress">å½åå°å</param> |
| | | /// <returns>è¿åä»»å¡å®ä½å¯¹è±¡ï¼å¯è½ä¸ºnull</returns> |
| | | public Dt_Task QueryStackerCraneTask(string deviceNo, string currentAddress = "") |
| | | public Dt_Task QueryStackerCraneTask(string deviceNo) |
| | | { |
| | | return BaseDal.QueryFirst(x => x.Roadway == deviceNo && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew ), TaskOrderBy); |
| | | } |
| | |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); |
| | | if (task == null) return WebResponseContent.Instance.Error($"æªæ¾å°è¯¥ä»»å¡ä¿¡æ¯,ä»»å¡å·:ã{taskNum}ã"); |
| | | |
| | | if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting) |
| | | task.ModifyDate = DateTime.Now; |
| | | task.Modifier = "WMS"; |
| | | if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound || task.TaskType == (int)TaskOutboundTypeEnum.OutInventory) |
| | | { |
| | | UpdateTaskStatus(task.TaskId, (int)TaskOutStatusEnum.SC_OutFinish); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"å åæºåºåºå®æ"); |
| | | try |
| | | { |
| | | _unitOfWorkManage.BeginTran(); |
| | | UpdateTaskStatus(task.TaskId, (int)TaskOutStatusEnum.SC_OutFinish); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"å åæºåºåºå®æ"); |
| | | HttpHelpers.Post<WebResponseContent>(url.Replace("PDA", "Task") + "UpdateTaskStatus?taskNum=" + task.TaskNum, "", "æ´æ°ä»»å¡ç¶æ"); |
| | | _unitOfWorkManage.CommitTran(); |
| | | return content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return content = WebResponseContent.Instance.Error(ex.Message); |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting) |
| | | else if (task.TaskType == (int)TaskInboundTypeEnum.Inbound || task.TaskType == (int)TaskInboundTypeEnum.InInventory || task.TaskType == (int)TaskInboundTypeEnum.InPick) |
| | | { |
| | | _unitOfWorkManage.BeginTran(); |
| | | UpdateTaskStatus(task.TaskId, (int)TaskInStatusEnum.SC_InFinish); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"å åæºå
¥åºå®æ"); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"å åæºå
¥åºå®æ"); |
| | | HttpHelpers.Post<WebResponseContent>(url.Replace("PDA", "Task") + "UpdateTaskStatus?taskNum=" + task.TaskNum, "", "æ´æ°ä»»å¡ç¶æ"); |
| | | UpdateTaskStatus(task.TaskId, (int)TaskInStatusEnum.InFinish); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"å
¥åºä»»å¡å®æ"); |
| | | } |
| | | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) |
| | | { |
| | | //todo è°ç¨WMSç§»åºå®æ |
| | | } |
| | | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OtherGroup) |
| | | { |
| | | |
| | | //if (App.User.UserId > 0) |
| | | //{ |
| | | task.Modifier = "System"; |
| | | var response = HttpHelpers.Post<WebResponseContent>(url.Replace("PDA", "Task") + "TaskCompleted?taskNum=" + task.TaskNum, "", "ä»»å¡å®æ"); |
| | | if (response.Status) |
| | | { |
| | | _unitOfWorkManage.CommitTran(); |
| | | return content.OK(); |
| | | } |
| | | else |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return content = WebResponseContent.Instance.Error(response.Message); |
| | | } |
| | | //} |
| | | //_unitOfWorkManage.CommitTran(); |
| | | //return content.OK(); |
| | | } |
| | | else |
| | | { |
| | | throw new Exception($"ä»»å¡ç±»åé误,æªæ¾å°è¯¥ä»»å¡ç±»å,ä»»å¡å·:ã{taskNum}ã,ä»»å¡ç±»å:ã{task.TaskType}ã"); |
| | | } |
| | | content = WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content = WebResponseContent.Instance.Error($"ä»»å¡å®æå¼å¸¸,ä»»å¡å·:ã{taskNum}ã"); |
| | | _unitOfWorkManage.RollbackTran(); |
| | | content = WebResponseContent.Instance.Error($"ä»»å¡å®æå¼å¸¸,ä»»å¡å·:ã{taskNum}ã,å¼å¸¸ä¿¡æ¯ï¼{ex.Message}"); |
| | | } |
| | | finally |
| | | { |
| | | // WriteLog.GetLog("宿任å¡").Write($"æä½äººï¼{(App.User.UserId > 0 ? App.User.UserName : "")}{Environment.NewLine}ä»»å¡å·ï¼{taskNum}{Environment.NewLine}{JsonConvert.SerializeObject(content)}", "宿任å¡"); |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | |
| | | |
| | | public WebResponseContent GenerateEmptyInBoundTask(string palletCode) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | var response = HttpHelpers.Post<WebResponseContent>(url + "EmptyInBound?PalletCode=" + palletCode, "", "请æ±çæç©ºæå
¥åºä»»å¡"); |
| | | if (response.Status) |
| | | { |
| | | return content.OK(); |
| | | } |
| | | else |
| | | { |
| | | return content = WebResponseContent.Instance.Error(response.Message); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content = WebResponseContent.Instance.Error($"请æ±çæç©ºæå
¥åºä»»å¡,æçå·:ã{palletCode}ã,å¼å¸¸ä¿¡æ¯ï¼{ex.Message}"); |
| | | } |
| | | |
| | | return content; |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// åºåºå®æè°ç¨WMSåºåºå®ææ¥å£ |
| | | /// </summary> |
| | | /// <param name="palletCode"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent OutBoundTaskByWMS(int taskNum) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | var response = HttpHelpers.Post<WebResponseContent>(url.Replace("PDA", "Task") + "TaskCompleted?taskNum=" + taskNum, "", "ä»»å¡å®æ"); |
| | | if (response.Status) |
| | | { |
| | | _unitOfWorkManage.CommitTran(); |
| | | return content.OK(); |
| | | } |
| | | else |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return content = WebResponseContent.Instance.Error(response.Message); |
| | | } |
| | | } |
| | | |
| | | public WebResponseContent GenerateEmptyOutBoundTask() |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | var response = HttpHelpers.Post<WebResponseContent>(url + "EmptyOutBound", "", "请æ±çæç©ºæåºåºä»»å¡"); |
| | | if (response.Status) |
| | | { |
| | | return content.OK(); |
| | | } |
| | | else |
| | | { |
| | | return content = WebResponseContent.Instance.Error(response.Message); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content = WebResponseContent.Instance.Error($"请æ±çæç©ºæåºåºä»»å¡,å¼å¸¸ä¿¡æ¯ï¼{ex.Message}"); |
| | | } |
| | | |
| | | return content; |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¢å¤æèµ·ä»»å¡ |
| | | /// </summary> |