| | |
| | | #region << ç æ¬ 注 é >> |
| | | |
| | | /*---------------------------------------------------------------- |
| | | * å½å空é´ï¼WIDESEAWCS_Tasks.ConveyorLineJob |
| | | * å建è
ï¼è¡ç«¥åº |
| | |
| | | * ä¿®æ¹æ¶é´ï¼ |
| | | * çæ¬ï¼V1.0.1 |
| | | * ä¿®æ¹è¯´æï¼ |
| | | * |
| | | * |
| | | *----------------------------------------------------------------*/ |
| | | |
| | | #endregion << ç æ¬ 注 é >> |
| | | |
| | | using AutoMapper; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; |
| | | using Quartz; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Reflection; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using AutoMapper; |
| | | using Quartz; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.Helper; |
| | |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_QuartzJob.DTO; |
| | | using WIDESEAWCS_QuartzJob.Service; |
| | | using WIDESEAWCS_Tasks.ConveyorLineJob; |
| | | |
| | |
| | | private readonly ITaskExecuteDetailService _taskExecuteDetailService; |
| | | private readonly IRouterService _routerService; |
| | | private readonly IMapper _mapper; |
| | | private readonly ITaskCZDetailsRepository _detailsRepository; |
| | | |
| | | public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository, ITaskCZRepository taskCZRepository) |
| | | public CommonConveyorLineJob(ITaskService taskService, ITaskCZDetailsRepository detailsRepository, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository, ITaskCZRepository taskCZRepository) |
| | | { |
| | | _taskService = taskService; |
| | | _taskExecuteDetailService = taskExecuteDetailService; |
| | |
| | | _mapper = mapper; |
| | | _taskRepository = taskRepository; |
| | | _taskCZRepository = taskCZRepository; |
| | | _detailsRepository = detailsRepository; |
| | | } |
| | | |
| | | public Task Execute(IJobExecutionContext context) |
| | |
| | | // å®ä¹çº¿ä½å®çå
¥åºè¯·æ±çå°ååä»»å¡ç±»å |
| | | var requests = new Dictionary<string, string> |
| | | { |
| | | { "DB1002.293.0", "ZJXL-WLX002" }, |
| | | { "DB1002.1493.0", "FJXL-WLX002" } |
| | | { "DB1002.1493.0", "ZJXL-WLX002" }, |
| | | { "DB1002.1093.0", "FJXL-WLX002" } |
| | | }; |
| | | |
| | | foreach (var request in requests) |
| | | // å®ä¹çº¿ä½ç©ºçåæµè¯·æ±çå°ååä»»å¡ç±»å |
| | | var requestsKP = new Dictionary<string, string> |
| | | { |
| | | var isDownRequest = conveyorLine.Communicator.Read<bool>(request.Key); |
| | | if (!isDownRequest) |
| | | { |
| | | continue; |
| | | } |
| | | { "DB1002.1893.0", "ZJXL-KPHLX001" }, |
| | | { "DB1002.2293.0", "FJXL-KPHLX001" } |
| | | }; |
| | | |
| | | string fromAdd = request.Value; |
| | | string taskType = request.Value.Contains("ZJXL") ? "æ£æ" : "è´æ"; |
| | | // å¤çå®çå
¥åºè¯·æ± |
| | | //ProcessRequests(conveyorLine, requests, "ä¸çº¿è¯·æ±å
¥åº"); |
| | | |
| | | // æ¥è¯¢æ¯å¦åå¨å·²çæçæ°ä»»å¡ |
| | | var task = _taskRepository.QueryFirst(x => x.SourceAddress == fromAdd && x.TaskState == (int)TaskInStatusEnum.InNew); |
| | | if (task != null) |
| | | { |
| | | ConsoleHelper.WriteInfoLine($"{nameof(CommonConveyorLineJob)}: {taskType}ä¸çº¿è¯·æ±å
¥åº,ä»»å¡å·²çæåå¨ï¼ç¨åéè¯......"); |
| | | continue; |
| | | } |
| | | |
| | | // æ¥è¯¢ä»»å¡ç±»å对åºçczTask |
| | | DtCZTask czTask = _taskCZRepository.QueryFirst(x => x.TaskType == taskType); |
| | | if (czTask == null) |
| | | { |
| | | ConsoleHelper.WriteInfoLine($"{nameof(CommonConveyorLineJob)}: {taskType}ä¸çº¿è¯·æ±å
¥åº,{taskType}ä»»å¡ä¸åå¨ï¼ç¨åéè¯......"); |
| | | continue; |
| | | } |
| | | |
| | | // å建æ°çä»»å¡å¹¶æ·»å å°ä»»å¡ä»åº |
| | | task = new Dt_Task() |
| | | { |
| | | TaskNum = _taskService.GetTaskNum(), |
| | | CreateDate = DateTime.Now, |
| | | Creater = "system", |
| | | CurrentAddress = fromAdd, |
| | | SourceAddress = fromAdd, |
| | | TaskState = (int)TaskInStatusEnum.InNew, |
| | | TaskType = (int)TaskInboundTypeEnum.Inbound, |
| | | Grade = 1, |
| | | PalletCode = czTask.TaskProductCode, |
| | | TargetAddress = czTask.TaskEndAddress, |
| | | Roadway = $"{taskType}AGV", |
| | | WMSId = czTask.Id, |
| | | Remark = czTask.TaskOrderNo |
| | | }; |
| | | _taskRepository.AddData(task); |
| | | ConsoleHelper.WriteInfoLine($"{nameof(CommonConveyorLineJob)}: {taskType}ä¸çº¿è¯·æ±å
¥åº,ä»»å¡å·²çæï¼çå¾
æ§è¡......"); |
| | | } |
| | | // å¤ç空çåæµè¯·æ± |
| | | ProcessKpRequests(conveyorLine, requestsKP); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | return Task.CompletedTask; |
| | | } |
| | | |
| | | private void ProcessRequests(CommonConveyorLine conveyorLine, Dictionary<string, string> requests, string requestType) |
| | | { |
| | | foreach (var request in requests) |
| | | { |
| | | var isDownRequest = conveyorLine.Communicator.Read<bool>(request.Key); |
| | | if (!isDownRequest) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | string fromAdd = request.Value; |
| | | string taskType = request.Value.Contains("ZJXL") ? "æ£æ" : "è´æ"; |
| | | |
| | | // æ¥è¯¢æ¯å¦åå¨å·²çæçæ°ä»»å¡ |
| | | var task = _taskRepository.QueryFirst(x => x.SourceAddress == fromAdd);//&& x.TaskState == (int)TaskInStatusEnum.InNew |
| | | if (task != null) |
| | | { |
| | | ConsoleHelper.WriteInfoLine($"{nameof(CommonConveyorLineJob)}: {taskType}{requestType},ä»»å¡å·²çæåå¨ï¼ç¨åéè¯......"); |
| | | continue; |
| | | } |
| | | |
| | | // æ¥è¯¢ä»»å¡ç±»å对åºçczTask |
| | | DtCZTask czTask = _taskCZRepository.QueryFirst(x => x.TaskType == taskType && (x.TaskStatus == TaskInStatusEnum.InFinish.ToString() || x.TaskStatus == TaskInStatusEnum.Line_InExecuting.ToString())); |
| | | if (czTask == null) |
| | | { |
| | | ConsoleHelper.WriteInfoLine($"{nameof(CommonConveyorLineJob)}: {taskType}{requestType},{taskType}ä»»å¡ä¸åå¨ï¼ç¨åéè¯......"); |
| | | continue; |
| | | } |
| | | |
| | | // åå»ºå¹¶æ·»å æ°ä»»å¡å°ä»»å¡ä»åº |
| | | task = CreateTask(fromAdd, czTask.TaskEndAddress, czTask.TaskOrderNo, czTask.TaskProductCode, taskType, czTask.Id); |
| | | _taskRepository.AddData(task); |
| | | ConsoleHelper.WriteInfoLine($"{nameof(CommonConveyorLineJob)}: {taskType}{requestType},ä»»å¡å·²çæï¼çå¾
æ§è¡......"); |
| | | } |
| | | } |
| | | |
| | | private void ProcessKpRequests(CommonConveyorLine conveyorLine, Dictionary<string, string> requestsKP) |
| | | { |
| | | foreach (var request in requestsKP) |
| | | { |
| | | var isDownRequest = conveyorLine.Communicator.Read<bool>(request.Key); |
| | | if (!isDownRequest) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | string fromAdd = request.Value; |
| | | string taskType = "è´æ"; //request.Value.Contains("ZJXL") ? "æ£æ" : |
| | | |
| | | // æ ¹æ®ä»»å¡ç±»åç¡®å®è¯·æ±å°å |
| | | (string upRequest, string gmRequest, string gmState) = GetRequestAddresses(taskType); |
| | | |
| | | var isUpRequest = conveyorLine.Communicator.Read<bool>(upRequest); |
| | | var isGMRequest = conveyorLine.Communicator.Read<bool>(gmRequest); |
| | | var isGMState = conveyorLine.Communicator.Read<int>(gmState); |
| | | |
| | | // æ ¹æ®æ¡ä»¶å建任å¡å¯¹è±¡ |
| | | Dt_Task task = null; |
| | | if (isUpRequest) |
| | | { |
| | | List<Dt_Task> dt_Task = _taskRepository.QueryData(x => x.SourceAddress == fromAdd && x.TaskState == (int)TaskInStatusEnum.InPending); |
| | | if (dt_Task.Count < 0) { continue; } |
| | | var tasks = dt_Task.Where(x => x.SourceAddress == fromAdd).OrderBy(t => t.CreateDate).First(); |
| | | tasks.TaskState = (int)TaskInStatusEnum.InNew; |
| | | _taskService.UpdateData(tasks); |
| | | } |
| | | //else if (isGMRequest && isGMState == 1) |
| | | //{ |
| | | // task = CreateTask(fromAdd, "WaitBind", "æ£æç©æµçº¿002çä¸æè¯·æ±", "éè空æç", taskType); |
| | | //} |
| | | |
| | | //// æ·»å ä»»å¡å°ä»»å¡è¡¨ |
| | | //if (task != null) |
| | | //{ |
| | | // _taskRepository.AddData(task); |
| | | //} |
| | | } |
| | | } |
| | | |
| | | private (string upRequest, string gmRequest, string gmState) GetRequestAddresses(string taskType) |
| | | { |
| | | if (taskType == "æ£æ") |
| | | { |
| | | // ç©æµçº¿002çä¸æè¯·æ± |
| | | return ("DB1002.93.0", "DB1002.2493.0", "DB1002.2424.0"); |
| | | } |
| | | else |
| | | { |
| | | // ç©æµçº¿002çä¸æè¯·æ± |
| | | return ("DB1002.1293.0", "DB1002.2893.0", "DB1002.2824.0"); |
| | | } |
| | | } |
| | | |
| | | // è¾
婿¹æ³ï¼å建任å¡å¯¹è±¡ |
| | | private Dt_Task CreateTask(string currentAddress, string targetAddress, string remark, string palletCode, string taskType, int czTaskID = 0) |
| | | { |
| | | if (targetAddress != "WaitBind") |
| | | { |
| | | var details = _detailsRepository.QueryData(x => x.TaskEndAddress == targetAddress).ToList(); |
| | | foreach (var item in details) |
| | | { |
| | | var taskCZ = _taskCZRepository.QueryFirst(x => x.TaskTaskID == item.TaskTaskID); |
| | | if (taskCZ.TaskType.Contains("æ£æ")) |
| | | { |
| | | taskCZ.TaskZJFinishNumber += 1; |
| | | } |
| | | else |
| | | { |
| | | taskCZ.TaskFJFinishNumber += 1; |
| | | } |
| | | if (taskCZ.TaskZJFinishNumber == taskCZ.TaskNumber || taskCZ.TaskFJFinishNumber == taskCZ.TaskNumber) |
| | | { |
| | | _taskCZRepository.DeleteData(taskCZ); |
| | | } |
| | | |
| | | var isTrue = _taskCZRepository.UpdateData(taskCZ); |
| | | } |
| | | } |
| | | Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.SourceAddress == currentAddress); |
| | | if (dt_Task != null) |
| | | { |
| | | return null; |
| | | } |
| | | return new Dt_Task |
| | | { |
| | | TaskNum = _taskService.GetTaskNum(), |
| | | CreateDate = DateTime.Now, |
| | | Creater = "system", |
| | | CurrentAddress = currentAddress, |
| | | SourceAddress = currentAddress, |
| | | TaskState = targetAddress != "WaitBind" ? (int)TaskInStatusEnum.InNew : (int)TaskInStatusEnum.InPending, |
| | | TaskType = (int)TaskOutboundTypeEnum.Outbound, |
| | | Grade = 1, |
| | | PalletCode = palletCode, |
| | | TargetAddress = targetAddress, |
| | | NextAddress = targetAddress, |
| | | Barcode = "", |
| | | Roadway = $"{taskType}AGV", |
| | | WMSId = czTaskID > 0 ? czTaskID : 0, |
| | | Remark = remark |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è¾é线请æ±å
¥åº |
| | |
| | | GC.SuppressFinalize(this); |
| | | } |
| | | } |
| | | } |
| | | } |