| | |
| | | #endregion << ç æ¬ 注 é >> |
| | | |
| | | using AutoMapper; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; |
| | | using Quartz; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Data; |
| | | using System.Linq; |
| | | using System.Reflection; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_BasicInfoService; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.Enums; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_ITaskInfoRepository; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_QuartzJob.DTO; |
| | | using WIDESEAWCS_QuartzJob.Models; |
| | | using WIDESEAWCS_QuartzJob.Service; |
| | | using WIDESEAWCS_TaskInfoRepository; |
| | | 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; |
| | |
| | | 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), $"çæç©ºæå
¥åºä»»å¡æ¶ï¼ééè¶
éï¼çæç©ºæå
¥åºä»»å¡å¤±è´¥ï¼"); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | else//å¦ææ ¹æ®æçæ¡ç æ¥ä¸å°ä»»å¡ï¼å认为æ¯ç©ºæçï¼ç©ºæçå
¥åºä¸éè¦ç»çï¼ç´æ¥æ°å»ºä»»å¡ |
| | | if (!string.IsNullOrEmpty(command.Barcode.Trim())) |
| | | { |
| | | if (command.ISInFinish == 1) |
| | | Dt_Task Outtask = _taskService.QueryConveyorLineOutTask(command.Barcode); |
| | | if (Outtask != null) |
| | | { |
| | | //å
¥åºç¡®è®¤ä¿¡å· |
| | | conveyorLine.Communicator.Write<short>("DB800.6.0", 1); |
| | | Dt_Task task = new Dt_Task(); |
| | | task.TaskNum= GetTaskNo(); |
| | | task.PalletCode = command.CL1002Barcode; |
| | | task.TaskType =(int)TaskInboundTypeEnum.Inbound; |
| | | task.TaskState = (int)TaskInStatusEnum.Line_InFinish; |
| | | task.Roadway = "SC01"; |
| | | task.SourceAddress = "R01-001-023-001"; |
| | | //åWMSç³è¯·ç©ºè´§ä½ |
| | | task.TargetAddress= WMSApiInvoke.GetAllLocationGroups(task.PalletCode); |
| | | _taskService.AddData(task); |
| | | Dt_Router dt_Router = new Dt_Router(); |
| | | //临æ¶è®°å½ä¸æçååºä½çç»å®å
³ç³» |
| | | dt_Router.StartPosi = task.TargetAddress; |
| | | dt_Router.NextPosi = task.PalletCode; |
| | | dt_Router.InOutType = RouterInOutType.Out; |
| | | dt_Router.ChildPosi = "1"; |
| | | dt_Router.ChildPosiDeviceCode = "1"; |
| | | dt_Router.IsEnd = true; |
| | | _routerService.AddData(dt_Router); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, $"è¾é线å
¥åºæ§è¡ä¸"); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, $"è¾é线å
¥åºå®æ"); |
| | | |
| | | |
| | | } |
| | | //åºåºå¤ç |
| | | //妿åºåºå°ä½ï¼åºåºä»»å¡å®æ |
| | | 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()); |
| | | } |