zhanghonglin
2026-03-21 beb0b5d9e1bab1ace04b5860b5ca308b6f913d4f
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Job/FillingJob.cs
@@ -3,8 +3,17 @@
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
@@ -12,6 +21,14 @@
    [DisallowConcurrentExecution]
    public class FillingJob : JobBase, IJob
    {
        private readonly IRepository<Dt_FillingOrder> _FillingRepository;
        public FillingJob(IRepository<Dt_FillingOrder> FillingRepository)
        {
            _FillingRepository = FillingRepository;
        }
        public Task Execute(IJobExecutionContext context)
        {
            //连接设备
@@ -22,15 +39,110 @@
                //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;
                                    _FillingRepository.UpdateData(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.QueryFirst(x => x.BarStatus == (int)FillingStatusEnum.Queue);
            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;
        }
    }
}