| | |
| | | #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.Data; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_ITaskInfoRepository; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_QuartzJob.DTO; |
| | | using WIDESEAWCS_QuartzJob.Service; |
| | | using WIDESEAWCS_Tasks.ConveyorLineJob; |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | | { |
| | | [DisallowConcurrentExecution] |
| | | public class CommonConveyorLineJob : IJob |
| | | public class CommonConveyorLineJob :JobBase, IJob |
| | | { |
| | | private readonly ITaskService _taskService; |
| | | private readonly ITaskRepository _taskRepository; |
| | | private readonly ITaskExecuteDetailService _taskExecuteDetailService; |
| | | |
| | | private readonly IRouterService _routerService; |
| | | private readonly IMapper _mapper; |
| | | |
| | | public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper) |
| | | public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper,ITaskRepository taskRepository) |
| | | { |
| | | _taskService = taskService; |
| | | _taskExecuteDetailService = taskExecuteDetailService; |
| | | _routerService = routerService; |
| | | _mapper = mapper; |
| | | _taskRepository = taskRepository; |
| | | } |
| | | |
| | | public Task Execute(IJobExecutionContext context) |
| | | { |
| | | |
| | | try |
| | | { |
| | | CommonConveyorLine conveyorLine = (CommonConveyorLine)context.JobDetail.JobDataMap.Get("JobParams"); |
| | |
| | | command.CL1002Status = conveyorLine.Communicator.Read<short>("DB801.46.0"); |
| | | command.Weight = conveyorLine.Communicator.Read<short>("DB801.48.0"); |
| | | command.CL1002Barcode = conveyorLine.Communicator.Read<string>("DB801.52.0"); |
| | | command.ISIn = conveyorLine.Communicator.Read<short>("DB801.84.0"); |
| | | command.ISIn = conveyorLine.Communicator.Read<short>("DB801.84.0");//çäº1çæ¶åä¸è®©åºåº |
| | | if (command != null) |
| | | { |
| | | Dt_Task Intask = _taskService.QueryConveyorLineTask(command.CL1002Barcode); |
| | | if (Intask != null) |
| | | if (!string.IsNullOrEmpty(command.CL1002Barcode.Trim())) |
| | | { |
| | | //å
¥åºå¤ç |
| | | //妿å
¥åºå°ä½ï¼åæ ¹æ®æçç ï¼æ¡ç ï¼å»è·åWCSä»»å¡å· |
| | | if (command.ISInFinish == 1) |
| | | Dt_Task Intask = _taskService.QueryConveyorLineTask(command.CL1002Barcode); |
| | | if (Intask != null) |
| | | { |
| | | _taskService.UpdateTaskStatus(Intask.TaskId, (int)TaskInStatusEnum.Line_InExecuting); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(Intask.TaskId, $"è¾é线å
¥åºæ§è¡ä¸"); |
| | | //å
¥åºç¡®è®¤ä¿¡å· |
| | | conveyorLine.Communicator.Write<short>("DB800.6.0", 1); |
| | | _taskService.UpdateTaskStatus(Intask.TaskId, (int)TaskInStatusEnum.Line_InFinish); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(Intask.TaskId, $"è¾é线å
¥åºå®æ"); |
| | | //å
¥åºå¤ç |
| | | //妿å
¥åºå°ä½ï¼åæ ¹æ®æçç ï¼æ¡ç ï¼å»è·åWCSä»»å¡å· |
| | | if (command.ISInFinish == 1) |
| | | { |
| | | _taskService.UpdateTaskStatus(Intask.TaskId, (int)TaskInStatusEnum.Line_InExecuting); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(Intask.TaskId, $"è¾é线å
¥åºæ§è¡ä¸"); |
| | | //å
¥åºç¡®è®¤ä¿¡å· |
| | | conveyorLine.Communicator.Write<short>("DB800.6.0", 1); |
| | | _taskService.UpdateTaskStatus(Intask.TaskId, (int)TaskInStatusEnum.Line_InFinish); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(Intask.TaskId, $"è¾é线å
¥åºå®æ"); |
| | | } |
| | | } |
| | | else//å¦ææ ¹æ®æçæ¡ç æ¥ä¸å°ä»»å¡ï¼å认为æ¯ç©ºæçï¼ç©ºæçå
¥åºå¯ä»¥ä¸éè¦ç»çï¼ç´æ¥æ°å»ºä»»å¡ï¼ä¹å¯ä»¥ç´æ¥ä¸ç©ºæåºåºä»»å¡ |
| | | { |
| | | |
| | | if (command.ISInFinish == 1)//å¢å æ ¹æ®éé夿æ¯å¦æ¯ç©ºæç夿é»è¾ |
| | | { |
| | | if (command.Weight <= 600) |
| | | { |
| | | //å
ä¸ç»PLCå
¥åºç¡®è®¤ä¿¡å·ï¼è°WMS空æå
¥åºä»»å¡æ¥å£ |
| | | _taskService.GenerateEmptyInBoundTask(command.CL1002Barcode); |
| | | } |
| | | else |
| | | { |
| | | WriteDebug(nameof(CommonConveyorLineJob), $"çæç©ºæå
¥åºä»»å¡æ¶ï¼ééè¶
éï¼çæç©ºæå
¥åºä»»å¡å¤±è´¥ï¼"); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | if (!string.IsNullOrEmpty(command.Barcode.Trim())) |
| | | { |
| | | Dt_Task Outtask = _taskService.QueryConveyorLineOutTask(command.Barcode); |
| | | if (Outtask != null) |
| | | { |
| | | //åºåºå¤ç |
| | | //妿åºåºå°ä½ï¼åºåºä»»å¡å®æ |
| | | if (command.ISOutFinish == 1) |
| | | { |
| | | _taskService.UpdateTaskStatus(Outtask.TaskId, (int)TaskOutStatusEnum.Line_OutExecuting); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(Outtask.TaskId, $"è¾é线åºåºæ§è¡ä¸"); |
| | | _taskService.UpdateTaskStatus(Outtask.TaskId, (int)TaskOutStatusEnum.Line_OutFinish); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(Outtask.TaskId, $"è¾é线åºåºå®æ"); |
| | | //åºåºç¡®è®¤ä¿¡å· |
| | | conveyorLine.Communicator.Write<short>("DB800.0.0", 1); |
| | | _taskService.UpdateTaskStatus(Outtask.TaskId, (int)TaskOutStatusEnum.OutFinish); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(Outtask.TaskId, $"åºåºä»»å¡å®æ"); |
| | | _taskService.OutBoundTaskByWMS(Outtask.TaskNum); |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | Dt_Task Outtask = _taskService.QueryConveyorLineOutTask(command.Barcode); |
| | | if (Outtask != null) |
| | | { |
| | | //åºåºå¤ç |
| | | //妿åºåºå°ä½ï¼åºåºä»»å¡å®æ |
| | | if (command.ISOutFinish == 1) |
| | | { |
| | | _taskService.UpdateTaskStatus(Outtask.TaskId, (int)TaskOutStatusEnum.Line_OutExecuting); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(Outtask.TaskId, $"è¾é线åºåºæ§è¡ä¸"); |
| | | _taskService.UpdateTaskStatus(Outtask.TaskId, (int)TaskOutStatusEnum.Line_OutFinish); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(Outtask.TaskId, $"è¾é线åºåºå®æ"); |
| | | //åºåºç¡®è®¤ä¿¡å· |
| | | conveyorLine.Communicator.Write<short>("DB800.0.0", 1); |
| | | _taskService.UpdateTaskStatus(Outtask.TaskId, (int)TaskOutStatusEnum.OutFinish); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(Outtask.TaskId, $"åºåºä»»å¡å®æ"); |
| | | } |
| | | } |
| | | //Intask = _taskService.QueryConveyorLineTask(command.CL1002Barcode); |
| | | //Outtask = _taskService.QueryConveyorLineOutTask(command.Barcode); |
| | | //if (Intask==null&&Outtask==null && command.CL1001Free==1 && command.CL1002Free==1&& command.ISIn==0) |
| | | //{ |
| | | // //çæç©ºè½¦åºåºä»»å¡ |
| | | // _taskService.GenerateEmptyOutBoundTask(); |
| | | //} |
| | | |
| | | } |
| | | Task.WaitAll(tasks.ToArray()); |
| | |
| | | return Task.CompletedTask; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// è·åä»»å¡ç¼å· |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public int GetTaskNo() |
| | | { |
| | | DataTable dt = _taskRepository.QueryTable("select next value for dbo.seqTaskNum"); |
| | | return int.Parse(dt.Rows[0][0].ToString()); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è¾é线请æ±å
¥åº |
| | | /// </summary> |