| | |
| | | #endregion << ç æ¬ 注 é >> |
| | | |
| | | using AutoMapper; |
| | | using Magicodes.ExporterAndImporter.Core; |
| | | using Microsoft.AspNetCore.Mvc.RazorPages; |
| | | using NetTaste; |
| | | using Mapster; |
| | | using Newtonsoft.Json; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Diagnostics; |
| | | using System.Diagnostics.CodeAnalysis; |
| | | using System.Linq; |
| | | using System.Linq.Expressions; |
| | | using System.Reflection; |
| | | using System.Reflection.Metadata; |
| | | using System.Security.Policy; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using System.Xml.Linq; |
| | | using WIDESEA_Comm.Http; |
| | | using WIDESEA_Common.Log; |
| | | using WIDESEAWCS_Common; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.BaseServices; |
| | | using WIDESEAWCS_Core.Enums; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_Core.Utilities; |
| | | using WIDESEAWCS_DTO.Enum; |
| | | using WIDESEAWCS_DTO.TaskInfo; |
| | | using WIDESEAWCS_IBasicInfoRepository; |
| | | using WIDESEAWCS_IBasicInfoService; |
| | | using WIDESEAWCS_ISystemServices; |
| | | using WIDESEAWCS_ITaskInfoRepository; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Model.BasicInfo; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_QuartzJob.DeviceBase; |
| | | using WIDESEAWCS_QuartzJob.Models; |
| | | using WIDESEAWCS_QuartzJob.Service; |
| | | using WIDESEAWCS_TaskInfoRepository; |
| | | using static Microsoft.IO.RecyclableMemoryStreamManager; |
| | | |
| | | namespace WIDESEAWCS_TaskInfoService |
| | | { |
| | |
| | | private readonly ITaskExecuteDetailRepository _taskExecuteDetailRepository; |
| | | private readonly ITask_HtyService _taskHtyService; |
| | | private readonly ITask_HtyRepository _taskHtyRepository; |
| | | private readonly ISys_ConfigService _sys_ConfigService; |
| | | private readonly IMapper _mapper; |
| | | private readonly IDt_StationManagerRepository _stationManagerRepository; |
| | | |
| | |
| | | public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList(); |
| | | public List<int> TaskRelocationboundTypes => typeof(TaskRelocationTypeEnum).GetEnumIndexList(); |
| | | |
| | | public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ITask_HtyService taskHtyService, IDt_StationManagerRepository stationManagerRepository, ITask_HtyRepository taskHtyRepository) : base(BaseDal) |
| | | public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ITask_HtyService taskHtyService, ISys_ConfigService sys_ConfigService, IDt_StationManagerRepository stationManagerRepository, ITask_HtyRepository taskHtyRepository) : base(BaseDal) |
| | | { |
| | | _routerService = routerService; |
| | | _taskExecuteDetailService = taskExecuteDetailService; |
| | |
| | | _mapper = mapper; |
| | | _stationManagerRepository = stationManagerRepository; |
| | | _taskHtyRepository = taskHtyRepository; |
| | | _mapper = mapper; |
| | | _sys_ConfigService = sys_ConfigService; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | // éåä¼ å
¥çWMSTaskDTOå表 |
| | | foreach (var item in taskDTOs) |
| | | { |
| | | // æ¥è¯¢æ°æ®åºä¸æ¯å¦åå¨ç¸åä»»å¡ç¼å·ææçç çä»»å¡ï¼å¦æåå¨åè·³è¿å½åå¾ªç¯ |
| | | if (BaseDal.QueryFirst(x => x.TaskNum == item.TaskId || x.PalletCode == item.TPbarcode) != null) |
| | | |
| | | var task = BaseDal.QueryFirst(x => x.WMSTaskNum == item.TaskId || x.PalletCode == item.TPbarcode); |
| | | if (task != null) |
| | | { |
| | | continue; |
| | | task.Creater = "WMS"; |
| | | task.Grade = 1; |
| | | task.PalletCode = item.TPbarcode; |
| | | } |
| | | // å°WMSTaskDTO对象æ å°ä¸ºDt_Task对象 |
| | | Dt_Task task = _mapper.Map<Dt_Task>(item); |
| | | // 设置任å¡çå建è
为"WMS" |
| | | task.Creater = "WMS"; |
| | | task.Grade = 1; // 设置é»è®¤ä¼å
级为1 |
| | | |
| | | // 夿任å¡ç±»åæ¯å¦ä¸ºåºåºä»»å¡ |
| | | if (item.TaskType == "2") |
| | | { |
| | | task.TaskType = (int)TaskOutboundTypeEnum.Outbound; |
| | | List<Dt_Router> routers = _routerService.QueryNextRoutes(item.WhCode, item.EndPoint); |
| | | if (routers.Count > 0) |
| | | string[] targetCodes = item.BeginPoint.Split("-"); |
| | | Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == GetScCode(Convert.ToInt32(targetCodes[0])) && x.stationType == 2); |
| | | Dt_Task taskOut = new Dt_Task() |
| | | { |
| | | // 设置任å¡ç¶æä¸ºåºåºæ°å»º |
| | | task.TaskState = (int)TaskOutStatusEnum.OutNew; |
| | | // 设置å½åå°å为æºå°å |
| | | task.CurrentAddress = item.BeginPoint; |
| | | // 设置ä¸ä¸ä¸ªå°å为第ä¸ä¸ªåä½ç½® |
| | | task.NextAddress = routers.FirstOrDefault().ChildPosi; |
| | | } |
| | | else |
| | | { |
| | | // æ¥è¯¢ä»æºå°åå°ç®æ å°åçè·¯ç± |
| | | routers = _routerService.QueryNextRoutes(item.BeginPoint, item.EndPoint); |
| | | if (routers.Count > 0) |
| | | { |
| | | // 设置任å¡ç¶æä¸ºåºåºå®æ |
| | | task.TaskState = (int)TaskOutStatusEnum.SC_OutFinish; |
| | | // 设置å½åå°å为æºå°å |
| | | task.CurrentAddress = item.BeginPoint; |
| | | // 设置ä¸ä¸ä¸ªå°å为第ä¸ä¸ªåä½ç½® |
| | | task.NextAddress = routers.FirstOrDefault().ChildPosi; |
| | | } |
| | | } |
| | | }// 夿任å¡ç±»åæ¯å¦ä¸ºå
¥åºä»»å¡ |
| | | TaskNum = BaseDal.GetTaskNo().Result, |
| | | Creater = "WMS", |
| | | WMSTaskNum=item.TaskId, |
| | | Grade = 1, |
| | | PalletCode = item.TPbarcode, |
| | | TaskType = (int)TaskOutboundTypeEnum.Outbound, |
| | | TaskState = (int)TaskOutStatusEnum.OutNew, |
| | | SourceAddress = item.BeginPoint, |
| | | CurrentAddress = item.BeginPoint, |
| | | Roadway = GetScCode(Convert.ToInt32(targetCodes[0])), |
| | | NextAddress = stationManager.stationChildCode, |
| | | TargetAddress = item.EndPoint, |
| | | RGVName = "RGV01" |
| | | }; |
| | | BaseDal.AddData(taskOut); |
| | | } |
| | | // 夿任å¡ç±»åæ¯å¦ä¸ºå
¥åºä»»å¡ |
| | | else if (item.TaskType == "1") |
| | | { |
| | | task.TaskType = (int)TaskInboundTypeEnum.Inbound; |
| | | // æ¥è¯¢ä»æºå°åå°ç®æ å°åçè·¯ç± |
| | | List<Dt_Router> routers = _routerService.QueryNextRoutes(item.BeginPoint, item.EndPoint); |
| | | if (routers.Count > 0) |
| | | { |
| | | // 设置任å¡ç¶æä¸ºå
¥åºæ°å»º |
| | | task.TaskState = (int)TaskInStatusEnum.InNew; |
| | | // 设置å½åå°å为æºå°å |
| | | task.CurrentAddress = item.BeginPoint; |
| | | // 设置ä¸ä¸ä¸ªå°å为第ä¸ä¸ªåä½ç½® |
| | | task.NextAddress = routers.FirstOrDefault().ChildPosi; |
| | | } |
| | | |
| | | task.TaskState = (int)TaskInStatusEnum.RGV_IndispatchFinish; |
| | | |
| | | task.CurrentAddress = item.BeginPoint; |
| | | |
| | | task.WMSTaskNum = item.TaskId; |
| | | |
| | | task.TargetAddress = item.EndPoint; |
| | | |
| | | string[] targetCodes = item.EndPoint.Split("-"); |
| | | |
| | | task.Roadway = GetScCode(Convert.ToInt32(targetCodes[0])); |
| | | |
| | | Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == task.Roadway && x.stationType == 3); |
| | | |
| | | task.NextAddress = stationManager.stationChildCode; |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | else if (item.TaskType == "3") |
| | | { |
| | | task.TaskType = (int)TaskRelocationTypeEnum.Relocation; |
| | | // 设置任å¡ç¶æä¸ºæ°å»º |
| | | |
| | | task.TaskState = (int)TaskRelocationStatusEnum.RelocationNew; |
| | | task.Grade = 3; // 设置é»è®¤ä¼å
级为1 |
| | | |
| | | task.SourceAddress = item.BeginPoint; |
| | | |
| | | task.CurrentAddress = item.BeginPoint; |
| | | |
| | | task.NextAddress = item.EndPoint; |
| | | |
| | | task.TargetAddress = item.EndPoint; |
| | | |
| | | task.Grade = 3; |
| | | |
| | | BaseDal.AddData(tasks); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"ä»»å¡ç±»åé误,æªæ¾å°è¯¥ä»»å¡ç±»å,ä»»å¡å·:ã{item.TaskId}ã,ä»»å¡ç±»å:ã{item.TaskType}ã"); |
| | | } |
| | | } |
| | | BaseDal.AddData(tasks); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(tasks.Select(x => x.TaskId).ToList(), "æ¥æ¶WMSä»»å¡"); |
| | | content = WebResponseContent.Instance.OK("æå"); |
| | | } |
| | |
| | | return content; |
| | | } |
| | | |
| | | public string GetScCode(int number) |
| | | { |
| | | if (number >= 1 && number <= 4) |
| | | { |
| | | return "SC01"; |
| | | } |
| | | else if (number >= 5 && number <= 8) |
| | | { |
| | | return "SC02"; |
| | | } |
| | | else if (number >= 9 && number <= 12) |
| | | { |
| | | return "SC03"; |
| | | } |
| | | else if (number >= 13 && number <= 16) |
| | | { |
| | | return "SC04"; |
| | | } |
| | | else |
| | | { |
| | | // å¤çä¸å¨1-16èå´å
çæ
åµï¼å¯éï¼ |
| | | throw new ArgumentOutOfRangeException(nameof(number), "è¾å
¥çæ°åå¿
é¡»å¨1-16èå´å
"); |
| | | // æè
è¿åä¸ä¸ªé»è®¤å¼ï¼return "SC00"; |
| | | } |
| | | } |
| | | |
| | | |
| | | public WebResponseContent GetTask(WMSTaskDTO taskDTO) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskDTO.TaskId || x.Roadway == taskDTO.WhCode); |
| | | Dt_Task_Hty taskHty = _taskHtyRepository.QueryFirst(x => x.TaskNum == taskDTO.TaskId || x.Roadway == taskDTO.WhCode); |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.WMSTaskNum == taskDTO.TaskId || x.Roadway == taskDTO.WhCode); |
| | | Dt_Task_Hty taskHty = _taskHtyRepository.QueryFirst(x => x.WMSTaskNum == taskDTO.TaskId || x.Roadway == taskDTO.WhCode); |
| | | if (task != null) |
| | | { |
| | | return content.OK(data: new WMSTaskDTO() |
| | | { |
| | | TaskId = task.TaskNum, |
| | | TaskId = task.WMSTaskNum, |
| | | TPbarcode = task.PalletCode, |
| | | WhCode = task.Roadway, |
| | | BeginPoint = task.SourceAddress, |
| | |
| | | { |
| | | return content.OK(data: new WMSTaskDTO() |
| | | { |
| | | TaskId = taskHty.TaskNum, |
| | | TaskId = taskHty.WMSTaskNum, |
| | | TPbarcode = taskHty.PalletCode, |
| | | WhCode = taskHty.Roadway, |
| | | BeginPoint = taskHty.SourceAddress, |
| | |
| | | /// <param name="deviceNo">设å¤ç¼å·</param> |
| | | /// <param name="currentAddress">å½åå°å</param> |
| | | /// <returns></returns> |
| | | public Dt_Task QueryConveyorLineTask(string deviceNo, string currentAddress) |
| | | public Dt_Task QueryConveyorLineTask(string currentAddress) |
| | | { |
| | | return BaseDal.QueryFirst(x => (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) && x.CurrentAddress == currentAddress, TaskOrderBy); |
| | | Dt_Task task= BaseDal.QueryFirst(x => TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.RGV_InExecutingFinish && x.CurrentAddress == currentAddress, TaskOrderBy); |
| | | if (task == null) |
| | | { |
| | | task = BaseDal.QueryFirst(x => TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish && x.CurrentAddress == currentAddress, TaskOrderBy); |
| | | } |
| | | return task; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®è®¾å¤ç¼å·ãå½åå°åæ¥è¯¢è¾éçº¿æªæ§è¡çä»»å¡ |
| | | /// </summary> |
| | | /// <param name="deviceNo">设å¤ç¼å·</param> |
| | | /// <param name="currentAddress">å½åå°å</param> |
| | | /// <returns></returns> |
| | | public Dt_Task QueryConveyorLineFinishTask(string currentAddress) |
| | | { |
| | | Dt_Task task = BaseDal.QueryFirst(x => TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InExecuting && x.NextAddress == currentAddress, TaskOrderBy); |
| | | if (task == null) |
| | | { |
| | | task = BaseDal.QueryFirst(x => TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting && x.NextAddress == currentAddress, TaskOrderBy); |
| | | } |
| | | return task; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®è®¾å¤ç¼å·ãå½åå°åæ¥è¯¢RGVæªæ§è¡çä»»å¡ |
| | |
| | | /// <param name="deviceNo">设å¤ç¼å·</param> |
| | | /// <param name="currentAddress">å½åå°å</param> |
| | | /// <returns></returns> |
| | | public Dt_Task QueryRGVTask(string deviceNo, string currentAddress) |
| | | public Dt_Task QueryRGVExecutingTask(string deviceNo) |
| | | { |
| | | return BaseDal.QueryFirst(x => (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) && x.CurrentAddress == currentAddress, TaskOrderBy); |
| | | return BaseDal.QueryFirst(x => TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.RGV_IndispatchFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.RGV_OutdispatchFinish); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | return BaseDal.QueryData(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew && x.CurrentAddress == currentAddress, TaskOrderBy); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®ä»»å¡å·ãä¸ä¸å°åæ¥è¯¢è¾é线æ§è¡ä¸çä»»å¡ |
| | | /// </summary> |
| | | /// <param name="taskNum">ä»»å¡å·</param> |
| | | /// <param name="nextAddress">ä¸ä¸å°å</param> |
| | | /// <returns></returns> |
| | | public Dt_Task QueryExecutingConveyorLineTask(int taskNum, string nextAddress) |
| | | { |
| | | return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.NextAddress == nextAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting), TaskOrderBy); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®ä»»å¡å·ãå½åå°åæ¥è¯¢è¾éçº¿å®æçä»»å¡ |
| | | /// </summary> |
| | | /// <param name="taskNum">ä»»å¡å·</param> |
| | | /// <param name="currentAddress">å½åå°å</param> |
| | | /// <returns></returns> |
| | | public Dt_Task QueryCompletedConveyorLineTask(int taskNum, string currentAddress) |
| | | { |
| | | return BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InFinish || x.TaskState == (int)TaskOutStatusEnum.Line_OutFinish), TaskOrderBy); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®è®¾å¤ç¼å·ãä»»å¡ç±»ååç»(å¯é)æç
§ä¼å
级以åå建æ¶é´æåºæ¥è¯¢ä»»å¡æ± æ°å¢çä»»å¡ |
| | | /// </summary> |
| | | /// <param name="deviceNo">设å¤ç¼å·</param> |
| | | /// <param name="taskTypeGroup">ä»»å¡ç±»ååç»(å¯é)</param> |
| | | /// <returns></returns> |
| | | public Dt_Task? QuertStackerCraneTask(string deviceNo, TaskTypeGroup? taskTypeGroup = null) |
| | | { |
| | | if (taskTypeGroup == null) |
| | | 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); |
| | | if (taskTypeGroup.Value == TaskTypeGroup.InboundGroup) |
| | | return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish, TaskOrderBy); |
| | | if (taskTypeGroup.Value == TaskTypeGroup.OutbondGroup) |
| | | return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew, TaskOrderBy); |
| | | return null; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®è®¾å¤ç¼å·ãå½åå°åæç
§ä¼å
级以åå建æ¶é´æåºæ¥è¯¢ä»»å¡æ± æ°å¢çä»»å¡ |
| | |
| | | if (string.IsNullOrEmpty(currentAddress)) |
| | | 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); |
| | | else |
| | | return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.CurrentAddress == currentAddress && ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew)), TaskOrderBy); return BaseDal.QueryFirst(x => x.TaskState == (int)AGVTaskStatusEnum.AGVNew && x.Roadway == deviceNo, TaskOrderBy); |
| | | return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.CurrentAddress == currentAddress && ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew)), TaskOrderBy); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®è®¾å¤ç¼å·ãå½åå°åæç
§ä¼å
级以åå建æ¶é´æåºæ¥è¯¢ä»»å¡æ± æ°å¢çä»»å¡ |
| | | /// </summary> |
| | | /// <param name="deviceNo">设å¤ç¼å·</param> |
| | | /// <param name="currentAddress">å½åå°å</param> |
| | | /// <returns>è¿åä»»å¡å®ä½å¯¹è±¡ï¼å¯è½ä¸ºnull</returns> |
| | | public Dt_Task QueryRGVTask(string deviceNo) |
| | | { |
| | | return BaseDal.QueryFirst(x => x.RGVName == deviceNo && ((TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew) || (TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.Line_OutFinish)), TaskOrderBy); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish, TaskOrderBy); |
| | | else |
| | | return BaseDal.QueryFirst(x => x.Roadway == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish && x.CurrentAddress == currentAddress, TaskOrderBy); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®è®¾å¤ç¼å·ãå½åå°åæç
§ä¼å
级以åå建æ¶é´æåºæ¥è¯¢ä»»å¡æ± å
¥åºç±»åçæ°å¢çä»»å¡ |
| | | /// </summary> |
| | | /// <param name="deviceNo">设å¤ç¼å·</param> |
| | | /// <param name="currentAddress">å½åå°å</param> |
| | | /// <returns>è¿åä»»å¡å®ä½å¯¹è±¡ï¼å¯è½ä¸ºnull</returns> |
| | | public Dt_Task QueryRGVInTask(string deviceNo) |
| | | { |
| | | return BaseDal.QueryFirst(x => x.RGVName == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew, TaskOrderBy); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | /// <param name="deviceNo">设å¤ç¼å·</param> |
| | | /// <param name="currentAddress">å½åå°å</param> |
| | | /// <returns>è¿åä»»å¡å®ä½å¯¹è±¡éåï¼å¯è½ä¸ºnull</returns> |
| | | public List<Dt_Task> QueryStackerCraneOutTasks(string deviceNo, List<string> outStationCodes) |
| | | /// <returns>è¿åä»»å¡å®ä½å¯¹è±¡ï¼å¯è½ä¸ºnull</returns> |
| | | public Dt_Task QueryRGVOutTask(string deviceNo) |
| | | { |
| | | return BaseDal.QueryData(x => x.Roadway == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew && outStationCodes.Contains(x.CurrentAddress), TaskOrderBy); |
| | | return BaseDal.QueryFirst(x => x.RGVName == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.Line_OutFinish, TaskOrderBy); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®åºåºè´§ä½æ¥è¯¢æ¯å¦æå½åæµ
è´§ä½ä»»å¡ |
| | | /// </summary> |
| | | /// <param name="deviceNo">设å¤ç¼å·</param> |
| | | /// <param name="currentAddress">å½åå°å</param> |
| | | /// <returns>è¿åä»»å¡å®ä½å¯¹è±¡éåï¼å¯è½ä¸ºnull</returns> |
| | | public List<Dt_Task> QueryStationIsOccupiedOutTasks(string deviceNo, string SourceAddress) |
| | | { |
| | | return BaseDal.QueryData(x => x.Roadway == deviceNo && SourceAddress.Contains(x.SourceAddress), TaskOrderBy); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°ä»»å¡å¼å¸¸ä¿¡æ¯æ¾ç¤º |
| | |
| | | content = WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°ä»»å¡ç¶æä¿¡æ¯ï¼å¹¶åæ¥è³WMS |
| | | /// </summary> |
| | | /// <param name="taskNum">ä»»å¡å·</param> |
| | | /// <param name="status">ä»»å¡ç¶æ</param> |
| | | public void UpdateTaskStatus(int taskNum, int status) |
| | | { |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); |
| | | if (task == null) return; |
| | | task.TaskState = status; |
| | | task.ModifyDate = DateTime.Now; |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | |
| | | task.TaskState = nextStatus; |
| | | |
| | | if (task.TaskState == (int)TaskOutStatusEnum.Line_OutFinish) |
| | | if (task.TaskState == (int)TaskOutStatusEnum.RGV_OutFinish) |
| | | { |
| | | task.ModifyDate = DateTime.Now; |
| | | task.Modifier = "System"; |
| | |
| | | { |
| | | int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>(); |
| | | task.TaskState = nextStatus; |
| | | |
| | | if (task.TaskState == (int)TaskInStatusEnum.Line_InFinish) |
| | | if (task.TaskState == (int)TaskInStatusEnum.Line_InExecuting) |
| | | { |
| | | #region å
¥åºè°ç¨æ¥å£è·åè´§ä½å°å |
| | | |
| | | // æ£æ¥ç¶æå¹¶è¿å |
| | | if (!content.Status) |
| | | return content; |
| | | |
| | | // ååºåå任塿°æ® |
| | | var taskResult = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); |
| | | |
| | | Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == task.Roadway && x.stationChildCode== task.NextAddress); |
| | | task.CurrentAddress = task.NextAddress; |
| | | task.NextAddress = taskResult.EndPoint; |
| | | task.TargetAddress = task.NextAddress; |
| | | |
| | | #endregion å
¥åºè°ç¨æ¥å£è·åè´§ä½å°å |
| | | task.NextAddress = stationManager.stationNextChildCode; |
| | | } |
| | | else if (task.TaskState == (int)TaskInStatusEnum.Line_InFinish) |
| | | { |
| | | task.CurrentAddress = task.NextAddress; |
| | | task.NextAddress = task.TargetAddress; |
| | | } |
| | | else if (task.TaskState == (int)TaskInStatusEnum.SC_InFinish) |
| | | { |
| | |
| | | |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, App.User.UserId > 0 ? $"人工æå¨å°ä»»å¡ç¶æä»ã{oldState}ã跳转å°ã{task.TaskState}ã" : $"ç³»ç»èªå¨æµç¨ï¼ä»»å¡ç¶æä»ã{oldState}ã转å°ã{task.TaskState}ã"); |
| | | |
| | | #region æ´æ°ä»»å¡ç¶æ |
| | | |
| | | // è·åWMSipå°å |
| | | //var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); |
| | | //var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; |
| | | //var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTask)?.ConfigValue; |
| | | //if (wmsBase == null || updateTask == null) |
| | | //{ |
| | | // throw new InvalidOperationException("WMS IP æªé
ç½®"); |
| | | //} |
| | | //var wmsIpAddress = wmsBase + updateTask; |
| | | |
| | | //var result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result; |
| | | //content = JsonConvert.DeserializeObject<WebResponseContent>(result); |
| | | |
| | | #endregion æ´æ°ä»»å¡ç¶æ |
| | | |
| | | content = WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | return content; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®ä»»å¡å·ãå½åå°åæ´æ°ä»»å¡ä½ç½®ä¿¡æ¯ |
| | | /// </summary> |
| | | /// <param name="taskNum">ä»»å¡å·</param> |
| | | /// <param name="currentAddress">å½åå°å</param> |
| | | /// <returns></returns> |
| | | public Dt_Task? UpdatePosition(int taskNum, string currentAddress) |
| | | |
| | | public WebResponseContent RGVTaskCompleted(int taskNum, string Barcode = "") |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum && x.CurrentAddress == currentAddress); |
| | | if (task == null) throw new Exception($"æªæ¾å°è¯¥ä»»å¡ä¿¡æ¯,ä»»å¡å·:ã{taskNum}ã"); |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); |
| | | if (task == null) return WebResponseContent.Instance.Error($"æªæ¾å°è¯¥ä»»å¡ä¿¡æ¯,ä»»å¡å·:ã{taskNum}ã"); |
| | | |
| | | string oldCurrentPos = task.CurrentAddress; |
| | | string oldNextPos = task.NextAddress; |
| | | if (task.TaskState == (int)TaskInStatusEnum.RGV_Indispatch) |
| | | { |
| | | //var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); |
| | | //var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; |
| | | //var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestTask)?.ConfigValue; |
| | | //var keys = new Dictionary<string, object>() |
| | | //{ |
| | | // {"TPbarcode", Barcode}, |
| | | // {"WhCode", "1001"}, |
| | | // {"BeginPoint", task.SourceAddress} |
| | | //}; |
| | | //if (wmsBase == null || requestTask == null) |
| | | //{ |
| | | // throw new InvalidOperationException("WMS IP æªé
ç½®"); |
| | | //} |
| | | //var wmsIpAddress = wmsBase + requestTask; |
| | | //var result = WIDESEA_Comm.Http.HttpHelper.PostAsync(wmsIpAddress, keys.ToString()).Result; |
| | | |
| | | List<Dt_Router> routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress); |
| | | if (!routers.Any()) throw new Exception($"æªæ¾å°è®¾å¤è·¯ç±ä¿¡æ¯"); |
| | | //if (result != null) |
| | | //{ |
| | | task.TaskState = (int)TaskInStatusEnum.RGV_InAwaitWMS; |
| | | task.PalletCode = Barcode; |
| | | task.ModifyDate = DateTime.Now; |
| | | BaseDal.UpdateData(task); |
| | | //} |
| | | |
| | | task.CurrentAddress = task.NextAddress; |
| | | task.NextAddress = routers.FirstOrDefault().ChildPosi; |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"RGVè°åº¦å®æçå¾
WMSä»»å¡"); |
| | | } |
| | | else if (task.TaskState == (int)TaskInStatusEnum.RGV_InExecuting) |
| | | { |
| | | Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.NextAddress); |
| | | task.TaskState = (int)TaskInStatusEnum.RGV_InExecutingFinish; |
| | | task.NextAddress = stationManager.stationNextChildCode; |
| | | task.CurrentAddress = task.NextAddress; |
| | | task.ModifyDate = DateTime.Now; |
| | | BaseDal.UpdateData(task); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"RGVå
¥åºå®æ"); |
| | | } |
| | | else if (task.TaskState == (int)TaskOutStatusEnum.RGV_Outdispatch) |
| | | { |
| | | task.TaskState = (int)TaskOutStatusEnum.RGV_OutdispatchFinish; |
| | | task.ModifyDate = DateTime.Now; |
| | | BaseDal.UpdateData(task); |
| | | |
| | | task.ModifyDate = DateTime.Now; |
| | | task.Modifier = "System"; |
| | | BaseDal.UpdateData(task); |
| | | } |
| | | else if (task.TaskState == (int)TaskOutStatusEnum.RGV_OutExecuting) |
| | | { |
| | | task.TaskState = (int)TaskOutStatusEnum.RGV_OutFinish; |
| | | task.ModifyDate = DateTime.Now; |
| | | task.Modifier = "System"; |
| | | |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"ç³»ç»èªå¨æµç¨ï¼æ´æ°å½åä½ç½®ã{oldCurrentPos} ----> {task.CurrentAddress}ãåä¸ä¸ä½ç½®ã{oldNextPos} ----> {task.NextAddress}ã"); |
| | | return task; |
| | | Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task); |
| | | task_Hty.TaskId = 0; |
| | | |
| | | BaseDal.DeleteData(task); |
| | | _taskHtyRepository.AddData(task_Hty); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"RGVåºåºå®æ"); |
| | | } |
| | | else |
| | | { |
| | | throw new Exception($"ä»»å¡ç±»åé误,æªæ¾å°è¯¥ä»»å¡ç±»å,ä»»å¡å·:ã{taskNum}ã,ä»»å¡ç±»å:ã{task.TaskType}ã"); |
| | | } |
| | | content = WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content = WebResponseContent.Instance.Error($"ä»»å¡å®æå¼å¸¸,ä»»å¡å·:ã{taskNum}ã"); |
| | | } |
| | | return null; |
| | | return content; |
| | | } |
| | | |
| | | |
| | | |
| | | public WebResponseContent StackCraneTaskCompleted(int taskNum) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); |
| | | if (task == null) return WebResponseContent.Instance.Error($"æªæ¾å°è¯¥ä»»å¡ä¿¡æ¯,ä»»å¡å·:ã{taskNum}ã"); |
| | | |
| | | if ( task.TaskState == (int)AGVTaskStatusEnum.AGV_Executing) |
| | | //var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); |
| | | //var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; |
| | | //var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue; |
| | | //var keys = new Dictionary<string, object>() |
| | | // { |
| | | // {"TaskId", task.WMSTaskNum}, |
| | | // {"TPbarcode", task.PalletCode}, |
| | | // {"WhCode", "1001"}, |
| | | // {"BeginPoint", task.SourceAddress}, |
| | | // {"EndPoint", task.TargetAddress}, |
| | | // {"Results", 1}, |
| | | // }; |
| | | //if (wmsBase == null || requestTask == null) |
| | | //{ |
| | | // throw new InvalidOperationException("WMS IP æªé
ç½®"); |
| | | //} |
| | | //var wmsIpAddress = wmsBase + requestTask; |
| | | //var result = WIDESEA_Comm.Http.HttpHelper.PostAsync(wmsIpAddress, keys.ToString()).Result; |
| | | |
| | | //if (result != null) |
| | | //{ |
| | | // task.ExceptionMessage += " " + content.Message; |
| | | //} |
| | | |
| | | if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting) |
| | | { |
| | | task.TaskState = (int)AGVTaskStatusEnum.AGVFinish; |
| | | task.TaskState = (int)TaskOutStatusEnum.SC_OutFinish; |
| | | |
| | | Dt_StationManager stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == task.Roadway && x.stationType == 2); |
| | | |
| | | task.CurrentAddress = task.NextAddress; |
| | | |
| | | task.NextAddress = stationManager.stationNextChildCode; |
| | | |
| | | BaseDal.UpdateData(task); |
| | | |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"å åæºåºåºå®æ"); |
| | | } |
| | | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting) |
| | | { |
| | | //todo 忥å°WMS |
| | | int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>(); |
| | | task.TaskState = nextStatus; |
| | | task.ModifyDate = DateTime.Now; |
| | | task.Modifier = "System"; |
| | | |
| | | Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task); |
| | | task_Hty.TaskId = 0; |
| | | |
| | | BaseDal.DeleteData(task); |
| | | //_taskHtyService.AddTaskHty(task, (int)OperateTypeEnum.èªå¨å®æ); |
| | | _taskHtyRepository.AddData(task_Hty); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"å åæºå
¥åºå®æ"); |
| | | } |
| | | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) |
| | | { |
| | | int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskRelocationStatusEnum>(); |
| | | task.TaskState = nextStatus; |
| | | task.ModifyDate = DateTime.Now; |
| | | task.Modifier = "System"; |
| | | |
| | | Dt_Task_Hty taskHty = _mapper.Map<Dt_Task_Hty>(task); |
| | | taskHty.OperateType = (int)OperateTypeEnum.èªå¨å®æ; |
| | | _taskHtyRepository.AddData(taskHty); |
| | | Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task); |
| | | task_Hty.TaskId = 0; |
| | | |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"AGVæ¬è¿å®æå®æ"); |
| | | BaseDal.DeleteData(task); |
| | | _taskHtyRepository.AddData(task_Hty); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"å åæºç§»åºå®æ"); |
| | | } |
| | | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OtherGroup) |
| | | { |
| | | } |
| | | else |
| | | { |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | List<Dt_Task> tasks = BaseDal.QueryData(x => (x.TaskState == (int)TaskInStatusEnum.InNew || x.TaskState == (int)TaskOutStatusEnum.OutNew || x.TaskState == (int)TaskRelocationStatusEnum.RelocationNew) && x.TaskNum == taskDTO.TaskId && x.PalletCode == taskDTO.TPbarcode && x.Roadway == taskDTO.WhCode); |
| | | List<Dt_Task> tasks = BaseDal.QueryData(x => (x.TaskState == (int)TaskInStatusEnum.InNew || x.TaskState == (int)TaskOutStatusEnum.OutNew || x.TaskState == (int)TaskRelocationStatusEnum.RelocationNew) && x.WMSTaskNum == taskDTO.TaskId && x.PalletCode == taskDTO.TPbarcode && x.Roadway == taskDTO.WhCode); |
| | | if (tasks.Count == 0) return content.Error("没æéè¦åæ¶çä»»å¡"); |
| | | foreach (Dt_Task task in tasks) |
| | | { |
| | |
| | | BaseDal.DeleteData(task); |
| | | |
| | | Dt_Task_Hty taskHty = _mapper.Map<Dt_Task_Hty>(task); |
| | | //_taskHtyService.AddTaskHty(task, (int)OperateTypeEnum.WMSåæ¶); |
| | | taskHty.OperateType = (int)OperateTypeEnum.WMSåæ¶; |
| | | _taskHtyRepository.AddData(taskHty); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, "äººå·¥åæ¶ä»»å¡"); |