| | |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using HslCommunication.WebSocket; |
| | | using Newtonsoft.Json; |
| | | using Quartz; |
| | | using WIDESEA_Common.FillingEnum; |
| | | using WIDESEA_Model.Models.Basic; |
| | | using WIDESEAWCS_Core.BaseRepository; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Model.Models.TaskInfo; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_Tasks.Command; |
| | | using WIDESEAWCS_Tasks.DBName; |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | |
| | | [DisallowConcurrentExecution] |
| | | public class FillingJob : JobBase, IJob |
| | | { |
| | | |
| | | private readonly IRepository<Dt_FillingOrder> _FillingRepository; |
| | | private readonly IRepository<Dt_FillingOrder_Hty> _FillingHtyRepository; |
| | | |
| | | public FillingJob(IRepository<Dt_FillingOrder> FillingRepository, IRepository<Dt_FillingOrder_Hty> fillingHtyRepository) |
| | | { |
| | | _FillingRepository = FillingRepository; |
| | | _FillingHtyRepository = fillingHtyRepository; |
| | | } |
| | | |
| | | public Task Execute(IJobExecutionContext context) |
| | | { |
| | | //è¿æ¥è®¾å¤ |
| | |
| | | //OtherDevice TCevice = (OtherDevice)Storage.Devices.Find(v => v.DeviceName == "天车"); |
| | | if (device.Communicator.IsConnected) |
| | | { |
| | | //读 |
| | | short a = device.GetValue<FillingDBName, short>(FillingDBName.R_ceshi); |
| | | //å |
| | | device.SetValue(FillingDBName.W_ceshia, "zy"); |
| | | device.SetValue(FillingDBName.W_ceshib, "wq"); |
| | | device.SetValue(FillingDBName.W_ceshic, "df"); |
| | | ////读 |
| | | //short a = device.GetValue<FillingDBName, short>(FillingDBName.R_ceshi); |
| | | ////å |
| | | //device.SetValue(FillingDBName.W_ceshia, "zy"); |
| | | //device.SetValue(FillingDBName.W_ceshib, "wq"); |
| | | //device.SetValue(FillingDBName.W_ceshic, "df"); |
| | | |
| | | try |
| | | { |
| | | //æ¯å¦å·ç 宿 |
| | | short accomplish = device.GetValue<FillingDBName, short>(FillingDBName.R_Accomplish); |
| | | |
| | | if (accomplish == 1) |
| | | { |
| | | //è·åäºç»´ç |
| | | Dt_FillingOrder FillingOrder = GetFilling(); |
| | | if (FillingOrder != null) |
| | | { |
| | | |
| | | //ä»»å¡å®ä½è½¬å½ä»¤Model |
| | | FillingCommand? StackerCommand = FillingToCommand(FillingOrder); |
| | | if (StackerCommand != null) |
| | | { |
| | | //åéå½ä»¤ |
| | | device.SetValue(FillingDBName.W_QRcode1, StackerCommand.W_QRcode1); |
| | | device.SetValue(FillingDBName.W_QRcode2, StackerCommand.W_QRcode2); |
| | | device.SetValue(FillingDBName.W_QRcode3, StackerCommand.W_QRcode3); |
| | | device.SetValue(FillingDBName.W_QRcode4, StackerCommand.W_QRcode4); |
| | | device.SetValue(FillingDBName.W_QRcode5, StackerCommand.W_QRcode5); |
| | | device.SetValue(FillingDBName.W_QRcode6, StackerCommand.W_QRcode6); |
| | | device.SetValue(FillingDBName.W_QRcode7, StackerCommand.W_QRcode7); |
| | | device.SetValue(FillingDBName.W_QRcode8, StackerCommand.W_QRcode8); |
| | | device.SetValue(FillingDBName.W_QRcode9, StackerCommand.W_QRcode9); |
| | | device.SetValue(FillingDBName.W_QRcode10, StackerCommand.W_QRcode10); |
| | | device.SetValue(FillingDBName.W_QRcode11, StackerCommand.W_QRcode11); |
| | | device.SetValue(FillingDBName.W_QRcode12, StackerCommand.W_QRcode12); |
| | | device.SetValue(FillingDBName.W_QRcode13, StackerCommand.W_QRcode13); |
| | | device.SetValue(FillingDBName.W_QRcode14, StackerCommand.W_QRcode14); |
| | | device.SetValue(FillingDBName.W_QRcode15, StackerCommand.W_QRcode15); |
| | | device.SetValue(FillingDBName.W_Refresh, StackerCommand.W_Refresh); |
| | | |
| | | //çæåå²äºç»´ç ä¿¡æ¯ |
| | | FillingOrder.BarStatus = (int)FillingStatusEnum.ExecuteCompleted; |
| | | |
| | | Dt_FillingOrder_Hty FillingOrderHty = new Dt_FillingOrder_Hty(); |
| | | FillingOrderHty.ArticleNum = FillingOrder.ArticleNum; |
| | | FillingOrderHty.ArticleName = FillingOrder.ArticleName; |
| | | FillingOrderHty.Specification = FillingOrder.Specification; |
| | | FillingOrderHty.batchNum = FillingOrder.batchNum; |
| | | FillingOrderHty.BarCode = FillingOrder.BarCode; |
| | | FillingOrderHty.WorkOrder = FillingOrder.WorkOrder; |
| | | FillingOrderHty.BarNum = FillingOrder.BarNum; |
| | | FillingOrderHty.CreationTime = FillingOrder.CreationTime; |
| | | FillingOrderHty.WorkID = FillingOrder.WorkID; |
| | | FillingOrderHty.ProductType = FillingOrder.ProductType; |
| | | FillingOrderHty.BarStatus = FillingOrder.BarStatus; |
| | | FillingOrderHty.BarCodeID = FillingOrder.BarCodeID; |
| | | FillingOrderHty.ArticleNumID = FillingOrder.ArticleNumID; |
| | | FillingOrderHty.MaterialName = FillingOrder.MaterialName; |
| | | FillingOrderHty.WarehouseType = FillingOrder.WarehouseType; |
| | | FillingOrderHty.MaterialCode = FillingOrder.MaterialCode; |
| | | FillingOrderHty.Standby1 = FillingOrder.Standby1; |
| | | FillingOrderHty.Standby2 = FillingOrder.Standby2; |
| | | |
| | | |
| | | _FillingHtyRepository.AddData(FillingOrderHty); |
| | | _FillingRepository.DeleteData(FillingOrder); |
| | | string address = AppSettings.Get("WMSApiAddress"); |
| | | if (!string.IsNullOrEmpty(address)) |
| | | { |
| | | HttpHelper.Post($"{address}/api/FillingOrder/UpdateFilling?FillingNumber={FillingOrder.BarCode}", ""); |
| | | } |
| | | //å»¶è¿2s让ç½è£
æºæ´åä¿¡å· |
| | | Thread.Sleep(2000); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteError(nameof(StackerCraneJob), ex.Message); |
| | | } |
| | | } |
| | | } |
| | | return Task.CompletedTask; |
| | | } |
| | | |
| | | //è·åäºç»´ç |
| | | public Dt_FillingOrder GetFilling() |
| | | { |
| | | Dt_FillingOrder FillingOrder = new Dt_FillingOrder(); |
| | | |
| | | FillingOrder = _FillingRepository.QueryData(x => x.BarStatus == (int)FillingStatusEnum.Queue).OrderBy(x => x.Id).First(); |
| | | |
| | | return FillingOrder; |
| | | } |
| | | |
| | | //ä»»å¡å®ä½è½¬å½ä»¤Model |
| | | public FillingCommand FillingToCommand(Dt_FillingOrder FillingOrder) |
| | | { |
| | | FillingCommand fillingCommand = new FillingCommand(); |
| | | |
| | | //æåå符串 |
| | | int lengths = FillingOrder.BarCode.Length; |
| | | string BarCodes= FillingOrder.BarCode; |
| | | for (int i=0;i < 30 - lengths;i++) |
| | | { |
| | | BarCodes = BarCodes + "X"; |
| | | } |
| | | |
| | | fillingCommand.W_QRcode1 = BarCodes.Substring(0, 2); |
| | | fillingCommand.W_QRcode2 = BarCodes.Substring(2, 2); |
| | | fillingCommand.W_QRcode3 = BarCodes.Substring(4, 2); |
| | | fillingCommand.W_QRcode4 = BarCodes.Substring(6, 2); |
| | | fillingCommand.W_QRcode5 = BarCodes.Substring(8, 2); |
| | | fillingCommand.W_QRcode6 = BarCodes.Substring(10, 2); |
| | | fillingCommand.W_QRcode7 = BarCodes.Substring(12, 2); |
| | | fillingCommand.W_QRcode8 = BarCodes.Substring(14, 2); |
| | | fillingCommand.W_QRcode9 = BarCodes.Substring(16, 2); |
| | | fillingCommand.W_QRcode10 = BarCodes.Substring(18, 2); |
| | | fillingCommand.W_QRcode11 = BarCodes.Substring(20, 2); |
| | | fillingCommand.W_QRcode12 = BarCodes.Substring(22, 2); |
| | | fillingCommand.W_QRcode13 = BarCodes.Substring(24, 2); |
| | | fillingCommand.W_QRcode14 = BarCodes.Substring(26, 2); |
| | | fillingCommand.W_QRcode15 = BarCodes.Substring(28, 2); |
| | | fillingCommand.W_Refresh = "1"; |
| | | return fillingCommand; |
| | | } |
| | | } |
| | | } |