| | |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using Autofac.Core; |
| | | using HslCommunication.WebSocket; |
| | | using Microsoft.AspNetCore.Components; |
| | | using Quartz; |
| | | using SqlSugar; |
| | | using WIDESEA_Model.Models.Basic; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Core.BaseRepository; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_Core.LogHelper; |
| | | using WIDESEAWCS_DTO.MES; |
| | | using WIDESEAWCS_DTO.Stock; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Model.Models.System; |
| | |
| | | |
| | | private readonly IRepository<Dt_StationManger> _stationMangerRepository; |
| | | private readonly IRepository<Dt_Task> _TaskRepository; |
| | | private readonly IRepository<Dt_FillingOrder> _FillingOrderRepository; |
| | | private readonly ITaskService _ITaskService; |
| | | private static Stock Stock = new Stock(); |
| | | private static bool k = true; |
| | | private static int i = 0; |
| | | |
| | | //夿æ¯å¦æåºåºä¿¡å·åç»WMS |
| | | private static bool m = true; |
| | | private static bool n = true; |
| | | |
| | | //åå¨ä¿¡å· |
| | | private readonly Commands comm = new Commands(); |
| | | |
| | | public ConveyorLineJob(WebSocketServer webSocketServer, IRepository<Dt_StationManger> stationMangerRepository, IRepository<Dt_Task> TaskRepository, ITaskService ITaskService) |
| | | public ConveyorLineJob(WebSocketServer webSocketServer, IRepository<Dt_StationManger> stationMangerRepository, IRepository<Dt_Task> TaskRepository, IRepository<Dt_FillingOrder> FillingOrderRepository, ITaskService ITaskService) |
| | | { |
| | | _stationMangerRepository = stationMangerRepository; |
| | | _TaskRepository = TaskRepository; |
| | | _ITaskService = ITaskService; |
| | | _FillingOrderRepository = FillingOrderRepository; |
| | | } |
| | | |
| | | public Task Execute(IJobExecutionContext context) |
| | | { |
| | | //å åæºè®¾å¤ç¶æ |
| | | int sc = comm.GETR_TaskStatus(); |
| | | //è¿æ¥è®¾å¤ |
| | | bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value); |
| | | if (flag && value != null) |
| | |
| | | OtherDevice device = (OtherDevice)value; |
| | | List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).Distinct().ToList(); |
| | | List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode); |
| | | //å
·ä½è®¾å¤ |
| | | foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode))) |
| | | try |
| | | { |
| | | i++; |
| | | //读åä¿¡å· |
| | | DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); |
| | | //DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode ).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); |
| | | if (deviceProRead != null) |
| | | //å
·ä½è®¾å¤ |
| | | foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode))) |
| | | { |
| | | ConveyorLineCommand conveyorLineInfoRead = device.Communicator.ReadCustomer<ConveyorLineCommand>(deviceProRead.DeviceProAddress); |
| | | //空桶å
¥åºä»»å¡ |
| | | if (item.StationName == "空桶å
¥") |
| | | i++; |
| | | //读åä¿¡å· |
| | | DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); |
| | | //DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode ).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); |
| | | if (deviceProRead != null) |
| | | { |
| | | comm.R_StatusA((short)conveyorLineInfoRead.R_State); |
| | | comm.R_PickA((short)conveyorLineInfoRead.R_Pick); |
| | | if (conveyorLineInfoRead.R_Pick == 1 && conveyorLineInfoRead.R_State == 1) |
| | | ConveyorLineCommand conveyorLineInfoRead = device.Communicator.ReadCustomer<ConveyorLineCommand>(deviceProRead.DeviceProAddress); |
| | | //空桶å
¥åºä»»å¡ |
| | | if (item.StationName == "空桶å
¥") |
| | | { |
| | | try |
| | | comm.R_StatusA((short)conveyorLineInfoRead.R_State); |
| | | comm.R_PickA((short)conveyorLineInfoRead.R_Pick); |
| | | if (conveyorLineInfoRead.R_Pick == 1 && conveyorLineInfoRead.R_State == 1 && sc == 2) |
| | | { |
| | | //夿任塿¯å¦éå¤ |
| | | Dt_Task task = _TaskRepository.QueryFirst(x => x.TaskType == (int)TaskTypeEnum.InEmpty); |
| | | if (task == null) |
| | | { |
| | | LogLock.OutLogAOP("è¾éçº¿ä»»å¡æ¥å¿", new string[] { device.DeviceCode, $"{"空桶å
¥åºä»»å¡çæ" + "ç³è¯·å(æ¾)æï¼" + conveyorLineInfoRead.R_Pick + "设å¤ç¶æï¼" + conveyorLineInfoRead.R_State}" }); |
| | | //WMSçæä»»å¡ |
| | | string address = AppSettings.Get("WMSApiAddress"); |
| | | if (!string.IsNullOrEmpty(address)) |
| | |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | //åå
¥æ¥å¿ |
| | | WriteInfo(device.DeviceCode, $"{ex.Message}"); |
| | | } |
| | | } |
| | | } |
| | | //满桶å
¥åºä»»å¡ |
| | | if (item.StationName == "满桶å
¥") |
| | | { |
| | | comm.R_StatusC((short)conveyorLineInfoRead.R_State); |
| | | comm.R_PickC((short)conveyorLineInfoRead.R_Pick); |
| | | if (conveyorLineInfoRead.R_Pick == 1 && conveyorLineInfoRead.R_State == 1) |
| | | //满桶å
¥åºä»»å¡ |
| | | if (item.StationName == "满桶å
¥") |
| | | { |
| | | try |
| | | comm.R_StatusC((short)conveyorLineInfoRead.R_State); |
| | | comm.R_PickC((short)conveyorLineInfoRead.R_Pick); |
| | | if (conveyorLineInfoRead.R_Pick == 1 && conveyorLineInfoRead.R_State == 1 && sc == 2) |
| | | { |
| | | //æ¸
ç©ºç©æç¼å· |
| | | if (k) |
| | |
| | | Stock.MaterialCode4 = conveyorLineInfoRead.R_NumberD; |
| | | |
| | | //夿任塿¯å¦éå¤ |
| | | Dt_Task task = _TaskRepository.QueryFirst(x => x.TaskType == (int)TaskTypeEnum.Infull); |
| | | Dt_Task task = _TaskRepository.QueryFirst(x => x.TaskType == (int)TaskTypeEnum.Infull || x.TaskType == (int)TaskTypeEnum.OutDirect); |
| | | if (task == null) |
| | | { |
| | | LogLock.OutLogAOP("è¾éçº¿ä»»å¡æ¥å¿", new string[] { device.DeviceCode, $"{"满桶å
¥åºä»»å¡çæ" + "ç³è¯·å(æ¾)æï¼" + conveyorLineInfoRead.R_Pick + "设å¤ç¶æï¼" + conveyorLineInfoRead.R_State + "//" + conveyorLineInfoRead.R_NumberA + "/" + conveyorLineInfoRead.R_NumberB + "/" + conveyorLineInfoRead.R_NumberC + "/" + conveyorLineInfoRead.R_NumberD}" }); |
| | | Stock.location = item.location; |
| | | //WMSçæä»»å¡ |
| | | string address = AppSettings.Get("WMSApiAddress"); |
| | |
| | | device.SetValue(ConveyorLineName.W_ReceivedD, 1, item.StationCode); |
| | | k = true; |
| | | } |
| | | |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | //åå
¥æ¥å¿ |
| | | WriteInfo(device.DeviceCode, $"{ex.Message}"); |
| | | } |
| | | } |
| | | } |
| | | //ç©ºæ¡¶åº |
| | | if (item.StationName == "空桶åº") |
| | | { |
| | | comm.R_StatusB((short)conveyorLineInfoRead.R_State); |
| | | comm.R_PickB((short)conveyorLineInfoRead.R_Pick); |
| | | if (conveyorLineInfoRead.R_Pick == 1 && conveyorLineInfoRead.R_State == 1) |
| | | //ç©ºæ¡¶åº |
| | | if (item.StationName == "空桶åº") |
| | | { |
| | | try |
| | | { |
| | | //夿任塿¯å¦éå¤ |
| | | Dt_Task task = _TaskRepository.QueryFirst(x => x.TaskType == (int)TaskTypeEnum.OutEmpty); |
| | | if (task == null) |
| | | { |
| | | //WMSçæä»»å¡ |
| | | string address = AppSettings.Get("WMSApiAddress"); |
| | | if (!string.IsNullOrEmpty(address)) |
| | | { |
| | | HttpHelper.Post($"{address}/api/Task/addOutEmptyTask/?location={item.location}", ""); |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | //åå
¥æ¥å¿ |
| | | WriteInfo(device.DeviceCode, $"{ex.Message}"); |
| | | } |
| | | comm.R_StatusB((short)conveyorLineInfoRead.R_State); |
| | | comm.R_PickB((short)conveyorLineInfoRead.R_Pick); |
| | | //if (conveyorLineInfoRead.R_Pick == 1 && conveyorLineInfoRead.R_State == 1 && sc == 2) |
| | | //{ |
| | | |
| | | // //夿任塿¯å¦éå¤ |
| | | // Dt_Task task = _TaskRepository.QueryFirst(x => x.TaskType == (int)TaskTypeEnum.OutEmpty); |
| | | // if (task == null) |
| | | // { |
| | | // LogLock.OutLogAOP("è¾éçº¿ä»»å¡æ¥å¿", new string[] { device.DeviceCode, $"{"空桶åºåºä»»å¡çæ" + "ç³è¯·å(æ¾)æï¼" + conveyorLineInfoRead.R_Pick + "设å¤ç¶æï¼" + conveyorLineInfoRead.R_State}" }); |
| | | // //WMSçæä»»å¡ |
| | | // string address = AppSettings.Get("WMSApiAddress"); |
| | | // if (!string.IsNullOrEmpty(address)) |
| | | // { |
| | | // HttpHelper.Post($"{address}/api/Task/addOutEmptyTask/?location={item.location}", ""); |
| | | // } |
| | | // } |
| | | |
| | | //} |
| | | } |
| | | } |
| | | //æ»¡æ¡¶åº |
| | | if (item.StationName == "满桶åº") |
| | | { |
| | | comm.R_StatusD((short)conveyorLineInfoRead.R_State); |
| | | comm.R_PickD((short)conveyorLineInfoRead.R_Pick); |
| | | //åè¯WMSå¯ä»¥åºåº |
| | | if (conveyorLineInfoRead.R_Pick == 1 && conveyorLineInfoRead.R_State == 1) |
| | | //æ»¡æ¡¶åº |
| | | if (item.StationName == "满桶åº") |
| | | { |
| | | if (m) |
| | | { |
| | | //WMSçæä»»å¡ |
| | | string address = AppSettings.Get("WMSApiAddress"); |
| | | if (!string.IsNullOrEmpty(address)) |
| | | { |
| | | HttpHelper.Post($"{address}/api/Task/WCSSignal/?k=1", ""); |
| | | } |
| | | m = false; |
| | | n = true; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (n) |
| | | { |
| | | //WMSçæä»»å¡ |
| | | string address = AppSettings.Get("WMSApiAddress"); |
| | | if (!string.IsNullOrEmpty(address)) |
| | | { |
| | | HttpHelper.Post($"{address}/api/Task/WCSSignal/?k=0", ""); |
| | | } |
| | | n = false; |
| | | m = true; |
| | | } |
| | | comm.R_StatusD((short)conveyorLineInfoRead.R_State); |
| | | comm.R_PickD((short)conveyorLineInfoRead.R_Pick); |
| | | } |
| | | } |
| | | } |
| | | i = 0; |
| | | } |
| | | i = 0; |
| | | catch (Exception ex) |
| | | { |
| | | //åå
¥æ¥å¿ |
| | | WriteInfo(device.DeviceCode, $"{ex.Message}"); |
| | | } |
| | | } |
| | | return Task.CompletedTask; |
| | | } |