| | |
| | | using Microsoft.Extensions.DependencyInjection; |
| | | using WIDESEA_IBusinessesRepository; |
| | | using WIDESEA_Repository; |
| | | using static MailKit.Telemetry; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; |
| | | using System.Runtime.InteropServices; |
| | | |
| | | namespace WIDESEA_StorageSocketServices |
| | | { |
| | |
| | | const byte ETX = 3; |
| | | private readonly ILogger<SocketClientService> _logger; |
| | | private readonly LogFactory LogFactory = new LogFactory(); |
| | | //private readonly IDt_TaskService _taskService; |
| | | private readonly IDt_StationManagerRepository _stationManagerRepository; |
| | | private readonly IDt_TaskRepository BaseDal; |
| | | Connection connection = AppSettings.Configuration.GetSection("Connection").Get<Connection>(); |
| | | string url = AppSettings.Configuration["AGVIP"]; |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | private readonly IStockInfoRepository _stockInfoRepository; |
| | | private readonly IDt_Task_HtyRepository _task_HtyRepository; |
| | | private readonly IMapper _mapper; |
| | | private readonly ILocationInfoRepository _locationRepository; |
| | | private readonly IDt_TaskService _taskService; |
| | | private readonly IDt_HostLogRepository _hostLogRepository; |
| | | private bool _IsOnline=false; |
| | | public DateTime Time { get; set; } = DateTime.Now; |
| | | |
| | | |
| | | public SocketClientService(IDt_TaskService TaskService, IDt_TaskRepository TaskRepository, IDt_StationManagerRepository stationManagerRepository, ILogger<SocketClientService> logger, ILocationInfoRepository locationInfoRepository,IDt_HostLogRepository hostLogRepository) |
| | | public SocketClientService(IDt_TaskService TaskService, IDt_TaskRepository TaskRepository, IDt_StationManagerRepository stationManagerRepository, ILogger<SocketClientService> logger,IDt_HostLogRepository hostLogRepository) |
| | | { |
| | | BaseDal = TaskRepository; |
| | | _stationManagerRepository = stationManagerRepository; |
| | | _logger = logger; |
| | | _taskService = TaskService; |
| | | _locationRepository = locationInfoRepository; |
| | | _hostLogRepository = hostLogRepository; |
| | | #region |
| | | //if (App.RootServices != null) |
| | | //{ |
| | | // IDt_TaskRepository? BaseDal = App.RootServices.CreateScope().ServiceProvider.GetService(typeof(IDt_TaskRepository)) as IDt_TaskRepository; |
| | | // IDt_TaskService? _taskService = App.RootServices.CreateScope().ServiceProvider.GetService(typeof(IDt_TaskService)) as IDt_TaskService; |
| | | // ILocationInfoRepository? _locationRepository = App.RootServices.CreateScope().ServiceProvider.GetService(typeof(ILocationInfoRepository)) as ILocationInfoRepository; |
| | | // IDt_StationManagerRepository? _stationManagerRepository = App.RootServices.CreateScope().ServiceProvider.GetService(typeof(IDt_StationManagerRepository)) as IDt_StationManagerRepository; |
| | | //} |
| | | #endregion |
| | | } |
| | | |
| | | /// <summary> |
| | | /// TCPSocketè¿æ¥ |
| | | /// </summary> |
| | | /// <param name="IP"></param> |
| | | /// <param name="Port"></param> |
| | | public void ConnectServer(string IP, int Port) |
| | | { |
| | | try |
| | |
| | | } |
| | | |
| | | //å建è´è´£éä¿¡çsocket |
| | | socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); |
| | | socket = new System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); |
| | | IPAddress ip = IPAddress.Parse(IP); |
| | | IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(Port)); |
| | | |
| | |
| | | |
| | | _logger.LogInformation("Socketè¿æ¥æå"); |
| | | ConsoleHelper.WriteSuccessLine("Socketè¿æ¥æå"); |
| | | |
| | | DeleteHostLog(910); |
| | | |
| | | _IsOnline = true; |
| | | RequestCommunication(); |
| | | DeviceStateReport("I"); |
| | | AGVStatusRespone status = GetAGVStatus(); |
| | | |
| | | DeviceStateReport(GetAGVStatus(status.RuntimeStatus)); |
| | | |
| | | //å¼å¯ä¸ä¸ªæ°ç线ç¨ä¸åçæ¥æ¶æå¡ç«¯åæ¥çä¿¡æ¯ |
| | | Thread th = new Thread(Receive); |
| | |
| | | HandleDisconnection(); |
| | | } |
| | | } |
| | | |
| | | |
| | | public bool Socketonline() |
| | | { |
| | | return _IsOnline; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 线ç¨è¯»åæ°æ® |
| | | /// </summary> |
| | | void Receive() |
| | | { |
| | | Time = DateTime.Now; |
| | | while (true) |
| | | { |
| | | try |
| | |
| | | var str = Encoding.UTF8.GetString(newArray); |
| | | string receivedChecksum = str.Substring(str.Length - 2); |
| | | |
| | | LogFactory.GetLog("æ¥æ¶Socketæ°æ®").Info(true, $"{JsonConvert.SerializeObject(GetParse(str))}{Environment.NewLine}"); |
| | | if (calculatedChecksum == receivedChecksum) |
| | | { |
| | | var x = Encoding.UTF8.GetString(newArray); |
| | |
| | | } |
| | | else |
| | | { |
| | | LogFactory.GetLog("Socketæ¥æ¶æ°æ®").Error(true, "æ ¡éªå¤±è´¥"); |
| | | CheckSum("3"); |
| | | LogFactory.GetLog("Socketæ¥æ¶æ°æ®").Error(true, $"CheckSumæ ¡éªå¤±è´¥,è§£æ{calculatedChecksum}ã读å{receivedChecksum}"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | LogFactory.GetLog("Socketæ¥æ¶æ°æ®").Error(true, $"æ ææ¥ææ ¼å¼:{JsonConvert.SerializeObject(Y)}"); |
| | | LogFactory.GetLog("Socketæ¥æ¶æ°æ®").Error(true, $"æ ææ¥ææ ¼å¼:{JsonConvert.SerializeObject(Y)}{Environment.NewLine}"); |
| | | } |
| | | } |
| | | catch |
| | | { |
| | | _IsOnline = false; |
| | | HandleDisconnection(); |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// ä½ä¸JobType |
| | | /// </summary> |
| | | /// <param name="cmdId"></param> |
| | | /// <param name="x"></param> |
| | | private void ProcessCommand(string cmdId, string x) |
| | | { |
| | | switch (cmdId) |
| | |
| | | case "909": |
| | | DeviceStatusReportRequest(); |
| | | break; |
| | | case "987": |
| | | FireAlarm(x.Substring(21, 6), x.Substring(15, 5)); |
| | | break; |
| | | case "301": |
| | | UpdateLocalTime(x.Substring(30), x.Substring(15, 5)); |
| | | break; |
| | | case "918": |
| | | break; |
| | | default: |
| | | CheckSum("1"); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | private void HandleDisconnection() |
| | | #region |
| | | //private void HandleDisconnection() |
| | | //{ |
| | | // int attempts = 100; |
| | | // do |
| | | // { |
| | | // string message = "è¿æ¥å·²æå¼..." + '\n'; |
| | | // message += "çå¾
5ç§åéæ°è¿æ¥" + '\n'; |
| | | // Console.WriteLine(message); |
| | | |
| | | // // å
³éå½åè¿æ¥ |
| | | // try |
| | | // { |
| | | // socket?.Close(); |
| | | // } |
| | | // catch { } |
| | | |
| | | // // çå¾
5ç§ |
| | | // Thread.Sleep(5000); |
| | | |
| | | // // å°è¯éæ°è¿æ¥ |
| | | // ConnectServer(connection.IP, connection.Port); |
| | | // attempts--; |
| | | // } while (!socket.Connected && attempts > 0); |
| | | //} |
| | | #endregion |
| | | |
| | | /// <summary> |
| | | /// éè¿ |
| | | /// </summary> |
| | | public void HandleDisconnection() |
| | | { |
| | | int attempts = 5; |
| | | do |
| | | int maxAttempts = 10; // æå¤§å°è¯æ¬¡æ° |
| | | int currentAttempts = 0; |
| | | |
| | | while (currentAttempts < maxAttempts) |
| | | { |
| | | string message = "è¿æ¥å·²æå¼..." + '\n'; |
| | | string message = "ä¸Hostç³»ç»è¿æ¥å·²æå¼..." + '\n'; |
| | | message += "çå¾
5ç§åéæ°è¿æ¥" + '\n'; |
| | | Console.WriteLine(message); |
| | | |
| | |
| | | |
| | | // å°è¯éæ°è¿æ¥ |
| | | ConnectServer(connection.IP, connection.Port); |
| | | attempts--; |
| | | } while (!socket.Connected && attempts > 0); |
| | | } |
| | | public void clientSend(byte[] buffer) |
| | | { |
| | | var Y = Encoding.UTF8.GetString(buffer); |
| | | LogFactory.GetLog("Socketåéæ°æ®").Info(true, Y); |
| | | socket.Send(buffer); |
| | | currentAttempts++; |
| | | |
| | | // æ£æ¥æ¯å¦å·²è¿æ¥ |
| | | if (socket?.Connected ?? false) |
| | | { |
| | | break; // è¿æ¥æåï¼éåºå¾ªç¯ |
| | | } |
| | | } |
| | | |
| | | if (currentAttempts >= maxAttempts) |
| | | { |
| | | Console.WriteLine("å·²è¾¾å°æå¤§éè¿æ¬¡æ°ï¼åæ¢éè¿ã"); |
| | | // å¯ä»¥å¨è¿éè¿è¡å
¶ä»å¤çï¼ä¾å¦éç¥ç¨æ·æè®°å½æ¥å¿ |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä¸å |
| | | /// </summary> |
| | | /// <param name="buffer"></param> |
| | | public void clientSend(byte[] buffer) |
| | | { |
| | | socket.Send(buffer); |
| | | |
| | | |
| | | int newLength = buffer.Length - 2; |
| | | byte[] newArray = new byte[newLength]; |
| | | |
| | | Array.Copy(buffer, 1, newArray, 0, newLength); |
| | | string calculatedChecksum = GetCheckSumone(newArray); |
| | | |
| | | var str = Encoding.UTF8.GetString(newArray); |
| | | string receivedChecksum = str.Substring(str.Length - 2); |
| | | |
| | | var x = Encoding.UTF8.GetString(newArray); |
| | | |
| | | LogFactory.GetLog("Socketåéæ°æ®").Info(true, $"{JsonConvert.SerializeObject(GetParse(x))}{Environment.NewLine}"); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// CheckSumè§£æ |
| | | /// </summary> |
| | | /// <param name="x"></param> |
| | | /// <returns></returns> |
| | | /// <exception cref="Exception"></exception> |
| | | public string GetCheckSumone(byte[] x) |
| | | { |
| | | int sum = 0; |
| | |
| | | /// ä½ä¸ä»»å¡ID é¢ç |
| | | /// </summary> |
| | | public const string JobOrderID = "0000000000000000"; |
| | | |
| | | public const string JobOrderIDPDA = "PDA0000000000000"; |
| | | |
| | | public const string JobOrderIDF = "FIRE000000000000"; |
| | | |
| | | /// <summary> |
| | | /// ä¼å
级 é¢ç |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | LogFactory.GetLog("DeviceRequestInbound").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | LogFactory.GetLog("RequestCommunication").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | LogFactory.GetLog("JobReady").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | |
| | | } |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | LogFactory.GetLog("DeviceStateReport").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | |
| | | } |
| | |
| | | { |
| | | try |
| | | { |
| | | string str = SendNotReply + "917" + BaseDal.GetSeqNo().Result.ToString("D5") + Status; |
| | | string str = SendandReply + "917" + BaseDal.GetSeqNo().Result.ToString("D5") + Status; |
| | | clientSend(MakeStringToByteMsg(str)); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | LogFactory.GetLog("DeviceAutoStatusReport").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | |
| | | } |
| | | |
| | | /// /// <summary> |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | LogFactory.GetLog("JobStartOrEnd").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | |
| | | } |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | LogFactory.GetLog("PalletActionReportå·¥åº907").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | |
| | | } |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | LogFactory.GetLog("PalletActionReportå·¥åº901").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | |
| | | } |
| | | |
| | | public void PalletActionReportPDA(string FormLocation, string ToLocation, string TaskType, string PallteCode) |
| | | { |
| | | try |
| | | { |
| | | string str = SendandReply + "901" + BaseDal.GetSeqNo().Result.ToString("D5") + "0" + JobOrderIDPDA + priority + FormLocation + ToLocation + TaskType + TrayCnt + PallteCode; |
| | | clientSend(MakeStringToByteMsg(str)); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogFactory.GetLog("PalletActionReportPDAå·¥åº901").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | |
| | | } |
| | | |
| | | public void PalletActionReportFrie(string FormLocation, string ToLocation, string TaskType, string PallteCode) |
| | | { |
| | | try |
| | | { |
| | | string str = SendandReply + "901" + BaseDal.GetSeqNo().Result.ToString("D5") + "0" + JobOrderIDF + priority + FormLocation + ToLocation + TaskType + TrayCnt + PallteCode; |
| | | clientSend(MakeStringToByteMsg(str)); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogFactory.GetLog("PalletActionReportPDAå·¥åº901").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | |
| | | } |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | LogFactory.GetLog("DeviceStationStatusReport").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | |
| | | } |
| | |
| | | { |
| | | try |
| | | { |
| | | ErrorReport(Restocking, "A", "00"); |
| | | string str = SendandReply + "105" + BaseDal.GetSeqNo().Result.ToString("D5") + "R" + JobOrderID + priority + FormLocation + ToLocation + TaskType + TrayCnt + PallteCode; |
| | | Dt_HostLog hostLog = new Dt_HostLog() |
| | | { |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | LogFactory.GetLog("RecreateGetLocation").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// CheckSumæ ¡éª å·¥åº981 |
| | | /// </summary> |
| | | /// <param name="message"></param> |
| | | public void CheckSum(string message) |
| | | { |
| | | try |
| | | { |
| | | string str = SendNotReply + "981" + BaseDal.GetSeqNo().Result.ToString("D5") + message; |
| | | clientSend(MakeStringToByteMsg(str)); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogFactory.GetLog("CheckSum").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | } |
| | | |
| | | /// /// <summary> |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | LogFactory.GetLog("ErrorReport").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | LogFactory.GetLog("DeviceReceiveJobResponse").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | |
| | | } |
| | |
| | | { |
| | | try |
| | | { |
| | | ErrorReport(EmptyOutBoundconst, "A", "00"); |
| | | string str = SendandReply + "107" + BaseDal.GetSeqNo().Result.ToString("D5") + "1" + JobOrderID + priority + FormLocation + ToLocation + "O" + TrayCnt + PallteCode; |
| | | Dt_HostLog hostLog = new Dt_HostLog() |
| | | { |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | LogFactory.GetLog("EmptyOutBound").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | |
| | | } |
| | |
| | | /// <param name="AgvStatus"></param> |
| | | public void DeviceStatusReportResponse(HOSTAGVStatus AgvStatus, string X, string Y) |
| | | { |
| | | string str = SendNotReply + "910" + BaseDal.GetSeqNo().Result.ToString("D5") + GetFieldsAsString(AgvStatus) + X + Y; |
| | | clientSend(MakeStringToByteMsg(str)); |
| | | try |
| | | { |
| | | string str = SendNotReply + "910" + BaseDal.GetSeqNo().Result.ToString("D5") + GetFieldsAsString(AgvStatus) + X + Y; |
| | | clientSend(MakeStringToByteMsg(str)); |
| | | Dt_HostLog hostLog = new Dt_HostLog() |
| | | { |
| | | CommandID = 910, |
| | | Count = 0, |
| | | Messgae = str, |
| | | }; |
| | | _hostLogRepository.AddData(hostLog); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogFactory.GetLog("DeviceStatusReportResponse").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// åå¤HOST987å·¥åº å·¥åº988 |
| | | /// </summary> |
| | | /// <param name="AgvStatus"></param> |
| | | /// <param name="X"></param> |
| | | /// <param name="Y"></param> |
| | | public void FireAlarmReportResponse(string SeqNo,string IsOK,string Location) |
| | | { |
| | | try |
| | | { |
| | | string str = SendNotReply + "988" + SeqNo + IsOK + Location; |
| | | clientSend(MakeStringToByteMsg(str)); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogFactory.GetLog("FireAlarmReportResponse").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// åå¤HOST301å·¥åº å·¥åº302 |
| | | /// </summary> |
| | | /// <param name="AgvStatus"></param> |
| | | /// <param name="X"></param> |
| | | /// <param name="Y"></param> |
| | | public void UpdateLocalTimeResponse(string message,string SeqNo) |
| | | { |
| | | try |
| | | { |
| | | string str = SendNotReply + "302" + SeqNo + message; |
| | | clientSend(MakeStringToByteMsg(str)); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogFactory.GetLog("UpdateLocalTimeResponse").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | |
| | | } |
| | | |
| | | #endregion |
| | |
| | | /// <param name="message"></param> |
| | | public void ReceiveCommandResponse(string message) |
| | | { |
| | | var parseMessage = GetParse(message); |
| | | var lcationEnd = parseMessage.body.ToLocation; |
| | | switch (parseMessage.body.ret) |
| | | try |
| | | { |
| | | //OK |
| | | case "0": |
| | | //var location = _locationRepository.QueryFirst(x => x.LocationCode == lcationEnd); |
| | | var location = SqlSugarHelper.DbWMS.Queryable<DtLocationInfo>().Where(x => x.LocationCode == parseMessage.body.ToLocation).First(); |
| | | if (location == null) |
| | | { |
| | | return; |
| | | } |
| | | if (location.LocationStatus == (int)LocationEnum.Free) |
| | | { |
| | | var task = InsertWMSTask(parseMessage); |
| | | Thread.Sleep(500); |
| | | InsertAGVTask(task); |
| | | location.LocationStatus = 1; |
| | | //SqlSugarHelper.DbWMS.Insertable(task).ExecuteCommand(); |
| | | SqlSugarHelper.DbWMS.Updateable(location).ExecuteCommand(); |
| | | BaseDal.AddData(task); |
| | | //915 |
| | | JobReady("0"); |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | ErrorReport(Restocking, "A", "00"); |
| | | Thread.Sleep(500); |
| | | RecreateGetLocation(parseMessage.body.FromLocation, parseMessage.body.ToLocation, parseMessage.body.JobType, parseMessage.body.TrayIdList.Substring(0, 10)); |
| | | //todoè´§ä½æè´§éå¤å
¥åº |
| | | return; |
| | | } |
| | | //NG |
| | | case "1": |
| | | break; |
| | | //æ åºä½åé
|
| | | case "2": |
| | | break; |
| | | //ç«å°å°ç«å°ï¼åºåºç«å°æªåå¤å¥½ |
| | | case "3": |
| | | break; |
| | | //éå¸¸æ¸©å·¥ç¨ |
| | | case "4": |
| | | break; |
| | | |
| | | case "9": |
| | | break; |
| | | default: |
| | | break; |
| | | ParseMessage parseMessage = GetParse(message); |
| | | var lcationEnd = parseMessage.body.ToLocation; |
| | | switch (parseMessage.body.ret) |
| | | { |
| | | //OK |
| | | case "0": |
| | | GetLocation(parseMessage); |
| | | break; |
| | | //NG |
| | | case "1": |
| | | AddErrorMessage("2013", "Host", StationParse(parseMessage.body.FromLocation)); |
| | | break; |
| | | //æ åºä½åé
|
| | | case "2": |
| | | AddErrorMessage("2014", "Host", StationParse(parseMessage.body.FromLocation)); |
| | | break; |
| | | //ç«å°å°ç«å°ï¼åºåºç«å°æªåå¤å¥½ |
| | | case "3": |
| | | AddErrorMessage("2015", "Host", StationParse(parseMessage.body.FromLocation)); |
| | | break; |
| | | //éå¸¸æ¸©å·¥ç¨ |
| | | case "4": |
| | | AddErrorMessage("2016", "Host", StationParse(parseMessage.body.FromLocation)); |
| | | break; |
| | | case "9": |
| | | AddErrorMessage("2017", "Host", StationParse(parseMessage.body.FromLocation)); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | |
| | | LogFactory.GetLog("Host102åå¤WMS101").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(parseMessage)}{Environment.NewLine}", ""); |
| | | catch (Exception ex) |
| | | { |
| | | ErrorReport("2199", "A", "00"); |
| | | LogFactory.GetLog("Host102åå¤WMS101ReceiveCommandResponse").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public void AGVJobStartOrEndResponse(string status, string message) |
| | | { |
| | | switch (message) |
| | | try |
| | | { |
| | | //OK |
| | | case "0": |
| | | if (status == "E") |
| | | { |
| | | DeviceStateReport("I"); |
| | | Thread.Sleep(3000); |
| | | JobReady("1"); |
| | | } |
| | | break; |
| | | //NG |
| | | case "1": |
| | | //è°ç¨AGVæåæ¥å£ |
| | | break; |
| | | case "9": |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | switch (message) |
| | | { |
| | | //OK |
| | | case "0": |
| | | if (status == "E") |
| | | { |
| | | AGVStatusRespone Agvstatus = GetAGVStatus(); |
| | | |
| | | LogFactory.GetLog("Host906åå¤WMS905").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(status)}{Environment.NewLine}{JsonConvert.SerializeObject(message)}{Environment.NewLine}", ""); |
| | | DeviceStateReport(GetAGVStatus(Agvstatus.RuntimeStatus)); |
| | | Thread.Sleep(3000); |
| | | JobReady("1"); |
| | | } |
| | | break; |
| | | //NG |
| | | case "1": |
| | | //è°ç¨AGVæåæ¥å£ |
| | | AddErrorMessage("2004", "Host", ""); |
| | | break; |
| | | case "9": |
| | | AddErrorMessage("2005", "Host", ""); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | ErrorReport("2199", "A", "00"); |
| | | LogFactory.GetLog("Host906åå¤WMS905AGVJobStartOrEndResponse").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | public void DataReportResponse(string message) |
| | | { |
| | | LogFactory.GetLog("Host902åå¤WMS901").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(message)}{Environment.NewLine}", ""); |
| | | #region |
| | | //Dt_Task task = BaseDal.QueryFirst(x => (x.TaskState == (int)TaskOutStatusEnum.AGV_OutFinish || x.TaskState == (int)TaskRelocationStatusEnum.AGV_RelocationFinish || x.TaskState == (int)TaskInStatusEnum.AGV_InFinish) && x.Roadway != "PDA"); |
| | | //if (task != null) |
| | | //{ |
| | | // switch (task.TaskType) |
| | | // { |
| | | // case 200: |
| | | // //å
¥åº |
| | | // if (message == "0") |
| | | // { |
| | | // JobStartOrEnd("E", task.Remark, task.TargetAddress, "O", task.PalletCode); |
| | | // } |
| | | // break; |
| | | // case 100: |
| | | // //åºåº |
| | | // if (message == "0") |
| | | // { |
| | | // JobStartOrEnd("E", task.SourceAddress, task.Remark, "O", task.PalletCode); |
| | | // } |
| | | // break; |
| | | // case 300: |
| | | // if (message == "0") |
| | | // { |
| | | // JobStartOrEnd("E", task.SourceAddress, task.TargetAddress, "O", task.PalletCode); |
| | | // } |
| | | // _taskService.CompleteRelocationboundTask(task); |
| | | // break; |
| | | // case 400: |
| | | // if (message == "0") |
| | | // { |
| | | // JobStartOrEnd("E", task.Remark, task.HostName, "O", task.PalletCode); |
| | | // } |
| | | // break; |
| | | // default: |
| | | // break; |
| | | // } |
| | | //} |
| | | try |
| | | { |
| | | DeleteHostLog(901); |
| | | #region |
| | | switch (message) |
| | | { |
| | | case "0": |
| | | |
| | | break; |
| | | case "1": |
| | | AddErrorMessage("2001", "Host", ""); |
| | | break; |
| | | case "9": |
| | | AddErrorMessage("2002", "Host", ""); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | ErrorReport("2199", "A", "00"); |
| | | LogFactory.GetLog("Host902åå¤WMS901DataReportResponse").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | |
| | | #endregion |
| | | } |
| | | /// <summary> |
| | |
| | | { |
| | | //OK |
| | | case "0": |
| | | var location = SqlSugarHelper.DbWMS.Queryable<DtLocationInfo>().Where(x => x.LocationCode == parseMessage.body.FromLocation).First(); |
| | | if (location == null) |
| | | { |
| | | return; |
| | | } |
| | | if (location.LocationStatus == (int)LocationEnum.InStock) |
| | | { |
| | | Dt_Task task = InsertWMSTask(parseMessage); |
| | | //BaseDal.AddData(task); |
| | | location.LocationStatus = 1; |
| | | SqlSugarHelper.DbWMS.Insertable(task).ExecuteCommand(); |
| | | SqlSugarHelper.DbWMS.Updateable(location).ExecuteCommand(); |
| | | InsertAGVTask(task); |
| | | //Thread.Sleep(500); |
| | | //915 |
| | | JobReady("0"); |
| | | Thread.Sleep(500); |
| | | //104 |
| | | DeviceReceiveJobResponse("0"); |
| | | } |
| | | else |
| | | { |
| | | ErrorReport(EmptyOutBoundconst, "A", "00"); |
| | | Thread.Sleep(500); |
| | | EmptyOutBound(parseMessage.body.FromLocation, parseMessage.body.ToLocation, parseMessage.body.TrayIdList.Substring(0, 10)); |
| | | return; |
| | | } |
| | | |
| | | GetLocation(parseMessage); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | LogFactory.GetLog("Host103").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(parseMessage)}{Environment.NewLine}", ""); |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | DeviceReceiveJobResponse("1"); |
| | | ErrorReport("2199", "A", "00"); |
| | | LogFactory.GetLog("Host103HOSTOutBoundTask").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// HOST设å¤ç¶æè·å å·¥åº935 |
| | | /// </summary> |
| | |
| | | |
| | | StationStatus stationIn = GetStationStatus("B002"); |
| | | StationStatus stationOut = GetStationStatus("B001"); |
| | | |
| | | if(stationIn == null || stationOut == null) |
| | | { |
| | | ErrorReport("2103", "A", "00"); |
| | | } |
| | | |
| | | List<OutStationStatus> outStationStatus = GetOutStationStatus(stationOut); |
| | | List<InStationStatus> inStationStatus = GetInStationStatus(stationIn); |
| | | |
| | |
| | | { |
| | | RuntimeStatus = CapitalizeFirstLetter(status.RuntimeStatus), |
| | | AutoStatus = status.AutoStatus == "MaintenanceMode" ? "1" : "0", |
| | | //Ready = status.AutoStatus == "MaintenanceMode" ? "0" : "1", |
| | | }; |
| | | if (status.RuntimeStatus == "Idle" && status.AutoStatus == "ControlMode") |
| | | { |
| | |
| | | } |
| | | DeviceStationStatusReport(AgvStatus, outStationStatus, inStationStatus, sSeqNo); |
| | | } |
| | | catch (Exception) |
| | | catch (Exception ex) |
| | | { |
| | | DeviceReceiveJobResponse("1"); |
| | | ErrorReport("2199", "A", "00"); |
| | | LogFactory.GetLog("Host935DeviceStationStatusInvite").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | JobReady("1"); |
| | | } |
| | | |
| | | LogFactory.GetLog("Host935").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(sSeqNo)}{Environment.NewLine}", ""); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | try |
| | | { |
| | | DeleteHostLog(105); |
| | | var parseMessage = GetParse(message); |
| | | var lcationEnd = parseMessage.body.ToLocation; |
| | | switch (parseMessage.body.ret) |
| | | { |
| | | //OK |
| | | case "0": |
| | | var location = SqlSugarHelper.DbWMS.Queryable<DtLocationInfo>().Where(x => x.LocationCode == parseMessage.body.ToLocation).First(); |
| | | if (location == null) |
| | | { |
| | | ErrorReport("2102", "A", "00"); |
| | | Thread.Sleep(500); |
| | | RecreateGetLocation(parseMessage.body.FromLocation, parseMessage.body.ToLocation, parseMessage.body.JobType, parseMessage.body.TrayIdList.Substring(0, 10)); |
| | | return; |
| | | } |
| | | if (location.LocationStatus == (int)LocationEnum.Free) |
| | | { |
| | | var task = SqlSugarHelper.DbWMS.Queryable<Dt_Task>().Where(x => x.PalletCode == parseMessage.body.TrayIdList.Substring(0, 10)).First(); |
| | | if (task == null) |
| | | { |
| | | location.LocationStatus = (int)LocationEnum.Lock; |
| | | var tasknew = InsertWMSTask(parseMessage); |
| | | InsertAGVTask(tasknew); |
| | | BaseDal.AddData(tasknew); |
| | | SqlSugarHelper.DbWMS.Updateable(location); |
| | | Thread.Sleep(500); |
| | | //915 |
| | | JobReady("0"); |
| | | } |
| | | else |
| | | { |
| | | var Agvtask = SqlSugarHelper.DbAGV.Queryable<task_call>().Where(x => x.d_involed5 == task.TaskNum.ToString()).First(); |
| | | location.LocationStatus = (int)LocationEnum.Lock; |
| | | task.TargetAddress = lcationEnd; |
| | | Agvtask.d_involed2 = lcationEnd; |
| | | SqlSugarHelper.DbWMS.Updateable(task); |
| | | SqlSugarHelper.DbWMS.Updateable(location); |
| | | SqlSugarHelper.DbAGV.Updateable(Agvtask); |
| | | Thread.Sleep(500); |
| | | //915 |
| | | JobReady("0"); |
| | | } |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | ErrorReport(Restocking, "A", "00"); |
| | | Thread.Sleep(500); |
| | | RecreateGetLocation(parseMessage.body.FromLocation, parseMessage.body.ToLocation, parseMessage.body.JobType, parseMessage.body.TrayIdList.Substring(0, 10)); |
| | | return; |
| | | } |
| | | GetLocation(parseMessage,true); |
| | | break; |
| | | //NG |
| | | case "1": |
| | | AddErrorMessage("2019", "Host", StationParse(parseMessage.body.FromLocation)); |
| | | break; |
| | | //æ åºä½åé
|
| | | case "2": |
| | | AddErrorMessage("2020", "Host", StationParse(parseMessage.body.FromLocation)); |
| | | break; |
| | | case "9": |
| | | AddErrorMessage("2021", "Host", StationParse(parseMessage.body.FromLocation)); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | |
| | | LogFactory.GetLog("Host106éæ°åé
åºä½").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(parseMessage)}{Environment.NewLine}", ""); |
| | | } |
| | | catch (Exception) |
| | | catch (Exception ex) |
| | | { |
| | | DeviceReceiveJobResponse("1"); |
| | | ErrorReport("2199", "A", "00"); |
| | | LogFactory.GetLog("Host106éæ°åé
åºä½RecreateGetLocation").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | JobReady("1"); |
| | | } |
| | | } |
| | | |
| | |
| | | /// <param name="message"></param> |
| | | public void EmptyOutBoundResponse(string message) |
| | | { |
| | | if (message != null && message == "0") |
| | | try |
| | | { |
| | | DeviceStateReport("I"); |
| | | Thread.Sleep(2000); |
| | | JobReady("1"); |
| | | DeleteHostLog(107); |
| | | if (message != null) |
| | | { |
| | | switch (message) |
| | | { |
| | | case "0": |
| | | AGVStatusRespone Agvstatus = GetAGVStatus(); |
| | | DeviceStateReport(GetAGVStatus(Agvstatus.RuntimeStatus)); |
| | | Thread.Sleep(2000); |
| | | JobReady("1"); |
| | | break; |
| | | case "1": |
| | | AddErrorMessage("2023", "Host", ""); |
| | | break; |
| | | case "9": |
| | | AddErrorMessage("2024", "Host", ""); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | LogFactory.GetLog("Host108空åºåºååº").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(message)}{Environment.NewLine}", ""); |
| | | catch (Exception ex) |
| | | { |
| | | ErrorReport("2199", "A", "00"); |
| | | LogFactory.GetLog("Host108空åºåºååºEmptyOutBoundResponse").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Hostä¸åç«è¦ä»»å¡ 987 |
| | | /// </summary> |
| | | public void FireAlarm(string Location, string SeqNo) |
| | | { |
| | | try |
| | | { |
| | | Dt_Task taskNew = new Dt_Task(); |
| | | var stock = SqlSugarHelper.DbWMS.Queryable<DtStockInfo>().Where(x => x.LocationCode == Location).First(); |
| | | |
| | | var location = SqlSugarHelper.DbWMS.Queryable<Dt_Task>().Where(x => x.SourceAddress == Location).First(); |
| | | if (location != null) |
| | | { |
| | | FireAlarmReportResponse(SeqNo, "0", Location); |
| | | return; |
| | | } |
| | | var stationOne = SqlSugarHelper.DbWMS.Queryable<Dt_Task>().Where(x => x.TargetAddress == "B001::1").ToList(); |
| | | var stationTwo = SqlSugarHelper.DbWMS.Queryable<Dt_Task>().Where(x => x.TargetAddress == "B001::2").ToList(); |
| | | |
| | | if (stationOne.Count > 0 && stationTwo.Count > 0) |
| | | { |
| | | if (stationOne.Count > stationTwo.Count) |
| | | { |
| | | taskNew = GetFireAlarm(Location, "B001::2", stock == null ? "F" + DateTime.Now.ToString("HHmmss") + new Random().Next(100, 1000) : stock.PalletCode, SeqNo); |
| | | } |
| | | else |
| | | { |
| | | taskNew = GetFireAlarm(Location, "B001::1", stock == null ? "F" + DateTime.Now.ToString("HHmmss") + new Random().Next(100, 1000) : stock.PalletCode, SeqNo); |
| | | } |
| | | FireAlarmReportResponse(SeqNo, "0", Location); |
| | | } |
| | | else |
| | | { |
| | | StationStatus stationOut = GetStationStatus("B001"); |
| | | |
| | | if (stationOut != null && stationOut.WorkstationO == "0" && stationOne.Count == 0) |
| | | { |
| | | taskNew = GetFireAlarm(Location, "B001::1", stock == null ? "F" + DateTime.Now.ToString("HHmmss") + new Random().Next(100, 1000) : stock.PalletCode, SeqNo); |
| | | } |
| | | else if (stationOut != null && stationOut.WorkstationT == "0" && stationTwo.Count == 0) |
| | | { |
| | | taskNew = GetFireAlarm(Location, "B001::2", stock == null ? "F" + DateTime.Now.ToString("HHmmss") + new Random().Next(100, 1000) : stock.PalletCode, SeqNo); |
| | | } |
| | | else |
| | | { |
| | | taskNew = GetFireAlarm(Location, "B001::2", stock == null ? "F" + DateTime.Now.ToString("HHmmss") + new Random().Next(100, 1000) : stock.PalletCode, SeqNo); |
| | | } |
| | | FireAlarmReportResponse(SeqNo, "0", Location); |
| | | } |
| | | BaseDal.AddData(taskNew); |
| | | InsertAGVTask(taskNew); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | ErrorReport("2199", "A", "00"); |
| | | LogFactory.GetLog("ç«è¦987FireAlarm").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// è·åæ¶é²ä»»å¡ |
| | | /// </summary> |
| | | /// <param name="SourceAddress">èµ·å§å°å</param> |
| | | /// <param name="TargetAddress">ç»ç¹å°å</param> |
| | | /// <param name="PalletCode">æçå·</param> |
| | | /// <param name="SeqNo">Hoståºåå·</param> |
| | | /// <returns></returns> |
| | | public Dt_Task GetFireAlarm(string SourceAddress, string TargetAddress, string PalletCode, string SeqNo) |
| | | { |
| | | return new Dt_Task() |
| | | { |
| | | SourceAddress = SourceAddress, |
| | | TargetAddress = TargetAddress, |
| | | CurrentAddress = SourceAddress, |
| | | NextAddress = TargetAddress, |
| | | TaskType = (int)TaskFireAlarmTypeEnum.FireAlarmOut, |
| | | TaskState = (int)TaskFireAlarmStatusEnum.FireAlarmNew, |
| | | Remark = TargetAddress, |
| | | TaskNum = BaseDal.GetTaskNo().Result, |
| | | PalletCode = PalletCode == null ? "" : PalletCode, |
| | | Dispatchertime = DateTime.Now, |
| | | Grade = 1, |
| | | SeqNo = Convert.ToInt32(SeqNo), |
| | | CommandID = Convert.ToInt32(987), |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// HOSTè·å设å¤ç¶æ å·¥åº909 |
| | | /// </summary> |
| | | public void DeviceStatusReportRequest() |
| | | { |
| | | AGVStatusRespone status = GetAGVStatus(); |
| | | |
| | | HOSTAGVStatus AgvStatus = new HOSTAGVStatus() |
| | | try |
| | | { |
| | | RuntimeStatus = CapitalizeFirstLetter(status.RuntimeStatus), |
| | | AutoStatus = status.AutoStatus == "MaintenanceMode" ? "1" : "0", |
| | | DeleteHostLog(910); |
| | | AGVStatusRespone status = GetAGVStatus(); |
| | | |
| | | }; |
| | | if (status.RuntimeStatus == "Idle" && status.AutoStatus == "ControlMode") |
| | | { |
| | | AgvStatus.Ready = "1"; |
| | | HOSTAGVStatus AgvStatus = new HOSTAGVStatus() |
| | | { |
| | | RuntimeStatus = CapitalizeFirstLetter(status.RuntimeStatus), |
| | | AutoStatus = status.AutoStatus == "MaintenanceMode" ? "1" : "0", |
| | | |
| | | }; |
| | | if (status.RuntimeStatus == "Idle" && status.AutoStatus == "ControlMode") |
| | | { |
| | | AgvStatus.Ready = "1"; |
| | | } |
| | | else |
| | | { |
| | | AgvStatus.Ready = "0"; |
| | | } |
| | | string axis = "000000"; |
| | | |
| | | DeviceStatusReportResponse(AgvStatus, axis, axis); |
| | | } |
| | | else |
| | | catch (Exception ex) |
| | | { |
| | | AgvStatus.Ready = "0"; |
| | | ErrorReport("2199", "A", "00"); |
| | | LogFactory.GetLog("Hostå¿è·³").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | string axis = "000000"; |
| | | |
| | | } |
| | | |
| | | DeviceStatusReportResponse(AgvStatus, axis, axis); |
| | | |
| | | LogFactory.GetLog("Hostå¿è·³").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(AgvStatus)}{Environment.NewLine}{JsonConvert.SerializeObject(status)}{Environment.NewLine}", ""); |
| | | /// <summary> |
| | | /// WMS忥Hostæ¶é´ å·¥åº301 |
| | | /// </summary> |
| | | public void UpdateLocalTime(string Time,string SeqNo) |
| | | { |
| | | try |
| | | { |
| | | SYSTEMTIME newTime = new SYSTEMTIME |
| | | { |
| | | Year = Convert.ToUInt16(Time.Substring(0,4)), |
| | | Month = Convert.ToUInt16(Time.Substring(4, 2)), |
| | | Day = Convert.ToUInt16(Time.Substring(6, 2)), |
| | | Hour = Convert.ToUInt16(Time.Substring(8, 2)), |
| | | Minute = Convert.ToUInt16(Time.Substring(10, 2)), |
| | | Second = Convert.ToUInt16(Time.Substring(12, 2)), |
| | | Milliseconds = 0 |
| | | }; |
| | | if (SetLocalTime(ref newTime)) |
| | | { |
| | | UpdateLocalTimeResponse("0", SeqNo); |
| | | Console.WriteLine("ç³»ç»æ¶é´å·²æåä¿®æ¹ã"); |
| | | } |
| | | else |
| | | { |
| | | UpdateLocalTimeResponse("1", SeqNo); |
| | | Console.WriteLine("ä¿®æ¹ç³»ç»æ¶é´å¤±è´¥ã请确ä¿ä»¥ç®¡çåæéè¿è¡æ¤ç¨åºã"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | ErrorReport("2199", "A", "00"); |
| | | LogFactory.GetLog("UpdateLocalTimeæ¶é´åæ¥").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}{ex.StackTrace}", ""); |
| | | } |
| | | |
| | | } |
| | | #endregion |
| | | |
| | |
| | | // å¤å¶åå§æ°ç»çæææ°æ®å°æ°æ°ç»çä¸é´é¨å |
| | | Array.Copy(buffer, 0, newArray, 1, buffer.Length); |
| | | |
| | | //var parseMessage = GetParse(str); |
| | | LogFactory.GetLog("Socketå鿥æ").Info(true, str); |
| | | return newArray; |
| | | } |
| | | catch (Exception ex) |
| | |
| | | }); |
| | | return inStationStatus; |
| | | } |
| | | public ParseMessage SubString(string Y) |
| | | { |
| | | |
| | | const string STX = "0x02"; |
| | | const string ETX = "0x03"; |
| | | |
| | | // æ£æ¥æ¯å¦ä»¥ STX å¼å¤´ãETX ç»å°¾ |
| | | if (Y.Substring(0, 4) == STX && Y.Substring(Y.Length - 4) == ETX) |
| | | { |
| | | string str = Y.Substring(4, Y.Length - 8); |
| | | byte[] message = Encoding.UTF8.GetBytes(str); |
| | | int newLength = message.Length - 2; |
| | | |
| | | if (newLength < 0) |
| | | { |
| | | throw new ArgumentException("æ°ç»é¿åº¦ä¸è¶³ï¼æ æ³å»ææå两ä½ã"); |
| | | } |
| | | |
| | | byte[] newArray = new byte[newLength]; |
| | | Array.Copy(message, 0, newArray, 0, newLength); |
| | | string calculatedChecksum = GetCheckSum(newArray); |
| | | |
| | | string receivedChecksum = str.Substring(str.Length - 2); |
| | | |
| | | if (calculatedChecksum == receivedChecksum) |
| | | { |
| | | var x = Encoding.UTF8.GetString(newArray); |
| | | ParseMessage parseMessage = new ParseMessage() |
| | | { |
| | | bDir = x.Substring(0, 1), |
| | | bObjID = x.Substring(2, 10), |
| | | bReply = x.Substring(11, 1), |
| | | bCmdID = x.Substring(12, 3), |
| | | nSeqNo = x.Substring(15, 5), |
| | | //Body = x.Substring(21), |
| | | }; |
| | | return parseMessage; |
| | | } |
| | | else |
| | | { |
| | | Console.WriteLine("æ ¡éªå¤±è´¥ï¼"); |
| | | return null; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | Console.WriteLine("æ ææ¥ææ ¼å¼ï¼"); |
| | | return null; |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region å®ä¹å¯¹è±¡ |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region ç§ææ¹æ³ |
| | | |
| | | private Dt_Task InsertWMSTask(ParseMessage parseMessage) |
| | | /// <summary> |
| | | /// æ·»å WMSä»»å¡ |
| | | /// </summary> |
| | | /// <param name="parseMessage"></param> |
| | | /// <exception cref="Exception"></exception> |
| | | private void InsertWMSTask(ParseMessage parseMessage) |
| | | { |
| | | int taskType = 0; |
| | | int taskState = 0; |
| | |
| | | if (parseMessage.body.JobType == "I") |
| | | { |
| | | Dt_StationManager Instation = _stationManagerRepository.QueryFirst(x => x.HostName == parseMessage.body.FromLocation.Substring(4, 2)); |
| | | task.SourceAddress = Instation.stationName; |
| | | task.SourceAddress = StationParse(parseMessage.body.FromLocation); |
| | | task.TargetAddress = parseMessage.body.ToLocation; |
| | | task.CurrentAddress = Instation.stationName; |
| | | task.CurrentAddress = StationParse(parseMessage.body.FromLocation); |
| | | task.NextAddress = parseMessage.body.ToLocation; |
| | | taskType = (int)TaskInboundTypeEnum.Inbound; |
| | | taskState = (int)TaskInStatusEnum.InNew; |
| | |
| | | else if (parseMessage.body.JobType == "O") |
| | | { |
| | | task.SourceAddress = parseMessage.body.FromLocation; |
| | | Dt_StationManager Instation = _stationManagerRepository.QueryFirst(x => x.HostName == parseMessage.body.ToLocation.Substring(4, 2)); |
| | | task.TargetAddress = Instation.stationName; |
| | | task.TargetAddress = StationParse(parseMessage.body.ToLocation); |
| | | task.CurrentAddress = parseMessage.body.FromLocation; |
| | | task.NextAddress = Instation.stationName; |
| | | task.NextAddress = StationParse(parseMessage.body.ToLocation); |
| | | taskType = (int)TaskOutboundTypeEnum.Outbound; |
| | | taskState = (int)TaskOutStatusEnum.OutNew; |
| | | task.Remark = parseMessage.body.ToLocation; |
| | | } |
| | | else if (parseMessage.body.JobType == "C") |
| | | { |
| | | task.SourceAddress = parseMessage.body.FromLocation; |
| | | task.TargetAddress = StationParse(parseMessage.body.ToLocation); |
| | | task.CurrentAddress = parseMessage.body.FromLocation; |
| | | task.NextAddress = StationParse(parseMessage.body.ToLocation); |
| | | taskType = (int)TaskOutboundTypeEnum.OutQuality; |
| | | taskState = (int)TaskOutStatusEnum.OutNew; |
| | | task.Remark = parseMessage.body.ToLocation; |
| | | } |
| | | else if (parseMessage.body.JobType == "S") |
| | | { |
| | | Dt_StationManager stationone = _stationManagerRepository.QueryFirst(x => x.HostName == parseMessage.body.FromLocation.Substring(4, 2)); |
| | | Dt_StationManager stationtwo = _stationManagerRepository.QueryFirst(x => x.HostName == parseMessage.body.ToLocation.Substring(4, 2)); |
| | | taskType = (int)TaskStationTypeEnum.StationToStation; |
| | | taskState = (int)TaskOutStatusEnum.OutNew; |
| | | task.SourceAddress = stationone.stationName; |
| | | task.TargetAddress = stationtwo.stationName; |
| | | task.CurrentAddress = stationone.stationName; |
| | | task.NextAddress = stationtwo.stationName; |
| | | task.SourceAddress = StationParse(parseMessage.body.FromLocation) ; |
| | | task.TargetAddress = StationParse(parseMessage.body.ToLocation); |
| | | task.CurrentAddress = StationParse(parseMessage.body.FromLocation); |
| | | task.NextAddress = StationParse(parseMessage.body.ToLocation); |
| | | task.Remark = parseMessage.body.FromLocation; |
| | | task.HostName = parseMessage.body.ToLocation; |
| | | task.HostName = parseMessage.body.ToLocation; |
| | | } |
| | | else if (parseMessage.body.JobType == "R") |
| | | { |
| | | taskType = (int)TaskRelocationTypeEnum.Relocation; |
| | | taskState = (int)TaskRelocationStatusEnum.RelocationNew; |
| | | |
| | | task.SourceAddress = parseMessage.body.FromLocation; |
| | | task.TargetAddress = parseMessage.body.ToLocation; |
| | | task.CurrentAddress = parseMessage.body.FromLocation; |
| | |
| | | task.Grade = 1; |
| | | task.SeqNo = Convert.ToInt32(parseMessage.nSeqNo); |
| | | task.CommandID = Convert.ToInt32(parseMessage.bCmdID); |
| | | return task; |
| | | BaseDal.AddData(task); |
| | | InsertAGVTask(task); |
| | | } |
| | | |
| | | |
| | | public void GetLocation(ParseMessage parseMessage,bool repeat=false) |
| | | { |
| | | |
| | | switch (parseMessage.body.JobType) |
| | | { |
| | | case "I": |
| | | var locationIn = SqlSugarHelper.DbWMS.Queryable<DtLocationInfo>().Where(x => x.LocationCode == parseMessage.body.ToLocation).First(); |
| | | if (locationIn == null) |
| | | { |
| | | ErrorReport("2102", "A", "00"); |
| | | return; |
| | | } |
| | | if (locationIn.LocationStatus == (int)LocationEnum.Free) |
| | | { |
| | | var taskIn = SqlSugarHelper.DbWMS.Queryable<Dt_Task>().Where(x => x.PalletCode == parseMessage.body.TrayIdList.Substring(0, 10)).First(); |
| | | if (taskIn != null) |
| | | { |
| | | _taskService.UpdateTask(StationParse(parseMessage.body.FromLocation), parseMessage.body.ToLocation, parseMessage.body.TrayIdList.Substring(0, 10)); |
| | | } |
| | | else |
| | | { |
| | | InsertWMSTask(parseMessage); |
| | | } |
| | | Thread.Sleep(500); |
| | | JobReady("0"); |
| | | } |
| | | else |
| | | { |
| | | RecreateGetLocation(parseMessage.body.FromLocation, parseMessage.body.ToLocation, parseMessage.body.JobType, parseMessage.body.TrayIdList.Substring(0, 10)); |
| | | } |
| | | break; |
| | | case "O": |
| | | case "C": |
| | | var locationOut = SqlSugarHelper.DbWMS.Queryable<DtLocationInfo>().Where(x => x.LocationCode == parseMessage.body.FromLocation).First(); |
| | | if (locationOut == null) |
| | | { |
| | | ErrorReport("2102", "A", "00"); |
| | | return; |
| | | } |
| | | if (locationOut.LocationStatus == (int)LocationEnum.InStock) |
| | | { |
| | | var taskOut = SqlSugarHelper.DbWMS.Queryable<Dt_Task>().Where(x => x.PalletCode == parseMessage.body.TrayIdList.Substring(0, 10)).First(); |
| | | if (taskOut != null) |
| | | { |
| | | _taskService.UpdateTask(locationOut.LocationCode, StationParse(parseMessage.body.ToLocation), parseMessage.body.TrayIdList.Substring(0, 10)); |
| | | } |
| | | else |
| | | { |
| | | InsertWMSTask(parseMessage); |
| | | } |
| | | Thread.Sleep(500); |
| | | JobReady("0"); |
| | | Thread.Sleep(500); |
| | | //104 |
| | | DeviceReceiveJobResponse("0"); |
| | | } |
| | | else |
| | | { |
| | | EmptyOutBound(parseMessage.body.FromLocation, parseMessage.body.ToLocation, parseMessage.body.TrayIdList.Substring(0, 10)); |
| | | _taskService.AddStcokHty(parseMessage.body.TrayIdList.Substring(0, 10), parseMessage.body.FromLocation); |
| | | } |
| | | break; |
| | | case "S": |
| | | var taskS = SqlSugarHelper.DbWMS.Queryable<Dt_Task>().Where(x => x.PalletCode == parseMessage.body.TrayIdList.Substring(0, 10)).First(); |
| | | if (taskS != null) |
| | | { |
| | | _taskService.UpdateTask(StationParse(parseMessage.body.FromLocation), StationParse(parseMessage.body.ToLocation), parseMessage.body.TrayIdList.Substring(0, 10)); |
| | | } |
| | | else |
| | | { |
| | | InsertWMSTask(parseMessage); |
| | | } |
| | | Thread.Sleep(500); |
| | | JobReady("0"); |
| | | |
| | | break; |
| | | case "R": |
| | | var locationA = SqlSugarHelper.DbWMS.Queryable<DtLocationInfo>().Where(x => x.LocationCode == parseMessage.body.FromLocation).First(); |
| | | var locationB = SqlSugarHelper.DbWMS.Queryable<DtLocationInfo>().Where(x => x.LocationCode == parseMessage.body.ToLocation).First(); |
| | | if (locationA == null || locationB == null) |
| | | { |
| | | ErrorReport("2102", "A", "00"); |
| | | return; |
| | | } |
| | | if (locationA.LocationStatus == (int)LocationEnum.InStock && locationB.LocationStatus == (int)LocationEnum.Free) |
| | | { |
| | | var taskR = SqlSugarHelper.DbWMS.Queryable<Dt_Task>().Where(x => x.PalletCode == parseMessage.body.TrayIdList.Substring(0, 10)).First(); |
| | | if (taskR != null) |
| | | { |
| | | |
| | | _taskService.UpdateTask(parseMessage.body.FromLocation, parseMessage.body.ToLocation, parseMessage.body.TrayIdList.Substring(0, 10)); |
| | | } |
| | | else |
| | | { |
| | | InsertWMSTask(parseMessage); |
| | | } |
| | | Thread.Sleep(500); |
| | | JobReady("0"); |
| | | } |
| | | else |
| | | { |
| | | RecreateGetLocation(parseMessage.body.FromLocation, parseMessage.body.ToLocation, parseMessage.body.JobType, parseMessage.body.TrayIdList.Substring(0, 10)); |
| | | } |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// æ·»å AGVä»»å¡ |
| | |
| | | { |
| | | string SourceAddress = string.Empty; |
| | | string TargetAddress = string.Empty; |
| | | string AGVType = string.Empty; |
| | | if (task.TaskType == (int)TaskInboundTypeEnum.Inbound) |
| | | { |
| | | SourceAddress = task.SourceAddress; |
| | | AGVType = "2"; |
| | | TargetAddress = InsertHyphenEveryTwoChars(task.TargetAddress); |
| | | } |
| | | else if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound) |
| | | { |
| | | SourceAddress = InsertHyphenEveryTwoChars(task.SourceAddress); |
| | | TargetAddress = task.TargetAddress; |
| | | AGVType = "4"; |
| | | } |
| | | else if (task.TaskType == (int)TaskOutboundTypeEnum.OutQuality) |
| | | { |
| | | SourceAddress = InsertHyphenEveryTwoChars(task.SourceAddress); |
| | | TargetAddress = task.TargetAddress; |
| | | AGVType = "128"; |
| | | } |
| | | else if (task.TaskType == (int)TaskRelocationTypeEnum.Relocation) |
| | | { |
| | | TargetAddress = InsertHyphenEveryTwoChars(task.TargetAddress); |
| | | SourceAddress = InsertHyphenEveryTwoChars(task.SourceAddress); |
| | | AGVType = "16"; |
| | | } |
| | | else if (task.TaskType == (int)TaskStationTypeEnum.StationToStation) |
| | | { |
| | | TargetAddress = task.TargetAddress; |
| | | SourceAddress = task.SourceAddress; |
| | | SourceAddress = InsertHyphenEveryTwoChars(task.SourceAddress); |
| | | AGVType = "8"; |
| | | } |
| | | else if (task.TaskType == (int)TaskFireAlarmTypeEnum.FireAlarmOut) |
| | | { |
| | | TargetAddress = task.TargetAddress; |
| | | SourceAddress = InsertHyphenEveryTwoChars(task.SourceAddress); |
| | | AGVType = "1"; |
| | | } |
| | | task_call task_Call = new task_call() |
| | | { |
| | | d_task_type = task.TaskType == (int)TaskTypeEnum.Inbound ? "1" : "2", |
| | | d_task_type = AGVType, |
| | | d_floor = "1", |
| | | d_involed1 = SourceAddress, |
| | | d_involed2 = TargetAddress, |
| | | d_involed5 = task.TaskNum.ToString(), |
| | | }; |
| | | |
| | | return SqlSugarHelper.DbAGV.Insertable(task_Call).ExecuteCommand(); |
| | | var x = SqlSugarHelper.DbAGV.Insertable(task_Call).ExecuteCommand(); |
| | | LogFactory.GetLog("æå
¥æ°æ®å°AGV").InfoFormat(true, $"请æ±åæ°ï¼{JsonConvert.SerializeObject(x)}", ""); |
| | | return x; |
| | | } |
| | | public ParseMessage GetParse(string x) |
| | | { |
| | | return new ParseMessage() |
| | | |
| | | if (string.IsNullOrEmpty(x)) |
| | | { |
| | | bDir = x.Substring(0, 1), |
| | | bObjID = x.Substring(2, 10), |
| | | bReply = x.Substring(11, 1), |
| | | bCmdID = x.Substring(12, 3), |
| | | nSeqNo = x.Substring(15, 5), |
| | | body = new ReceiveBody |
| | | { |
| | | ret = x.Substring(20, 1), |
| | | JobOrderID = x.Substring(21, 16), |
| | | priority = x.Substring(37, 1), |
| | | FromLocation = x.Substring(38, 6), |
| | | ToLocation = x.Substring(44, 6), |
| | | JobType = x.Substring(50, 1), |
| | | TrayCnt = x.Substring(51, 1), |
| | | TrayIdList = x.Substring(52) |
| | | }, |
| | | throw new ArgumentNullException(nameof(x), "Input string cannot be null or empty"); |
| | | } |
| | | |
| | | // å®ä¹ææéè¦çåæ®µé¿åº¦åä½ç½® |
| | | var fieldDefinitions = new (int Start, int Length, string Name)[] |
| | | { |
| | | (0, 1, "bDir"), |
| | | (1, 10, "bObjID"), |
| | | (11, 1, "bReply"), |
| | | (12, 3, "bCmdID"), |
| | | (15, 5, "nSeqNo"), |
| | | (20, 1, "ret"), |
| | | (21, 16, "JobOrderID"), |
| | | (37, 1, "priority"), |
| | | (38, 6, "FromLocation"), |
| | | (44, 6, "ToLocation"), |
| | | (50, 1, "JobType"), |
| | | (51, 1, "TrayCnt"), |
| | | (52, x.Length - 52, "TrayIdList") // å¯åé¿åº¦å段 |
| | | }; |
| | | |
| | | // è®¡ç®æéæå°é¿åº¦ |
| | | int minLength = fieldDefinitions.Max(f => f.Start + f.Length); |
| | | |
| | | if (x.Length < minLength) |
| | | { |
| | | // 妿å符串é¿åº¦ä¸è¶³ï¼å¯ä»¥éæ©è®°å½è¦åææ¥å¿ |
| | | // è¿éæä»¬ç»§ç»å¤çï¼å°½å¯è½å¤å°è§£æå段 |
| | | } |
| | | |
| | | // è¾
婿¹æ³ï¼å®å
¨çåå符串æªåï¼é¿åº¦ä¸è¶³æ¶è¿å空å符串 |
| | | string SafeSubstringOrDefault(string source, int start, int length, string fieldName) |
| | | { |
| | | if (start < 0 || start >= source.Length) |
| | | { |
| | | return ""; // è¿å空å符串 |
| | | } |
| | | |
| | | if (length < 0) |
| | | { |
| | | return ""; // è¿å空å符串 |
| | | } |
| | | |
| | | if (start + length > source.Length) |
| | | { |
| | | length = source.Length - start; // è°æ´é¿åº¦ä»¥é¿å
è¶ç |
| | | } |
| | | |
| | | return source.Substring(start, length); |
| | | } |
| | | |
| | | // æå»ºç»æå¯¹è±¡ |
| | | var result = new ParseMessage(); |
| | | |
| | | // è®¾ç½®åºæ¬å段 |
| | | result.bDir = SafeSubstringOrDefault(x, fieldDefinitions[0].Start, fieldDefinitions[0].Length, fieldDefinitions[0].Name); |
| | | result.bObjID = SafeSubstringOrDefault(x, fieldDefinitions[1].Start, fieldDefinitions[1].Length, fieldDefinitions[1].Name); |
| | | result.bReply = SafeSubstringOrDefault(x, fieldDefinitions[2].Start, fieldDefinitions[2].Length, fieldDefinitions[2].Name); |
| | | result.bCmdID = SafeSubstringOrDefault(x, fieldDefinitions[3].Start, fieldDefinitions[3].Length, fieldDefinitions[3].Name); |
| | | result.nSeqNo = SafeSubstringOrDefault(x, fieldDefinitions[4].Start, fieldDefinitions[4].Length, fieldDefinitions[4].Name); |
| | | |
| | | // 设置bodyåæ®µ |
| | | result.body = new ReceiveBody |
| | | { |
| | | ret = SafeSubstringOrDefault(x, fieldDefinitions[5].Start, fieldDefinitions[5].Length, fieldDefinitions[5].Name), |
| | | JobOrderID = SafeSubstringOrDefault(x, fieldDefinitions[6].Start, fieldDefinitions[6].Length, fieldDefinitions[6].Name), |
| | | priority = SafeSubstringOrDefault(x, fieldDefinitions[7].Start, fieldDefinitions[7].Length, fieldDefinitions[7].Name), |
| | | FromLocation = SafeSubstringOrDefault(x, fieldDefinitions[8].Start, fieldDefinitions[8].Length, fieldDefinitions[8].Name), |
| | | ToLocation = SafeSubstringOrDefault(x, fieldDefinitions[9].Start, fieldDefinitions[9].Length, fieldDefinitions[9].Name), |
| | | JobType = SafeSubstringOrDefault(x, fieldDefinitions[10].Start, fieldDefinitions[10].Length, fieldDefinitions[10].Name), |
| | | TrayCnt = SafeSubstringOrDefault(x, fieldDefinitions[11].Start, fieldDefinitions[11].Length, fieldDefinitions[11].Name), |
| | | TrayIdList = SafeSubstringOrDefault(x, fieldDefinitions[12].Start, fieldDefinitions[12].Length, fieldDefinitions[12].Name) |
| | | }; |
| | | |
| | | return result; |
| | | } |
| | | |
| | | public AGVStatusRespone GetAGVStatus() |
| | | { |
| | | string urlnew = url + "/ilns/AGV/getState"; |
| | |
| | | public StationStatus GetStationStatus(string stationName) |
| | | { |
| | | string urlnew = url + "/ilns/ctrl/getState"; |
| | | var result = HttpsClient.PostAsync(urlnew, JsonConvert.DeserializeObject<Dictionary<string, object>>(new { ctrlName = "B001" }.ToJson())).Result; |
| | | var result = HttpsClient.PostAsync(urlnew, JsonConvert.DeserializeObject<Dictionary<string, object>>(new { ctrlName = stationName }.ToJson())).Result; |
| | | return JsonConvert.DeserializeObject<StationStatus>(result.ToString()); |
| | | } |
| | | public void ReportStationErrorMeaage(string StationName) |
| | | { |
| | | string urlnew = url + "/ilns/setctrlerr"; |
| | | var result = HttpsClient.PostAsync(urlnew, JsonConvert.DeserializeObject<Dictionary<string, object>>(new { ctrlName = StationName }.ToJson())).Result; |
| | | } |
| | | public void ReportAgvErrorMeaage(string ErrorCode) |
| | | { |
| | | string urlnew = url + "/ilns/rpterr"; |
| | | var result = HttpsClient.PostAsync(urlnew, JsonConvert.DeserializeObject<Dictionary<string, object>>(new { code = ErrorCode }.ToJson())).Result; |
| | | } |
| | | public void AddErrorMessage(string Code, string ReportName, string Location = "") |
| | | { |
| | | var errorDescription = SqlSugarHelper.DbWMS.Queryable<Dt_ErrorDescription>().Where(x => x.ErrorCode == Code).First(); |
| | | if (errorDescription != null) |
| | | { |
| | | Dt_HostErrorMessage hostErrorMessage = new Dt_HostErrorMessage() |
| | | { |
| | | ErrorCode = Code, |
| | | ErrorMessage = errorDescription.ErrorMessgae, |
| | | AlarmSource = errorDescription.AlarmSource, |
| | | Grade = errorDescription.Grade, |
| | | ReportName = ReportName, |
| | | Creater = "System", |
| | | Location = Location == "" ? "" : Location, |
| | | CreateDate = DateTime.Now, |
| | | }; |
| | | SqlSugarHelper.DbWMS.Insertable(hostErrorMessage).ExecuteCommand(); |
| | | if (Location == "") |
| | | { |
| | | ReportAgvErrorMeaage(Code); |
| | | } |
| | | else |
| | | { |
| | | ReportStationErrorMeaage(Location); |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | //todeä¸åå¨å¼å¸¸Code |
| | | } |
| | | } |
| | | public void DeleteHostLog(int CommandID) |
| | | { |
| | | var hostLog = SqlSugarHelper.DbWMS.Queryable<Dt_HostLog>().Where(x => x.CommandID == CommandID).First(); |
| | | if (hostLog != null) |
| | | { |
| | | SqlSugarHelper.DbWMS.Deleteable(hostLog).ExecuteCommand(); |
| | | } |
| | | } |
| | | |
| | | public string StationParse(string station) |
| | | { |
| | | var Station = SqlSugarHelper.DbWMS.Queryable<Dt_StationManager>().Where(x => x.HostName == station.Substring(4, 2)).First(); |
| | | if(Station != null) |
| | | { |
| | | return Station.stationName; |
| | | } |
| | | else |
| | | { |
| | | return ""; |
| | | } |
| | | } |
| | | |
| | | public string CapitalizeFirstLetter(string s) |
| | | { |
| | | if (string.IsNullOrEmpty(s)) |
| | |
| | | char firstChar = s[0]; |
| | | return char.ToUpper(firstChar).ToString(); |
| | | } |
| | | |
| | | public string GetAGVStatus(string Status) |
| | | { |
| | | switch (Status) |
| | | { |
| | | case "Run": |
| | | return "R"; |
| | | case "Idle": |
| | | return "I"; |
| | | case "Trouble": |
| | | //æ
é |
| | | return "T"; |
| | | case "Pause": |
| | | return "S"; |
| | | case "Charge": |
| | | return "C"; |
| | | case "PowerOn": |
| | | return "P"; |
| | | case "PowerOFF": |
| | | return "O"; |
| | | default: break; |
| | | } |
| | | return "T"; |
| | | } |
| | | |
| | | public string InsertHyphenEveryTwoChars(string input) |
| | | { |
| | | if (string.IsNullOrEmpty(input)) |
| | |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ä¿®æ¹æ¬å°è®¡ç®æºæ¶é´ |
| | | // å®ä¹ System ç»æä½ |
| | | [StructLayout(LayoutKind.Sequential)] |
| | | public struct SYSTEMTIME |
| | | { |
| | | public ushort Year; |
| | | public ushort Month; |
| | | public ushort DayOfWeek; |
| | | public ushort Day; |
| | | public ushort Hour; |
| | | public ushort Minute; |
| | | public ushort Second; |
| | | public ushort Milliseconds; |
| | | } |
| | | |
| | | // 导å
¥ SetLocalTime 彿° |
| | | [DllImport("kernel32.dll", SetLastError = true)] |
| | | public static extern bool SetLocalTime(ref SYSTEMTIME st); |
| | | #endregion |
| | | } |
| | | } |